码迷,mamicode.com
首页 > 其他好文 > 详细

销售分析报表

时间:2014-10-21 11:36:03      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   for   sp   div   

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.

 

销售分析报表

标签:style   blog   color   io   os   ar   for   sp   div   

原文地址:http://www.cnblogs.com/qlp1982/p/4039747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!