Avalados por :

Problemas com a produção e tipo de base na consulta ABAP: Revisão de código OIGE, OIGN e OWOR

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Olá a todos. Estou tentando criar uma consulta que vincule essas 3 tabelas que são OIGE, OIGN e OWOR, mas meu código parece estar incorreto porque estou tendo problemas com a produção e também o tipo de base número parece não estar correto. Alguém poderia revisar meu código abaixo, por favor?

SELECT T0.[DocNum] 'Issue for Production', t6.docnum, t7.BaseType,t7.BaseRef 'Job', T0.DocDate, T1.[ItemCode], <br>t1.Dscription,t5.PlannedQty,T1.[Quantity] as 'Issued Qty',t7.Quantity as 'Complete/Return qty',<br>t1.UomCode,t1.unitMsr,t1.WhsCode,t3.ItmsGrpNam,t0.comments,t1.linenum<br>FROM OIGE T0  <br>INNER JOIN IGE1 T1 ON T0.[DocEntry] = T1.[DocEntry] <br>INNER JOIN OITM T2 ON T1.[ItemCode] = T2.[ItemCode] <br>INNER JOIN OITB T3 ON T2.[ItmsGrpCod] = T3.[ItmsGrpCod] <br>inner join OWOR t4 on t4.DocNum = t1.BaseRef<br>left join wor1 t5 on t4.DocEntry=t5.DocEntry and t1.ItemCode=t5.ItemCode<br>left join OIGN t6 on t6.DocEntry=t0.DocEntry <br>left join IGN1 t7 on t7.DocEntry=t6.DocEntry <br>WHERE t3.ItmsGrpNam='RM-HC-NONWOVEN' --and t4.DocNum='5000574' <br>--ISNULL(T3.[itmsgrpnam],'') like '%[%2]%'  <br>order by t0.DocNum, t1.ItemCode
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

Olá,

Experimente esta consulta,

SELECT T0.[DocNum] 'Issue for Production', t6.docnum, t7.BaseType,t7.BaseRef 'Job', T0.DocDate, T1.[ItemCode],

t1.Dscription,t5.PlannedQty,T1.[Quantity] as 'Issued Qty',t7.Quantity as 'Complete/Return qty',

t1.UomCode,t1.unitMsr,t1.WhsCode,t3.ItmsGrpNam,t0.comments,t1.linenum

FROM OIGE T0

INNER JOIN IGE1 T1 ON T0.[DocEntry] = T1.[DocEntry]

INNER JOIN OITM T2 ON T1.[ItemCode] = T2.[ItemCode]

INNER JOIN OITB T3 ON T2.[ItmsGrpCod] = T3.[ItmsGrpCod]

inner join OWOR t4 on t4.DocNum = t1.BaseRef and T1.[BaseType] = 202

left join wor1 t5 on t4.DocEntry=t5.DocEntry and t1.ItemCode=t5.ItemCode

left join OIGN t6 on t6.DocEntry=t0.DocEntry

left join IGN1 t7 on t7.DocEntry=t6.DocEntry

WHERE t3.ItmsGrpNam='RM-HC-NONWOVEN' --and t4.DocNum='5000574'

--ISNULL(T3.[itmsgrpnam],'') like '%[%2]%'

order by t0.DocNum, t1.ItemCode

Saudações,

Nagarajan

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Os seus joins estão incorretos. Este seria o join correto:

FROM OIGE T0INNER JOIN IGE1 T1 ON T0.[DocEntry] = T1.[DocEntry]...INNER JOIN WOR1 T4 ON T1.[BaseType] = '202' AND T1.[BaseEntry] = T4.[DocEntry] AND T1.[BaseLine] = T4.[LineNum]INNER JOIN OWOR T5 ON T4.[DocEntry] = T5.[DocEntry]LEFT JOIN IGN1 T6 ON T5.[ObjType] = T5.[BaseType] AND T5.[DocEntry] = T6.[BaseEntry]LEFT JOIN OIGN T7 ON T6.[DocEntry] = T7.[DocEntry]

Tenha em mente que alterei alguns identificadores de tabelas, então certifique-se de alterá-los em seu select.

Saudações,

Matija

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Nur,
Na minha opinião, você deve manter a tabela de Ordens de Produção como tabela base e vincular o problema de produção e a recepção de dados de produção a ela.

Por favor, teste o seguinte script como exemplo e faça alterações conforme suas necessidades. Este script não lida com a decomposição de Ordens de Produção, pois sua lógica é completamente diferente.

Cumprimentos

Unnikrishnan

Declarar @FDate DateTime, @TDate DateTime

Selecionar @FDate = Min(A.DocDate), @TDate = Max(A.DocDate) from OIGN A where A.DocDate >=[%0] and A.DocDate<=[%1]

Definir @FDate =[%0]

Definir @TDate = [%1]

--Selecionar @FDate, @TDate

Selecionar PrdnHd.DocNum [Número da Ordem de Produção],PrdnHd.PostDate [Data de Publicação da Ordem de Produção], PrdnHd.CreateDate [Data de Criação da Ordem de Produção]

,Caso PrdnHd.Status when 'P' Then 'Planejado'

Quando 'R' então 'Liberado'

Quando 'L' então 'Fechado' end as [Estado da Ordem de Produção]

,PrdnHd.ItemCode[Código do Produto Acabado]

,PrdnHd.PlannedQty [Quantidade Planejada do Produto Acabado]

,PdnIss.IssDate [Data de Emissão de Matéria-Prima]

, PdnIss.IssQty [Quantidade de Emissão de Matéria-Prima], PdnIss.IssVal [Valor de Emissão de Matéria-Prima]

,PdnRec.RecDate [Data de Recebimento do Produto Acabado]

, PdnRec.RecQty [Quantidade de Recebimento do Produto Acabado], PdnRec.RecVal+isnull(PdnClosure.AdjVal,0) [Valor de Recebimento do Produto Acabado]

,isnull(PdnClosure.AdjVal,0)[Valor do Ajuste de Fechamento]

, isnull(PdnRec.RecQty,0)-isnull(PdnIss.IssQty,0) [Quantidade de Variação]

, (isnull(PdnRec.RecVal,0)+isnull(PdnClosure.AdjVal,0))-(isnull(PdnIss.IssVal,0)) [Valor da Variação]

from

OWOR PrdnHd

Esquerda Junte ( Selecionar A.AppObjAbs [Entrada de Produção]

,Max(A.DocDate) [IssDate]

,Sum(A.OutQty-A.InQty)[IssQty] , -Sum(A.TransValue)[IssVal]

from OINM A

Junte-se a OITM B em A.ItemCode = B.ItemCode

onde ((A.TransType =60 e A.ApplObj=202) ou (A.TransType =59 e A.ApplObj=202 e A.AppObjType='C'))

Agrupar Por A.AppObjAbs

)

PdnIss em PrdnHd.DocEntry = PdnIss.PdnEntry

Esquerda Junte ( Selecionar A.AppObjAbs [Entrada de Produção]

,Max(A.DocDate) [RecDate]

,Sum(A.InQty-A.OutQty)[RecQty] , Sum(A.TransValue)[RecVal]

from OINM A

onde A.TransType =59 e A.ApplObj=202 e A.AppObjType='P'

Agrupar Por A.AppObjAbs

)

PdnRec em PrdnHd.DocEntry = PdnRec.PdnEntry

Esquerda Junte ( SELECIONAR T0.CreatedBy[Entrada de Produção], Sum(T0.TransValue)[AdjVal]

DE OINM T0

ONDE T0.TransType = '202'

Agrupar Por T0.CreatedBy

Tendo Sum(T0.TransValue)<>0

)

PdnClosure em PrdnHd.DocEntry = PdnClosure.PdnEntry

Onde PrdnHd.PostDate >= @FDate e PrdnHd.PostDate <= @TDate

e PrdnHd.U_pType não em ('L','C')

Ordenar Por PrdnHd.PostDate ,PrdnHd.DocEntry

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?