2012-05-10 183 views
0

我在ABAP中有一个程序,他们在一个变量中使用'timestampl'类型,所以他们可以得到某些事件的时间。他们使用它,因为他们需要毫秒。2个时间戳之间的差异

我现在的任务是获取两个变量之间的差异,而我似乎无法找到功能模块或其他解决方案。

任何帮助非常感谢!

+0

减去它?有什么问题? :-) – zod

+0

那么,我不确定是否直接减量是一条路。这是否考虑不同的日子取决于月份和类似的事情? – Laloski

回答

1

谷歌搜索发现了这个建议:http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/840ad679-0601-0010-cd8e-9989fd650822#q-8:使用类CL_ABAP_TSTMP。您还可以在此线程中看到如何使用该类的示例:http://scn.sap.com/thread/85476

cl_abap_tstmp=>systemtstmp_syst2utc(
    exporting 
     syst_date = <wa_joblist>-strtdate 
     syst_time = <wa_joblist>-strttime 
    importing 
     utc_tstmp = start_stamp). 

    cl_abap_tstmp=>systemtstmp_syst2utc(
    exporting 
     syst_date = sy-datum 
     syst_time = sy-uzeit 
    importing 
     utc_tstmp = now_stamp). 

    seconds = cl_abap_tstmp=>subtract(
     tstmp1 = now_stamp 
     tstmp2 = start_stamp). 
+1

这实际上并没有回答这个问题,它需要以毫秒为单位的增量。 – tomdemuyt

0

使用FM * 'CCU_TIMESTAMP_DIFFERENCE' *

检查哪些时间戳更大调用FM之后。

IF TIMESTAMP_2 > TIMESTAMP_1. 

CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE' 
    EXPORTING 
     TIMESTAMP1 = TIMESTAMP_2 
     TIMESTAMP2 = TIMESTAMP_1 
    IMPORTING 
     DIFFERENCE = TIMESTAMP_DIFFERENCE. 
EndIf. 
1

CCU_TIMSTAMP_DIFFERENCE只接受短时间戳,但他们用毫秒工作,所以这FM是没有用的,将是有益的。

尝试的静态方法

DATA: lv_tstmp1 TYPE timestampl, 
     lv_tstmp2 TYPE timestampl, 
     lv_diff TYPE tzntstmpl. 

CALL METHOD cl_abap_tstmp=>subtract 
    EXPORTING 
     tstmp1 = lv_tstmp1 
     tstmp2 = lv_tstmp2 
    RECEIVING 
     r_secs = lv_diff. 

这将正确地返回在秒和毫秒的时间戳2之间的差。