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 help

Former Member
0 Likes
634

Hi All,

I am working on alvs which is relatively new for me. I managed to get the output in a list. But the problem is I have two different table structures that I want to display. How can I do that. Can I display the two structures on the same output one below the other. Could somebody help me with this.

Thanks,

Kiran.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
608

yes for that you have to use block list display.

check the code below..


*&---------------------------------------------------------------------*
*& Report  ZSPD_ALV_BLOCK                                              *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZSPD_ALV_BLOCK .
TYPE-POOLS : SLIS.
TABLES : EKKO,EKPO.

DATA : BEGIN OF IEKKO OCCURS 0,
       EBELN LIKE EKKO-EBELN,
       AEDAT LIKE EKKO-AEDAT,
       END OF IEKKO.

DATA : BEGIN OF IEKPO OCCURS 0,
       EBELN LIKE EKPO-EBELN,
       EBELP LIKE EKPO-EBELP,
       MATNR LIKE EKPO-MATNR,
       MENGE LIKE EKPO-MENGE,
       MEINS LIKE EKPO-MEINS,
       END OF IEKPO.

DATA : IFIELDCATEKKO TYPE SLIS_T_FIELDCAT_ALV,
       IFIELDCATEKPO TYPE SLIS_T_FIELDCAT_ALV,
       WFIELDCAT     TYPE SLIS_FIELDCAT_ALV,
       ILAYOUT       TYPE SLIS_LAYOUT_ALV,
       IEVENTHEAD    TYPE SLIS_T_EVENT,
       IEVENTITEM    TYPE SLIS_T_EVENT,
       WEVENT        TYPE SLIS_ALV_EVENT.

PARAMETERS : P_NUM(3) TYPE N DEFAULT 10.


PERFORM GET_DATA_EKKO.
PERFORM GET_DATA_EKPO.

PERFORM BUILD_FCAT_HEAD.
PERFORM BUILD_FCAT_ITEM.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_EVENT_TAB.


PERFORM DISPLAY_BLOCK.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_EKKO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_EKKO .

SELECT EBELN AEDAT INTO TABLE IEKKO FROM EKKO UP TO P_NUM ROWS WHERE EBELN LIKE '45000057%'.

ENDFORM.                    " GET_DATA_EKKO
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_EKPO .

IF NOT IEKKO[] IS INITIAL.
  SELECT EBELN EBELP MATNR MENGE MEINS INTO TABLE IEKPO FROM EKPO FOR ALL ENTRIES IN IEKKO
                                                  WHERE EBELN = IEKKO-EBELN.
ENDIF.

ENDFORM.                    " GET_DATA_EKPO
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_BLOCK .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    I_CALLBACK_PROGRAM             = SY-REPID
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .



          CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
            EXPORTING
              IS_LAYOUT                        = ILAYOUT
              IT_FIELDCAT                      = IFIELDCATEKKO
              I_TABNAME                        = 'IEKKO'
              IT_EVENTS                        = IEVENTHEAD
*             IT_SORT                          =
*             I_TEXT                           = ' '
            TABLES
              T_OUTTAB                         = IEKKO
           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                        = ILAYOUT
    IT_FIELDCAT                      = IFIELDCATEKPO
    I_TABNAME                        = 'IEKPO'
    IT_EVENTS                        = IEVENTITEM
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = IEKPO
* 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
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
 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.                    " DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_HEAD .
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME   = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKKO.
CLEAR WFIELDCAT.


WFIELDCAT-FIELDNAME = 'AEDAT'.
WFIELDCAT-TABNAME   = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. doc date'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKKO.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_ITEM .
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'EBELP'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc item'.
*wfieldcat-do_sum = 'X'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Material no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MENGE'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'P.O. Qty'.
wfieldcat-do_sum = 'X'.
*WFIELDCAT-DATATYPE = 'QUAN'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MEINS'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM.                    " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  BUILD_EVENT_TAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_EVENT_TAB .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
 EXPORTING
   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = IEVENTHEAD
* EXCEPTIONS
*   LIST_TYPE_WRONG       = 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.

IEVENTITEM = IEVENTHEAD.

READ TABLE IEVENTHEAD INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEHEAD'.
MODIFY IEVENTHEAD FROM WEVENT INDEX SY-TABIX.
ENDIF.

READ TABLE IEVENTITEM INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEITEM'.
MODIFY IEVENTITEM FROM WEVENT INDEX SY-TABIX.
ENDIF.


ENDFORM.                    " BUILD_EVENT_TAB

FORM TOPOFPAGEHEAD.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Header data with P.O. no and creating date'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .


ENDFORM.

FORM TOPOFPAGEITEM.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Item data with P.O.item material no and qty'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .


ENDFORM.

regards

shiba dutta

Hi All,

I am working on alvs which is relatively new for me. I managed to get the output in a list. But the problem is I have two different table structures that I want to display. How can I do that. Can I display the two structures on the same output one below the other. Could somebody help me with this.

Thanks,

Kiran.

4 REPLIES 4
Read only

Former Member
0 Likes
609

yes for that you have to use block list display.

check the code below..


*&---------------------------------------------------------------------*
*& Report  ZSPD_ALV_BLOCK                                              *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZSPD_ALV_BLOCK .
TYPE-POOLS : SLIS.
TABLES : EKKO,EKPO.

DATA : BEGIN OF IEKKO OCCURS 0,
       EBELN LIKE EKKO-EBELN,
       AEDAT LIKE EKKO-AEDAT,
       END OF IEKKO.

DATA : BEGIN OF IEKPO OCCURS 0,
       EBELN LIKE EKPO-EBELN,
       EBELP LIKE EKPO-EBELP,
       MATNR LIKE EKPO-MATNR,
       MENGE LIKE EKPO-MENGE,
       MEINS LIKE EKPO-MEINS,
       END OF IEKPO.

DATA : IFIELDCATEKKO TYPE SLIS_T_FIELDCAT_ALV,
       IFIELDCATEKPO TYPE SLIS_T_FIELDCAT_ALV,
       WFIELDCAT     TYPE SLIS_FIELDCAT_ALV,
       ILAYOUT       TYPE SLIS_LAYOUT_ALV,
       IEVENTHEAD    TYPE SLIS_T_EVENT,
       IEVENTITEM    TYPE SLIS_T_EVENT,
       WEVENT        TYPE SLIS_ALV_EVENT.

PARAMETERS : P_NUM(3) TYPE N DEFAULT 10.


PERFORM GET_DATA_EKKO.
PERFORM GET_DATA_EKPO.

PERFORM BUILD_FCAT_HEAD.
PERFORM BUILD_FCAT_ITEM.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_EVENT_TAB.


PERFORM DISPLAY_BLOCK.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_EKKO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_EKKO .

SELECT EBELN AEDAT INTO TABLE IEKKO FROM EKKO UP TO P_NUM ROWS WHERE EBELN LIKE '45000057%'.

ENDFORM.                    " GET_DATA_EKKO
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA_EKPO .

IF NOT IEKKO[] IS INITIAL.
  SELECT EBELN EBELP MATNR MENGE MEINS INTO TABLE IEKPO FROM EKPO FOR ALL ENTRIES IN IEKKO
                                                  WHERE EBELN = IEKKO-EBELN.
ENDIF.

ENDFORM.                    " GET_DATA_EKPO
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_BLOCK .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    I_CALLBACK_PROGRAM             = SY-REPID
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .



          CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
            EXPORTING
              IS_LAYOUT                        = ILAYOUT
              IT_FIELDCAT                      = IFIELDCATEKKO
              I_TABNAME                        = 'IEKKO'
              IT_EVENTS                        = IEVENTHEAD
*             IT_SORT                          =
*             I_TEXT                           = ' '
            TABLES
              T_OUTTAB                         = IEKKO
           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                        = ILAYOUT
    IT_FIELDCAT                      = IFIELDCATEKPO
    I_TABNAME                        = 'IEKPO'
    IT_EVENTS                        = IEVENTITEM
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = IEKPO
* 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
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
 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.                    " DISPLAY_BLOCK
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_HEAD .
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME   = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKKO.
CLEAR WFIELDCAT.


WFIELDCAT-FIELDNAME = 'AEDAT'.
WFIELDCAT-TABNAME   = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. doc date'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKKO.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_ITEM .
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'EBELP'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc item'.
*wfieldcat-do_sum = 'X'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Material no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MENGE'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'P.O. Qty'.
wfieldcat-do_sum = 'X'.
*WFIELDCAT-DATATYPE = 'QUAN'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MEINS'.
WFIELDCAT-TABNAME   = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCATEKPO.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM.                    " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  BUILD_EVENT_TAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_EVENT_TAB .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
 EXPORTING
   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = IEVENTHEAD
* EXCEPTIONS
*   LIST_TYPE_WRONG       = 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.

IEVENTITEM = IEVENTHEAD.

READ TABLE IEVENTHEAD INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEHEAD'.
MODIFY IEVENTHEAD FROM WEVENT INDEX SY-TABIX.
ENDIF.

READ TABLE IEVENTITEM INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEITEM'.
MODIFY IEVENTITEM FROM WEVENT INDEX SY-TABIX.
ENDIF.


ENDFORM.                    " BUILD_EVENT_TAB

FORM TOPOFPAGEHEAD.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Header data with P.O. no and creating date'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .


ENDFORM.

FORM TOPOFPAGEITEM.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Item data with P.O.item material no and qty'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .


ENDFORM.

regards

shiba dutta

Read only

Former Member
0 Likes
608

Hi,

You can do it by using Blocked ALV.

Check this sample code.

REPORT ZBLOCKED_ALV .

tables: lfa1,kna1.

select-options: s_kunnr for kna1-kunnr,

s_lifnr for lfa1-lifnr.

data: begin of itab occurs 0,

kunnr like kna1-kunnr,

name1 like kna1-name1,

land1 like kna1-land1,

end of itab.

data: begin of jtab occurs 0,

lifnr like lfa1-lifnr ,

land1 like lfa1-land1 ,

name1 like lfa1-name1,

end of jtab.

type-pools: slis.

data: repid like sy-repid,

kna1_b type slis_t_fieldcat_alv,

layout type slis_layout_alv,

events_b type slis_t_event.

repid = sy-repid.

select kunnr land1 name1 from kna1 into table itab where kunnr in

s_kunnr.

select lifnr land1 name1 from lfa1 into table jtab where lifnr in

s_lifnr.

  • this FM is used initialize the blocks means activating blocks prior

to display v need to activate it

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = repid.

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IT_EXCLUDING =

perform appendblock tables itab using 'ITAB'.

perform appendblock tables jtab using 'JTAB'.

  • Fm which can display the blocks in layout

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

  • 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.

form appendblock tables jtab using itab.

refresh kna1_b.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = repid

I_INTERNAL_TABNAME = itab

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = repid

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = kna1_b

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_ERROR = 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.

  • logic for appending vendor block to customer block

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = layout

IT_FIELDCAT = kna1_b

I_TABNAME = itab

IT_EVENTS = events_b

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = jtab

  • 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.

endform.

Read only

Former Member
0 Likes
608

HI,

see this program

TABLES:LFA1,EKKO.

SELECT-OPTIONS:LIFNR FOR LFA1-LIFNR.

DATA:BEGIN OF ITAB OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

LAND1 LIKE LFA1-LAND1,

ORT01 LIKE LFA1-ORT01,

REGIO LIKE LFA1-REGIO,

END OF ITAB.

DATA:BEGIN OF JTAB OCCURS 0,

LIFNR LIKE EKKO-LIFNR,

EBELN LIKE EKKO-EBELN,

BUKRS LIKE EKKO-BUKRS,

BSTYP LIKE EKKO-BSTYP,

EKORG LIKE EKKO-EKORG,

BSART LIKE EKKO-BSART,

END OF JTAB.

SELECT * FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE LIFNR

IN LIFNR.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE JTAB WHERE LIFNR

IN LIFNR.

TYPE-POOLS:SLIS.

DATA:LAYOUT TYPE slis_layout_alv.

DATA:EVE TYPE slis_t_event WITH HEADER LINE.

DATA:EVE1 TYPE slis_t_event WITH HEADER LINE.

DATA:HEAD TYPE slis_t_listheader WITH HEADER LINE.

DATA:FCAT TYPE slis_t_fieldcat_alv.

DATA:FCAT1 TYPE slis_t_fieldcat_alv.

LAYOUT-ZEBRA = 'X'.

LAYOUT-colwidth_optimize = 'X'.

LAYOUT-WINDOW_TITLEBAR = 'VENDOR DETAILS SCREEN'.

EVE1-NAME = 'TOP_OF_PAGE'.

EVE1-FORM = 'TOP_OF_PAGE1'.

APPEND EVE1.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = EVE[].

READ TABLE EVE WITH KEY NAME = 'TOP_OF_PAGE'.

EVE-FORM = 'TOP_OF_PAGE'.

MODIFY EVE TRANSPORTING FORM WHERE NAME = 'TOP_OF_PAGE'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'ITAB'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = FCAT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FCAT

I_TABNAME = 'ITAB'

IT_EVENTS = EVE[]

TABLES

T_OUTTAB = ITAB .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'JTAB'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = FCAT1.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FCAT1

I_TABNAME = 'JTAB'

IT_EVENTS = EVE1[]

TABLES

T_OUTTAB = JTAB.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY' .

FORM TOP_OF_PAGE.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'VENDORS DETAILS'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[].

ENDFORM.

FORM TOP_OF_PAGE1.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'PURCHASE DOCCUMENTS DETAILS'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[].

ENDFORM.

rgds,

bharat.

Read only

Former Member
0 Likes
608

1.

Technically ALV is a tool to display Internal table data.

2.

ALV reports are max 4 types

a.

Simple ALV and GRID ALV

REUSE_ALV_LIST_DISPLAY

REUSE_ALV_GRID_DISPLAY

b.

Hierarchical ALV

REUSE_ALV_HIERSEQ_LIST_DISPLAYc.

Blocked ALV

REUSE_ALV_BLOCK_LIST_INIT

REUSE_ALV_BLOCK_LIST_APPEND

REUSE_ALV_BLOCK_LIST_DISPLAY

d.

Blocked Hierarchical ALV

REUSE_ALV_BLOCK_LIST_HS_APPEND.

3.

SLIS is a TYPE-GROUP that is defined in SE11 under

Type-group.All ALV related Internal table are defined there if we want access those ,we have to declare that type-group in our program as TYPE-POOLS.

4.

For Documentation on Function modules.

Go to SE37=>give any of FM =>Display=> Function module Documentation Button is Hilighted.

and Importing and exporting parameters documentaion is available next to that parameters with GREEN light.

5.

For more Function modules Search with REUSE_*

6.

For std example programs on the system.

Search with BALV*

7.

For example programs on the net ,

http://www.geocities.com/mpioud/Abap_programs.html

8.

For SAP documentation on the net

a.

http://help.sap.com/saphelp_47x200/helpdata/en/51/055134de05a662e10000009b38f83b/frameset.htm

b.

http://help.sap.com/saphelp_47x200/helpdata/en/c5/3bd1369f2d280ee10000009b38f889/frameset.htm

But 'a' type are only mostly used

go through the few simple programs available in the below links to have a clear understanding.

http://www.sapdevelopment.co.uk/reporting/alv/alvgrid.htm

http://www.sapdevelopment.co.uk/reporting/alv/alvlist.htm

<b><u>Kindly Dont Forget to award points</u></b> Sudheer