Vaciar una Tabla Interna en un Archivo Local ABAP

Cuando realizamos lecturas a diferentes tablas en una base de datos, generalmente concentramos la información resultante en una tabla interna para posteriormente mostrar la información en pantalla. Es posible vaciar los valores de nuestra tabla interna a un archivo local en el equipo, ya sea de tipo de formato .txt, .doc, .odt, .xls, .ods, etc.

Para esto, utilizamos una función de abap llamada “WS_DOWNLOAD” para realizar la transferencia de datos, y también utilizaremos la función “WS_FILENAME_GET ” para indicar el nombre y la ruta en donde deberá ser guardado nuestro archivo.

ABAP

Veamos el código para realizar estas acciones:

*&———————————————————————*
*& Report  Z_IT_TO_FILE
*&
*&———————————————————————*
*&
*& PichuS
*&
*&———————————————————————*

REPORT  Z_IT_TO_FILE

TABLES: lfa1.

TYPES:
BEGIN OF itab_lfa1,
lifnr(10),    ”Account Number of Vendor or Creditor
land1(3),     ”Country Key
name1(35),    ”Name 1
ort1(35),     ”City
ort2(35),     ”District
regio(3),     ”Region (State, Province, Country)
adrnr(10),    ”Address
END OF itab_lfa1.

DATA:
it_vendor type STANDARD TABLE OF itab_lfa1.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: s_vendor for lfa1-lifnr.
PARAMETERS: s_key like lfa1-land1.
SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
PARAMETERS: p_file(128) type c LOWER CASE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B2.
“por default, iniciará el path en C:
DATA: def_path(50) type c value ’c:\’.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION ’WS_FILENAME_GET’  “Definimos la ruta y el nombre del archivo
EXPORTING
DEF_FILENAME           = p_file
DEF_PATH               = def_path
MASK                   = ’,*.*,*.*.’
MODE                   = ’o’
TITLE                  = ’Select Path & Filename: ’
IMPORTING
FILENAME               = p_file
EXCEPTIONS
INV_WINSYS             = 1
NO_BATCH               = 2
SELECTION_CANCEL       = 3
SELECTION_ERROR        = 4
OTHERS                 = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

“”"”"   Evento start-of-selection
start-OF-SELECTION.

perform select_data.

if it_vendor[] is not initial.
“realizamos la transferencia de información
CALL FUNCTION ’WS_DOWNLOAD’
EXPORTING
FILENAME                      = p_file
FILETYPE                      = ’DAT’ ” DAT OR ASCI
TABLES
DATA_TAB                      = it_vendor
EXCEPTIONS
FILE_OPEN_ERROR               = 1
FILE_WRITE_ERROR              = 2
INVALID_FILESIZE              = 3
INVALID_TYPE                  = 4
NO_BATCH                      = 5
UNKNOWN_ERROR                 = 6
INVALID_TABLE_WIDTH           = 7
GUI_REFUSE_FILETRANSFER       = 8
CUSTOMER_ERROR                = 9
NO_AUTHORITY                  = 10
OTHERS                        = 11
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
else. message ’No se encontraron datos’ type ’I’. stop.
endif.

form select_data. “seleccionamos los datos en la tabla interna

SELECT lifnr land1 name1 ort01 ort02 regio adrnr
INTO TABLE it_vendor
FROM lfa1
WHERE lifnr IN s_vendor AND
land1 = s_key.
endform.

Podemos observar que el código es muy sencillo de implementar, y la transferencia en los datos es muy rápida, al ejecutar el programa obtenemos lo siguiente:

  • Primero debemos definir la ruta y el nombre (incluyendo el formato) del archivo a guardar

  • Después SAP nos verifica el tamaño de datos transmitidos al archivo

  • En la ruta seleccionada, observamos que se crea el archivo con el tipo de formato que le asignamos

  • Finalmente verificamos que la información está contenida en el archivo.

Como podemos ver, podemos sacar mucha utilidad de este par de funciones.  Cualquier duda, ya saben me pueden contactar por correo electrónico. =D

Advertisement

Etiquetas: , ,

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s


Seguir

Get every new post delivered to your Inbox.