Ir al contenido

Tem alguma badi na Ordem de Frete?

24 de junio de 2025 por
Tem alguma badi na Ordem de Frete?
eduardo@seinspire.com.br
| Sin comentarios aún

Pergunta que fizeram hoje no grupo de TM do Whatsapp... tem alguma Badi que pode ser chamada no momento de salvar uma ordem de frete?


Eu gosto responder essa pergunta porque temos algo MUITO melhor no TM do que uma simples Badi. Em vários pontos no TM utilizamos um recurso chamado de Estratégias do Controlador de Processo (Process Controller Strategies) que permite por exemplo você implementar seus desenvolvimentos/regras de negócio e configurá-los no sistema! 


E, própria SAP entrega diversas estratégias via controlador de processos e que podem ser utilizadas pelos clientes! Por exemplo, as estratégias de otimização estão definidas no controlador de processos. Este permite também que você possa conjugar os seus desenvolvimentos junto as estratégias standard! Olha que fantástico! Pois é.. você pode componentizar os seus desenvolvimentos e definir uma sequencia de execução.


Além disso, o controlador de processo pode ser utilizado também por qualquer outro desenvolvimento que você tenha; proporcionando assim mais flexibilidade e governança dos seus desenvolvimentos.


Bom... vamos lá... para facilitar o entendimento vou explicar como... com um exemplo de implementação...  

Vocês lembram da pergunta... "tem alguma Badi que pode ser chamada no momento de salvar uma ordem de frete?"

Nas configurações do tipo de ordem de frete temos os seguintes campos no grupo Estratégias adicionais:

  • Estratégia de criação 
  • Estratégia de gravação
  • Estratégia de eliminação



Se você consultar na lista de valores, por exemplo no campo Estratégia de criação você vai ver que a SAP fornece algumas estratégias.. exemplo: disparar a seleção do agente de frete ao criar a ordem de frete.


Então vamos criar uma estratégia que será chamada quando gravarmos as alterações na ordem de frete. Para isso.. siga os passos abaixo:


Passo 1. A partir do customizing do seu S/4HANA, execute a atividade no caminho SPRO -> Gestão de transportes > Funções básicas > Controlador de processos > Definir serviço. 


Aqui não iremos alterar nada. Quero somente comentar sobre os serviços disponibilizados pela SAP no momento de criação, gravação e eliminação da ordem de frete.


  • TOR_CREATE - Chamada assíncrona na criação da ordem de frete
  • TOR_CREA_S - Chamada síncrona na criação da ordem de frete
  • TOR_SAVE - Chamada assíncrona na gravação da ordem de frete
  • TOR_SAVE_S - Chamada síncrona na gravação da ordem de frete
  • TOR_DELETE - Chamada na eliminação da ordem de frete


Observe que existem outros serviços disponibilizados pela SAP.


Passo 2. A partir do customizing do seu S/4HANA, execute a atividade no caminho SPRO -> Gestão de transportes > Funções básicas > Controlador de processos > Definir estratégia.


Passo 3. Clique no botão "Entradas novas" e adicione o registro conforme imagem abaixo. 

Aqui estamos criando uma estratégia Z, no caso ZTO_SALVAR atribuída ao serviço TOR_SAVE. Lembre-se que o objeto TOR é o mesmo da unidade de frete, unidade de transporte, documento de consignação, reserva de frete, e da ordem de frete. Ou seja, você poderá atribuir em quaisquer desse tipos de documentos. Aqui no nosso exemplo iremos utilizar somente para um tipo de ordem de frete específico.


Passo 4. Salve a sua alteração.

Você deve estar se perguntando... mas qual serviço devo utilizar.. o método síncrono ou assíncrono? Isso vai depender do que deseja fazer; em algumas situações você não vai conseguir ter a informação que deseja ao utilizar o método síncrono porque essa informação pode ser atualizada por outro processo assíncrono. 


Passo 4. Precisamos agora criar um nosso desenvolvimento para poder ser chamado ao gravar a ordem de frete. Execute a transação SE24 a partir da linha de comando. 


Passo 5. Entre com o nome ZCL_TM_TO_SALVAR e clique no botão "Criar"


Passo 6. Complemente com a descrição e clique no botão "Gravar". 


Passo 7. Informe o pacote criado no seu ambiente para gravar as modificações do TM. Aqui no nosso exemplo estamos usando ZTM.




Passo 8. Vou utilizar aqui o exemplo que está no Enhancement Guide do SAP TM disponível na página do help da solução. Adicione o método público CALCULAR_FRETE.


Passo 9. Clique no botão Parâmetro


Adicione os parâmetros conforme imagem abaixo para que o framework do controlador de processos possa executar com os dados relevantes.


Passo 10. Salve as alterações e ative.


Passo 11. Dê um duplo clique sobre o método e implemente o código abaixo:

  METHOD calcular_frete.

    DATA: lo_request          TYPE REF TO /sctm/cl_request,
          lo_tor_save_request TYPE REF TO /scmtms/cl_chaco_request,
          lt_failed_key       TYPE /bobf/t_frw_key,
          lo_message          TYPE REF TO /bobf/if_frw_message.

    LOOP  AT it_request INTO lo_request.
      lo_tor_save_request = /scmtms/cl_tor_helper_chaco=>cast_request( lo_request ).
      CHECK lo_tor_save_request IS BOUND.

      CALL METHOD lo_tor_save_request->mo_tor_srvmgr->do_action(
        EXPORTING
          iv_act_key    = /scmtms/if_tor_c=>sc_action-root-calc_transportation_charges
          it_key        = lo_tor_save_request->mt_tor_key_active
        IMPORTING
          eo_message    = lo_message
          et_failed_key = lt_failed_key ).

      APPEND LINES OF lt_failed_key TO lo_tor_save_request->mt_failed_key.

      /scmtms/cl_common_helper=>msg_helper_add_mo(
        EXPORTING
            io_new_message = lo_message
        CHANGING
            co_message = lo_tor_save_request->mo_message ).

    ENDLOOP.


  ENDMETHOD.



Passo 12. Salve as alterações e ative.


Passo 13. A partir do customizing do seu S/4HANA, execute a atividade no caminho SPRO -> Gestão de transportes > Funções básicas > Controlador de processos > Definir método.


Passo 14. Clique no botão "Entradas novas" e adicione a entrada conforme imagem abaixo:


Passo 15. Salve as alterações


Passo 16. A partir do customizing do seu S/4HANA, execute a atividade no caminho SPRO -> Gestão de transportes > Funções básicas > Controlador de processos > Atribuir métodos a uma estratégia.


Passo 17. Clique no botão "Entradas novas" e adicione a entrada conforme imagem abaixo:


Observe que você pode ter diversos métodos e aqui definir quais irá executar e em que sequencia serão executados. Como falei antes você pode componentizar o seu desenvolvimento e reutilizar em outras estratégias.


Passo 18. Agora precisamos atribuir a estratégia no tipo de ordem de frete que iremos usar. A partir do customizing do seu S/4HANA, execute a atividade no caminho SPRO -> Gestão de transportes > Gerenciamento de ordens de frete > Ordem de frete > Definir tipos de ordem de frete.


Passo 19. Selecione o tipo desejado que informe a estratégia ZTO_SALVAR no campo "Estratégia de gravação".


Passo 20. Salve suas alterações.


PRONTO! Agora é só testar o seu cenário!!!!


Veja que também que você definir parâmetros e valores a serem utilizados no controlador de processos! Sem a necessidade de ter uma tabela z, stvarv ou mesmo fazer o uso de condições.





Abraço

Eduardo Chagas

Iniciar sesión para dejar un comentario