Вы использовали оператор значения с внутренней таблицей. Сначала удалите существующее содержимое внутренней таблицы, а затем добавьте новое содержимое. По этой причине существующие элементы панели инструментов не отображаются. У меня есть два следующих решения для решения проблемы.
Решение 1:
Замените ваш следующий код.
e_object->mt_toolbar = VALUE ttb_button(
( butn_type = 3 )
( function = 'EDIT' icon = icon_edit_file butn_type = 0 )
).
С помощью приведенного ниже кода новый элемент панели инструментов будет добавлен на панель инструментов. Это поможет вам обновить логику в соответствии с вашими требованиями.
DATA: l_toolbar LIKE LINE OF e_object->mt_toolbar.
l_toolbar-function = 'EDIT'.
l_toolbar-icon = icon_edit_file.
l_toolbar-quickinfo = 'Custom Edit'.
l_toolbar-disabled = space.
l_toolbar-butn_type = 0.
APPEND l_toolbar TO e_object->mt_toolbar.
Вы также можете обновить существующий код, добавив BASE в ключевом слове Value.
Решение 2:
Вы можете использовать тот же оператор значения с добавлением BASE. Когда вы используете BASE с оператором VALUE, он сохраняет существующее содержимое и добавляет новое содержимое с правой стороны оператора.
Ниже приведен код ABAP с использованием оператора ** VALUE с добавлением BASE . Элементы панели инструментов не будут удалены. **
e_object->mt_toolbar = VALUE ttb_button( BASE e_object->mt_toolbar
( function = 'EDIT' icon = icon_edit_file butn_type = 0 )
).