!--a11y-->
日付時間項目のデータ型は数値型ではありません。それでも、自動データ型変換が実行されるので、日付や時間の項目を数値項目と同様に処理することができます(
基本データ型の互換性を参照してください)。日付項目や時間項目を処理する際には、オフセット指定を利用すると便利なことがあります(
データオブジェクトのオフセット値の指定を参照してください)。

DATA: ULTIMO TYPE D.
ULTIMO = SY-DATUM.
ULTIMO+6(2) = '01'.
この例では、前月の最終日が日付項目
ULTIMO に割り当てられます。

DATA: DIFF TYPE I,
SECONDS TYPE I,
HOURS TYPE I.
DATA: T1 TYPE T VALUE '200000',
T2 TYPE T VALUE '020000'.
DIFF = T2 - T1.
SECONDS = DIFF MOD 86400.
HOURS = SECONDS / 3600.
最後の3行を以下の行で置き換えることができます。
HOURS = ( ( T2 - T1 ) MOD 86400 ) / 3600.
02:00:00
と 20:00:00 の間の時間数が計算されます。最初に、時間項目の間の差が計算され、値
-64800 が得られます。これは、 T1 が 72000 に、 T2 が 7200 に自動的に変換されるためです。次に演算
MOD を使用して、この負数である差が総秒数に変換されます。差が正数である場合は、 MOD 演算による変化はないことに注意してください。最後に、秒数の数値を
3600 で割ることにより、時間数が計算されます。場合によっては(たとえば、日付を降順ソートする場合)、キーワード
CONVERT を使用して日付を書式 D から逆順の日付に変換すると便利です。構文
CONVERT DATE <d1> INTO INVERTED-DATE <d2>.
CONVERT INVERTED-DATE <d1> INTO DATE <d2>.
これらの文では、項目
<d1> が書式 DATE または INVERTED-DATE から書式 INVERTED-DATE または DATE に変換され、その結果が項目 <d2> に割り当てられます。変換に際して、
ABAP は9の補数を使用します。

DATA: ODATE TYPE D VALUE '19955011',
IDATE LIKE ODATE.
DATA FIELD(8).
FIELD = ODATE.
WRITE / FIELD.CONVERT DATE ODATE INTO INVERTED-DATE IDATE.
FIELD = IDATE.
WRITE / FIELD.CONVERT INVERTED-DATE IDATE INTO DATE ODATE.
FIELD = ODATE.
WRITE / FIELD.出力は以下のようになります。
19955011
80049488
19955011
