我尝试通过给函数"REUSE_ALV_FIELDCATALOG_MERGE"一个结构来构建一个fieldcat-catalog。
因为我的标题有问题,我必须创建不同的内部表和结构。对于Loop,程序用带有Header的表中的信息填充没有Headerline的表。
这个可以工作,但是如果我给我的fieldcat-function这个结构,当程序试图构建ALV (REUSE_ALV_GRID_DISPLAY)时出现运行时错误,因为函数"REUSE_ALV_FIELDCATALOG_MERGE"没有填充fieldcat。
谁能告诉我为什么?谢谢你的帮助。下面是我的代码:*Data Declaration
TYPES: BEGIN OF is_ausg.
INCLUDE STRUCTURE zsd_austab_lief.
INCLUDE STRUCTURE ws_ausg1.
TYPES: END OF is_ausg.
DATA: is_ausg1 TYPE is_ausg,
ws_ausg1 TYPE is_ausg,
it_ausg01 TYPE is_ausg OCCURS 0 WITH HEADER LINE,
wa_ausg01 TYPE TABLE OF is_ausg,
gt_fieldcat TYPE slis_t_fieldcat_alv. *in the program fieldcat is declared at an other place
*building Fieldcatalog
LOOP AT it_ausg01 INTO is_ausg1.
MOVE-CORRESPONDING is_ausg1 TO ws_ausg1.
APPEND ws_ausg1 TO wa_ausg01.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'WS_AUSG1'
i_client_never_display = 'X'
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = gt_fieldcat "<<<<< won´t be filled >>>>>>
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' "<<<< Runtimeerror because of empty gt_fieldcat >>>
EXPORTING
i_callback_program = z_repid
is_layout = ps_layout
it_fieldcat = gt_fieldcat
i_save = gs_save
is_variant = gs_variant
i_callback_user_command = 'ALV_USER_COMMAND'
i_callback_pf_status_set = 'STATUS_SET'
TABLES
t_outtab = wa_ausg01.
必须将字典结构的名称传递给REUSE_ALV_FIELDCATALOG_MERGE
和类似的功能模块。它们不能在任意的局部类型上工作,因为它们严重依赖于字典中保存的信息来构建字段编目。