PDA

Ver la Versión Completa : Error al Inserta TInterna a T. Zeta.


DCErick
25/04/06, 16:43:51
Existe alguna funcion para convertir tipo de datos....

Por ejemplo de string a numerico.....???

Lo que pasa es que quiero insertar el contenido de una tabla interna a una tabla Z... Pero hay un campo de la tabla Z que es de tipo Numerico y la tabla interna lo tiene Char(03)....

DATA: BEGIN OF t_zeket OCCURS 0,
ebeln(10),
ebelp(03),
talla(04),
cantidad(15),
diferencia(15),
END OF t_zeket.

Se declaro char por que es una tabla que se usa para leer un fichero txt que se encuentra en la PC donde se ejecuta SAPGui..

Y cuando trato de hacer lo siguiente

LOOP AT t_zeket.
t_zeket-ebeln = e_foliotraslado.
INSERT INTO zeket VALUES t_zeket.
ENDLOOP.

Me marca error : The work area "T_ZEKET" is not long enough. long enough.

Que es lo que deberia de hacer en este caso:confused:

tato
25/04/06, 17:17:35
DCErick, como estas?
En principio lo que podes hacer, si es que todavia no lo hiciste, es poner el campo como numerico ya que, si no me equivoco tendria que funcionarte. Yo igual mientras tanto lo pruebo para estar seguro.
En caso de que me este confundiendo, y otra alternativa no muy prolija pero que funciona, es generar otra tabla interna que sea un campo largo string, despues, recorriendo esa tabla, pasas los valores a la t_zeket (que previamente formateaste con los valores correctos) y formateas el campo que necesitas dentro de ese loop.
De todas formas deja que averigue porque existen funciones para realizar esas conversiones.

Espero que te sirva.
Saludos
TaTo

tato
25/04/06, 17:57:21
DCErick, acabo de terminar de probar el UPLOAD con una tabla interna con un campo numerico y no tuvo ningun problema.

Saludos
TaTo

DCErick
25/04/06, 20:08:45
Podrias pasarme ese codigo TATO???

Por que ami se me ponen los datos del txt todos chuecos...:mad:

tato
25/04/06, 20:32:34
DCErick:
Genera en principio un archivo txt para probar el prg que te voy a pasar con dos campos, o sea que tengan el largo de los campos, en este caso son 19 caracteres en total.
Ej.:
1600000000000001001

Los primeros 16 serian un nº de doc y los ultimos 3 de posicion.
Nombralo como quieras y ubicalo en el directorio raiz o donde mas te guste.
Si queres tambien podes debbugearlo para ver de que forma te pone estos datos en la tabla interna.

Fijate y avisame
Saludos
TaTo

DCErick
25/04/06, 21:59:34
Horale yo no sabia que esto se podia hacer

str2(3) TYPE n,<---- Eso significa que es un numeric de 3 posiciones???

DCErick
25/04/06, 22:19:28
Bueno le puse como me dices pero me sigue marcando el mismo error...

logre hacerlo declarando la tabla interna de la siguente manera

DATA: t_zeket LIKE zeket OCCURS 0 WITH HEADER LINE.:)

Gracias mano....:D

Marco
26/04/06, 04:36:01
Hola,
Al parecer quieres pasar un dato en una variable CHAR a una variable NUM (numerico)... El error que te sale es que la cadena es muy grande... Bueno el comando MOVE soporta conversiones de cadena a numerico, siempre y cuando sean numeros los datos de tu variable CHAR (o string).

MOVE var_str TO var_num.

Esto te va a pasar el valor, solo tienes q ver la posicion porq te lo pega al lado derecho creo. Si tienes tiempo prueba esta opcion. ;)

DCErick
26/04/06, 15:07:42
Hola Marco... lo que pasa es que el error me lo marca en la linea del insert...

LOOP AT t_zeket.
t_zeket-ebeln = e_foliotraslado.
INSERT INTO zeket VALUES t_zeket.<----Aqui.
ENDLOOP.

Me marca error : The work area "T_ZEKET" is not long enough. long enough.

sap2006
27/04/06, 11:37:33
Cuando aparece este error "..long enough" significa que las dos tablas que estas tratando no tienen la misma cantidad de campos, por lo tanto en T_ZEKET hay menos campos que en ZEKET. Salu2

DCErick
27/04/06, 16:04:37
Gracias sap2006, si es eso entonces lo que me falta es el campo MANDT :p .. jeje

Gracias por tu ayuda.. y Gracias a los demas tmb...

SAPOLIN
12/10/09, 22:17:07
A mi me paso lo mismo y solo falto que otro colega viera rapidamente el codigo y en 1 minuto el tema se soluciono .

Aveces necesitamos que una mente fresca se acerque a validar nuestro codigo... :D