ABAP で、変数に「timestampl」型を使用するプログラムがあるため、特定のイベントの時刻を取得できます。ミリ秒が必要なため、彼らはそれを使用します。
私は現在、これらの変数のうちの 2 つの違いを取得するという使命を持っていますが、汎用モジュールまたは別の解決策を見つけることができないようです。
どんな助けでも大歓迎です!
ABAP で、変数に「timestampl」型を使用するプログラムがあるため、特定のイベントの時刻を取得できます。ミリ秒が必要なため、彼らはそれを使用します。
私は現在、これらの変数のうちの 2 つの違いを取得するという使命を持っていますが、汎用モジュールまたは別の解決策を見つけることができないようです。
どんな助けでも大歓迎です!
メソッドを使用して、ミリ秒を含むCL_ABAP_TSTMP=>SUBTRACT
タイプである必要がある 2 つのタイムスタンプを渡すと、2 つのタイムスタンプTIMESTAMPL
の差がミリ秒を含む秒数で返されます。
例:
DATA: lv_tstmp1 TYPE timestampl,
lv_tstmp2 TYPE timestampl,
lv_diff TYPE tzntstmpl.
lv_tstmp1 = '20190704000010.999'. " July 4th, 00:00:10 and 999 ms
lv_tstmp2 = '20190703235950.001'. " July 3rd, 23:59:50 and 001 ms
CALL METHOD cl_abap_tstmp=>subtract
EXPORTING
tstmp1 = lv_tstmp1
tstmp2 = lv_tstmp2
RECEIVING
r_secs = lv_diff.
ASSERT lv_diff = '20.998'. " expectation verified or run time error
Google 検索で次の推奨事項が見つかります。 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 ).
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.