cancel
Showing results for 
Search instead for 
Did you mean: 

Consulta de Trazabilidad de Pedidos - Entrada de Mercaderia - Precio de Entrega - Factura Proveedores

jmic
Explorer
0 Kudos

Estimados

La idea de la creación de esta consulta es obtener la trazabilidad completa de la OC este abierta-cerrada o cancelada para verificar si se realizó la entrada de mercadería, el precio de entrega o si se facturo.

Las tablas que se deben ocupar serian:

Pedido (OPOR - POR1)

Entrada de Mercaderia (OPDN - PDN1)

Entrega de Precio (OIPF - IPF1)

Factura (OPCH - PCH1)

Deberia de quedar de esta forma, en verdad es que he realizado muchas pruebas pero no tengo un resultado optimo, favor su ayuda.

OPOR.DocNumOPOR.DocDateOPOR.NumAtCardOPOR.CardNameOPOR.DocTotalOPOR.DocCurOPDN.DocNumOPDN.DocDateOPDN.NumAtCardOPDN.CardNameOPDN.DocCurOPDN.DocTotalOIPF.DocNumOIPF.DocNumOIPF.DocTotal
N° OCFecha OCReferenciaNombre ProveedorTotal monto OCMonedaEntrada de mercaderiaFecha de entradaReferenciaNombre ProveedorMonedaTotal monto OCPrecio de entregaFecha precio de entregaTotal monto Precio de Entrega

Atte.

Accepted Solutions (1)

Accepted Solutions (1)

former_member227744
Active Participant
0 Kudos

José Miguel:

Acá una query que puede servir de guía, solo debes agregar la tabla del precio de entrega (OIPF y IPF1)

----------------------------------------------------x---------------------------------------------------------

SELECT

T0.[Docnum] AS 'Pedido',

T0.[Docdate] AS 'Fechadoc',

T0.NumAtCard,

T0.[Cardcode] ,

T0.[Cardname] AS 'Proveedor',

T1.[ItemCode] AS 'Artículo',

T1.[Dscription] AS 'Descripción',

T1.Quantity as 'Cantidad Solicitada',

T1.OpenCreQty 'Cantidad Pendiente OC',

Case when T2.[Linestatus] = 'O' Then 'Abierta' when T2.[Linestatus] = 'C' then 'Completa' else 'Eliminada' end ,

T3.[DocNum] AS 'Entrada de mercancías',

T2.OpenCreQty 'Cantidad Pendiente de Factura',

T5.[Docnum] AS 'Número Interno Factura',

T5.FolioNum 'Folio Factura'

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

Left join OITM T6 on T1.ItemCode = T6.ItemCode

WHERE T6.[ItmsGrpCod]= 106  --- ACÀ PUEDES FILTRAR POR OTRO CRITERIO

-----------------------------------------------------------X---------------------------------------------

Espero haber aportado.

Saludos cordiales,

Manuel Díaz G.

jmic
Explorer
0 Kudos

Manuel gracias por tu ayuda voy a ejecutarla y te comento como resulto.

Atte.

José Miguel I.C.

Answers (3)

Answers (3)

0 Kudos

Hola Jose

Estuve viendo tu consulta y queria replicarla por que tambien tengo un caso similar pero tengo un problema, SAP me arroja un error en la linea 47 este es el error:

1). [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;260 invalid column name: T0.DOCENTRY: line 47 col 36 '' (ECM2) (at pos 945)

Y esta es la linea donde arroja el error:

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

Podrias ayudarme?

jmic
Explorer
0 Kudos

Manuel - Samuel

Gracias por su ayuda logre conectar las tablas y crear la trazabilidad, dejo aca el codigo creado.

SELECT

T0.[Docnum] AS 'Numero de Pedido',

T0.[Docdate] AS 'Fecha documento de Pedido',

T0.[NumAtCard] AS 'Referencia de Pedido',

T0.[Cardcode] AS 'Codigo de Cliente/Proveedor',

T0.[Cardname] AS 'Nombre Proveedor',

T0.[DocTotal] AS 'Total de Pedido',

T1.[ItemCode] AS 'Numero de Articulo',

T1.[Quantity] AS 'Cantidad Solicitada',

T1.[OpenCreQty] AS 'Cantidad Pendiente OC',

T2.OpenCreQty 'Cantidad Pendiente de Factura',

Case

When T2.[Linestatus] = 'O'

Then 'Abierta' when T2.[Linestatus] = 'C'

Then 'Completa' else 'Eliminada' end ,

T3.[DocNum] AS 'Numero Entrada de mercancías',

T3.[DocDate] AS 'Fecha Entrada de mercancías',

T5.[Docnum] AS 'Número Interno de Factura',

T5.[FolioNum] AS 'Numero Folio de Factura',

T7.[Docnum] AS 'Número Precio de Entrega',

T7.[DocDate] AS 'Fecha Precio de Entrega',

T7.[DocCur] AS 'Moneda Precio de Entrega',

T7.[DocTotal] AS 'Total Precio de Entrega'

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

left join ipf1 t6 on t6.baseentry=t2.docentry and t6.basetype=20  and t6.linenum=t2.linenum

left join oipf t7 on t6.docentry=t7.docentry

former_member227744
Active Participant

Perfecto José Miguel, no olvides puntuar las respuestas.

Saludos cordiales,

Manuel Díaz G.

jmic
Explorer
0 Kudos

Manuel

     La ejecute y funciona pero al querer cambiar algunos parametros me envia error por ejemplo le saque el tema de facturacion para agregarle el precio de entrega y me envia el siguiente error.

1). [Microsoft][SQL Server Native Client 10.0][SQL Server]El nombre de columna 'baseline' no es válido.

2). [Microsoft][SQL Server Native Client 10.0][SQL Server]El nombre de columna 'linenum' no es válido.

3). [Microsoft][SQL Server Native Client 10.0][SQL Server]No se puede preparar la instrucción o instrucciones.  '' (SWEI)

Este es el codigo de la query que realize, basada en la que me enviaste:

SELECT

T0.[Docnum] AS 'Numero de Pedido',

T0.[Docdate] AS 'Fecha documento de Pedido',

T0.[NumAtCard] AS 'Referencia de Pedido',

T0.[Cardcode] AS 'Codigo de Cliente/Proveedor',

T0.[Cardname] AS 'Nombre Proveedor',

T0.[DocTotal] AS 'Total de Pedido',

T1.[Quantity] AS 'Cantidad Solicitada',

T1.[OpenCreQty] 'Cantidad Pendiente OC',

T2.OpenCreQty 'Cantidad Pendiente de Factura',

Case

When T2.[Linestatus] = 'O'

Then 'Abierta' when T2.[Linestatus] = 'C'

Then 'Completa' else 'Eliminada' end ,

T3.[DocNum] AS 'Numero Entrada de mercancías',

T3.[DocDate] AS 'Fecha Entrada de mercancías',

T5.[Docnum] AS 'Número Interno Factura',

T5.FolioNum 'Folio Factura',

T7.[Docnum] AS 'Número Precio de Entrega',

T7.[DocDate] AS 'Fecha Precio de Entrega',

T7.[DocCur] AS 'Moneda Precio de Entrega',

T7.[DocTotal] AS 'Total Precio de Entrega'

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

left join ipf1 t6 on t6.baseentry=t3.docentry and t6.basetype=20  and t6.baseline=t3.linenum

left join oipf t7 on t6.docentry=t7.docentry

Tablas que se ocupan:

t0 = OPOR (Pedido Cabecera)

t1 = POR1 (Pedido Grilla)

t2 = PDN1 (Entrada Mercaderia Grilla)

t3 = OPDN (Entrada Mercaderia Cabecera)

t4 = pch1 (Factura Grilla)   

t5 = opch (Factura Cabecera)

t6 = ipf1 (Precio de Entrega Grilla)

t7 = oipf (Precio de Entrega cabecera)   

Favor tu ayuda.

Atte.

José Miguel I.C.

Former Member
0 Kudos

Buenas tardes mi estimado Jose Miguel

El error que te aparece es por que en la tabla t6 IPF1 no existe el campo baseline, y en la tabla t3 OPDN tampoco existe el campo linenum, espero haberte ayudado

Saludos