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 using Function module and OO

Former Member
0 Likes
424

Hi all,

Please send me documents for ALV using function modules and Object oriented approach..

Which is best and why.

Thanks in advance,

Amruta

2 REPLIES 2
Read only

Former Member
0 Likes
393

Hi Amruta,

Refer to the link below:

http://sapdev.co.uk/reporting/alvhome.htm

Hope this helps.

Reward if helpful.

Regards,

Sipra

Read only

Former Member
0 Likes
393

HI.

Refer following codes.

Simple AVL

type-pools : slis.

data : b_display type slis_t_fieldcat_alv,

w_display type slis_fieldcat_alv.

data : begin of itab_display occurs 0,

kunnr type kna1-kunnr,

name1 type kna1-name1,

end of itab_display.

data : gd_repid like sy-repid.

itab_display-name1 = 'RAVI'.

itab_display-kunnr = '1000673242'.

append itab_display.

clear itab_display.

itab_display-name1 = 'JAY'.

itab_display-kunnr = '1000004555'.

append itab_display.

clear itab_display.

w_display-col_pos = 0.

w_display-fieldname = 'NAME1'.

w_display-seltext_m = 'NAME'.

append w_display to b_display.

clear w_display.

w_display-col_pos = 1.

w_display-fieldname = 'KUNNR'.

w_display-seltext_m = 'CUS.NO'.

append w_display to b_display.

clear w_display.

gd_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = gd_repid

IT_FIELDCAT = b_display

I_SAVE = 'X'

TABLES

t_outtab = itab_display.

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

Example code for OOPs ALV

REPORT YMS_ALV_OOPS .

type-pools : slis.

include <icon>.

TABLES : EKKO,EKPO,MAKT.

DATA : BEGIN OF IEKKO OCCURS 0,

EBELN LIKE EKKO-EBELN,

AEDAT LIKE EKKO-AEDAT,

BEDAT LIKE EKKO-BEDAT,

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,

END OF IEKPO.

DATA : BEGIN OF IMAKT OCCURS 0,

MATNR LIKE MAKT-MATNR,

MAKTX LIKE MAKT-MAKTX,

END OF IMAKT.

DATA : BEGIN OF IFINAL OCCURS 0,

BOX,

EBELN LIKE EKKO-EBELN,

EBELP LIKE EKPO-EBELP,

AEDAT LIKE EKKO-AEDAT,

BEDAT LIKE EKKO-BEDAT,

MATNR LIKE EKPO-MATNR,

MENGE LIKE EKPO-MENGE,

MAKTX LIKE MAKT-MAKTX,

END OF IFINAL.

*DATA : IFINALFUL LIKE STANDARD TABLE OF

DATA : OKCODE LIKE SY-UCOMM,

CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

GRID TYPE REF TO CL_GUI_ALV_GRID,

text TYPE sdydo_text_element,

o_dd_doc TYPE REF TO cl_dd_document,

o_top type ref to cl_gui_container,

split1 type ref to cl_gui_easy_splitter_container.

data : split type ref to cl_gui_splitter_container,

contaner1 type ref to cl_gui_container,

contaner2 type ref to cl_gui_container,

contaner3 type ref to cl_gui_container,

contaner4 type ref to cl_gui_container,

grid2 type ref to cl_gui_alv_grid.

CLASS lcl_event_receiver DEFINITION DEFERRED.

DATA: o_event_receiver TYPE REF TO lcl_event_receiver.

DATA : IFIELDCAT TYPE LVC_T_FCAT,

WFIELDCAT TYPE LVC_S_FCAT,

ILAYOUT TYPE LVC_S_LAYO,

ISORT TYPE LVC_T_SORT,

WSORT TYPE LVC_S_SORT.

data : ilist type slis_t_listheader,

wlist type slis_listheader.

SELECT-OPTIONS : S_AEDAT FOR EKKO-AEDAT.

CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS:

handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid

IMPORTING e_dyndoc_id,

handle_user_command for event user_command of cl_gui_alv_grid importing e_ucomm,

handle_toolbar for event toolbar of cl_gui_alv_grid importing e_object e_interactive.

ENDCLASS.

CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_top_of_page.

text = 'Test Top of page'.

CALL METHOD e_dyndoc_id->add_text

EXPORTING text = text

sap_fontsize = 'LARGE'

sap_color = 'LIST_KEY_INV'

*sap_fontstyle = 'LIST_HEADING'

*sap_style = 'HEADING'

.

CALL METHOD E_DYNDOC_ID->UNDERLINE

.

CALL METHOD E_DYNDOC_ID->NEW_LINE

  • EXPORTING

  • REPEAT =

.

clear text.

text = 'Test Top of page 2nd line & space'.

CALL METHOD e_dyndoc_id->add_text

EXPORTING text = text

sap_fontsize = 'LARGE'

sap_color = 'LIST_KEY_INV'.

CALL METHOD e_dyndoc_id->display_document

EXPORTING parent = CONTANER3.

ENDMETHOD. "handle_top_of_page

method handle_user_command.

case e_ucomm.

when 'DETAIL'.

DATA : LT_ROWS TYPE LVC_T_ROW.

CALL METHOD GRID->GET_SELECTED_ROWS

IMPORTING

ET_INDEX_ROWS = LT_ROWS

  • ET_ROW_NO =

.

IF SY-SUBRC NE 0.

CALL FUNCTION 'POPUP_TO_INFORM'

EXPORTING

TITEL = 'Message'

TXT1 = 'Please choose a row'

TXT2 = ''

  • TXT3 = ' '

  • TXT4 = ' '

.

ENDIF.

endcase.

endmethod.

method handle_toolbar.

data : wtoolbar type stb_button.

clear wtoolbar.

wtoolbar-butn_type = 3.

append wtoolbar to e_object->mt_toolbar.

clear wtoolbar.

wtoolbar-function = 'DETAIL'.

wtoolbar-ICON = ICON_OVERVIEW.

wtoolbar-QUICKINFO = 'Detail list'.

wtoolbar-TEXT = 'Detail list'.

append wtoolbar to e_object->mt_toolbar.

endmethod.

ENDCLASS. "lcl_application_f4 IMPLEMENTATION

START-OF-SELECTION.

PERFORM FILL_EKKO.

PERFORM FILL_EKPO.

PERFORM FILL_MAKT.

PERFORM BUILD_FINALTAB.

PERFORM BUILD_FIELDCAT.

PERFORM BUILD_SORT.

PERFORM BUILD_LAYOUT.

CALL SCREEN 100.

&----


*& Form fill_ekko

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_EKKO .

SELECT EBELN AEDAT BEDAT INTO TABLE IEKKO FROM EKKO WHERE AEDAT IN S_AEDAT.

ENDFORM. " fill_ekko

&----


*& Form fill_ekpo

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_EKPO .

IF NOT IEKKO[] IS INITIAL.

SELECT EBELN EBELP MATNR MENGE INTO TABLE IEKPO FROM EKPO FOR ALL ENTRIES IN IEKKO

WHERE EBELN = IEKKO-EBELN.

ENDIF.

ENDFORM. " fill_ekpo

&----


*& Form fill_makt

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_MAKT .

IF NOT IEKPO[] IS INITIAL.

SELECT MATNR MAKTX FROM MAKT INTO TABLE IMAKT FOR ALL ENTRIES IN IEKPO WHERE

MATNR = IEKPO-MATNR.

ENDIF.

ENDFORM. " fill_makt

&----


*& Form BUILD_FINALTAB

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_FINALTAB .

LOOP AT IEKPO.

IFINAL-MATNR = IEKPO-MATNR.

IFINAL-MENGE = IEKPO-MENGE.

IFINAL-EBELP = IEKPO-EBELP.

IFINAL-EBELN = IEKPO-EBELN.

READ TABLE IEKKO WITH KEY EBELN = IEKPO-EBELN.

IF SY-SUBRC = 0.

IFINAL-AEDAT = IEKKO-AEDAT.

IFINAL-BEDAT = IEKKO-BEDAT.

ENDIF.

READ TABLE IMAKT WITH KEY MATNR = IEKPO-MATNR.

IF SY-SUBRC = 0.

IFINAL-MAKTX = IMAKT-MAKTX.

ENDIF.

APPEND IFINAL.

CLEAR : IFINAL,IEKKO,IMAKT,IEKPO.

ENDLOOP.

ENDFORM. " BUILD_FINALTAB

&----


*& Form BUILD_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_FIELDCAT .

WFIELDCAT-FIELDNAME = 'EBELN'.

WFIELDCAT-COL_POS = 1.

WFIELDCAT-OUTPUTLEN = 10.

WFIELDCAT-COLTEXT = 'Document No'.

APPEND WFIELDCAT TO IFIELDCAT.

CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'EBELP'.

WFIELDCAT-COL_POS = 2.

WFIELDCAT-OUTPUTLEN = 5.

WFIELDCAT-COLTEXT = 'Item No'.

APPEND WFIELDCAT TO IFIELDCAT.

CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'AEDAT'.

WFIELDCAT-COL_POS = 3.

WFIELDCAT-OUTPUTLEN = 8.

WFIELDCAT-COLTEXT = 'Creatn dat'.

APPEND WFIELDCAT TO IFIELDCAT.

CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'BEDAT'.

WFIELDCAT-COL_POS = 4.

WFIELDCAT-OUTPUTLEN = 8.

WFIELDCAT-COLTEXT = 'Delv dat'.

APPEND WFIELDCAT TO IFIELDCAT.

CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MATNR'.

WFIELDCAT-COL_POS = 5.

WFIELDCAT-OUTPUTLEN = 18.

WFIELDCAT-COLTEXT = 'Material no'.

APPEND WFIELDCAT TO IFIELDCAT.

CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MAKTX'.

WFIELDCAT-COL_POS = 6.

WFIELDCAT-OUTPUTLEN = 32.

WFIELDCAT-COLTEXT = 'Material desc.'.

APPEND WFIELDCAT TO IFIELDCAT.

CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MENGE'.

WFIELDCAT-COL_POS = 7.

WFIELDCAT-OUTPUTLEN = 16.

wfieldcat-just = 'L'.

WFIELDCAT-COLTEXT = 'Quantity'.

WFIELDCAT-DO_SUM = 'X'.

APPEND WFIELDCAT TO IFIELDCAT.

CLEAR WFIELDCAT.

ENDFORM. " BUILD_FIELDCAT

&----


*& Form BUILD_SORT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_SORT .

WSORT-FIELDNAME = 'EBELN'.

WSORT-SPOS = 1.

WSORT-UP = 'X'.

WSORT-GROUP = 'UL'.

WSORT-SUBTOT = 'X'.

APPEND WSORT TO ISORT.

ENDFORM. " BUILD_SORT

&----


*& Module PBO OUTPUT

&----


  • text

----


MODULE PBO OUTPUT.

SET PF-STATUS 'ZSPD'.

CREATE OBJECT CONTAINER

EXPORTING

  • PARENT =

CONTAINER_NAME = 'CONTAINER'

  • STYLE =

  • LIFETIME = lifetime_default

  • REPID =

  • DYNNR =

  • NO_AUTODEF_PROGID_DYNNR =

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

CREATE_ERROR = 3

LIFETIME_ERROR = 4

LIFETIME_DYNPRO_DYNPRO_LINK = 5

others = 6

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CREATE OBJECT SPLIT

EXPORTING

  • LINK_DYNNR =

  • LINK_REPID =

  • SHELLSTYLE =

  • LEFT =

  • TOP = 3

  • WIDTH = 5

  • HEIGHT = 3

  • METRIC = cntl_metric_dynpro

  • ALIGN = 15

PARENT = container

ROWS = 1

COLUMNS = 1

  • NO_AUTODEF_PROGID_DYNNR =

  • NAME =

EXCEPTIONS

CNTL_ERROR = 1

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

CALL METHOD split->set_border

EXPORTING

border = space.

CALL METHOD split->get_container

EXPORTING

row = 1

column = 1

RECEIVING

container = contaner1.

CALL METHOD split->set_row_height

EXPORTING

id = 1

height = 1

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

OTHERS = 3 .

CREATE OBJECT split1

EXPORTING

parent = contaner1

SASH_POSITION = 15

with_border = 1

EXCEPTIONS

cntl_error = 1

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

contaner3 = split1->top_left_container.

contaner4 = split1->bottom_right_container.

*contaner3 = container->SCREEN0. "DEFAULT_SCREEN." PARENT.

CREATE OBJECT GRID

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

I_PARENT = CONTANER4

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

EXCEPTIONS

ERROR_CNTL_CREATE = 1

ERROR_CNTL_INIT = 2

ERROR_CNTL_LINK = 3

ERROR_DP_CREATE = 4

others = 5

.

IF SY-SUBRC 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CREATE OBJECT o_event_receiver.

SET HANDLER o_event_receiver->handle_top_of_page FOR GRID.

set handler o_event_receiver->handle_user_command for grid.

set handler o_event_receiver->handle_toolbar for grid.

CREATE OBJECT o_dd_doc EXPORTING style = 'ALV_GRID'

no_margins = 'X'.

CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

  • IS_VARIANT =

  • I_SAVE =

  • I_DEFAULT = 'X'

IS_LAYOUT = ILAYOUT

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

CHANGING

IT_OUTTAB = IFINAL[]

IT_FIELDCATALOG = IFIELDCAT

  • IT_SORT = ISORT

  • IT_FILTER =

EXCEPTIONS

INVALID_PARAMETER_COMBINATION = 1

PROGRAM_ERROR = 2

TOO_MANY_LINES = 3

others = 4

.

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 METHOD GRID->SET_TOOLBAR_INTERACTIVE.

CALL METHOD GRID->list_processing_events

EXPORTING

i_event_name = 'TOP_OF_PAGE'

i_dyndoc_id = o_dd_doc.

ENDMODULE. " PBO OUTPUT

&----


*& Module PAI INPUT

&----


  • text

----


MODULE PAI INPUT.

CASE OKCODE.

WHEN 'BACK' OR 'EXIT'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " PAI INPUT

&----


*& Form BUILD_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_LAYOUT .

ILAYOUT-ZEBRA = 'X'.

ILAYOUT-SEL_MODE = 'A'.

ENDFORM. " BUILD_LAYOUT

reward all helpfull answers.

Regards.

Jay