2012-05-10 181 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之間的差。