Code listing for: ZMMRSK00500
Description:
*&---------------------------------------------------------------------*
*& Report ZMMRSK00500
*&
*&**********************************************************************
*& *
*&*&********************************************************************
*& REVISION LOG *
*& *
*& LOG# DATE AUTHOR DESCRIPTION *
*& ---- ---- ------ ----------- *
* panjin create 202101
*&**********************************************************************
REPORT ZMMRSK00500 MESSAGE-ID ZMMSK01.
include ZMMRSK00500_top.
include ZMMRSK00500_srm.
include ZMMRSK00500_alv.
include ZMMRSK00500_pai.
include ZMMRSK00500_pbo.
include ZMMRSK00500_f01.
*Text elements
* -----------
* E01 请先选择
* T01 状态
* T02 状态信息
* T03 程序正在下载模板
* T04 模板文件:
* T05 不存在,请用TCODE:SMW0进行加载
* T06 下载失败
* T07 excel中没有数据
* T08 excel中没有数据
* T09 请选择文件路径!
* T10 File Name Get Failed
* T11 请选择保存EXCEL文件的路径
* T12 物料主数据编码从
* T13 物料主数据编码到
* T14 类
* T15 类别
* T16 是否质检
* T17 自动转储
* T18 库位
* T19 收货
* T20 移动类型
* T21 SKH1批次管理标识
* T22 SKH1批次管理标识
* T23 备注
* T24 选择
* T25 下载EXCEL模板
* T26 查询
* T27 模板保存为EXCEL
* T28 Excel 文件 (*.XLSX)
* T29 物料分类模板
* T30 成功
* T31
* T32
* T33
* T34
* T35
*Selection texts
* -----------
* P_FNAME 文件
*Messages
* -----------
*
* Message class: ZMMSK01
*000 & & & &
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731
Code listing for: ZMMRSK00500_TOP
Description: Include ZMMRSK00500_TOP
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_TOP
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 包括 ZFT_R_PP_019_D01
*&---------------------------------------------------------------------*
TYPE-POOLS: slis,icon.
TABLES:sscrfields.
TYPES: BEGIN OF ty_data.
include structure ZMMTSK00090.
TYPES:
icon(30),
msg TYPE string,
chkbox(1),
sel(1),
END OF ty_data.
DATA: gt_itab TYPE TABLE OF ty_data WITH HEADER LINE,
gt_itab_tmp TYPE TABLE OF ty_data WITH HEADER LINE.
DATA: g_co_objid TYPE wwwdatatab-objid .
data : g_cns_excel_scol TYPE i VALUE 1, "EXCEL START COL
g_cns_excel_srow TYPE i VALUE 2, "EXCEL START ROW
g_cns_excel_ecol TYPE i VALUE 50, "EXCEL END COL
g_cns_excel_erow TYPE i VALUE 50000. "EXCEL END ROW
DATA:BEGIN OF gt_iexcel OCCURS 0.
INCLUDE STRUCTURE alsmex_tabline.
DATA:END OF gt_iexcel.
DATA: g_functxt TYPE smp_dyntxt,
g_fullpath TYPE string.
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
g_repid TYPE sy-repid VALUE sy-repid,
gs_layo TYPE lvc_s_layo.
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t26.
PARAMETERS:p_fname TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b2.
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731
Code listing for: ZMMRSK00500_SRM
Description: Include ZMMRSK00500_SRM
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_SRM
*&---------------------------------------------------------------------*
INITIALIZATION.
g_functxt-icon_id = icon_export.
g_functxt-icon_text = TEXT-T25. "'下载EXCEL模板'.
g_functxt-quickinfo = TEXT-T25. "'下载EXCEL模板'.
sscrfields-functxt_01 = g_functxt.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_get_filepath.
PERFORM frm_downm.
WHEN 'ONLI'.
IF p_fname IS INITIAL.
SET CURSOR FIELD 'P_FNAME'.
MESSAGE text-t09 TYPE 'E'.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
PERFORM frm_get_file CHANGING p_fname.
START-OF-SELECTION.
PERFORM frm_file_read.
PERFORM frm_display.
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731
Code listing for: ZMMRSK00500_PAI
Description: Include ZMMRSK00500_PAI
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 包括 ZFT_R_PP_019_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IN_UCOMM text
* -->IN_SELFIELD text
*----------------------------------------------------------------------*
FORM FRM_user_command USING PV_ucomm LIKE sy-ucomm
PS_selfield TYPE slis_selfield.
PS_selfield-refresh = 'X'.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
CASE PV_ucomm.
WHEN '&SEL'.
PERFORM frm_SELECT.
WHEN '&DESEL'.
PERFORM frm_DESELECT.
WHEN '&IC1'.
* IF in_selfield-fieldname = 'MATNR' .
* SET PARAMETER ID 'MAT' FIELD in_selfield-value.
* CALL TRANSACTION 'CS03' .
* ENDIF.
WHEN '&UPLOAD'.
PERFORM frm_upload.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form FRM_SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SELECT .
LOOP AT gt_itab WHERE SEL = 'X'.
gt_itab-chkbox = 'X'.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_SELECT
*&---------------------------------------------------------------------*
*& Form FRM_DESELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DESELECT .
LOOP AT gt_itab WHERE SEL = 'X'.
gt_itab-chkbox = ''.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_DESELECT
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_UPLOAD .
data:lt_ZMMTSK00090 type TABLE OF ZMMTSK00090 WITH HEADER LINE.
LOOP AT gt_itab WHERE chkbox = 'X'.
MOVE-CORRESPONDING gt_itab to lt_ZMMTSK00090. "
append lt_ZMMTSK00090. "
CLEAR:lt_ZMMTSK00090. "
ENDLOOP.
IF sy-subrc ne 0.
MESSAGE text-e01 type 'E'. "请先选择
exit.
ENDIF.
IF lt_ZMMTSK00090[] is not INITIAL.
MODIFY ZMMTSK00090 FROM TABLE lt_ZMMTSK00090.
commit WORK.
ENDIF.
REFRESH:lt_ZMMTSK00090[].
LOOP AT gt_itab WHERE chkbox = 'X'.
gt_itab-icon = ICON_GREEN_LIGHT.
modify gt_itab.
ENDLOOP.
MESSAGE text-t30 type 'S'.
ENDFORM. " FRM_UPLOAD
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731
Code listing for: ZMMRSK00500_PBO
Description: Include ZMMRSK00500_PBO
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 包括 ZFT_R_PP_019_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display .
PERFORM frm_build_fact.
PERFORM frm_set_layout.
PERFORM frm_display_alv.
ENDFORM. " DISPLAY
*&---------------------------------------------------------------------*
*& Form BUILD_FACT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_build_fact .
DEFINE def_fieldcat.
clear gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-reptext = &2.
gs_fieldcat-edit = &3.
gs_fieldcat-no_zero = &4.
gs_fieldcat-fix_column(1) = &5.
gs_fieldcat-just = &6.
** if &1 = 'C'.
** gw_fieldcat-checkbox = 'X'.
** endif.
* if &1 = 'BANFN'.
* gw_fieldcat-hotspot = 'X'.
* gw_fieldcat-emphasize = 'C500'.
* endif.
append gs_fieldcat to gt_fieldcat.
END-OF-DEFINITION.
REFRESH gt_fieldcat[].
gs_fieldcat-fieldname = 'CHKBOX'.
gs_fieldcat-datatype = 'CHAR'.
gs_fieldcat-intlen = 1.
gs_fieldcat-COLTEXT = text-t24.
gs_fieldcat-checkbox = 'X'.
gs_fieldcat-edit = 'X'.
gs_fieldcat-FIX_COLUMN = 'X'.
append gs_fieldcat to gt_fieldcat.
CLEAR gs_fieldcat.
def_fieldcat 'ICON' text-T01 '' 'X' '' ''.
def_fieldcat 'MATNR_FR' text-T12 '' 'X' '' ''. "物料主数据编码从
def_fieldcat 'MATNR_TO' text-T13 '' '' '' ''. "物料主数据编码到
def_fieldcat 'KLART' text-T14 '' '' '' ''. "类
def_fieldcat 'CLASS' text-T15 '' '' '' ''. "类别
def_fieldcat 'ZSFZJ' text-T16 '' '' '' ''. "是否质检
def_fieldcat 'ZAUTO' text-T17 '' '' '' ''. "自动转储
def_fieldcat 'LGORT' text-T18 '' '' '' ''. "库位
def_fieldcat 'UMLGO' text-T19 '' '' '' ''. "收货
def_fieldcat 'BWART' text-T20 '' '' '' ''. "移动类型
def_fieldcat 'XCHPF_H' text-T21 '' '' '' ''. "SKH1批次管理标识
def_fieldcat 'XCHPF_X' text-T22 '' '' '' ''. "SKH1批次管理标识
def_fieldcat 'ZNOTE' text-T23 '' '' '' ''. "备注
ENDFORM. " BUILD_FACT
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_layout .
gs_layo-zebra = 'X'.
gs_layo-cwidth_opt = 'X'.
gs_layo-box_fname = 'SEL'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display_alv .
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_pf_status_set = 'FRM_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
* i_callback_top_of_page = 'FM_ALV_TOP'
i_callback_program = g_repid
it_fieldcat_lvc = gt_fieldcat
is_layout_lvc = gs_layo
TABLES
t_outtab = gt_itab[].
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. " DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM frm_status USING ps_extab TYPE slis_t_extab.
SET PF-STATUS '0100' EXCLUDING ps_extab.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& Form READ_YCL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_read_ycl .
DATA:lv_col TYPE i.
FIELD-SYMBOLS:<l_field> type any.
LOOP AT gt_iexcel.
CASE gt_iexcel-col.
WHEN '0001'.
IF strlen( gt_iexcel-value ) <= 16.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gt_iexcel-value
IMPORTING
output = gt_itab-MATNR_FR.
ELSE.
gt_itab-MATNR_FR = gt_iexcel-value.
ENDIF.
WHEN '0002'.
IF strlen( gt_iexcel-value ) <= 16.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gt_iexcel-value
IMPORTING
output = gt_itab-MATNR_TO.
ELSE.
gt_itab-MATNR_TO = gt_iexcel-value.
ENDIF.
WHEN OTHERS.
CONDENSE gt_iexcel-value NO-GAPS.
TRANSLATE gt_iexcel-value TO UPPER CASE.
lv_col = gt_iexcel-col + 1.
ASSIGN COMPONENT lv_col OF STRUCTURE gt_itab TO <l_field>.
IF sy-subrc = 0.
TRY.
<l_field> = gt_iexcel-value.
CATCH cx_sy_conversion_no_number."非数值
ENDTRY.
ENDIF.
ENDCASE.
AT END OF row.
* if sy-subrc ne 0.
* gt_itab-msg = '此组件在此工厂不存在 '.
* gt_itab-ICON = '@0A@'.
* endif.
gt_itab-CHKBOX = 'X'.
APPEND gt_itab.
CLEAR: gt_itab.
ENDAT.
ENDLOOP.
ENDFORM. " READ_YCL
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731
Code listing for: ZMMRSK00500_F01
Description: Include ZMMRSK00500_F01
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 包括 ZFT_R_PP_019_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FM_GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_P_FNAME text
*----------------------------------------------------------------------*
FORM frm_get_file CHANGING CV_fname.
DATA: l_work_rc TYPE i. "Return Code
DATA: l_lstr_filter TYPE string.
DATA: lt_ltb_file_table TYPE filetable,
ls_lwk_file_table TYPE filename.
CONCATENATE 'Excel 2007-2019(*.XLSX)|*.XLSX|' 'Excel(*.XLSX)|*.XLSX'
INTO l_lstr_filter.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select the file '
* DEFAULT_EXTENSION =
default_filename = ''
file_filter = l_lstr_filter
initial_directory = 'C:'
* MULTISELECTION =
* WITH_ENCODING =
CHANGING
file_table = lt_ltb_file_table
rc = l_work_rc
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc = 0.
LOOP AT lt_ltb_file_table INTO ls_lwk_file_table.
MOVE ls_lwk_file_table TO CV_fname.
EXIT.
ENDLOOP.
ELSE.
MESSAGE text-t10 TYPE 'E'.
ENDIF.
ENDFORM. " FM_GET_FILE
*&---------------------------------------------------------------------*
*& Form FM_GET_FILEPATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_get_filepath .
DATA:L_window_title TYPE STRING,
L_file_filter TYPE STRING,
l_filename TYPE string,
l_path TYPE string,
l_fullpath TYPE string,
l_title TYPE string.
g_co_objid = 'ZMMRSK00500'.
L_WINDOW_TITLE = text-t27.
L_file_filter = text-t28 .
L_TITLE = text-t29.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = L_window_title " '模板保存为EXCEL' "text-t27 "'模板保存为EXCEL'
default_extension = 'xlsx'
default_file_name = l_title
* file_filter = '.xls'
file_filter = l_file_filter "'Excel 文件 (*.XLSX)' "text-t28 " 'Excel 文件 (*.XLS)'
initial_directory = 'C:/'
* DEFAULT_FILE_NAME = p_filename
CHANGING
filename = l_filename
path = l_path
fullpath = g_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
STOP.
ENDIF.
IF g_fullpath IS INITIAL.
MESSAGE text-t11 TYPE 'E'.
ENDIF.
ENDFORM. " FM_GET_FILEPATH
*&---------------------------------------------------------------------*
*& Form FM_DOWNM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_downm .
DATA: ls_indcatortxt TYPE string,
l_filename TYPE sapb-sappfad.
DATA: lo_objdata LIKE wwwdatatab,
lo_mime LIKE w3mime,
ls_destination LIKE rlgrap-filename,
ls_objnam TYPE string,
l_rc LIKE sy-subrc,
ls_errtxt TYPE string.
l_filename = g_fullpath.
ls_indcatortxt = text-t03. "'程序正在下载模板'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = ls_indcatortxt.
CONCATENATE g_co_objid '.XLSX' INTO ls_objnam.
CONDENSE ls_objnam NO-GAPS.
SELECT SINGLE relid objid FROM wwwdata
INTO CORRESPONDING FIELDS OF lo_objdata
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = g_co_objid.
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
CONCATENATE text-t04 ls_objnam text-t05 INTO ls_errtxt.
MESSAGE E000(ZMMSK01) WITH ls_errtxt.
ENDIF.
ls_destination = g_fullpath.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = l_rc.
IF l_rc NE 0.
CONCATENATE text-t04 ls_objnam text-t06 INTO ls_errtxt.
MESSAGE e000(ZMMSK01) with ls_errtxt.
ENDIF.
ENDFORM. " FM_DOWNM
*&---------------------------------------------------------------------*
*& Form FM_FILE_READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_file_read .
CLEAR: gt_iexcel, "
gt_iexcel[], "
gt_itab. "
call function 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_fname
i_begin_col = g_cns_excel_scol
i_begin_row = g_cns_excel_srow
i_end_col = g_cns_excel_ecol
i_end_row = g_cns_excel_erow
TABLES
intern = gt_iexcel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE text-t07 TYPE 'E'.
EXIT.
ENDIF.
SORT gt_iexcel BY row col.
CLEAR gt_itab.
PERFORM frm_read_ycl.
IF gt_itab[] IS INITIAL.
MESSAGE text-t08 TYPE 'E'.
EXIT.
ELSE.
ENDIF.
ENDFORM. " FM_FILE_READ
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731