в SE16N в технических настройках есть флажок ВЫХОД БЕЗ ПРЕОБРАЗОВАНИЯ ВЫХОДА.
В своих программах я использую класс CL_SALV_TABLE для создания ALV. Можно ли установить флажок в программе, подобной SE16N, и когда пользователь включит ее, мой ALV будет отображать данные, подобные SE16N?
Спасибо,
Элиас
Использовать вывод без преобразования, выход с классом SALV
comment
Есть каталог полей? Для этого можно использовать поле EDIT_MASK каталога полей. Например, если поле состоит из 10 символов, вы можете добавить EDIT_MASK это значение: __________ (подчеркивание 10 раз), поэтому значение поля будет просто взято без какого-либо внутреннего преобразования.
- person József Szikszai   schedule 27.10.2020
comment
@ JózsefSzikszai, наверное, стоит превратить это в ответ
- person Suncatcher   schedule 27.10.2020
comment
Наконец, ответ находится в SET_EDIT_MASK и, в частности, в следующей команде: columns- ›get_column ('MATNR') -› set_edit_mask (''). Теперь я ищу способ сделать это для всех полей, в которых есть конверсия. Спасибо
- person ekekakos   schedule 27.10.2020
Ответы (2)
Это то, что я хотел, так как широко использую SALV.
** Display the data Without Conversion
DATA: l_tabledescr_ref TYPE REF TO cl_abap_tabledescr,
l_descr_ref TYPE REF TO cl_abap_structdescr,
wa_table TYPE abap_compdescr.
IF p_woconv = 'X'.
TRY.
columns = oref_table->get_columns( ).
l_tabledescr_ref ?= cl_abap_typedescr=>describe_by_data( <fs_itab> ).
l_descr_ref ?= l_tabledescr_ref->get_table_line_type( ).
LOOP AT l_descr_ref->components INTO wa_table.
DATA(edit_mask) = columns->get_column( wa_table-name )->get_edit_mask( ).
IF edit_mask(2) = '=='.
columns->get_column( wa_table-name )->set_edit_mask( ' ' ).
ENDIF.
IF wa_table-type_kind = 'C' OR wa_table-type_kind = 'N'.
columns->get_column( wa_table-name )->set_leading_zero( ).
ENDIF.
ENDLOOP.
CATCH cx_salv_not_found.
ENDTRY.
ENDIF.
Если у кого-то есть лучшее решение с SALV, я буду очень обязан поделиться с нами.
Спасибо всем за ваши ответы.
Элиас
person
ekekakos
schedule
27.10.2020
В SAP возможно все, однако я не уверен, возможен ли ваш запрос с использованием класса CL_SALV_TABLE. Я рекомендую вам использовать класс CL_GUI_ALV_GRID, который действительно динамичен и может быть реализован в соответствии с вашим сценарием.
В Интернете есть много руководств, но я постараюсь сделать небольшое резюме
- Создать родительский контейнер CL_GUI_CUSTOMCONTAINER
- Создайте сетку ALV и установите родительский элемент.
- Каталоги полей выборки (также могут быть динамическими, чтобы соответствовать любой таблице)
- Создайте таблицу вывода и передайте операции
- Показать ALV
Конечно, отображаемую таблицу можно настроить по выбору пользователя (флажок)
Запишите, если вам нужна дополнительная помощь
person
HUJ
schedule
27.10.2020
это не совсем ответ на вопрос, OP нуждается не в общем способе создания сетки, а в конкретном вопросе о режиме отображения элементов данных
- person Suncatcher; 27.10.2020