Friday, January 15, 2010

Tab Screens

*&---------------------------------------------------------------------*
*& Report Z_TABS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT z_tabs.

TABLES: zcust_master2,zacc_master2,ztrans_master2.

*---------------------------------------------------------------------*
* Internal Tables *
*---------------------------------------------------------------------*


DATA : BEGIN OF wi_zcust_master2 OCCURS 0,
zcustid LIKE zcust_master2-zcustid,
zcustname LIKE zcust_master2-zcustname,
zaddr LIKE zcust_master2-zaddr,
zcity LIKE zcust_master2-zcity,
zstate LIKE zcust_master2-zstate,
zcountry LIKE zcust_master2-zcountry,
zphone LIKE zcust_master2-zphone,
zemail LIKE zcust_master2-zemail,
zfax LIKE zcust_master2-zfax,
zstat LIKE zcust_master2-zstat,
END OF wi_zcust_master2.


DATA : BEGIN OF wi_zacc_master2 OCCURS 0,
zaccno LIKE zacc_master2-zaccno,
zcustid LIKE zacc_master2-zcustid,
zacctype LIKE zacc_master2-zacctype,
zbal LIKE zacc_master2-zbal,
zaccdate LIKE zacc_master2-zaccdate,
zstat LIKE zacc_master2-zstat,
END OF wi_zacc_master2.


*---------------------------------------------------------------------*
* selection screen *
*---------------------------------------------------------------------*
* Define screen 101 as subscreen
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t00.
SELECT-OPTIONS custid FOR zcust_master2-zcustid.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 101.

* Define screen 102 as subscreen
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
SELECT-OPTIONS: accno FOR zacc_master2-zaccno.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 102.

* Define screen 103 as subscreen
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.
PARAMETERS tranid LIKE ztrans_master2-ztranid.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF SCREEN 103.

* Define tab screen
SELECTION-SCREEN BEGIN OF TABBED BLOCK t1 FOR 20 LINES.
SELECTION-SCREEN TAB (10) name1 USER-COMMAND ucomm1 DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (20) name2 USER-COMMAND ucomm2 DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (30) name3 USER-COMMAND ucomm3 DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK t1.

INITIALIZATION.

name1 = text-n01. "CUSTOMER ID
name2 = text-n02. "ACCOUNT NUMBER
name3 = text-n03. "TRANSACTION ID

START-OF-SELECTION.
SKIP sy-lsind.
*-------------------------------------------------------------*
* To Display Customer id Tab Details
*-------------------------------------------------------------*

SELECT * FROM zcust_master2 INTO CORRESPONDING FIELDS OF TABLE wi_zcust_master2 WHERE zcustid IN custid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'ZCUST_MASTER2'
i_grid_title = 'Customer Details'
TABLES
t_outtab = wi_zcust_master2
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.



*-------------------------------------------------------------*
* To Display Account Number Tab Details
*-------------------------------------------------------------*
SELECT * FROM zacc_master2 INTO CORRESPONDING FIELDS OF TABLE wi_zacc_master2 WHERE zaccno IN accno.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'ZACC_MASTER2'
i_grid_title = 'Account Details'
TABLES
t_outtab = wi_zacc_master2
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.

Wednesday, January 13, 2010

Interactive Report-With Logo

*&---------------------------------------------------------------------*
*& Report YE1LB_REPORT_01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ye1lb_report_01
NO STANDARD PAGE HEADING
LINE-SIZE 175
LINE-COUNT 40(2)
.

********************************************************************
*Author: D.VINEETA
*Program ID: YE1LB_REPORT_01
*Program Desc: LIST OF BOOKS
*Date: 01/09/2009
********************************************************************

*
*Declaration of pools..
TYPE-POOLS : slis.


*Declaring Tables.
TABLES: ye1lb_books.

*Data Declaration.


DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_fieldcat1 TYPE slis_t_fieldcat_alv.

DATA: gs_fieldcat TYPE slis_fieldcat_alv.
DATA: gt_sort TYPE TABLE OF slis_sortinfo_alv.
DATA: gc_sort TYPE slis_sortinfo_alv.

DATA: gt_layout TYPE slis_layout_alv.
DATA: gt_events TYPE slis_t_event,
gs_events TYPE slis_alv_event,
visbn TYPE string.


DATA: v_repid LIKE sy-repid .

DATA: it_listheader TYPE slis_t_listheader.




TYPES: BEGIN OF i_structure,
isbn TYPE ye1lb_books-isbn,
locator_id TYPE ye1lb_books-locator_id,
name TYPE ye1lb_books-name,
subject TYPE ye1lb_books-subject,
author TYPE ye1lb_books-author,
publisher TYPE ye1lb_books-publisher,
copies TYPE ye1lb_books-copies,
status TYPE ye1lb_books-status,
cost TYPE ye1lb_books-cost,
year_entry TYPE ye1lb_books-year_entry,
usage1 TYPE ye1lb_books-usage1,
flag(4) TYPE c,
END OF i_structure.
DATA: gt_outtab TYPE i_structure OCCURS 1 WITH HEADER LINE.
DATA: gt_outtab1 TYPE i_structure OCCURS 1 WITH HEADER LINE.


DATA: v_pos TYPE i.
DATA: v_fnam(50) TYPE c.
DATA: okcode TYPE sy-ucomm.
DATA: o_alv TYPE REF TO cl_salv_table.

*Logo...

* START OF DO NOT CHANGE***********************************
DATA: docking TYPE REF TO cl_gui_docking_container,
picture_control_1 TYPE REF TO cl_gui_picture,
url(256) TYPE c .
DATA: query_table LIKE w3query OCCURS 1 WITH HEADER LINE,
html_table LIKE w3html OCCURS 1,
return_code LIKE w3param-ret_code,
content_type LIKE w3param-cont_type,
content_length LIKE w3param-cont_len,
pic_data LIKE w3mime OCCURS 0,
pic_size TYPE i.
* END OF DO NOT CHANGE*************************************

*Logo...

INCLUDE .

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
SELECTION-SCREEN SKIP 2.
SELECT-OPTIONS: s_isbn FOR ye1lb_books-isbn.
SELECTION-SCREEN SKIP 4.
SELECTION-SCREEN END OF BLOCK b1.

*Title displayed when the alv list is displayed
DATA: i_title_01 TYPE lvc_title VALUE 'List Of Books'.
DATA: i_title_02 TYPE lvc_title VALUE 'Details of the Book'.


************Events************************

*-------------------------------------------------------------
* Call F4 help for plant
*-------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_isbn-low.
PERFORM show_f4_help.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_isbn-high.
PERFORM show_f4_help.
AT SELECTION-SCREEN OUTPUT.
if sy-lsind <> 1.
PERFORM show_pic.
endif.

FORM show_f4_help.

DATA: BEGIN OF it_isbn OCCURS 0,
name type ye1lb_books-name,
isbn TYPE ye1lb_books-isbn,
END OF it_isbn.

DATA: t_return LIKE ddshretval OCCURS 0 WITH HEADER LINE.

SELECT * FROM ye1lb_books INTO CORRESPONDING FIELDS OF TABLE
it_isbn.
sort it_isbn by isbn.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'ISBN'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'S_ISBN'
value_org = 'S'
display = 'F'
TABLES
value_tab = it_isbn
return_tab = t_return.
ENDFORM. "show_f4_help



*&-------------------------------------------------------------------
*& Form show_pic
*&-------------------------------------------------------------------
FORM show_pic.

DATA: repid LIKE sy-repid.

repid = sy-repid.

CREATE OBJECT picture_control_1 EXPORTING parent = docking.

CHECK sy-subrc = 0.
CALL METHOD picture_control_1->set_3d_border
EXPORTING
border = 5.

CALL METHOD picture_control_1->set_display_mode
EXPORTING
display_mode = cl_gui_picture=>display_mode_stretch.
CALL METHOD picture_control_1->set_position
EXPORTING
height = 90
left = 720
top = 5
width = 220.
*CHANGE POSITION AND SIZE ABOVE***************************

IF url IS INITIAL.

REFRESH query_table.
query_table-name = '_OBJECT_ID'.
*CHANGE IMAGE NAME BELOW UPLOADED IN SWO0******************
query_table-value = 'ZLOGO'.
APPEND query_table.

CALL FUNCTION 'WWW_GET_MIME_OBJECT'
TABLES
query_string = query_table
html = html_table
mime = pic_data
CHANGING
return_code = return_code
content_type = content_type
content_length = content_length
EXCEPTIONS
object_not_found = 1
parameter_not_found = 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 'DP_CREATE_URL'
EXPORTING
type = 'image'
subtype = cndp_sap_tab_unknown
size = pic_size
lifetime = cndp_lifetime_transaction
TABLES
data = pic_data
CHANGING
url = url
EXCEPTIONS
OTHERS = 1.

ENDIF.

CALL METHOD picture_control_1->load_picture_from_url
EXPORTING
url = url.

*Syntax for URL
*url = 'file://D:\corp-gbanerji\pickut\cartoon_184.gif'.
*url = 'http://l.yimg.com/a/i/ww/beta/y3.gif'.

ENDFORM. "show_pic
**********************

FORM show_pic1.

DATA: repid LIKE sy-repid.

repid = sy-repid.

CREATE OBJECT picture_control_1 EXPORTING parent = docking.

CHECK sy-subrc = 0.
CALL METHOD picture_control_1->set_3d_border
EXPORTING
border = 5.

CALL METHOD picture_control_1->set_display_mode
EXPORTING
display_mode = cl_gui_picture=>display_mode_stretch.
CALL METHOD picture_control_1->set_position
EXPORTING
height = 90
left = 720
top = 5
width = 220.
*CHANGE POSITION AND SIZE ABOVE***************************

IF url IS INITIAL.

REFRESH query_table.
query_table-name = '_OBJECT_ID'.
*CHANGE IMAGE NAME BELOW UPLOADED IN SWO0******************
query_table-value = ''.
APPEND query_table.

CALL FUNCTION 'WWW_GET_MIME_OBJECT'
TABLES
query_string = query_table
html = html_table
mime = pic_data
CHANGING
return_code = return_code
content_type = content_type
content_length = content_length
EXCEPTIONS
object_not_found = 1
parameter_not_found = 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 'DP_CREATE_URL'
EXPORTING
type = 'image'
subtype = cndp_sap_tab_unknown
size = pic_size
lifetime = cndp_lifetime_transaction
TABLES
data = pic_data
CHANGING
url = url
EXCEPTIONS
OTHERS = 1.

ENDIF.

CALL METHOD picture_control_1->load_picture_from_url
EXPORTING
url = url.

*Syntax for URL
*url = 'file://D:\corp-gbanerji\pickut\cartoon_184.gif'.
*url = 'http://l.yimg.com/a/i/ww/beta/y3.gif'.

ENDFORM. "show_pic1

**************************

********************************************************************
* I N I T I A L I Z A T I O N *
********************************************************************
INITIALIZATION.
v_repid = sy-repid.

PERFORM field_cat_init USING gt_fieldcat[].

PERFORM event_call.
PERFORM populate_event.



********************************************************************
* A T S E L E C T I O N - S C R E E N *
********************************************************************
AT SELECTION-SCREEN.
PERFORM validate.
v_pos = 1.
v_fnam = 'ISBN'.
PERFORM build_sort USING v_pos v_fnam.
*
********************************************************************
* S T A R T O F S E L E C T I O N - S C R E E N
*
********************************************************************
START-OF-SELECTION.

PERFORM show_pic1.

PERFORM sel_data.
LOOP AT gt_outtab.
IF gt_outtab-usage1 = 'ACTIVE'.
gt_outtab-flag = '@08@'.
ELSE.
gt_outtab-flag = '@0A@'.
ENDIF.
MODIFY gt_outtab.
ENDLOOP.

PERFORM build_listheader USING it_listheader.





********************************************************************
* A T L I N E S E L E C T I O N
*
********************************************************************

********************************************************************
* E N D O F S E L E C T I O N - S C R E E N
*
********************************************************************
END-OF-SELECTION.
PERFORM display_data USING gt_layout.



*&---------------------------------------------------------------------*
*& Form field_cat_init
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_FIELDCAT[] text
*----------------------------------------------------------------------*
FORM field_cat_init USING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv,
pos TYPE i VALUE 1.
CLEAR ls_fieldcat.
*Column 1
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ISBN'.
ls_fieldcat-ref_fieldname = 'ISBN'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-seltext_m = 'ISBN No.'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.

*Column 2
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME'.
ls_fieldcat-ref_fieldname = 'NAME'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
ls_fieldcat-outputlen = 75.
ls_fieldcat-seltext_m = 'Name of the Book'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.

*Column 3
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'STATUS'.
ls_fieldcat-ref_fieldname = 'STATUS'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 10.
ls_fieldcat-seltext_m = 'Staus'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.

* *Column 4
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'FLAG'.
ls_fieldcat-outputlen = 20.
ls_fieldcat-icon = 'X'.

ls_fieldcat-seltext_m = 'ACTIVE/INACTIVE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
*

ENDFORM. " field_cat_ini
*&---------------------------------------------------------------------*
*& Form SEL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sel_data.

SELECT * FROM ye1lb_books INTO CORRESPONDING FIELDS OF TABLE
gt_outtab WHERE isbn IN s_isbn.

ENDFORM. " SEL_DATA
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GS_LAYOUT text
*----------------------------------------------------------------------*
FORM display_data USING p_gt_layout.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
* i_callback_pf_status_set = 'STANDARD'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
i_structure_name = 'I_STRUCTURE'
* I_BACKGROUND_ID = ' '
i_grid_title = i_title_01
* I_GRID_SETTINGS =
* is_layout = gt_layout
it_fieldcat = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = gt_sort
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* IS_VARIANT =
it_events = gt_events
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_outtab
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_dat
*&---------------------------------------------------------------------*
*& Form validate
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM validate .
SELECT SINGLE isbn FROM ye1lb_books INTO CORRESPONDING FIELDS OF
gt_outtab
WHERE isbn IN s_isbn.
IF sy-subrc <> 0.
MESSAGE e011(ye1lib).
ENDIF.

ENDFORM. " valida
*&---------------------------------------------------------------------*
*& Form build_sort
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_sort USING v_pos v_fnam.
gc_sort-spos = v_pos.
gc_sort-fieldname = v_fnam.
gc_sort-up = 'X'.

APPEND gc_sort TO gt_sort.

ENDFORM. " build_sort


*&---------------------------------------------------------------------*
*& Form STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM status USING rt_extab TYPE slis_t_extab.
.
SET PF-STATUS 'YE1LIB'.

ENDFORM. "STATUS
*&---------------------------------------------------------------------*
*& Form EVENT_CALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM event_call .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events
* 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.
*



ENDFORM. " EVENT_CALL
*&---------------------------------------------------------------------*
*& Form POPULATE_EVENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM populate_event .

READ TABLE gt_events INTO gs_events WITH KEY name = 'TOP_OF_PAGE'.
IF sy-subrc EQ 0.
gs_events-form = 'TOP_OF_PAGE'.
MODIFY gt_events FROM gs_events TRANSPORTING form WHERE name =
gs_events-form.
ENDIF.

READ TABLE gt_events INTO gs_events WITH KEY name = 'USER_COMMAND'.
IF sy-subrc EQ 0.
gs_events-form = 'USER_COMMAND'.
MODIFY gt_events FROM gs_events TRANSPORTING form WHERE name =
gs_events-name.
ENDIF.




ENDFORM. " POPULATE_EVENT
*&---------------------------------------------------------------------*
*& Form BUILD_LISTHEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_LISTHEADER text
*----------------------------------------------------------------------*
FORM build_listheader USING p_it_listheader.


DATA: hline1 TYPE slis_listheader.
hline1-typ = 'H'.
hline1-info = 'CHECKING PGM'.




ENDFORM. " BUILD_LISTHEADER

*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'LOGOFF'
* I_END_OF_LIST_GRID =
.

ENDFORM. "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->, text
* -->RS_SLEFIELDtext
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE gt_outtab INTO gt_outtab INDEX rs_selfield-tabindex.
clear gt_fieldcat1.
PERFORM build_fieldcatlog_books USING gt_fieldcat1.
.
PERFORM event_call_books.
PERFORM populate_event_books.
PERFORM data_retrieval_books USING visbn.
PERFORM build_listheader_books USING it_listheader.
PERFORM display_alv_books.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATLOG_books
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatlog_books USING rt_fieldcat TYPE slis_t_fieldcat_alv.



DATA: ls_fieldcat TYPE slis_fieldcat_alv,
pos1 TYPE i VALUE 1.
CLEAR ls_fieldcat.
*Column 1
ls_fieldcat-col_pos = pos1.
ls_fieldcat-fieldname = 'LOCATOR_ID'.
ls_fieldcat-ref_fieldname = 'LOCATOR_ID'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
* ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-seltext_m = 'Location'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos1 = pos1 + 1.

*Column 2
ls_fieldcat-col_pos = pos1.
ls_fieldcat-fieldname = 'SUBJECT'.
ls_fieldcat-ref_fieldname = 'SUBJECT'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
* ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-seltext_m = 'Subject'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos1 = pos1 + 1.

*Column 3
ls_fieldcat-col_pos = pos1.
ls_fieldcat-fieldname = 'AUTHOR'.
ls_fieldcat-ref_fieldname = 'AUTHOR'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
* ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 30.
ls_fieldcat-seltext_m = 'Author'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos1 = pos1 + 1.

*Column 4
ls_fieldcat-col_pos = pos1.
ls_fieldcat-fieldname = 'PUBLISHER'.
ls_fieldcat-ref_fieldname = 'PUBLISHER'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
* ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 20.
ls_fieldcat-seltext_m = 'Publisher'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos1 = pos1 + 1.

*Column 5
ls_fieldcat-col_pos = pos1.
ls_fieldcat-fieldname = 'COPIES'.
ls_fieldcat-ref_fieldname = 'COPIES'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
* ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 10.
ls_fieldcat-seltext_m = 'Copies'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos1 = pos1 + 1.


*Column 6
ls_fieldcat-col_pos = pos1.
ls_fieldcat-fieldname = 'COST'.
ls_fieldcat-ref_fieldname = 'COST'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
* ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 10.
ls_fieldcat-seltext_m = 'Cost'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos1 = pos1 + 1.

*Column 7
ls_fieldcat-col_pos = pos1.
ls_fieldcat-fieldname = 'YEAR_ENTRY'.
ls_fieldcat-ref_fieldname = 'YEAR_ENTRY'.
ls_fieldcat-ref_tabname = 'YE1LB_BOOKS'.
* ls_fieldcat-key = 'X'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-seltext_m = 'Entry Date'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos1 = pos1 + 1.




ENDFORM. " BUILD_FIELDCATLOG_books
*&---------------------------------------------------------------------*
*& Form EVENT_CALL_BOOKS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM event_call_books .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events
* 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.

ENDFORM. " EVENT_CALL_BOOKS
*&---------------------------------------------------------------------*
*& Form POPULATE_EVENT_BOOKS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM populate_event_books .
READ TABLE gt_events INTO gs_events WITH KEY name = 'TOP_OF_PAGE'.
IF sy-subrc EQ 0.
gs_events-form = 'TOP_OF_PAGE'.
MODIFY gt_events FROM gs_events TRANSPORTING form WHERE name =
gs_events-form.
visbn = gt_outtab-isbn.
ENDIF.

ENDFORM. " POPULATE_EVENT_BOOKS

*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM f_top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader
i_logo = 'LOGOF'
* I_END_OF_LIST_GRID =
.

ENDFORM. "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->, text
* -->RS_SLEFIELDtext
*---------------------------------------------------------------------*

*retreiving values
FORM data_retrieval_books USING visbn.
SELECT * FROM ye1lb_books INTO CORRESPONDING FIELDS OF TABLE gt_outtab1
WHERE isbn = visbn.
ENDFORM. "DATA_RETRIEVAL_BOOKS

*&---------------------------------------------------------------------*
*& Form BUILD_LISTHEADER_BOOKS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_LISTHEADER text
*----------------------------------------------------------------------*
FORM build_listheader_books USING i_listheader TYPE slis_t_listheader.
DATA: hline1 TYPE slis_listheader.
hline1-typ = 'H'.
hline1-info = 'CHECKING PGM'.
ENDFORM. "BUILD_LISTHEADER_BOOKS


*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_BOOKS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_alv_books.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = v_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
i_grid_title = i_title_02
* I_GRID_SETTINGS =
* IS_LAYOUT =
it_fieldcat = gt_fieldcat1[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT =
i_save = 'A'
* IS_VARIANT =
it_events = gt_events
TABLES
t_outtab = gt_outtab1
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_ALV_BOOK

Wiki ALV Report

/* ABAP Interactive ALV Program*/ *&---------------------------------------------------------------------*
*& Report ZZ_22038_22098_002 *
*& *
*&---------------------------------------------------------------------*
*& This is an Interactive ALV report, where on line slection we can see
*& the secondry list
*&
*& *
*&---------------------------------------------------------------------*

REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
MESSAGE-ID ZZ_9838 .

TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
BUKRS LIKE EKKO-BUKRS,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
WA_EKKO TYPE I_EKKO.

*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
WA_EKPO TYPE I_EKPO .

*variable for Report ID
DATA: V_REPID LIKE SY-REPID .

*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.


DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.

* declaration for events table where user comand or set PF status will
* be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.

* declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.

* declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.

*PARAMETERS : p_var TYPE disvariant-variant.

*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.

INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.

START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.

*&--------------------------------------------------------------------*
*& Form BUILD_FIELDCATLOG
*&--------------------------------------------------------------------*
* Fieldcatalog has all the field details from ekko
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.


ENDFORM. "BUILD_FIELDCATLOG

*&--------------------------------------------------------------------*
*& Form EVENT_CALL
*&--------------------------------------------------------------------*
* we get all events - TOP OF PAGE or USER COMMAND in table v_events
*---------------------------------------------------------------------*
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
.
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. "EVENT_CALL

*&--------------------------------------------------------------------*
*& Form POPULATE_EVENT
*&--------------------------------------------------------------------*
* Events populated for TOP OF PAGE & USER COMAND
*---------------------------------------------------------------------*
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT


*&--------------------------------------------------------------------*
*& Form data_retrieval
*&--------------------------------------------------------------------*
* retreiving values from the database table ekko
*---------------------------------------------------------------------*
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.

ENDFORM. "data_retrieval
*&--------------------------------------------------------------------*
*& Form bUild_listheader
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->I_LISTHEADEtext
*---------------------------------------------------------------------*
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader

*&--------------------------------------------------------------------*
*& Form display_alv_report
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
IT_FIELDCAT = I_FIELDCAT[]
I_SAVE = 'A'
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKKO

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




*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
.

ENDFORM. "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->, text
* -->RS_SLEFIELDtext
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
*&--------------------------------------------------------------------*
*& Form BUILD_FIELDCATLOG_EKPO
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATLOG_EKPO.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.


ENDFORM. "BUILD_FIELDCATLOG_EKPO

*&--------------------------------------------------------------------*
*& Form event_call_ekpo
*&--------------------------------------------------------------------*
* we get all events - TOP OF PAGE or USER COMMAND in table v_events
*---------------------------------------------------------------------*
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS

.
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. "event_call_ekpo


*&--------------------------------------------------------------------*
*& Form POPULATE_EVENT
*&--------------------------------------------------------------------*
* Events populated for TOP OF PAGE & USER COMAND
*---------------------------------------------------------------------*
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.

ENDFORM. "POPULATE_EVENT

*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
.

ENDFORM. "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->, text
* -->RS_SLEFIELDtext
*---------------------------------------------------------------------*

*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.

FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.


FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKPO
IT_FIELDCAT = I_FIELDCAT[]
I_SAVE = 'A'
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKPO
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.

Drill Down Report

Example Code For Drill Down Report
REPORT zmm_rept_purchorderkkb01 LINE-SIZE 80
LINE-COUNT 65(3)
MESSAGE-ID z_msg_class
NO STANDARD PAGE HEADING.

*------------------DECLARING THE STANDARD TABLES---------------------*
TABLES : ekko, "PURCHASE ORDER : HEADER
ekpo. "PURCHASE ORDER : ITEM

*------------------DECLARING THE INTERNAL TABLE----------------------*
DATA : BEGIN OF it_ekko OCCURS 2,
ebeln LIKE ekko-ebeln, "PURCHASE ORDER NUMBER
bukrs LIKE ekko-bukrs, "COMPANY CODE
bsart LIKE ekko-bsart, "PURCHASING DOCUMENT TYPE
lifnr LIKE ekko-lifnr, "VENDOR
spras LIKE ekko-spras, "LANGUAGE KEY
zterm LIKE ekko-zterm, "PAYMENT TERMS KEY
end of it_ekko.

DATA : BEGIN OF it_ekpo OCCURS 2,
ebeln LIKE ekpo-ebeln, "PURCHASE ORDER NUMBER
ebelp LIKE ekpo-ebelp, "PURCHASE ORDER NUMBER
werks LIKE ekpo-werks, "PLANT
matnr LIKE ekpo-matnr, "MATERIAL NUMBER
matkl LIKE ekpo-matkl, "MATERIAL GROUP
END OF it_ekpo.

DATA: it_ebeln LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.

*DATA: it_ebeln_high LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.

DATA: p_ebeln TYPE i.

*------------------Declaring the selection screen--------------------*

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_ebeln FOR ekko-ebeln.

PARAMETER : p_limit TYPE i.

SELECTION-SCREEN END OF BLOCK blk1.


*INCLUDE z_incl_purorderkkb01_sub_f01.


*--------------------------------------------------------------------*
* Validation for number of records to be printed *
*--------------------------------------------------------------------*

*AT SELECTION-SCREEN ON p_limit.
* IF p_limit IS INITIAL.
* MESSAGE e011.
* ENDIF.


* IF p_limit GT sy-linct.
* MESSAGE e010.
* ENDIF.


*----------------------------------------------------------------------*
* Search help for purchase document number (s_ebeln-low) *
*----------------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-low.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = s_ebeln-low
IMPORTING
output = s_ebeln-low.

perform form_search_help.

IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 2.
LEAVE TO SCREEN 1000.
ENDCASE.
ELSE.
LOOP AT it_ebeln.
IF sy-tabix = p_ebeln.
s_ebeln-low = it_ebeln.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.

*----------------------------------------------------------------------*
* Search help for purchase document number (s_ebeln-high) *
*----------------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-high.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = s_ebeln-high
IMPORTING
output = s_ebeln-high.

perform form_search_help.

IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 2.
LEAVE TO SCREEN 1000.
ENDCASE.
ELSE.
LOOP AT it_ebeln.
IF sy-tabix = p_ebeln.
s_ebeln-high = it_ebeln.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.

*----------------------------------------------------------------------*
* Start-of-selection event *
*----------------------------------------------------------------------*

START-OF-SELECTION.

*----------------------To attach a user interface----------------------*
SET PF-STATUS '0010'.

*---------To fetch the data for the basic list-------------------------*
SELECT ebeln "PURCHASE ORDER NUMBER
bukrs "COMPANY CODE
bsart "PURCHASING DOCUMENT TYPE
lifnr "VENDOR
spras "LANGUAGE KEY
zterm "PAYMENT TERMS KEY
up to p_limit rows
into table it_ekko from ekko
where ebeln in s_ebeln.

REFRESH it_ekpo.

*---------To fetch the data for the secondary list-----------------------*

if it_ekpo is initial.

SELECT ebeln "PURCHASE ORDER NUMBER
ebelp "PURCHASING DOCUMENT TYPE
werks "PLANT
matnr "MATERIAL NUMBER
matkl "MATERIAL GROUP
FROM ekpo INTO TABLE it_ekpo for all entries in it_ekko
WHERE ebeln EQ it_ekko-ebeln.

endif.

*----------------------------------------------------------------------*
* End-of-selection event *
*----------------------------------------------------------------------*

END-OF-SELECTION.


*---------To display the data for the basic list-----------------------*
format color 4 intensified off.
LOOP AT it_ekko.
WRITE :/ sy-vline, it_ekko-ebeln UNDER text-002, 18 sy-vline,
"PURCHASE ORDER NUMBER
it_ekko-bukrs UNDER text-003, 27 sy-vline,
"COMPANY CODE
it_ekko-bsart UNDER text-004, 38 sy-vline,
"PURCHASING DOCUMENT TYPE
it_ekko-lifnr UNDER text-005, 50 sy-vline,
"VENDOR
it_ekko-spras UNDER text-006, 62 sy-vline,
"LANGUAGE KEY
it_ekko-zterm UNDER text-007, 80 sy-vline.
"PAYMENT TERMS KEY

hide : it_ekko-ebeln.
ENDLOOP.
WRITE :/ sy-uline(80).

*----------------------------------------------------------------------*
* To generate the detailed lists *
*----------------------------------------------------------------------*

AT LINE-SELECTION.
CASE sy-lsind.
WHEN 1.
SET PF-STATUS '0011'.

*---------To display the data for the secondary list-----------------------*
WINDOW STARTING AT 10 10
ENDING AT 90 30.
format color 5 intensified off.
LOOP AT it_ekpo where ebeln = it_ekko-ebeln .
WRITE :/ sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline,
"PURCHASE ORDER NUMBER
it_ekpo-ebelp UNDER text-008, 30 sy-vline,
"PO ITEM NUMBER
it_ekpo-werks UNDER text-009, 45 sy-vline,
"PLANT
it_ekpo-matnr UNDER text-010, 60 sy-vline,
"MATERIAL NUMBER
it_ekpo-matkl UNDER text-011, 80 sy-vline.
"MATERIAL GROUP
ENDLOOP.

WRITE :/ sy-uline(80).

ENDCASE.

CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC' OR 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.

*----------------------------------------------------------------------*
* At user-command event *
*----------------------------------------------------------------------*

AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'SELE' OR 'LIST1'.
IF sy-lsind = 1.
SET PF-STATUS '0011'.

*---------To display the data for the secondary list-----------------------*

WINDOW STARTING AT 10 10
ENDING AT 90 30.
format color 5 intensified off.

LOOP AT it_ekpo where ebeln = it_ekko-ebeln .
WRITE :/ sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline, "PURCHASE ORDER NUMBER
it_ekpo-ebelp UNDER text-008, 30 sy-vline, "PO ITEM NUMBER
it_ekpo-werks UNDER text-009, 45 sy-vline, "PLANT
it_ekpo-matnr UNDER text-010, 60 sy-vline, "MATERIAL NUMBER
it_ekpo-matkl UNDER text-011, 80 sy-vline. "MATERIAL GROUP

ENDLOOP.

WRITE :/ sy-uline(80).
endif.

ENDCASE.

CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC' OR 'BACK'.
LEAVE TO SCREEN 0.

ENDCASE.

*----------------------------------------------------------------------*
* Top-of-page for basic list *
*----------------------------------------------------------------------*

TOP-OF-PAGE.

format color 3 intensified off.

WRITE :/ sy-uline(80).
WRITE :/ sy-vline,
03 sy-repid,
60 text-015,
sy-uname,
80 sy-vline.
WRITE :/ sy-vline, 03 sy-datum,
35 text-012,
60 text-014,
sy-pagno,
80 sy-vline.
WRITE :/ sy-uline(80).
WRITE :/ sy-vline, text-002, 18 sy-vline, "PURCHASE ORDER NUMBER
text-003, 27 sy-vline, "COMPANY CODE
text-004, 38 sy-vline, "PURCHASING DOCUMENT TYPE
text-005, 50 sy-vline, "VENDOR
text-006, 62 sy-vline, "LANGUAGE KEY
text-007, 80 sy-vline. "PAYMENT TERMS KEY
WRITE :/ sy-uline(80).

*----------------------------------------------------------------------*
* Top-of-page for secondary list *
*----------------------------------------------------------------------*

TOP-OF-PAGE DURING LINE-SELECTION.
format color 2 intensified off.
WINDOW STARTING AT 10 10
ENDING AT 90 30.
WRITE :/ sy-uline(80).
WRITE :/ sy-vline,
03 sy-repid,
60 text-015,
sy-uname,
80 sy-vline.

WRITE :/ sy-vline,
03 sy-datum,
35 text-013,
60 text-014,
sy-pagno,
80 sy-vline.

WRITE :/ sy-uline(80).

WRITE :/ sy-vline, text-014, 15 sy-vline, "PURCHASE ORDER NUMBER
text-008, 30 sy-vline, "PO ITEM NUMBER
text-009, 45 sy-vline, "PLANT
text-010, 60 sy-vline, "MATERIAL NUMBER
text-011, 80 sy-vline. "MATERIAL GROUP

WRITE :/ sy-uline(80).

*----------------------------------------------------------------------*
* End-of-page event *
*----------------------------------------------------------------------*

END-OF-PAGE.
WRITE :/ sy-vline,
03 text-016,
p_limit,
60 text-014,
sy-pagno,
80 sy-vline.
write:/ sy-uline(80).

INCLUDE Z_INCLUDE_PURCHORDERKKB01.
form form_search_help .

REFRESH it_ebeln.
CLEAR it_ebeln.
CLEAR P_ebeln.

SELECT ebeln FROM ekko INTO TABLE it_ebeln.

CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 21
endpos_row = 35
startpos_col = 12
startpos_row = 1
titletext = text-012

IMPORTING
choise = P_ebeln

TABLES
valuetab = it_ebeln

EXCEPTIONS
break_off = 1
OTHERS = 2.
Tips By : Kavuri

Interactive Report

*&---------------------------------------------------------------------*
*& Report ZZ_22038_22098_002 *
*& *
*&---------------------------------------------------------------------*
*& This is an Interactive ALV report, where on line slection we can see
*& the secondry list
*&
*& *
*&---------------------------------------------------------------------*

REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
MESSAGE-ID ZZ_9838 .

TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
BUKRS LIKE EKKO-BUKRS,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
WA_EKKO TYPE I_EKKO.

*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
WA_EKPO TYPE I_EKPO .

*variable for Report ID
DATA: V_REPID LIKE SY-REPID .

*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.


DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.

* declaration for events table where user comand or set PF status will
* be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.

* declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.

* declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.

*PARAMETERS : p_var TYPE disvariant-variant.

*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.

INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.

START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.

*&--------------------------------------------------------------------*
*& Form BUILD_FIELDCATLOG
*&--------------------------------------------------------------------*
* Fieldcatalog has all the field details from ekko
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.


ENDFORM. "BUILD_FIELDCATLOG

*&--------------------------------------------------------------------*
*& Form EVENT_CALL
*&--------------------------------------------------------------------*
* we get all events - TOP OF PAGE or USER COMMAND in table v_events
*---------------------------------------------------------------------*
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
* 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.
ENDFORM. "EVENT_CALL

*&--------------------------------------------------------------------*
*& Form POPULATE_EVENT
*&--------------------------------------------------------------------*
* Events populated for TOP OF PAGE & USER COMAND
*---------------------------------------------------------------------*
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT


*&--------------------------------------------------------------------*
*& Form data_retrieval
*&--------------------------------------------------------------------*
* retreiving values from the database table ekko
*---------------------------------------------------------------------*
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.

ENDFORM. "data_retrieval
*&--------------------------------------------------------------------*
*& Form bUild_listheader
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->I_LISTHEADEtext
*---------------------------------------------------------------------*
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader

*&--------------------------------------------------------------------*
*& Form display_alv_report
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
* I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
* I_GRID_SETTINGS =
* IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* i_default = 'ZLAY1'
I_SAVE = 'A'
* is_variant = i_variant
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKKO
* 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_alv_report




*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
* i_logo =
* I_END_OF_LIST_GRID =
.

ENDFORM. "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->, text
* -->RS_SLEFIELDtext
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
*&--------------------------------------------------------------------*
*& Form BUILD_FIELDCATLOG_EKPO
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATLOG_EKPO.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.


ENDFORM. "BUILD_FIELDCATLOG_EKPO

*&--------------------------------------------------------------------*
*& Form event_call_ekpo
*&--------------------------------------------------------------------*
* we get all events - TOP OF PAGE or USER COMMAND in table v_events
*---------------------------------------------------------------------*
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
* 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.
ENDFORM. "event_call_ekpo


*&--------------------------------------------------------------------*
*& Form POPULATE_EVENT
*&--------------------------------------------------------------------*
* Events populated for TOP OF PAGE & USER COMAND
*---------------------------------------------------------------------*
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.

ENDFORM. "POPULATE_EVENT

*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
* i_logo =
* I_END_OF_LIST_GRID =
.

ENDFORM. "TOP_OF_PAGE

*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->, text
* -->RS_SLEFIELDtext
*---------------------------------------------------------------------*

*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.

FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.


FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
I_GRID_TITLE = I_TITLE_EKPO
* I_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT =
I_SAVE = 'A'
* IS_VARIANT =
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKPO
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.

ABAP MULTIPLE INTERACTIVE REPORT SAMPLE CODE 2.txt

*TABLES DECLARATION
TABLES : KNA1, VBAK, VBAP.

*SELECT OPTIONS
SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR.

*INITIALIZATION
INITIALIZATION.
CUST_NO-LOW = '01'.
CUST_NO-HIGH = '5000'.
CUST_NO-SIGN = 'I'.
CUST_NO-OPTION = 'BT'.
APPEND CUST_NO.

*SELECTION SCREEN VALIDATION
AT SELECTION-SCREEN ON CUST_NO.

LOOP AT SCREEN.
IF CUST_NO-LOW <> 5000.
MESSAGE E001(ZTJ1).
ENDIF.
ENDLOOP.

*BASIC LIST SELECTION
START-OF-SELECTION.

SELECT KUNNR NAME1 ORT01 LAND1 INTO
(KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1)
FROM KNA1
WHERE KUNNR IN CUST_NO.

WRITE:/1 SY-VLINE,
KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
KNA1-NAME1 UNDER 'NAME',
61 SY-VLINE,
KNA1-ORT01 UNDER 'CITY',
86 SY-VLINE,
KNA1-LAND1 UNDER 'COUNTRY',
103 SY-VLINE.

HIDE: KNA1-KUNNR.
ENDSELECT.
ULINE.

*SECONDARY LIST ACCESS

AT user-command.

IF SY-UCOMM = 'IONE'.
PERFORM SALES_ORD.
ENDIF.
IF SY-UCOMM = 'ITWO'.
PERFORM ITEM_DET.
ENDIF.

*TOP OF PAGE
TOP-OF-PAGE.

FORMAT COLOR 1.
WRITE : 'CUSTOMER DETAILS'.
FORMAT COLOR 1 OFF.
ULINE.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'NAME',
61 SY-VLINE,
63 'CITY',
86 SY-VLINE,
88 'COUNTRY',
103 SY-VLINE.

ULINE.
FORMAT COLOR 3 OFF.

*TOP OF PAGE FOR SECONDARY LISTS
TOP-OF-PAGE DURING LINE-SELECTION.

*TOP OF PAGE FOR 1ST SECONDARY LIST
IF SY-UCOMM = 'IONE'.
ULINE.
FORMAT COLOR 1.
WRITE : 'SALES ORDER DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'SALES ORDER NO.',
40 SY-VLINE,
42 'DATE',
60 SY-VLINE,
62 'CREATOR',
85 SY-VLINE,
87 'DOC DATE',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR 2ND SECONDARY LIST

IF SY-UCOMM = 'ITWO'.
ULINE.
FORMAT COLOR 1.
WRITE : 'ITEM DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.

WRITE : 1 SY-VLINE,
3 'SALES ORDER NO.',
40 SY-VLINE,
42 'SALES ITEM NO.',
60 SY-VLINE,
62 'ORDER QUANTITY',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*END OF PAGE

END-OF-PAGE.
ULINE.
WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:',
SY-PAGNO.
SKIP.
*&---------------------------------------------------------------------*
*& Form SALES_ORD
*&
*& FIRST SECONDARY LIST FORM
*&---------------------------------------------------------------------*

FORM SALES_ORD .

SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO
(VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT)
FROM VBAK
WHERE KUNNR = KNA1-KUNNR.

WRITE:/1 SY-VLINE,
VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON,
40 SY-VLINE,
VBAK-ERDAT UNDER 'DATE',
60 SY-VLINE,
VBAK-ERNAM UNDER 'CREATOR',
85 SY-VLINE,
VBAK-AUDAT UNDER 'DOC DATE',
103 SY-VLINE.
HIDE : VBAK-VBELN.
ENDSELECT.

ULINE.
ENDFORM. " SALES_ORD

*&---------------------------------------------------------------------*
*& Form ITEM_DET
*&
*& SECOND SECONDARY LIST FORM
*&---------------------------------------------------------------------*
FORM ITEM_DET .

SELECT VBELN POSNR KWMENG INTO
(VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)
FROM VBAP
WHERE VBELN = VBAK-VBELN.

WRITE : /1 SY-VLINE,
VBAP-VBELN UNDER 'SALES ORDER NO.',
40 SY-VLINE,
VBAP-POSNR UNDER 'SALES ITEM NO.',
60 SY-VLINE,
VBAP-KWMENG UNDER 'ORDER QUANTITY',
103 SY-VLINE.

ENDSELECT.
ULINE.
ENDFORM. " ITEM_DET
************************************************************************

REPORT demo_list_at_pf.

START-OF-SELECTION.
WRITE 'Basic List, Press PF5, PF6, PF7, or PF8'.

AT pf5.
PERFORM out.

AT pf6.
PERFORM out.

AT pf7.
PERFORM out.

AT pf8.
PERFORM out.

FORM out.
WRITE: 'Secondary List by PF-Key Selection',
/ 'SY-LSIND =', sy-lsind,
/ 'SY-UCOMM =', sy-ucomm.
ENDFORM.

After executing the program, the system displays the basic list. The user can press the function keys F5 , F6 , F7 , and F8 to create secondary lists. If, for example, the 14th key the user presses is F6 , the output on the displayed secondary list looks as follows:

Secondary List by PF-Key Selection

SY-LSIND = 14

SY-UCOMM = PF06



Example for AT USER-COMMAND.

REPORT demo_list_at_user_command NO STANDARD PAGE HEADING.

START-OF-SELECTION.
WRITE: 'Basic List',
/ 'SY-LSIND:', sy-lsind.

TOP-OF-PAGE.
WRITE 'Top-of-Page'.
ULINE.

TOP-OF-PAGE DURING LINE-SELECTION.
CASE sy-pfkey.
WHEN 'TEST'.
WRITE 'Self-defined GUI for Function Codes'.
ULINE.
ENDCASE.

AT LINE-SELECTION.
SET PF-STATUS 'TEST' EXCLUDING 'PICK'.
PERFORM out.
sy-lsind = sy-lsind - 1.

AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'FC1'.
PERFORM out.
WRITE / 'Button FUN 1 was pressed'.
WHEN 'FC2'.
PERFORM out.
WRITE / 'Button FUN 2 was pressed'.
WHEN 'FC3'.
PERFORM out.
WRITE / 'Button FUN 3 was pressed'.
WHEN 'FC4'.
PERFORM out.
WRITE / 'Button FUN 4 was pressed'.
WHEN 'FC5'.
PERFORM out.
WRITE / 'Button FUN 5 was pressed'.
ENDCASE.
sy-lsind = sy-lsind - 1.

FORM out.
WRITE: 'Secondary List',
/ 'SY-LSIND:', sy-lsind,
/ 'SY-PFKEY:', sy-pfkey.
ENDFORM.

When you run the program, the system displays the following basic list with a the page header defined in the program:

You can trigger the AT LINE-SELECTION event by double-clicking a line. The system sets the status TEST and deactivates the function code PICK. The status TEST contains function codes FC1 to FC5. These are assigned to pushbuttons in the application toolbar. The page header of the detail list depends on the status.

Here, double-clicking a line no longer triggers an event. However, there is now an application toolbar containing five user-defined pushbuttons. You can use these to trigger the AT USER-COMMAND event. The CASE statement contains a different reaction for each pushbutton.

For each interactive event, the system decreases the SY-LSIND system field by one, thus canceling out the automatic increase. All detail lists now have the same level as the basic list and thus overwrite it. While the detail list is being created, SY-LSIND still has the value 1.