ALV Block List
ALV Block List
The following program can show the list of Purchase Order Header and Item separately by
using ALV Block List Display function module. Here the Programming concept has been done
by OOPs.
*&---------------------------------------------------------------------*
*& Report ZSR_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
zsr_test.
TYPE-POOLS: slis.
TABLES: ekko, ekpo.
DATA: v_repid TYPE sy-repid,
v_user TYPE sy-uname,
v_date TYPE char12,
wa_top1
it_top1
wa_top2
it_top2
TYPE
TYPE
TYPE
TYPE
slis_listheader,
slis_t_listheader,
slis_listheader,
slis_t_listheader.
INITIALIZATION.
v_repid = sy-repid.
v_user = sy-uname.
v_date = sy-datum.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS
s_ebeln FOR ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
*
CLASS cls1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cls1 DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF ty_ekko,
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
lifnr TYPE ekko-lifnr,
sel
TYPE char1,
END OF ty_ekko,
BEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
TYPE
TYPE
TYPE
TYPE
wa_fcat1
it_fcat1
wa_fcat2
it_fcat2
ty_ekko,
STANDARD TABLE OF ty_ekko,
ty_ekpo,
STANDARD TABLE OF ty_ekpo,
TYPE
TYPE
TYPE
TYPE
slis_fieldcat_alv,
slis_t_fieldcat_alv,
slis_fieldcat_alv,
slis_t_fieldcat_alv,
TYPE
TYPE
TYPE
TYPE
slis_alv_event,
slis_alv_event,
slis_t_event,
slis_t_event.
"cls1 DEFINITION
*----------------------------------------------------------------------*
*
CLASS cls1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cls1 IMPLEMENTATION.
METHOD m_ekko.
SELECT ebeln bukrs lifnr
FROM ekko INTO TABLE it_ekko
WHERE ebeln IN s_ebeln.
IF sy-subrc = 0.
SORT it_ekko BY ebeln.
ELSE.
MESSAGE 'Purchase Order doesn''t exist' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDMETHOD.
METHOD m_ekpo.
"m_ekko
"m_ekpo
METHOD m_fcat.
CLEAR wa_fcat1.
REFRESH it_fcat1.
DATA: lv_col TYPE i VALUE 1.
wa_fcat1-col_pos =
wa_fcat1-fieldname
wa_fcat1-tabname =
wa_fcat1-seltext_l
APPEND wa_fcat1 TO
CLEAR wa_fcat1.
lv_col.
= 'EBELN'.
'IT_EKKO'.
= 'Purchase Order'.
it_fcat1.
lv_col = 1 + lv_col.
wa_fcat1-col_pos = lv_col.
wa_fcat1-fieldname = 'BUKRS'.
wa_fcat1-tabname = 'IT_EKKO'.
wa_fcat1-seltext_l = 'Company Code'.
APPEND wa_fcat1 TO it_fcat1.
CLEAR wa_fcat1.
lv_col = 1 + lv_col.
wa_fcat1-col_pos = lv_col.
wa_fcat1-fieldname = 'LIFNR'.
wa_fcat1-tabname = 'IT_EKKO'.
wa_fcat1-seltext_l = 'Vendor'.
APPEND wa_fcat1 TO it_fcat1.
CLEAR wa_fcat1.
CLEAR wa_fcat2.
REFRESH it_fcat2.
lv_col = 1.
wa_fcat2-col_pos =
wa_fcat2-fieldname
wa_fcat2-tabname =
wa_fcat2-seltext_l
APPEND wa_fcat2 TO
CLEAR wa_fcat2.
lv_col.
= 'EBELN'.
'IT_EKPO'.
= 'Purchase Order'.
it_fcat2.
lv_col = 1 + lv_col.
wa_fcat2-col_pos = lv_col.
wa_fcat2-fieldname = 'EBELP'.
wa_fcat2-tabname = 'IT_EKPO'.
wa_fcat2-seltext_l = 'Item'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
lv_col = 1 + lv_col.
wa_fcat2-col_pos = lv_col.
wa_fcat2-fieldname = 'MATNR'.
wa_fcat2-tabname = 'IT_EKPO'.
wa_fcat2-seltext_l = 'Material'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
lv_col = 1 + lv_col.
wa_fcat2-col_pos = lv_col.
wa_fcat2-fieldname = 'WERKS'.
wa_fcat2-tabname = 'IT_EKPO'.
wa_fcat2-seltext_l = 'Plant'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
lv_col = 1 + lv_col.
wa_fcat2-col_pos = lv_col.
wa_fcat2-fieldname = 'LGORT'.
wa_fcat2-tabname = 'IT_EKPO'.
wa_fcat2-seltext_l = 'Storage Location'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
lv_col = 1 + lv_col.
wa_fcat2-col_pos = lv_col.
wa_fcat2-fieldname = 'MENGE'.
wa_fcat2-tabname = 'IT_EKPO'.
wa_fcat2-seltext_l = 'Quantity'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
lv_col = 1 + lv_col.
wa_fcat2-col_pos = lv_col.
wa_fcat2-fieldname = 'MEINS'.
wa_fcat2-tabname = 'IT_EKPO'.
wa_fcat2-seltext_l = 'Unit'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
ENDMETHOD.
"m_fcat
METHOD m_layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-box_fieldname = 'SEL'.
ENDMETHOD.
"m_layout
METHOD m_event1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
* EXPORTING
*
I_LIST_TYPE
= 0
IMPORTING
et_events
EXCEPTIONS
list_type_wrong
OTHERS
= it_event1
= 1
= 2.
IF sy-subrc = 0.
CLEAR wa_event1.
READ TABLE it_event1 INTO wa_event1
WITH KEY name = 'TOP_OF_PAGE'.
IF sy-subrc = 0.
wa_event1-form = 'TOP1'.
MODIFY it_event1 FROM wa_event1
INDEX sy-tabix TRANSPORTING form.
ENDIF.
ENDIF.
ENDMETHOD.
"m_event1
METHOD m_event2.
*
*
*
*
*
"m_event2
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
it_events
IT_SORT
I_TEXT
TABLES
t_outtab
EXCEPTIONS
program_error
maximum_of_appends_reached
OTHERS
= it_event1
=
= ' '
= it_ekko
= 1
= 2
= 3.
"m_disp
ENDCLASS.
"cls1 IMPLEMENTATION
START-OF-SELECTION.
DATA: obj1 TYPE REF TO cls1.
CREATE OBJECT obj1.
CALL METHOD:
obj1->m_ekko,
obj1->m_ekpo,
obj1->m_fcat,
obj1->m_layout,
obj1->m_event1,
obj1->m_event2,
obj1->m_disp.
TOP-OF-PAGE.
PERFORM top1.
PERFORM top2.
*&---------------------------------------------------------------------*
*&
Form TOP1
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM top1 .
CLEAR wa_top1.
REFRESH it_top1.
wa_top1-typ = 'H'.
wa_top1-info = 'PURCHASE ORDER HEADER'.
APPEND wa_top1 TO it_top1.
CLEAR wa_top1.
wa_top1-typ = 'S'.
wa_top1-key = 'Date: '.
CONCATENATE v_date+6(2) ':'
v_date+4(2) ':'
v_date(4)
wa_top1-info INTO wa_top1-info.
APPEND wa_top1 TO it_top1.
CLEAR wa_top1.
wa_top1-typ = 'S'.
wa_top1-key = 'User: '.
CONCATENATE v_user wa_top1-info INTO wa_top1-info.
APPEND wa_top1 TO it_top1.
CLEAR wa_top1.
wa_top1-typ = 'S'.
wa_top1-key = 'Report: '.
CONCATENATE v_repid wa_top1-info INTO wa_top1-info.
APPEND wa_top1 TO it_top1.
CLEAR wa_top1.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary
= it_top1
*
I_LOGO
=
*
I_END_OF_LIST_GRID
=
*
I_ALV_FORM
=
.
ENDFORM.
" TOP1
*&---------------------------------------------------------------------*
*&
Form TOP2
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM top2 .
CLEAR wa_top2.
REFRESH it_top2.
wa_top2-typ = 'H'.
wa_top2-info = 'PURCHASE ORDER ITEM DOCUMENT'.
APPEND wa_top2 TO it_top2.
CLEAR wa_top2.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary
= it_top2
*
I_LOGO
=
*
I_END_OF_LIST_GRID
=
*
I_ALV_FORM
=
.
ENDFORM.
" TOP2