コンテンツフレーム起動

日付時間項目の処理 文書を SAP ライブラリストラクチャに組み込む

日付時間項目のデータ型は数値型ではありません。それでも、自動データ型変換が実行されるので、日付や時間の項目を数値項目と同様に処理することができます( 基本データ型の互換性を参照してください)。

日付項目や時間項目を処理する際には、オフセット指定を利用すると便利なことがあります( データオブジェクトのオフセット値の指定を参照してください)。

例

DATA: ULTIMO TYPE D.

ULTIMO = SY-DATUM.
ULTIMO+6(2) = '01'.
          ” = first day of this month
ULTIMO = ULTIMO - 1.
= last day of last month

この例では、前月の最終日が日付項目 ULTIMO に割り当てられます。

  1. ULTIMO に現在の日付が書き込まれます。
  2. オフセット指定を使用して、日付を当月の1日に変更します。
  3. ULTIMO から1が差し引かれます。その内容は前月の最終日に変更されます。減算を実行する前に、 ULTIMO 01.01.0001 以降の数字に変換され、結果が日付に逆変換されます。

例

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

 

 

 

コンテンツフレーム終了