我需要編寫一個需要系統日期(sy-datum)的程序&顯示未來8年的一年中的季節。打印使用系統日期(sy-datum)的季節練習
WRITE:'當前季節是',季節 您在那裏添加三個月到您的日期和打印季節& 日期。在2020年年底時停止循環。 注意:需要使用ABAP
我需要編寫一個需要系統日期(sy-datum)的程序&顯示未來8年的一年中的季節。打印使用系統日期(sy-datum)的季節練習
WRITE:'當前季節是',季節 您在那裏添加三個月到您的日期和打印季節& 日期。在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他們以確定季節,從而解決問題。
我認爲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月是冬天,如果您有不同的要求,您可能需要修改。對於季節的天文定義,你可以用IF...ELSEIF
解析l_date+4
。
你有什麼試過,你有什麼具體問題實施呢? – Mat 2012-01-29 20:22:42
這個問題似乎是無關緊要的,因爲它似乎在要求某人爲他們完成工作。不顯示任何事先的努力或一段代碼的問題。 (爲什麼他們從Off-Topic關閉中刪除該選項?) – mydoghasworms 2014-01-15 12:11:38