Soy novato en SAP y estoy comenzando con ABAP por lo que disculpar si digo alguna tontería.
Necesito cruzar dos tablas, una del estándar (LIKP) y una Z. Para el cruce utilizo el campo VBELN contenido en las dos tablas.
El problema lo tengo en que los campos, aun siendo del mismo tipo (VBELN CHAR 10), el de la tabla LIKP lo devuelve relleno de ceros 0012345678 y el de la tabla Z sin ellos 12345678 es por esto que al cruzarlos y ser dos campos de texto, no hay coincidencias.
He probado con InfoSet Query, con Quick Viewer, con un programa ABAP y el resultado siempre es el mismo.
Si lanzo la consulta SQL, casteando los campos, me arroja la información correctamente.
SELECT T1.VBELN, T2.VBELN
FROM ZTABLA T1
INNER JOIN LIKP T2 ON CAST(T2.VBELN AS INTEGER) = CAST(T1.VBELN AS INTEGER)
Como posible solución se me ocurre lanzar la consulta listeralmente desde un programa ABAP, pero no sé si esto es posible. Otra opción es escribir el select en abap, pero no soy capaz de que funcione ya que ABAP no me permita tastear los campos y no sé como tratar correctamente los datos.
SELECT t1~vbeln t2~vbeln
FROM likp AS t1
INNER JOIN ztabla AS t2 ON t2~vbeln = t1~vbeln
INTO CORRESPONDING FIELDS OF TABLE it_listado.
¿En la tabla Z, qué elemento de dato tiene el campo VBELN? Debería ser como el elemento de dato que tiene VBELN en la tabla LIKP. Checa eso.
En ABAP, se puede hacer lo siguiente, extrae la información de la tabla Z, y llena con ceros el campo VBELN, usa la función CONVERSION_EXIT_ALPHA_INPUT. Despues haces un SELECT con FOR ALL ENTRIES IN, usando la tabla con la información de la tabla Z.
Estimado,
me sumo al comentario anterior (nickel_seifer) es posible regularizar ? posiblemente estén ocupando elementos de datos diferentes o estén poblando mal el campo en la tabla z debido a que no consideran la rutina de conversión.
Otra forma que se me ocurre pero menos eficiente (comparando con el join con la tabla regularizada ) es consultar primero alguna de las tablas( la z o likp idealmente la con menos registros ) y llenar un Rango con tipo vbeln para consultar la tabla faltante y obtendrás el mismo resultado.
Saludos
Por lo que veo, el elemento de datos de la tabla Z es diferente al de la tabla LIKP
Tabla Z
Elemento de datos VBELN
Paquete BV
ID parámetro AUN (Número del pedido de cliente)
Tabla LIKP
Elemento de datos VBEL_VL
Paquete BS_FND_COMMON
ID parámetro VL (Delivery note)
La tabla Z almacena datos de la entrega por lo que entiendo que el elemento de datos VBELN debería ser igual. Entiendo también, que como indicáis, este es el motivo por el que no hace el cruce.
¿Cómo procedo en este caso? ¿Se puede cambiar el elemento de datos sin consecuencias?
Estimado, lo que menciona @nickel_seifer es correcto. Puede ser que al guardar los registros en la tabla Z no se le ha aplicado la rutina de conversión input a los datos con el número de documento de entrega. Si se registra con un programa que es lo más probable debes modificar el mismo. O bien si es una vista de actualización, revisar el elemento de datos que puede ser que no tiene asignada la rutina de conversión ALPHA.