繁体   English   中英

无法使用 REUSE_ALV_FIELDCATALOG_MERGE 创建字段目录

[英]Cannot create field catalog with REUSE_ALV_FIELDCATALOG_MERGE

我是 ABAP 新手,我正在尝试使用REUSE_ALV_FIELDCATALOG_MERGE function 模块构建字段目录。 此 function 模块以sy-subrc值为1 (“接口不一致”)退出,并出现一个消息对话框,指出无法构建字段目录。

我的代码与网上找到的示例相同。 也许我错过了什么。

我的程序由一个 TOP 包含、一个 FORMS 包含和主模块组成:

FORMS包括:

FORM DISPLAY_WITH_ALV_LIST.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_PROGRAM_NAME               = sy-repid
    I_INTERNAL_TABNAME           = 'it_report'
    I_INCLNAME                   = sy-repid
  CHANGING
    CT_FIELDCAT                  = it_fldcat.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    IT_FIELDCAT                    = it_fldcat
  TABLES
    T_OUTTAB                       = it_report.

ENDFORM.

FORM ZSELECT.
  SELECT   VBELN ERDAT ERNAM
    FROM   VBAK
    INTO CORRESPONDING FIELDS OF TABLE it_report
    WHERE  ERDAT IN S_ERDAT
    AND    ERNAM IN S_ERNAM.
ENDFORM.

顶级包括:

TYPE-POOLS: slis.
TABLES VBAK.

DATA: BEGIN OF it_report OCCURS 0,
  VBELN LIKE VBAK-VBELN,
  ERDAT LIKE VBAK-ERDAT,
  ERNAM LIKE VBAK-ERNAM,
END OF it_report.

DATA it_fldcat TYPE slis_t_fieldcat_alv.

主要模块:

REPORT  ZMLA_EXO1.

INCLUDE ZMLA_EXO1_TOP.
INCLUDE ZMLA_EXO1_SCREEN.
INCLUDE ZMLA_EXO1_FORM.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION.

PERFORM ZSELECT.
PERFORM DISPLAY_WITH_ALV_LIST.

END-OF-SELECTION.

我建议使用“SALV”class。 这很简单,在您的情况下,它看起来像这样:

    DATA: go_salv_table TYPE REF TO cl_salv_table.

    CALL METHOD cl_salv_table=>factory
      IMPORTING
        r_salv_table = go_salv_table
      CHANGING
        t_table      = it_report.
    go_salv_table->display( ).

如果您仍然坚持使用 function 模块 (FM) REUSE_ALV_FIELDCATALOG_MERGE ,并从内部表生成字段目录,则必须遵守以下条件:

  1. 必须使用“ OCCURS ”一词声明包含要显示数据的内部表(不是必须使用添加“ WITH HEADER LINE ”)。
  2. 必须使用“ LIKE ”声明内部表的字段。 如果您使用“ TYPE ”来声明字段,它将不起作用。
  3. 程序中的任何行都不应超过 72 个字符。 否则,将生成一个带有异常cx_sy_read_src_line_too_long的简短转储,因为 FM 必须扫描您的程序代码以查找内部表定义。

简而言之,这是一个有很多问题的老FM。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM