Использовать вывод без преобразования, выход с классом SALV

в SE16N в технических настройках есть флажок ВЫХОД БЕЗ ПРЕОБРАЗОВАНИЯ ВЫХОДА.
В своих программах я использую класс CL_SALV_TABLE для создания ALV. Можно ли установить флажок в программе, подобной SE16N, и когда пользователь включит ее, мой ALV будет отображать данные, подобные SE16N?
Спасибо,
Элиас


person ekekakos    schedule 27.10.2020    source источник
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, который действительно динамичен и может быть реализован в соответствии с вашим сценарием.

В Интернете есть много руководств, но я постараюсь сделать небольшое резюме

  1. Создать родительский контейнер CL_GUI_CUSTOMCONTAINER
  2. Создайте сетку ALV и установите родительский элемент.
  3. Каталоги полей выборки (также могут быть динамическими, чтобы соответствовать любой таблице)
  4. Создайте таблицу вывода и передайте операции
  5. Показать ALV

Конечно, отображаемую таблицу можно настроить по выбору пользователя (флажок)

Запишите, если вам нужна дополнительная помощь

person HUJ    schedule 27.10.2020
comment
это не совсем ответ на вопрос, OP нуждается не в общем способе создания сетки, а в конкретном вопросе о режиме отображения элементов данных - person Suncatcher; 27.10.2020