Como están he abierto este tema como respuesta a un tema que abrí previamente hace algunos meses
Lo he abierto para poder compartir la solución encontrada al problema propuesto en mi post anterior, el Query que voy a compartir me retorna la edad aparente que tiene un ítem en bodega:
Se explica los criterios bajo los cuales funciona la consulta:
- Se consideran para la consulta, aquellos ítems que tiene stock en SAP.
- Los documentos considerados que afectan entradas de mercaderías, son: Saldos Iniciales, Entrada de Compras, Devoluciones de Compras, Facturas de Proveedores y Notas de Crédito de Proveedores.
- Los documentos considerados que afectan salidas de mercaderías, son: Entregas, Devoluciones de Ventas, Facturas de Deudores y Notas de Crédito de Deudores.
- Se menciona que los documentos considerados en el punto anterior (documentos que generan salidas de mercadería), serán restados de las compras más antiguas existentes.
Este Query es puramente informativo ya que como mencione en el post anterior en nuestra bodega no manejamos ni series ni lotes, y porque los artículos que vendemos no tienen fecha de caducidad y porque el desgaste es mínimo con el tiempo, por lo tanto no es de nuestro interés saber que articulo en especifico tiene una edad sino mas bien un estimado sin importar que articulo sea.
Select "ItemCode"
, "ItemName"
, "ItmsGrpNam"
, "AvgPrice"
, Stock
, case when ("P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas">=0 then "P1"
when ("P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas"<0 and ("P1"+"P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas" >=0 then ("P1"+"P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas"
when ("P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas"<0 and ("P1"+"P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas" <0 then 0
when "P1"=0 then 0 end de0a30
, case when ("P3"+"P4"+"P5"+"P6"+"P7")+"Vtas">=0 then "P2"
when ("P3"+"P4"+"P5"+"P6"+"P7")+"Vtas"<0 and ("P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas" >=0 then ("P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas"
when ("P3"+"P4"+"P5"+"P6"+"P7")+"Vtas"<0 and ("P2"+"P3"+"P4"+"P5"+"P6"+"P7")+"Vtas" < 0 then 0
when "P2"=0 then 0 end de31a60
, case when ("P4"+"P5"+"P6"+"P7")+"Vtas">=0 then "P3"
when ("P4"+"P5"+"P6"+"P7")+"Vtas"<0 and ("P3"+"P4"+"P5"+"P6"+"P7")+"Vtas" >= 0 then ("P3"+"P4"+"P5"+"P6"+"P7")+"Vtas"
when ("P4"+"P5"+"P6"+"P7")+"Vtas"<0 and ("P3"+"P4"+"P5"+"P6"+"P7")+"Vtas" < 0 then 0
when "P3"=0 then 0 end de61a90
, case when ("P5"+"P6"+"P7")+"Vtas">=0 then "P4"
when ("P5"+"P6"+"P7")+"Vtas"<0 and ("P4"+"P5"+"P6"+"P7")+"Vtas" >=0 then ("P4"+"P5"+"P6"+"P7")+"Vtas"
when ("P5"+"P6"+"P7")+"Vtas"<0 and ("P4"+"P5"+"P6"+"P7")+"Vtas" <0 then 0
when "P4"=0 then 0 end de91a120
, case when ("P6"+"P7")+"Vtas">=0 then "P5"
when ("P6"+"P7")+"Vtas"<0 and ("P5"+"P6"+"P7")+"Vtas" >=0 then ("P5"+"P6"+"P7")+"Vtas"
when ("P6"+"P7")+"Vtas"<0 and ("P5"+"P6"+"P7")+"Vtas" < 0 then 0
when "P5"=0 then 0 end de121a150
, case when "P7"+"Vtas">=0 then "P6"
when "P7"+"Vtas"<0 and ("P6"+"P7")+"Vtas" >= 0 then ("P6"+"P7")+"Vtas"
when "P7"+"Vtas"<0 and ("P6"+"P7")+"Vtas" < 0 then 0
when "P6" = 0 then 0 end de151a180
, (case when "P7"+"Vtas"<0 or "P7" = 0 then 0 else "P7"+"Vtas" end) May181
from (
select
T1."ItemCode"
, T1."ItemName"
, T2."ItmsGrpNam"
, T1."AvgPrice"
, Sum(T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") Stock
, Sum(case when T0."DocumentTypeCode" in ('18','20', '310000001') and T0."PostingDate" between ADD_DAYS(CURRENT_DATE,-30) and CURRENT_DATE then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end ) P1
, Sum(case when T0."DocumentTypeCode" in ('18','20', '310000001') and T0."PostingDate" between ADD_DAYS(CURRENT_DATE,-60) and ADD_DAYS(CURRENT_DATE,-31) then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end) P2
, sum(case when T0."DocumentTypeCode" in ('18','20', '310000001') and T0."PostingDate" between ADD_DAYS(CURRENT_DATE,-90) and ADD_DAYS(CURRENT_DATE,-61) then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end) p3
, sum(case when T0."DocumentTypeCode" in ('18','20', '310000001') and T0."PostingDate" between ADD_DAYS(CURRENT_DATE,-120) and ADD_DAYS(CURRENT_DATE,-91) then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end) P4
, sum(case when T0."DocumentTypeCode" in ('18','20', '310000001') and T0."PostingDate" between ADD_DAYS(CURRENT_DATE,-150) and ADD_DAYS(CURRENT_DATE,-121) then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end) P5
, sum(case when T0."DocumentTypeCode" in ('18','20', '310000001') and T0."PostingDate" between ADD_DAYS(CURRENT_DATE,-180) and ADD_DAYS(CURRENT_DATE,-151) then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end) P6
, sum(case when T0."DocumentTypeCode" in ('18','20', '310000001') and T0."PostingDate" <= ADD_DAYS(CURRENT_DATE,-181) then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end) P7
, sum(case when T0."DocumentTypeCode" in ('13','14','15', '16', '19', '21') then (T0."InboundInventoryQuantity" - T0."OutboundInventoryQuantity") else 0 end) "Vtas"
from "_SYS_BIC"."sap.NOMBRE_BASE_DATOS.stock/InventoryTransactionDocumentsFact" T0
inner join "OITM" T1 on T0."LineItemCode" = T1."ItemCode"
inner join "OITB" T2 on T1."ItmsGrpCod" = T2."ItmsGrpCod"
Where --T0."LineItemCode" = 'MT-8200-60-KIT' '6210G-07L' AND
T0."PostingDate" <= CURRENT_DATE
group by T1."ItemCode"
, T1."ItemName"
, T1."AvgPrice"
, T2."ItmsGrpNam"
) TMP
WHERE "STOCK" > 0
este Query corre sin ningún problema sobre HANA y utiliza SQLScript.