Суть в следующем:
Использую CL_GUI_ALV_GRID.
При формировании каталога полей из всей таблицы вывода оставляю 4 поля. Одно из них на экран не выводится (ну его нафиг - просто ключ).
Далее для одного из полей в гриде вызываю помощь F4. В обработке устанвливаю значение поля. Все ОК.
Но нужно также изменить значение скрытого поля. Меняю аналогичным способом:
Code:
METHOD ON_DOUBLE_CLICK.
** В принципе можно делать проверку на режим чт/ред ячейки
* IF F4_PARAMS-C_DISPLAY EQ 'X'.
* LEAVE SCREEN.
* ENDIF.
* Если пользователь ввел значение, передадим его в грид
FIELD-SYMBOLS <ITAB> TYPE LVC_T_MODI.
DATA: LS_MODI TYPE LVC_S_MODI,
LS_F4_ITAB TYPE F4_ITAB_TYPE.
ASSIGN F4_PARAMS-CR_EVENT_DATA->M_DATA->* TO <ITAB>.
READ TABLE F4_ITAB INTO LS_F4_ITAB INDEX ES_ROW_NO-ROW_ID.
LS_MODI-ROW_ID = F4_PARAMS-CS_ROW_NO-ROW_ID.
LS_MODI-FIELDNAME = F4_PARAMS-C_FIELDNAME. "DESCRIPTION
LS_MODI-VALUE = LS_F4_ITAB-DESCRIPTION.
APPEND LS_MODI TO <ITAB>.
* Также нужно изменить поле Status! (если оно есть в каталоге полей!!!)
LS_MODI-ROW_ID = F4_PARAMS-CS_ROW_NO-ROW_ID.
LS_MODI-FIELDNAME = 'STATUS'.
LS_MODI-VALUE = LS_F4_ITAB-STATUS.
APPEND LS_MODI TO <ITAB>.
LEAVE to SCREEN 0.
ENDMETHOD.
Опять же все меняется замечательно.
НО!!! В гриде перед самым первым столбцом (т.е. в техническом столбце (который нажимаем для выделения строки)) появляется код, который я присвоил этому скрытому полю (STATUS).
После рефреша все нормализуется (т.е. этот код исчезает)
Если жать F4 при выведенном в грид скрытом поле, то тоже все нормально.
Я туплю или это саповский глюк?