0

このコードを実行すると、エラーが発生します。REUSE_ALV_FIELDCATALOG_MERGE関数モジュールを使用して、ABAP で alv 階層レポートを生成できますか? また、フィールドカタログのマージを最も簡単にするためのヒントはありますか?

REPORT ZSAMPLE_ALV_HIERACHIAL.

DATA : IT_VBAK LIKE TABLE OF VBAK,
       WA_VBAK LIKE VBAK,

       IT_VBAP LIKE TABLE OF VBAP,
       WA_VBAP LIKE VBAP,

       IT_MARA LIKE TABLE OF MARA,
       WA_MARA LIKE MARA,

       IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
       WA_FCAT TYPE SLIS_FIELDCAT_ALV,

       IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV,
       WA_FCAT1 TYPE SLIS_FIELDCAT_ALV,

       IT_EVENT TYPE SLIS_T_EVENT,
       WA_EVENT TYPE SLIS_ALV_EVENT,

       V_VBELN TYPE VBAK-VBELN,

       GS_KEYINFO TYPE SLIS_KEYINFO_ALV,

       WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
       WA_LAYOUT1 TYPE SLIS_LAYOUT_ALV.

WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'C510'.

WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'C510'.

SELECT-OPTIONS S_VBELN FOR V_VBELN.

START-OF-SELECTION.
  PERFORM READ_DATA.
  PERFORM KEY_INFO.
  PERFORM FILL_FIELD_CATALOG USING 'IT_VBAK' 'VBAK'.
  PERFORM FILL_FIELD_CATALOG USING 'IT_VBAP' 'VBAP'.
  PERFORM DISPLAY_HIERACIAL_ALV.

*&---------------------------------------------------------------------*
*&      Form  READ_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM READ_DATA .

  SELECT * FROM VBAK INTO TABLE IT_VBAK WHERE VBELN IN S_VBELN.

  IF NOT IT_VBAK IS INITIAL .

    SELECT * FROM VBAP INTO TABLE IT_VBAP FOR ALL ENTRIES IN IT_VBAK WHERE VBELN = IT_VBAK-VBELN.

  ENDIF.

ENDFORM.                    "READ_DATA

*&---------------------------------------------------------------------*
*&      Form  KEY_INFO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM KEY_INFO .

  CLEAR GS_KEYINFO.
  GS_KEYINFO-HEADER01 = 'VBELN'.
  GS_KEYINFO-ITEM01 = 'VBELN'.
  GS_KEYINFO-HEADER02 = SPACE.
  GS_KEYINFO-ITEM02 = 'VBELP'.

ENDFORM.                    "KEY_INFO

*&---------------------------------------------------------------------*
*&      Form  FILL_FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->TNAM       text
*      -->C          text
*----------------------------------------------------------------------*
FORM FILL_FIELD_CATALOG  USING    TNAM TYPE C STRUCTURE TYPE C.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     = SY-REPID
      I_INTERNAL_TABNAME = TNAM
      I_STRUCTURE_NAME   = STRUCTURE
    CHANGING
      CT_FIELDCAT        = IT_FCAT.
ENDFORM.                    "FILL_FIELD_CATALOG

*&---------------------------------------------------------------------*
*&      Form  DISPLAY_HIERACIAL_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DISPLAY_HIERACIAL_ALV .

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM      = SY-CPROG
      IS_LAYOUT               = WA_LAYOUT
      IT_FIELDCAT             = IT_FCAT
      I_TABNAME_HEADER        = 'IT_VBAK'
      I_TABNAME_ITEM          = 'IT_VBAP'
*     I_STRUCTURE_NAME_HEADER = 'VBAK'
*     I_STRUCTURE_NAME_ITEM   = 'VBAP'
      IS_KEYINFO              = GS_KEYINFO
    TABLES
      T_OUTTAB_HEADER         = IT_VBAK
      T_OUTTAB_ITEM           = IT_VBAP.

ENDFORM.
4

1 に答える 1