<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ABAPでの日付処理]]></title><description><![CDATA[<p>このトピックでは、ABAPにおける日付の処理方法を纏めて説明します。</p><div class="plugin_include_content plugin_include__kdict:abap:adsense:ads_content_header" id="plugin_include__kdict__abap__adsense__ads_content_header"><div class="level1"><div class="inclmeta level"> </div></div></div><div class="level1"></div><h2 class="sectionedit4 page-header" id="日付の計算">日付の計算<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%97%A5%E4%BB%98%E3%81%AE%E8%A8%88%E7%AE%97"></a></h2><div class="level2"><p>日付項目は文字型であり、数値型ではありません。但し、ABAPでは自動的にデータ型変換が実行されるため、日付項目でも数値演算を行うことができます。 なお、SAP標準から様々な日付を計算するための汎用モジュールが用意されているため、それらを利用することもできます。</p></div><h3 class="sectionedit5" id="日付の加減算を行う">日付の加減算を行う<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%97%A5%E4%BB%98%E3%81%AE%E5%8A%A0%E6%B8%9B%E7%AE%97%E3%82%92%E8%A1%8C%E3%81%86"></a></h3><div class="level3"><p>指定された日付より何日前又は、何日後の日付を計算するには、日付項目と数値項目の加減算により簡単に実現できます。</p><pre class="code">DATA:
  W_DATE        TYPE D,
  W_3DAY_BEFORE TYPE D,
  W_5DAY_AFTER  TYPE D.
W_DATE = SY-DATUM.
W_DATE+6(2) = '01'.</pre><p>日単位だけではなく、月又は年単位で日付の加減算を行うには、汎用モジュールRP_CALC_DATE_IN_INTERVALE(ステータス：未リリース)を使用することができます。</p><pre class="code"> DATA: l_date TYPE d VALUE '20161201'.
 DO 2 times.
   CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
    EXPORTING
      date       = l_date
       days       = 0
       months     = 1
       signum     = '+'
       years      = 0
    IMPORTING
       calc_date = l_date.
   WRITE: / l_date.
 ENDDO.</pre></div><h3 class="sectionedit6" id="月初や月末日付を取得">月初や月末日付を取得<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%9C%88%E5%88%9D%E3%82%84%E6%9C%88%E6%9C%AB%E6%97%A5%E4%BB%98%E3%82%92%E5%8F%96%E5%BE%97"></a></h3><div class="level3"><p>指定された日付の月初や月末日付を取得するには、汎用モジュールHR_JP_MONTH_BEGIN_END_DATE(ステータス：未リリース)を使用することができます。</p><pre class="code">DATA:
  W_DATE               TYPE   D,
  W_MONTH_FIRST_DATE   TYPE   D,
  W_MONTH_LAST_DATE    TYPE   D.
W_DATE = SY-DATUM.
CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
EXPORTING
  IV_DATE = W_DATE
IMPORTING
  EV_MONTH_BEGIN_DATE = W_MONTH_FIRST_DATE
  EV_MONTH_END_DATE   = W_MONTH_LAST_DATE.</pre><p>月初日付だけを取得する場合では、汎用モジュールよりも、日付を文字列としてDAYの部分を'01'に置き換えることで簡単に実現できます。 なお、月末日だけを取得する場合では、汎用モジュールLAST_DAY_OF_MONTHS(ステータス：未リリース)を利用することも可能です。</p><pre class="code">DATA:
  W_DATE   TYPE D.
W_DATE = SY-DATUM.
W_DATE+6(2) = '01'.</pre></div><h3 class="sectionedit7" id="週を取得">週を取得<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E9%80%B1%E3%82%92%E5%8F%96%E5%BE%97"></a></h3><div class="level3"><p>指定された日付がその年の１月１日から数えて何週目かを判断するには、汎用モジュール「DATE_GET_WEEK」を使用できます。 その何週目の情報は、年・週（yyyyww）の形式で汎用モジュールから返却されます。</p><pre class="code">DATA: 
  W_DATE TYPE SCAL-DATE,
  W_WEEK TYPE SCAL-WEEK.
WK_DATE = SY-DATUM.
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
  DATE = W_DATE
IMPORTING
  WEEK = W_WEEK
EXCEPTIONS
  DATE_INVALID = 1
  OTHERS = 2.</pre></div><h3 class="sectionedit8" id="週の初日を取得">週の初日を取得<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E9%80%B1%E3%81%AE%E5%88%9D%E6%97%A5%E3%82%92%E5%8F%96%E5%BE%97"></a></h3><div class="level3"><p>汎用モジュールWEEK_GET_FIRST_DAY(ステータス：リリース)を使用すれば、年と週番号から、該当の週の月曜日の日付を取得することができます。</p><pre class="code">DATA: 
 DATUM LIKE SCAL-DATE,
 WOCHE LIKE SCAL-WEEK.
 WOCHE = '201521'. "2015年21週目
 CALL FUNCTION 'WEEK_GET_FIRST_DAY'
   EXPORTING 
     WEEK = WOCHE
   IMPORTING 
     DATE = DATUM  "2015/05/18が戻される
   EXCEPTIONS 
     WEEK_INVALID = 1.</pre></div><h3 class="sectionedit9" id="日付の妥当性をチェック">日付の妥当性をチェック<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%97%A5%E4%BB%98%E3%81%AE%E5%A6%A5%E5%BD%93%E6%80%A7%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF"></a></h3><div class="level3"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">DATE_CHECK_PLAUSIBILITY<br />入力された日付が正しいかチェックする</div></li></ul></div><h2 class="sectionedit10 page-header" id="カレンダー機能">カレンダー機能<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E6%A9%9F%E8%83%BD"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">DATE_COMPUTE_DAY<br />日付に対して平日を戻す</div></li></ul></div><h2 class="sectionedit11 page-header" id="稼働日関連">稼働日関連<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E7%A8%BC%E5%83%8D%E6%97%A5%E9%96%A2%E9%80%A3"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">DATE_CONVERT_TO_FACTORYDATE<br />日付に対して稼働日カレンダを戻す</div></li><li class="level1"><div class="li">FACTORYDATE_CONVERT_TO_DATE<br />稼働日のシリアル番号とカレンダーから日付を返す</div></li></ul></div><h2 class="sectionedit12 page-header" id="会計処理関連">会計処理関連<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E4%BC%9A%E8%A8%88%E5%87%A6%E7%90%86%E9%96%A2%E9%80%A3"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">BAPI_CCODE_GET_FIRSTDAY_PERIOD<br />会計期間の初日を取得</div></li><li class="level1"><div class="li">BAPI_COMPANYCODE_GET_PERIOD<br />会計年度と会計日付を取得</div></li></ul></div><h2 class="sectionedit13 page-header" id="書式変換">書式変換<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%9B%B8%E5%BC%8F%E5%A4%89%E6%8F%9B"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">CONVERSION_EXIT_PDATE_OUTPUT<br />日付型の内部書式を外部書式(YYYY/MM/DD）に変換</div></li><li class="level1"><div class="li">CONVERT_DATE_TO_INTERNAL<br />日付の文字列をR/3内部表現に変換する</div></li></ul></div><p></p>]]></description><link>http://www.isummary.jp/topic/234/abapでの日付処理</link><generator>RSS for Node</generator><lastBuildDate>Mon, 08 Jun 2026 17:20:34 GMT</lastBuildDate><atom:link href="http://www.isummary.jp/topic/234.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Dec 2019 15:31:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ABAPでの日付処理 on Fri, 06 Dec 2019 15:31:54 GMT]]></title><description><![CDATA[<p>このトピックでは、ABAPにおける日付の処理方法を纏めて説明します。</p><div class="plugin_include_content plugin_include__kdict:abap:adsense:ads_content_header" id="plugin_include__kdict__abap__adsense__ads_content_header"><div class="level1"><div class="inclmeta level"> </div></div></div><div class="level1"></div><h2 class="sectionedit4 page-header" id="日付の計算">日付の計算<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%97%A5%E4%BB%98%E3%81%AE%E8%A8%88%E7%AE%97"></a></h2><div class="level2"><p>日付項目は文字型であり、数値型ではありません。但し、ABAPでは自動的にデータ型変換が実行されるため、日付項目でも数値演算を行うことができます。 なお、SAP標準から様々な日付を計算するための汎用モジュールが用意されているため、それらを利用することもできます。</p></div><h3 class="sectionedit5" id="日付の加減算を行う">日付の加減算を行う<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%97%A5%E4%BB%98%E3%81%AE%E5%8A%A0%E6%B8%9B%E7%AE%97%E3%82%92%E8%A1%8C%E3%81%86"></a></h3><div class="level3"><p>指定された日付より何日前又は、何日後の日付を計算するには、日付項目と数値項目の加減算により簡単に実現できます。</p><pre class="code">DATA:
  W_DATE        TYPE D,
  W_3DAY_BEFORE TYPE D,
  W_5DAY_AFTER  TYPE D.
W_DATE = SY-DATUM.
W_DATE+6(2) = '01'.</pre><p>日単位だけではなく、月又は年単位で日付の加減算を行うには、汎用モジュールRP_CALC_DATE_IN_INTERVALE(ステータス：未リリース)を使用することができます。</p><pre class="code"> DATA: l_date TYPE d VALUE '20161201'.
 DO 2 times.
   CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
    EXPORTING
      date       = l_date
       days       = 0
       months     = 1
       signum     = '+'
       years      = 0
    IMPORTING
       calc_date = l_date.
   WRITE: / l_date.
 ENDDO.</pre></div><h3 class="sectionedit6" id="月初や月末日付を取得">月初や月末日付を取得<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%9C%88%E5%88%9D%E3%82%84%E6%9C%88%E6%9C%AB%E6%97%A5%E4%BB%98%E3%82%92%E5%8F%96%E5%BE%97"></a></h3><div class="level3"><p>指定された日付の月初や月末日付を取得するには、汎用モジュールHR_JP_MONTH_BEGIN_END_DATE(ステータス：未リリース)を使用することができます。</p><pre class="code">DATA:
  W_DATE               TYPE   D,
  W_MONTH_FIRST_DATE   TYPE   D,
  W_MONTH_LAST_DATE    TYPE   D.
W_DATE = SY-DATUM.
CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
EXPORTING
  IV_DATE = W_DATE
IMPORTING
  EV_MONTH_BEGIN_DATE = W_MONTH_FIRST_DATE
  EV_MONTH_END_DATE   = W_MONTH_LAST_DATE.</pre><p>月初日付だけを取得する場合では、汎用モジュールよりも、日付を文字列としてDAYの部分を'01'に置き換えることで簡単に実現できます。 なお、月末日だけを取得する場合では、汎用モジュールLAST_DAY_OF_MONTHS(ステータス：未リリース)を利用することも可能です。</p><pre class="code">DATA:
  W_DATE   TYPE D.
W_DATE = SY-DATUM.
W_DATE+6(2) = '01'.</pre></div><h3 class="sectionedit7" id="週を取得">週を取得<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E9%80%B1%E3%82%92%E5%8F%96%E5%BE%97"></a></h3><div class="level3"><p>指定された日付がその年の１月１日から数えて何週目かを判断するには、汎用モジュール「DATE_GET_WEEK」を使用できます。 その何週目の情報は、年・週（yyyyww）の形式で汎用モジュールから返却されます。</p><pre class="code">DATA: 
  W_DATE TYPE SCAL-DATE,
  W_WEEK TYPE SCAL-WEEK.
WK_DATE = SY-DATUM.
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
  DATE = W_DATE
IMPORTING
  WEEK = W_WEEK
EXCEPTIONS
  DATE_INVALID = 1
  OTHERS = 2.</pre></div><h3 class="sectionedit8" id="週の初日を取得">週の初日を取得<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E9%80%B1%E3%81%AE%E5%88%9D%E6%97%A5%E3%82%92%E5%8F%96%E5%BE%97"></a></h3><div class="level3"><p>汎用モジュールWEEK_GET_FIRST_DAY(ステータス：リリース)を使用すれば、年と週番号から、該当の週の月曜日の日付を取得することができます。</p><pre class="code">DATA: 
 DATUM LIKE SCAL-DATE,
 WOCHE LIKE SCAL-WEEK.
 WOCHE = '201521'. "2015年21週目
 CALL FUNCTION 'WEEK_GET_FIRST_DAY'
   EXPORTING 
     WEEK = WOCHE
   IMPORTING 
     DATE = DATUM  "2015/05/18が戻される
   EXCEPTIONS 
     WEEK_INVALID = 1.</pre></div><h3 class="sectionedit9" id="日付の妥当性をチェック">日付の妥当性をチェック<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%97%A5%E4%BB%98%E3%81%AE%E5%A6%A5%E5%BD%93%E6%80%A7%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF"></a></h3><div class="level3"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">DATE_CHECK_PLAUSIBILITY<br />入力された日付が正しいかチェックする</div></li></ul></div><h2 class="sectionedit10 page-header" id="カレンダー機能">カレンダー機能<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E6%A9%9F%E8%83%BD"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">DATE_COMPUTE_DAY<br />日付に対して平日を戻す</div></li></ul></div><h2 class="sectionedit11 page-header" id="稼働日関連">稼働日関連<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E7%A8%BC%E5%83%8D%E6%97%A5%E9%96%A2%E9%80%A3"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">DATE_CONVERT_TO_FACTORYDATE<br />日付に対して稼働日カレンダを戻す</div></li><li class="level1"><div class="li">FACTORYDATE_CONVERT_TO_DATE<br />稼働日のシリアル番号とカレンダーから日付を返す</div></li></ul></div><h2 class="sectionedit12 page-header" id="会計処理関連">会計処理関連<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E4%BC%9A%E8%A8%88%E5%87%A6%E7%90%86%E9%96%A2%E9%80%A3"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">BAPI_CCODE_GET_FIRSTDAY_PERIOD<br />会計期間の初日を取得</div></li><li class="level1"><div class="li">BAPI_COMPANYCODE_GET_PERIOD<br />会計年度と会計日付を取得</div></li></ul></div><h2 class="sectionedit13 page-header" id="書式変換">書式変換<a class="anchorjs-link " href="https://www.sappane.com/kdict/abap/16/16/36#%E6%9B%B8%E5%BC%8F%E5%A4%89%E6%8F%9B"></a></h2><div class="level2"><ul class=" fix-media-list-overlap"><li class="level1"><div class="li">CONVERSION_EXIT_PDATE_OUTPUT<br />日付型の内部書式を外部書式(YYYY/MM/DD）に変換</div></li><li class="level1"><div class="li">CONVERT_DATE_TO_INTERNAL<br />日付の文字列をR/3内部表現に変換する</div></li></ul></div><p></p>]]></description><link>http://www.isummary.jp/post/234</link><guid isPermaLink="true">http://www.isummary.jp/post/234</guid><dc:creator><![CDATA[峯文]]></dc:creator><pubDate>Fri, 06 Dec 2019 15:31:54 GMT</pubDate></item></channel></rss>