REPORT ZSDR004.
INCLUDE ZSDR004TOP.
TABLES: KNA1,/ATU/STOREMASTER,KNVV,ZSSTORE02. TYPE-POOLS: slis. DATA: ls_data type ZSSTORE02, it_data type TABLE OF ZSSTORE02 WITH HEADER LINE. "设置面积 DATA: it_ZSTORE_A like TABLE OF ZSTORE_A WITH HEADER LINE, it_ZSTORE_AR like TABLE OF ZSTORE_AR WITH HEADER LINE, it_3ASEAN like TABLE OF J_3ASEANT WITH HEADER LINE, it_ZSTORE_QR like TABLE OF ZSTORE_QR WITH HEADER LINE, it_ZMAP_VFILD like TABLE OF ZMAP_VFILD WITH HEADER LINE, it_ZMAP_TFILD like TABLE OF ZMAP_TFILD WITH HEADER LINE, it_ZST_SEAN_PATTR like TABLE OF ZST_SEAN_PATTR WITH HEADER LINE. FIELD-symbols: <dyn_table> TYPE STANDARD TABLE, " 内表结构 <dyn_wa>, " 表头 <dyn_field>. " 项 DATA: it_alv_cat TYPE TABLE OF lvc_s_fcat, ls_alv_cat LIKE LINE OF it_alv_cat, it_alv_cat_s TYPE TABLE OF lvc_s_fcat.
INCLUDE ZSDR004SCR.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS: S_3ADCCU FOR KNA1-J_3ADCCU, S_KUNNR FOR KNA1-KUNNR, S_NAME1 FOR KNA1-NAME1 NO INTERVALS, S_KATR2 FOR KNA1-KATR2, S_VKORG FOR /ATU/STOREMASTER-VKORG, S_BRSCH FOR KNA1-BRSCH, S_SPART FOR /ATU/STOREMASTER-SPART, S_OMODE FOR /ATU/STOREMASTER-/ATU/STORETYPE, S_KDGRP FOR KNVV-KDGRP, S_KDKG1 FOR KNA1-KDKG1, s_KONZS FOR KNA1-KONZS, s_VWERK FOR KNVV-VWERK, s_LGORT FOR /ATU/STOREMASTER-LGORT, S_VKGRP FOR KNVV-VKGRP, S_VKTXT FOR ZSSTORE02-VKTXT NO INTERVALS, S_VKBUR FOR KNVV-VKBUR, S_VBTXT FOR ZSSTORE02-VBTXT NO INTERVALS, S_BZIRK FOR KNVV-BZIRK, S_BZTXT FOR ZSSTORE02-BZTXT NO INTERVALS. SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002. PARAMETERS: P_SHOWA AS CHECKBOX DEFAULT '', P_SHOWP AS CHECKBOX DEFAULT '', P_SHOWC AS CHECKBOX DEFAULT '',"显示关闭店 P_SHOWQ AS CHECKBOX DEFAULT ''. SELECTION-SCREEN END OF BLOCK B2. START-OF-SELECTION. PERFORM FRM_GET_LIST. PERFORM FRM_DEFINE_STRUCTURE. PERFORM FRM_CREATE_TABLE. PERFORM FRM_FILL_TABLE. PERFORM FRM_SHOW_ALV.
INCLUDE ZSDR004I01.
FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. READ TABLE it_data INDEX rs_selfield-tabindex. CASE r_ucomm. WHEN '&IC1'. DATA: bdcdata_wa TYPE bdcdata, bdcdata_tab TYPE TABLE OF bdcdata. DATA opt TYPE ctu_params. CLEAR bdcdata_wa. bdcdata_wa-program = '/ATU/CA_STORE_MASTER'. bdcdata_wa-dynpro = '0050'. bdcdata_wa-dynbegin = 'X'. APPEND bdcdata_wa TO bdcdata_tab. CLEAR bdcdata_wa. bdcdata_wa-fnam = 'BDC_CURSOR'. bdcdata_wa-fval = '/ATU/STOREMASTER-/ATU/STORE_ID'. APPEND bdcdata_wa TO bdcdata_tab. CLEAR bdcdata_wa. bdcdata_wa-fnam = '/ATU/STOREMASTER-/ATU/STORE_ID'. bdcdata_wa-fval = it_data-kunnr. APPEND bdcdata_wa TO bdcdata_tab. opt-dismode = 'E'. CALL TRANSACTION '/ATU/STORE3' USING bdcdata_tab OPTIONS FROM opt. ENDCASE. " 刷新ALV报表 rs_selfield-row_stable = rs_selfield-tabindex. rs_selfield-refresh = 'X'. ENDFORM.
INCLUDE ZSDR004F01.
FORM FRM_GET_LIST. RANGES: lra_kunnr for kna1-kunnr. CLEAR: IT_ZSTORE_A,IT_DATA,it_ZMAP_VFILD,it_ZMAP_TFILD,it_ZST_SEAN_PATTR. REFRESH: IT_ZSTORE_A,IT_DATA,it_ZMAP_VFILD,it_ZMAP_TFILD,it_ZST_SEAN_PATTR. CALL FUNCTION 'ZSD_GET_STORE' EXPORTING IV_BLOCK = P_SHOWC IV_SHOWTXT = 'X' IV_SHOWAREA = P_SHOWA IV_SHOWQR = P_SHOWP TABLES IT_3ADCCU = S_3ADCCU IT_KUNNR = S_KUNNR IT_NAME1 = S_NAME1 IT_BZIRK = S_BZIRK IT_VKORG = S_VKORG IT_VKGRP = S_VKGRP IT_VKBUR = S_VKBUR IT_KATR2 = S_KATR2 IT_STORETYPE = S_OMODE IT_KDGRP = S_KDGRP IT_KDKG1 = S_KDKG1 IT_KONZS = S_KONZS IT_VWERK = S_VWERK IT_LGORT = S_LGORT ET_STORE = IT_DATA ET_STORE_A = IT_ZSTORE_A ET_STORE_AR = IT_ZSTORE_AR ET_STORE_Q = IT_3ASEAN ET_STORE_QR = IT_ZSTORE_QR. DELETE IT_DATA WHERE VKTXT NOT IN S_VKTXT OR VBTXT NOT IN S_VBTXT OR BZTXT NOT IN S_BZTXT. DELETE IT_DATA WHERE STORETYPE eq 'DC'. SORT IT_ZSTORE_A BY ZAREA. SORT IT_3ASEAN BY J_3ASEAN. if P_SHOWQ eq 'X'. "取季节属性 LOOP AT IT_DATA. clear lra_kunnr. lra_kunnr-sign = 'I'. lra_kunnr-option = 'EQ'. lra_kunnr-low = IT_DATA-KUNNR. COLLECT lra_kunnr. ENDLOOP. CALL FUNCTION 'ZSD_GET_STORE_SEAN_ATTR' TABLES IT_STORE = lra_kunnr ET_MAP_VALUE = it_ZMAP_VFILD ET_MAP_TEXT = it_ZMAP_TFILD ET_DATA = it_ZST_SEAN_PATTR. endif. ENDFORM. "FRM_GET_LIST "定义内表结构 *&---------------------------------------------------------------------* *& Form FRM_DEFINE_STRUCTURE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FRM_DEFINE_STRUCTURE. DATA: LS_TABLE TYPE DNTAB, IT_TABLE TYPE TABLE OF DNTAB. "根据表名取出表结构的字段目录 CALL FUNCTION 'NAMETAB_GET' EXPORTING LANGU = SY-LANGU TABNAME = 'ZSSTORE02' TABLES NAMETAB = IT_TABLE EXCEPTIONS NO_TEXTS_FOUND = 1. LOOP AT IT_TABLE INTO LS_TABLE. CLEAR LS_ALV_CAT. LS_ALV_CAT-FIELDNAME = LS_TABLE-FIELDNAME. LS_ALV_CAT-INTLEN = LS_TABLE-INTLEN. APPEND LS_ALV_CAT TO IT_ALV_CAT. ENDLOOP. IT_ALV_CAT_S[] = IT_ALV_CAT[]. IF P_SHOWA EQ 'X'. LOOP AT IT_ZSTORE_A. CLEAR LS_ALV_CAT. LS_ALV_CAT-FIELDNAME = IT_ZSTORE_A-ZAREA. APPEND LS_ALV_CAT TO IT_ALV_CAT. ENDLOOP. ENDIF. IF P_SHOWP EQ 'X'. LOOP AT IT_3ASEAN. CLEAR LS_ALV_CAT. LS_ALV_CAT-FIELDNAME = IT_3ASEAN-J_3ASEAN. APPEND LS_ALV_CAT TO IT_ALV_CAT. ENDLOOP. ENDIF. if P_SHOWQ eq 'X'. LOOP AT IT_ZMAP_TFILD. CLEAR LS_ALV_CAT. LS_ALV_CAT-FIELDNAME = IT_ZMAP_TFILD-FIELDNAME. APPEND LS_ALV_CAT TO IT_ALV_CAT. ENDLOOP. ENDIF. ENDFORM. "FRM_DEFINE_STRUCTURE "创建动态内表 *&---------------------------------------------------------------------* *& Form FRM_CREATE_TABLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FRM_CREATE_TABLE. DATA: DY_TABLE TYPE REF TO DATA, DY_LINE TYPE REF TO DATA. CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE EXPORTING IT_FIELDCATALOG = IT_ALV_CAT IMPORTING EP_TABLE = DY_TABLE. ASSIGN DY_TABLE->* TO <DYN_TABLE>. CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>. ASSIGN DY_LINE->* TO <DYN_WA>. ENDFORM. "FRM_CREATE_TABLE "填 充内表 *&---------------------------------------------------------------------* *& Form FRM_FILL_TABLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FRM_FILL_TABLE. FIELD-SYMBOLS: <DYN_FIELD_TEMP> TYPE ANY. DATA:LV_FIELD(50) TYPE C. SORT IT_DATA BY KUNNR. LOOP AT IT_DATA. CLEAR: <DYN_WA>. LOOP AT IT_ALV_CAT_S INTO LS_ALV_CAT. CLEAR LV_FIELD. CONCATENATE 'IT_DATA-' LS_ALV_CAT-FIELDNAME INTO LV_FIELD. ASSIGN (LV_FIELD) TO <DYN_FIELD_TEMP>. ASSIGN COMPONENT LS_ALV_CAT-FIELDNAME OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. <DYN_FIELD> = <DYN_FIELD_TEMP>. ENDLOOP. IF P_SHOWA EQ 'X'. LOOP AT IT_ZSTORE_AR WHERE KUNNR = IT_DATA-KUNNR. ASSIGN COMPONENT IT_ZSTORE_AR-ZAREA OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. <DYN_FIELD> = IT_ZSTORE_AR-VALUE. ENDLOOP. ENDIF. IF P_SHOWP EQ 'X'. LOOP AT IT_ZSTORE_QR WHERE KUNNR = IT_DATA-KUNNR. ASSIGN COMPONENT IT_ZSTORE_QR-QUART OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. <DYN_FIELD> = IT_ZSTORE_QR-KDKG1. ENDLOOP. ENDIF. if P_SHOWQ eq 'X'. LOOP AT it_ZST_SEAN_PATTR WHERE KUNNR = IT_DATA-KUNNR. LOOP AT IT_ZMAP_TFILD. CLEAR LV_FIELD. CONCATENATE 'IT_ZST_SEAN_PATTR-' IT_ZMAP_TFILD-FIELDNAME INTO LV_FIELD. ASSIGN (LV_FIELD) TO <DYN_FIELD_TEMP>. ASSIGN COMPONENT IT_ZMAP_TFILD-FIELDNAME OF STRUCTURE <DYN_WA> TO <DYN_FIELD>. <DYN_FIELD> = <DYN_FIELD_TEMP>. ENDLOOP. ENDLOOP. endif. APPEND <DYN_WA> TO <DYN_TABLE>. ENDLOOP. ENDFORM. "FRM_FILL_TABLE *&---------------------------------------------------------------------* *& 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. 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. APPEND LS_FIELDCAT TO IT_FIELDCAT. END-OF-DEFINITION. ADD_FIELD 'J_3ADCCU' '总店编号' 10 '' '' 'X' 'X'. ADD_FIELD 'KUNNR' '子店编号' 10 '' '' 'X' 'X'. ADD_FIELD 'NAME1' '名称' 20 '' '' 'X' 'X'. ADD_FIELD 'LOEVM' '关闭' 4 '' '' '' ''. ADD_FIELD 'STORETYPETXT' '运营模式' 8 '' '' '' ''. ADD_FIELD 'VKORG' '销售机构' 8 '' '' '' ''. ADD_FIELD 'VKORGTXT' '销售机构名称' 10 '' '' '' ''. ADD_FIELD 'BRSCH' '营销品牌' 8 '' '' '' ''. ADD_FIELD 'BRSCHTXT' '营销品牌名称' 10 '' '' '' ''. ADD_FIELD 'SPART' '品牌' 10 '' '' '' ''. ADD_FIELD 'KATR2TXT' '店铺类型' 8 '' '' '' ''. ADD_FIELD 'KDGRPTXT' '客户组' 8 '' '' '' ''. ADD_FIELD 'KONZS' '商场' 8 '' '' '' ''. ADD_FIELD 'KDKG1' '门店属性' 8 '' '' '' ''. ADD_FIELD 'VWERK' '交货工厂' 8 '' '' '' ''. ADD_FIELD 'LPRIO' '交货优先权' 10 '' '' '' ''. ADD_FIELD 'LGORT' '库存地点' 10 '' '' '' ''. ADD_FIELD '/ATU/REGION' '门店地区' 10 '' '' '' ''. ADD_FIELD '/ATU/DISTRICT' '所属经营部' 10 '' '' '' ''. ADD_FIELD '/ATU/AREA' '商圈' 10 '' '' '' ''. ADD_FIELD '/ATU/ST_SEL_AREA' '营业面积' 10 '' '' '' ''. ADD_FIELD '/ATU/STORE_AREA' '建筑面积' 10 '' '' '' ''. ADD_FIELD '/ATU/NUM_WINDOWS' '橱窗数量' 10 '' '' '' ''. ADD_FIELD '/ATU/NUM_REGSTER' '导购人数' 10 '' '' '' ''. ADD_FIELD 'DATLT' '联系人' 8 '' '' '' ''. ADD_FIELD 'VIPAR' '积分区域' 8 '' '' '' ''. ADD_FIELD 'TELF1' '电话' 10 '' '' '' ''. ADD_FIELD 'TELF2' '移动电话' 11 '' '' '' ''. ADD_FIELD 'TELFX' '传真' 10 '' '' '' ''. ADD_FIELD 'P_TEL1' '电话号码1' 8 '' '' '' ''. ADD_FIELD 'P_TEL2' '电话号码2' 8 '' '' '' ''. "ADD_FIELD 'REMARK' 'VOIP电话' 8 '' '' '' ''. ADD_FIELD 'P_TFX' '传真号码' 8 '' '' '' ''. ADD_FIELD 'VKTXT' '主管' 8 '' '' '' ''. ADD_FIELD 'BZTXT' '地区' 8 '' '' '' ''. ADD_FIELD 'VBTXT' '管理区域' 8 '' '' '' ''. ADD_FIELD 'RETXT' '省' 8 '' '' '' ''. ADD_FIELD 'ORT01' '城市' 8 '' '' '' ''. ADD_FIELD 'PSTLZ' '邮政编码' 8 '' '' '' ''. ADD_FIELD 'TELBX' '承运商' 8 '' '' '' ''. add_field 'CITY2' '收货城市' 8 '' '' '' ''. ADD_FIELD 'STR_SUPPL1' '收货地址' 8 '' '' '' ''. ADD_FIELD 'STRAS' '门店地址' 8 '' '' '' ''. ADD_FIELD 'SENDDAY' '发送周期' 8 '' '' '' ''. ADD_FIELD 'BACKDAY' '退货周期' 8 '' '' '' ''. ADD_FIELD 'OPENINGDATE' '开店日期' 8 '' '' '' ''. ADD_FIELD 'REMODDATE' '改型日期' 8 '' '' '' ''. ADD_FIELD 'CLOSINGDATE' '关店日期' 8 '' '' '' ''. ADD_FIELD 'SMSNM' '短信接收人' 8 '' '' '' ''. ADD_FIELD 'SMSTL' '短信接收号' 8 '' '' '' ''. ADD_FIELD 'SMSNM_D' '调拨短信接收人' 8 '' '' '' ''. ADD_FIELD 'SMSTL_D' '调拨短信接收号' 8 '' '' '' ''. ADD_FIELD 'SMSFQ' '短信发送频率' 8 '' '' '' ''. ADD_FIELD 'RTE_NBR' '运输区域' 8 '' '' '' ''. ADD_FIELD 'SPL1' '周一波次序号' 8 '' '' '' ''. ADD_FIELD 'SPL2' '周二波次序号' 8 '' '' '' ''. ADD_FIELD 'SPL3' '周三波次序号' 8 '' '' '' ''. ADD_FIELD 'SPL4' '周四波次序号' 8 '' '' '' ''. ADD_FIELD 'SPL5' '周五波次序号' 8 '' '' '' ''. ADD_FIELD 'SPL6' '周六波次序号' 8 '' '' '' ''. ADD_FIELD 'SPL7' '周七波次序号' 8 '' '' '' ''. IF P_SHOWA EQ 'X'. LOOP AT IT_ZSTORE_A. ADD_FIELD IT_ZSTORE_A-ZAREA IT_ZSTORE_A-NAME1 6 '' '' '' ''. ENDLOOP. ENDIF. IF P_SHOWP EQ 'X'. LOOP AT IT_3ASEAN. ADD_FIELD IT_3ASEAN-J_3ASEAN IT_3ASEAN-TEXT 6 '' '' '' ''. ENDLOOP. ENDIF. if P_SHOWQ eq 'X'. LOOP AT IT_ZMAP_TFILD. ADD_FIELD IT_ZMAP_TFILD-FIELDNAME IT_ZMAP_TFILD-DDTEXT 10 '' '' '' ''. ENDLOOP. ENDIF. 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 = <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. "FRM_SHOW_ALV