Application Development 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: 

add block list to HIERARQUICAL ALV

former_member182371
Active Contributor
0 Kudos

Hi,

in my report i display an HIERARQUICAL ALV by means of FM 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.

I need to add a block list to this report, so that the hierarquical alv gets displayed first an immediately afterwards the block list.

Has anyone of you a very simple example of how it can be done (if possible)?

Best regards.

1 ACCEPTED SOLUTION

former_member188685
Active Contributor
0 Kudos

Hi,

it can be done, check this <b>BALVBT01</b>

there it is combination of BLOCK_HIERARCHIAL list

Regards

vijay

6 REPLIES 6

hymavathi_oruganti
Active Contributor
0 Kudos

USE THE FN MODULE

REUSE_ALV_BLOCK_LIST_HS_APPEND

former_member188685
Active Contributor
0 Kudos

Hi,

it can be done, check this <b>BALVBT01</b>

there it is combination of BLOCK_HIERARCHIAL list

Regards

vijay

Former Member
0 Kudos

Hi ,

Please check the forum,

and some more links

http://help.sap.com/saphelp_46c/helpdata/en/99/49b844d61911d2b469006094192fe3/frameset.htm

http://www.sapdevelopment.co.uk/reporting/alvhome.htm

Regards,

Ranjit Thakur.

Please Mark The Helpful Answer.

Former Member
0 Kudos

rahulkavuri
Active Contributor
0 Kudos

REPORT  Z_50657_ALV_EX4
        NO STANDARD PAGE HEADING
        LINE-COUNT 65(3)
        LINE-SIZE 220
        MESSAGE-ID ZZ.

************************************************************************
*                             Type Pools                               *
************************************************************************

TYPE-POOLS: SLIS.

************************************************************************
*                              Tables                                  *
************************************************************************

TABLES: VBAK, "Sales Document: Header Data
        VBAP. "Sales Document: Item Data

************************************************************************
*                         Internal Tables                              *
************************************************************************

* Internal table to hold data from VBAK
DATA: BEGIN OF IT_VBAK OCCURS 0,
      VBELN LIKE VBAK-VBELN,  "Sales Document
      AUDAT LIKE VBAK-AUDAT,  "Document date
      AUART LIKE VBAK-AUART,  "Sales Document Type
      NETWR LIKE VBAK-NETWR,  "Net Value of the Sales Order
      EXPAND TYPE C,
      END OF IT_VBAK.

* Internal table to hold data from VBAP
DATA: BEGIN OF IT_VBAP OCCURS 0,
      VBELN LIKE VBAP-VBELN,  "Sales Document
      POSNR LIKE VBAP-POSNR,  "Sales Document Item
      MATNR LIKE VBAP-MATNR,  "Material Number
      PSTYV LIKE VBAP-PSTYV,  "Sales document item category
      CHARG LIKE VBAP-CHARG,  "Batch Number
      END OF IT_VBAP.

************************************************************************
*                       Data Declarations and Variables                *
************************************************************************

* work area to retain fieldcatalog values and internal table for catalog

DATA: X_FIELDCAT_VBAK TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT_VBAK TYPE SLIS_T_FIELDCAT_ALV.

DATA: X_FIELDCAT_VBAP TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT_VBAP TYPE SLIS_T_FIELDCAT_ALV.

DATA: IT_KEYINFO TYPE SLIS_KEYINFO_ALV.

DATA: IT_HEADER TYPE SLIS_TABNAME,
      IT_ITEM TYPE SLIS_TABNAME.

DATA: X_SORT TYPE SLIS_SORTINFO_ALV,
      IT_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV.

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

*Sales Document and Sales Document Type as input fields

SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN,
                 S_AUART FOR VBAK-AUART.

SELECTION-SCREEN END OF BLOCK B1.

************************************************************************
*                     INITIALIASATION                             *
************************************************************************

INITIALIZATION.

* Assigning Internal Table Names
  IT_HEADER = 'IT_VBAK'.
  IT_ITEM = 'IT_VBAP'.

  CLEAR IT_KEYINFO.
  IT_KEYINFO-HEADER01 = 'VBELN'.
* comparing the keys and relating the header and item internal tables
  IT_KEYINFO-ITEM01 = 'VBELN'.
  IT_KEYINFO-HEADER02 = SPACE.
  IT_KEYINFO-ITEM02 = 'POSNR'.



************************************************************************
*                     At  Selection-Screen                             *
************************************************************************
AT SELECTION-SCREEN.

  PERFORM VALIDATION.

************************************************************************
*                       Start of Selection                             *
************************************************************************

START-OF-SELECTION.

*POPULATION OF DATA INTO INTERNAL TABLE ITAB
  PERFORM GET_DATA.

*MERGE FIELDCATALOGUES OF IT_VBAP AND IT_VBAK
  PERFORM FIELDCATALOG_MERGE.

*CHANGE LAYOUT ACCORDING TO THE REQUIREMENTS
  PERFORM LAYOUT_CHG.

*USE SORT FUNCTION SO AS TO GET SUBTOTALS AND GRAND TOTAL
  PERFORM SORT_FUNC.

*FINAL DISPLAY ACCORDING TO THE HIERARCHY
  PERFORM FINAL_DISPLAY.

************************************************************************
*                       End of Selection                               *
************************************************************************



FORM VALIDATION.

  SELECT SINGLE VBELN
         FROM VBAK
         INTO VBAK-VBELN
         WHERE VBELN IN S_VBELN.

  IF SY-SUBRC <> 0.
    MESSAGE I000 WITH 'NO SALES DOCUMENT RECORD FOUND'.
    STOP.
  ENDIF.

  SELECT SINGLE AUART
         FROM VBAK
         INTO VBAK-AUART
         WHERE AUART IN S_AUART.

  IF SY-SUBRC <> 0.
    MESSAGE I000 WITH 'THE MENTIONED DATE HAS NO RECORDS'.
    STOP.
  ENDIF.
ENDFORM.                    "VALIDATION

*&--------------------------------------------------------------------*
*&      Form  GET_DATA
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM GET_DATA.

  SELECT VBELN
         AUDAT
         AUART
         NETWR FROM VBAK
         INTO TABLE IT_VBAK
         WHERE VBELN IN S_VBELN AND AUART IN S_AUART.

  SORT IT_VBAK BY VBELN.

  SELECT VBELN
         POSNR
         MATNR
         PSTYV
         CHARG FROM VBAP
         INTO TABLE IT_VBAP
         FOR ALL ENTRIES IN IT_VBAK
         WHERE VBELN = IT_VBAK-VBELN.

ENDFORM.                    "GET_DATA

*&--------------------------------------------------------------------*
*&      Form  FIELDCATALOG_MERGE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM FIELDCATALOG_MERGE.

  X_FIELDCAT_VBAK-FIELDNAME = 'NETWR'.
  X_FIELDCAT_VBAK-TABNAME = 'IT_VBAK'.
  X_FIELDCAT_VBAK-DO_SUM = 'X'.
  APPEND X_FIELDCAT_VBAK TO IT_FIELDCAT_VBAK.
  CLEAR X_FIELDCAT_VBAK.

  X_FIELDCAT_VBAK-FIELDNAME = 'AUART'.
  X_FIELDCAT_VBAK-TABNAME = 'IT_VBAK'.
  APPEND X_FIELDCAT_VBAK TO IT_FIELDCAT_VBAK.
  CLEAR X_FIELDCAT_VBAK.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     = SY-REPID
      I_INTERNAL_TABNAME = 'IT_VBAK'
      I_INCLNAME         = SY-REPID
    CHANGING
      CT_FIELDCAT        = IT_FIELDCAT_VBAK.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME     = SY-REPID
      I_INTERNAL_TABNAME = 'IT_VBAP'
      I_INCLNAME         = SY-REPID
    CHANGING
      CT_FIELDCAT        = IT_FIELDCAT_VBAK.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDFORM.                    "FIELDCATALOG_MERGE


*&--------------------------------------------------------------------*
*&      Form  LAYOUT_CHG
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*

FORM LAYOUT_CHG.

  L_LAYOUT-ZEBRA = 'X'.
  L_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.
  L_LAYOUT-TOTALS_TEXT = 'TOTAL'.
  L_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.
*  L_LAYOUT-EXPAND_ALL = 'X'.

ENDFORM.                    "LAYOUT_CHG


*&--------------------------------------------------------------------*
*&      Form  SORT_FUNC
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM SORT_FUNC.

  X_SORT-SPOS = 1.
  X_SORT-FIELDNAME = 'AUART'.
  X_SORT-TABNAME = 'IT_VBAK'.
  X_SORT-UP = 'X'.
  APPEND X_SORT TO IT_SORT.
  CLEAR X_SORT.

  X_SORT-SPOS = 2.
  X_SORT-FIELDNAME = 'NETWR'.
  X_SORT-TABNAME = 'IT_VBAK'.
  X_SORT-UP = 'X'.
  X_SORT-SUBTOT = 'X'.
  APPEND X_SORT TO IT_SORT.
  CLEAR X_SORT.

ENDFORM.                    "SORT_FUNC

*&--------------------------------------------------------------------*
*&      Form  FINAL_DISPLAY
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM FINAL_DISPLAY.

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID
      IS_LAYOUT          = L_LAYOUT
      IT_FIELDCAT        = IT_FIELDCAT_VBAK
      IT_SORT            = IT_SORT
      I_TABNAME_HEADER   = IT_HEADER
      I_TABNAME_ITEM     = IT_ITEM
      IS_KEYINFO         = IT_KEYINFO
    TABLES
      T_OUTTAB_HEADER    = IT_VBAK
      T_OUTTAB_ITEM      = IT_VBAP
    EXCEPTIONS
      PROGRAM_ERROR      = 1
      OTHERS             = 2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDFORM.                    "FINAL_DISPLAY

Message was edited by: Rahul Kavuri

rahulkavuri
Active Contributor
0 Kudos

FORM FINAL_DISPLAY.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      IS_LAYOUT                  = L_LAYOUT_MARA
      IT_FIELDCAT                = IT_FIELDCAT
      I_TABNAME                  = 'IT_MARA'
      IT_EVENTS                  = GT_XEVENTS
      IT_SORT                    = IT_SORT
    TABLES
      T_OUTTAB                   = IT_MARA
    EXCEPTIONS
      PROGRAM_ERROR              = 1
      MAXIMUM_OF_APPENDS_REACHED = 2
      OTHERS                     = 3.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.



  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      IS_LAYOUT                  = L_LAYOUT_MAKT
      IT_FIELDCAT                = IT_FIELDCAT_MAKT
      I_TABNAME                  = 'IT_MAKT'
      IT_EVENTS                  = GT_YEVENTS
    TABLES
      T_OUTTAB                   = IT_MAKT
    EXCEPTIONS
      PROGRAM_ERROR              = 1
      MAXIMUM_OF_APPENDS_REACHED = 2
      OTHERS                     = 3.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      IS_LAYOUT                  = L_LAYOUT_MARC
      IT_FIELDCAT                = IT_FIELDCAT_MARC
      I_TABNAME                  = 'IT_MARC'
      IT_EVENTS                  = GT_YEVENTS
    TABLES
      T_OUTTAB                   = IT_MARC
    EXCEPTIONS
      PROGRAM_ERROR              = 1
      MAXIMUM_OF_APPENDS_REACHED = 2
      OTHERS                     = 3.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
    EXPORTING
      IS_PRINT = GT_PRINT.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDFORM.                    "FINAL_DISPLAY
 

<b>you can use the above code in a form after the above code</b>