*主处理
PERFORM FM_MAIN.
*&---------------------------------------------------------------------*
*& Form FM_MAIN
*&---------------------------------------------------------------------*
*& 主处理
*&---------------------------------------------------------------------*
FORM FM_MAIN .
* 本地定义
DATA:
LW_DATUM TYPE SY-DATUM, " 当前日期
LW_LASTDAY TYPE SY-DATUM, " 最后一天
LW_FIRSTDAY TYPE SY-DATUM. " 第一天
* 获取当前日期
LW_DATUM = SY-DATUM.
* 获取当前月的最后一天
PERFORM FM_GET_LAST_DAY
USING LW_DATUM
CHANGING LW_LASTDAY.
CLEAR LW_DATUM.
* 获取当前月的最后一天
PERFORM FM_GET_FIRST_DAY
USING LW_DATUM
CHANGING LW_FIRSTDAY.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FM_GET_LAST_DAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LW_DATUM
*& <-- LW_LASTDAY
*&---------------------------------------------------------------------*
FORM FM_GET_LAST_DAY
USING UP_W_DATUM TYPE SY-DATUM
CHANGING CP_W_LASTDAY TYPE SY-DATUM.
* 计算当前月的最后一天
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = UP_W_DATUM " 当前日期
IMPORTING
LAST_DAY_OF_MONTH = CP_W_LASTDAY " 最后一天
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2.
* 异常判断
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ELSE.
WRITE:CP_W_LASTDAY.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FM_GET_FIRST_DAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LW_DATUM
*& <-- LW_FIRSTDAY
*&---------------------------------------------------------------------*
FORM FM_GET_FIRST_DAY
USING UP_W_DATUM TYPE SY-DATUM
CHANGING CP_W_FIRSTDAY TYPE SY-DATUM.
CALL FUNCTION 'ZWMQ_GET_FIRST_DATY'
EXPORTING
I_DATUM = UP_W_DATUM
IMPORTING
E_FIRSTDAY = CP_W_FIRSTDAY
EXCEPTIONS
INPUT_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 DISPLAY LIKE 'E'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
* INTO DATA(LW_MSGTXT).
*
BREAK-POINT.
ELSE.
WRITE:CP_W_FIRSTDAY.
ENDIF.
ENDFORM.