第六课 运算和子程序

这段代码主要展示了如何在SAPABAP中获取当前月份的第一天和最后一天。它通过调用函数`FM_GET_LAST_DAY`和`FM_GET_FIRST_DAY`来计算,并使用`LAST_DAY_OF_MONTHS`和自定义函数`ZWMQ_GET_FIRST_DATY`进行处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*主处理
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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值