Abap 使用结构构建Fieldcat的例外情况

Abap 使用结构构建Fieldcat的例外情况,abap,Abap,我试图通过给函数“REUSE\u ALV\u FIELDCATALOG\u MERGE”一个结构来构建一个fieldcat目录 因为我的headerline有问题,所以我必须创建不同的内部表和结构。 通过一个循环,程序用带有表头的表格中的信息填充没有表头的表格 这是可行的,但如果我给我的fieldcat函数结构, 当程序尝试构建ALV(重用ALV网格显示)时,会出现运行时错误,因为函数“重用ALV网格目录合并”不会填充fieldcat 有人能告诉我为什么吗? 谢谢你的帮助。 这是我的密码: *D

我试图通过给函数“REUSE\u ALV\u FIELDCATALOG\u MERGE”一个结构来构建一个fieldcat目录

因为我的headerline有问题,所以我必须创建不同的内部表和结构。 通过一个循环,程序用带有表头的表格中的信息填充没有表头的表格

这是可行的,但如果我给我的fieldcat函数结构, 当程序尝试构建ALV(重用ALV网格显示)时,会出现运行时错误,因为函数“重用ALV网格目录合并”不会填充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.
*数据声明
类型:以“是”开头。
包括结构zsd_austab_lief。
包括结构ws_ausg1。
类型:is_ausg的末尾。
数据:is_ausg1类型为_ausg,
ws_ausg1类型为_ausg,
它的类型为带标题行的0,
wa_ausg01 is_ausg的类型表,
gt\U fieldcat型slis\U t\U fieldcat\U alv*在程序中,fieldcat在另一个位置声明
*建筑现场目录
将其从ausg01循环到is ausg1。
MOVE-correcated是_ausg1到ws_ausg1。
将ws_ausg1附加到wa_ausg01。
结束循环。
调用函数“重用\u ALV\u字段目录\u合并”
出口
i_结构_名称='WS_AUSG1'
i\u客户端\u从不\u显示='X'
i_绕过_缓冲区='X'
改变
ct\U fieldcat=gt\U fieldcat“>>
例外情况
接口不一致=1
程序错误=2
其他=3。
*阿尔夫
调用函数“重用\u ALV\u网格\u显示”
出口
i_callback_program=z_repid
is_布局=ps_布局
it_fieldcat=gt_fieldcat
i_save=gs_save
is_variant=gs_variant
i_callback_user_command='ALV_user_command'
i_回调_pf_status_set='status_set'
桌子
t_outtab=wa_ausg01。

您必须将字典结构的名称传递给
重用\u ALV\u FIELDCATALOG\u MERGE
和类似的功能模块。他们不能处理任意的本地类型,因为他们严重依赖字典中保存的信息来构建字段目录。

对于字典结构,我也有同样的问题。请您将修订后的代码添加到问题中好吗?