MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   SPLIT INTO no funciona...sabeis porque?? (foro/showthread.php?t=33135)

Driau 21/10/09 09:57:16

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 21/10/09 10:25:47

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.

Driau 21/10/09 10:38:47

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.... :confused:

ivan888 21/10/09 11:27:41

Hola,

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

Saludos

ivan888 21/10/09 11:29:11

quiría decir detrás del INTO.

Driau 21/10/09 12:51:42

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

ernestoacostacuba 21/10/09 13:52:53

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.

Driau 21/10/09 14:03:42

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!

DavidXD_XD 21/10/09 14:41:42

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 :D

mysmb2 21/10/09 21:24:18

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



Saludos


Husos Horarios son GMT. La hora en este momento es 18:11:09.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web