ABAP 获取日期范围月份清单

REPORT Y_ABC_TEST2.

TABLES VBAK.


DATA: BEGIN OF GT_GMOON1 OCCURS 0,
  ZMOON TYPE CHAR6,
  END OF GT_GMOON1.

SELECT-OPTIONS S_ERDAT FOR VBAK-ERDAT.

START-OF-SELECTION.

  READ TABLE S_ERDAT INDEX 1.

  PERFORM FRM_GET_MOON_LIST TABLES GT_GMOON1 USING S_ERDAT-LOW S_ERDAT-HIGH.

  BREAK-POINT.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_MOON_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LT_GM  text
*      -->P_S_ERDAT_LOW  text
*      -->P_S_ERDAT_HIGH  text
*----------------------------------------------------------------------*
FORM FRM_GET_MOON_LIST  TABLES   PT_GM STRUCTURE GT_GMOON1
                        USING    PV_ERDAT_LOW
                                 PV_ERDAT_HIGH.

*DATA: BEGIN OF gT_GMoon OCCURS 0,
*        zmoon TYPE char6,
*      END OF gT_GMoon.

  DATA: LV_DAT1 TYPE DATS.
  DATA: LV_DAT2 TYPE DATS.
  DATA: LV_DAT3 TYPE DATS.

  LV_DAT1 = PV_ERDAT_LOW+0(6)  && '01'.
  LV_DAT2 = PV_ERDAT_HIGH+0(6) && '01'.

  PT_GM = LV_DAT2+0(6).
  APPEND PT_GM.

  WHILE  LV_DAT1 NE LV_DAT2.
    LV_DAT2 = LV_DAT2 - 1.
    LV_DAT2 = LV_DAT2+0(6) && '01'.
    PT_GM   = LV_DAT2+0(6).
    APPEND PT_GM.

  ENDWHILE.

  SORT PT_GM.

ENDFORM.                    " FRM_GET_MOON_LIST

FORM frm_get_data . SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_update_alv FROM ztmm035 WHERE werks IN s_werks AND matnr IN s_matnr. "e001593 计算平均领料数量 IF gt_update_alv IS NOT INITIAL. DATA: lv_date_begin TYPE dats, lv_date_end TYPE dats. " 最近3个月 CALL FUNCTION 'MONTH_PLUS_DETERMINE' EXPORTING months = -3 olddate = sy-datum IMPORTING newdate = lv_date_begin. CALL FUNCTION 'MONTH_PLUS_DETERMINE' EXPORTING months = -1 olddate = sy-datum IMPORTING newdate = lv_date_end. DATA: lt_matnr TYPE TABLE OF matnr."物料清单 LOOP AT gt_update_alv INTO gs_update_alv. APPEND gs_update_alv-matnr TO lt_matnr. ENDLOOP. SORT lt_matnr. DELETE ADJACENT DUPLICATES FROM lt_matnr. ENDFORM.我想在这个逻辑里加上一段逻辑,按移动类型计算当前日期前三月领用量,按照我下面发的这个逻辑来改 SELECT key1, key2, key3, key4, key5, key6, werks, lotid, lgort, menge, matnr, charg, shkzg "借贷标识 INTO TABLE @DATA(lt_matdoc) FROM zv_mm_022 WHERE matnr = @iv_productid AND werks = @iv_werks. SORT lt_matdoc BY werks matnr. IF lt_matdoc IS NOT INITIAL. SELECT key1, key2, key3, key4, key5, key6, werks, lotid, matnr, charg, lgort INTO TABLE @DATA(lt_matdoc_qd) FROM zv_mm_022 WHERE matnr = @iv_productid AND werks = @iv_werks. ENDIF. SORT lt_matdoc_qd BY werks matnr charg lotid lgort. DELETE ADJACENT DUPLICATES FROM lt_matdoc_qd COMPARING werks matnr charg lotid lgort. LOOP AT lt_matdoc_qd INTO DATA(ls_matdoc_qd) . CLEAR t_data_output. t_data_output-werks = ls_matdoc_qd-werks. t_data_output-lotid = ls_matdoc_qd-lotid. t_data_output-charg = ls_matdoc_qd-charg. t_data_output-lgort = ls_matdoc_qd-lgort. CLEAR lv_matdoc_menge1. CLEAR lv_matdoc_menge2. LOOP AT lt_matdoc INTO DATA(ls_matdoc) WHERE werks = ls_matdoc_qd-werks AND matnr = ls_matdoc_qd-matnr AND charg = ls_matdoc_qd-charg AND lotid = ls_matdoc_qd-lotid AND lgort = ls_matdoc_qd-lgort. IF ls_matdoc-shkzg = 'S'. lv_matdoc_menge1 = lv_matdoc_menge1 + ls_matdoc-menge. ELSEIF ls_matdoc-shkzg = 'H'. lv_matdoc_menge2 = lv_matdoc_menge2 + ls_matdoc-menge. ENDIF. ENDLOOP. t_data_output-menge = lv_matdoc_menge1 - lv_matdoc_menge2. APPEND t_data_output. ENDLOOP.
最新发布
12-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值