Сбор сообщений

Не первый раз вижу удивление начинающих разработчиков, когда они видят в продуктивном стандартном коде строки вида:

IF 1 = 2. MESSAGE e035(crm_bupa_bol). ENDIF.

Так в чём же дело?

Часто бывает удобно иметь явный вызов сообщения об ошибке для удобства навигации от кода ошибки к тексту программы (Where-is-used). И поэтому данная конструкция тупа, но своё дело делает. А чуть ниже или чуть выше этой строки есть рабочий, но неявный вызов сообщения:

CALL METHOD lr_global_messages->add_message
  EXPORTING
    iv_msg_type       = ‘E’
    iv_msg_id         = ‘CRM_BUPA_BOL’
    iv_msg_number     = 035
    iv_show_only_once = abap_true.

Опытные разработчики могут более красиво выйти из такой ситуации, если воспользуются конструкцией MESSAGE INTO, например так:

data: lv_message type text250.
message e450(zin) into lv_message with lv_param1.
perform collect_message using …….

+

form collect_message using …
  clear gt_errors.
  gt_errors-type = sy-msgty.
  gt_errors-msgid = sy-msgid.
  gt_errors-msgno = sy-msgno.
  … 
  append gt_errors.
endform.
    

PS. Да, в данном примере используется старомодная подпрограмма, вместо современного ООП. Я знаю.

Опубликовано 08.08.2014 в 09:34 · Автор ivan · Ссылка
Рубрики: ABAP

Написать комментарий