Почему значения не отображаются для некоторых столбцов списка ALV? - PullRequest
2 голосов
/ 19 июня 2019

Я пытаюсь создать отчет ALV с отображением списка, но часть содержимого не отображается в списке вывода.Я создал классический отчет и отчет ALV с отображением сетки, и я был успешным.Но это отображение списка создает проблему.

Я включил функцию REUSE_ALV_LIST_DISPLAY с правильным внутренним именем таблицы.Я отладил, и все мои данные правильно поступают в итоговую внутреннюю таблицу, но они не отображаются в списке вывода:

enter image description here

Вот мой код(обратите внимание, что демонстрационные данные рейса должны быть сгенерированы с помощью программы SAPBC_DATA_GENERATOR, один раз):

REPORT ztest.

SELECT scarr~carrid, spfli~connid
  FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
  INTO TABLE @DATA(it_f).

DATA(it_fcat) = VALUE slis_t_fieldcat_alv(
  ( tabname   = 'SCARR'
    fieldname = 'CARRID'
    seltext_l = 'Carrier code'
    col_pos   = 1
    outputlen = 20 )
  ( tabname   = 'SPFLI'
    fieldname = 'CONNID'
    seltext_l = 'Connection ID'
    col_pos   = 2
    outputlen = 20 ) ).

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    it_fieldcat = it_fcat
  TABLES
    t_outtab    = it_f.

Ответы [ 2 ]

2 голосов
/ 25 июня 2019

В простой таблице ALV вам не нужно заполнять компонент TABNAME каталога полей.TABNAME требуется только для иерархически-последовательных списков (например, функциональный модуль REUSE_ALV_HIERSEQ_LIST_DISPLAY), которые являются выходными данными двух таблиц.

Если вы его опускаете или задаете то же значение (любое значение)) для всех столбцов вы получите правильный вывод:

enter image description here

Код с исправлением:

SELECT scarr~carrid, spfli~connid
  FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
  INTO TABLE @DATA(it_f).

DATA(it_fcat) = VALUE slis_t_fieldcat_alv(
  ( " do not fill TABNAME // tabname   = 'SCARR'
    fieldname = 'CARRID'
    seltext_l = 'Carrier code'
    col_pos   = 1
    outputlen = 20 )
  ( " do not fill TABNAME // tabname   = 'SPFLI'
    fieldname = 'CONNID'
    seltext_l = 'Connection ID'
    col_pos   = 2
    outputlen = 20 ) ).

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    it_fieldcat = it_fcat
  TABLES
    t_outtab    = it_f.
0 голосов
/ 19 июня 2019

РЕДАКТИРОВАТЬ: я вижу, что вы двое уже решили проблему в комментариях.

Как Сандра написала, вы можете попробовать использовать cl_salv_table.Это должно выглядеть так:

  cl_salv_table=>factory(
*  EXPORTING
*    list_display   = if_salv_c_bool_sap=>true
*    r_container    =
*    container_name =
    IMPORTING
      r_salv_table   = DATA(lr_alv)
   CHANGING
      t_table        = it_f
  ).

  lr_alv->display( ).
...