2个时间戳之间的差异

时间:2012-05-10 17:19:59

标签: sap abap

我在ABAP中有一个程序,他们在变量中使用“timestampl”类型,因此他们可以获得某些事件的时间。他们使用它是因为它们需要毫秒。

我现在的任务是获取其中两个变量之间的区别,我似乎找不到功能模块或其他解决方案。

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:2)

Google搜索提出了以下建议: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 :(得分: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个时间戳之间的差异。

答案 2 :(得分: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.

答案 3 :(得分:0)

现有建议忽略毫秒。这是同时考虑毫秒的现代ABAP AS解决方案:

mvn clean install

i_ts1和i_ts2是两个时间戳,r_secs(类型f)是结果。

这是一个小型测试仪:

r_secs = CONV #( cl_abap_tstmp=>subtract(
  tstmp1 = CONV timestamp( i_ts1 )
  tstmp2 = CONV timestamp( i_ts1 )
) ).
r_secs = r_secs + ( frac( i_ts1 ) - frac( i_ts2 ) ).

如果您正在使用它,可以考虑增加对溢出的处理。