En el siguiente ejemplo veremos como leer un fichero TXT dentro del servidor SAP y poder almacenarlo dentro de una tabla interna.
Con ello, ya podremos hacer una lectura más fácil según lo que requiramos.
Primero creamos un PARAMETERS en el cuál le pasamos la ruta:
/data/xfer/mq0/OE-CO/almacen/In/Archivo.txt
Utilizamos la instrucción OPEN DATASET para abrir el fichero y luego READ DATASET para leer los datos del mismo y lo almacenamos en la tabla GT_ITAB.
En el caso de no encontrar archivos, mostramos un mensaje. Esto es importante, puesto que caso contrario generaria que el programa genere error.
"LEEMOS EL ARCHIVO DEL SERVIDOR
l_filename = p_ruta.
REFRESH gt_itab.
OPEN DATASET l_filename FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc EQ 0.
DO.
CLEAR: gs_itab.
READ DATASET l_filename INTO gs_itab.
IF sy-subrc NE 0.
EXIT.
ELSE.
APPEND gs_itab TO gt_itab.
ENDIF.
ENDDO.
ELSE.
it_error = 'X'.
MESSAGE e398(00) WITH 'No se encontro el archivo'.
ENDIF.
la tabla GT_ITAB es donde guardamos la informacion, el problema es que loalmacena todo en una linea.Para guardarlo en una tabla interna, primero creamos una de la misma cantidadde campos que el archivo y como segundo punto vemos cual es el separador.cuantas columnas voy a tener.Para mi caso, el archivo viene como separador por comas, la cuál me indica
"GUARDAMOS EN LA TABLA
LOOP AT gt_itab.
SPLIT gt_itab AT ',' INTO wt_itabct-orden
wt_itabct-stcd1
lv_sf "WT_ITABCT-BSTDK
wt_itabct-ptovta
wt_itabct-evento
wt_itabct-cedula
wt_itabct-name1
wt_itabct-telf1
wt_itabct-telfx
wt_itabct-stras
wt_itabct-barrio
wt_itabct-ort01
wt_itabct-ean
wt_itabct-linea
wt_itabct-marca
wt_itabct-color
wt_itabct-cantd
wt_itabct-cantiva
wt_itabct-obs
lv_sf2 "WT_ITABCT-FPROME
wt_itabct-nroocp.
ENDLOOP.
Les dejo el código completo:
DATA: lv_sf TYPE string,
lv_sf2 TYPE string,
lv_fecha TYPE date.
"LEEMOS EL ARCHIVO DEL SERVIDOR
l_filename = p_ruta.
REFRESH gt_itab.
OPEN DATASET l_filename FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc EQ 0.
DO.
CLEAR: gs_itab.
READ DATASET l_filename INTO gs_itab.
IF sy-subrc NE 0.
EXIT.
ELSE.
APPEND gs_itab TO gt_itab.
ENDIF.
ENDDO.
ELSE.
it_error = 'X'.
MESSAGE e398(00) WITH 'No se encontro el archivo'.
ENDIF.
"GUARDAMOS EN LA TABLA
LOOP AT gt_itab.
SPLIT gt_itab AT ',' INTO wt_itabct-orden
wt_itabct-stcd1
lv_sf "WT_ITABCT-BSTDK
wt_itabct-ptovta
wt_itabct-evento
wt_itabct-cedula
wt_itabct-name1
wt_itabct-telf1
wt_itabct-telfx
wt_itabct-stras
wt_itabct-barrio
wt_itabct-ort01
wt_itabct-ean
wt_itabct-linea
wt_itabct-marca
wt_itabct-color
wt_itabct-cantd
wt_itabct-cantiva
wt_itabct-obs
lv_sf2 "WT_ITABCT-FPROME
wt_itabct-nroocp.
ENDLOOP.