*&---------------------------------------------------------------------* *& Report ZTEST16 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ztest16. TYPE-POOLS: trwbo, stms. DATA: es_selected_request TYPE trwbo_request_header, es_selected_task TYPE trwbo_request_header, iv_organizer_type TYPE trwbo_calling_organizer, is_selection TYPE trwbo_selection. DATA: folder TYPE string , flag TYPE c , dir_trans TYPE text255 , path2 TYPE text255 , localfolder(128) TYPE c , upfilename(11) TYPE c. DATA: lt_request TYPE stms_tr_requests, lt_tp_maintain TYPE stms_tp_maintains. DATA: et_request_infos TYPE stms_wbo_requests, request_info TYPE stms_wbo_request, request LIKE e070-trkorr. DATA: BEGIN OF it_memo OCCURS 0 , line(255) TYPE c, END OF it_memo. DATA: error LIKE boole-boole , err_txt(100) TYPE c . SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1. PARAMETERS: download RADIOBUTTON GROUP typ USER-COMMAND sele DEFAULT 'X'. PARAMETERS: upload RADIOBUTTON GROUP typ. SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2. PARAMETERS: p_file(255) TYPE c LOWER CASE MODIF ID m2, p_client LIKE tmsbuffer-tarcli DEFAULT sy-mandt MATCHCODE OBJECT h_t000 MODIF ID m2. SELECTION-SCREEN END OF BLOCK b2. SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE t3. PARAMETERS:p_reqnum TYPE trkorr MODIF ID m3, p_folder LIKE rlgrap-filename DEFAULT 'C:\' LOWER CASE MODIF ID m3 , p_memo(255) TYPE c MODIF ID m3. SELECTION-SCREEN END OF BLOCK b3. INITIALIZATION. t1 = '选择功能'. t2 = '上传参数'. t3 = '下载参数'. IF sy-opsys = 'Windows NT'. flag = '\'. ELSE. flag = '/'. ENDIF. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_reqnum. iv_organizer_type = 'W'. is_selection-reqstatus = 'R'. CALL FUNCTION 'TR_PRESENT_REQUESTS_SEL_POPUP' EXPORTING iv_organizer_type = iv_organizer_type is_selection = is_selection IMPORTING es_selected_request = es_selected_request es_selected_task = es_selected_task. p_reqnum = es_selected_request-trkorr. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_folder. CALL METHOD cl_gui_frontend_services=>directory_browse CHANGING selected_folder = folder EXCEPTIONS cntl_error = 1 error_no_gui = 2 OTHERS = 3. p_folder = folder. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. DATA: file TYPE file_table, rc TYPE i, file_table TYPE filetable, file_filter TYPE string VALUE '(K*.*)|K*.*||'. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING file_filter = file_filter CHANGING file_table = file_table rc = 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. READ TABLE file_table INTO file INDEX 1. p_file = file. AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. CASE screen-group1. WHEN 'M2'. IF download = 'X'. screen-active = '0'. ELSE. screen-active = '1'. ENDIF. WHEN 'M3'. IF download = 'X'. screen-active = '1'. ELSE. screen-active = '0'. ENDIF. ENDCASE. MODIFY SCREEN. ENDLOOP. START-OF-SELECTION. CALL FUNCTION 'RSPO_R_SAPGPARAM' EXPORTING name = 'DIR_TRANS' IMPORTING value = dir_trans EXCEPTIONS error = 0 OTHERS = 0. IF download = 'X'. IF p_reqnum = '' OR p_folder = ''. MESSAGE '必须输入请求号和地址' TYPE 'I'. EXIT. ENDIF. PERFORM downloadrequest. ELSE. IF p_client = '' OR p_file = '' . MESSAGE '必须输入文件名和Client' TYPE 'I'. EXIT. ENDIF. PERFORM uploadrequest. PERFORM addrequest. ENDIF. *&---------------------------------------------------------------------* *& Form DOWNLOADREQUEST *&---------------------------------------------------------------------* FORM downloadrequest . CONCATENATE p_reqnum+3(7) '.' p_reqnum(3) INTO p_reqnum. CONCATENATE dir_trans 'cofiles' p_reqnum INTO path2 SEPARATED BY flag. CONCATENATE p_folder '\' p_reqnum INTO localfolder. PERFORM down_file USING path2 localfolder . p_reqnum(1) = 'R'. CONCATENATE dir_trans 'data' p_reqnum INTO path2 SEPARATED BY flag. CONCATENATE p_folder '\' p_reqnum INTO localfolder. PERFORM down_file USING path2 localfolder . IF p_memo <> ''. DATA str TYPE string. it_memo-line = p_memo. APPEND it_memo. p_reqnum(1) = 'K'. p_reqnum+8(3) = 'TXT'. CONCATENATE p_folder '\' p_reqnum INTO localfolder. str = localfolder . CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = str TABLES data_tab = it_memo. ENDIF. MESSAGE '成功下载!' TYPE 'I'. ENDFORM. " DOWNLOADREQUEST *&--------------------------------------------------------------------* *& Form DOWN_FILE *&--------------------------------------------------------------------* FORM down_file USING p_path file_name . DATA: path LIKE rcgfiletr-ftappl . DATA: localfile LIKE rcgfiletr-ftfront. path = p_path . localfile = file_name . CLEAR:error,err_txt. CALL FUNCTION 'C13Z_FILE_DOWNLOAD_BINARY' EXPORTING i_file_front_end = localfile i_file_appl = path i_file_overwrite = 'X' IMPORTING e_flg_open_error = error e_os_message = err_txt EXCEPTIONS fe_file_open_error = 1 fe_file_exists = 2 fe_file_write_error = 3 ap_no_authority = 4 ap_file_open_error = 5 ap_file_empty = 6 OTHERS = 7. IF sy-subrc <> 0. IF sy-msgty = '' . sy-msgty = 'E' . ENDIF . MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. IF error = 'X'. MESSAGE err_txt TYPE 'I'. STOP. ENDIF. ENDFORM. " DOWN_FILE *&--------------------------------------------------------------------* *& Form UP_FILE *&--------------------------------------------------------------------* FORM up_file USING p_path file_name . DATA: path LIKE rcgfiletr-ftappl . DATA: localfile LIKE rcgfiletr-ftfront. path = p_path . localfile = file_name . CLEAR:error,err_txt. CALL FUNCTION 'C13Z_FILE_UPLOAD_BINARY' EXPORTING i_file_front_end = localfile i_file_appl = path i_file_overwrite = 'X' IMPORTING e_flg_open_error = error e_os_message = err_txt EXCEPTIONS fe_file_not_exists = 1 fe_file_read_error = 2 ap_no_authority = 3 ap_file_open_error = 4 ap_file_exists = 5 OTHERS = 6. IF sy-subrc <> 0. IF sy-msgty = '' . sy-msgty = 'E' . ENDIF . MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. IF error = 'X'. MESSAGE err_txt TYPE 'I'. STOP. ENDIF. * IF sy-subrc <> 0. * CASE sy-subrc . * WHEN 1 . * MESSAGE '本地文件不存在!' TYPE 'I' . * WHEN 2 . * MESSAGE '读取本地文件出错!' TYPE 'I' . * WHEN 3 . * MESSAGE '服务器权限错误!' TYPE 'I' . * WHEN 4 . * MESSAGE '服务器文件打开错误!' TYPE 'I' . * WHEN 5 . * MESSAGE '服务器文件已经存在!' TYPE 'I' . * WHEN 6 . * MESSAGE '其他错误!' TYPE 'I' . * ENDCASE . * ENDIF. ENDFORM. "UP_FILE *&---------------------------------------------------------------------* *& Form UPLOADREQUEST *&---------------------------------------------------------------------* FORM uploadrequest . DATA: filename LIKE sdbah-actid , extension LIKE sdbad-funct, n TYPE i , m TYPE i . CALL FUNCTION 'SPLIT_FILENAME' EXPORTING long_filename = p_file IMPORTING pure_filename = filename pure_extension = extension. CONCATENATE filename '.' extension INTO upfilename . CONCATENATE extension filename INTO request. CONCATENATE dir_trans 'cofiles' upfilename INTO path2 SEPARATED BY flag. PERFORM up_file USING path2 p_file . upfilename(1) = 'R'. CONCATENATE dir_trans 'data' upfilename INTO path2 SEPARATED BY flag. n = STRLEN( p_file ). m = n - 11 . p_file+m(1) = 'R'. PERFORM up_file USING path2 p_file . ENDFORM. " UPLOADREQUEST *&---------------------------------------------------------------------* *& Form addrequest *&---------------------------------------------------------------------* FORM addrequest . DATA system LIKE tmscsys-sysnam . system = sy-sysid. CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN' EXPORTING iv_adminfunction = 'TADD' EXCEPTIONS e_no_authority = 1 e_invalid_user = 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. EXIT. ENDIF. CALL FUNCTION 'TMS_UI_APPEND_TR_REQUEST' EXPORTING iv_system = system iv_request = request iv_expert_mode = 'X' iv_ctc_active = 'X' EXCEPTIONS cancelled_by_user = 1 append_request_failed = 2 OTHERS = 3. CHECK sy-subrc = 0. CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST' EXPORTING iv_request = request iv_target_system = system IMPORTING et_request_infos = et_request_infos EXCEPTIONS read_config_failed = 1 table_of_requests_is_empty = 2 system_not_available = 3 OTHERS = 4. CLEAR request_info. READ TABLE et_request_infos INTO request_info INDEX 1. IF request_info-e070-korrdev = 'CUST' AND NOT p_client IS INITIAL. CALL FUNCTION 'TMS_MGR_MAINTAIN_TR_QUEUE' EXPORTING iv_command = 'FILLCLIENT' iv_system = system iv_request = request iv_tarcli = p_client iv_monitor = 'X' iv_verbose = 'X' IMPORTING et_tp_maintains = lt_tp_maintain EXCEPTIONS read_config_failed = 1 table_of_requests_is_empty = 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. EXIT. ENDIF. ENDIF. CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN' EXPORTING iv_adminfunction = 'IMPS' EXCEPTIONS e_no_authority = 1 e_invalid_user = 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. EXIT. ENDIF. CALL FUNCTION 'TMS_UI_IMPORT_TR_REQUEST' EXPORTING iv_system = system iv_request = request iv_tarcli = p_client iv_some_active = space EXCEPTIONS cancelled_by_user = 1 import_request_denied = 2 import_request_failed = 3 OTHERS = 4. ENDFORM. " addrequest