En el siguiente ejemplo veremos como mover un fichero de una carpeta, este ejemplo serviría tanto para ficheros locales como ficheros que estén el el servidor.
Utilizaremos la función GUI_UPLOAD para cargar el fichero en una tabla interna, OPEN DATASET para crear el fichero el la nueva ruta y GUI_DELETE_FILE para borrar el fichero de la ruta inicial.
Leer fichero con GUI_UPLOAD
Con la función GUI_UPLOAD leeremos el fichero y añadiremos el fichero en una tabla interna.
- Filename: Ruta y nombre del fichero (en este caso será C:\SAP\fichero_inicio.txt)
- Filetype: Tipo de fichero que queremos leer (En este caso al ser .txt utilizaremos el tipo DAT)
(*) Crearemos el tipo T_RECEPCION que se utilizará para crear la tabla interna LI_RECEPCION donde se almacenará el contenido del fichero
TYPES: BEGIN OF t_recepcion, line TYPE c, END OF t_recepcion. DATA: lv_filename TYPE string VALUE 'C:\SAP\fichero_inicio.txt', li_recepcion TYPE STANDARD TABLE OF t_recepcion. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = lv_ilename filetype = 'DAT' TABLES data_tab = li_recepcion 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. ENDIF.
Crear fichero en la nueva ruta con OPEN DATASET
Una vez tenemos el contenido del fichero en la tabla interna LI_RECEPCION, creamos un nuevo fichero en la ruta deseada y copiamos el contenido línea a línea.
DATA: lv_destino TYPE sapb-sappfad VALUE 'C:\SAP\Nuevo\fichero_fin.txt'. FIELD-SYMBOL: <fs_recepcion> LIKE LINE OF li_recepcion. OPEN DATASET lv_destino FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE. LOOP AT li_recepcion ASSIGNING <fs_recepcion>. TRANSFER <fs_recepcion> TO lv_destino. ENDLOOP. CLOSE DATASET lv_destino.
Borrar fichero con GUI_DELETE_FILE
Una vez hemos creado fichero en la nueva ruta, sólo queda borrar el fichero inicial con la función GUI_DELETE_FILE.
- LV_DELETE: Informaremos la ruta y nombre del fichero para borrar.
DATA: lv_delete TYPE rlgrap-filename VALUE 'C:\SAP\fichero_inicio.txt'. CALL FUNCTION 'GUI_DELETE_FILE' EXPORTING file_name = lv_delete EXCEPTIONS failed = 1 OTHERS = 2. IF sy-subrc = 0. ENDIF.
Para ver mas tutoriales de SAP, pulse en el siguiente enlace: Listado de tutoriales