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