Ayuda SAP

Query para seguimiento de solicitud de compra

Buenos dias, Encontré en este link gran ayuda a mi problema que es conseguir un seguimientos a las solicitudes de compra creadas.

Reporte de Solicitudes de compra, Pedidos y Entrad

Lo que necesito es modificar este reporte para que, en el caso que la solicitud no tenga una oferta y se haya creado directamente pedido, también me muestre el seguimiento. Ya que si observan en los casos que no posee oferta se corta automáticamente la cadena por mas que tenga pedido y entrada de mercancía. Espero se entienda y me puedan ayudar.
Saludos!

Hola @Lucas_Tugas, que tal si pasas por el apartado #presentaciones, así todos conocemos más a que te dedicas y que versión de SAP usas.

Seguro después de presentarte conseguirás varias respuestas a tus consultas.

Saludos.

1 me gusta

Muchas Gracias por la orientación!
Saludos!

si no utilizas las ofertas en tu proceso utiliza este codigo

revise el query y es muy bueno en el siguiente flujo
Requisicion – OC — Entrada – Factura

pero al parecer no jala cuando el flujo es diferente
Requisicion --oc --Factura reserva --entrada

se tendria que cambiar los Joins

SELECT DISTINCT (T0.DocNum) ‘ID’, T1.DocDate [Fecha Solicitud],T0.DocNum [Solicitud],Case When T4.DocEntry <> 0 Then ‘Autorizada’ When T0.CANCELED = ‘N’ Then ‘Pendiente de Autozizar’ When T0.CANCELED = ‘Y’ Then ‘Cancelada’ END [Estatus],

       T4.DocDate[Fecha de Pedido],T4.DocNum [Pedido],Case When T6.DocEntry <> 0 Then 'Autorizada' When T4.CANCELED = 'N' Then 'Pendiente de Autozizar' When T4.CANCELED = 'Y' Then 'Cancelada' END [Estatus],
     T6.DocDate[Fecha de Entrega],T6.DocNum [Entrega],Case When T8.DocEntry <> 0 Then 'Autorizada' When T6.CANCELED = 'N' Then 'Pendiente de Autozizar' When T6.CANCELED = 'Y' Then 'Cancelada' END [Estatus],
     T8.DocDate[Fecha de Entrega],T8.DocNum [Factura'],Case When T8.DocStatus = 'O' Then 'Abierta' When T8.DocStatus = 'C' Then 'Cerrada'  END [Estatus],
     T0.ReqName [Solicitado por...],
     T4.CardName [Proveedor]

FROM OPRQ T0
LEFT JOIN PRQ1 T1 ON T0.[DocEntry] = T1.[DocEntry]

LEFT JOIN OPOR T4 ON T1.TrgetEntry = T4.DocEntry
LEFT JOIN POR1 T5 ON T4.DocEntry = T5.DocEntry
LEFT JOIN OPDN T6 ON T5.TrgetEntry = T6.DocEntry
LEFT JOIN PDN1 T7 ON T6.DocEntry = T7.DocEntry
LEFT JOIN OPCH T8 ON T7.TrgetEntry = T8.DocEntry
LEFT JOIN PCH1 T9 ON T8.DocEntry = T9.DocEntry
Where T0.DocDate BETWEEN ‘[%0]’ AND ‘[%1]’

No esta sencillo, sigo haciendo pruebas y no puedo llegar con la solucion, quizas no la tenga.
El problema es que NO SIEMPRE se utiliza las ofertas. Y tendria que solucionar lo de los JOIN para que reconozca la Factura Reserva un un paso de cumplimiento de OC, ya que solo reconoce la entrada de mercancia para declararla “cumplida”.
Quizas es muy rebuscado lo que estoy queriendo hacer, desde ya que si lo logro lo compartiré para toda la comunidad.
Gracias por los intentos!
Saludos.

en su momento realice con un cliente un proyecto de tiempos en procesos a lo cual por este tema tuve que separa las consultas , este va enfocado a ventas entre proceso y proceso lo que marcaba la diferencia era el join de tablas

este es de facturas res

SELECT distinct T0.[DocNum] ‘Pedido’,t0.CANCELED,

                           T0.[CardCode]'SN',

                           T0.[CardName]'NOMBRE',

             t5.DocNum 'Factura',                             

t3.DocNum ‘Entega’,

t6.DocEntry ‘Devolución’,

t8.DocNum’NC’

-------------PED_FACT------------------

,cast(convert(varchar(10),T0.CREATEDATE,112) as Varchar(15)) +’ ’ + T0.[u_resumencompra] AS FECHA_PED

,cast(convert(varchar(10),T5.CREATEDATE,112) as Varchar(15)) +’ ’ + T5.[u_resumencompra] AS FECHA_FAC

,DATEdiff (HOUR, cast(convert(varchar(10),T0.CREATEDATE,112) as Varchar(15)) +’ ’ + T0.[u_resumencompra],cast(convert(varchar(10),T5.CREATEDATE,112) AS Varchar(15)) +’ ’ + T5.[u_resumencompra]) HORAS_PED_FAC

-----------------FACT-ENTREGA-------------

,cast(convert(varchar(10),T5.CREATEDATE,112) as Varchar(15)) +’ ’ + T5.[u_resumencompra] AS FECHA_FAC

,cast(convert(varchar(10),T3.CREATEDATE,112) as Varchar(15)) +’ ’ + T3.[u_resumencompra] AS FECHA_ENT

,isnull(DATEdiff (HOUR, cast(convert(varchar(10),T5.CREATEDATE,112) as Varchar(15)) +’ ’ + T5.[u_resumencompra],cast(convert(varchar(10),T3.CREATEDATE,112) AS Varchar(15)) +’ ’ + T3.[u_resumencompra]),0) HORAS_FAC_ENT

------------------------SUMA-------------

,isnull(DATEdiff (HOUR, cast(convert(varchar(10),T0.CREATEDATE,112) as Varchar(15)) +’ ’ + T0.[u_resumencompra],cast(convert(varchar(10),T5.CREATEDATE,112) AS Varchar(15)) +’ ’ + T5.[u_resumencompra]),0)

  • isnull(DATEdiff (HOUR, cast(convert(varchar(10),T5.CREATEDATE,112) as Varchar(15)) +’ ’ + T5.[u_resumencompra],cast(convert(varchar(10),T3.CREATEDATE,112) AS Varchar(15)) +’ ’ + T3.[u_resumencompra]),0) TOTAL_HORAS

FROM ORDR T0

INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry

left join INV1 T4 on t4.BaseEntry=t0.DocEntry

left join OINV T5 on t5.DocEntry=t4.DocEntry

LEFT join dln1 T2 on T2.baseentry = t5.docentry

LEFT join odln T3 on T3.docentry = T2.docentry and t2.linenum = T2.baseline

left join RDN1 T6 on t3.docentry = t6.baseEntry

left join RIN1 t7 on t7.BaseEntry = t5.DocEntry

left join ORIN T8 ON t8.DocEntry = t7.DocEntry

WHERE datepart(year,T0.[TAXDate]) in (2017,2018) and T0.[docnum] IN ( ‘13936’, ‘17390’, ‘17391’) and t0.[CANCELEd] =‘N’ and T5.[isIns]=‘y’

order by t0.DocNum asc

este es de factura deudor

SELECT distinct T0.[DocNum] ‘Pedido’,t0.CANCELED,

                           T0.[CardCode]'SN',

                           T0.[CardName]'NOMBRE',

             t5.DocNum 'Factura',                             

t3.DocNum ‘Entega’,

t6.DocEntry ‘Devolución’,

t8.DocNum’NC’

-------------PED_FACT------------------

,cast(convert(varchar(10),T0.CREATEDATE,112) as Varchar(15)) +’ ’ + T0.[u_resumencompra] AS FECHA_PED

,cast(convert(varchar(10),T3.CREATEDATE,112) as Varchar(15)) +’ ’ + T3.[u_resumencompra] AS FECHA_ENT

,DATEdiff (HOUR, cast(convert(varchar(10),T0.CREATEDATE,112) as Varchar(15)) +’ ’ + T0.[u_resumencompra],cast(convert(varchar(10),T3.CREATEDATE,112) AS Varchar(15)) +’ ’ + T3.[u_resumencompra]) HORAS_PED_ENT

-----------------ENTREGA-FACTU-------------

,cast(convert(varchar(10),T3.CREATEDATE,112) as Varchar(15)) +’ ’ + T3.[u_resumencompra] AS FECHA_ENT

,cast(convert(varchar(10),T5.CREATEDATE,112) as Varchar(15)) +’ ’ + T5.[u_resumencompra] AS FECHA_FAC

,isnull(DATEdiff (HOUR, cast(convert(varchar(10),T3.CREATEDATE,112) as Varchar(15)) +’ ’ + T3.[u_resumencompra],cast(convert(varchar(10),T5.CREATEDATE,112) AS Varchar(15)) +’ ’ + T5.[u_resumencompra]),0) HORAS_ENT_FAC

------------------------SUMA-------------

,isnull(DATEdiff (HOUR, cast(convert(varchar(10),T0.CREATEDATE,112) as Varchar(15)) +’ ’ + T0.[u_resumencompra],cast(convert(varchar(10),T3.CREATEDATE,112) AS Varchar(15)) +’ ’ + T3.[u_resumencompra]),0)

  • isnull(DATEdiff (HOUR, cast(convert(varchar(10),T3.CREATEDATE,112) as Varchar(15)) +’ ’ + T3.[u_resumencompra],cast(convert(varchar(10),T3.CREATEDATE,112) AS Varchar(15)) +’ ’ + T5.[u_resumencompra]),0) TOTAL_HORAS

FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
LEFT join dln1 T2 on T2.baseentry = t0.docentry and t1.linenum = T2.baseline
LEFT join odln T3 on T3.docentry = T2.docentry
left join INV1 T4 on t4.BaseEntry=t3.DocEntry
left join OINV T5 on t5.DocEntry=t4.DocEntry
left join RDN1 T6 on t3.docentry = t6.baseEntry
left join RIN1 t7 on t7.BaseEntry = t5.DocEntry
left join ORIN T8 ON t8.DocEntry = t7.DocEntry

WHERE datepart(year,T0.[TAXDate]) in (2017,2018) and T0.[docnum] IN ( ‘17392’, ‘17379’) and t0.[CANCELEd] =‘N’

order by t0.DocNum asc