ZMMRP048

*&---------------------------------------------------------------------*
*& Report ZMMRP048
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZMMRP048.

INCLUDE ZMMRP048TOP.
INCLUDE ZZMMRP048ALV.


*执行按钮点击事件
START-OF-SELECTION.
  PERFORM FUNC_ITAB_GET_DATA."获取数据
  PERFORM FUNC_ALV_SHOW.     "显示ALV

*&---------------------------------------------------------------------*
*& 包含               ZMMRP048TOP
*&---------------------------------------------------------------------*
TABLES: MSEG, MARA, MAKT.

DATA: BEGIN OF COMM_WTAB_001,
        MANDT      LIKE MSEG-MANDT,
        MBLNR      LIKE MSEG-MBLNR,
        MJAHR      LIKE MSEG-MJAHR,
        ZEILE      LIKE MSEG-ZEILE,
        WERKS      LIKE MSEG-WERKS,
        BWART      LIKE MSEG-BWART,
        MTART      LIKE MARA-MTART,
        MATNR      LIKE MSEG-MATNR, "物料编码
        MAKTX      LIKE MAKT-MAKTX, "物料描述
        MEINS      LIKE MSEG-MEINS, "基本单位
        MENGE      LIKE MSEG-MENGE, "数量
        BPRME      LIKE MSEG-BPRME, "辅单位
        BPMNG      LIKE MSEG-BPMNG, "辅数量
        BUALT      LIKE MSEG-BUALT, "金额
        STPRS      LIKE MBEW-STPRS, "标准价
        PEINH      LIKE MBEW-PEINH, "价格单位
        BUDAT_MKPF LIKE MSEG-BUDAT_MKPF, "过账日期
      END OF COMM_WTAB_001.

DATA: COMM_ALV_ITAB LIKE TABLE OF COMM_WTAB_001 WITH HEADER LINE.

PARAMETER:
  COMM_PWK LIKE PLAF-PWWRK OBLIGATORY DEFAULT '1001',
  COMM_BRT LIKE MSEG-BWART OBLIGATORY DEFAULT '101'.
SELECT-OPTIONS:
  COMM_MTT FOR MARA-MTART,
  COMM_PLN FOR MAKT-MATNR.

*&---------------------------------------------------------------------*
*& 包含               ZZMMRP048ALV
*&---------------------------------------------------------------------*

*---------------------------------------------------------------------*
*                             ALV字段显示控制
*---------------------------------------------------------------------*
FORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_T_FCAT TYPE LVC_T_FCAT USING
      FUNC_FIELDNAME  TYPE C            " 字段名
      FUNC_SCRTEXT_M  TYPE C            " 标题
      FUNC_COL_POS    TYPE I            " 所在列
      FUNC_OUTPUTLEN  TYPE I            " 输出长度
      FUNC_EMPHASIZE  TYPE C            " 高亮显示
      FUNC_KEY        TYPE C            " 主键
      FUNC_CHECKBOX   TYPE C            " 显示checkbox
      FUNC_EDIT       TYPE C            " 是否可编辑
      FUNC_FIX_COLUMN TYPE C            " 固定列
      FUNC_NO_ZERO    TYPE C            " 为输出隐藏零
      .

  DATA: FUNC_LVC_S_FCAT TYPE LVC_S_FCAT.
  FUNC_LVC_S_FCAT-FIELDNAME   = FUNC_FIELDNAME.
  FUNC_LVC_S_FCAT-SCRTEXT_M   = FUNC_SCRTEXT_M.
  FUNC_LVC_S_FCAT-COL_POS     = FUNC_COL_POS.
  FUNC_LVC_S_FCAT-OUTPUTLEN   = FUNC_OUTPUTLEN.
  FUNC_LVC_S_FCAT-EMPHASIZE   = FUNC_EMPHASIZE.
  FUNC_LVC_S_FCAT-KEY         = FUNC_KEY.
  FUNC_LVC_S_FCAT-CHECKBOX    = FUNC_CHECKBOX.
  FUNC_LVC_S_FCAT-EDIT        = FUNC_EDIT.
  FUNC_LVC_S_FCAT-FIX_COLUMN  = FUNC_FIX_COLUMN.
  FUNC_LVC_S_FCAT-NO_ZERO     = FUNC_NO_ZERO.

  APPEND FUNC_LVC_S_FCAT TO FUNC_LVC_T_FCAT.
  CLEAR  FUNC_LVC_S_FCAT.
ENDFORM.










*---------------------------------------------------------------------*
*                             绑定按钮
*---------------------------------------------------------------------*
FORM FUNC_ALV_BTN_INIT USING
  FUNC_SLIS_T_EXTAB TYPE SLIS_T_EXTAB
  .

  SET PF-STATUS 'ZMMRP048STATUS' EXCLUDING FUNC_SLIS_T_EXTAB.
ENDFORM.

*---------------------------------------------------------------------*
*                             绑定按钮事件
*---------------------------------------------------------------------*
FORM FUNC_ALV_BTN_EVENT USING
  FUNC_SY_UCOMM LIKE SY-UCOMM
  FUNC_SLIS_SELFIELD TYPE SLIS_SELFIELD
  .

  DATA: FUNC_CL_GUI_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = FUNC_CL_GUI_ALV_GRID.

  CALL METHOD FUNC_CL_GUI_ALV_GRID->CHECK_CHANGED_DATA.

  FUNC_SLIS_SELFIELD-REFRESH = 'X'.

  READ TABLE COMM_ALV_ITAB INDEX FUNC_SLIS_SELFIELD-TABINDEX.

*  CASE FUNC_SY_UCOMM.
*    WHEN '&FUNC_001'.
*      PERFORM FUNC_001.
*    WHEN '&FUNC_002'.
*      PERFORM FUNC_002.
*    WHEN '&FUNC_003'.
*      PERFORM FUNC_003.
*    WHEN '&FUNC_005'.
*      PERFORM FUNC_001.
*    WHEN OTHERS.
*  ENDCASE.

  CLEAR:FUNC_SY_UCOMM.
ENDFORM.

*---------------------------------------------------------------------*
*                             显示ALV
*---------------------------------------------------------------------*
FORM FUNC_ALV_SHOW.
  DATA: FUNC_LVC_S_FCAT TYPE TABLE OF LVC_S_FCAT WITH HEADER LINE."设定输出目录

  DATA: FUNC_LVC_S_LAYO TYPE LVC_S_LAYO."对输出样式的设定
  FUNC_LVC_S_LAYO-CWIDTH_OPT = 'X'.
  FUNC_LVC_S_LAYO-CWIDTH_OPT = 'X'.
  FUNC_LVC_S_LAYO-STYLEFNAME = 'FIELD_STYLE'.

  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'WERKS' '工厂'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'BWART' '移动类型'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MTART' '物料类型'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MATNR' '物料编码'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MAKTX' '物料描述'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MEINS' '基本单位'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MENGE' '数量'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'BPRME' '辅单位'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'BPMNG' '辅数量'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'BUALT' '基本单位不含税单价'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'STPRS' '标准价'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'PEINH' '价格单位'              '' '' '' '' '' '' '' ''.
  PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'BUDAT_MKPF' '过账日期'              '' '' '' '' '' '' '' ''.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-CPROG
      I_CALLBACK_PF_STATUS_SET = 'FUNC_ALV_BTN_INIT'        "绑定按钮
      I_CALLBACK_USER_COMMAND  = 'FUNC_ALV_BTN_EVENT'       "自定义工具栏的事件
      IT_FIELDCAT_LVC          = FUNC_LVC_S_FCAT[]
      IS_LAYOUT_LVC            = FUNC_LVC_S_LAYO
    TABLES
      T_OUTTAB                 = COMM_ALV_ITAB              "ALV 输出的内表
    EXCEPTIONS
      PROGRAM_ERROR            = 1
                                 OTHERS.
ENDFORM.

*---------------------------------------------------------------------*
*                             itab赋值
*---------------------------------------------------------------------
FORM FUNC_ITAB_GET_DATA.

  CLEAR: COMM_ALV_ITAB[], COMM_ALV_ITAB.

  SELECT
  MSEG~WERKS
  MSEG~BWART
  MSEG~MATNR
  MAX( MSEG~BUDAT_MKPF ) AS BUDAT_MKPF

  INTO CORRESPONDING FIELDS OF TABLE COMM_ALV_ITAB
  FROM MSEG
  INNER JOIN MAKT ON MSEG~MATNR = MAKT~MATNR AND MAKT~SPRAS = '1'
  INNER JOIN MBEW ON MSEG~MATNR = MBEW~MATNR
  INNER JOIN MARA ON MSEG~MATNR = MARA~MATNR
  WHERE MSEG~WERKS = COMM_PWK
  AND   MSEG~BWART = COMM_BRT
  AND   MARA~MTART IN COMM_MTT
  AND   MSEG~MATNR IN COMM_PLN

  GROUP BY
  MSEG~WERKS
  MSEG~BWART
  MSEG~MATNR
  .






  LOOP AT  COMM_ALV_ITAB.
    DATA: FUNC_ALV_ITAB001 LIKE TABLE OF COMM_WTAB_001 WITH HEADER LINE.
    CLEAR:  FUNC_ALV_ITAB001.

    SELECT
      MSEG~MEINS
      MSEG~MENGE
      MSEG~BPRME
      MSEG~BPMNG
      MSEG~BUALT

      MAKT~MAKTX
      MARA~MTART
      MBEW~STPRS
      MBEW~PEINH
    INTO CORRESPONDING FIELDS OF TABLE FUNC_ALV_ITAB001
    FROM MSEG
    INNER JOIN MAKT ON MSEG~MATNR = MAKT~MATNR AND MAKT~SPRAS = '1'
    INNER JOIN MBEW ON MSEG~MATNR = MBEW~MATNR
    INNER JOIN MARA ON MSEG~MATNR = MARA~MATNR
    WHERE MSEG~WERKS = COMM_PWK
    AND   MSEG~BWART = COMM_BRT
    AND   MARA~MTART IN COMM_MTT
    AND   MSEG~MATNR IN COMM_PLN

    AND   MSEG~WERKS      = COMM_ALV_ITAB-WERKS
    AND   MSEG~BWART      = COMM_ALV_ITAB-BWART
    AND   MSEG~MATNR      = COMM_ALV_ITAB-MATNR
    AND   MSEG~BUDAT_MKPF = COMM_ALV_ITAB-BUDAT_MKPF.


    LOOP AT FUNC_ALV_ITAB001.
      DATA: TMP_MATNR LIKE MSEG-MATNR.
      CLEAR: TMP_MATNR.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'  "前缀去零
        EXPORTING
          INPUT  = COMM_ALV_ITAB-MATNR
        IMPORTING
          OUTPUT = TMP_MATNR.
      COMM_ALV_ITAB-MATNR = TMP_MATNR.

      DATA: TMP_MEINS TYPE MARA-MEINS.
      CLEAR: TMP_MEINS.
      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' "单位处理
        EXPORTING
          INPUT  = FUNC_ALV_ITAB001-MEINS
        IMPORTING
          OUTPUT = TMP_MEINS.
      COMM_ALV_ITAB-MEINS = TMP_MEINS.





      COMM_ALV_ITAB-MENGE = FUNC_ALV_ITAB001-MENGE.





      DATA: TMP_BPRME TYPE MSEG-BPRME.
      CLEAR: TMP_BPRME.

      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' "单位处理
        EXPORTING
          INPUT  = FUNC_ALV_ITAB001-BPRME
        IMPORTING
          OUTPUT = TMP_BPRME.
      COMM_ALV_ITAB-BPRME = TMP_BPRME.





      COMM_ALV_ITAB-BPMNG = FUNC_ALV_ITAB001-BPMNG.
      COMM_ALV_ITAB-BUALT = FUNC_ALV_ITAB001-BUALT / FUNC_ALV_ITAB001-MENGE.

      COMM_ALV_ITAB-MAKTX = FUNC_ALV_ITAB001-MAKTX.
      COMM_ALV_ITAB-MTART = FUNC_ALV_ITAB001-MTART.
      COMM_ALV_ITAB-STPRS = FUNC_ALV_ITAB001-STPRS.
      COMM_ALV_ITAB-PEINH = FUNC_ALV_ITAB001-PEINH.

      MODIFY COMM_ALV_ITAB.
    ENDLOOP.


  ENDLOOP.





*  MSEG~MEINS
*  MSEG~MENGE
*  MSEG~BPRME
*  MSEG~BPMNG
*  MSEG~BUALT

*  MAKT~MAKTX
*  MARA~MTART
*  MBEW~STPRS
*  MBEW~PEINH

ENDFORM.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值