我在ABAP中有一个程序,他们在变量中使用“timestampl”类型,因此他们可以获得某些事件的时间。他们使用它是因为它们需要毫秒。
我现在的任务是获取其中两个变量之间的区别,我似乎找不到功能模块或其他解决方案。
非常感谢任何帮助!
答案 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 ) ).
如果您正在使用它,可以考虑增加对溢出的处理。