*&---------------------------------------------------------------------* *& Report ZTEST_HZY_CS *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT zppb104. *&---------------------------------------------------------------------* *& Report ZPPB104 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------*
TABLES sscrfields.
************************************************************************ * 类型定义 ************************************************************************ TYPES:BEGIN OF ty_data,
material(18) TYPE c, "物料 KTEXT(40) TYPE c, "物料描述 plant(4) TYPE c, "工厂 valid_from(8) TYPE c, "有效日期自 plnnr(8) TYPE c, "组号 group_counter(2) TYPE c, "组计数器 task_list_usage(3) TYPE c, "用途 task_list_status(3) TYPE c, "状态 activity(4) TYPE c, "工序编码(操作/活动编号) work_cntr(8) TYPE c, "工作中心 control_key(4) TYPE c, "控制码 ktsch(7) TYPE c, "标准文本码 description(40) TYPE c, "工序描述 base_quantity(13) TYPE c, "基本数量 std_value_01(9) TYPE c, "标准值-人工 std_value_02(9) TYPE c, "标准值-制费(固定) std_value_03(9) TYPE c, "标准值-制费(变动) std_value_04(9) TYPE c, "标准值-能动 message(40) TYPE c, " 创建反馈信息 color TYPE char4, box TYPE c, END OF ty_data.
TYPES: BEGIN OF ty_mesg, light(4) TYPE c, type(1) TYPE c, material(18) TYPE c, text(555) TYPE c, END OF ty_mesg.
************************************************************************ * 内表声明 ************************************************************************ TYPE-POOLS:slis, vrm, truxs, ole2 . DATA: t_data TYPE STANDARD TABLE OF ty_data WITH HEADER LINE. DATA: t_temp TYPE STANDARD TABLE OF ty_data WITH HEADER LINE. DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE, layout TYPE slis_layout_alv, repname LIKE sy-repid VALUE sy-repid. DATA: task TYPE bapi1012_tsk_c OCCURS 0 WITH HEADER LINE, material TYPE bapi1012_mtk_c OCCURS 0 WITH HEADER LINE, sequence TYPE bapi1012_seq_c OCCURS 0 WITH HEADER LINE, operation TYPE bapi1012_opr_c OCCURS 0 WITH HEADER LINE, return TYPE bapiret2 OCCURS 0 WITH HEADER LINE. DATA: gt_mesg TYPE STANDARD TABLE OF ty_mesg. DATA: gs_mesg TYPE ty_mesg. DATA: gt_raw TYPE truxs_t_text_data.
************************************************************************ * 全局变量声明 ************************************************************************ DATA: zmessage(80) TYPE c. DATA: g_meins LIKE mara-meins. DATA: g_group TYPE bapi1012_tsk_c-task_list_group, g_group_counter TYPE bapi1012_tsk_c-group_counter.
*** OLE EXCLE定义 DATA: g_sheet TYPE ole2_object, g_activesheet TYPE ole2_object, g_newsheet TYPE ole2_object, g_appl TYPE ole2_object, g_work TYPE ole2_object, g_cell TYPE ole2_object.
DEFINE add_field. CLEAR fieldcat. fieldcat-col_pos = &1. fieldcat-fieldname = &2. fieldcat-seltext_l = &3. fieldcat-icon = &4. APPEND fieldcat. END-OF-DEFINITION.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002. PARAMETERS: p_file LIKE rlgrap-filename. SELECTION-SCREEN FUNCTION KEY 1. SELECTION-SCREEN END OF BLOCK b1.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-001. * * *PARAMETERS: p_upload TYPE c RADIOBUTTON GROUP g1 DEFAULT 'X', * p_down TYPE c RADIOBUTTON GROUP g1. * * *SELECTION-SCREEN END OF BLOCK b2.
************************************************************************ * Initialization ************************************************************************ INITIALIZATION.
SSCRFIELDS-FUNCTXT_01 = '下载模板'.
************************************************************************ * AT SELECTION-SCREEN ON VALUE-REQUEST ************************************************************************ AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. PERFORM open_file .
************************************************************************ * at selection screen ************************************************************************ AT SELECTION-SCREEN.
*AT SELECTION-SCREEN.
IF SY-UCOMM = 'FC01'. PERFORM download_template. "下载模板 ENDIF.
IF SY-UCOMM = 'ONLI'. PERFORM check_filename. "检查选择条件必输 ENDIF.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. * PERFORM frm_get_filename. "选择文件
************************************************************************ * event Start of Selection ************************************************************************ START-OF-SELECTION. * PERFORM open_file . * PERFORM check_filename. "文件检查
* IF p_upload = 'X'. PERFORM get_data_from_file. " PERFORM check_data.
* PERFORM FILL_LIGHT. PERFORM build_fieldcat. PERFORM display_report. * ELSE. * PERFORM download_template. "下载模板 * ENDIF.
************************************************************************ *EVENT End-of selection ************************************************************************ END-OF-SELECTION.
*&---------------------------------------------------------------------* *& Form OPEN_FILE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_FILE text *----------------------------------------------------------------------* FORM open_file . DATA: l_file TYPE string, l_file_import TYPE string, l_path_initial TYPE string, lt_file_table TYPE filetable, lw_file TYPE file_table, l_rc TYPE i.
CLEAR: l_file, l_file_import, l_path_initial, lt_file_table, lw_file, l_rc.
l_file = p_file. * IF p_upload = 'X'.
CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = '选择模板下载路径' * default_extension = default_filename = '工艺路线批量导入下载模板.XLSX' file_filter = 'Excel 文件 (*.xls;*xlsx)|*.xls;*.xlsx' * with_encoding = * initial_directory = * multiselection = CHANGING file_table = lt_file_table rc = l_rc.
. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
READ TABLE lt_file_table INTO lw_file INDEX 1. IF sy-subrc EQ 0. p_file = lw_file-filename. ENDIF.
* ELSE.
* CALL METHOD cl_gui_frontend_services=>file_save_dialog * EXPORTING * file_filter = 'Excel 文件 (*.xls;*xlsx)|*.xls;*.xlsx' * default_file_name = l_file * initial_directory = l_file * CHANGING * filename = l_file_import * path = l_path_initial * fullpath = l_file * EXCEPTIONS * OTHERS = 0. * * p_file = l_file. * ENDIF.
ENDFORM. " OPEN_FILE
*&---------------------------------------------------------------------* *& Form BATCH_CREATE_ROUTING *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM batch_create_routing . DATA : lv_char TYPE opr_class_data_interface-vge02 VALUE 'KG', lv_meins TYPE mara-meins. * . IF sy-subrc <> 0.
ENDIF.
DATA : t_temp TYPE STANDARD TABLE OF ty_data WITH HEADER LINE. t_temp[] = t_data[]. DELETE t_temp WHERE box NE 'X' or COLOR = 'C610'. DELETE ADJACENT DUPLICATES FROM t_temp COMPARING material plant plnnr group_counter. data: lv_sno TYPE char6 . LOOP AT t_temp[] INTO t_temp ."WHERE BOX = 'X' and color ne 'C610'.
CLEAR:lv_meins. " 取得到单位
PERFORM convert_input USING t_temp-material. PERFORM convert_input USING t_temp-activity.
SELECT SINGLE meins INTO lv_meins FROM mara WHERE matnr = t_temp-material.
* AT END OF GROUP_COUNTER."MATERIAL. CLEAR task. SELECT SINGLE plnnr FROM mapl INTO task-task_list_group WHERE matnr = t_temp-material AND werks = t_temp-plant . * AND plnnr = t_temp-plnnr. task-plant = t_temp-plant. "工厂 task-group_counter = t_temp-group_counter. TASK-DESCRIPTION = T_TEMP-KTEXT. task-task_measure_unit = lv_meins. * TASK-TASK_MEASURE_UNIT_ISO = T_TEMP-TASK_MEASURE_UNIT. task-task_list_group = t_temp-plnnr. " 任务清单组码 task-task_list_usage = t_temp-task_list_usage. "任务清单使用 task-task_list_status = t_temp-task_list_status. "状态 task-valid_from = t_temp-valid_from. "有效起始日期从 task-valid_to_date = '99991231'. " APPEND task.
material-material = t_temp-material. material-plant = t_temp-plant. material-valid_from = t_temp-valid_from. * material-material_external = t_temp-maktx. material-group_counter = t_temp-group_counter. material-valid_to_date = '99991231'. APPEND material.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = t_temp-material IMPORTING output = t_temp-material.
lv_sno = '000000'. LOOP AT t_data[] INTO t_data WHERE box = 'X' AND material = t_temp-material AND plant = t_temp-plant
AND plnnr = t_temp-plnnr AND group_counter = T_TEMP-group_counter . PERFORM convert_input USING t_data-material. PERFORM convert_input USING t_data-activity. operation-task_list_group = t_data-plnnr. " 任务清单组码
operation-group_counter = t_data-group_counter. " 组计数器
operation-activity = t_data-activity. "工序编码 operation-plant = t_data-plant. "工序工厂 operation-work_cntr = t_data-work_cntr. "工作中心 operation-standard_text_key = t_data-ktsch. TRANSLATE t_data-control_key TO UPPER CASE. operation-control_key = t_data-control_key. "控制码 operation-description = t_data-description. "工序描述 operation-base_quantity = t_data-base_quantity. "基本数量 operation-valid_from = t_data-valid_from. "有效起始日期从 operation-valid_to_date = '99991231'. "有效日期至
operation-std_value_01 = t_data-std_value_01. "标准值2
operation-std_value_02 = t_data-std_value_02. "标准值2
operation-std_value_03 = t_data-std_value_03. "标准值2
operation-std_value_04 = t_data-std_value_04. "标准值3
operation-denominator = 1. "用于转换工艺路线和工序单位的分母 operation-nominator = 1. "用于转换任务清单和工序计量单位的计数器 operation-cost_relevant = 'X'. "成本核算相关标识(默认与成本100%相关) * operation-operation_measure_unit = lv_meins. " 单位 * operation-TIME_UNIT = 'MIN'. operation-sequence_no = lv_sno. * lv_sno = ''. * CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' * EXPORTING * input = lv_sno * IMPORTING * OUTPUT = lv_sno * .
* it_operation-insp_point_complt_flow_variant = T_DATA-qppktabs. "检验点完成 APPEND operation.
* REFRESH operation[]. ENDLOOP. CALL FUNCTION 'BAPI_ROUTING_CREATE' * EXPORTING * plnty = 'N' IMPORTING group = t_temp-plnnr groupcounter = t_temp-group_counter TABLES task = task[] materialtaskallocation = material[] sequence = sequence[] operation = operation[] return = return[].
IF sy-subrc = 0. PERFORM build_message. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. CLEAR gs_mesg. READ TABLE return INDEX 1. IF return-type = 'S'. DATA: count(3) TYPE c. DATA: total TYPE i. gs_mesg-type = 'S'. READ TABLE return INDEX 1. MOVE return-message_v2 TO zmessage.
SELECT COUNT(*) INTO total FROM mapl WHERE matnr = t_temp-material AND werks = t_temp-plant AND loekz <> 'X' AND plnty = 'N'. MOVE total TO count. CONCATENATE '物料:' t_temp-material ' 工厂:' t_temp-plant ' 组:' g_group ' 计数器:' g_group_counter '已经成功创建!现共有' count '条工艺路线。' INTO gs_mesg-text. gs_mesg-material = t_temp-material. APPEND gs_mesg TO gt_mesg. CONCATENATE '任务清单' zmessage '创建成功' INTO zmessage. t_temp-message = zmessage. t_temp-color = 'C510'. MODIFY t_temp[] FROM t_temp. CLEAR t_temp. ELSE. gs_mesg-type = 'E'. READ TABLE return INDEX 2. MOVE return-message TO zmessage. CONCATENATE '物料:' t_temp-material ' 工厂:' t_temp-plant ' 组:' g_group ' 计数器:' g_group_counter ' 创建失败!请检查数据。原因:' zmessage INTO gs_mesg-text. gs_mesg-material = t_temp-material. APPEND gs_mesg TO gt_mesg. t_temp-message = zmessage. t_temp-color = 'C610'. MODIFY t_temp[] FROM t_temp. CLEAR t_temp. ENDIF. ELSE. PERFORM build_message. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. gs_mesg-type = 'E'. CONCATENATE '物料:' t_temp-material ' 工厂:' t_temp-plant ' 组:' g_group ' 计数器:' g_group_counter ' 创建失败!请检查数据。原因:' zmessage INTO gs_mesg-text. gs_mesg-material = t_temp-material. APPEND gs_mesg TO gt_mesg. t_temp-message = zmessage. t_temp-color = 'C610'. MODIFY t_temp[] FROM t_temp. CLEAR t_temp. ENDIF.
CLEAR zmessage. REFRESH task[]. REFRESH material[]. REFRESH sequence[]. REFRESH operation[]. REFRESH return[].
* ENDAT. ENDLOOP. IF sy-subrc NE 0. MESSAGE '请至少选择一条有效数据' TYPE'S' DISPLAY LIKE 'E'. ENDIF. LOOP AT t_temp[] INTO t_temp WHERE box = 'X'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = t_temp-material IMPORTING output = t_temp-material. LOOP AT t_data[] INTO t_data WHERE box = 'X' AND material = t_temp-material AND plant = t_temp-plant. * AND plnnr = t_temp-plnnr AND group_counter = t_temp-group_counter. * t_data-message = '12'. IF sy-subrc = 0. IF t_data-plnnr = t_temp-plnnr AND T_DATA-group_counter = T_TEMP-group_counter. t_data-message = t_temp-message. t_data-color = t_temp-color. MODIFY t_data[] FROM t_data. CLEAR t_data. ELSEIF T_DATA-PLNNR = '' or T_DATA-group_counter = ''. t_data-message = t_temp-message. t_data-color = t_temp-color. MODIFY t_data[] FROM t_data. CLEAR t_data. ENDIF.
ENDIF.
ENDLOOP. ENDLOOP. SORT t_data[] BY color.
ENDFORM. " BATCH_CREATE_ROUTING
*&---------------------------------------------------------------------* *& Form CONVERT_INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_T_DATA_MATERIAL text *----------------------------------------------------------------------* FORM convert_input USING p_data. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = p_data IMPORTING output = p_data. ENDFORM. " CONVERT_INPUT
*&---------------------------------------------------------------------* *& Form GET_DATA_FROM_FILE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM get_data_from_file . CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING i_line_header = 'X' " Not include file header i_tab_raw_data = gt_raw " Work Table i_filename = p_file TABLES i_tab_converted_data = t_data[] EXCEPTIONS conversion_failed = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
IF t_data[] IS INITIAL. MESSAGE s000(zjingu) WITH '上传文件不包含任何有效数据' DISPLAY LIKE 'E'. STOP. ENDIF. ENDFORM. " GET_DATA_FROM_FILE
*&---------------------------------------------------------------------* *& Form CHECK_FILENAME *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM check_filename . DATA:l_hzm TYPE string, l_s1 TYPE string.
IF p_file IS INITIAL. MESSAGE '路径不能为空' TYPE 'S' DISPLAY LIKE 'E'. STOP. ENDIF. SPLIT p_file AT '.' INTO l_s1 l_hzm.
IF l_hzm <> 'XLS' AND l_hzm <> 'xls' AND l_hzm <> 'XLSX' AND l_hzm <> 'xlsx'. MESSAGE '请输出正确的文件格式' TYPE 'S' DISPLAY LIKE 'E'. STOP . ENDIF.
ENDFORM. " CHECK_FILENAME
*&---------------------------------------------------------------------* *& Form CHECK_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM check_data . LOOP AT t_data[] INTO t_data. CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' EXPORTING input = t_data-material IMPORTING output = t_data-material * EXCEPTIONS * LENGTH_ERROR = 1 * OTHERS = 2 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = t_data-group_counter IMPORTING output = t_data-group_counter.
"1、根据物料、工厂 从MARC表检查物料是否存在,如不存在给出校验提示消息:物料不存在 SELECT SINGLE matnr INTO t_data-material FROM marc WHERE matnr = t_data-material AND werks = t_data-plant. IF sy-subrc <> 0. t_data-message = '物料不存在'. t_data-color = 'C610'. MODIFY t_data. CONTINUE. ENDIF.
SELECT SINGLE matnr INTO t_data-material FROM mapl WHERE matnr = t_data-material AND werks = t_data-plant AND plnal = t_data-group_counter AND loekz = '' AND plnty = 'R'.
IF sy-subrc = 0. t_data-message = '工艺已存在不允许重复创建'. t_data-color = 'C610'. MODIFY t_data[] FROM t_data. CONTINUE. ENDIF.
SELECT SINGLE arbpl INTO t_data-work_cntr FROM crhd WHERE arbpl = t_data-work_cntr. IF sy-subrc NE 0. t_data-message = '工作中心不存在'. t_data-color = 'C610'. MODIFY t_data[] FROM t_data. CONTINUE. ENDIF. IF t_data-plnnr = ''. t_data-message = '缺少必输组号'. t_data-color = 'C610'. MODIFY t_data[] FROM t_data. CONTINUE.
ENDIF. IF t_data-group_counter = ''. t_data-message = '缺少必输组计数器'. t_data-color = 'C610'. MODIFY t_data[] FROM t_data. CONTINUE. ENDIF.
MODIFY t_data[] FROM t_data. ENDLOOP. LOOP AT t_data[] INTO t_data. CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = t_data-material IMPORTING output = t_data-material * EXCEPTIONS * LENGTH_ERROR = 1 * OTHERS = 2 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. MODIFY t_data[] FROM t_data. CLEAR t_data. ENDLOOP.
ENDFORM. " CHECK_DATA
*&---------------------------------------------------------------------* *& Form BUILD_MESSAGE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM build_message . CALL FUNCTION 'MESSAGE_TEXT_BUILD' EXPORTING msgid = sy-msgid msgnr = sy-msgno msgv1 = sy-msgv1 msgv2 = sy-msgv2 msgv3 = sy-msgv3 msgv4 = sy-msgv4 IMPORTING message_text_output = zmessage. ENDFORM. " BUILD_MESSAGE
*&---------------------------------------------------------------------* *& Form FILL_LIGHT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM fill_light . CLEAR gs_mesg. LOOP AT gt_mesg INTO gs_mesg. IF gs_mesg-type = 'E' OR gs_mesg-type = 'A'. gs_mesg-light = '@0A@'. "red light ELSEIF gs_mesg-type = 'W' OR gs_mesg-type = 'I'. gs_mesg-light = '@09@'. "yellow light ELSE. gs_mesg-light = '@08@'. "green light ENDIF. MODIFY gt_mesg FROM gs_mesg. ENDLOOP. ENDFORM. " FILL_LIGHT
*&---------------------------------------------------------------------* *& Form BUILD_FIELDCAT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM build_fieldcat . add_field 1 'BOX' '类型' 'X'. add_field 1 'MATERIAL' '物料' 'X'. add_field 1 'KTEXT' '工艺路线描述' 'X'. add_field 1 'PLANT' '工厂' 'X'. add_field 1 'VALID_FROM' '有效日期' 'X'. add_field 1 'PLNNR' '组号' 'X'. add_field 1 'GROUP_COUNTER' '组计数器' 'X'. add_field 1 'TASK_LIST_USAGE' '用途' 'X'. add_field 1 'TASK_LIST_STATUS' '状态' 'X'. add_field 1 'ACTIVITY' '操作/活动' 'X'. add_field 1 'WORK_CNTR' '工作中心' 'X'. add_field 1 'CONTROL_KEY' '控制码' 'X'. add_field 1 'KTSCH' '标准文本码' 'X'. add_field 1 'DESCRIPTION' '工序短文本' 'X'. add_field 1 'BASE_QUANTITY' '基本数量' 'X'. add_field 1 'STD_VALUE_01' '标准值-人工' 'X'. add_field 1 'STD_VALUE_02' '标准值-制费 (固定)' 'X'. add_field 1 'STD_VALUE_03' '标准值-制费(变动)' 'X'. add_field 1 'STD_VALUE_04' '标准值-能动' 'X'. add_field 1 'MESSAGE' '创建反馈信息' 'X'.
ENDFORM. " BUILD_FIELDCAT
*&---------------------------------------------------------------------* *& Form DISPLAY_REPORT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM display_report . layout-box_fieldname = 'BOX'. layout-zebra = 'X'. layout-colwidth_optimize = 'X'. layout-info_fieldname = 'COLOR'.
SORT t_data[] BY color.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING it_fieldcat = fieldcat[] i_callback_program = repname is_layout = layout i_save = 'A' i_callback_pf_status_set = 'FRM_PF_STATUS' i_callback_user_command = 'FRM_USER_COMMAND' TABLES t_outtab = t_data. ENDFORM. " DISPLAY_REPORT FORM frm_pf_status USING rt_extab TYPE slis_t_extab. SET PF-STATUS 'STANDARD'. ENDFORM. "FRM_PF_STATUS
FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield. rs_selfield-refresh = 'X'. *&---刷新屏幕数据到内表 DATA: lr_grid1 TYPE REF TO cl_gui_alv_grid. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = lr_grid1. CALL METHOD lr_grid1->check_changed_data. CASE r_ucomm . WHEN 'SAVE'. PERFORM batch_create_routing. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = lr_grid1. CALL METHOD lr_grid1->check_changed_data.
ENDCASE.
ENDFORM. "FRM_USER_COMMAND
*&---------------------------------------------------------------------* *& Form DOWNLOAD_TEMPLATE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM download_template .
DATA: w_objdata LIKE wwwdatatab, w_mime LIKE w3mime, w_filename TYPE string , "VALUE '模板修改', w_fullpath TYPE string , "VALUE 'D:/SAPREPORT/', w_path TYPE string, "VALUE 'D:/SAPREPORT/', w_destination LIKE rlgrap-filename, w_objnam TYPE string, w_rc LIKE sy-subrc, w_errtxt TYPE string, w_action TYPE i. DATA:w_objid TYPE wwwdatatab-objid, w_dest LIKE sapb-sappfad.
w_objid = 'ZPPB104'. w_filename = '工艺路线导入模板'.
CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING window_title = '下载导入模板' default_extension = 'XLS' default_file_name = w_filename CHANGING filename = w_filename path = w_path fullpath = w_fullpath * user_action = w_action EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.
IF sy-subrc = 0 AND w_action EQ 0. w_dest = w_fullpath. CONDENSE w_objnam NO-GAPS. SELECT SINGLE relid objid INTO CORRESPONDING FIELDS OF w_objdata FROM wwwdata WHERE srtf2 = 0 AND relid = 'MI' AND objid = w_objid. IF sy-subrc NE 0 OR w_objdata-objid EQ space. CONCATENATE '模板文件' w_objnam '不存在' INTO w_errtxt. MESSAGE w_errtxt TYPE 'I'. ENDIF. w_destination = w_dest. CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING key = w_objdata destination = w_destination IMPORTING rc = w_rc. IF w_rc NE 0. CONCATENATE '模板文件:' w_objnam '下载失败' INTO w_errtxt. MESSAGE w_errtxt TYPE 'E'. ENDIF. ENDIF.
* CREATE OBJECT g_appl 'EXCEL.APPLICATION'. * SET PROPERTY OF g_appl 'VISIBLE' = 0. * * CALL METHOD OF * g_appl * 'WORKBOOKS' = g_work. * CALL METHOD OF * g_work * 'Add' = g_work. * * GET PROPERTY OF g_appl 'ActiveSheet' = g_activesheet. * SET PROPERTY OF g_activesheet 'Name' = '工艺路线模板'. * * PERFORM fill_cell USING: * 1 1 '物料' 27 1, * 1 2 '工艺路线描述' 27 1, * 1 3 '工厂' 27 1, * 1 4 '有效日期自' 27 1, * 1 5 '组号' 27 1, * * 1 6 '组计数器' 27 1, * 1 7 '用途' 27 1, * 1 8 '状态' 27 1, * 1 9 '操作/活动' 27 1, * 1 10 '工作中心' 27 1, * 1 11 '控制码' 27 1, * 1 12 '标准文本码' 27 1, * 1 13 '工序短文本' 27 1, * 1 14 '基本数量' 27 1, * 1 15 '标准值-人工' 27 1, * 1 16 '标准值-制费(固定)' 27 1, * 1 17 '标准值-制费(变动)' 27 1, * 1 18 '标准值-标准值-能动' 27 1. * * * "EXCEL文件别存为 * CALL METHOD OF * g_work * 'SAVEAS' * EXPORTING * #1 = p_file. * * "关闭文件 * CALL METHOD OF * g_work * 'close'. * * "退出EXCEL * CALL METHOD OF * g_appl * 'QUIT'. * FREE OBJECT g_appl. * * MESSAGE s000(zjingu) WITH '文件:' p_file ' 下载成功'. ENDFORM. " DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------* *& Form FILL_CELL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_1 text * -->P_1 text * -->P_0981 text * -->P_26 text * -->P_1 text *----------------------------------------------------------------------* FORM fill_cell USING fu_row fu_column fu_value fu_color fu_bold.
DATA: l_cell TYPE ole2_object, l_color TYPE ole2_object, l_bold TYPE ole2_object.
"设置单元格内容 CALL METHOD OF g_appl 'Cells' = l_cell EXPORTING #1 = fu_row #2 = fu_column.
SET PROPERTY OF l_cell 'Value' = fu_value.
"设置单元格颜色 * GET PROPERTY OF L_CELL 'Interior' = L_COLOR. * SET PROPERTY OF L_COLOR 'ColorIndex' = FU_COLOR.
"设置单元格加粗 GET PROPERTY OF l_cell 'Font' = l_bold. SET PROPERTY OF l_bold 'Bold' = fu_bold.
ENDFORM. "fill_cell *&---------------------------------------------------------------------* *& Form UNIT_INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_T_DATA_TASK_MEASURE_UNIT text *----------------------------------------------------------------------* FORM unit_input USING p_unit. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING input = p_unit language = sy-langu IMPORTING output = p_unit EXCEPTIONS unit_not_found = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF.
ENDFORM. " frm_display_alv **&---------------------------------------------------------------------* |