我尝试通过提供函数" REUSE_ALV_FIELDCATALOG_MERGE"来构建一个fieldcat目录。结构。
因为我在标题行上有问题,所以必须创建不同的内部表和结构。 使用循环,程序用Headerline填充没有Headerline的表,带有Header的信息。
这有效,但如果我给我的fieldcat函数结构, 当程序尝试构建ALV(REUSE_ALV_GRID_DISPLAY)时出现Runtimeerror,因为函数" 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.
答案 0 :(得分:2)
您必须将字典结构的名称传递给REUSE_ALV_FIELDCATALOG_MERGE
和类似的功能模块。它们无法处理任意本地类型,因为它们严重依赖字典中保存的信息来构建字段目录。