Skip to Content

Alteração de informações no email da oferta de frete

March 6, 2025 by
Alteração de informações no email da oferta de frete
eduardo@seinspire.com.br
| No comments yet


No envio de email da oferta de frete você pode criar simbolos que poderam ser então alterados via BAdI /SCMTMS/IF_EX_TEND_SEND_MAILS, método REPLACE_TEXT_SYMBOL.


A SAP já provê alguns simbolos que são alterados por padrão, como por exemplo o número da ordem de frete. 

  • CARRIER: Carrier
  • NUMBER: Number of bundled issues
  • TEND_MANAGER: Full name of tendering manager
  • WORKLIST: URL to carrier‘s worklist
  • TEND_MANAGER_PHONE: Tendering manager's phone number
  • TEND_MANAGER_FAX: Tendering manager's fax number
  • TEND_MANAGER_MAIL: Tendering manager's e-Mail address
  • RFQ_ID: Request for quotation
  • FO_ID: Freight order
  • SOURCE: Source location with address description
  • DESTINATION: Destination location with address description
  • START_DATE: Start date
  • END_DATE: End date
  • TR: Means of transport
  • MULTI: Multi-pick indicator with number of stops
  • VOLUME: Total net volume
  • WEIGHT: Total net weight
  • QUANTITY: Total quantity
  • PRICE_LIMIT: Price limit
  • PRICE_CHANGEABLE: Indicator, whether or not a new price is accepted
  • RESPONSE_DATE: Response due date
  • SUBMITTED_PRICE: Price submitted by the carrier
  • QUOTATION_NUMBER: Sequence number of quotation within the RFQ
  • QUOT_SUBMISSION_DATE_TIME: Date/time, when quotation was submitted

No caso abaixo fizemos um desenvolvimento para reenviar o email após a adjucação da cotação; porém o assunto do email indicava sempre como Nova cotação aprovada. O usuário pediu então que fosse informado no assunto do email quando se tratava de uma nova aprovação ou modificação. 


Criar um simbolo no email e ajustar na BAdi é tranquilo.. porém, como identificar se é um envio novo ou uma alteração?


Para isso tivemos que verificar a lista de programas chamados para identificar se havia sido feito o reenvio; no caso a classe que disparava a ação:  ZCL_850_TOR_ROOT_A_SEND_AWARD=CP. Com isso identificamos quando era um reenvio/alteração.


CALL FUNCTION 'SYSTEM_CALLSTACK'

        IMPORTING

          et_callstack = lt_callstack.

      READ TABLE lt_callstack INTO DATA(ls_callstack) WITH KEY progname = 'ZCL_850_TOR_ROOT_A_SEND_AWARD=CP'.


Uma coisa interessante da forma como a SAP entregou a solução é que você pode adicionar QUALQUER simbolo (termo) que poderá ser substituido no email. Não existe a necessidade de modificar qualquer estrutura. basta colocar o seu simbolo (parâmetro) entre &.

A processar a BAdI você vai ter na variável iv_symbol_name o simbolo a ser alterado. Aqui no meu exemplo definir como CHANGE_TYPE.

iv_symbol_name = 'CHANGE_TYPE'.


Veja abaixo o código implementado. 

* Lembre-se o uso do código abaixo é por sua conta e risco.


      DATA lt_callstack   TYPE  sys_callst.

      CALL FUNCTION 'SYSTEM_CALLSTACK'

        IMPORTING

          et_callstack = lt_callstack.

      READ TABLE lt_callstack INTO DATA(ls_callstack) WITH KEY progname = 'ZCL_850_TOR_ROOT_A_SEND_AWARD=CP'.

      IF sy-subrc EQ 0.

        cv_symbol_value = get_text_from_msg_class(

          iv_msg_number = '059' " CHANGE

          iv_language   = is_mail_content-language

        ).

      ELSE.

        cv_symbol_value = get_text_from_msg_class(

          iv_msg_number = '060' " NEW

          iv_language   = is_mail_content-language

        ).

      ENDIF.

Sign in to leave a comment