can anybody convert the following alv program using function modules to object oriented....
Points wil be rewarded for the same..
&----
*& Report ZAVS_ALVS
*&
&----
*&
*&
&----
REPORT ZAVS_ALVS.
TABLES : ekko, ekpo.
TYPES : BEGIN OF tp_itab1,
ebeln TYPE ekko-ebeln,
waers TYPE ekko-waers,
bsart TYPE ekko-bsart,
ekorg TYPE ekko-ekorg,
ebelp TYPE ekpo-ebelp,
txz01 TYPE ekpo-txz01,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
netwr TYPE ekpo-netwr,
END OF tp_itab1.
DATA : t_itab1 TYPE STANDARD TABLE OF ekko,
wa_itab1 TYPE ekko.
DATA : t_tab2 TYPE STANDARD TABLE OF ekpo,
wa_tab2 TYPE ekpo.
DATA: ws_name TYPE thead-tdname,
ws_repid TYPE sy-repid VALUE 'ZAVS_ALVS'.
DATA : repid TYPE sy-repid.
*&---------------------------------------------------------------------
**& ALV DECLARATION *
*&----
TYPE-POOLS : slis.
DATA: lt_fieldcat1 TYPE slis_t_fieldcat_alv,
lf_fieldcat1 TYPE slis_fieldcat_alv.
DATA: lt_fieldcat2 TYPE slis_t_fieldcat_alv,
lf_fieldcat2 TYPE slis_fieldcat_alv.
*
*DATA: lh_index LIKE lf_fieldcat2-col_pos.
DATA: l_layout TYPE slis_layout_alv.
DATA : l_sort TYPE slis_t_sortinfo_alv,
w_sort TYPE slis_sortinfo_alv.
DATA: lt_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
*&----
**& SELECTION-SCREEN *
*&----
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
SELECTION-SCREEN END OF BLOCK a1.
*&----
**& START-OF-SELECTION *
*&----
START-OF-SELECTION.
PERFORM fetch_data.
PERFORM build_fieldcatalog_EKKO.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
PERFORM build_layout.
PERFORM sort_layout.
END-OF-SELECTION.
PERFORM display_grid.
*&----
**& Form fetch_data *
*&----
FORM fetch_data.
*SELECT
*ekko~ebeln
*ekko~waers
*ekko~bsart
*ekko~ekorg
*
*ekpo~ebelp
*ekpo~txz01
*ekpo~matnr
*ekpo~werks
*ekpo~menge
*ekpo~meins
*ekpo~netpr
*ekpo~netwr
*INTO TABLE t_itab1 FROM
*ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln
*WHERE ekko~ebeln IN s_ebeln.
select ebeln bukrs lifnr waers
into table t_itab1
from ekko
where ebeln in s_ebeln.
ENDFORM. " fetch_data
*&----
**& Form build_fieldcatalog *
*&----
FORM build_fieldcatalog_EKKO .
*PURCHASING DOCUMENT NUMBER
CLEAR lf_fieldcat1.
lf_fieldcat1-fieldname = 'EBELN'.
lf_fieldcat1-ref_tabname = 'EKKO'.
lf_fieldcat1-ref_fieldname = 'EBELN'.
lf_fieldcat1-key = 'X'.
lf_fieldcat1-do_sum = 'X'.
lf_fieldcat1-fix_column = 'X'.
APPEND lf_fieldcat1 TO lt_fieldcat1.
CLEAR lf_fieldcat1.
lf_fieldcat1-fieldname = 'BUKRS'.
lf_fieldcat1-ref_tabname = 'EKKO'.
lf_fieldcat1-ref_fieldname = 'BUKRS'.
lf_fieldcat1-key = 'X'.
lf_fieldcat1-do_sum = 'X'.
lf_fieldcat1-fix_column = 'X'.
APPEND lf_fieldcat1 TO lt_FIELDCAT1.
CLEAR lf_fieldcat1.
lf_fieldcat1-fieldname = 'LIFNR'.
lf_fieldcat1-ref_tabname = 'EKKO'.
lf_fieldcat1-ref_fieldname = 'LIFNR'.
lf_fieldcat1-key = 'X'.
lf_fieldcat1-do_sum = 'X'.
lf_fieldcat1-fix_column = 'X'.
APPEND lf_fieldcat1 TO lT_FIELDCAT1.
CLEAR lf_fieldcat1.
*CURRENCY
CLEAR lf_fieldcat1.
lf_fieldcat1-fieldname = 'WAERS'.
lf_fieldcat1-ref_tabname = 'EKKO'.
lf_fieldcat1-ref_fieldname = 'WAERS'.
APPEND lf_fieldcat1 TO lt_fieldcat1.
ENDFORM. " build_fieldcatalog
FORM display_grid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = ws_repid
I_CALLBACK_PF_STATUS_SET = ' '
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_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = l_layout
IT_FIELDCAT = lt_fieldcat1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = l_sort
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = t_itab1
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_grid
FORM build_layout .
l_layout-colwidth_optimize = 'X'.
l_layout-zebra = 'X'.
l_layout-box_fieldname = 'CHK'.
l_layout-box_tabname = 'T_ITAB1' .
ENDFORM. " build_layout
*&----
**& Form sort_layout *
*&----
FORM sort_layout .
CLEAR w_sort.
w_sort-fieldname = 'EBELN'.
w_sort-tabname = 'T_ITAB1'.
w_sort-spos = 1.
w_sort-up = 'X'.
w_sort-subtot = 'X'.
APPEND w_sort TO l_sort.
ENDFORM. " sort_layout
*&----
**& Form PF_STATUS
*&----
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD1' EXCLUDING rt_extab.
ENDFORM. " PF_STATUS
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE t_itab1 INTO WA_itab1 INDEX RS_SELFIELD-TABINDEX.
PERFORM DATA_fetch_EKPO.
PERFORM BUILD_FIELDCATLOG_EKPO.
*PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
&----
*& 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 = lt_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 LT_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY LT_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-name.
ENDIF.
READ TABLE LT_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY LT_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
endform. " POPULATE_EVENT
&----
*& Form BUILD_FIELDCATLOG_EKPO
&----
text
----
--> p1 text
<-- p2 text
----
form BUILD_FIELDCATLOG_EKPO .
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'EBELN'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'EBELP'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
*ITEM NUMBER OF PURCHASING DOCUMENT
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'EBELP'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'EBELP'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
*SHORT TEXT
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'TXZ01'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'TXZ01'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
*MATERIAL NUMBER
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'MATNR'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'MATNR'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
*PLANT
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'WERKS'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'WERKS'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
*PURCHASE ORDER QUANTITY
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'MENGE'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'MENGE'.
lf_fieldcat2-do_sum = 'X'.
lf_fieldcat2-qfieldname = 'MEINS'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
*UNIT
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'MEINS'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'MEINS'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'NETPR'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'NETPR'.
lf_fieldcat2-cfieldname = 'WAERS'.
lf_fieldcat2-do_sum = 'X'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
*NET ORDER VALUE IN PO CURRENCY
CLEAR lf_fieldcat2.
lf_fieldcat2-fieldname = 'NETWR'.
lf_fieldcat2-ref_tabname = 'EKPO'.
lf_fieldcat2-ref_fieldname = 'NETWR'.
lf_fieldcat2-cfieldname = 'WAERS'.
lf_fieldcat2-do_sum = 'X'.
APPEND lf_fieldcat2 TO lt_fieldcat2.
endform. " BUILD_FIELDCATLOG_EKPO
&----
*& Form DATA_fetch_EKPO
&----
text
----
--> p1 text
<-- p2 text
----
form DATA_fetch_EKPO .
select ebeln ebelp TXZ01 netwr netpr meins menge werks matnr
into table t_tab2
from ekpo
where ebeln in s_ebeln.
endform. " DATA_fetch_EKPO
&----
*& Form DISPLAY_ALV_EKPO
&----
text
----
--> p1 text
<-- p2 text
----
form DISPLAY_ALV_EKPO .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = ws_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 = lt_fieldcat2
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 = t_tab2
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_EKPO