MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 29/12/14, 19:00:23
jamiguel77 jamiguel77 is offline
Junior Member
 
Fecha de Ingreso: jun 2011
Mensajes: 21
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.
Responder Con Cita
  #2  
Viejo 29/12/14, 20:08:42
Esteban Dueñas Avalos Esteban Dueñas Avalos is offline
Junior Member
 
Fecha de Ingreso: sep 2006
Mensajes: 4
Smile 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]
Responder Con Cita
  #3  
Viejo 31/12/14, 00:59:15
jamiguel77 jamiguel77 is offline
Junior Member
 
Fecha de Ingreso: jun 2011
Mensajes: 21
Red face

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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 12:59:51.


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