SPLIT INTO no funciona...sabeis porque??

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Driau
    Senior Member
    • ago
    • 235

    #1

    SPLIT INTO no funciona...sabeis porque??

    He estado provando esto:

    LOOP AT it_fichero.

    SPLIT it_fichero AT '#' INTO: l_campo1 l_campo2 l_campo3 l_campo4 l_campo5 l_campo6 l_campo7.

    APPEND it_datos.

    ENDLOOP.


    El efecto (no deseado) es que no separa nada y lo mete todo en el campo l_campo1.

    Las variables de tipo l_campoX estan declaradas así:

    DATA: l_campo1 TYPE string,
    l_campo2 TYPE string,
    l_campo3 TYPE string,
    l_campo4 TYPE string,
    l_campo5 TYPE string,
    l_campo6 TYPE string,
    l_campo7 TYPE string,
    l_campo8 TYPE string,
    l_campo9 TYPE string,
    l_campo10 TYPE string,
    l_campo11 TYPE string,
    l_campo12 TYPE string,
    l_campo13 TYPE string,
    l_campo14 TYPE string,
    l_campo15 TYPE string.


    Alguna idea???

    El contenido de una linea cualquiera es: 20080930#1#1#22#ABONO DEV. No.#2950,22#H

    Gracias de antemano.
  • jtristan
    Senior Member
    • oct
    • 240

    #2
    He probado el código y me surgen unas dudas.
    ¿Estás recorriendo una tabla interna y asignando el valor del workaera al split. Sin embargo, el compilador me dice que sólo puedes hacerlo con tipos de datos como string. ¿Por qué no pruebas a pasar el contenido del workarea a un string y se lo pasas al split?
    Haciéndolo así la separación me la ha hecho correctamente.

    Un saludo.

    Comentario

    • Driau
      Senior Member
      • ago
      • 235

      #3
      Jesuuuusss!!!

      He probado esto como me has dicho:

      LOOP AT it_fichero.

      l_linia = it_fichero-linia.
      SPLIT l_linia AT '#' INTO: l_campo1 l_campo2 l_campo3 l_campo4 l_campo5 l_campo6 l_campo7.

      ENDLOOP.


      Pero sigo igual....

      Comentario

      • ivan888
        Junior Member
        • oct
        • 5

        #4
        Hola,

        creo que te sobran los dos puntos detrás del split.

        Saludos

        Comentario

        • ivan888
          Junior Member
          • oct
          • 5

          #5
          quiría decir detrás del INTO.

          Comentario

          • Driau
            Senior Member
            • ago
            • 235

            #6
            Nada de nada...

            Por mas que lo intento..acaba metiéndolo todo en el primer campo.

            Comentario

            • ernestoacostacuba
              Junior Member
              • oct
              • 8

              #7
              Para hacer funcionar el SPLIT

              Antes que nada, si las subcadenas que vas a extraer de la cadena general, tienen una longitud estàndard, tienes que declarar las variables donde vas a "splitear" de tipo C con la longitud que tienen.
              En tu caso, la cadena general està compuesta de 7 subcadenas divididas por el sìmbolo "#".
              La declaraciòn de variables deberìa ser asì:


              DATA: l_campo1(8) TYPE c,
              l_campo2 TYPE c,
              l_campo3 TYPE c,
              l_campo4(2) TYPE c,
              l_campo5(14) TYPE c,
              l_campo6(7) TYPE c,
              l_campo7 TYPE c.


              Luego, cuando vayas a hacer el SPLIT (supongamos que la cadena general se llama CAD_GRAL):

              SPLIT cad_gral AT '#' INTO l_campo1
              l_campo2
              l_campo3
              l_campo4
              l_campo5
              l_campo6
              l_campo7.



              Espero te sirva.

              Comentario

              • Driau
                Senior Member
                • ago
                • 235

                #8
                Comprendo lo que dices...

                El problema es que yo he declarado las variables así:

                l_campo1 TYPE string,
                l_campo2 TYPE string,
                l_campo3 TYPE string,
                l_campo4 TYPE string,
                l_campo5 TYPE string,
                l_campo6 TYPE string,
                l_campo7 TYPE string,
                l_campo8 TYPE string,
                l_campo9 TYPE string,
                l_campo10 TYPE string,
                l_campo11 TYPE string,
                l_campo12 TYPE string,
                l_campo13 TYPE string,
                l_campo14 TYPE string,
                l_campo15 TYPE string.


                Y lo he hecho asó porque no se cuantos campos me llegaran ni con que longitud. Lo que pretendo hacer es poder importar en SAP cualquier fichero de texto separado por '#' y luego tratarlo a mi gusto.

                Gracias por la paciencia!

                Comentario

                • DavidXD_XD
                  Moderator
                  • ago
                  • 1255

                  #9
                  Hola, posiblemente ese caracter aparentemente se vea como #, pero puede ser un tabulador.

                  Aver si estas ideas pueden ayudar, como el primer campo es una letra crea una variable y agarra el septimo caracter en esa variable q creaste, ahora separalos por esa variable

                  SPLIT cad_gral AT l_var INTO l_campo1
                  l_campo2
                  l_campo3
                  l_campo4
                  l_campo5
                  l_campo6
                  l_campo7.

                  Donde l_var es la variable q creaste ... nos cuentas como t fue
                  David Carballido Córdova

                  Comentario

                  • mysmb2
                    Senior Member
                    • ene
                    • 406

                    #10
                    concuerdo con DavidXD_XD revisa este post te puede ayudar con el caracter #



                    Saludos
                    Sebastián Chiavia
                    http://www.programacionabap.com.ar

                    Comentario

                    • ic_man_777
                      Member
                      • oct
                      • 97

                      #11
                      Me pregunto como tendrás declarada esa tabla interna de it_fichero y cómo es que la llenas.



                      Saludos

                      Comentario

                      • SAPING
                        Senior Member
                        • may
                        • 199

                        #12
                        mismo error

                        tengo el mismo problema...levanto un txt con OPEN DATASET, lo coloco en una tabla tipo CHAR1024, cuando hago el loop de esa tabla, coloco el registro en una variable del mismo tipo y realizo el SPLIT:
                        SPLIT cad_gral AT '#' INTO l_campo1
                        l_campo2
                        l_campo3
                        l_campo4
                        l_campo5
                        l_campo6
                        l_campo7.

                        Y no le encuentro la vuelta.
                        Prove subir el archivo en modo BIN como ASC. Hacer el DATASET por BINARY MODE, TEXT MODE.... pero nada...
                        El archivo lo levanta, pero como una cadena de este tipo que comentan, separado por #.

                        - ya estoy tirando la toalla, si me pueden salvar.... graciassss

                        Comentario

                        • Tu amo
                          Member
                          • oct
                          • 40

                          #13
                          Es porque el '#' no es un '#'. Lo mas probable es que sea un caracter no representable como un tabulador o salto de linea

                          Comentario

                          • Ariel-StaFe
                            Senior Member
                            • nov
                            • 321

                            #14
                            Separado por Tabs (tabulador) - muestra #

                            Tengo el mismo problema, tengo que leer un padron separado por tabs.
                            El split no funciona para eso ?.
                            Porque encima hay campos que no son fijos. son de longitur variables.
                            Alguno me tira una idea ?
                            Muchas gracias...
                            Ariel-StaFe
                            Analista Programador Abap Senior
                            Santa Fe Capital
                            Pcia de Santa Fe
                            Argentina

                            Comentario

                            • Ariel-StaFe
                              Senior Member
                              • nov
                              • 321

                              #15
                              Tabs desde Disco y Servidor

                              Gente.
                              Ya tengo la respuesta para leer el archivo desde disco con gui_upload
                              Post -


                              Me faltaria como hacerlo desde el servidor.
                              Si alguien lo sabe.. desde ya muchas gracias.
                              Ss
                              Ariel-StaFe
                              Analista Programador Abap Senior
                              Santa Fe Capital
                              Pcia de Santa Fe
                              Argentina

                              Comentario

                              Trabajando...