この記事を読むメリット
SAPの代表的なタイムスタンプ型を知ることができます。
タイムスタンプから日付・時刻に変換することができるようになります。
今回は、SAPのタイムスタンプについて解説していきたいと思います。SAPに用意されているタイムスタンプはデータ型がいくつか種類が存在します。今回はそのうち、代表的な2つのタイムスタンプのデータ型に焦点をあてて、タイムスタンプ情報より日付・時刻の情報を変換取得する方法を解説します。
博士!データ登録の日付と時刻を把握したいのですが、タイムスタンプだと、いつ登録された情報なのかがわかりにくいです。
了解じゃ! 今回はタイムスタンプから日付と時刻に変換する方法を紹介していくぞい。
この記事のポイント
タイムスタンプとは
タイムスタンプはは作成日時や登録時刻、更新時刻、アクセス時刻など電子データに対して付与される何らかの日付・時刻を表す情報のことをいいます。
SAPではテーブル登録されるデータには登録日付や時刻を持っていることが多いですが、各テーブルに登録される日付・時刻情報の型が一律に定義されているわけではありません。
人間がみて、ぱっとわかりやすい日付・時刻のデータ項目もあれば、ぱっと見ただけでは判断がつかないデータ項目も存在します。
今回はSAPの代表的な2つのタイムスタンプ型について確認していきます。 その前段階として、まずは時間概念についてみてみましょう!
標準時間の考え方
タイムスタンプから日付を変換する前段階として、代表的な時間概念について確認してみましょう。
一般社会で使用されている標準時間という考え方がありますが、過去から現在にかけて標準時間の考え方にも歴史があります。
GMT Greenwich Mean Time(グリニッジ標準時)の略称。 昔の世界標準とされていた天体観測(地球の自転)に基づいて決められた時間のことです。英国にあるグリニッジ天文台が基準とされたことから、GMT(Greenwich mean time)と呼ばれています。UTC Universal time coordinated(協定世界時)の略称。 現在、世界で基準とされており、精度の高い原子時計と天体観測に基づいて決められた時間のことです。JST Japan Standard Time(日本標準時)の略称。 日本時間として使用されている時間になります。UTCより9時間進んでおり、UTC+9などと表現されることもあります。
細かいことを除けば、GMTとUTCは時間概念としてほとんど一緒のものだと理解して、実務上は問題ないです。SAP標準でも「GMT~」や「UTC~」と表記に揺れがありますが、両者は実質的には同じものととらえてしまって大きな問題はありません。
代表的なタイムスタンプ型
次にSAPで用いられる代表的なタイムスタンプのデータ型について確認をしてみましょう。
RKE_TSTMP
1つめは「RKE_TSTMP」のドメイン型になります。これは、GMTベースの1990/1/1 00:00から起算した秒数×10000 の数値をタイムスタンプとして保持するデータ型になります。こちらは秒数で表現されるデータ型になるため、人間がぱっとみで日付・時刻を判断することは困難です。
TZNTSTMPS
2つめは「TZNTSTMPS」のドメイン型になります。これは、略式の UTC タイムスタンプ (YYYYMMDDhhmmss) をタイムスタンプとして保持するデータ型になります。こちらRKE_TSTMPと比較して、割と人間が理解しやすいタイムスタンプのデータ型です。ただ、スラッシュなどの区切り情報がないため、ぱっとみだと日付・時刻を判断しにくいものになります。
タイムスタンプから日付・時刻に変換する汎用モジュール
次にSAPで用意されているタイムスタンプから日付・時刻に変換するための汎用モジュールをご紹介いたします。
RKE_TIMESTAMP_CONVERT_OUTPUT 主にRKE_TSTMPのデータ型で保持しているタイムスタンプより、日付・時刻を取得することができる。IB_CONVERT_FROM_TIMESTAMP 主にTZNTSTMPSのデータ型で保持しているタイムスタンプより、日付・時刻を取得することができる。
実務的にはタイムスタンプ型より使用する汎用モジュールが異なるため、自分が変換しようとしているタイムスタンプが上記の汎用モジュールより日付・時刻変換できるかどうかを確認することが大切になります。
実際に上記の汎用モジュールを使って、タイムスタンプから日付・時刻変換できるかを試してみたいです。
今回はRKE_TSTMPのデータ型として保持されているCOSS-TIMESTMP(CO内部転記の登録時刻)とTZNTSTMPSのデータ型として保持されるPLAF-PSTMP(計画手配のタイムスタンプ)をサンプルに上記の汎用モジュールを用いて変換できるかを試してみます。
RKE_TIMESTAMP_CONVERT_OUTPUT による変換
COSS-TIMESTMP(CO内部転記の登録時刻)はRKE_TSTMPのデータ型でタイムスタンプを保持しています。
COSSテーブルのデータの格納状況を見ても、秒数表記のため日付時刻がわかりにくい状況です。
こちらを「RKE_TIMESTAMP_CONVERT_OUTPUT 」の汎用モジュールを使用して、日付時刻変換してみます。
IMPORTパラメータ
IMPORTパラメータに変換したいタイムスタンプを設定することで、グリニッジ標準時基準の秒数から日付・時刻に変換することができました。
IB_CONVERT_FROM_TIMESTAMP による変換
PLAF-PSTMP(生産計画のタイムスタンプ)はTZNTSTMPSのデータ型でタイムスタンプを保持しています。
PLAFテーブルのデータの格納状況を見ても、単なる数字の羅列でスラッシュ区切りなどもないため、日付時刻がわかりにくい状況です。
こちらを「IB_CONVERT_FROM_TIMESTAMP 」の汎用モジュールを使用して、日付時刻変換してみます。
IMPORTパラメータ
略式の UTC タイムスタンプ (YYYYMMDDhhmmss)
タイムゾーン(デフォルト値はSU3のプロファイルより確認可能)
IMPORTパラメータに変換したいタイムスタンプを設定することで、UTC型のタイムスタンプから日付・時刻に変換することができました。
なお、「IB_CONVERT_FROM_TIMESTAMP 」のI_TZONEで初期設定されるタイムゾーンはT-CODE:SU3より確認可能です。
この汎用モジュールを使って、私でもタイムスタンプから日付時刻・変換ができそうです。
今回、紹介したのはあくまで代表的なSAPタイムスタンプ変換方法じゃ。自分でいろいろと試行錯誤してみることが重要じゃ。