システム日付(sy-datum)を使用するプログラムを作成する必要があります&は、今後8年間の季節を表示します。システム日付(sy-datum)でシーズン練習を印刷
書き込み: '現在の季節です'、シーズン 日付に3か月を追加し、季節を印刷します。& 日付。ループの終了を2020年末に延期してください。 注:使用する必要がありますABAP
システム日付(sy-datum)を使用するプログラムを作成する必要があります&は、今後8年間の季節を表示します。システム日付(sy-datum)でシーズン練習を印刷
書き込み: '現在の季節です'、シーズン 日付に3か月を追加し、季節を印刷します。& 日付。ループの終了を2020年末に延期してください。 注:使用する必要がありますABAP
システムには機能モジュールISP_MONTHS_TO_DATEがあると想定しますが、そうでない場合はSE37で* month *を検索する必要があります日付に月を追加するための多量の機能モジュールがあります(これを自分で実行しようとすると、バグが発生します)。
REPORT zdemo.
DATA : l_date TYPE sy-datum.
DATA : l_season TYPE string.
l_date = sy-datum.
PERFORM get_season USING l_date CHANGING l_season.
WRITE: 'The current season is', l_season. NEW-LINE.
DO.
CALL FUNCTION 'ISP_ADDING_MONTHS_TO_DATE'
EXPORTING
months = 3
start_date = l_date
IMPORTING
end_date = l_date.
IF l_date(4) GT 2020.
EXIT.
ENDIF.
PERFORM get_season USING l_date CHANGING l_season.
WRITE: 'The season on', l_date , 'is' , l_season. NEW-LINE.
ENDDO.
*&---------------------------------------------------------------------*
*& Form get_seasons
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->DATE text
* -->SEASON text
*----------------------------------------------------------------------*
FORM get_season USING p_date TYPE sydatum CHANGING p_season TYPE string.
IF p_date+4 LT '0321'.
l_season = 'Winter'.
ELSEIF p_date+4 LT '0621'.
l_season = 'Spring'.
ELSEIF p_date+4 LT '0921'.
l_season = 'Summer'.
ELSEIF p_date+4 LT '1221'.
l_season = 'Fall'.
ELSE.
l_season = 'Winter'.
ENDIF.
ENDFORM. "get_season
日を決定し、現在のmonth.Compareそれらを計算するために別の関数を使用する日付の月を追加し、それら.USE新しい日付を返す関数ビルダーで利用可能な機能モジュールがたくさんあります季節を決定し問題を解決する。
私が考えているのは、CL_RECA_DATE
だと思います。この例を参照してください。
DATA: l_date TYPE sydatum,
l_season TYPE string.
l_date = sy-datum.
WHILE l_date(4) <= 2020.
WRITE /: 'The current season is'.
CASE l_date+4(2).
WHEN 1 or 2 or 12. l_season = 'Spring'(001).
WHEN 3 or 4 or 5. l_season = 'Summer'(002).
WHEN 6 or 7 or 8. l_season = 'Fall'(003).
WHEN 9 or 10 or 11. l_season = 'Winter'(004).
ENDCASE.
WRITE: l_season, l_date.
l_date = cl_reca_date=>add_months_to_date(id_date = l_date
id_months = 3).
ENDWHILE.
CASE
ステートメントを使用してシーズンを取得することができます。上記の例では、12月〜2月が冬の場合を想定しています。要件が異なる場合は、修正することをお勧めします。季節の天文学的な定義については、l_date+4
をIF...ELSEIF
と解析することができます。
何を試してみましたか、それを具体的にどのように実行していますか? – Mat
この質問は、誰かに仕事を依頼するように思われるため、話題にはならないようです。コードに何らかの事前の努力や問題は示されません。 (なぜ彼らはオフトピッククローズからそのオプションを削除したのですか?) – mydoghasworms