Exemplos em SQL
Importante ressaltar que o ID da chamada dos critérios deve corresponder com o cadastro na tela do SAP e que o script deve ser inserido dentro do parâmetro BEGIN, que por sua vez é chamado dentro da função criada, conforme exemplificado no tópico Critérios automáticos.
Segue abaixo exemplos de critérios automáticos para bancos SQL:
Atraso na entrega
(Quantidade de peças em atraso (Data de lançamento do pedido - Data programada para chegada))/ Quantidade total de peças recebidas no mês
IF @id = 1
BEGIN
SELECT @valorEncontrado = CASE WHEN COUNT(T0.dias_atraso) > 0
THEN 'Sim' ELSE 'Não' END
FROM (
SELECT DATEDIFF (day, T3.TaxDate,t1.ShipDate) AS dias_atraso
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN PCH1 T2 ON T0.DocEntry = T2.BaseEntry
INNER JOIN OPCH T3 ON T3.DocEntry = T2.DocEntry
WHERE T2.BaseType=22 and DATEDIFF (day, T3.TaxDate,t1.ShipDate) >= 0
and T3.CreateDate = MONTH(GETDATE())
and T3.CardCode = @fornecedor
) T0
END
Material avariado maior que 71% do total
(Quantidade de peças avariadas identificadas no momento da inspeção / Quantidade total de peças recebidas no mês)
IF @ID = 2
BEGIN
SELECT @valorEncontrado = case when count(*) > 0 then 'Sim' else 'Não' end
FROM (
SELECT
T0.[U_UPItmQty],
T2.qtd_recebida,
SUM(T0.[U_UPItmQty]) * 100 / ISNULL(T2.qtd_recebida,1) as 'qtd_reprovada',
T0.U_UPCrdCod
FROM [@UPQ_OFCA] T0
INNER JOIN [@UPQ_FCA1] T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN (SELECT SUM(T0.Quantity)as qtd_recebida,
T0.ItemCode, T1.CardCode
FROM PCH1 T0
INNER JOIN OPCH T1 ON T0.DOCENTRY = T1.DOCENTRY
WHERE T1.DOCDATE = MONTH(GETDATE())
GROUP BY T0.ItemCode, T1.CardCode
) T2 ON T2.CardCode = T0.U_UPCrdCod
WHERE T1.[U_UPAprovd] = 'N' AND T1.[U_UPNCnfrm] = 00000002 and T0.CreateDate = MONTH(GETDATE())
AND T0.U_UPCrdCod = @fornecedor
GROUP BY T2.qtd_recebida, T0.U_UPCrdCod,T0.[U_UPItmQty]
) T0
WHERE T0.qtd_reprovada > 71
END
Material incorreto maior que 71% do total
Quantidade de peças incorretas identificadas no momento da inspeção / Quantidade total de peças recebidas no mês
IF @id = 3
BEGIN
SELECT @valorEncontrado = case when count(*) > 0 then 'Sim' else 'Não' end
FROM (
SELECT SUM(T0.[U_UPItmQty]) * 100 / ISNULL(T2.qtd_recebida,1) as qtd_reprovada,
T0.U_UPCrdCod
FROM [@UPQ_OFCA] T0
INNER JOIN [@UPQ_FCA1] T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN (SELECT SUM(T0.Quantity)as qtd_recebida,
T0.ItemCode, T1.CardCode
FROM PCH1 T0
INNER JOIN OPCH T1 ON T0.DOCENTRY = T1.DOCENTRY
WHERE T1.DOCDATE = MONTH(GETDATE())
GROUP BY T0.ItemCode, T1.CardCode
) T2 ON T2.CardCode = T0.U_UPCrdCod
WHERE T1.[U_UPAprovd] = 'N' AND T1.[U_UPNCnfrm] = 00000003
AND T0.U_UPCrdCod = @fornecedor
GROUP BY T2.qtd_recebida, T0.U_UPCrdCod
) T0
WHERE T0.qtd_reprovada > 71
END
Quantidade não conforme maior que 71% do total
Quantidade de peças em quantidade não conforme identificadas no momento da inspeção / Quantidade total de peças recebidas no mês
IF @id = 4
BEGIN
SELECT @valorEncontrado = case when count(*) > 0 then 'Sim' else 'Não' end
FROM (
SELECT SUM(T0.[U_UPItmQty]) * 100 / ISNULL(T2.qtd_recebida,1) as qtd_reprovada,
T0.U_UPCrdCod
FROM [@UPQ_OFCA] T0
INNER JOIN [@UPQ_FCA1] T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN (SELECT SUM(T0.Quantity)as qtd_recebida,
T0.ItemCode, T1.CardCode
FROM PCH1 T0
INNER JOIN OPCH T1 ON T0.DOCENTRY = T1.DOCENTRY
WHERE T1.DOCDATE = MONTH(GETDATE())
GROUP BY T0.ItemCode, T1.CardCode
) T2 ON T2.CardCode = T0.U_UPCrdCod
WHERE T1.[U_UPAprovd] = 'N' AND T1.[U_UPNCnfrm] = 00000004
AND T0.U_UPCrdCod = @fornecedor
GROUP BY T2.qtd_recebida, T0.U_UPCrdCod
) T0
WHERE T0.qtd_reprovada > 71
END
Dimensional fora do especificado entre 1% e 10% do total
Quantidade de peças com dimensional fora do especificado identificadas no momento da inspeção / Quantidade total de peças recebidas no mês
IF @id = 5
BEGIN
SELECT @valorEncontrado = case when count(*) > 0 then 'Sim' else 'Não' end
FROM (
SELECT SUM(T0.[U_UPItmQty]) * 100 / ISNULL(T2.qtd_recebida,1) as qtd_reprovada,
T0.U_UPCrdCod
FROM [@UPQ_OFCA] T0
INNER JOIN [@UPQ_FCA1] T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN (SELECT SUM(T0.Quantity)as qtd_recebida,
T0.ItemCode, T1.CardCode
FROM PCH1 T0
INNER JOIN OPCH T1 ON T0.DOCENTRY = T1.DOCENTRY
WHERE T1.DOCDATE = MONTH(GETDATE())
GROUP BY T0.ItemCode, T1.CardCode
) T2 ON T2.CardCode = T0.U_UPCrdCod
WHERE T1.[U_UPAprovd] = 'N' AND T1.[U_UPNCnfrm] = 00000001
AND T0.U_UPCrdCod = @fornecedor
GROUP BY T2.qtd_recebida, T0.U_UPCrdCod
) T0
WHERE T0.qtd_reprovada between 1 and 10
END
Tratamento superficial fora do especificado entre 11% e 25% do total
Quantidade de peças com tratamento superficial fora do especificado identificadas no momento da inspeção / Quantidade total de peças recebidas no mês
IF @id = 6
BEGIN
SELECT @valorEncontrado = case when count(*) > 0 then 'Sim' else 'Não' end
FROM (
SELECT SUM(T0.[U_UPItmQty]) * 100 / ISNULL(T2.qtd_recebida,1) as qtd_reprovada,
T0.U_UPCrdCod
FROM [@UPQ_OFCA] T0
INNER JOIN [@UPQ_FCA1] T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN (SELECT SUM(T0.Quantity)as qtd_recebida,
T0.ItemCode, T1.CardCode
FROM PCH1 T0
INNER JOIN OPCH T1 ON T0.DOCENTRY = T1.DOCENTRY
WHERE T1.DOCDATE = MONTH(GETDATE())
GROUP BY T0.ItemCode, T1.CardCode
) T2 ON T2.CardCode = T0.U_UPCrdCod
WHERE T1.[U_UPAprovd] = 'N' AND T1.[U_UPNCnfrm] = 00000005
AND T0.U_UPCrdCod = @fornecedor
GROUP BY T2.qtd_recebida, T0.U_UPCrdCod
) T0
WHERE T0.qtd_reprovada between 11 and 25
END