cancel
Showing results for 
Search instead for 
Did you mean: 

Creación de una consulta que muestre pedidos de compras y sus documentos subsiguientes

javier_facessantos
Contributor
0 Kudos

Buenas tardes

Soy nuevo en SAP business One y estoy intentando crear una consulta de tablas que me muestre los números de pedido de compras, en función del proyecto al que estén imputados. Mostrándome diferentes datos que he sido capaz de encontrar en las tablas OPOR y POR1.

Lo que no consigo es que me muestre también si los pedidos mostrados tienen entradas de mercancías, pues no consigo vincular la OPOR con la OIGN.

He encontrado un campo en ambas tablas que se llama "FlwRefNum" que parece ser la referencia al documento subsiguiente. ¿Podría valer?

Perdonar si estoy cometiendo algún error de bulto en la descripción del problema, pero como os he comentado soy nuevo en el mundillo de SAP B1.

Gracias de antemano y saludos

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor

Estimado buenos días.

Punto 1: Estás uniendo mal las tablas, la tabla de entradas de mercadería por compras es la OPDN para cabera y PDN1 para el detalle.

Punto 2: Para unir la OC con su respectiva entrada de mercadería, debes usar los campos de linea,

POR1.TrgetEntry=PDN1.BaseEntry

POR1.TargetType=PDN1.BaseType

POR1.LineNum=PDN1.BaseLine

Espero te sirva

Saludos

javier_facessantos
Contributor
0 Kudos

Hola Felipe

En primer lugar muchas gracias por tu respuesta.

Efectivamente ya vi que había otras dos tablas de entrada de mercancías. Sin embargo me quedé en el mismo punto que con la OIGN y la IGN1, pues estoy intentando montar el informe con el asistente y cuando llego al paso de "Condiciones y relaciones" en la pestaña de relaciones el sistema solamente me propone las relaciones POR1 <-> OPOR y PDN1 <-> OPDN, es decir que sólo relaciona las tablas de cabecera y las de detalle. Y no parece posible añadir ninguna otra relación.

Por otra parte, viendo lo que me indicas en el punto 2 he probado a definir esas igualdades en la pestaña de condiciones, dejándolo así:

(POR1.TrgetEntry=PDN1.BaseEntry Y POR1.TargetType=PDN1.BaseType Y POR1.LineNum=PDN1.BaseLine)

Y en resumen de la sentencia SQL queda así:

(T0.[TrgetEntry] = T3.[BaseEntry]  AND  T0.[TargetType] = T3.[BaseType]  AND  T0.[LineNum] = T3.[BaseLine] )

Pero no ha funcionado, pues al ejecutar el informe me muestra un mensaje que estoy empezando a detestar: "No existen datos como resultado de un corte transversal". También he probado a cerrar paréntesis despues de cada igualdad, pero el resultado es el mismo.

Un saludo

Former Member
0 Kudos

Javier:

Mi consejo es no hacer las relaciones con el targetentry ya que solo vas a relacionar la ultima entrada de una orden de compra, cuando una orden de compra podría tener mas de una oc.

Yo haría una query:

select * from opor t0 inner join por1 t1 on t0.docentry=t1.docentry

left join pdn1 t2 on t2.baseentry=t1.docentry and t2.basetype=22 and t2.baseline=t1.linenum

left join opdn t3 on t2.docentry=t3.docentry

Prueba si esta query te sirve

javier_facessantos
Contributor
0 Kudos

Hola Fernando

Muchísimas gracias!! He probado a cambiar la sentencia de la consulta chapucera que llevaba desarrollada por esta que me has indicado, y al hacerlo ya se mostraba toda la información de las 4 tablas correctamente vinculada. A continuación he sustituido el asterisco por los campos que necesito que me muestre la query, he vuelto a ejecutar y todo perfecto.

Aparte viendo tu sentencia he aprendido algo más acerca de SQL, pues estoy muy pegado y estaba intentando montar esta consulta con el asistente, lo cual no sé si será del todo posible.

Lo dicho, muchas gracias y un saludo

javier_facessantos
Contributor
0 Kudos

Adicionalmente y siguiendo la lógica que había visto en la query de Fernando, he conseguido ampliar la consulta para que muestre también las facturas relacionadas con los pedidos y para que seleccionar los pedidos en función del proyecto al que están imputados. Aparte he sustituido el asterisco por los nombres de los campos que quiero que muestre la consulta. Queda así:

select T0.[Docnum] AS 'Pedido', T0.[Docstatus] AS 'Estado', T0.[Docdate] AS 'Fechadoc', T0.[Cardcode] AS 'Cod Prov', T0.[Cardname] AS 'Proveedor', T0.[NumAtCard] 'Referencia proveedor', T0.[Doctotal] AS 'Importe Total', T0.[PaidToDate] AS 'Pagado hasta la fecha', T0.[Comments] 'Comentarios', T0.[JrnlMemo] AS 'Asiento en el diario', T0.[CtlAccount] AS 'Cuenta asociada', T0.[OwnerCode] 'Autor', T1.[ItemCode] AS 'Artículo', T1.[Dscription] AS 'Descripción', T1.[OpenSum] AS 'Importe pendiente', T1.[AcctCode] AS 'Código de cuenta', T1.[OcrCode] AS 'Ceco', T1.[Project] AS 'Proyecto', T2.[Linestatus] AS 'Estado linea', T3.[DocNum] AS 'Entrada de mercancías', T3.[Comments] AS 'Comentarios', T3.[JrnlMemo] AS 'Entrada diario', T5.[Docnum] AS 'Factura', T5.[Transid] AS 'Apunte contable', T4.[Acctcode] AS 'Cuenta apunte', T5.[PeyMethod] AS 'Vía de pago' from opor t0 inner join por1 t1 on t0.docentry=t1.docentry

left join pdn1 t2 on t2.baseentry=t1.docentry and t2.basetype=22 and t2.baseline=t1.linenum

left join opdn t3 on t2.docentry=t3.docentry

left join pch1 t4 on t4.baseentry=t2.docentry and t4.basetype=20  and t4.baseline=t2.linenum

left join opch t5 on t4.docentry=t5.docentry

where t1.project=[%0]

Un saludo

Answers (0)