"
Apoiado por

Calem-se as mensagens das funções

Há módulos de função standard que lançam mensagens e não deviam. Não deviam porque depois queremos usá-las em programas não interactivos e, em vez de devolverem o erro, atiram com uma mensagem para o ecrã que dá cabo do processo.

Mas, provavelmente por ter tomado consciência deste problema, a SAP disponibilizou uma forma elegante (mas muito mal documentada) de resolver o problema.


Imagina que tens o seguinte módulo de função:


FUNCTION zzt_message.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  EXCEPTIONS
*"      HELLO
*"      GOODBYE
*"----------------------------------------------------------------------

  MESSAGE e002(00).

ENDFUNCTION.

Puxa novamente pela imaginação e concebe a possibilidade de teres este programa:


REPORT zverso_nao.

CALL FUNCTION 'ZZT_NFG_MESSAGE'
  EXCEPTIONS
    hello         = 1
    goodbye       = 2
    OTHERS        = 3.
WRITE 'Por muito tempo achei que a ausência é falta'.

O que se passa é que, em vez de escrever um verso de um poema do Carlos Drummond de Andrade, o programa vai dar um erro e parar.

Mas com um simples truque, dá-se voz à poesia:


REPORT zverso_sim.

CALL FUNCTION 'ZZT_NFG_MESSAGE'
  EXCEPTIONS
    hello         = 1
    goodbye       = 2
    ERROR_MESSAGE = 3
    OTHERS        = 4.
WRITE 'Por muito tempo achei que a ausência é falta'.

Exactamente. Basta acrescentar a excepção virtual ERROR_MESSAGE antes da OTHERS e a mensagem não salta. O SY-SUBRC fica 3 para avisar que houve uma mensagem de erro e o programa já pode tornar o mundo mais bonito.

Obrigado Miguel Jorge pela dica.

O Abapinho saúda-vos.

Um comentário a “Calem-se as mensagens das funções”

  1. Kerem Kayacan Diz:

    Hi Abapinho, I have mentioned about this trick in my blog a couple of days ago. RV_INVOICE_CREATE is a good example of this one. You are welcome to stop by and leave a comment: abappolice.co.nf/2015/03/error_message-predefined-exception-for-function-modules-and-methods/

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).