cancel
Showing results for 
Search instead for 
Did you mean: 

Pedido de venda cancelado

Former Member
0 Kudos

Caros, experts, bom dia!

Algum dos colegas sabe dizer onde posso encontrar a data de cancelamento de um pedido de venda?

Tentei o campo ORDR.ClsDate mas este campo, em nossa base, não esta sendo alimentado.

Tentei também pela tabela ADOC mas não consegui identificar uma informação que mostra a linha em que houve a modificação do campo "ADOC.Docstatus" para "C".

Atenciosamente,

Accepted Solutions (0)

Answers (2)

Answers (2)

fbio_bilicki
Active Contributor
0 Kudos

Boa tarde,

lembro que no meu antigo sistema tínhamos essa data por causa da ISO 9000, era um requisito para analisar os pedidos cancelados por data de cancelamento, até o momento não achei nada no SAP.

Sobre a data de atualização temos que tomar cuidado, mesmo o pedido estando cancelado ele aceita atualizações, pode alguém ir no pedido e alterar algo (como por exemplo, uma observação), e atualizar o pedido, perdendo a referência de quando foi cancelado realmente.

O legal  seria além do Y do Canceled, ter um campo "CanceledDate", "CanceledTime" e "CanceledUser" pra registrar quem cancelou o documento.

Um jeito que consegui pegar seria a primeira vez que o ADOC.Canceled for igual a "Y", como o cancelamento é uma alteração, ele registra o usuário que cancelou no campo UserSign2, no caso só de cancelament, ele não gera ADOC, então pegamos do pedido mesmo (joguei 999999 no loginstanc pra ficar no final).

No exemplo, estou pesquisando documento 6008, pedido de venda (obj 17)


SELECT TOP 1 * FROM

(

select top 1 T0.DocEntry, t0.UpdateDate, T1.U_NAME, T0.CANCELED, t0.LogInstanc

from adoc T0

INNER JOIN ousr t1 on t1.USERID = t0.UserSign2

where T0.docentry = 6008 and T0.ObjType = 17 and T0.CANCELED = 'Y'

union all

select T0.DocEntry, t0.UpdateDate, T1.U_NAME, T0.CANCELED, 999999 as LogInstanc

from ordr T0

INNER JOIN ousr t1 on t1.USERID = t0.UserSign2

where T0.docentry = 6008 and T0.ObjType = 17 and T0.CANCELED = 'Y'

) G0

order by G0.LogInstanc


Espero ter ajudado

Fabio.

SAP 9.0 PL15 / SAP 9.1 PL8(test)

rodrigofeula
Active Contributor
0 Kudos

Boa tarde Thiago, quando você cancela o documento no SAP Business One o sistema atualiza o campo "Canceled" de "N" para "Y" e marca a data de execução desta atualização no UpdateDate.

Com isto você terá que fazer um comparativo entre os registros da ADOC para o seu documento, buscando o momento (registro) em que alterou de 'N' para 'Y' o campo "Canceled" então na primeira linha com "Y" pegar o campo 'UpdateDate', aqui está data em que foi cancelado.

Abraço.

Att,

Rodrigo da Costa Feula

Former Member
0 Kudos

Rodrigo, muito obrigado pelas considerações.

Como eu estou precisando de uma lista de pedidos cancelados em determinado período, encontrei apenas uma dificuldade em conseguir a informação.

Alguns pedidos são criados e encerrados (ou seja na tabela ADOC somente há uma linha, com os dados anteriores) neste caso eu poderia fazer um select onde o campo ORDR.Canceled="Y" e  ORDR.UpdateDate esta dentro do intervalo. Porém outros podem ser encerrados e após isto modificados. Exemplo, criei um pedido em 10/out/2015, cancelei ele em 15/out/2015 e por algum motivo fiz alguma alteração em um determinado campo de usuário em 05/11/2015.

Neste ultimo caso o pedido será mostrado quando emitirmos a pesquisa do ORDR.Canceled="Y" e  ORDR.UpdateDate no começo de novembro (com filtro do mes de outubro) e também no começo de dezembro (com filtro do mês de novembro), mas na verdade ele foi cancelado em outubro, apesar da alteração em novembro.

Tu poderia me ajudar a sanar esta pendência? Não consegui desenvolver o tema.

rodrigofeula
Active Contributor
0 Kudos

Thiago, na ADOC cada registro tem um numerador.

Pegue o registro com menor numerador, dentro do intervalo do seu documento quando o campo Canceled estiver com 'Y'.

Ou o primeiro registro de atualização do documento que o Canceled está igual a "Y".

Acredito que o resultado será o mesmo;

Abraço,

Rodrigo da Costa Feula

Former Member
0 Kudos

Rodrigo,

Obrigado pelas explicações.

Não consegui visualizar ainda a solução pois em um caso de criação seguida de um cancelamento o SAP não cria uma linha de cancelamento na tabela ADOC.

Vou solicitar ajuda à nossa assessoria.

Agradeço a atenção.

rodrigofeula
Active Contributor
0 Kudos

Thiago, pensando em uma consulta SQL, talvez seria interessante o uso de CASE (embora alguns não gostem deste uso).

Se documento com status igual a cancelado e um único registro em adoc

     Então Selecionar a data de atualização do documento

Se documento com status igual a cancelado e existir mais de um registro em adoc

     Então Selecionar a data de atualização do primeiro registro com cancelado = "Y" na adoc.

Enfim, depois nos posicione com a solução.

Att,

Rodrigo da Costa Feula