Query de embarques

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

Espero te sea de ayuda.
Saludos.

Gracias creo que no me eh explicado claramente, lo sugerido no me funcionado

Lo que quiero es sacar información de estas tablas, pero obviamente bien relacionadas o unidas:
oinv
ordr
rdr1
por1
opor
OIGE
ordr
opdn
IGE1

alguna idea?

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".

Saludos.

1 me gusta

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…

1 me gusta

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

1 me gusta

@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.

Pero si hago la consulta sencilla directa a la tabla OIGE si me sale, sigo checando los INNER y los consejos gracias.

Gracias @epr06 voy a probar tu sugerencia.

OIGE es salida de inventario (ajustes si así lo quieres ver), las salidas en el modulo de ventas es en ODLN

1 me gusta

ODLN esta vacia mi tabla

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)

slds

BF

2 Me gusta

@bfierro gracias por el consejo, realice el cambio y me funciono como lo esperaba.
Saludos

1 me gusta