Добрый день.
Для проверки значений использую событие data_changed
Если значение неверно, то добавляю сообщение в лог:
Code:
FORM alv0100_data_changed USING io_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA:
ls_good_cells TYPE lvc_s_modi,
lv_error TYPE c,
ls_msg TYPE symsg.
FIELD-SYMBOLS:
<ls_alv0100> LIKE LINE OF gt_alv0100.
LOOP AT io_data_changed->mt_good_cells INTO ls_good_cells.
CLEAR: lv_error, ls_msg.
IF ls_good_cells-fieldname = 'VBELN_USL'.
IF NOT ls_good_cells-value IS INITIAL.
PERFORM check_serv_order USING ls_good_cells-value CHANGING lv_error
ls_msg.
IF lv_error = abap_true.
CALL METHOD io_data_changed->add_protocol_entry
EXPORTING
i_msgid = ls_msg-msgid
i_msgty = ls_msg-msgty
i_msgno = ls_msg-msgno
i_msgv1 = ls_msg-msgv1
i_msgv2 = ls_msg-msgv2
i_msgv3 = ls_msg-msgv3
i_msgv4 = ls_msg-msgv4
i_fieldname = ls_good_cells-fieldname
i_row_id = ls_good_cells-row_id.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
В PAI стоит вызов
Code:
CALL METHOD go_alv0100->check_changed_data
IMPORTING
e_valid = lv_error.
.
Если после ввода, пользователь жмет на кнопку, то проверка отрабатывает, но существование ошибок не отлавливается. Как "правильно" отловить ошибки, чтобы остановить выполнение PAI? Глобальные переменные использовать не хочется.