2012-04-03 328 views
5

UTCタイムスタンプをシステムタイムゾーンの日付と時刻に変換する方法はありますか? UTCタイムスタンプからの変換UTCタイムスタンプをABAPのシステム日付と時刻に変換する方法

ユーザーにローカルのタイムゾーンは簡単です、あなただけ行うことができます:

CONVERT TIME STAMP lv_utc_timestamp TIME ZONE sy-zonlo 
      INTO DATE lv_local_date TIME lv_local_time. 

しかし、どのようにシステム時間のためにそれを行うには - システム時刻を、例えば、多くの状況で必要とされていますJOB_CLOSE汎用モジュールを呼び出すとき。私がこれまでに出ている唯一の解決策は、そのようなものです:

SELECT SINGLE * FROM TTZCU INTO ls_ttzcu. 
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE ls_ttzcu-tzonesys 
      INTO DATE lv_system_date TIME lv_system_time. 

これは、すでに最適なソリューションですまたはシステムのタイムゾーンは別の方法で取得することができますか? テーブルTTZCUのエントリには常に有効なタイムゾーンがありますか?何か案は?

UPDATE:を私は別の方法を、発見した: @rmtiwariはTTZCUのFLAGACTIVEフラグもチェックする必要があり、そのように修飾文がアップデート2

SELECT SINGLE * FROM TTZCU INTO ls_ttzcu WHERE flagactive = abap_true. 
CONVERT TIME STAMP lv_utc_timestamp TIME ZONE ls_ttzcu-tzonesys 
      INTO DATE lv_system_date TIME lv_system_time. 

になると、Twitter上で示唆しましたおそらく最高:

cl_abap_tstmp=>systemtstmp_utc2syst(
      EXPORTING utc_tstmp = lv_utc_timestamp 
      IMPORTING syst_date = lv_system_date " System Date 
         syst_time = lv_system_time " System Time 
      ). 
+0

私はあなたの最終的な解決策が好きです。それがあなたの問題を解決したら、それを答えにコピーする必要があります。数日後、正しい答えとしてフラグを立てることができます。 – Esti

答えて

8

最良の方法は、のようだ:

cl_abap_tstmp=>systemtstmp_utc2syst(
     EXPORTING utc_tstmp = lv_utc_timestamp 
     IMPORTING syst_date = lv_system_date " System Date 
        syst_time = lv_system_time " System Time 
     ). 
関連する問題