Template de programa para Subir, Bajar,
Borrar y mostrar Archivos del server.
REPORT zprog06.
* PANTALLA SELECCION
SELECTION-SCREEN BEGIN OF BLOCK sel00 WITH FRAME TITLE text-000. PARAMETERS: p_down RADIOBUTTON GROUP uno USER-COMMAND usr. "Bajar
PARAMETERS: p_up RADIOBUTTON GROUP uno. "Subir a Server PARAMETERS: p_del RADIOBUTTON GROUP uno. "Borrar de Serv er
PARAMETERS: p_show RADIOBUTTON GROUP uno. "Mostrar archiv os del server
SELECTION-SCREEN ULINE /1(77).
PARAMETERS: nombre(1024) DEFAULT 'archivo.txt',
server(1024) DEFAULT 'C:\usr\sap\mindsap', local(1024) DEFAULT 'C:\'.
SELECTION-SCREEN END OF BLOCK sel00. CONSTANTS: c_sepl VALUE '\'.
CONSTANTS: c_seps VALUE '\'.
* TABLA INTERNA
DATA: BEGIN OF ti_entrada OCCURS 0, campo(8000),
END OF ti_entrada.
* VARIABLES GLOBALES
DATA: w_location_s TYPE dxlocation, w_location_d TYPE dxlocation, ofile TYPE string,
AT SELECTION-SCREEN ON VALUE-REQUEST FOR local. PERFORM get_local CHANGING local.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR server. PERFORM get_server CHANGING server.
*************************** START-OF-SELECTION.
***************************
IF p_up = 'X'.
PERFORM subir_a_server. ENDIF.
IF p_down = 'X'. PERFORM bajar_a_pc. ENDIF.
* Opcion Oculta IF p_del = 'X'.
PERFORM borrar_del_server. ENDIF.
IF p_show = 'X'. SUBMIT rswatch0. ENDIF.
*&---* *& Include ZBPRE_016_SERVER_FRM
*&---*
*&---* *& Form SUBIR_A_SERVER
*&---* FORM subir_a_server .
IF nombre IS INITIAL.
MESSAGE 'Ingrese el Nombre del Archivo a Subir' TYPE 'I'. EXIT.
ENDIF.
IF local IS INITIAL.
MESSAGE 'Ingrese la ubicacion del archivo a Subir' TYPE 'I'. EXIT.
ENDIF.
IF server IS INITIAL.
MESSAGE 'Ingrese la ubicacion del server donde quiere subir el archivo'
CLEAR ofile.
CONCATENATE local c_sepl nombre INTO ofile.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = ofile filetype = 'ASC'
has_field_separator = ' '
header_length = 0
read_by_line = 'X' dat_mode = ' ' codepage = ' ' * IGNORE_CERR = ABAP_TRUE replacement = '#' check_bom = ' ' no_auth_check = ' ' * IMPORTING * FILELENGTH = * HEADER = TABLES data_tab = ti_entrada EXCEPTIONS file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17 .
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
CONCATENATE server c_seps nombre INTO server. TRANSLATE server TO LOWER CASE.
OPEN DATASET server FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT ti_entrada.
ENDLOOP.
CLOSE DATASET server.
MESSAGE 'Los datos fueron grabados en el server' TYPE 'S'. ENDFORM. " SUBIR_A_SERVER
*&---* *& Form BAJAR_A_PC
*&---* FORM bajar_a_pc .
IF nombre IS INITIAL.
MESSAGE 'Ingrese el Nombre del Archivo a Bajar' TYPE 'I'. EXIT.
ENDIF.
IF local IS INITIAL.
MESSAGE 'Ingrese la ubicacion Local para bajar el archivo' TYPE 'I'. EXIT.
ENDIF.
IF server IS INITIAL.
MESSAGE 'Ingrese la ubicacion del server donde esta el archivo a bajar'
TYPE 'I'. EXIT. ENDIF.
CLEAR dest_file.
CONCATENATE server c_seps nombre INTO server. TRANSLATE server TO LOWER CASE.
CONCATENATE local c_sepl nombre INTO dest_file. TRANSLATE dest_file TO LOWER CASE.
OPEN DATASET server FOR INPUT IN TEXT MODE ENCODING DEFAULT. IF sy-subrc = 0.
DO.
READ DATASET server INTO ti_entrada. IF sy-subrc <> 0.
EXIT. ELSE.
APPEND ti_entrada. CLEAR ti_entrada. ENDIF.
ENDDO.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filetype = 'ASC'
TABLES
data_tab = ti_entrada * FIELDNAMES =
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 OTHERS = 22. IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
CLOSE DATASET server. ELSE.
* MESSAGE 'No se puede abrir el archivo' TYPE 'I'. ENDIF.
ENDFORM. " BAJAR_A_PC
*&---* *& Form BORRAR_DEL_SERVER
*&---* FORM borrar_del_server .
IF nombre IS INITIAL.
MESSAGE 'Ingrese el Nombre del Archivo a Borrar del server' TYPE 'I'. EXIT.
ENDIF.
IF local IS INITIAL.
MESSAGE 'Ingrese la ubicacion del archivo a borrar' TYPE 'I'. EXIT.
ENDIF.
MESSAGE 'Ingrese la ubicacion del server de donde se quiere borrar el ar chivo' TYPE 'I'.
EXIT. ENDIF.
CONCATENATE server c_seps nombre INTO server. TRANSLATE server TO LOWER CASE.
DELETE DATASET server.
ENDFORM. " BORRAR_DEL_SERVER
*&---* *& Form VER_ARCHIVOS
*&---* * text
*---* * --> p1 text
* <-- p2 text
*---*
*&---* *& Form GET_LOCAL
*&---* * text
*---* * <--P_LOCAL text
*---* FORM get_local CHANGING p_local.
DATA: aux TYPE string.
aux = p_local.
CALL METHOD cl_gui_frontend_services=>directory_browse EXPORTING
window_title = 'Elegir Directorio Local'
initial_folder = 'C:\'
CHANGING
selected_folder = aux 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.
p_local = aux.
ENDFORM. " GET_LOCAL
*&---* *& Form GET_SERVER
* text
*---* * <--P_SERVER text
*---* FORM get_server CHANGING p_server.
CONSTANTS:
c_dir_serv TYPE fileintern VALUE 'C:\usr\sap\mindsap', c_loc_serv LIKE dxfields-location VALUE 'A'. DATA:
l_location LIKE dxfields-location, l_path LIKE dxfields-longpath.
l_location = c_loc_serv. l_path = c_dir_serv.
CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'
EXPORTING
i_location_flag = l_location i_server = ' '
i_path = l_path IMPORTING
o_path = l_path EXCEPTIONS
rfc_error = 1 error_with_gui = 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.