PDA

Ver la Versión Completa : FOR ALL ENTRIES con distintos campos


Bushido_222
17/08/07, 12:06:35
Resulta que tengo una tabla interna T_LBF01 con un campo LIFNR (que es un CHAR de 10), y otra tabla interna T_CDHDR con un campo OBJECTID (que es un CHAR de 90)
La tabla T_LBF01 ya esta cargada con datos y la uso en un FOR ALL ENTRIES para cargar la tabla T_CDHDR (la cargo con la tabla standard CDHDR) en el cual el campo OBJECTID tiene que ser igual a T_LBF01-LIFNR (que es un CHAR de 90).
Quedaria asi:

SELECT OBJECTCLAS OBJECTID CHANGENR
FROM CDHDR
INTO TABLE T_CDHDR
FOR ALL ENTRIES IN T_LFB1_AUX
WHERE OBJECTCLAS = 'KRED' AND
OBJECTID = T_LFB1-LIFNR AND.

Pero como saben OBJECTID(CHAR de 90) Y T_LFB1-LIFNR(CHAR de 10) tienen que ser del mismo tipo y tamaño.

En la especificacion me piden que complete T_LFB1-LIFNR con ceros a la izquerda.

Soy novato, alguien tiene idea de como podria resolver este problema de manera relativamente performante?

conrad10ar
17/08/07, 15:56:06
A ese campo de 10 metelo en una variable que crees del mismo tipo de la de 90.

Y para completar el resto del campo con ceros, tenés que hacer un unpack de esa variable y listo.

Espero haberte ayudado.

Saludos!

azua14
17/08/07, 15:57:57
Bueno..yo le cambiaría el tipo al campo lifnr de la tabla interna..eso si la tienes definida campo a campo...si lo que haces es declarar la tabla interna como una estructura ya existente...le pondría un campo extra..digamos LIFNUM..y le movería el valor del campo correspondiente ahi...
de ahi puedes hacer la comparacion entre tu campo objid y el lifnum

DATA: BEGIN OF t_interna OCCURS 0.
INCLUDE STRUCTURE z_tablaz.
DATA: lifnum(3) TYPE c,
END OF t_interna.

Ojala te ayude..
Saludos
Promethevs

Bushido_222
17/08/07, 17:33:18
Muchas gracias, me sirven las 2.