销售分析报表

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.

 

你可能感兴趣的:(报表)