- REPORT zprg_file_sar LINE-SIZE 1023.
- PARAMETERS: p_file TYPE file_name LOWER CASE OBLIGATORY DEFAULT '',
- r_01 RADIOBUTTON GROUP rdir DEFAULT 'X',
- r_02 RADIOBUTTON GROUP rdir,
- p_find TYPE as4text LOWER CASE OBLIGATORY,
- p_repl TYPE as4text LOWER CASE OBLIGATORY,
- p_bak AS CHECKBOX DEFAULT 'X',
- p_pc AS CHECKBOX DEFAULT ' ',
- p_test AS CHECKBOX DEFAULT 'X'.
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
- PERFORM help_me.
- INITIALIZATION.
- end-of-SELECTION.
- IF r_02 = abap_true or p_file ca '*'.
- PERFORM find_files USING p_file.
- ELSE.
- PERFORM hard_work USING p_file.
- ENDIF.
- FORM help_me.
- DATA: lv_file TYPE file_name.
- lv_file = p_file.
- CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
- EXPORTING
- directory = lv_file
- filemask = '*.*'
- IMPORTING
- serverfile = p_file
- EXCEPTIONS
- canceled_by_user = 1
- OTHERS = 2.
- IF sy-subrc <> 0.
- * Implement suitable error handling here
- ENDIF.
- ENDFORM.
- FORM find_files USING p_file.
- DATA: p_dir TYPE epsf-epsdirnam,
- t_file TYPE STANDARD TABLE OF epsfili,
- l_mask type EPSF-EPSFILNAM.
- p_dir = p_file.
- l_mask = '*.*'.
- if p_dir ca '*'.
- DATA: l_my_file TYPE file_name,
- l_file_path type file_name.
- CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH'
- EXPORTING
- full_name = p_dir
- IMPORTING
- stripped_name = l_my_file
- FILE_PATH = l_file_path
- EXCEPTIONS
- x_error = 1
- OTHERS = 2.
- if sy-subrc eq 0 and
- not l_my_file is INITIAL and
- not l_file_path is initial.
- p_dir = l_file_path.
- l_mask = l_my_file.
- else.
- exit.
- endif.
- endif.
- CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING'
- EXPORTING
- dir_name = p_dir
- file_mask = l_mask
- * IMPORTING
- * DIR_NAME =
- * FILE_COUNTER =
- * ERROR_COUNTER =
- TABLES
- dir_list = t_file
- EXCEPTIONS
- invalid_eps_subdir = 1
- sapgparam_failed = 2
- build_directory_failed = 3
- no_authorization = 4
- read_directory_failed = 5
- too_many_read_errors = 6
- empty_directory_list = 7
- OTHERS = 8.
- if sy-subrc eq 0.
- LOOP AT t_file INTO DATA(l_file).
- CONCATENATE p_dir '/' l_file-name INTO DATA(l_new_file).
- DO 2 TIMES.
- REPLACE ALL OCCURRENCES OF '//' IN l_new_file WITH '/'.
- ENDDO.
- PERFORM hard_work USING l_new_file.
- ENDLOOP.
- else.
- WRITE: / sy-datum, sy-uzeit, 'No se han encontrado ficheros', l_mask, 'en', p_dir.
- endif.
- ENDFORM.
- FORM hard_work USING p_fil.
- DATA: l_s TYPE string,
- t_s TYPE STANDARD TABLE OF string,
- t_bak TYPE STANDARD TABLE OF string,
- l_found TYPE xfeld.
- CLEAR l_found.
- WRITE: / sy-datum, sy-uzeit, 'Abriendo', p_fil.
- OPEN DATASET p_fil FOR INPUT IN TEXT MODE ENCODING DEFAULT.
- IF sy-subrc EQ 0.
- DO.
- READ DATASET p_fil INTO l_s.
- IF sy-subrc NE 0.
- EXIT.
- ENDIF.
- DATA(l_bak) = l_s.
- FIND p_find IN l_s.
- IF sy-subrc EQ 0.
- l_found = abap_true.
- REPLACE ALL OCCURRENCES OF p_find IN l_s WITH p_repl.
- ENDIF.
- APPEND l_bak TO t_bak.
- APPEND l_s TO t_s.
- ENDDO.
- IF l_found = abap_true.
- IF NOT p_bak IS INITIAL.
- LOOP AT t_bak INTO l_s.
- AT FIRST.
- WRITE: / '** INICIO Backup', p_fil.
- ENDAT.
- WRITE: / l_s.
- AT LAST.
- WRITE: / '** FIN Backup', p_fil.
- ENDAT.
- ENDLOOP.
- ENDIF.
- IF NOT p_pc IS INITIAL.
- DATA: l_my_file TYPE file_name.
- CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH'
- EXPORTING
- full_name = p_fil
- IMPORTING
- stripped_name = l_my_file
- * FILE_PATH =
- EXCEPTIONS
- x_error = 1
- OTHERS = 2.
- IF sy-subrc ne 0.
- WRITE: / sy-datum, sy-uzeit, 'Error al descargar', p_fil, ', se cancela operación.'.
- else.
- * Implement suitable error handling here
- l_s = l_my_file.
- DATA: ls_01 TYPE string,
- ls_02 TYPE string,
- ls_03 TYPE string.
- CALL METHOD cl_gui_frontend_services=>file_save_dialog
- EXPORTING
- window_title = 'Descargar fichero'
- * default_extension =
- default_file_name = l_s
- * with_encoding =
- * file_filter =
- * initial_directory =
- * prompt_on_overwrite = 'X'
- CHANGING
- filename = ls_01
- path = ls_02
- fullpath = ls_03
- * user_action =
- * file_encoding =
- EXCEPTIONS
- cntl_error = 1
- error_no_gui = 2
- not_supported_by_gui = 3
- invalid_default_file_name = 4
- OTHERS = 5.
- IF sy-subrc = 0.
- CALL METHOD cl_gui_frontend_services=>gui_download
- EXPORTING
- * bin_filesize =
- filename = ls_03
- filetype = 'ASC'
- * append = SPACE
- * write_field_separator = SPACE
- * header = '00'
- * trunc_trailing_blanks = SPACE
- * write_lf = 'X'
- * col_select = SPACE
- * col_select_mask = SPACE
- * dat_mode = SPACE
- * confirm_overwrite = SPACE
- * no_auth_check = SPACE
- * codepage = SPACE
- * ignore_cerr = ABAP_TRUE
- * replacement = '#'
- * write_bom = SPACE
- * trunc_trailing_blanks_eol = 'X'
- * wk1_n_format = SPACE
- * wk1_n_size = SPACE
- * wk1_t_format = SPACE
- * wk1_t_size = SPACE
- * show_transfer_status = 'X'
- * fieldnames =
- * write_lf_after_last_line = 'X'
- * virus_scan_profile = '/SCET/GUI_DOWNLOAD'
- * IMPORTING
- * filelength =
- CHANGING
- data_tab = t_bak
- EXCEPTIONS
- file_write_error = 1
- no_batch = 2
- gui_refuse_filetransfer = 3
- invalid_type = 4
- no_authority = 5
- unknown_error = 6
- header_not_allowed = 7
- separator_not_allowed = 8
- filesize_not_allowed = 9
- header_too_long = 10
- dp_error_create = 11
- dp_error_send = 12
- dp_error_write = 13
- unknown_dp_error = 14
- access_denied = 15
- dp_out_of_memory = 16
- disk_full = 17
- dp_timeout = 18
- file_not_found = 19
- dataprovider_exception = 20
- control_flush_error = 21
- not_supported_by_gui = 22
- error_no_gui = 23
- OTHERS = 24.
- ENDIF.
- ENDIF.
- ENDIF.
- IF p_test IS INITIAL.
- DELETE DATASET p_fil.
- WRITE: / sy-datum, sy-uzeit, 'Borrando', p_fil.
- OPEN DATASET p_fil FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
- WRITE: / sy-datum, sy-uzeit, 'Creando', p_fil.
- LOOP AT t_s INTO l_s.
- TRANSFER l_s TO p_fil.
- ENDLOOP.
- CLOSE DATASET p_fil.
- ELSE.
- WRITE: / sy-datum, sy-uzeit, 'Encontrado [', p_find, '] en', p_fil.
- ENDIF.
- ENDIF.
- ENDIF.
- ENDFORM.
Última modificación de la página el 03 October 2024 a las 09h56
Powered by
PmWiki