MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   separar una cadena en base a un delimitador en varios campos (foro/showthread.php?t=73182)

jamiguel77 29/12/14 19:00:23

separar una cadena en base a un delimitador en varios campos
 
Hola amigos, estoy teniendo problemas con algo muy sencillo:

Tengo un archive: prueba.csv

UD00000000;0090000000;50.26
UD00000000;0090000002;45.56
UD00000000;0090000004;300.25-
UD00000000;0090000005;45.26
UD00000000;0090000024;48.15
UA00000000;0090000025;11.17
UA00000000;0090000027;200.58-
UD00000000;0090000030;600.25
UD00000000;0090000031;123.95
UA00000000;0090000032;-201.63

quiero agarrar cada linea y separarla en base al separador ';' y meter el resultado en una table interna, les dejo mi codigo:


Lo que he intentado:

1) al mandar llamado:

CALL FUNCTION 'TEXT_CONVERT_TEX_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR = ';'
i_tab_raw_data = it_tablauncampo[]

TABLES
I_TAB_CONVERTED_DATA = it_tabla[]
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2.

tambien lo intente sin los [] me marca este error:


Short Text
Type conflict when calling the function module "TEXT_CONVERT_TEX_TO_SAP".

no se por que, si sigo la documentacion.

2) Intente tambien esto:

loop at <fs_xtabla> ASSIGNING <fs_wa2>.
lv_aux2 = <fs_wa2>-f1.
SPLIT lv_aux2 AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO TABLE it_tabla.
* BREAK-POINT.
endloop.

Esto me funciono un poco mas, pero el problema es que: mi archive (cada linea) tiene separacion con un punto y coma, no con un # entonces me lo separa bien raro.

No encontre como indicarle a la function que el separador era ';'

3) Quise hacerlo manualmente:

loop at <fs_xtabla> ASSIGNING <fs_wa2>.
lv_aux2 = <fs_wa2>-f1.
SPLIT lv_aux2 AT separator INTO lv_aux.
* SPLIT lv_aux2 AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO TABLE it_tabla.
* lv_aux2 = <fs_wa2>-f1.
* lv_aux2 = 'aa;bb;cc;dddd;ee;'.
* SPLIT lv_aux2 at separator into lv_aux.
* BREAK-POINT.
endloop.

La variable lv_aux esta declarada como string pero aun asi me marca el siguiente error al checker el codigo (f2) antes de activar:

Unable to interpret "LV_AUX". Possible causes: Incorrect spelling or comma error.

Algun consejo?


Les agradezco, se que es un problema sencillo, pero no me sale.

Gracias.

Esteban Dueñas Avalos 29/12/14 20:08:42

Separar caracteres
 
hola jamiguel77

el Split deberías de utilizarlo de esta manera, pruébalo espero que te sirva:
loop at <fs_xtabla> ASSIGNING <fs_wa2>.

Split <fs_wa2> at ';' into t_tabla
...
....
endloop
QUOTE=jamiguel77]Hola amigos, estoy teniendo problemas con algo muy sencillo:

Tengo un archive: prueba.csv

UD00000000;0090000000;50.26
UD00000000;0090000002;45.56
UD00000000;0090000004;300.25-
UD00000000;0090000005;45.26
UD00000000;0090000024;48.15
UA00000000;0090000025;11.17
UA00000000;0090000027;200.58-
UD00000000;0090000030;600.25
UD00000000;0090000031;123.95
UA00000000;0090000032;-201.63

quiero agarrar cada linea y separarla en base al separador ';' y meter el resultado en una table interna, les dejo mi codigo:


Lo que he intentado:

1) al mandar llamado:

CALL FUNCTION 'TEXT_CONVERT_TEX_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR = ';'
i_tab_raw_data = it_tablauncampo[]

TABLES
I_TAB_CONVERTED_DATA = it_tabla[]
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2.

tambien lo intente sin los [] me marca este error:


Short Text
Type conflict when calling the function module "TEXT_CONVERT_TEX_TO_SAP".

no se por que, si sigo la documentacion.

2) Intente tambien esto:

loop at <fs_xtabla> ASSIGNING <fs_wa2>.
lv_aux2 = <fs_wa2>-f1.
SPLIT lv_aux2 AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO TABLE it_tabla.
* BREAK-POINT.
endloop.

Esto me funciono un poco mas, pero el problema es que: mi archive (cada linea) tiene separacion con un punto y coma, no con un # entonces me lo separa bien raro.

No encontre como indicarle a la function que el separador era ';'

3) Quise hacerlo manualmente:

loop at <fs_xtabla> ASSIGNING <fs_wa2>.
lv_aux2 = <fs_wa2>-f1.
SPLIT lv_aux2 AT separator INTO lv_aux.
* SPLIT lv_aux2 AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO TABLE it_tabla.
* lv_aux2 = <fs_wa2>-f1.
* lv_aux2 = 'aa;bb;cc;dddd;ee;'.
* SPLIT lv_aux2 at separator into lv_aux.
* BREAK-POINT.
endloop.

La variable lv_aux esta declarada como string pero aun asi me marca el siguiente error al checker el codigo (f2) antes de activar:

Unable to interpret "LV_AUX". Possible causes: Incorrect spelling or comma error.

Algun consejo?


Les agradezco, se que es un problema sencillo, pero no me sale.

Gracias.[/quote]

jamiguel77 31/12/14 00:59:15

Listo, Funciono!!!




tuve que declarer mi table WITH HEADER LINE

tambien lo solucione mandando llamar la FM:

'TEXT_CONVERT_TEX_TO_SAP'

quedando:




Gracias Felices Fiestas.

Saludos.


Husos Horarios son GMT. La hora en este momento es 15:14:32.

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