ABAP在alv中显示字段符号动态

ABAP Display field symbol dynamic in alv

我正在粘贴这个程序,但我永远不会知道 table 的类型(这里是 vbap 和 vbak)。

我的目标是在不知道类型的情况下显示我的字段符号。

可能吗?

这是我的代码:

REPORT  ZTEST_FME_FOL.
type-pools slis .
FIELD-SYMBOLS : <mytable> TYPE ANY TABLE.

DATA :  lv_alv_table  TYPE REF TO cl_salv_table,
  lv_funct TYPE REF TO cl_salv_functions,
  lv_columns TYPE REF TO cl_salv_columns_table,
  lv_column TYPE REF TO CL_SALV_COLUMN_table.

 SELECT * from vbap INNER JOIN VBAK ON vbap~vbeln = vbak~vbeln UP TO 10 ROWS INTO TABLE <mytable>.


TRY.
 cl_salv_table=>factory(
IMPORTING
  r_salv_table = lv_alv_table
CHANGING
  t_table      = <mytable> ).
CATCH cx_salv_msg .
 ENDTRY.
  lv_funct = lv_alv_table->get_functions( ).
 lv_funct->set_all( Abap_True ).
 lv_columns = lv_alv_table->get_columns( ).
 lv_alv_table->display( ).

提前致谢!

根据您要执行的操作,可能需要比我所做的更多的验证,但本质上这就是您所需要的。 使用(动态)连接可能特别棘手。

report zevw_test_dynamic_alv.

parameters: p_table type string obligatory.

field-symbols: <gt_table> type standard table.

data: gt_data type ref to data.


start-of-selection.

  create data gt_data type table of (p_table).

  assign gt_data->* to <gt_table>.

  select * from (p_table) up to 10 rows
    into table <gt_table>.

  perform display_results using <gt_table>.  "Your ALV stuff will be in here 

您甚至可能必须手动构建 fieldcat,然后使用

call method cl_alv_table_create=>create_dynamic_table
  exporting
    it_fieldcatalog = gt_fieldcat[]
  importing
    ep_table        = gt_data.

获取数据参考