Resulta que estoy haciendo un query para los embarques y quisiera saber si me pueden apoyar con una relación de estas dos tablas,.
Quiera mandar a traer los siguientes campos DocNum y NumAtCard de la tabla OPDN y el de la tabla OPOR el DocNum.
En el mapa de relaciones tiene relación pero no se como realizar el inner.
Saludos.
Les comparto el query para saber en que estoy mal.
En teoría si lo muestra pero no es el correcto.
SELECT DISTINCT T0.[Comments] as Remision_Mexchimen, T0.[U_PedidoCte] as Pedido,
T1.[U_FechaI],T0.[u_oc], T0.[u_asc_ordentrans], T0.[u_cliente], T3.[CardName], T0.[U_DirEnvio] as Destino,
T1.[Dscription] as Material, T0.[DocDate], T3.U_PedLiber, T0.[DocNum] as Folio_Salida, T1.[U_Unidad] as Hopper,
T0.[U_CARTAP], T1.[Quantity] as Peso, T0.[U_TRANSP], T0.[U_TRACTO], T0.[U_REMOLQUE], T0.[U_OPERADOR],
T0.[U_TRANSP], T0.[U_Gto_Transporte], T5.[DocNum] as 'Num Factura', T3.[DocStatus] as 'Status Pedido',
T6.[LineStatus] as 'Status Orden C',T12.[NumAtCard] AS 'Factura Transporte', T12.[DocNum] as Entrada
FROM OIGE T0 INNER JOIN IGE1 T1 ON T0.[DocEntry] = T1.[DocEntry]
LEFT JOIN OCRD T2 ON T1.[U_Cliente_CardCode] = T2.CardCode
INNER JOIN ORDR T3 ON cast (T3.DocNum as nvarchar ) = T0.U_PedidoCte
INNER JOIN RDR1 T4 ON T4.DocEntry=T3.DocEntry
INNER JOIN OINV T5 ON T5.DocEntry=T4.TrgetEntry
INNER JOIN POR1 T6 ON T6.[U_CARTAP]=T0.[U_CARTAP]
INNER JOIN OPOR T8 ON T8.[DocEntry]=T6.[DocEntry]
LEFT OUTER JOIN PCH1 T9 ON T9.BASEENTRY = T6.DOCENTRY AND T9.BASETYPE = T6.OBJTYPE AND T9.BASELINE = T6.LINENUM
LEFT OUTER JOIN OPCH T10 ON T9.DOCENTRY = T10.DOCENTRY
LEFT OUTER JOIN PDN1 T11 ON T11.BASEENTRY = T6.DOCENTRY AND T11.BASETYPE = T6.OBJTYPE AND T11.BASELINE = T6.LINENUM
LEFT OUTER JOIN OPDN T12 ON T11.DOCENTRY = T12.DOCENTRY
WHERE T0.[DocDate]>= [%0] AND T0.DocDate <= [%1] and T0.[U_Cliente] not in ('C00026', 'C00022','C00008', 'C00133','C00004')
and T0.[Series] not in (67,173) order by T0.[DocDate]
Hola @kriptonniano, según lo que entendí puedes hacerlo de 2 maneras:
1 - Llamando la tabla OPOR en el FROM y relacionandola en el WHERE así:
SELECT T0."DocNum", T0."NumAtCard", T2."DocNum"
FROM OPDN T0 INNER JOIN PDN1 T1 ON T0."DocEntry" = T1."DocEntry",
OPOR T2
WHERE T1."BaseEntry" = T2."DocEntry" AND
T2."DocEntry" = '267'
2 - Haciendo una Sub-consulta que te traiga el DocNum de la tabla OPOR, así:
SELECT T0."DocNum", T0."NumAtCard",
(SELECT DISTINCT A."DocNum" FROM OPOR A WHERE A."DocEntry" = T1."BaseEntry") AS "DocNum"
FROM OPDN T0 INNER JOIN PDN1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."DocNum" = 139
Lo que puedo sugerirte es que busques en el asistente de consultas de SAP B1:
Herramientas > Consultas > Asistente de consultas.
Allí puedes colocar la tabla que desees, presionas tab y luego te posicionas nuevamente sobre la tabla que colocaste. El sistema te mostrará todas las tablas relacionadas a la tabla que tu indicaste, desde allí puedes armar tu JOIN:
Si haces doble clic en las tablas que te sugiere el sistema, se agregan al JOIN.
En mi experiencia, para relacionar los documentos que se ven en el mapa de relaciones siempre utilizo la forma FUENTE."DocEntry" = Destino."BaseEntry".
Y si en el ultimo LEFT OUTER JOIN adicionas un and ejemplo:
LEFT OUTER JOIN OPDN T12 ON T11.DOCENTRY = T12.DOCENTRY AND T8.DocNum = T12.DocNum
Y arriba en el cuerpo del SELECT DISTINCT adicionas el campo de T8.DocNum
Saludos…
En todos los documentos de marketing son los mismos campos para ligar documentos.
Con lo siguiente traes todas las ordenes de compra que vinculan directamente [Orden de compra]->[entrada] y [Order de Compra]->[Factura]
FROM
OPOR T0
INNER JOIN POR1 T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN (OPDN T2
INNER JOIN PDN1 T3 ON T2.DocEntry = T3.DocEntry
) ON T3.BaseType = T0.ObjType AND T3.BaseEntry = T1.DocEntry AND T3.BaseLine = T1.LineNum
LEFT JOIN (OPCH T4
INNER JOIN PCH1 T5 ON T4.DocEntry = T5.DocEntry
) ON T5.BaseType = T0.ObjType AND T5.BaseEntry = T1.DocEntry AND T5.BaseLine = T1.LineNum
@rcisneros gracias lo intente de esa forma pero no me salen varias salidas, se supone que las salidas se encuentra en la en la tabla OIGE pero aun no encuentro porque no me salen 15 salidas en la consulta.
Hola
debe ser por unos de los Inner reemplazalos por LEFT JOIN y pruebas ya si duplica datos debes validarlos o indicar los tipos de documentos base(BaseType = ObjType)