Skip to Content
0
Former Member
Jun 03, 2008 at 10:35 AM

alv to oo

54 Views

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