Sap-abap-date-time

提供:Dev Guides
移動先:案内検索

SAP ABAP-日付と時刻

ABAPは、世界のほとんどの地域で有効なグレゴリオ暦を暗黙的に参照します。 出力を国固有のカレンダーに変換できます。 日付は、カレンダーに関して正確な日、週、または月に指定された時間です。 時間は、1日に対して正確な秒または分に指定されます。 ABAPは常に24時間形式で時間を節約します。 出力には国固有の形式を使用できます。 日付と時刻は通常、現在のタイムゾーンで有効なローカル日付として解釈されます。

ABAPは、日付と時刻を操作する2つの組み込み型を提供します-

  • Dデータ型
  • Tデータ型

以下は、基本的な形式です-

DATA: date TYPE D,
      time TYPE T.

DATA: year TYPE I,
month TYPE I,
day TYPE I,
hour TYPE I,
minute TYPE I,
second TYPE I.

これらのタイプは両方とも、それぞれYYYYMMDDおよびHHMMSSという形式の固定長文字タイプです。

タイムスタンプ

これらの組み込みタイプに加えて、他の2つのタイプ TIMESTAMP および TIMESTAMPL は、タイムスタンプをUTC形式で保存するために多くの標準アプリケーションテーブルで使用されています。 次の表は、ABAPで利用可能な基本的な日付と時刻のタイプを示しています。

S.No. Data Type & Description
1

D

YYYYMMDD形式の組み込みの固定長日付型。 たとえば、値20100913は2010年9月13日を表します。

2

T

HHMMSS形式の組み込みの固定長時間型。 たとえば、値102305は時間10:23:05 AMを表します。

3
  • TIMESTAMP *(Type P – Length 8 No decimals)

このタイプは、YYYYMMDDhhmmss形式の短いタイムスタンプを表すために使用されます。 たとえば、値20100913102305は、2010年9月13日午前10時23分5秒の日付を表します。

4
  • TIMESTAMPL* (Type P - Length 11 Decimals 7)

TIMESTAMPLは、YYYYMMDDhhmmss、mmmuuun形式の長いタイムスタンプを表します。 ここで、追加の数字「mmmuuun」は秒の小数部を表します。

現在の日付と時刻

次のコードスニペットは、現在のシステムの日付と時刻を取得します。

REPORT YR_SEP_15.
DATA: date_1 TYPE D.

date_1 = SY-DATUM.
Write:/'Present Date is:', date_1 DD/MM/YYYY.

date_1 = date_1 + 06.
Write:/'Date after 6 Days is:', date_1 DD/MM/YYYY.

上記のコードは、次の出力を生成します-

Present Date is: 21.09.2015
Date after 6 Days is: 27.09.2015

変数date_1には、現在のシステム日付SY-DATUMの値が割り当てられます。 次に、日付の値を6増やします。 ABAPでの日付計算に関しては、これは日付オブジェクトの日コンポーネントを6日間増やしていることを意味します。 ABAPランタイム環境は、月末に達すると日付値をロールオーバーするのに十分スマートです。

時間の計算は、日付の計算と同様に機能します。 次のコードは、基本的な時間計算を使用して、現在のシステム時間を75秒増やします。

REPORT YR_SEP_15.
DATA: time_1 TYPE T.
      time_1 = SY-UZEIT.

Write/(60) time_1 USING EDIT MASK
'Now the Time is: __:__:__'.
time_1 = time_1 + 75.

Write/(60) time_1 USING EDIT MASK
'A Minute and a Quarter from Now, it is: __:__:__'.

上記のコードは、次の出力を生成します-

Now the Time is 11:45:05
A Minute and a Quarter from Now, it is: 11:46:20

タイムスタンプの使用

次のコードに示すように、 GET TIME STAMP を使用して、現在のシステム時刻を取得し、タイムスタンプ変数に保存できます。 GET TIME STAMPステートメントは、使用されるタイムスタンプデータオブジェクトのタイプに応じて、タイムスタンプをロングハンドまたはショートハンド形式で保存します。 タイムスタンプ値は、UTC標準を使用してエンコードされます。

REPORT YR_SEP_12.
DATA: stamp_1 TYPE TIMESTAMP,

stamp_2 TYPE TIMESTAMPL.
GET TIME STAMP FIELD stamp_1.
Write:/'The short time stamp is:', stamp_1

TIME ZONE SY-ZONLO.
GET TIME STAMP FIELD stamp_2.
Write:/'The long time stamp is:', stamp_2
TIME ZONE SY-ZONLO.

上記のコードは、次の出力を生成します-

The short time stamp is: 18.09.2015 11:19:40
The long time stamp is: 18.09.2015 11:19:40,9370000

上記の例では、WRITEステートメントのTIME ZONEオプションを使用してタイムスタンプを表示しています。 この追加により、指定されたタイムゾーンの規則に従ってタイムスタンプの出力がフォーマットされます。 システムフィールドSY-ZONLOは、ユーザーの設定で設定されたローカルタイムゾーンを表示するために使用されます。