ABAPで日付から曜日を取得する方法|DAY_IN_WEEKの使い方とコード例

ABAPで指定日が何曜日かを求めたいときは、汎用モジュール DAY_IN_WEEK を使えます。日付を渡すと月曜=1から日曜=7までの番号が返るため、帳票への曜日表示や曜日別の処理に利用できます。

DAY_IN_WEEKの入力と戻り値

入力パラメータ DATUM には日付型(TYPE d)の値を渡します。戻り値 WOTNR は曜日を表す数値です。

  • 1:月曜日
  • 2:火曜日
  • 3:水曜日
  • 4:木曜日
  • 5:金曜日
  • 6:土曜日
  • 7:日曜日

日曜日が0ではなく7である点に注意してください。たとえば2026年10月13日を渡すと、火曜日を表す 2 が返ります。

ABAPの呼び出し例:曜日名まで表示する

次のレポートは入力日付を確認してから DAY_IN_WEEK を呼び出し、番号を日本語の曜日に変換します。固定値を sy-datum に替えれば、実行日の曜日を取得できます。

REPORT zday_in_week_sample.

DATA lv_date    TYPE d VALUE '20261013'.
DATA lv_wotnr   TYPE p.
DATA lv_weekday TYPE c LENGTH 1.

START-OF-SELECTION.
  CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
    EXPORTING
      date                      = lv_date
    EXCEPTIONS
      plausibility_check_failed = 1
      OTHERS                    = 2.

  IF sy-subrc <> 0.
    WRITE: / '日付が不正です。'.
    RETURN.
  ENDIF.

  CALL FUNCTION 'DAY_IN_WEEK'
    EXPORTING
      datum = lv_date
    IMPORTING
      wotnr = lv_wotnr.

  CASE lv_wotnr.
    WHEN 1. lv_weekday = '月'.
    WHEN 2. lv_weekday = '火'.
    WHEN 3. lv_weekday = '水'.
    WHEN 4. lv_weekday = '木'.
    WHEN 5. lv_weekday = '金'.
    WHEN 6. lv_weekday = '土'.
    WHEN 7. lv_weekday = '日'.
  ENDCASE.

  WRITE: / lv_date, 'は', lv_weekday, '曜日です。'.

この例では2026年10月13日が火曜日なので、lv_wotnr は 2 になります。帳票に「火曜日」と表示したい場合は、例のように番号から表示文字列への変換を追加します。DAY_IN_WEEK 自体が日本語の曜日名を返すわけではありません。

入力日付と営業日の判定で気をつけること

  • 外部ファイルなどから受け取った日付は、曜日計算の前に妥当性を確認します。例では DATE_CHECK_PLAUSIBILITY を使い、2026年2月30日のような不正日付を除外しています。
  • DAY_IN_WEEK の戻り値から土日かどうかは分かりますが、祝日や会社固有の休日までは判定できません。営業日・稼働日の判定には、対象のファクトリカレンダを使う処理が別途必要です。
  • タイムスタンプを扱う場合は、まず対象のタイムゾーンで日付を確定してから曜日を求めます。日付の境界付近では、タイムゾーンによって曜日が変わるためです。

まとめ

DAY_IN_WEEK は日付から曜日番号を求めるシンプルな汎用モジュールです。DATUM に日付を渡し、WOTNR の1~7を必要な曜日表示に変換します。外部入力の妥当性確認と、祝日を含む営業日判定は用途に応じて別途行ってください。

参考・関連記事

関連記事

PAGE TOP