&---------------------------------------------------------------------
*& Report ZMM02
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT ZMM02.
INCLUDE ZBCN_EXCEL.
DATA:
ZNAME TYPE THEAD-TDNAME .
TYPES: BEGIN OF GT_DATA ,
MATNR TYPE MARC-MATNR,
MAKTX TYPE MAkt-MAKTX,
ZMAKTX TYPE MAkt-MAKTX,
ESTR TYPE STRING,
ZESTR TYPE STRING,
SELKZ(1) TYPE C,
ZYX TYPE STRING,
ZICO TYPE ICON_D,
END OF GT_DATA .
DATA T_DATA TYPE TABLE OF GT_DATA WITH HEADER LINE .
DATA T_DATA1 TYPE TABLE OF GT_DATA WITH HEADER LINE .
DATA T_DATA2 TYPE TABLE OF GT_DATA WITH HEADER LINE .
DATA GS_HEADER TYPE THEAD .
DATA GT_LINES TYPE TABLE OF TLINE WITH HEADER LINE .
DATA GT_LINES1 TYPE TABLE OF TLINE WITH HEADER LINE .
DATA: FIELDCAT TYPE LVC_T_FCAT,
ZFIELDCAT TYPE LVC_S_FCAT,
ZLVC_S_LAYO TYPE LVC_S_LAYO.
PARAMETERS: P_FILE TYPE RLGRAP-FILENAME MODIF ID M1.
SELECTION-SCREEN FUNCTION KEY: 1 .“筛选界面-模板下载需要”
INITIALIZATION .
--------------------------------------------------------------------
*模板下载代码
--------------------------------------------------------------------
DATA:gv_filter TYPE string,
gs_functxt TYPE smp_dyntxt.
gs_functxt-icon_id = icon_export.
gs_functxt-quickinfo = ‘模板下载’.
gs_functxt-icon_text = ‘模板下载’.
sscrfields-functxt_01 = gs_functxt.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
CLEAR: gv_filter.
gv_filter = '|EXCEL-Files (*.XLS)|*.XLS|All Files(*.*)|*.*|'.
PERFORM frm_download_tmp USING gv_filter 'ZMM02'.
ENDCASE.
--------------------------------------------------------------------
--------------------------------------------------------------------
上传模板代码
--------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE .
DATA(P_TITLE) = 'EXCEL-Files (.XLS)|.XLS|EXCEL-Files (.XLSX)|.XLSX|All Files(.)|.*|'.
PERFORM FRM_SELECT_FILE USING P_TITLE P_FILE .
START-OF-SELECTION.
IF P_FILE IS NOT INITIAL .
PERFORM FRM_GET_EXCEL_DATA USING P_FILE
1
2
5
10000
‘’.
SORT GT_IEXCEL BY ROW COL .
REFRESH T_DATA .
FIELD-SYMBOLS .
LOOP AT GT_IEXCEL INTO GS_IEXCEL.
ASSIGN COMPONENT GS_IEXCEL-COL OF STRUCTURE T_DATA TO <FS> .
<FS> = GS_IEXCEL-VALUE .
AT END OF ROW .
APPEND T_DATA .
CLEAR T_DATA .
ENDAT .
ENDLOOP.
--------------------------------------------------------------------
--------------------------------------------------------------------
*ALV
--------------------------------------------------------------------
ZFIELDCAT-FIELDNAME = ‘SELKZ’.
ZFIELDCAT-COLTEXT = ‘选择’.
ZFIELDCAT-CHECKBOX = ‘X’.
ZFIELDCAT-EDIT = ‘X’.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZFIELDCAT-FIELDNAME = 'ZICO'.
ZFIELDCAT-COLTEXT = '指示灯'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZFIELDCAT-FIELDNAME = 'MATNR'.
ZFIELDCAT-COLTEXT = '物料'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZFIELDCAT-FIELDNAME = 'MAKTX'.
ZFIELDCAT-COLTEXT = '中文短描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZFIELDCAT-FIELDNAME = 'ZMAKTX'.
ZFIELDCAT-COLTEXT = '英文短描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZFIELDCAT-FIELDNAME = 'ESTR'.
ZFIELDCAT-COLTEXT = '中文长描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZFIELDCAT-FIELDNAME = 'ZESTR'.
ZFIELDCAT-COLTEXT = '英文长描述'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZFIELDCAT-FIELDNAME = 'ZYX'.
ZFIELDCAT-COLTEXT = '执行情况'.
APPEND ZFIELDCAT TO FIELDCAT.
CLEAR ZFIELDCAT.
ZLVC_S_LAYO-CWIDTH_OPT ='X'."优化ALV字段宽度"
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
-
I_INTERFACE_CHECK = ' '
-
I_BYPASSING_BUFFER =
-
I_BUFFER_ACTIVE = I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_PF_STATUS_SET = 'SUB_STATUS_SET' I_CALLBACK_USER_COMMAND = 'USER_COMMAND '
-
I_CALLBACK_TOP_OF_PAGE = ' '
-
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
-
I_CALLBACK_HTML_END_OF_LIST = ' '
-
I_STRUCTURE_NAME =
-
I_BACKGROUND_ID = ' '
-
I_GRID_TITLE =
-
I_GRID_SETTINGS = IS_LAYOUT_LVC = ZLVC_S_LAYO IT_FIELDCAT_LVC = FIELDCAT
-
IT_EXCLUDING =
-
IT_SPECIAL_GROUPS_LVC =
-
IT_SORT_LVC =
-
IT_FILTER_LVC =
-
IT_HYPERLINK =
-
IS_SEL_HIDE =
-
I_DEFAULT = 'X'
-
I_SAVE = ' '
-
IS_VARIANT =
-
IT_EVENTS =
-
IT_EVENT_EXIT =
-
IS_PRINT_LVC =
-
IS_REPREP_ID_LVC =
-
I_SCREEN_START_COLUMN = 0
-
I_SCREEN_START_LINE = 0
-
I_SCREEN_END_COLUMN = 0
-
I_SCREEN_END_LINE = 0
-
I_HTML_HEIGHT_TOP =
-
I_HTML_HEIGHT_END =
-
IT_ALV_GRAPHICS =
-
IT_EXCEPT_QINFO_LVC =
-
IR_SALV_FULLSCREEN_ADAPTER =
- IMPORTING
-
E_EXIT_CAUSED_BY_CALLER =
-
ES_EXIT_CAUSED_BY_USER = TABLES T_OUTTAB = T_DATA.
- EXCEPTIONS
- PROGRAM_ERROR = 1
- OTHERS = 2
ENDIF.
FORM SUB_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
DATA: WA_EXTAB LIKE LINE OF RT_EXTAB.
WA_EXTAB-FCODE = ‘&INFO’. "隐藏图标
APPEND WA_EXTAB TO RT_EXTAB.
SET PF-STATUS ‘STATUS01’ EXCLUDING RT_EXTAB .
ENDFORM.
FORM USER_COMMAND USING S_UCOMM TYPE SY-UCOMM “屏幕事件”
RE_SELFIELD TYPE SLIS_SELFIELD.
-
CALL METHOD gcl_alv_grid->check_changed_data. "触发数据变更
CASE S_UCOMM.WHEN ‘MASS’.
PERFORM ZMM02.
WHEN ‘ALL’.
PERFORM F_ALV_ALL_SELECT.
WHEN ‘DEALL’.
PERFORM F_ALV_ALL_DESELECT .WHEN ‘&IC1’. “双击跳转”
READ TABLE T_DATA INDEX RE_SELFIELD-TABINDEX.
IF RE_SELFIELD-FIELDNAME = ‘MATNR’.
SET PARAMETER ID ‘MAT’ FIELD T_DATA-MATNR .
CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN .
ENDIF .
ENDCASE.
RE_SELFIELD-REFRESH = ‘X’.
ENDFORM.
FORM ZMM02.
DATA:G_GRID TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’ “动态刷新内表”
IMPORTING
E_GRID = G_GRID.
CALL METHOD G_GRID->CHECK_CHANGED_DATA.
CALL METHOD G_GRID->REFRESH_TABLE_DISPLAY.
LOOP AT T_DATA WHERE SELKZ = ‘X’.
IF T_DATA-ESTR IS NOT INITIAL.
CALL FUNCTION ‘CONVERSION_EXIT_MATN1_INPUT’
EXPORTING
INPUT = T_DATA-MATNR
IMPORTING
OUTPUT = T_DATA-MATNR.
GS_HEADER-MANDT = SY-MANDT .
GS_HEADER-TDNAME = T_DATA-MATNR .
GS_HEADER-TDID = ‘GRUN’.
GS_HEADER-TDSPRAS = SY-LANGU .
GS_HEADER-TDOBJECT = ‘MATERIAL’.
CLEAR GT_LINES .
GT_LINES-TDFORMAT = ‘*’ .
GT_LINES-TDLINE = T_DATA-ESTR .
APPEND GT_LINES.
CALL FUNCTION ‘SAVE_TEXT’
EXPORTING
HEADER = GS_HEADER
SAVEMODE_DIRECT = ‘X’
TABLES
LINES = GT_LINES[].
REFRESH GT_LINES[].
ENDIF.
IF T_DATA-MAKTX IS NOT INITIAL.
CLEAR:bdcdata[],messtab[].
*perform bdc_dynpro using ‘SAPLMGMM’ ‘0060’.
*perform bdc_field using ‘BDC_CURSOR’
-
'RMMG1-MATNR'.
*perform bdc_field using ‘BDC_OKCODE’
-
'=ENTR'.
*perform bdc_field using ‘RMMG1-MATNR’
-
T_DATA-MATNR.
*perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
*perform bdc_field using ‘BDC_CURSOR’
-
'MSICHTAUSW-DYTXT(01)'.
*perform bdc_field using ‘BDC_OKCODE’
-
'=DEF_SAVE'.
*perform bdc_field using ‘MSICHTAUSW-KZSEL(01)’
-
'X' .
*perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
*perform bdc_field using ‘BDC_CURSOR’
-
'MSICHTAUSW-DYTXT(01)'.
*perform bdc_field using ‘BDC_OKCODE’
-
'=ENTR'.
*perform bdc_dynpro using ‘SAPLMGMM’ ‘4004’.
*perform bdc_field using ‘BDC_OKCODE’
-
'=BU'.
*perform bdc_field using ‘BDC_CURSOR’
-
'MAKT-MAKTX'.
*perform bdc_field using ‘MAKT-MAKTX’
-
T_DATA-MAKTX.
*perform bdc_field using ‘DESC_LANGU_GDTXT’
-
'1'.
--------------------------------------------------------------------
perform bdc_dynpro using ‘SAPLMGMM’ ‘0060’.
perform bdc_field using ‘BDC_CURSOR’
‘RMMG1-MATNR’.
perform bdc_field using ‘BDC_OKCODE’
‘=AUSW’.
perform bdc_field using ‘RMMG1-MATNR’
T_DATA-MATNR.
perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
perform bdc_field using ‘BDC_CURSOR’
‘MSICHTAUSW-DYTXT(01)’.
perform bdc_field using ‘BDC_OKCODE’
‘=DEF_SAVE’.
perform bdc_field using ‘MSICHTAUSW-KZSEL(01)’
‘X’.
perform bdc_dynpro using ‘SAPLMGMM’ ‘0070’.
perform bdc_field using ‘BDC_CURSOR’
‘MSICHTAUSW-DYTXT(01)’.
perform bdc_field using ‘BDC_OKCODE’
‘=ENTR’.
perform bdc_dynpro using ‘SAPLMGMM’ ‘4004’.
perform bdc_field using ‘BDC_OKCODE’
‘=ZU01’.
perform bdc_field using ‘BDC_CURSOR’
‘MAKT-MAKTX’.
perform bdc_field using ‘MAKT-MAKTX’
T_DATA-MAKTX.
perform bdc_field using ‘DESC_LANGU_GDTXT’
‘1’.
perform bdc_dynpro using ‘SAPLMGMM’ ‘4300’.
perform bdc_field using ‘BDC_OKCODE’
‘/00’.
perform bdc_field using ‘BDC_CURSOR’
‘SKTEXT-MAKTX(02)’.
perform bdc_field using ‘SKTEXT-SPRAS(02)’
‘EN’.
perform bdc_field using ‘SKTEXT-MAKTX(01)’
T_DATA-MAKTX.
perform bdc_field using ‘SKTEXT-MAKTX(02)’
T_DATA-ZMAKTX.
perform bdc_dynpro using ‘SAPLMGMM’ ‘4300’.
perform bdc_field using ‘BDC_OKCODE’
‘=BU’.
perform bdc_field using ‘BDC_CURSOR’
‘SKTEXT-SPRAS(02)’.
CALL TRANSACTION ‘MM02’ USING bdcdata
MODE ctumode
UPDATE cupdate
MESSAGES INTO messtab.
ENDIF.
IF T_DATA-ZESTR IS NOT INITIAL.
CALL FUNCTION ‘CONVERSION_EXIT_MATN1_INPUT’
EXPORTING
INPUT = T_DATA-MATNR
IMPORTING
OUTPUT = T_DATA-MATNR.
GS_HEADER-MANDT = SY-MANDT .
GS_HEADER-TDNAME = T_DATA-MATNR .
GS_HEADER-TDID = ‘GRUN’.
GS_HEADER-TDSPRAS = ‘EN’ .
GS_HEADER-TDOBJECT = ‘MATERIAL’.
CLEAR GT_LINES .
GT_LINES-TDFORMAT = ‘*’ .
GT_LINES-TDLINE = T_DATA-ZESTR .
APPEND GT_LINES.
CALL FUNCTION ‘SAVE_TEXT’
EXPORTING
HEADER = GS_HEADER
SAVEMODE_DIRECT = ‘X’
TABLES
LINES = GT_LINES[].
REFRESH GT_LINES[].
ENDIF.
REFRESH GT_LINES1[].
GS_HEADER-MANDT = SY-MANDT .
GS_HEADER-TDNAME = T_DATA-MATNR .
GS_HEADER-TDID = 'GRUN'.
GS_HEADER-TDSPRAS = SY-LANGU .
GS_HEADER-TDOBJECT = 'MATERIAL'.
ZNAME = T_DATA-MATNR .
CLEAR GT_LINES1.
CALL FUNCTION 'READ_TEXT'
EXPORTING
-
CLIENT = SY-MANDT ID = 'GRUN' LANGUAGE = SY-LANGU NAME = ZNAME OBJECT = 'MATERIAL'
-
TABLES LINES = GT_LINES1[].
CLEAR T_DATA1-ESTR.
LOOP AT GT_LINES1.T_DATA1-ESTR = T_DATA1-ESTR && GT_LINES1-TDLINE.
ENDLOOP .
IF T_DATA1-ESTR = T_DATA-ESTR.
T_DATA-ZYX = ‘修改成功’.
T_DATA-ZICO = ICON_GREEN_LIGHT .“ALV中指示灯显示”
ELSE.
T_DATA-ZYX = ‘修改失败’.
T_DATA-ZICO = ICON_RED_LIGHT.“ALV中指示灯显示”
ENDIF.
MODIFY T_DATA.
CLEAR T_DATA.
ENDLOOP.
ENDFORM. "SUB_USER_COMMAND
*--------------------------------------------------------------------
**全选选按钮控制
*--------------------------------------------------------------------
FORM F_ALV_ALL_SELECT .DATA:LV_TABIX TYPE SY-TABIX.
LOOP AT T_DATA.
LV_TABIX = SY-TABIX.
T_DATA-SELKZ = ‘X’.
MODIFY T_DATA INDEX LV_TABIX.
ENDLOOP.
ENDFORM.
*--------------------------------------------------------------------
**反选按钮控制
*--------------------------------------------------------------------
FORM F_ALV_ALL_DESELECT .
DATA:LV_TABIX TYPE SY-TABIX.
LOOP AT T_DATA.
LV_TABIX = SY-TABIX.
T_DATA-SELKZ = ’ '.
MODIFY T_DATA INDEX LV_TABIX.
ENDLOOP.
ENDFORM.