zoukankan      html  css  js  c++  java
  • 销售分析报表

    REPORT  ZSDR020.

    INCLUDE ZSDR020TOP.

    TABLES: ZRLB_H,ZRLB_I,KNA1,/ATU/STOREMASTER,MARA,knvv.
    
    DATA: ls_data_out type ZSXSFX,
          lt_data_out like TABLE OF ZSXSFX WITH HEADER LINE,
          lt_data_sum like TABLE OF ZSXSFX WITH HEADER LINE,
          lt_data_tmp like TABLE OF ZSXSFX WITH HEADER LINE.
    
    FIELD-SYMBOLS : <dyn_table> TYPE table,
                    <dyn_wa> TYPE ANY,
                    <dyn_field> TYPE ANY.
    
    DATA lt_tmp LIKE TABLE OF ZSXSFX WITH HEADER LINE.
    
    DATA:BEGIN OF T_STORE OCCURS 0,
              KUNNR LIKE KNA1-KUNNR,
              NAME1 LIKE KNA1-NAME1,
          END OF T_STORE.
    DATA:LT_STORE LIKE TABLE OF T_STORE WITH HEADER LINE.


    INCLUDE ZSDR020SCR.

    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_BUDAT FOR ZRLB_H-BUDAT DEFAULT sy-datum TO sy-datum,  "营业日期
                    S_3ADCCU FOR KNA1-J_3ADCCU NO INTERVALS,
                    s_KUNNR FOR KNA1-KUNNR NO INTERVALS,
                    s_KTYPE FOR /ATU/STOREMASTER-/ATU/STORETYPE NO INTERVALS,
                    s_KATR2 FOR KNA1-KATR2 NO INTERVALS,
                    s_BRSCH FOR KNA1-BRSCH NO INTERVALS,
                    s_SPART for MARA-SPART NO INTERVALS,
                    s_EXTWG for MARA-EXTWG NO INTERVALS,
                    s_MATNR for MARA-MATNR no INTERVALS,
                    s_SIZE for ZRLB_I-J_3ASIZE no INTERVALS,
                    s_ZMATNR for ZRLB_I-ZMATNR no INTERVALS,
                    s_vkgrp for knvv-vkgrp NO INTERVALS,
                    s_UDATE FOR ZRLB_H-UDATE.   "上传日期
    SELECTION-SCREEN END OF BLOCK blk1.
    
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
    PARAMETERS: p_3ADCCU AS CHECKBOX DEFAULT 'X',     "总店
                p_kunnr AS CHECKBOX DEFAULT 'X',     "子店
                p_type AS CHECKBOX ,     "门店类型
                p_KATR2 AS CHECKBOX ,     "
                p_vkgrp    AS CHECKBOX DEFAULT 'X',
                p_zmatnr AS CHECKBOX DEFAULT 'X',     "大货
                p_matnr AS CHECKBOX,     "小货
                p_PRDHA AS CHECKBOX DEFAULT 'X',     "产品层次
                p_PRDHB AS CHECKBOX,     "大类
                "p_MATKL AS CHECKBOX,     "物料组
                p_budat AS CHECKBOX,                 "营业日期
                p_SPART    AS CHECKBOX,
                p_EXTWG    AS CHECKBOX,
                p_SDABW    AS CHECKBOX,
                p_FORMT    AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK blk2.
    
    SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
    PARAMETERS: p_qty RADIOBUTTON GROUP a DEFAULT 'X',
                p_val1 RADIOBUTTON GROUP a,
                p_val2 RADIOBUTTON GROUP a.
    SELECTION-SCREEN END OF BLOCK blk3.
    
    START-OF-SELECTION.
      PERFORM FRM_GET_DATA.
      PERFORM FRM_SHOW_ALV.


    INCLUDE ZSDR020O01.

    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    
      SET PF-STATUS '1100'.
    
    ENDFORM.


    INCLUDE ZSDR020I01.

    FORM user_command USING r_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN 'ZRB'.
          "日报
          PERFORM frm_process USING '正在进行日报格式处理,请稍候……'.
          PERFORM FRM_SET_DATA_SUM USING 'RB'.
          PERFORM FRM_create_date_table.
          PERFORM frm_filled_date_table.
          PERFORM FRM_SHOW_SUM_ALV.
    
        WHEN 'ZXB'.
          "旬报
          PERFORM frm_process USING '正在进行旬报格式处理,请稍候……'.
          PERFORM FRM_SET_DATA_SUM USING 'XB'.
          PERFORM FRM_create_date_table.
          PERFORM frm_filled_date_table.
          PERFORM FRM_SHOW_SUM_ALV.
    
        WHEN 'ZYB'.
          "月报
          PERFORM frm_process USING '正在进行月报格式处理,请稍候……'.
          PERFORM FRM_SET_DATA_SUM USING 'YB'.
          PERFORM FRM_create_date_table.
          PERFORM frm_filled_date_table.
          PERFORM FRM_SHOW_SUM_ALV.
    
        WHEN 'ZJB'.
          "季报
          PERFORM frm_process USING '正在进行季报格式处理,请稍候……'.
          PERFORM FRM_SET_DATA_SUM USING 'JB'.
          PERFORM FRM_create_date_table.
          PERFORM frm_filled_date_table.
          PERFORM FRM_SHOW_SUM_ALV.
    
        WHEN 'ZNB'.
          "年报
          PERFORM frm_process USING '正在进行年报格式处理,请稍候……'.
          PERFORM FRM_SET_DATA_SUM USING 'NB'.
          PERFORM FRM_create_date_table.
          PERFORM frm_filled_date_table.
          PERFORM FRM_SHOW_SUM_ALV.
    
      ENDCASE.
    
    
    
    ENDFORM.


    INCLUDE ZSDR020F01.

    FORM FRM_GET_DATA.
    
      DATA: LT_RLB LIKE TABLE OF ZSRLB WITH HEADER LINE.
    
      CALL FUNCTION 'ZSD_POS_GET_RLB_LIST'
        EXPORTING
          IV_MODE         = 'A'
          IV_SHOWPROPERTY = 'X'
        TABLES
          IT_BUDAT        = S_BUDAT
          IT_3ADCCU       = S_3ADCCU
          IT_KUNNR        = S_KUNNR
          IT_MATNR        = S_MATNR
          IT_ZMATNR       = S_ZMATNR
          IT_UDATE        = S_UDATE
          IT_BRSCH        = S_BRSCH
          IT_SPART        = S_SPART
          IT_EXTWG        = S_EXTWG
          IT_KTYPE        = S_KTYPE
          IT_VKGRP        = S_VKGRP
          ET_DATA         = LT_RLB.
    
      PERFORM FRM_SET_DATA TABLES LT_RLB.
    
    ENDFORM.                    "FRM_GET_DATA
    
    *&---------------------------------------------------------------------*
    *&      Form  FRM_SET_DATA
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->LT_DATA    text
    *----------------------------------------------------------------------*
    FORM FRM_SET_DATA TABLES LT_DATA STRUCTURE ZSRLB.
      DATA: LT_KUNNR LIKE TABLE OF ZSKUNNR2 WITH HEADER LINE.
    
      DATA: BEGIN OF LT_VKGRP OCCURS 0,
              KUNNR LIKE /ATU/STOREMASTER-/ATU/STORE_ID,
              NAME1 LIKE KNA1-NAME1,
              VKGRP LIKE KNVV-VKGRP,
              BEZEI LIKE TVGRT-BEZEI,
              KATR2 LIKE KNA1-KATR2,
              KATR2TXT LIKE TVK2T-VTEXT,
            END OF LT_VKGRP.
    
      DATA:LV_TABIX LIKE SY-TABIX.
      DATA: LV_STR1(20) type C,
            LV_STR2(20) type C,
            LV_STR3(20) type C.
    
      CLEAR: LT_STORE,LT_STORE[].
    
      LOOP AT LT_DATA.
        CLEAR LT_KUNNR.
        LT_KUNNR-KUNNR = LT_DATA-KUNNR.
        APPEND LT_KUNNR.
      ENDLOOP.
    
      SORT LT_KUNNR BY KUNNR.
      DELETE ADJACENT DUPLICATES FROM LT_KUNNR COMPARING KUNNR.
    
      IF LT_KUNNR[] IS NOT INITIAL.
    
        SELECT A~/ATU/STORE_ID B~NAME1 V~VKGRP K~BEZEI B~KATR2 K2~VTEXT
          FROM /ATU/STOREMASTER AS A
          INNER JOIN KNA1 AS B ON B~KUNNR = A~KUNNR
          INNER JOIN KNVV AS V ON A~/ATU/STORE_ID = V~KUNNR
          AND A~VKORG = V~VKORG AND A~VTWEG = V~VTWEG AND A~SPART = V~SPART
          INNER JOIN TVGRT AS K ON V~VKGRP = K~VKGRP AND K~SPRAS EQ '1'
          INNER JOIN TVK2T AS K2 ON B~KATR2 = K2~KATR2 AND K2~SPRAS EQ '1'
          INTO TABLE LT_VKGRP
          FOR ALL ENTRIES IN LT_KUNNR
          WHERE A~/ATU/STORE_ID = LT_KUNNR-KUNNR.
    
        SORT LT_VKGRP BY KUNNR.
    
      ENDIF.
    
      LOOP AT LT_DATA.
        CLEAR: ls_data_out.
    
        MOVE-CORRESPONDING LT_DATA to ls_data_out.
    
        READ TABLE LT_VKGRP WITH KEY KUNNR = ls_data_out-KUNNR BINARY SEARCH.
        IF SY-SUBRC = 0.
          ls_data_out-NAME1    = LT_VKGRP-NAME1.
          ls_data_out-VKGRP    = LT_VKGRP-VKGRP.
          ls_data_out-VKGRPTXT = LT_VKGRP-BEZEI.
          ls_data_out-KATR2    = LT_VKGRP-KATR2.
          ls_data_out-KATR2TXT = LT_VKGRP-KATR2TXT.
        ENDIF.
    
        if p_PRDHB eq 'X'.
          SEARCH ls_data_out-PRDHATXT FOR '_'.
          if sy-subrc = 0.
            SPLIT ls_data_out-PRDHATXT AT '_' INTO LV_STR1 LV_STR2 LV_STR3.
            ls_data_out-PRDHBTXT   = LV_STR3.
          else.
            ls_data_out-PRDHBTXT   = ls_data_out-PRDHATXT.
          endif.
        endif.
    
        IF P_3ADCCU EQ 'X'.
          LT_STORE-KUNNR    = ls_data_out-J_3ADCCU.
          COLLECT LT_STORE.
        ENDIF.
    
        IF P_3ADCCU NE 'X'.
          clear ls_data_out-J_3ADCCU.
        ENDIF.
    
        IF P_KUNNR NE 'X'.
          clear: ls_data_out-KUNNR,
                 ls_data_out-NAME1.
        ENDIF.
    
        if p_vkgrp NE 'X'.
          clear: ls_data_out-VKGRP,
                 ls_data_out-VKGRPTXT.
        endif.
    
        IF p_KATR2 NE 'X'.
          clear: ls_data_out-KATR2,
                 ls_data_out-KATR2TXT.
        ENDIF.
    
        IF P_TYPE NE 'X'.
          clear: ls_data_out-STORETYPE.
        ENDIF.
    
        IF P_ZMATNR NE 'X'.
          clear: ls_data_out-ZMATNR,
                 ls_data_out-J_3ASIZE.
        ENDIF.
    
        IF P_MATNR NE 'X'.
          clear: ls_data_out-MATNR.
        ENDIF.
    
        IF P_PRDHA NE 'X'.
          clear: ls_data_out-PRDHA,
                 ls_data_out-PRDHATXT.
        ENDIF.
    
        IF P_SPART NE 'X'.
          clear: ls_data_out-SPART,
                 ls_data_out-SPARTTXT.
        ENDIF.
    
        IF P_EXTWG NE 'X'.
          clear: ls_data_out-EXTWG,
                 ls_data_out-EXTWGTXT.
        ENDIF.
    
        IF P_SDABW NE 'X'.
          clear: ls_data_out-SDABW.
        ENDIF.
    
        IF P_FORMT NE 'X'.
          clear: ls_data_out-FORMT.
        ENDIF.
    
        "为日报准备的内表
        clear LT_DATA_TMP.
        LT_DATA_TMP = ls_data_out.
        COLLECT LT_DATA_TMP.
    
        IF P_BUDAT NE 'X'.
          clear: ls_data_out-BUDAT.
        ENDIF.
    
        "销售分析输出的内表
        COLLECT ls_data_out into lt_data_out.
    
      ENDLOOP.
    
      IF LINES( LT_STORE ) > 0.
    
        SELECT KUNNR NAME1 INTO TABLE LT_STORE
          FROM KNA1
          FOR ALL ENTRIES IN LT_STORE
        WHERE KUNNR = LT_STORE-KUNNR.
    
        SORT LT_STORE by KUNNR.
    
        LOOP AT LT_STORE.
          LV_TABIX = SY-TABIX.
          LT_DATA_OUT-ZD_NAME1 = LT_STORE-NAME1.
          MODIFY LT_DATA_OUT TRANSPORTING ZD_NAME1 WHERE J_3ADCCU = LT_STORE-KUNNR.
        ENDLOOP.
    
      ENDIF.
    ENDFORM.                    "FRM_SET_DATA
    
    *&---------------------------------------------------------------------*
    *&      Form  FRM_SHOW_ALV
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM FRM_SHOW_ALV.
      DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
            LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
            LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    
      SET TITLEBAR '1100' WITH s_BUDAT-low s_BUDAT-high s_matnr-low s_kunnr-low.
    
      CLEAR LS_LAYOUT.
      LS_LAYOUT-EDIT              = ''.
      LS_LAYOUT-EDIT_MODE         = SPACE.
      LS_LAYOUT-ZEBRA             = 'X'.
      LS_LAYOUT-COLWIDTH_OPTIMIZE = ''.
    
      DEFINE ADD_FIELD.
        CLEAR: LS_FIELDCAT.
        LS_FIELDCAT-FIELDNAME    = &1.
        LS_FIELDCAT-REPTEXT_DDIC = &2.
        LS_FIELDCAT-INTLEN       = &3.
        LS_FIELDCAT-DO_SUM       = &4.
        LS_FIELDCAT-NO_ZERO      = &5.
        LS_FIELDCAT-KEY          = &6.
        LS_FIELDCAT-FIX_COLUMN   = &7.
        LS_FIELDCAT-NO_OUT       = &8.
        APPEND LS_FIELDCAT TO IT_FIELDCAT.
      END-OF-DEFINITION.
    
      IF P_3ADCCU EQ 'X'.
        ADD_FIELD 'J_3ADCCU' '总店'     10 '' '' '' '' ''.
        ADD_FIELD 'ZD_NAME1' '总店名称' 20 '' '' '' '' ''.
      ENDIF.
    
      IF P_KUNNR EQ 'X'.
        ADD_FIELD 'KUNNR' '门店编号' 10 '' '' '' '' ''.
        ADD_FIELD 'NAME1' '门店名称' 20 '' '' '' '' ''.
    
      ENDIF.
    
      if p_vkgrp eq 'X'.
        ADD_FIELD 'VKGRPTXT' '主管' 10 '' '' '' '' ''.
      endif.
    
      IF P_TYPE EQ 'X'.
        ADD_FIELD 'STORETYPE' '门店类型' 8 '' '' '' '' ''.
      ENDIF.
    
      IF P_KATR2 EQ 'X'.
        "ADD_FIELD 'KATR2' '店铺类型' 8 '' '' '' '' ''.
        ADD_FIELD 'KATR2TXT' '店铺类型' 8 '' '' '' '' ''.
      ENDIF.
    
      IF P_BUDAT EQ 'X'.
        ADD_FIELD 'BUDAT' '营业日期' 10 '' '' '' '' ''.
      ENDIF.
    
      IF P_PRDHA EQ 'X'.
        ADD_FIELD 'PRDHA' '产品层次' 10 '' '' '' '' ''.
        ADD_FIELD 'PRDHATXT' '产品层次描述' 10 '' '' '' '' ''.
      ENDIF.
    
      if p_PRDHB eq 'X'.
        ADD_FIELD 'PRDHBTXT' '商品大类' 10 '' '' '' '' ''.
      ENDIF.
    
      IF P_SPART EQ 'X'.
        ADD_FIELD 'SPART' '品牌' 10 '' '' '' '' ''.
        ADD_FIELD 'SPARTTXT' '品牌描述' 18 '' '' '' '' ''.
      ENDIF.
    
      IF P_EXTWG EQ 'X'.
        ADD_FIELD 'EXTWG' '系列' 8 '' '' '' '' ''.
        ADD_FIELD 'EXTWGTXT' '系列描述' 18 '' '' '' '' ''.
      ENDIF.
    
      IF P_FORMT EQ 'X'.
        ADD_FIELD 'FORMT' '货品高新标识' 8 '' '' '' '' ''.
      ENDIF.
    
      IF P_SDABW EQ 'X'.
        ADD_FIELD 'SDABW' '库存类别' 8 '' '' '' '' ''.
      ENDIF.
    
      IF P_ZMATNR EQ 'X'.
        ADD_FIELD 'ZMATNR' '小货号' 18 '' '' '' '' ''.
      ENDIF.
    
      IF P_MATNR EQ 'X'.
        ADD_FIELD 'MATNR' '大货号' 18 '' '' '' '' ''.
      ENDIF.
    
      ADD_FIELD 'QTY' '数量' 10 'X' '' '' '' ''.
      ADD_FIELD 'RVAL' '吊牌金额' 10 'X' '' '' '' ''.
      ADD_FIELD 'VAL' '折后金额' 10 'X' '' '' '' ''.
    
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM = SY-REPID
          IT_FIELDCAT        = IT_FIELDCAT[]
          IS_LAYOUT          = LS_LAYOUT
          i_callback_pf_status_set = 'SET_PF_STATUS'
          i_callback_user_command  = 'USER_COMMAND'
          I_SAVE             = 'A'
        TABLES
          T_OUTTAB           = LT_DATA_OUT.
    
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    "FRM_SHOW_ALV
    
    FORM frm_process USING p_info .
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          percentage = 100
          text       = p_info
        EXCEPTIONS
          OTHERS     = 1.
    ENDFORM.

    INCLUDE ZSDR020F02.   "日报,旬报,月报,季报,年报

    ENDFORM.
    
    FORM frm_filled_date_table.
      DATA fieldname(20).
    
      LOOP AT lt_data_sum.
        CLEAR <dyn_wa>.
    
        ASSIGN COMPONENT 'J_3ADCCU' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-J_3ADCCU.
        ASSIGN COMPONENT 'ZD_NAME1' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-ZD_NAME1.
        ASSIGN COMPONENT 'KUNNR' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-KUNNR.
        ASSIGN COMPONENT 'NAME1' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-NAME1.
        ASSIGN COMPONENT 'STORETYPE' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-STORETYPE.
        ASSIGN COMPONENT 'BUDAT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-BUDAT.
        ASSIGN COMPONENT 'PRDHA' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-PRDHA.
        ASSIGN COMPONENT 'SPART' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-SPART.
        ASSIGN COMPONENT 'EXTWG' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-EXTWG.
        ASSIGN COMPONENT 'FORMT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-FORMT.
        ASSIGN COMPONENT 'SPARTTXT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-SPARTTXT.
    
    
    
        ASSIGN COMPONENT 'EXTWGTXT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-EXTWGTXT.
        ASSIGN COMPONENT 'PRDHATXT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-PRDHATXT.
        ASSIGN COMPONENT 'PRDHBTXT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-PRDHBTXT.
        ASSIGN COMPONENT 'VKGRP' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-VKGRP.
        ASSIGN COMPONENT 'VKGRPTXT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-VKGRPTXT.
        ASSIGN COMPONENT 'SDABW' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-SDABW.
        ASSIGN COMPONENT 'ZMATNR' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-ZMATNR.
        ASSIGN COMPONENT 'MATNR' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-MATNR.
        ASSIGN COMPONENT 'J_3ASIZE' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-J_3ASIZE.
        ASSIGN COMPONENT 'KATR2' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-KATR2.
        ASSIGN COMPONENT 'KATR2TXT' OF STRUCTURE <dyn_wa> TO <dyn_field>.
        <dyn_field> = lt_data_sum-KATR2TXT.
    
        if p_qty eq 'X'.
          ASSIGN COMPONENT lt_data_sum-statdate OF STRUCTURE <dyn_wa> TO <dyn_field>.
          <dyn_field> = lt_data_sum-qty.
          ASSIGN COMPONENT 'SUMALL' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          <dyn_field> = lt_data_sum-qty.
        elseif p_val1 eq 'X'.
          ASSIGN COMPONENT lt_data_sum-statdate OF STRUCTURE <dyn_wa> TO <dyn_field>.
          <dyn_field> = lt_data_sum-RVAL.
          ASSIGN COMPONENT 'SUMALL' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          <dyn_field> = lt_data_sum-RVAL.
        elseif p_val2 eq 'X'.
          ASSIGN COMPONENT lt_data_sum-statdate OF STRUCTURE <dyn_wa> TO <dyn_field>.
          <dyn_field> = lt_data_sum-VAL.
          ASSIGN COMPONENT 'SUMALL' OF STRUCTURE <dyn_wa> TO <dyn_field>.
          <dyn_field> = lt_data_sum-VAL.
        endif.
    
        COLLECT <dyn_wa> into <dyn_table>.
    
      ENDLOOP.
    
    ENDFORM.
    
    FORM FRM_SHOW_SUM_ALV.
      DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
            LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
            LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    
      CLEAR LS_LAYOUT.
      LS_LAYOUT-EDIT              = ''.
      LS_LAYOUT-EDIT_MODE         = SPACE.
      LS_LAYOUT-ZEBRA             = 'X'.
      LS_LAYOUT-COLWIDTH_OPTIMIZE = ''.
    
      DEFINE ADD_FIELD.
        CLEAR: LS_FIELDCAT.
        LS_FIELDCAT-FIELDNAME    = &1.
        LS_FIELDCAT-REPTEXT_DDIC = &2.
        LS_FIELDCAT-INTLEN       = &3.
        LS_FIELDCAT-DO_SUM       = &4.
        LS_FIELDCAT-NO_ZERO      = &5.
        LS_FIELDCAT-KEY          = &6.
        LS_FIELDCAT-FIX_COLUMN   = &7.
        LS_FIELDCAT-NO_OUT       = &8.
        APPEND LS_FIELDCAT TO IT_FIELDCAT.
      END-OF-DEFINITION.
    
      IF P_3ADCCU EQ 'X'.
        ADD_FIELD 'J_3ADCCU' '总店'     10 '' '' '' 'X' ''.
        ADD_FIELD 'ZD_NAME1' '总店名称' 20 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_KUNNR EQ 'X'.
        ADD_FIELD 'KUNNR' '门店编号' 10 '' '' '' 'X' ''.
        ADD_FIELD 'NAME1' '门店名称' 20 '' '' '' 'X' ''.
    
      ENDIF.
    
      if p_vkgrp eq 'X'.
        ADD_FIELD 'VKGRPTXT' '主管' 10 '' '' '' 'X' ''.
      endif.
    
      IF P_TYPE EQ 'X'.
        ADD_FIELD 'STORETYPE' '门店类型' 8 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_KATR2 EQ 'X'.
        "ADD_FIELD 'KATR2' '店铺类型' 8 '' '' '' '' ''.
        ADD_FIELD 'KATR2TXT' '店铺类型' 8 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_PRDHA EQ 'X'.
        ADD_FIELD 'PRDHA' '产品层次' 10 '' '' '' 'X' ''.
        ADD_FIELD 'PRDHATXT' '产品层次描述' 10 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_PRDHB EQ 'X'.
        ADD_FIELD 'PRDHBTXT' '商品大类' 10 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_SPART EQ 'X'.
        ADD_FIELD 'SPART' '品牌' 10 '' '' '' 'X' ''.
        ADD_FIELD 'SPARTTXT' '品牌描述' 18 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_EXTWG EQ 'X'.
        ADD_FIELD 'EXTWG' '系列' 8 '' '' '' 'X' ''.
        ADD_FIELD 'EXTWGTXT' '系列描述' 18 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_FORMT EQ 'X'.
        ADD_FIELD 'FORMT' '货品高新标识' 8 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_SDABW EQ 'X'.
        ADD_FIELD 'SDABW' '库存类别' 8 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_ZMATNR EQ 'X'.
        ADD_FIELD 'ZMATNR' '小货号' 18 '' '' '' 'X' ''.
      ENDIF.
    
      IF P_MATNR EQ 'X'.
        ADD_FIELD 'MATNR' '大货号' 18 '' '' '' 'X' ''.
      ENDIF.
    
      if lt_tmp[] is not INITIAL.
        LOOP AT lt_tmp.
          add_field lt_tmp-statdate lt_tmp-statdatetxt 10 'X' '' '' '' ''.
        ENDLOOP.
        add_field 'SUMALL' '汇总' 10 'X' '' '' '' ''.
      endif.
    
    
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM = SY-REPID
          IT_FIELDCAT        = IT_FIELDCAT[]
          IS_LAYOUT          = LS_LAYOUT
          I_SAVE             = 'A'
        TABLES
          T_OUTTAB           = <dyn_table>.
    
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.
  • 相关阅读:
    gearman任务分发改进
    gearman实现任务分发
    BeanStalkd 做队列服务
    Tomcat各种日志的关系与catalina.out文件的分割
    数据库系统原理-关系数据库的规范化理论总结
    MySQL配置参数innodb_flush_log_at_trx_commit
    gRPC快速入门
    使用vagrant和kubeadm搭建k8s集群
    VS项目属性中的C/C++运行库:MT、MTd、MD、MDd
    消除C++中警告代码
  • 原文地址:https://www.cnblogs.com/qlp1982/p/4039747.html
Copyright © 2011-2022 走看看