Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

Consulta Formatada - Procedimento de Aprovação

Olá Experts,

Estou batendo cabeça com um procedimento de autorização baseado em uma consulta formatada e preciso da ajuda dos companheiros.

Até onde entendo, para se usar uma consulta formatada em Procedimento de Autorização, é necessário retornar "TRUE" no código sql da consulta, e isso as minhas consultas, fazem de acordo com o contexto. Porem, quando coloco em pratica na rotina de aprovação, nada acontece...

A razao da consulta é checar se o somatorio das quantidades no Pedido de Venda é maior que o somotario das quantidades na Cotação de Venda... quando rodo a consulta a partir do documento de marketing destino (pedido de venda) vejo que o retorno atende aos criterios que estou passando (print anexo), mas o pedido nao cai para a aprovação...

Tenho dividas se o problema está na sintaxe da consulta.

Ja fiz varias alterando a sintaxe e em todas chego no resultado desejado... (ver abaixo):

Onde está o numero "10 " uso uma variável que é o numero do documento base (numero da cotação): $[Rdr1.BaseEntry]

Sintaxe 1 (mais simples)

-------------------------------------------------

Declare

@qtCota Numeric(10,4),

@qtPed Numeric(10,4)

Set @qtCota = (select SUM(Quantity) from qut1 where DocEntry = 10 and unitMsr = 'M2'

group by DocEntry)

Set @qtPed = (select SUM(Quantity) from rdr1 where BaseEntry = 10 and unitMsr = 'M2'

group by BaseEntry)

If @qtPed > @qtCota

  Begin

  select 'True', @qtPed as Ped, @qtCota as Cota

  End

Else

  Begin

  select 'false'

  End

----------------------------------------------------------------------------

Sintaxe 2 (um pouco mais complexa para aprofundar o resultado)

--------------------------

Declare

@qtCota Numeric(10,4),

@numCota Numeric,

@qtPed Numeric(10,4)

Set @numCota = (Select distinct rdr1.BaseEntry from Rdr1 inner join Ordr on Rdr1.DocEntry = 10)

Select 'true',

(select SUM(Quantity) from rdr1 where BaseEntry = @numCota and unitMsr = 'M2' group by BaseEntry) as Ped ,

(select SUM(Quantity) from qut1 where DocEntry = @numCota and unitMsr = 'M2' group by DocEntry) as Cota

from ORDR a

     inner join RDR1 b on a.DocEntry = b.DocEntry

     inner join QUT1 c on b.BaseEntry = c.DocEntry

     where b.BaseEntry = @numCota

     Group by

     c.DocEntry,

     b.BaseEntry

     Having (select SUM(Quantity) from rdr1 where BaseEntry = @numCota and unitMsr = 'M2'

  group by BaseEntry) >

  (select SUM(Quantity) from qut1 where DocEntry = @numCota and unitMsr = 'M2'

  group by DocEntry)

-------------------------------------------------------------------

Sintaxe 3

------------------------

Declare

@qtCota Numeric(10,4),

@numCota Numeric,

@qtPed Numeric(10,4)

Set @numCota = (Select distinct rdr1.BaseEntry from Rdr1 inner join Ordr on Rdr1.DocEntry = 10)

Select

case when

(select SUM(Quantity) from rdr1 where BaseEntry = @numCota and unitMsr = 'M2'  group by BaseEntry) >

(select SUM(Quantity) from qut1 where DocEntry = @numCota and unitMsr = 'M2'  group by DocEntry)

Then 'true'

else 'false'

End

Alguem consegue me dar uma dica que ajude a resolver essa bronca?

Saudações

Wagner Bezerra

telaTrue.png (72919 B)
Former Member

Helpful Answer

by
Not what you were looking for? View more on this topic or Ask a question