open data set

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Member
    • abr
    • 36

    #1

    open data set

    Buenos dias todos,

    tengo un problema no se como utlizar el open data set y necesito algo de ayuda, algun programa que tenga, lo que necesito es leer ficheros del servidor y el contenido lo meta a una tabla interna

    solo logro hacer esto
    OPEN DATASET lv_fname for input in text mode encoding default.
    IF sy-subrc IS INITIAL.
    DO.
    READ DATASET lv_fname INTO LT_TAB_EX2-FIELD.
    IF sy-subrc IS NOT INITIAL.
    EXIT.
    ENDIF.
    APPEND LT_TAB_EX2.
    ENDDO.
    CLOSE DATASET lv_fname.

    el resultado me lo deja en una linea string, como hago para pasar del string a una tabla interna..
    en espera de su ayuda
  • Junior Member
    • oct
    • 4

    #2
    Re: open data set

    Hola

    Por lo que puedo ver, al leer el archivo lo estas metiendo dentro de un estructura que después cargas en la tabla interna.El código deberá recoger cada una de la líneas del documento que estas leyendo e introducirlas en la tabla interna que declaraste, ahora bien si el documento que estas leyendo tiene una única línea, tal como esta ahora el código, lo meterá todo en una sola línea.

    Para separarlo dependerá del tipo de archivo que tangas, si es un CSV, XML, texto plano ...... En estos casos puedes optar por separarlo directamente dentro del DO o bien obtener esa única línea y después tratarlo con alguna clase o FM específico para el tipo de archivo que lees.

    Saludos

    Comentario

    • Member
      • nov
      • 54

      #3
      Re: open data set

      Originalmente publicado por nmarquez1974
      Buenos dias todos,

      tengo un problema no se como utlizar el open data set y necesito algo de ayuda, algun programa que tenga, lo que necesito es leer ficheros del servidor y el contenido lo meta a una tabla interna

      solo logro hacer esto
      OPEN DATASET lv_fname for input in text mode encoding default.
      IF sy-subrc IS INITIAL.
      DO.
      READ DATASET lv_fname INTO LT_TAB_EX2-FIELD.
      IF sy-subrc IS NOT INITIAL.
      EXIT.
      ENDIF.
      APPEND LT_TAB_EX2.
      ENDDO.
      CLOSE DATASET lv_fname.

      el resultado me lo deja en una linea string, como hago para pasar del string a una tabla interna..
      en espera de su ayuda

      Así.. te dejo un ejemplo.

      TRANSLATE lv_name TO UPPER CASE.
      CONCATENATE c_ruta name c_txt INTO lv_ruta.
      OPEN DATASET lv_ruta FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.
      IF sy-subrc NE 0.
      WRITE: / TEXT-002, lv_ruta.
      ELSE.
      DO.
      READ DATASET lv_ruta INTO lv_cadena.
      SPLIT lv_cadena AT cl_abap_char_utilities=>horizontal_tab INTO
      wa_open-vkorg wa_open-fkdat
      wa_open-kunrg wa_open-name1 wa_open-matnr wa_open-vbeln wa_open-guia
      wa_open-fecha wa_open-orig wa_open-dest wa_open-zona wa_open-peso
      wa_open-sobrepeso wa_open-peso_fact wa_open-largo wa_open-ancho
      wa_open-alto wa_open-vol wa_open-val wa_open-mto_serv wa_open-mto_emba
      IF lv_cadena IS INITIAL.
      EXIT.
      ELSE.
      APPEND wa_open TO it_open.
      ENDIF.
      ENDDO.
      ENDIF.
      CLOSE DATASET lv_ruta.

      Espero te sirva, saludos
      Los escritores somos seres heridos por ello creamos otra realidad

      Comentario

      Trabajando...