ABAP: Mover fichero de carpeta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *