Leer archivo desde un servidor

0

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




Nota. Debemos estar seguros que la ruta exista, puedes verificarla en la AL11. Además, comprobar que exista archivos para leer.

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 lo
almacena todo en una linea.
Para guardarlo en una tabla interna, primero creamos una de la misma cantidad
de 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.


Tags

Publicar un comentario

0Comentarios
Publicar un comentario (0)