*&---------------------------------------------------------------------* *& Report ZPPC001 *& *&---------------------------------------------------------------------* *& SAP Module PP *& Author Leon *& Created Date 2015.5.15 *& Description 工艺路线批量导入 *&---------------------------------------------------------------------* REPORT ZPPC001 NO STANDARD PAGE HEADING. TABLES: SSCRFIELDS. DATA: BEGIN OF gt_upload OCCURS 0, werks TYPE werks_d, " 工厂 matnr TYPE matnr, " 物料 plnal LIKE plko-plnal, " 组计数器(版本) vornr LIKE plpo-vornr, " 工序 arbpl LIKE crhd-arbpl, " 工作中心 ltxa1 LIKE plpo-ltxa1, " 工序描述 * bmsch LIKE plpo-bmsch, bmsch(17), " 基本数量 meinh LIKE plpo-meinh, " 工序单位 vgw01(17), " 人工 vge01 LIKE plpo-vge01, " 单位 vgw02(17), " 其它制费 vge02 LIKE plpo-vge02, vgw03(17), " 电 vge03 LIKE plpo-vge03, vgw04(17), " 蒸汽 vge04 LIKE plpo-vge04, vgw05(17), " 天然气 vge05 LIKE plpo-vge05, seq TYPE I, maktx LIKE makt-maktx, ktext LIKE plko-ktext, " 任务清单描述(版本描述) status(10), message TYPE string, tabix TYPE I, " 内部序号,仅供程序使用 END OF gt_upload. DATA: gs_upload LIKE LINE OF gt_upload. FIELD-SYMBOLS: <fs_upload> LIKE gs_upload. DATA: gv_flag, " 是否可上载标识 gv_commit. " 重复提交标识 ********************************************************************** * ALV Variable ********************************************************************** DATA: gt_fieldcat TYPE slis_t_fieldcat_alv, gt_sort TYPE slis_t_sortinfo_alv, gs_fieldcat LIKE LINE OF gt_fieldcat, gs_layout TYPE slis_layout_alv. ********************************************************************** * Macro Definition ********************************************************************** DEFINE def_fieldcat. CLEAR gs_fieldcat. gs_fieldcat-fieldname = &1. " fieldname gs_fieldcat-seltext_s = &2. " description gs_fieldcat-seltext_m = &2. gs_fieldcat-seltext_l = &2. gs_fieldcat-key = &3. " key column gs_fieldcat-outputlen = &4. " output length gs_fieldcat-no_zero = &5. " no zero gs_fieldcat-do_sum = &6. " sum gs_fieldcat-ref_tabname = &7. " reference table gs_fieldcat-ref_fieldname = &8. " reference field APPEND gs_fieldcat TO gt_fieldcat. END-OF-DEFINITION. CONSTANTS c_default_filename TYPE string VALUE 'C:/route v1.0.xls'. SELECTION-SCREEN FUNCTION KEY 1. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. PARAMETERS: p_fname TYPE string, p_sline TYPE I DEFAULT 2 OBLIGATORY. SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002. PARAMETERS: p_datuv TYPE datuv. SELECTION-SCREEN END OF BLOCK b2. INITIALIZATION. PERFORM initial_data. AT SELECTION-SCREEN. PERFORM template_download. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname. PERFORM f4_for_file_name. START-OF-SELECTION. PERFORM check_input. PERFORM get_data. PERFORM process_data. PERFORM display_data. FORM check_input. IF p_fname IS INITIAL. MESSAGE TEXT-E02 TYPE 'S' DISPLAY LIKE 'E'. STOP. ENDIF. ENDFORM. FORM get_data. PERFORM read_excel_to_table. PERFORM check_authority. ENDFORM. FORM process_data. DATA: lv_msg TYPE STRING. DATA: BEGIN OF lt_exist OCCURS 0, matnr LIKE marc-matnr, werks LIKE marc-werks, END OF lt_exist. SELECT matnr werks INTO TABLE lt_exist FROM marc FOR ALL ENTRIES IN gt_upload WHERE matnr EQ gt_upload-matnr AND werks EQ gt_upload-werks. SORT lt_exist BY matnr werks. LOOP AT gt_upload ASSIGNING <fs_upload>. <fs_upload>-status = icon_led_yellow. READ TABLE lt_exist WITH KEY matnr = <fs_upload>-matnr werks = <fs_upload>-werks BINARY SEARCH. IF sy-subrc NE 0. <fs_upload>-status = icon_led_red. CLEAR lv_msg. lv_msg = TEXT-E09 && <fs_upload>-werks && TEXT-E10 && <fs_upload>-matnr. <fs_upload>-MESSAGE = lv_msg. gv_flag = 'X'. CONTINUE. ENDIF. ENDLOOP. ENDFORM. FORM display_data. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING text = TEXT-S02. CLEAR: gs_layout,gt_fieldcat[]. PERFORM frm_set_layout. PERFORM frm_set_fieldcat. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' i_callback_program = sy-repid i_callback_pf_status_set = 'FRM_PF_STATUS' i_callback_user_command = 'FRM_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 = gs_layout it_fieldcat = gt_fieldcat * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * it_sort = gt_sort * IT_FILTER = * IS_SEL_HIDE = i_default = 'X' i_save = 'A' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = gt_upload EXCEPTIONS program_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. ENDFORM. FORM save_upload_data. DATA: lt_task TYPE TABLE OF bapi1012_tsk_c WITH HEADER LINE, lt_matnr_alloc TYPE TABLE OF bapi1012_mtk_c WITH HEADER LINE, lt_oper TYPE TABLE OF bapi1012_opr_c WITH HEADER LINE, lt_return TYPE TABLE OF bapiret2 WITH HEADER LINE, lv_result, lv_msg TYPE string, lv_from TYPE I, lv_to TYPE I, lv_tabix TYPE sy-tabix. DATA: lv_group LIKE mapl-plnnr. " 组 * DATA: BEGIN OF lt_mara OCCURS 0, * matnr LIKE mara-matnr, * meins LIKE mara-meins, * END OF lt_mara. DATA: BEGIN OF lt_mapl OCCURS 0, matnr LIKE mapl-matnr, werks LIKE mapl-werks, plnnr LIKE mapl-plnnr, END OF lt_mapl. SORT gt_upload BY werks matnr plnal vornr. IF gt_upload[] IS NOT INITIAL. * SELECT DISTINCT matnr meins INTO TABLE lt_mara * FROM mara * FOR ALL ENTRIES IN gt_upload * WHERE matnr EQ gt_upload-matnr. * SORT lt_mara BY matnr. SELECT matnr werks plnnr INTO TABLE lt_mapl FROM mapl FOR ALL ENTRIES IN gt_upload WHERE matnr EQ gt_upload-matnr AND werks EQ gs_upload-werks AND plnty EQ 'N'. SORT lt_mapl BY matnr werks. ENDIF. LOOP AT gt_upload. gs_upload = gt_upload. lv_tabix = sy-tabix. AT NEW plnal. lv_from = lv_tabix. CLEAR lt_task. READ TABLE lt_mapl WITH KEY matnr = gs_upload-matnr werks = gs_upload-werks BINARY SEARCH. IF sy-subrc EQ 0. lt_task-task_list_group = lt_mapl-plnnr. ENDIF. * lt_task-group_counter = gs_upload-plnal. " 自动产生组计数器 IF p_datuv IS NOT INITIAL. lt_task-valid_from = p_datuv. ELSE. lt_task-valid_from = sy-datum. ENDIF. lt_task-task_list_usage = '1'. lt_task-plant = gs_upload-werks. lt_task-task_list_status = '4'. lt_task-description = gs_upload-ktext. * READ TABLE lt_mara WITH KEY matnr = gs_upload-matnr BINARY SEARCH. * IF sy-subrc EQ 0. * lt_task-task_measure_unit = lt_mara-meins. * ENDIF. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING INPUT = gs_upload-meinh IMPORTING OUTPUT = gs_upload-meinh EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. lt_task-task_measure_unit = gs_upload-meinh. APPEND lt_task. CLEAR lt_matnr_alloc. lt_matnr_alloc-material = gs_upload-matnr. lt_matnr_alloc-plant = gs_upload-werks. READ TABLE lt_mapl WITH KEY matnr = gs_upload-matnr werks = gs_upload-werks BINARY SEARCH. IF sy-subrc EQ 0. lt_matnr_alloc-task_list_group = lt_mapl-plnnr. ENDIF. * lt_matnr_alloc-group_counter = gs_upload-plnal. IF p_datuv IS NOT INITIAL. lt_matnr_alloc-valid_from = p_datuv. ELSE. lt_matnr_alloc-valid_from = sy-datum. ENDIF. APPEND lt_matnr_alloc. ENDAT. CLEAR lt_oper. READ TABLE lt_mapl WITH KEY matnr = gs_upload-matnr werks = gs_upload-werks BINARY SEARCH. IF sy-subrc EQ 0. lt_oper-task_list_group = lt_mapl-plnnr. ENDIF. * lt_oper-group_counter = gs_upload-plnal. IF p_datuv IS NOT INITIAL. lt_oper-valid_from = p_datuv. ELSE. lt_oper-valid_from = sy-datum. ENDIF. lt_oper-activity = gs_upload-vornr. lt_oper-work_cntr = gs_upload-arbpl. * lt_oper-control_key = . " 由工作中心自动带出 lt_oper-plant = gs_upload-werks. lt_oper-description = gs_upload-ltxa1. lt_oper-operation_measure_unit = lt_task-task_measure_unit. lt_oper-base_quantity = gs_upload-bmsch. lt_oper-denominator = 1. " 分母,必输 lt_oper-nominator = 1. lt_oper-cost_relevant = 'X'. lt_oper-ind_splitting_reqrd = 'X'. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING INPUT = gs_upload-vge01 IMPORTING OUTPUT = gs_upload-vge01 EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. lt_oper-std_unit_01 = gs_upload-vge01. lt_oper-std_value_01 = gs_upload-vgw01. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING INPUT = gs_upload-vge02 IMPORTING OUTPUT = gs_upload-vge02 EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. lt_oper-std_unit_02 = gs_upload-vge02. lt_oper-std_value_02 = gs_upload-vgw02. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING INPUT = gs_upload-vge03 IMPORTING OUTPUT = gs_upload-vge03 EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. lt_oper-std_unit_03 = gs_upload-vge03. lt_oper-std_value_03 = gs_upload-vgw03. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING INPUT = gs_upload-vge04 IMPORTING OUTPUT = gs_upload-vge04 EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. lt_oper-std_unit_04 = gs_upload-vge04. lt_oper-std_value_04 = gs_upload-vgw04. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING INPUT = gs_upload-vge05 IMPORTING OUTPUT = gs_upload-vge05 EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. lt_oper-std_unit_05 = gs_upload-vge05. lt_oper-std_value_05 = gs_upload-vgw05. APPEND lt_oper. AT END OF plnal. lv_to = lv_tabix. CALL FUNCTION 'BAPI_ROUTING_CREATE' * EXPORTING * TESTRUN = ' ' * PROFILE = * BOMUSAGE = ' ' * APPLICATION = ' ' * IMPORTING * GROUP = * GROUPCOUNTER = TABLES TASK = lt_task MATERIALTASKALLOCATION = lt_matnr_alloc * SEQUENCE = OPERATION = lt_oper * SUBOPERATION = * REFERENCEOPERATION = * WORKCENTERREFERENCE = * COMPONENTALLOCATION = * PRODUCTIONRESOURCE = * INSPCHARACTERISTIC = * TEXTALLOCATION = * TEXT = RETURN = lt_return. REFRESH: lt_task,lt_matnr_alloc,lt_oper. CLEAR lv_result. LOOP AT lt_return WHERE TYPE = 'E' OR TYPE = 'A'. lv_result = 'X'. EXIT. ENDLOOP. IF lv_result EQ 'X'. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING ID = lt_return-ID LANG = SY-LANGU NO = lt_return-number V1 = lt_return-message_v1 V2 = lt_return-message_v2 V3 = lt_return-message_v3 V4 = lt_return-message_v4 IMPORTING MSG = lv_msg EXCEPTIONS NOT_FOUND = 1 OTHERS = 2. CLEAR gs_upload. gs_upload-status = icon_led_red. MODIFY gt_upload FROM gs_upload TRANSPORTING status WHERE tabix BETWEEN lv_from AND lv_to. gs_upload-message = lv_msg. MODIFY gt_upload FROM gs_upload INDEX lv_from TRANSPORTING message. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. gv_commit = 'X'. READ TABLE lt_return WITH KEY TYPE = 'S'. CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING ID = lt_return-ID LANG = SY-LANGU NO = lt_return-number V1 = lt_return-message_v1 V2 = lt_return-message_v2 V3 = lt_return-message_v3 V4 = lt_return-message_v4 IMPORTING MSG = lv_msg EXCEPTIONS NOT_FOUND = 1 OTHERS = 2. CLEAR gs_upload. gs_upload-status = icon_led_green. MODIFY gt_upload FROM gs_upload TRANSPORTING status WHERE tabix BETWEEN lv_from AND lv_to. gs_upload-message = lv_msg. MODIFY gt_upload FROM gs_upload INDEX lv_from TRANSPORTING message. ENDIF. ENDAT. ENDLOOP. ENDFORM. FORM frm_user_command USING VALUE(pv_ucomm) LIKE sy-ucomm pr_selfield TYPE slis_selfield. CASE pv_ucomm. WHEN 'BUILD'. IF gv_flag IS INITIAL. IF gv_commit EQ 'X'. MESSAGE TEXT-E17 TYPE 'E'. EXIT. ENDIF. PERFORM save_upload_data. pr_selfield-refresh = 'X'. SET USER-COMMAND '&OPT'. ELSE. MESSAGE TEXT-E12 TYPE 'E'. EXIT. ENDIF. WHEN OTHERS. ENDCASE. ENDFORM. FORM frm_pf_status USING pr_extab TYPE slis_t_extab. SET PF-STATUS 'STANDARD_UPLOAD' EXCLUDING pr_extab. ENDFORM. FORM frm_set_fieldcat. def_fieldcat 'STATUS' TEXT-A01 '' '4' '' '' '' ''. def_fieldcat 'MESSAGE' TEXT-A02 '' '20' '' '' '' ''. def_fieldcat 'SEQ' TEXT-A12 '' '3' '' '' '' ''. def_fieldcat 'WERKS' TEXT-A03 '' '4' '' '' '' ''. def_fieldcat 'MATNR' TEXT-A04 '' '18' 'X' '' '' ''. def_fieldcat 'MAKTX' TEXT-A05 '' '' '' '' '' ''. def_fieldcat 'PLNAL' TEXT-A06 '' '2' '' '' '' ''. def_fieldcat 'KTEXT' TEXT-A19 '' '' '' '' '' ''. def_fieldcat 'VORNR' TEXT-A07 '' '4' '' '' '' ''. def_fieldcat 'ARBPL' TEXT-A08 '' '8' '' '' '' ''. def_fieldcat 'LTXA1' TEXT-A09'' '' '' '' '' ''. def_fieldcat 'BMSCH' TEXT-A10 '' '' '' '' '' ''. def_fieldcat 'MEINH' TEXT-A11 '' '3' '' '' '' ''. def_fieldcat 'VGW01' TEXT-A13 '' '' '' '' '' ''. def_fieldcat 'VGE01' TEXT-A14 '' '' '' '' '' ''. def_fieldcat 'VGW02' TEXT-A15 '' '' '' '' '' ''. def_fieldcat 'VGE02' TEXT-A14 '' '' '' '' '' ''. def_fieldcat 'VGW03' TEXT-A16 '' '' '' '' '' ''. def_fieldcat 'VGE03' TEXT-A14 '' '' '' '' '' ''. def_fieldcat 'VGW04' TEXT-A17 '' '' '' '' '' ''. def_fieldcat 'VGE04' TEXT-A14 '' '' '' '' '' ''. def_fieldcat 'VGW05' TEXT-A18 '' '' '' '' '' ''. def_fieldcat 'VGE05' TEXT-A14 '' '' '' '' '' ''. ENDFORM. FORM frm_set_layout. gs_layout-zebra = 'X'. gs_layout-colwidth_optimize = 'X'. * gs_layout-box_fieldname = 'SEL'. ENDFORM. FORM read_excel_to_table. DATA: lv_filename TYPE rlgrap-filename, lt_excel TYPE TABLE OF alsmex_tabline, ls_excel LIKE LINE OF lt_excel, lv_tabix TYPE I. lv_filename = p_fname. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = lv_filename i_begin_col = 1 i_begin_row = p_sline i_end_col = 256 i_end_row = 65535 TABLES intern = lt_excel EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. SORT lt_excel BY row col. LOOP AT lt_excel INTO ls_excel. CASE ls_excel-col. WHEN 1. gs_upload-seq = ls_excel-value. WHEN 2. gs_upload-werks = ls_excel-value. CONDENSE gs_upload-werks NO-GAPS. WHEN 3. gs_upload-matnr = ls_excel-VALUE. CONDENSE gs_upload-matnr. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = gs_upload-matnr IMPORTING OUTPUT = gs_upload-matnr. WHEN 4. gs_upload-maktx = ls_excel-value. CONDENSE gs_upload-maktx. WHEN 5. gs_upload-plnal = ls_excel-value. CONDENSE gs_upload-plnal NO-GAPS. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = gs_upload-plnal IMPORTING OUTPUT = gs_upload-plnal. WHEN 6. gs_upload-ktext = ls_excel-value. CONDENSE gs_upload-ktext. WHEN 7. gs_upload-vornr = ls_excel-value. CONDENSE gs_upload-vornr NO-GAPS. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = gs_upload-vornr IMPORTING OUTPUT = gs_upload-vornr. WHEN 8. gs_upload-arbpl = ls_excel-value. CONDENSE gs_upload-arbpl NO-GAPS. WHEN 9. gs_upload-ltxa1 = ls_excel-value. CONDENSE gs_upload-ltxa1. WHEN 10. gs_upload-bmsch = ls_excel-value. CONDENSE gs_upload-bmsch NO-GAPS. WHEN 11. gs_upload-meinh = ls_excel-value. CONDENSE gs_upload-meinh NO-GAPS. WHEN 12. gs_upload-vgw01 = ls_excel-value. CONDENSE gs_upload-vgw01 NO-GAPS. WHEN 13. gs_upload-vge01 = ls_excel-value. CONDENSE gs_upload-vge01 NO-GAPS. WHEN 14. gs_upload-vgw02 = ls_excel-value. CONDENSE gs_upload-vgw02 NO-GAPS. WHEN 15. gs_upload-vge02 = ls_excel-value. CONDENSE gs_upload-vge02 NO-GAPS. WHEN 16. gs_upload-vgw03 = ls_excel-value. CONDENSE gs_upload-vgw03 NO-GAPS. WHEN 17. gs_upload-vge03 = ls_excel-value. CONDENSE gs_upload-vge03 NO-GAPS. WHEN 18. gs_upload-vgw04 = ls_excel-value. CONDENSE gs_upload-vgw04 NO-GAPS. WHEN 19. gs_upload-vge04 = ls_excel-value. CONDENSE gs_upload-vge04 NO-GAPS. WHEN 20. gs_upload-vgw05 = ls_excel-value. CONDENSE gs_upload-vgw05 NO-GAPS. WHEN 21. gs_upload-vge05 = ls_excel-value. CONDENSE gs_upload-vge05 NO-GAPS. ENDCASE. AT END OF row. lv_tabix = lv_tabix + 1. gs_upload-tabix = lv_tabix. APPEND gs_upload TO gt_upload. CLEAR gs_upload. ENDAT. CLEAR ls_excel. ENDLOOP. ENDFORM. FORM check_authority. DATA: BEGIN OF lt_werks OCCURS 0, werks TYPE werks_d, END OF lt_werks. DATA: lv_msg TYPE STRING. IF gt_upload[] IS INITIAL. MESSAGE TEXT-E06 TYPE 'S' DISPLAY LIKE 'E'. STOP. ENDIF. LOOP AT gt_upload INTO gs_upload. lt_werks-werks = gs_upload-werks. COLLECT lt_werks. ENDLOOP. LOOP AT lt_werks. AUTHORITY-CHECK OBJECT 'C_ROUT' ID 'ACTVT' DUMMY ID 'PLNTY' DUMMY ID 'WERKS' FIELD lt_werks-werks ID 'STATU' DUMMY ID 'VERWE' DUMMY. IF sy-subrc NE 0. lv_msg = TEXT-E07 && lt_werks-werks && TEXT-E08. MESSAGE lv_msg TYPE 'S' DISPLAY LIKE 'E'. STOP. ENDIF. ENDLOOP. ENDFORM. FORM initial_data. DATA: ls_textfield LIKE smp_dyntxt. ls_textfield-text = TEXT-T02. ls_textfield-icon_id = icon_xls. ls_textfield-icon_text = TEXT-T01. ls_textfield-quickinfo = TEXT-T02. sscrfields-functxt_01 = ls_textfield. ENDFORM. FORM template_download. DATA: ls_key TYPE wwwdatatab, lv_filename TYPE STRING, lv_path TYPE STRING, lv_fullpath TYPE STRING, lv_destinat LIKE rlgrap-filename, lv_action TYPE I, lv_rc TYPE I, lv_file_name TYPE string. CHECK sy-ucomm EQ 'FC01'. lv_file_name = c_default_filename. CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING default_file_name = lv_file_name file_filter = cl_gui_frontend_services=>filetype_excel CHANGING filename = lv_filename path = lv_path fullpath = lv_fullpath user_action = lv_action EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. CHECK lv_action EQ cl_gui_frontend_services=>action_ok. ls_key-relid = 'MI'. ls_key-objid = 'ZPPC001'. lv_destinat = lv_fullpath. CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING key = ls_key destination = lv_destinat IMPORTING rc = lv_rc. IF lv_rc EQ 0. MESSAGE S398(00) WITH TEXT-S01. ELSE. MESSAGE E398(00) WITH TEXT-E01. ENDIF. ENDFORM. FORM f4_for_file_name. DATA: lv_title TYPE string, lt_file TYPE filetable, ls_file TYPE LINE OF filetable, lv_rc TYPE i, lv_filename TYPE string. lv_title = TEXT-B01. lv_filename = c_default_filename. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = lv_title default_extension = cl_gui_frontend_services=>filetype_excel default_filename = lv_filename file_filter = cl_gui_frontend_services=>filetype_excel initial_directory = 'C:/' multiselection = space CHANGING file_table = lt_file rc = lv_rc EXCEPTIONS file_open_dialog_failed = 1 cntl_error = 2 error_no_gui = 3 not_supported_by_gui = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. CHECK sy-subrc = 0. READ TABLE lt_file INTO ls_file INDEX 1. p_fname = ls_file-filename. ENDFORM.
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18697.html