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

Former Member
0 Likes
1,425

what is interactive ALV can anybody send a sample code regarding this

12 REPLIES 12
Read only

Former Member
0 Likes
1,388

hi,

Plz refer to the link.

http://www.sap-img.com/abap/an-interactive-alv-report.htm

Regards

Sumit Agarwal

Read only

Former Member
0 Likes
1,388

Hi,

INTERACTIVE ALV is the ALV verssion of list. Initialy the basic ALV is shown. ON double click to any of its row, you will get the Secondary ALV.

THE code for them are generaly bulky, so i am giving only one here. If you want to study more then Go to

saptutorial.com -> Tutorials--> ALV.

you will lot of them.

Check the code

REPORT ZALV_OOINTERACTIVE.*Class definition for handling double click

CLASS event_class DEFINITION DEFERRED.*Internal table and work area declarations for dd02l and dd03l

DATA : it_dd02l TYPE TABLE OF dd02l,

wa_dd02l TYPE dd02l,

it_dd03l TYPE TABLE OF dd03l,

wa_dd03l TYPE dd03l.*data declarations for ALV Main list

DATA : ty_lay1 TYPE lvc_s_layo,

it_fieldcat TYPE lvc_t_fcat ,

ty_fieldcat TYPE lvc_s_fcat ,

c_alv1 TYPE REF TO cl_gui_alv_grid,

c_cont1 TYPE REF TO cl_gui_custom_container,

event_receiver TYPE REF TO event_class.*data declarations for ALV Interactive listDATA : ty_lay2 TYPE lvc_s_layo,

it_fcat TYPE lvc_t_fcat ,

ty_fcat TYPE lvc_s_fcat ,

c_alv2 TYPE REF TO cl_gui_alv_grid,

c_cont2 TYPE REF TO cl_gui_custom_container.

**Select options for multiple values and NOT ranges

SELECT-OPTIONS : s_table FOR wa_dd02l-tabname NO INTERVALS.

  • Initialization event

INITIALIZATION.*Start of selection event

START-OF-SELECTION.*fetch data into table and field characteristics

PERFORM fetch_data.*ALV display for output

PERFORM alv_output.&----


*& Form FETCH_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fetch_data .*Select the table details

SELECT * FROM dd02l INTO CORRESPONDING FIELDS OF TABLE it_dd02l

WHERE tabname IN s_table

AND tabclass = 'TRANSP'.

ENDFORM. " FETCH_DATA----


* CLASS lcl_event_receiver DEFINITION----
CLASS event_class DEFINITION.*Handling double click

PUBLIC SECTION. METHODS:

handle_double_click

FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row .ENDCLASS. "lcl_event_receiver DEFINITION

----


* CLASS lcl_event_receiver IMPLEMENTATION

----


CLASS event_class IMPLEMENTATION. METHOD handle_double_click. DATA : ls_dd02l LIKE LINE OF it_dd02l.*Reading the selected data into a variable

READ TABLE it_dd02l INDEX e_row-index INTO ls_dd02l.* *Select the field details of the selected table

SELECT * FROM dd03l INTO CORRESPONDING FIELDS OF TABLE it_dd03l

WHERE tabname EQ ls_dd02l-tabname.

*calling the ALV containing the field values

CALL SCREEN 101. ENDMETHOD. "handle_double_clickENDCLASS. "lcl_event_receiver IMPLEMENTATION&----


& Module pbo_100 OUTPUT&----


*MODULE pbo_100 OUTPUT.

*set pf-status 'XXX'.

*set titlebar 'XXX'.

ENDMODULE. " PBO_100 OUTPUT

&----


*& Module alv_100 OUTPUT

&----


MODULE alv_100 OUTPUT.*Check if there is no custom container in screen 100

IF c_cont1 IS INITIAL.*Creating object of container

CREATE OBJECT c_cont1

EXPORTING

container_name = 'CCONT'.

IF sy-subrc <> 0.

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

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

ENDIF.*Creating object of alv

CREATE OBJECT c_alv1

EXPORTING

i_parent = c_cont1.

IF sy-subrc <> 0.

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

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

ENDIF.*alv layout

PERFORM alv_100_layout.*alv field catalogue

PERFORM alv_100_fieldcat.*Displaying the ALV grid

CALL METHOD c_alv1->set_table_for_first_display

EXPORTING

is_layout = ty_lay1

CHANGING

it_outtab = it_dd02l[]

it_fieldcatalog = it_fieldcat. 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 of the event class and setting handler for double click

CREATE OBJECT event_receiver.

SET HANDLER event_receiver->handle_double_click FOR c_alv1. ENDIF.ENDMODULE. " ALV_100 OUTPUT&----


& Module pai_100 INPUT&----


*MODULE pai_100 INPUT.

ENDMODULE. " pai_100 INPUT----


* MODULE PBO_101 OUTPUT----
MODULE pbo_101 OUTPUT.

  • SET PF-STATUS 'XXX'.

  • SET TITLEBAR 'XXX'.

ENDMODULE. " PBO_101 INPUT----


* MODULE ALV_101 OUTPUT----

MODULE alv_101 OUTPUT.

*Check if the Custom container exists.

IF c_cont2 IS INITIAL.*Creating container object

CREATE OBJECT c_cont2

EXPORTING

container_name = 'CDCONT'.

IF sy-subrc <> 0.

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

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

ENDIF.*creating ALV grid for interactive list

CREATE OBJECT c_alv2

EXPORTING

i_parent = c_cont2.

IF sy-subrc <> 0.

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

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

ENDIF.*ALV layout

PERFORM alv_101_layout.*ALV fieldcatalogue

PERFORM alv_101_fieldcat.*Sorting the output by field position

SORT it_dd03l BY position.*ALV for display field details

CALL METHOD c_alv2->set_table_for_first_display

EXPORTING

is_layout = ty_lay2

CHANGING

it_outtab = it_dd03l[]

it_fieldcatalog = it_fcat.

IF sy-subrc <> 0.

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

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

ENDIF. ENDIF.ENDMODULE. " ALV_101 OUTPUT

&----


& Module PAI_101 INPUT&----


*MODULE pai_101 INPUT.ENDMODULE. " PAI_101 INPUT

&----


*& Form ALV_OUTPUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_output .

CALL SCREEN 100.ENDFORM. " ALV_OUTPUT

&----


*& Form ALV_100_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_100_layout . ty_lay1-grid_title = 'TABLES'.

ty_lay1-zebra = 'X'.

ty_lay1-no_toolbar = 'X'.ENDFORM. " ALV_100_LAYOUT

&----


*& Form ALV_100_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_100_fieldcat .

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 1.

ty_fieldcat-fieldname = 'TABNAME'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'TableName'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 2.

ty_fieldcat-fieldname = 'TABCLASS'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'CATEGORY'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 3.

ty_fieldcat-fieldname = 'AS4USER'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'CREATED'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 4.

ty_fieldcat-fieldname = 'AS4DATE'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'DATE'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.

ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 5.

ty_fieldcat-fieldname = 'AS4TIME'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'TIME'.

ty_fieldcat-outputlen = 10.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat. ty_fieldcat-row_pos = 1.

ty_fieldcat-col_pos = 6.

ty_fieldcat-fieldname = 'CONTFLAG'.

ty_fieldcat-tabname = 'GT_DD02L'.

ty_fieldcat-coltext = 'Delivery Class'.

ty_fieldcat-outputlen = 15.

APPEND ty_fieldcat TO it_fieldcat.

CLEAR ty_fieldcat.ENDFORM. " ALV_100_FIELDCAT

&----


*& Form ALV_101_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_101_layout . ty_lay2-grid_title = 'FIELDS'.

ty_lay2-zebra = 'X'.

ty_lay2-no_toolbar = 'X'.ENDFORM. " ALV_101_LAYOUT

&----


*& Form ALV_101_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM alv_101_fieldcat . REFRESH it_fieldcat.

REFRESH it_fcat.

CLEAR ty_fcat. ty_fcat-row_pos = 1.

ty_fcat-col_pos = 1.

ty_fcat-fieldname = 'FIELDNAME'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'Fieldname'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat.

ty_fcat-row_pos = 1.

ty_fcat-col_pos = 2.

ty_fcat-fieldname = 'CHECKTABLE'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'CHECKTABLE'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat. ty_fcat-row_pos = 1.

ty_fcat-col_pos = 3.

ty_fcat-fieldname = 'KEYFLAG'.

ty_fcat-tabname = 'GT_DD03L'.

ty_fcat-coltext = 'Key Flag'.

ty_fcat-outputlen = 10.

APPEND ty_fcat TO it_fcat.ENDFORM. " ALV_101_FIELDCAT

Regards,

anirban

Read only

former_member125931
Active Participant
0 Likes
1,388

Try sample program for Interactive ALV.

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.

Read only

Former Member
0 Likes
1,388

Hi Gopal,

Check this link ..

[Interactive program In ALV|http://saptechnical.com/Tutorials/ALV/Interactive/demo.htm]

If Found Help Full Do Reward.

Regards.

Eshwar.

Read only

Former Member
0 Likes
1,388

Hi buddy,

here is a wonderful code for ineractive ALV.. you will get a wide idea about this.......

REPORT yh_alvtreedemo1.TYPE-POOLS : fibs,stree.

TYPE-POOLS:slis.

DATA : t_node TYPE snodetext.DATA : it_node LIKE TABLE OF t_node,

wa_node LIKE t_node.DATA: t_fieldcat TYPE slis_t_fieldcat_alv,

fs_fieldcat TYPE slis_fieldcat_alv.DATA:w_repid LIKE sy-repid.*Internal Table declarations

DATA: BEGIN OF fs_scarr,

carrid LIKE scarr-carrid,

END OF fs_scarr.DATA:BEGIN OF fs_spfli,

carrid LIKE spfli-carrid,

connid LIKE spfli-connid,

END OF fs_spfli.DATA:BEGIN OF fs_sflight,

carrid LIKE sflight-carrid,

connid LIKE sflight-connid,

fldate LIKE sflight-fldate,

END OF fs_sflight.DATA:BEGIN OF fs_sbook,

carrid LIKE sbook-carrid,

connid LIKE sbook-connid,

fldate LIKE sbook-fldate,

bookid LIKE sbook-bookid,

END OF fs_sbook.DATA:t_scarr LIKE TABLE OF fs_scarr,

t_spfli LIKE TABLE OF fs_spfli,

t_sflight LIKE TABLE OF fs_sflight,

t_sbook LIKE TABLE OF fs_sbook.START-OF-SELECTION. PERFORM get_data.

PERFORM build_tree.

PERFORM display_tree.&----


*& Form get_data

&----


FORM get_data . SELECT carrid

FROM scarr

INTO TABLE t_scarr. SELECT carrid

connid

FROM spfli

INTO TABLE t_spfli

FOR ALL ENTRIES IN t_scarr

WHERE carrid EQ t_scarr-carrid.ENDFORM. " get_data

&----


*& Form build_tree

&----


FORM build_tree .

CLEAR: it_node,

wa_node. SORT: t_scarr BY carrid,

t_spfli BY carrid connid,

t_sflight BY carrid connid fldate,

t_sbook BY carrid connid fldate bookid. wa_node-type = 'T'.

wa_node-name = 'Flight Details'.

wa_node-tlevel = '01'.

wa_node-nlength = '15'.

wa_node-color = '4'.

wa_node-text = 'Flight'.

wa_node-tlength ='20'.

wa_node-tcolor = 3.

APPEND wa_node TO it_node.

CLEAR wa_node. LOOP AT t_scarr INTO fs_scarr. wa_node-type = 'P'.

wa_node-name = 'CARRID'.

wa_node-tlevel = '02'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = fs_scarr-carrid.

wa_node-tlength ='20'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node. LOOP AT t_spfli INTO fs_spfli WHERE carrid EQ fs_scarr-carrid. wa_node-type = 'P'.

wa_node-name = 'CONNID'.

wa_node-tlevel = '03'.

wa_node-nlength = '8'.

wa_node-color = '1'.

wa_node-text = fs_spfli-connid.

wa_node-tlength ='20'.

wa_node-tcolor = 4.

APPEND wa_node TO it_node.

CLEAR wa_node. ENDLOOP.

ENDLOOP.

ENDFORM. " build_tree

&----


*& Form display_tree

&----


FORM display_tree .

CALL FUNCTION 'RS_TREE_CONSTRUCT'

TABLES

nodetab = it_node. w_repid = sy-repid. CALL FUNCTION 'RS_TREE_LIST_DISPLAY'

EXPORTING

callback_program = w_repid

callback_user_command = 'USER_COMMAND'

callback_gui_status = 'SET_PF'.

ENDFORM. " display_tree

&----


*& Form pick

&----


  • -->COMMAND text

  • -->NODE text

----


FORM user_command TABLES pt_nodes STRUCTURE seucomm

USING pv_command TYPE c

CHANGING pv_exit TYPE c

pv_list_refresh TYPE c. pv_list_refresh = 'X'. IF pt_nodes-tlevel = '03'. CLEAR t_fieldcat[]. SELECT carrid

connid

fldate

FROM sflight

INTO TABLE t_sflight

WHERE connid EQ pt_nodes-text. fs_fieldcat-col_pos = 1.

fs_fieldcat-fieldname = 'CARRID'.

fs_fieldcat-seltext_m = 'Airlinecarrier'.

fs_fieldcat-key = 'X'.

fs_fieldcat-hotspot = 'X'.

APPEND fs_fieldcat TO t_fieldcat.

CLEAR fs_fieldcat. fs_fieldcat-col_pos = 2.

fs_fieldcat-fieldname = 'CONNID'.

fs_fieldcat-seltext_m = 'Connection No'.

fs_fieldcat-key = 'X'.

fs_fieldcat-hotspot = 'X'.

APPEND fs_fieldcat TO t_fieldcat.

CLEAR fs_fieldcat. fs_fieldcat-col_pos = 3.

fs_fieldcat-fieldname = 'FLDATE'.

fs_fieldcat-seltext_m = 'Flight Date'.

fs_fieldcat-key = 'X'.

fs_fieldcat-hotspot = 'X'.

APPEND fs_fieldcat TO t_fieldcat.

CLEAR fs_fieldcat. w_repid = sy-repid. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = w_repid

it_fieldcat = t_fieldcat[]

TABLES

t_outtab = t_sflight.

ENDIF.

ENDFORM. "pick&----


*& Form set_pf

&----


  • text

----


FORM set_pf.

SET PF-STATUS 'MYPF'.

ENDFORM. "set_pf

Read only

Former Member
0 Likes
1,388

hi try this ...it is intractive alv using funtion module ...

Interactive alv through funtions having commentary write option

&----


*& Report ZVRPSALV

*&

&----


*&

*&

&----


REPORT ZVRPSALV .

INCLUDE ZVRPSALV_TOP.

INCLUDE ZVRPSALV_MAIN.

INCLUDE ZVRPSALV_FORM.

&----


*& Include ZVRPSALV_TOP

&----


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

  • *TYPE-POOL DECLARATION

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

TYPE-POOLS : SLIS .

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

*TYPES DECLARATION

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

TYPES: BEGIN OF TYPE_ITAB, " TYPE FOR MAIN INTERNAL TABLE

VBELN TYPE VBAK-VBELN, " SALES DOC

AUDAT TYPE VBAK-AUDAT, " DOCUMENT DATE

VBTYP TYPE VBAK-VBTYP, " DOC CAT

AUART(4) TYPE C," TYPE VBAK-AUART, "SALES DOC

NETWR TYPE VBAK-NETWR, "NET VALUE

WAERK TYPE VBAK-WAERK, " DOC CURRENCY

VKORG TYPE VBAK-VKORG, "SALES ORG

VTWEG TYPE VBAK-VTWEG, "DISTRIBUTION CHANNEL

VKGRP TYPE VBAK-VKGRP, "SALES GROUP

KUNNR TYPE KNA1-KUNNR, "CUST NO

NAME1 TYPE KNA1-NAME1, "CUST NAME

POSNR TYPE VBAP-POSNR, " LINE ITEM NO.

MATNR TYPE VBAP-MATNR, " MATERIAL NO.

MATKL TYPE VBAP-MATKL, " MAT GROUP

ARKTX TYPE VBAP-ARKTX, " DISCRIPTION

PSTYV TYPE VBAP-PSTYV, " ITEM CAT

SPART TYPE VBAP-SPART, " DIVISION

GSBER TYPE VBAP-GSBER, " BUSINESS AREA

KWMENG TYPE VBAP-KWMENG, " ORDER QYT

END OF TYPE_ITAB.

TYPES: BEGIN OF TYPE_ITAB1, " TYPE FOR MAIN INTERNAL TABLE

POSNR TYPE VBAP-POSNR, " LINE ITEM NO.

MATNR TYPE VBAP-MATNR, " MATERIAL NO.

MATKL TYPE VBAP-MATKL, " MAT GROUP

ARKTX TYPE VBAP-ARKTX, " DISCRIPTION

PSTYV TYPE VBAP-PSTYV, " ITEM CAT

SPART TYPE VBAP-SPART, " DIVISION

GSBER TYPE VBAP-GSBER, " BUSINESS AREA

KWMENG TYPE VBAP-KWMENG, " ORDER QYT

END OF TYPE_ITAB1.

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

*DECLARATION OF INTERNAL TABLES

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

DATA: T_ITAB TYPE STANDARD TABLE OF TYPE_ITAB WITH HEADER LINE. " INTERNAL TABLE FOR COLLECTING WHOLE DATA

DATA: T_ITAB1 TYPE STANDARD TABLE OF TYPE_ITAB1 WITH HEADER LINE. " INTERNAL TABLE FOR COLLECTING WHOLE DATA FOR SECONDRY LIST

DATA: WA_FCAT TYPE SLIS_FIELDCAT_ALV. " FIELD CATALOG WORK AREA FOR FIRST GRID DISPLAY .

DATA: T_FCAT TYPE SLIS_T_FIELDCAT_ALV . " FIELD CATALOG FOR FIRST GRID DISPLAY .

DATA: WA_FCAT1 TYPE SLIS_FIELDCAT_ALV. " FIELD CATALOG WORK AREA FOR SECOND GRID DISPLAY .

DATA: T_FCAT1 TYPE SLIS_T_FIELDCAT_ALV . " FIELD CATALOG FOR SECOND GRID DISPLAY .

DATA: V_VBELN LIKE VBAK-VBELN. " VRAIBLE FOR SELECTION CRITERIA.

DATA: REPID LIKE SY-REPID . " VARIABLE FOR STORING PROGRAM NAME.

&----


*& Include ZVRPSALV_MAIN

&----


START-OF-SELECTION.

REPID = SY-REPID .

PERFORM ZVRPSALV_FIELDCAT USING : 'T_ITAB' 'VBELN' 'ORD NO' 10 ,

'T_ITAB' 'AUDAT' 'DOC DATE' 8 ,

'T_ITAB' 'VBTYP' 'DOC CAT' 7 ,

'T_ITAB' 'AUART' 'DOC TYP' 7 ,

'T_ITAB' 'NETWR' 'NET VAL' 18 ,

'T_ITAB' 'WAERK' 'DOC CUR' 5 ,

'T_ITAB' 'VKORG' 'SAL ORG' 7 ,

'T_ITAB' 'VTWEG' 'DIS CH' 5 ,

'T_ITAB' 'VKGRP' 'DIV' 2 ,

'T_ITAB' 'SPART' 'SAL GRP' 7 ,

'T_ITAB' 'KUNNR' 'SAL GRP' 10 ,

'T_ITAB' 'NAME1' 'NAME' 30 .

PERFORM ZVRPSALV_FIELDCAT1 USING : 'T_ITAB1' 'POSNR' 'ITEM' 6 ,

'T_ITAB1' 'MATNR' 'MATERIA ' 18,

'T_ITAB1' 'MATKL' 'MAT GROUP' 9,

'T_ITAB1' 'ARKTX' 'DESCRIPTION' 20 ,

'T_ITAB1' 'PSTYV' 'I_CAT ' 4,

'T_ITAB1' 'SPART' 'DIV' 4,

'T_ITAB1' 'GSBER' 'B_AREA' 6,

'T_ITAB1' 'KWMENG' 'ORD_QUNT' 23 .

PERFORM ZVRPSALV_GRIDDISPLAY1 .

&----


*& Include ZVRPSALV_FORM

&----


&----


*& Form ZVRPSALV_FIELDCAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ZVRPSALV_FIELDCAT USING TNAME TYPE C

FNAME TYPE slis_fieldname

SELTEXT TYPE dd03p-scrtext_l

OPLEN TYPE dd03p-outputlen .

WA_FCAT-TABNAME = TNAME .

WA_FCAT-FIELDNAME = FNAME .

WA_FCAT-SELTEXT_L = SELTEXT .

WA_FCAT-OUTPUTLEN = OPLEN .

APPEND WA_FCAT TO T_FCAT .

ENDFORM. " ZVRPSALV_FIELDCAT

&----


*& Form ZVRPSALV_FIELDCAT1

&----


  • text

----


  • -->P_0189 text

  • -->P_0190 text

  • -->P_0191 text

  • -->P_6 text

----


FORM ZVRPSALV_FIELDCAT1 USING TNAME TYPE C

FNAME TYPE slis_fieldname

SELTEXT TYPE dd03p-scrtext_l

OPLEN TYPE dd03p-outputlen .

WA_FCAT1-TABNAME = TNAME .

WA_FCAT1-FIELDNAME = FNAME .

WA_FCAT1-SELTEXT_L = SELTEXT .

WA_FCAT1-OUTPUTLEN = OPLEN .

APPEND WA_FCAT1 TO T_FCAT1 .

ENDFORM. " ZVRPSALV_FIELDCAT1

&----


*& Form ZVRPSALV_GRIDDISPLAY1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ZVRPSALV_GRIDDISPLAY1 .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'DISPLAY_DOCUMENT '

I_CALLBACK_TOP_OF_PAGE =

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = 'BASIC LIST'

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = T_FCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_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 = T_ITAB

  • 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. " ZVRPSALV_GRIDDISPLAY1

*SUBROTINE FOR DISPLAYING THE SECONDRY ALV GRID.

FORM DISPLAY_DOCUMENT USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

IF RS_SELFIELD-FIELDNAME = 'VBELN'.

READ TABLE T_ITAB INDEX RS_SELFIELD-TABINDEX .

V_VBELN = T_ITAB-VBELN.

LOOP AT T_ITAB WHERE VBELN = V_VBELN.

Move: T_ITAB-POSNR to T_ITAB1-POSNR ,

T_ITAB-MATNR to T_ITAB1-MATNR ,

T_ITAB-MATKL to T_ITAB1-MATKL,

T_ITAB-ARKTX to T_ITAB1-ARKTX ,

T_ITAB-PSTYV to T_ITAB1-PSTYV ,

T_ITAB-SPART to T_ITAB1-SPART ,

T_ITAB-GSBER to T_ITAB1-GSBER ,

T_ITAB-KWMENG to T_ITAB1-KWMENG .

Append T_ITAB1.

ENDLOOP.

ENDIF.

  • FUNTION FOR GRID DISPLAY

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = ' Secondry List '

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = T_FCAT1

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.

REFRESH T_ITAB1.

ENDFORM.

Enjoy ....:-)

Regards.

Priyank Dixit

Read only

Former Member
0 Likes
1,388

Hi gopal,

&----


*& Report ZAlv

*&

&----


*&

*&

&----


REPORT ZAlv.

TYPE-POOLS : SLIS.

TABLES : KNA1,VBAK.

DATA : BEGIN OF ITAB OCCURS 0 ,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

LAND1 LIKE KNA1-LAND1,

ORT01 LIKE KNA1-ORT01,

END OF ITAB.

DATA : BEGIN OF JTAB OCCURS 0,

VBELN LIKE VBAK-VBELN ,

ERNAM LIKE VBAK-ERNAM ,

ERDAT LIKE VBAK-ERDAT,

KUNNR LIKE VBAK-KUNNR,

END OF JTAB .

DATA : BEGIN OF JTAB1 OCCURS 0,

VBELN LIKE VBAK-VBELN ,

ERNAM LIKE VBAK-ERNAM ,

ERDAT LIKE VBAK-ERDAT,

KUNNR LIKE VBAK-KUNNR,

END OF JTAB1.

DATA : V_REPID LIKE SY-REPID,

V_LAYOUT TYPE SLIS_LAYOUT_ALV,

V_EVENTS TYPE SLIS_T_EVENT,

V_PRINT TYPE SLIS_PRINT_ALV,

L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA : FIELD1 TYPE SLIS_FIELDCAT_ALV.

DATA : FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.

DATA : FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV.

SELECT-OPTIONS : CNO FOR KNA1-KUNNR.

START-OF-SELECTION.

V_REPID = SY-REPID .

SELECT KUNNR NAME1 LAND1 ORT01 FROM KNA1 INTO CORRESPONDING FIELDS OF

TABLE ITAB WHERE KUNNR IN CNO .

SELECT VBELN ERNAM ERDAT KUNNR FROM VBAK INTO CORRESPONDING FIELDS OF

TABLE JTAB FOR ALL ENTRIES IN ITAB WHERE KUNNR = ITAB-KUNNR.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'ITAB'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ' '

CHANGING

CT_FIELDCAT = FIELDCAT1

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_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.

  • LOOP AT FIELDCAT1 INTO l_fieldcat.

  • CASE l_fieldcat-fieldname.

  • WHEN 'KUNNR'.

  • l_fieldcaT-hotspot = 'X'.

  • MODIFY FIELDCAT1 FROM l_fieldcat.

  • ENDCASE.

  • ENDLOOP.

*

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • I_STRUCTURE_NAME =

  • IS_LAYOUT =

IT_FIELDCAT = FIELDCAT1

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_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

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = ITAB

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.

&----


*& Form user_command

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

IF RS_SELFIELD-FIELDNAME EQ 'KUNNR'.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.

REFRESH JTAB1.

  • CLEAR JTAB1.

LOOP AT JTAB WHERE KUNNR = ITAB-KUNNR.

APPEND JTAB TO JTAB1.

ENDLOOP.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'JTAB1'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = FIELDCAT2

  • EXCEPTIONS

  • INCONSISTENT_INTERFACE = 1

  • PROGRAM_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 FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = 'X'

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME =

  • IS_LAYOUT =

IT_FIELDCAT = FIELDCAT2

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = 'A'

  • IS_VARIANT =

  • IT_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

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = JTAB1

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

ENDCASE.

ENDIF.

ENDFORM. "user_command

Regards,

Sravanthi

Read only

Former Member
0 Likes
1,388

Hi gopal,

Interactive report means an output list which displays basic details & allow user to interact, so that a new list is populated based on user-selection. With interactive list, the user can actively control data retrieval and display during the session.

In interactive ALV .by using ALV we can display in Grid as well as list format.

Output format will be good . Sorting,Filtering facilities are provided by itself.We can have column headings also.

Following is the code that u can use for interactive ALV. Hope this will be helpful for u :-

REPORT NAME(starting with z) NO STANDARD PAGE HEADING

LINE-SIZE 650

MESSAGE-ID name(put name of ur choice ).

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.

reward if u find it useful.

regards

saurabh

Read only

Former Member
0 Likes
1,388

Hi frnd.

try this very few line of code

REPORT ZPRI_ALV8.

type-pools : slis .

data: v_repid like sy-repid .

data: itab like mara occurs 0 with header line .

data: itab1 like makt occurs 0 with header line .

break devuser .

select * from mara into table itab .

v_repid = sy-repid .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = v_repid

I_CALLBACK_USER_COMMAND = 'DISPLAY_DOCUMENT '

I_STRUCTURE_NAME = 'mara'

TABLES

t_outtab = itab

.

IF sy-subrc <> 0.

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

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

ENDIF.

**for Displaying Secondry list

FORM DISPLAY_DOCUMENT USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

IF RS_SELFIELD-FIELDNAME = 'MATNR'.

READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX .

select * from makt into table itab1 where matnr = itab-matnr .

IF SY-SUBRC = 0 .

ENDIF .

*

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_STRUCTURE_NAME = 'makt'

TABLES

T_OUTTAB = ITAB1

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

endif.

ENDFORM.

Read only

Former Member
0 Likes
1,388

Hi,

Refer to the following link for reference code.

http://saptechnical.com/Tutorials/ALV/SimpleIALV/Program.htm

Regards,

Jaya vani

Read only

Former Member
0 Likes
1,388

ALV

The common features of report are column alignment, sorting, filtering, subtotals, totals etc. To implement these, a lot of coding and logic is to be put. To avoid that we can use a concept called ABAP List Viewer (ALV).

Using ALV, we can have three types of reports:

1. Simple Report

2. Block Report

3. Hierarchical Sequential Report

There are some function modules which will enable to produce the above reports without much effort.

All the definitions of internal tables, structures and constants are declared in a type-pool called SLIS.

Code snippet

report zalvreport1.

class zclass_floc definition deferred. "for event handling.

tables : iflo,klah,kssk.

types: begin of zalv6,

tplnr like iflo-tplnr,

pltxt like iflo-pltxt,

invnr like iflo-invnr,

objnr like iflo-objnr,

erdat like iflo-erdat,

fltyp like iflo-fltyp,

iwerk like iflo-iwerk,

class like klah-class,

clint like kssk-clint,

end of zalv6.

*tables : z98442empl.

*TYPES: BEGIN OF ztable,

  • empid LIKE z98442empl-empid,

  • location LIKE z98442empl-location,

  • pu like z98442empl-pu,

  • END OF ztable.

*

*DATA : itab TYPE STANDARD TABLE OF ztable.

*DATA : wa_itab TYPE ztable.

data : begin of itab1 occurs 0 ,

tplnr like kssk-objek,

clint like kssk-clint,

end of itab1.

data : begin of itab3 occurs 0 ,

class like klah-class,

clint like kssk-clint,

end of itab3.

data : itab type standard table of zalv6.

data : wa_itab type zalv6.

data : wa_itab1 like line of itab1.

data : wa_itab3 like line of itab3.

data : ok_code like sy-ucomm,

g_alvgrid type ref to cl_gui_alv_grid,

g_custom_control type scrfname value 'F_LOC',

g_container type ref to cl_gui_custom_container,

g_fieldcat type lvc_t_fcat,

e_row type lvc_s_row,

e_column type lvc_s_col,

e_row_number type lvc_s_roid.

--


CLASS DEFINITION--

class zclass_floc definition .

public section .

class-methods : handle_double_click

for event double_click of cl_gui_alv_grid

importing e_row e_column ,

handle_print_top_of_list

for event print_top_of_list of cl_gui_alv_grid .

endclass . "zclass_floc DEFINITION

*DATA : g_event_handler TYPE REF TO zclass_floc.

--


CLASS IMPLEMENTATION--

class zclass_floc implementation .

method handle_double_click .

perform handle_double_click using e_row e_column e_row_number .

endmethod . "handle_double_click

method handle_print_top_of_list .

perform top_of_page .

endmethod . "handle_print_top_of_list

endclass . "zclass_floc IMPLEMENTATION

--


SELECTION-SCREEN DESIGN--

selection-screen begin of block b1 with frame title text-t01.

parameters: p_fltyp like iflo-fltyp ,

p_tplnr like iflo-tplnr obligatory ,

p_objnr like iflo-objnr .

selection-screen end of block b1.

*SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.

*PARAMETERS: p_empid LIKE z98442empl-empid obligatory.

  • SELECTION-SCREEN END OF BLOCK b1.

*

--


IMPLEMENTATION OF AT-SELECTION-SCREEN EVENT--

at selection-screen .

--


IMPLEMENTATION OF START-OF-SELECTION EVENT--

start-of-selection.

data : tplnr type iflo-tplnr,

spras type iflo-spras.

call function 'ENQUEUE_EZIFLO'

exporting

mode_iflo = 'X'

mandt = sy-mandt

tplnr = tplnr

spras = spras

  • X_TPLNR = ' '

  • X_SPRAS = ' '

  • _SCOPE = '2'

  • _WAIT = ' '

  • _COLLECT = ' '

exceptions

foreign_lock = 1

system_failure = 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.

break-point.

perform fetchdata.

.

call function 'DEQUEUE_EZIFLO'

exporting

mode_iflo = 'X'

mandt = sy-mandt

tplnr = tplnr

spras = spras

  • X_TPLNR = ' '

  • X_SPRAS = ' '

  • _SCOPE = '3'

  • _SYNCHRON = ' '

  • _COLLECT = ' '

.

end-of-selection.

perform display_alv.

--


CALLING SCREEN IN WHICH THE OUTPUT IS DISPLAYED--

call screen 100.

&----


*& Form FETCHDATA

&----


  • text

----


form fetchdata.

break-point.

select tplnr

pltxt

invnr

objnr

erdat

fltyp

iwerk from iflo

into corresponding fields of table itab

where tplnr eq p_tplnr.

*select empid

*location

*pu from z98442empl

*INTO CORRESPONDING FIELDS OF TABLE itab where empid EQ p_empid.

select objek

clint from kssk

appending table itab1

where objek eq p_tplnr.

select class

clint from klah

into table itab3

for all entries in itab1

where clint = itab1-clint.

loop at itab into wa_itab.

read table itab1 into wa_itab1 with key tplnr = wa_itab-tplnr.

read table itab3 into wa_itab3 with key clint = wa_itab1-clint.

wa_itab-class = wa_itab3-class.

wa_itab-clint = wa_itab3-clint.

modify itab from wa_itab.

endloop.

if sy-subrc ne 0.

message 'no values found for the specified key. Press any key to exit' type 'E' .

leave program.

endif.

endform. "fetchdata

&----


*& Module display_alv OUTPUT

&----


  • text

----


module display_alv output.

endmodule. "display_alv OUTPUT

&----


*& Form display_alv

&----


  • text

----


form display_alv.

set pf-status 'FLOC'.

set titlebar '100'.

if g_alvgrid is initial.

--


CREATING CUSTOM CONTAINER INSTANCE--

create object g_container

exporting

container_name = g_custom_control.

--


CREATING ALV GRID INSTANCE--

create object g_alvgrid

exporting

i_parent = g_container.

--


PREPARING FIELD CATALOG--

perform prepare_field_catalog changing g_fieldcat .

--


CREATING EVENT HANDLER INSTANCE--

  • CREATE OBJECT g_event_handler.

--


ADDING ADDITIONAL FEATURES--

call method g_alvgrid->set_table_for_first_display

exporting

i_structure_name = 'ZALV6'

  • i_structure_name = 'Ztable'

changing

it_outtab = itab

it_fieldcatalog = g_fieldcat.

  • ELSE.

call method g_alvgrid->refresh_table_display

exceptions

finished = 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.

--


SET EVENT HANDLERS--

set handler zclass_floc=>handle_double_click for g_alvgrid.

set handler zclass_floc=>handle_print_top_of_list for g_alvgrid.

endif.

endform. "display_alv

&----


*& Form PREPARE_FIELD_CATALOG

&----


  • text

----


form prepare_field_catalog changing g_fieldcat type lvc_t_fcat.

data : ls_fcat type lvc_s_fcat .

ls_fcat-fieldname = 'TPLNR'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'functional location '.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'PLTXT'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'functional location description'.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'INVNR'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'inventory number '.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'OBJNR'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'object number'.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'ERDAT'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'Creation Date '.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'FLTYP'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'Functional Location Category '.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'IWERK'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'Maintenance planning plant '.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'CLASS'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'Class name '.

append ls_fcat to g_fieldcat.

ls_fcat-fieldname = 'CLINT'.

ls_fcat-ref_table = 'ZALV6'.

ls_fcat-coltext = 'Internal class number '.

append ls_fcat to g_fieldcat.

  • ls_fcat-fieldname = 'empid'.

  • ls_fcat-ref_table = 'Ztable'.

  • ls_fcat-coltext = 'Maintenance planning plant '.

  • APPEND ls_fcat TO g_fieldcat.

*

  • ls_fcat-fieldname = 'location'.

  • ls_fcat-ref_table = 'Ztable'.

  • ls_fcat-coltext = 'Class name '.

  • APPEND ls_fcat TO g_fieldcat.

*

  • ls_fcat-fieldname = 'pu'.

  • ls_fcat-ref_table = 'Ztable'.

  • ls_fcat-coltext = 'Internal class number '.

  • APPEND ls_fcat TO g_fieldcat.

*

*

*

endform. "prepare_field_catalog

&----


*& Module DISPLAY_ALV INPUT

&----


  • text

----


module display_alv input.

case ok_code.

when 'EXIT'.

leave program.

when others.

call screen 100.

endcase.

clear ok_code.

endmodule. "display_alv INPUT

&----


*& Form EXIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form exit .

call screen 100.

endform. "EXIT

&----


*& Form handle_double_click

&----


  • text

----


form handle_double_click using e_row type lvc_s_row

e_column type lvc_s_col

e_row_number type lvc_s_roid.

data : itab5 type zalv6.

  • DATA : itab5 TYPE ztable.

*

read table itab into itab5 index e_row-index.

if sy-subrc = 0 and e_column-fieldname eq 'TPLNR' .

  • READ TABLE itab INTO itab5 INDEX e_row-index.

  • IF sy-subrc = 0 AND e_column-fieldname EQ 'empid' .

set parameter id 'FLD' field itab5-tplnr.

  • SET PARAMETER ID 'FLD' FIELD itab5-empid.

call transaction 'ZALVSCRIPT_98341' and skip first screen .

endif.

endform. "handle_double_click

&----


*& Form top_of_page

&----


  • text

----


form top_of_page .

write : / ' FUNCTIONAL LOCATION DETAILS :'.

endform. "top_of_page

--


END OF PROGRAM ZALVREPORT--

reward points if helpful plz

regards

palak