Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV Hierarchical Example

Former Member
0 Likes
6,100

Hi,

I want one simple ALV Hierarchical display Example report at least having 3 or 4 nodes.My report will be

SumA SumB SumC SumD

Field1 10 10 10 10

-> A 2 3 2 2

-> C 1 1 1 2

1 2 1 0

->D 1 2 1 0

-> B 8 7 8 8 .. Cntnue ...

Like field A,B Respectivly Having 3 Nodes etc...

Give me an example . Dont give program refering with Standard Tables. Its not understandable.please store the data in to internal table . It will be easy to understand.

Thank you.

Prakash

Hi,

I want one simple ALV Hierarchical display Example report at least having 3 or 4 nodes.My report will be

SumA SumB SumC SumD

Field1 10 10 10 10

-> A 2 3 2 2

-> C 1 1 1 2

1 2 1 0

->D 1 2 1 0

-> B 8 7 8 8 .. Cntnue ...

Like field A,B Respectivly Having 3 Nodes etc...

Give me an example . Dont give program refering with Standard Tables. Its not understandable.please store the data in to internal table . It will be easy to understand.

Thank you.

Prakash

5 REPLIES 5
Read only

Manohar2u
Active Contributor
0 Likes
3,464

Refer to this example program

http://www.sap-img.com/abap/how-to-use-alv-for-hierarchical-lists.htm

Also check in SLIS package to view example programs.

Regds

Manohar

Read only

Former Member
0 Likes
3,464

Check this example report : BALVHD01

Read only

Former Member
0 Likes
3,464

see im working in solution manager. also right now i have no datas on standard tables. put one report which contains data it self( store two or three fields in internal table ).

hope u understnd?

thanks

Read only

Former Member
0 Likes
3,464

Hi Prakash,

Copy and paste this code

REPORT ZHIER_ALV.

TYPE-POOLS:SLIS.

TABLES: EKKO,EKPO.

DATA : BEGIN OF IT_EKKO OCCURS 0,

EBELN LIKE EKKO-EBELN,

BUKRS LIKE EKKO-BUKRS,

LIFNR LIKE EKKO-LIFNR,

BEDAT LIKE EKKO-BEDAT,

END OF IT_EKKO.

DATA : BEGIN OF IT_EKPO OCCURS 0,

SNO LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MENGE LIKE EKPO-MENGE,

NETWR LIKE EKPO-NETWR,

END OF IT_EKPO.

DATA V_REPID LIKE SY-REPID.

DATA IT_FIELDCAT TYPE SLIS_FIELDCAT_ALV OCCURS 0 WITH HEADER LINE.

DATA X_KEYINFO TYPE SLIS_KEYINFO_ALV.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS:S_EBELN FOR EKKO-EBELN.

SELECTION-SCREEN END OF BLOCK B1.

INITIALIZATION.

V_REPID = SY-REPID.

S_EBELN-LOW = '4500000000'.

S_EBELN-SIGN = 'I'.

S_EBELN-OPTION = 'EQ'.

S_EBELN-HIGH = '6000000270'.

APPEND S_EBELN.

START-OF-SELECTION.

PERFORM GET_DATA.

PERFORM GET_FIELD.

PERFORM GET_KEY.

PERFORM KEY_MODIFY.

PERFORM DISPLAY.

&----


*& Form get_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA.

SELECT EBELN BUKRS LIFNR BEDAT

FROM EKKO

INTO TABLE IT_EKKO

WHERE EBELN IN S_EBELN.

SELECT EBELN EBELP MENGE NETWR

FROM EKPO

INTO TABLE IT_EKPO

WHERE EBELN IN S_EBELN.

ENDFORM. " get_data

&----


*& Form get_field

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_FIELD.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_EKKO'

I_INCLNAME = V_REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT[].

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_EKPO'

I_INCLNAME = V_REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT[]

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3.

ENDFORM. " get_field

&----


*& Form get_key

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_KEY.

X_KEYINFO-HEADER01 = 'EBELN'.

X_KEYINFO-ITEM01 = 'SNO'.

ENDFORM. " get_key

&----


*& Form DISPLAY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

IT_FIELDCAT = IT_FIELDCAT[]

I_TABNAME_HEADER = 'IT_EKKO'

I_TABNAME_ITEM = 'IT_EKPO'

IS_KEYINFO = X_KEYINFO

TABLES

T_OUTTAB_HEADER = IT_EKKO

T_OUTTAB_ITEM = IT_EKPO

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

ENDFORM. " DISPLAY

&----


*& Form key_modify

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM KEY_MODIFY.

LOOP AT IT_FIELDCAT. "Avoid Repitiotion of data.

CASE IT_FIELDCAT-FIELDNAME.

WHEN 'SNO'.

IF IT_FIELDCAT-TABNAME = 'IT_EKPO'.

IT_FIELDCAT-NO_OUT = 'X'.

IT_FIELDCAT-KEY = SPACE.

ENDIF.

ENDCASE.

MODIFY IT_FIELDCAT INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " key_modify

Read only

Former Member
0 Likes
3,464

Hi Prakash,

just check this sample code...

REPORT  ZTEST_HIER LINE-COUNT 65
                             LINE-SIZE 200
                             NO STANDARD PAGE HEADING
                             MESSAGE-ID ZZ.

TYPE-POOLS: SLIS.

TYPES: BEGIN OF TY_HEAD,
      VBELN LIKE VBAK-VBELN,
      KUNNR LIKE VBAK-KUNNR,
      NAME  LIKE KNA1-NAME1,
      END OF TY_HEAD.

TYPES: BEGIN OF TY_ITEM,
       VBELN LIKE VBAP-VBELN,
       POSNR LIKE VBAP-POSNR,
       MATNR LIKE VBAP-MATNR,
       MAKTX LIKE MAKT-MAKTX,
       CHECK(1),
       END OF TY_ITEM.
DATA: IT_ITEM TYPE TABLE OF TY_ITEM.
DATA: IT_HEADER TYPE TABLE OF TY_HEAD,
       IT_EVENTS TYPE SLIS_T_EVENT,          "Events.
       IT_FIELDCAT      TYPE SLIS_T_FIELDCAT_ALV.

DATA: X_LAYOUT         TYPE SLIS_LAYOUT_ALV,
      X_FIELDCAT       TYPE SLIS_FIELDCAT_ALV,
      X_KEY           TYPE SLIS_KEYINFO_ALV,
      X_EVENTS TYPE SLIS_ALV_EVENT,      "Event
      X_VBELN LIKE VBAK-VBELN,
      X_ITEM TYPE TY_ITEM.
CONSTANTS: C_S(1) VALUE '/'.
DATA: V_FLAG.
*---------------------------------------------------------------------*
*                   SELECTION-SCREEN                                  *
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VBELN FOR X_VBELN.      "Sales order Number
SELECTION-SCREEN END OF BLOCK BLK.

AT SELECTION-SCREEN.
  IF NOT S_VBELN[] IS INITIAL.
    SELECT SINGLE VBELN
           INTO X_VBELN
           FROM VBAK
           WHERE VBELN IN S_VBELN.
    IF SY-SUBRC <> 0.
      MESSAGE E002 WITH 'Please enter valid Sales Order'(020).
    ENDIF.
  ENDIF.
*----------------------------------------------------------------------*
*       CLASS lcl_bill_complete DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_BILL_COMPLETE DEFINITION.
  PUBLIC SECTION.
    METHODS:GET_HEADER_DATA,
            GET_ITEM_DATA,
            SHOW_DATA,
            FILL_FIELDCAT,
            FILL_EVENTS,
            TOP_OF_PAGE.
ENDCLASS.                    "lcl_bill_complete DEFINITION
*----------------------------------------------------------------------*
*       CLASS lcl_bill_complete IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_BILL_COMPLETE IMPLEMENTATION.
  METHOD GET_HEADER_DATA.
    DATA:X_HEADER LIKE LINE OF IT_HEADER.
    X_HEADER-VBELN = '12345'.
    X_HEADER-KUNNR = '1234'.
    X_HEADER-NAME = 'Test'.
    APPEND X_HEADER TO IT_HEADER.
    X_HEADER-VBELN = '12346'.
    X_HEADER-KUNNR = '1236'.
    X_HEADER-NAME = 'Test'.
    APPEND X_HEADER TO IT_HEADER.
    X_HEADER-VBELN = '12347'.
    X_HEADER-KUNNR = '1235'.
    X_HEADER-NAME = 'Test'.
    APPEND X_HEADER TO IT_HEADER.
  ENDMETHOD.                    "get_header_data
  METHOD GET_ITEM_DATA.
    DATA:X_ITEM LIKE LINE OF IT_ITEM.
    X_ITEM-VBELN = '12345'.
    X_ITEM-POSNR = '0010'.
    X_ITEM-MATNR = 'TESTMATNR'.
    X_ITEM-MAKTX = 'TESTMAT'.
    APPEND X_ITEM TO IT_ITEM.
    X_ITEM-VBELN = '12345'.
    X_ITEM-POSNR = '0020'.
    X_ITEM-MATNR = 'TESTMATNR'.
    X_ITEM-MAKTX = 'TESTMAT'.
    APPEND X_ITEM TO IT_ITEM.
    X_ITEM-VBELN = '12346'.
    X_ITEM-POSNR = '0010'.
    X_ITEM-MATNR = 'TESTMATNR'.
    X_ITEM-MAKTX = 'TESTMAT'.
    APPEND X_ITEM TO IT_ITEM.
    X_ITEM-VBELN = '12346'.
    X_ITEM-POSNR = '0020'.
    X_ITEM-MATNR = 'TESTMATNR'.
    X_ITEM-MAKTX = 'TESTMAT'.
    APPEND X_ITEM TO IT_ITEM.
    X_ITEM-VBELN = '12347'.
    X_ITEM-POSNR = '0010'.
    X_ITEM-MATNR = 'TESTMATNR'.
    X_ITEM-MAKTX = 'TESTMAT'.
    APPEND X_ITEM TO IT_ITEM.
    X_ITEM-VBELN = '12347'.
    X_ITEM-POSNR = '0020'.
    X_ITEM-MATNR = 'TESTMATNR'.
    X_ITEM-MAKTX = 'TESTMAT'.
    APPEND X_ITEM TO IT_ITEM.
  ENDMETHOD.                    "get_item_data

  METHOD SHOW_DATA.
    X_KEY-HEADER01 = 'VBELN'.
    X_KEY-ITEM01   = 'VBELN'.
    X_KEY-ITEM02   = 'POSNR'.


    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM = SY-REPID
        IS_LAYOUT          = X_LAYOUT
        IT_FIELDCAT        = IT_FIELDCAT[]
        I_TABNAME_HEADER   = 'IT_HEADER'
        I_TABNAME_ITEM     = 'IT_ITEM'
        IS_KEYINFO         = X_KEY
        IT_EVENTS          = IT_EVENTS
      TABLES
        T_OUTTAB_HEADER    = IT_HEADER
        T_OUTTAB_ITEM      = IT_ITEM
      EXCEPTIONS
        PROGRAM_ERROR      = 1
        OTHERS             = 2.
  ENDMETHOD.                    "show_data
  METHOD FILL_FIELDCAT.
    DATA: L_POS TYPE I.
    X_LAYOUT-HEADER_TEXT      = 'HEADER'.
    X_LAYOUT-ITEM_TEXT        = 'ITEM'.
    X_LAYOUT-DEFAULT_ITEM     = ' '.
    X_LAYOUT-NO_KEYFIX        = 'X'.
    X_LAYOUT-BOX_TABNAME      = 'IT_ITEM'.

    L_POS = L_POS + 1.
*- Sales Order Number
    X_FIELDCAT-FIELDNAME   = 'VBELN'.
    X_FIELDCAT-TABNAME    = 'IT_HEADER'.
    X_FIELDCAT-SELTEXT_M   = 'Sales Order'(017).
    X_FIELDCAT-OUTPUTLEN  = 11.
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.
    L_POS = L_POS + 1.

    X_FIELDCAT-FIELDNAME   = 'KUNNR'.
    X_FIELDCAT-TABNAME    = 'IT_HEADER'.
    X_FIELDCAT-SELTEXT_M   = 'Sold-to Party'(010).
    X_FIELDCAT-OUTPUTLEN  = 13.
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.
    L_POS = L_POS + 1.

    X_FIELDCAT-FIELDNAME   = 'NAME'.
    X_FIELDCAT-TABNAME    = 'IT_HEADER'.
    X_FIELDCAT-OUTPUTLEN  = 15.
    X_FIELDCAT-SELTEXT_M   = 'Sold-to name'(011).
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.
    L_POS = L_POS + 1.

    X_FIELDCAT-FIELDNAME   = 'CHECK'.
    X_FIELDCAT-TABNAME    = 'IT_ITEM'.
    X_FIELDCAT-CHECKBOX   = 'X'.
    X_FIELDCAT-INPUT  = 'X'.
    X_FIELDCAT-EDIT  = 'X'.
    X_FIELDCAT-SELTEXT_M   = ' '.
    X_FIELDCAT-OUTPUTLEN  = 2.
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.
    L_POS = L_POS + 1.
    X_FIELDCAT-FIELDNAME   = 'VBELN'.
    X_FIELDCAT-TABNAME    = 'IT_ITEM'.
    X_FIELDCAT-SELTEXT_M   = 'Sales Order'(017).
    X_FIELDCAT-OUTPUTLEN  = 11.
    X_FIELDCAT-TECH = 'X'.
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.
    L_POS = L_POS + 1.
*- Sales Order Item
    X_FIELDCAT-FIELDNAME   = 'POSNR'.
    X_FIELDCAT-TABNAME    = 'IT_ITEM'.
    X_FIELDCAT-SELTEXT_M   = 'SO Item'(018).
    X_FIELDCAT-OUTPUTLEN  = 7.
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.
    L_POS = L_POS + 1.

    X_FIELDCAT-FIELDNAME   = 'MATNR'.
    X_FIELDCAT-TABNAME    = 'IT_ITEM'.
    X_FIELDCAT-OUTPUTLEN  = 18.
    X_FIELDCAT-SELTEXT_M   = 'Material number'(012).
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.
    L_POS = L_POS + 1.

    X_FIELDCAT-FIELDNAME   = 'MAKTX'.
    X_FIELDCAT-TABNAME    = 'IT_ITEM'.
    X_FIELDCAT-OUTPUTLEN  = 40.
    X_FIELDCAT-SELTEXT_M   = 'Material Description'(013).
    X_FIELDCAT-COL_POS     = L_POS.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR  X_FIELDCAT.

  ENDMETHOD.                    "fill_fieldcat
*--Fill the events table
  METHOD FILL_EVENTS.
*-  Top of page
    X_EVENTS-NAME =  'TOP_OF_PAGE'.
    X_EVENTS-FORM =  'TOP_OF_PAGE'.
    APPEND X_EVENTS TO IT_EVENTS.
  ENDMETHOD.                    "fill_events
  "fill_events
  METHOD TOP_OF_PAGE.
*-  Call Steelcase Standard Header
    WRITE 'top_of_page here'.
  ENDMETHOD.                    "top_of_page
ENDCLASS.                    "lcl_bill_complete IMPLEMENTATION

START-OF-SELECTION.
  DATA: OBJ TYPE REF TO LCL_BILL_COMPLETE.
  CREATE OBJECT OBJ.
  CALL METHOD OBJ->GET_HEADER_DATA.
  CALL METHOD OBJ->GET_ITEM_DATA.
  CALL METHOD OBJ->FILL_FIELDCAT.
  CALL METHOD OBJ->FILL_EVENTS.
  CALL METHOD OBJ->SHOW_DATA.
*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
*      TOP_OF_PAGE
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE.
*-To show the top of page
  CALL METHOD OBJ->TOP_OF_PAGE.
ENDFORM.                    "top_of_page

Regards

vijay