Query documentos relacionados

Buen día expertos,

Quiero relacionar las Facturas de Proveedor (OPCH) con las entradas (OPDN) y estoy usando el campo BaseEntry para las facturas de proveedor y el capo TrgetEntry si la factura es de reserva. El problema es que si una factura tiene mas de una entrada por la misma linea solo me muestra la primera ya que el campo que estoy usando solo almacena 1 dato.

Tienen alguna idea para hacer esta relación en estos casos particulares.

Saludos.

Hola, no te bases en la cabecera del documento ya que al copiar a o de copias por partidas no por documento, utiliza PCH1 y considera los campos BaseType y BaseEntry

Saludos.

3 Me gusta

Hola

Esta consulta relaciona los tres (Pedido, Entradas de Mercancía y Factura), lo puedes adecuar a tus necesidades

SELECT [....]
FROM OPOR T0
INNER JOIN POR1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN PDN1 T2 ON T1.DocEntry = T2.BaseEntry
INNER JOIN OPDN T3 ON T3.DocEntry = T2.DocEntry
INNER JOIN PCH1 T4 ON T2.DocEntry = T4.BaseEntry
INNER JOIN OPCH T5 ON T4.DocEntry = T5.DocEntry
[....]
4 Me gusta

Gracias por sus respuestas,

@pcarrasco, si estoy usando los campos de la PCH1.

@Jesus_V, asi es como hago la relacion, el caso es el siguiente.

Tengo una factura de reserva con una sola linea, de esta factura tengo relacionadas 2 entradas de mercancía. Al tomar el campo TrgetEntry de la PCH1 solo me muestra una de las dos entradas por que ese campo solo almacena 1 DocEntry y la otra entrada no tengo como ligarla.

SELECT T0."DocNum" AS "N° Factura R", T2."DocNum" AS "N° Entrada"
FROM OPCH T0 INNER JOIN PCH1 T1 ON T0."DocEntry" = T1."DocEntry" 
LEFT JOIN OPDN T2 ON T1."TrgetEntry" = T2."DocEntry"  
LEFT JOIN PDN1 T3 ON T2."DocEntry" = T3."DocEntry"

Si corres esta consulta te dará la entrada relacionada por cada linea de la factura, pero si una linea tiene mas de una entrada solo te muestra la primera que se creo.

Saludos.

Saludos, hermano , hice uno que te dice la factura del proveedor, fecha, vencimiento, nombre y a vez nuestra el número de la entrada de mercancía y a su vez me da también el número de la orden de compras
Ejemplo factura 09856- entrada No. 345 y su orden de compras 987543, avísame si te sirve o si no te envío las tablas con su relación y tú lo hacés, saludos

1 me gusta

YIMPORTANTE!!!
…y tambien el campo BaseLine

1 me gusta

Muchas gracias por sus aportes,

Existe alguna forma desde la factura de ligar las dos entregas y la nc? La factura solo tiene 1 linea, por lo que el campo TrgetEntry solo tiene la información de un documento destino.

Mi caso especifico es este:

Saludos.

si sigues la misma linea solo seria agregar el OPDN Y PDN1 AL FROM

FROM OPCH T0  INNER JOIN PCH1 T1 ON T0."DocEntry" = T1."DocEntry" INNER JOIN RPC1 T2 ON T1."TrgetEntry" = T2."DocEntry"LEFT JOIN ORPC T3 ON T2."DocEntry"=T3."DocEntry"

Dejame checar si puedo hacer que funcione y te lo posteo. también trata de hacerlo.

1 me gusta

@IKASHIMI, gracias por tu respuesta.

El problema es que de esa manera solo puedo ligar un documento, si ejecuto el siguiente query:

SELECT T1."TrgetEntry", T1."TargetType"  FROM OPCH T0  INNER JOIN PCH1 T1 ON T0."DocEntry" = T1."DocEntry" WHERE T0."DocNum" = 272

Me muestra que el campo TrgetEntry solo contiene el DocEntry de una de las entradas. Entonces de que campo puedo sacar el DocEntry de la otra entrada y el de la nc para poder ligarlos?

image

Saludos.

En mi humilde opinion… hazlo al reves…no unas documento base con documebto destino…

Mejor unir documento destino con documento base…

Es decir…olvidate del trgetentry…unelo por el baseentry…

… porque? Porque 1linea de documento tiene como mucho uno y solo un padre (el doc baseentry)… sin embargo una linea de documento puede tener mas de un documento hijo (y el trgetentry te apuntaria solo a uno de ellos y si tienes varios para una misma linea… seria un mal asunto…

1 me gusta

Gracias @AlexMoran,

Es una buena observación, el tema es que también tengo una entrada con mas de una factura por lo que llegaría al mismo problema. Por lo pronto lo hice partiendo de las entradas pero quería ver si había alguna forma de hacer esa unión.

Saludos.

Claro, metí, fue el monto de la factura, no se si vik desea los montos de la orden de compras y el monto de la entrada, bueno realmente lo hice para ayudar avik, esto lo hice fue en Crystal report, voy a ver si lo monto cómo query en sap

1 me gusta

Justamente en Crystal puedes hacer mejor las conexiones y verificar que te traiga lo necesario.

1 me gusta

Precisamente hablo de eso… une lineas de facturas con lineas de albaran del siguiente modo:

INV1 lf Join DLN1 la on lf.baseentry=la.docentry and lf.baseline=la.linenum and lf.basetype= x

Donde “x” es el object type tde los albaanes qe ahora rno recuerdo cual era…

Haciendo esto que te digo tu problema esea resuelto

1 me gusta

Gracias por sus aportes.

@AlexMoran, el tema sigue siendo el mismo, si existen dos entradas para una linea de la factura con la unión que propones solo tomara en cuenta una, esto es porque los campos “BaseEntry” y “TrgetEntry” solo almacenan un dato por linea.

@IKASHIMI, es una buena opción revisar en CR. Parece ser que por el Query Manager no será posible.

Saludos.

Hola… lee y analiza bien lo que te he escrito…

Olvida el targetentry!!!.. mira bien la propuesta de sql que te he comentado… porque precisamente insisto en que te olvides del taegertentry y uses el baseentry y baseline…

Revisaeleo y me cuentas

Por cierto que es IMPOSIBLE que en SAP B1 haya una linea de factura asociada a dos albaranes diferentes… el escenario que planteas es IMPOSIBLE que suceda

Pd: con el query manager si que es posible sacar los datos que necesitas… solo es cuestion de entender como obtener los datos que necesitas

@AlexMoran,

El escenario es posible, o al menos es así en mi localización que es México. Tengo una factura de reserva a la cual están ligadas dos entradas. Mientras la linea no sea cerrada con la primer entrada se pueden agregar tantas como la operación lo necesite hasta que se complete la cantidad de la linea.

Por otra parte me costo un poco analizar lo que me comentabas pero al final entendi lo que me decías. El query me quedo así:

SELECT T0."DocEntry", T1."DocEntry"
FROM PCH1 T0 LEFT JOIN PDN1 T1 ON T1."BaseEntry" = T0."DocEntry" AND T1."BaseLine" = T0."LineNum" AND T1."BaseType" = 18

Esto me muestra la factura y sus dos entradas relacionadas a la linea. Lo seguiré desarrollando pero esta es la base que necesitaba.

Gracias.

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.