Patrocinado por
Patrocinado por Inetum

Usa sempre classes de mensagens nas classe de excepção

images/thumbnail.jpg - Thumbnail

As classes de excepção permitem declarar múltiplos textos que descrevem os diferentes erros possíveis que elas podem representar.

Há no entanto uma opção para a associar a uma classe de mensagens (SE91). Isto permite que, em vez de os textos serem definidos directamente ali na classe de excepção, sejam antes definidos como clássicas mensagens da SE91. E tem vantagens.

À partida parece mais simples definir os textos directamente na classe de excepção. E foi isso que fiz até recentemente. Até que compreendi o que tinha a ganhar com a associação entre os dois.

Por exemplo, se o fizeres, em vez de teres de andar a recorrer ao método GET_TEXT() e a meter o resultado numa string e depois fazer MESSAGE dessa string, podes usar directamente a instância da excepção com o comando MESSAGE. Não é fantástico?

Ou seja, em vez de:

DATA: text TYPE string.
TRY.
    RAISE EXCEPTION TYPE zcx_abapinho.
  CATCH zcx_abapinho INTO o_exc.
    text = o_exc->get_text( ).
    MESSAGE text TYPE 'I'.
ENDTRY.

Podes fazer simplesmente:

TRY.
    RAISE EXCEPTION TYPE zcx_abapinho.
  CATCH zcx_abapinho INTO o_exc.
    MESSAGE o_exc TYPE 'I'.
ENDTRY.

Isto acontece porque quando associas uma classe de excepção a uma classe de mensagens o SAP acrescenta automaticamente o interface IF_T100_MESSAGE à classe, permitindo assim esta conveniente funcionalidade adicional.

Outra vantagem é continuares a definir os erros como sempre o fizeste: usando as classes de mensagem da SE91, mantendo assim as coisas uniformizadas.

Obrigado a Sergio Aguirre pela foto.

O Abapinho saúda-vos.