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

interactive report coding

Former Member
0 Likes
1,525

hi can i know the coding for interactive report

8 REPLIES 8
Read only

Former Member
0 Likes
1,070

Hi,

1) Use Hide statement

2) Use the export parameter i_callback_usercommand and give one subroutine name for this and write the code for that subroutine.

For this the eg is

&----


*& Report ZDEMO_ALVGRID *

*& *

&----


*& *

*& Example of a simple ALV Grid Report *

*& ................................... *

*& *

*& The basic requirement for this demo is to display a number of *

*& fields from the EKKO table. *

&----


REPORT zdemo_alvgrid .

TABLES: ekko.

type-pools: slis. "ALV Declarations

*Data Declaration

*----


TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid,

gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

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

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform build_events.

perform build_print_params.

perform display_alv_report.

&----


*& Form BUILD_FIELDCATALOG

&----


  • Build Fieldcatalog for ALV Report

----


form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-do_sum = 'X'.

fieldcatalog-datatype = 'CURR'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

&----


*& Form BUILD_LAYOUT

&----


  • Build layout for ALV grid report

----


form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

  • gd_layout-totals_only = 'X'.

  • gd_layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

  • gd_layout-zebra = 'X'.

  • gd_layout-group_change_edit = 'X'.

  • gd_layout-header_text = 'helllllo'.

endform. " BUILD_LAYOUT

&----


*& Form DISPLAY_ALV_REPORT

&----


  • Display report using ALV grid

----


form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

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 DATA_RETRIEVAL

&----


  • Retrieve data form EKPO table and populate itab it_ekko

----


form data_retrieval.

select ebeln ebelp statu aedat matnr menge meins netpr peinh

up to 10 rows

from ekpo

into table it_ekko.

endform. " DATA_RETRIEVAL

----


  • Form TOP-OF-PAGE *

----


  • ALV Report Header *

----


Form top-of-page.

*ALV Header declarations

data: t_header type slis_t_listheader,

wa_header type slis_listheader,

t_line like wa_header-info,

ld_lines type i,

ld_linesc(10) type c.

  • Title

wa_header-typ = 'H'.

wa_header-info = 'EKKO Table Report'.

append wa_header to t_header.

clear wa_header.

  • Date

wa_header-typ = 'S'.

wa_header-key = 'Date: '.

CONCATENATE sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) INTO wa_header-info. "todays date

append wa_header to t_header.

clear: wa_header.

  • Total No. of Records Selected

describe table it_ekko lines ld_lines.

ld_linesc = ld_lines.

concatenate 'Total No. of Records Selected: ' ld_linesc

into t_line separated by space.

wa_header-typ = 'A'.

wa_header-info = t_line.

append wa_header to t_header.

clear: wa_header, t_line.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = t_header.

  • i_logo = 'Z_LOGO'.

endform.

----


  • FORM USER_COMMAND *

----


  • --> R_UCOMM *

  • --> RS_SELFIELD *

----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

  • Check function code

CASE r_ucomm.

WHEN '&IC1'.

  • Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'EBELN'.

  • Read data table, using index of row user clicked on

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

  • Set parameter ID for transaction screen field

SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.

  • Sxecute transaction ME23N, and skip initial data entry screen

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM.

&----


*& Form BUILD_EVENTS

&----


  • Build events table

----


form build_events.

data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = gt_events[].

read table gt_events with key name = slis_ev_end_of_page

into ls_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to ls_event-form.

append ls_event to gt_events.

endif.

read table gt_events with key name = slis_ev_end_of_list

into ls_event.

if sy-subrc = 0.

move 'END_OF_LIST' to ls_event-form.

append ls_event to gt_events.

endif.

endform. " BUILD_EVENTS

&----


*& Form BUILD_PRINT_PARAMS

&----


  • Setup print parameters

----


form build_print_params.

gd_prntparams-reserve_lines = '3'. "Lines reserved for footer

gd_prntparams-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

&----


*& Form END_OF_PAGE

&----


form END_OF_PAGE.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

&----


*& Form END_OF_LIST

&----


form END_OF_LIST.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

skip.

write:/40 'Page:', sy-pagno .

endform.

Read only

Former Member
0 Likes
1,070

Hi rakkasi,

Interactive-Report. (using alv)

1. In alv we cannot use AT LINE Selection

2. For alv, there is a special syntax, so that when we double-click on alv,

our FORM / routine is called and there we display another alv.

3. just copy paste to get a taste of interactive alv.

4.

REPORT abc.

TYPE-POOLS : slis.

*----


Data

DATA : ITAB LIKE T001 OCCURS 0 WITH HEADER LINE.

DATA : alvfc TYPE slis_t_fieldcat_alv.

DATA : STAB LIKE T001 OCCURS 0 WITH HEADER LINE.

*----


Select Data

SELECT * FROM t001 INTO TABLE itab.

*------- Field Catalogue

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_internal_tabname = 'ITAB'

i_inclname = sy-repid

CHANGING

ct_fieldcat = alvfc

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

*----


Display

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = alvfc

i_callback_program = sy-repid "<-------Important

i_callback_user_command = 'ITAB_USER_COMMAND' "<------ Important

TABLES

t_outtab = itab

EXCEPTIONS

program_error = 1

OTHERS = 2.

*----


  • CALL BACK FORM

*----


FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE

slis_selfield.

*----


IMPORTANT.

READ TABLE ITAB INDEX WHATROW-TABINDEX.

*

CLEAR STAB.

SELECT * FROM T001

INTO TABLE STAB

WHERE BUKRS = ITAB-BUKRS.

CLEAR ALVFC.

*------- Field Catalogue

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_internal_tabname = 'STAB'

i_inclname = sy-repid

CHANGING

ct_fieldcat = alvfc

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

*----


Display

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = alvfc

i_callback_program = sy-repid "<-------Important

TABLES

t_outtab = Stab

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. "ITAB_user_command

regards,

amit m.

Read only

Former Member
0 Likes
1,070

Hi,

Interactive reporting can be done using 2 ways :

1. Using LINE-SELECTION

2. Using USER_COMMAND.

LINE-SELECTION means a processing will take place when LINE on the report output is selected i.e. clicked or double-clicked.

USER-COMMAND approach is followed when there is a GUI Status defined for the report output and user clciks on a button.

For using AT LINE-SELECTION, u shud use HIDE command

For Using USER-COMMAND option , u shud define PF-STatus and define the required buttons and give function codes to them.

Regards,

Himanshu

Read only

Former Member
0 Likes
1,070

Hi ,

Have a look at this Interactive ALV report.

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.

Hope this resolves your query.

Reward all the helpful answers.

Regards

Read only

Former Member
0 Likes
1,070

hi

<b>ABAP-ALV Interactive Report </b>

ALV Interactive Report with call transaction sample report./* &----


*& Report ZKAL_ALV_INTERACTIVE_1 *

*& *

&----


*& *

*& *

&----


REPORT ZKAL_ALV_INTERACTIVE_1 .

TYPE-POOLS: SLIS.

&----


TYPES: BEGIN OF TY_KNA1,

KUNNR TYPE KUNNR,

NAME1 TYPE NAME1,

ORT01 TYPE ORT01,

END OF TY_KNA1.

TYPES: BEGIN OF TY_VBAK,

VBELN TYPE VBELN,

ERNAM TYPE ERNAM,

ERDAT TYPE ERDAT,

NETWR TYPE NETWR,

WAERK TYPE WAERK,

END OF TY_VBAK.

&--


WORK AREA & TABLE DECLARATION--


DATA: W_KNA1 TYPE TY_KNA1.

DATA: T_KNA1 TYPE STANDARD TABLE OF TY_KNA1 INITIAL SIZE 1.

DATA: W_VBAK TYPE TY_VBAK.

DATA: T_VBAK TYPE STANDARD TABLE OF TY_VBAK INITIAL SIZE 1.

&--


FIELDCAT TABLE & WORK AREA--


DATA: W_FCAT TYPE SLIS_FIELDCAT_ALV.

DATA: T_FCAT TYPE SLIS_T_FIELDCAT_ALV.

&----


DATA: W_FCAT1 TYPE SLIS_FIELDCAT_ALV.

DATA: T_FCAT1 TYPE SLIS_T_FIELDCAT_ALV.

&--


EVENT TABLE AND WORK AREA--


DATA: W_EVENTS TYPE SLIS_ALV_EVENT.

DATA: T_EVENTS TYPE SLIS_T_EVENT.

&----


DATA: W_EVENTS1 TYPE SLIS_ALV_EVENT.

DATA: T_EVENTS1 TYPE SLIS_T_EVENT.

&--


COMMENT TABLE & WORK AREA--


DATA: W_COMMENT TYPE SLIS_LISTHEADER.

DATA: T_COMMENT TYPE SLIS_T_LISTHEADER.

&----


DATA: W_COMMENT1 TYPE SLIS_LISTHEADER.

DATA: T_COMMENT1 TYPE SLIS_T_LISTHEADER.

&----


APPENDING FCAT -


W_FCAT-COL_POS = 1.

W_FCAT-FIELDNAME = 'KUNNR'.

W_FCAT-SELTEXT_M = 'CUST. NO'.

W_FCAT-HOTSPOT = 'X'. "HOT SPOT HAND SYMBOL

W_FCAT-EMPHASIZE = 'C119'. "FOR COLORING THE COLUMN 1

APPEND W_FCAT TO T_FCAT.

CLEAR W_FCAT.

W_FCAT-COL_POS = 2.

W_FCAT-FIELDNAME = 'NAME1'.

W_FCAT-SELTEXT_M = 'CUST. NAME'.

APPEND W_FCAT TO T_FCAT.

W_FCAT-COL_POS = 3.

W_FCAT-FIELDNAME = 'ORT01'.

W_FCAT-SELTEXT_M = 'CITY'.

APPEND W_FCAT TO T_FCAT.

&----


W_FCAT1-COL_POS = 1.

W_FCAT1-FIELDNAME = 'VBELN'.

W_FCAT1-SELTEXT_M = 'ORDER NO'.

W_FCAT1-EMPHASIZE = 'C519'.

APPEND W_FCAT1 TO T_FCAT1.

CLEAR W_FCAT.

W_FCAT1-COL_POS = 2.

W_FCAT1-FIELDNAME = 'ERNAM'.

W_FCAT1-SELTEXT_M = 'NAME OF PARTY'.

APPEND W_FCAT1 TO T_FCAT1.

W_FCAT1-COL_POS = 3.

W_FCAT1-FIELDNAME = 'ERDAT'.

W_FCAT1-SELTEXT_M = 'DATE'.

APPEND W_FCAT1 TO T_FCAT1.

W_FCAT1-COL_POS = 4.

W_FCAT1-FIELDNAME = 'NETWR'.

W_FCAT1-SELTEXT_M = 'ORDER VALUE'.

APPEND W_FCAT1 TO T_FCAT1.

W_FCAT1-COL_POS = 5.

W_FCAT1-FIELDNAME = 'WAERK'.

W_FCAT1-SELTEXT_M = 'CURRENCY'.

APPEND W_FCAT1 TO T_FCAT1.

&--


APPEND COMMENTRY--


W_COMMENT-TYP = 'H'.

W_COMMENT-INFO = 'CUSTOMER DETAILS'.

APPEND W_COMMENT TO T_COMMENT.

CLEAR W_COMMENT.

&--


APPEND EVENTS TABLE--


W_EVENTS-NAME = 'TOP_OF_PAGE'.

W_EVENTS-FORM = 'TOPPAGE'.

APPEND W_EVENTS TO T_EVENTS.

W_EVENTS-NAME = 'USER_COMMAND'.

W_EVENTS-FORM = 'SUB2'.

APPEND W_EVENTS TO T_EVENTS.

W_EVENTS1-NAME = 'TOP_OF_PAGE'.

W_EVENTS1-FORM = 'TOPPAGE1'.

APPEND W_EVENTS1 TO T_EVENTS1.

CLEAR W_EVENTS1.

W_EVENTS1-NAME = 'USER_COMMAND'.

W_EVENTS1-FORM = 'SUB3'.

APPEND W_EVENTS1 TO T_EVENTS1.

&----


SELECT-OPTIONS: CUSTNO FOR W_KNA1-KUNNR.

&----


SELECT KUNNR

NAME1

ORT01 FROM KNA1 INTO TABLE T_KNA1

WHERE KUNNR IN CUSTNO.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = 'ZKAL_ALV_INTERACTIVE_12'

I_BACKGROUND_ID = 'BIKE'

I_GRID_TITLE = 'CUSTOMER DETAILS'

IT_FIELDCAT = T_FCAT

IT_EVENTS = T_EVENTS

TABLES

T_OUTTAB = T_KNA1 .

&----


FORM TOPPAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = T_COMMENT

I_LOGO = 'LOGO_ALV'.

ENDFORM. "END OF TOPPAGE SUB.

&----


FORM SUB2 USING UCOMM LIKE SY-UCOMM FIELDS1 TYPE SLIS_SELFIELD.

READ TABLE T_KNA1 INTO W_KNA1 INDEX FIELDS1-TABINDEX.

SELECT VBELN

ERNAM

ERDAT

NETWR

WAERK

FROM VBAK

INTO TABLE T_VBAK

WHERE KUNNR = W_KNA1-KUNNR.

&----


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = 'ZKAL_ALV_INTERACTIVE_12'

I_BACKGROUND_ID = 'KALEEM'

I_GRID_TITLE = 'LIST OF ORDERS'

IT_FIELDCAT = T_FCAT1

IT_EVENTS = T_EVENTS1

TABLES

T_OUTTAB = T_VBAK.

ENDFORM. "END OF SUB2.

&----


FORM TOPPAGE1.

&--


APPEND COMMENTRYOF SECONDRY SCREEN--


W_COMMENT1-TYP = 'H'.

W_COMMENT1-INFO = 'LIST OF ORDERS'.

APPEND W_COMMENT1 TO T_COMMENT1.

W_COMMENT1-TYP = 'S'.

W_COMMENT1-KEY = 'CUSTOMER'.

W_COMMENT1-INFO = W_KNA1-KUNNR.

APPEND W_COMMENT1 TO T_COMMENT1.

CLEAR W_COMMENT.

W_COMMENT1-TYP = 'A'.

W_COMMENT1-INFO = W_KNA1-NAME1.

APPEND W_COMMENT1 TO T_COMMENT1.

CLEAR W_COMMENT1.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = T_COMMENT1

I_LOGO = 'LOGO_ALV'

.

REFRESH T_COMMENT1.

ENDFORM. "END OF TOPPAGE1

&----


FORM SUB3 USING UCOMM LIKE SY-UCOMM FIELDS1 TYPE SLIS_SELFIELD.

READ TABLE T_VBAK INTO W_VBAK INDEX FIELDS1-TABINDEX.

SET PARAMETER ID 'AUN' FIELD W_VBAK-VBELN.

CALL TRANSACTION 'VA02' AND SKIP FIRST SCREEN.

ENDFORM.

&----


/

<b>Interactive Reports</b>

As the name suggests, the user can Interact with the report. We can have a drill down into the report data. For example, Column one of the report displays the material numbers, and the user feels that he needs some more specific data about the vendor for that material, he can HIDE that data under those material numbers.

And when the user clicks the material number, another report (actually sub report/secondary list) which displays the vendor details will be displayed.

We can have a basic list (number starts from 0) and 20 secondary lists (1 to 21).

Events associated with Interactive Reports are:

<b>AT LINE-SELECTION

AT USER-COMMAND

AT PF<key>

TOP-OF-PAGE DURING LINE-SELECTION.</b>

<b>HIDE</b> statement holds the data to be displayed in the secondary list.

sy-lisel : contains data of the selected line.

sy-lsind : contains the level of report (from 0 to 21)

Interactive Report Events:

AT LINE-SELECTION : This Event triggers when we double click a line on the list, when the event is triggered a new sublist is going to be generated. Under this event what ever the statements that are been return will be displayed on newly generated sublist.

AT PFn: For predefined function keys...

AT USER-COMMAND : It provides user functions keys.

TOP-OF-PAGE DURING LINE-SELECTION :top of page event for secondary list.

hope it will clear ur doubt

regards

ravish

<b>plz dont forget to reward points if helpful</b>

Read only

Former Member
0 Likes
1,070

HI

Go through the following Example Code

&----


*& Report ZSSSS1 *

*& *

&----


*& *

*& *

&----


REPORT ZSSSS1 LINE-SIZE 120

LINE-COUNT 25(3)

MESSAGE-ID ZSAN.

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

*Program Desc: INTERACTIVE REPORT FOR PURCHASE ORDER DETAILS

  • BASIC LIST CONTAINS HEADER DETAILS

  • SECONDARY LIST CONTAINS ITEM DETAILS

  • AND CONDETION RECORD DETAILS

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

  • T A B L E S U S E D *

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

TABLES: EKKO,EKPO,KONV,LFA1,T001.

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

  • S E L E C T I O N S C R E E N *

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

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.

SELECT-OPTIONS:

S_LIFNR FOR EKKO-LIFNR,

S_BUKRS FOR EKKO-BUKRS.

SELECTION-SCREEN END OF BLOCK B1.

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

  • D A T A D E C L A R A T I O N S *

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

DATA: BEGIN OF IT_EKKO OCCURS 0,

BUKRS LIKE EKKO-BUKRS,

LIFNR LIKE EKKO-LIFNR,

EBELN LIKE EKKO-EBELN,

KNUMV LIKE EKKO-KNUMV,

END OF IT_EKKO.

DATA: BEGIN OF IT_EKPO OCCURS 0,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

INFNR LIKE EKPO-INFNR,

MENGE LIKE EKPO-MENGE,

MEINS LIKE EKPO-MEINS,

NETPR LIKE EKPO-NETPR,

END OF IT_EKPO.

DATA: BEGIN OF IT_KONV OCCURS 0,

KNUMV LIKE KONV-KNUMV,

KSCHL LIKE KONV-KSCHL,

KAWRT LIKE KONV-KAWRT,

KBETR LIKE KONV-KBETR,

KPOSN LIKE KONV-KPOSN,

END OF IT_KONV.

DATA: BEGIN OF IT_LFA1 OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

STRAS LIKE LFA1-STRAS,

ORT01 LIKE LFA1-ORT01,

PSTLZ LIKE LFA1-PSTLZ,

LAND1 LIKE LFA1-LAND1,

END OF IT_LFA1.

DATA: V_BUTXT LIKE T001-BUTXT,

FNAM(20) TYPE C,

FVAL(20) TYPE C.

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

  • A T S E L E C T I O N - S C R E E N O N <FIELD> *

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

AT SELECTION-SCREEN ON S_BUKRS.

PERFORM VALIDATE.

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

  • S T A R T - O F - S E L E C T I O N *

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

START-OF-SELECTION.

PERFORM SELECT_DATA. " SELECTION OF ALL DATA

PERFORM DISPLAY_DATA. " DISPLAY OF BASIC LIST

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

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

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

AT LINE-SELECTION.

GET CURSOR FIELD FNAM VALUE FVAL.

CASE FNAM.

WHEN 'IT_EKKO-EBELN'.

PERFORM DISPLAY_SEC1.

WHEN 'IT_EKKO-LIFNR'.

PERFORM DISPLAY_SEC2.

WHEN OTHERS.

PERFORM DISPLAY_SEC3.

ENDCASE.

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

  • T O P - O F - P A G E *

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

TOP-OF-PAGE.

PERFORM WRITE_HEADER.

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

  • T O P - O F - P A G E D U R I N G L I N E S E L *

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

TOP-OF-PAGE DURING LINE-SELECTION.

PERFORM WRITE_HEADER2.

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

  • E N D - O F - P A G E *

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

END-OF-PAGE.

PERFORM WRITE_FOOTER.

&----


*& Form SELECT_DATA

&----


  • THIS FORM CONTAINS ALL SELECTION OF DATA STATEMENTS

----


form SELECT_DATA.

SELECT BUKRS LIFNR EBELN KNUMV

FROM EKKO

INTO TABLE IT_EKKO

WHERE LIFNR IN S_LIFNR

AND BUKRS IN S_BUKRS.

IF NOT IT_EKKO[] IS INITIAL.

SELECT EBELN EBELP MATNR INFNR MENGE MEINS NETPR

FROM EKPO

INTO TABLE IT_EKPO

FOR ALL ENTRIES IN IT_EKKO

WHERE EBELN = IT_EKKO-EBELN.

IF SY-SUBRC = 0.

LOOP AT IT_EKKO.

LOOP AT IT_EKPO.

SELECT KNUMV KSCHL KAWRT KBETR KPOSN

FROM KONV

INTO IT_KONV

WHERE KNUMV = IT_EKKO-KNUMV

AND KPOSN = IT_EKPO-EBELP.

APPEND IT_KONV.

ENDSELECT.

ENDLOOP.

ENDLOOP.

ENDIF." END OF IF FOR CHECK OF SY-SUBRC

SELECT LIFNR NAME1 STRAS ORT01 PSTLZ LAND1

INTO TABLE IT_LFA1

FROM LFA1

FOR ALL ENTRIES IN IT_EKKO

WHERE LIFNR = IT_EKKO-LIFNR.

ENDIF." END OF IF FOR IT_EKKO IS NOT INITIAL

endform. " SELECT_DATA

&----


*& Form DISPLAY_DATA

&----


  • DISPLAY THE BASIC DATA

----


form DISPLAY_DATA.

DATA: LINNO TYPE I.

SORT IT_EKKO BY BUKRS LIFNR EBELN.

LOOP AT IT_EKKO.

READ TABLE IT_LFA1 WITH KEY LIFNR = IT_EKKO-LIFNR.

SELECT SINGLE BUTXT

FROM T001

INTO (V_BUTXT)

WHERE BUKRS = IT_EKKO-BUKRS.

WRITE:/1 SY-VLINE,

(10) IT_EKKO-EBELN HOTSPOT ON,

SY-VLINE,

(10) IT_EKKO-LIFNR HOTSPOT ON,

SY-VLINE,

(15) IT_LFA1-NAME1 HOTSPOT ON,

SY-VLINE,

(10) IT_EKKO-BUKRS HOTSPOT ON,

SY-VLINE,

(15) V_BUTXT,

75 SY-VLINE.

HIDE: IT_EKKO-EBELN,

IT_EKKO-LIFNR.

WRITE:/1(75) SY-ULINE.

AT END OF LIFNR.

LINNO = SY-LINCT - SY-LINNO - 1.

SKIP LINNO.

ENDAT.

ENDLOOP.

endform. " DISPLAY_DATA

&----


*& Form DISPLAY_SEC3

&----


form DISPLAY_SEC3.

LOOP AT IT_EKPO.

CLEAR: IT_EKPO, IT_KONV.

READ TABLE IT_EKPO WITH KEY EBELN = IT_EKKO-EBELN.

IF SY-SUBRC = 0.

FORMAT COLOR 3.

WRITE:/1 SY-VLINE,

(10) IT_EKPO-EBELN,

SY-VLINE,

(10) IT_EKPO-EBELP,

SY-VLINE,

(18) IT_EKPO-MATNR,

SY-VLINE,

(10) IT_EKPO-INFNR,

SY-VLINE,

(15) IT_EKPO-MENGE,

SY-VLINE,

(10) IT_EKPO-MEINS,

SY-VLINE,

(12) IT_EKPO-NETPR,

105 SY-VLINE.

FORMAT COLOR OFF.

WRITE:/1(105) SY-ULINE.

FORMAT COLOR 4.

READ TABLE IT_KONV WITH KEY KPOSN = IT_EKPO-EBELP.

IF SY-SUBRC = 0.

WRITE:/1 SY-VLINE,

(10) IT_KONV-KNUMV,

SY-VLINE,

(10) IT_KONV-KSCHL,

SY-VLINE,

(15) IT_KONV-KAWRT,

SY-VLINE,

(12) IT_KONV-KBETR,

SY-VLINE.

WRITE:/1(95) SY-ULINE.

FORMAT COLOR OFF.

ENDIF.

ENDIF.

ENDLOOP.

endform. " DISPLAY_SEC3

&----


*& Form DISPLAY_SEC1

&----


  • TO CALL TRANSACTION ME23

----


form DISPLAY_SEC1.

SET PARAMETER ID 'BES' FIELD IT_EKKO-EBELN.

CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.

endform. " DISPLAY_SEC1

&----


*& Form WRITE_HEADER

&----


  • HEADER DISPLAY

----


form WRITE_HEADER.

FORMAT COLOR 3.

WRITE:/1 SY-VLINE,

(10) 'PUR.ORDER',

SY-VLINE,

(10) 'VENDOR',

SY-VLINE,

(15) 'NAME',

SY-VLINE,

(10) 'COMP.CODE',

SY-VLINE,

(15) 'COMP.DESC',

75 SY-VLINE.

WRITE:/1(75) SY-ULINE.

FORMAT COLOR OFF.

endform. " WRITE_HEADER

&----


*& Form WRITE_FOOTER

&----


  • FOOTER OF LIST

----


form WRITE_FOOTER.

FORMAT COLOR 4.

WRITE: /1 'USER:',SY-UNAME,

45 'DATE:', SY-DATUM.

FORMAT COLOR OFF.

endform. " WRITE_FOOTER

&----


*& Form WRITE_HEADER2

&----


  • HEADER FOR SECONDARY LIST

----


form WRITE_HEADER2.

FORMAT COLOR 4.

WRITE: /30 'INTELLIGROUP ASIA PVT LTD' CENTERED.

WRITE:/50 'HYDERABAD' CENTERED.

FORMAT COLOR 5.

WRITE:/1 SY-VLINE,

(10) 'PUR.ORDR',

SY-VLINE,

(10) 'ITEM',

SY-VLINE,

(18) 'MATERIAL NUMBER',

SY-VLINE,

(10) 'INFO.RECD',

SY-VLINE,

(15) 'QUANTITY',

SY-VLINE,

(10) 'UNITS',

SY-VLINE,

(12) 'NETPRICE',

105 SY-VLINE.

FORMAT COLOR OFF.

WRITE:/1(105) SY-ULINE.

FORMAT COLOR 6.

WRITE:/1 SY-VLINE,

(10) 'COND.RECD',

SY-VLINE,

(10) 'TYPE',

SY-VLINE,

(15) 'BASE VALUE',

SY-VLINE,

(12) 'AMOUNT',

SY-VLINE.

FORMAT COLOR OFF.

WRITE:/1(95) SY-ULINE.

endform. " WRITE_HEADER2

&----


*& Form DISPLAY_SEC2

&----


  • TO DISPLAY VENDOR DETAILS IN POP UP WINDOW

----


form DISPLAY_SEC2.

READ TABLE IT_LFA1 WITH KEY LIFNR = IT_EKKO-LIFNR.

IF SY-SUBRC = 0.

WRITE:/ 'NAME IS:' , IT_LFA1-NAME1,

/ 'STREET IS:', IT_LFA1-STRAS,

/ 'CITY IS:', IT_LFA1-ORT01,

/ 'POSTEL CODE IS:',IT_LFA1-PSTLZ,

/ 'COUNTRY IS: ', IT_LFA1-LAND1.

WINDOW STARTING AT 1 15

ENDING AT 50 20.

ENDIF.

endform. " DISPLAY_SEC2

&----


*& Form VALIDATE

&----


  • VALIDATE BUKRS

----


form VALIDATE.

SELECT SINGLE *

FROM T001

WHERE BUKRS IN S_BUKRS.

IF SY-SUBRC <> 0.

MESSAGE E001.

ENDIF.

endform. " VALIDATE

and

http://www.sapgenie.com/abap/ireports.htm

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

http://www.sap-basis-abap.com/abap/check-boxes-in-an-interactive-report.htm

http://sap-img.com/abap/difference-between-drilldown-report-and-interactive-report.htm

Regards

Rk

Message was edited by:

Rk Pasupuleti

Read only

Former Member
0 Likes
1,070

Hi,

Try the following code n let me know.

"----


  • Tables *

"----


tables:

sflight, " Flight master

spfli. " Flight schedule master

"----


  • Field string to hold flight schedule data *

"----


data:

begin of fs_spfli,

carrid type spfli-carrid, " Airline carrier id

connid type spfli-connid, " Flight connection number

airpfrom type spfli-airpfrom, " Departure airport

airpto type spfli-airpto, " Destination airport

deptime type spfli-deptime, " Departure time

arrtime type spfli-arrtime, " Arrival time

end of fs_spfli.

"----


  • Internal table to hold flight schedule data *

"----


data:

t_spfli like standard table

of fs_spfli.

"----


  • Field string to hold flight data *

"----


data:

begin of fs_sflight,

carrid type sflight-carrid, " Airline carrier id

fldate type sflight-fldate, " Flight date

seatsmax type sflight-seatsmax, " Maximum seats

seatsocc type sflight-seatsocc, " Occupied seats

end of fs_sflight.

"----


  • Internal table to hold flight data *

"----


data:

t_sflight like standard table

of fs_sflight.

*" Data declarations...................................................

"----


  • Work variables *

"----


data:

w_checkbox type c. " Checkbox variable

"----


  • START-OF-SELECTION EVENT *

"----


start-of-selection.

select carrid " Airline carrier id

connid " Flight connection number

airpfrom " Departure airport

airpto " Destination airport

deptime " Departure time

arrtime " Arrival time

into table t_spfli

from spfli.

set pf-status 'TOOL'.

if sy-subrc eq 0.

endif. " IF SY-SUBRC...

"----


  • END-OF-SELECTION EVENT *

"----


end-of-selection.

loop at t_spfli into fs_spfli.

write:/ w_checkbox as checkbox,

fs_spfli-carrid,

fs_spfli-connid,

fs_spfli-airpfrom,

fs_spfli-airpto,

fs_spfli-deptime,

fs_spfli-arrtime.

hide: fs_spfli-carrid,

fs_spfli-connid.

endloop. " LOOP AT T_SPFLI...

clear fs_spfli.

"----


  • AT USER-COMMAND EVENT *

"----


at user-command.

case sy-ucomm.

when 'DETAILS'.

perform selection.

submit YH645_030501A and return.

endcase. " CASE SY-UCOMM...

----


  • FORM SELECTION *

----


  • This subroutine selects the required flight schedule data. *

----


  • There are no interface parameters to be passed to this subroutine. *

----


form selection.

data:

begin of lfs_spfli,

carrid type spfli-carrid, " Airline carrier id

connid type spfli-connid, " Flight connection number

airpfrom type spfli-airpfrom, " Departure airport

airpto type spfli-airpto, " Destination airport

deptime type spfli-deptime, " Departure time

arrtime type spfli-arrtime, " Arrival time

end of lfs_spfli.

"----


  • Internal table to hold flight schedule data *

"----


data:

lt_spfli like standard table

of lfs_spfli.

data:

lw_lines type i, " Number of lines

lw_lineno type i value 3, " Line number

lw_count type i. " Count variable

describe table t_spfli lines lw_lines.

do lw_lines times.

read line lw_lineno

field value w_checkbox into w_checkbox

fs_spfli-carrid into fs_spfli-carrid

fs_spfli-connid into fs_spfli-connid.

if sy-subrc eq 0.

if w_checkbox eq 'X'.

add 1 to lw_count.

clear w_checkbox.

lfs_spfli-carrid = fs_spfli-carrid.

lfs_spfli-connid = fs_spfli-connid.

append lfs_spfli to lt_spfli.

clear lfs_spfli.

endif. " IF W_CHECKBOX...

endif. " IF SY-SUBRC...

add 1 to lw_lineno.

enddo. " DO LW_LINES TIMES...

export lt_spfli to memory id 'YH645'.

endform. " SELECTION

regards,

kiran kumar k

Read only

Former Member
0 Likes
1,070

hi rakkasi,

this is a simple interactive ALV report

hope this helps u understand intreactive report or drill down report..

<b>AIM</b>

Report that would take display all the Sales Order between 2 dates. When the user double clicks on a sales order the report would then display additional details on that Sales Order.

Description:

1)Use Select Options for the range of dates (VBAK-ERDAT).

2)Display the following fields for the Report from the Sales Document Header (VBAK). Customer name can be found in table (KNA1).

<b>DISPLAY THE FIELDS

1) Document No.

2) Creation User Name

3) Creation Date

4) Customer Name

WHEN DOCUMENT NO. IS DOUBLE CLICKED THEN DISPLAY THE FOLLOWING FIELDS :

1) Material No.

2) Material Description.

3) Batch Number.

4) Item type</b>

<u><b>CODING</b></u>

REPORT zginni_sales_report NO STANDARD PAGE HEADING .

TABLES : vbak .

<u><b>structure</b></u>

TYPES : BEGIN OF st_vbak ,

vbeln TYPE vbak-vbeln ,

ernam TYPE vbak-ernam ,

erdat TYPE vbak-erdat ,

name1 TYPE kna1-name1 ,

END OF st_vbak .

TYPES : BEGIN OF st_vbap ,

matnr TYPE vbap-matnr ,

maktx TYPE makt-maktx ,

charg TYPE vbap-charg ,

posar TYPE vbap-posar ,

END OF st_vbap .

<u><b>internal table and work area</b></u>

DATA : it_vbak TYPE TABLE OF st_vbak ,

wa_vbak TYPE st_vbak ,

it_vbap TYPE TABLE OF st_vbap ,

wa_vbap TYPE st_vbap .

<b>TOP-OF-PAGE .</b>

WRITE :4 sy-vline .

WRITE AT 5(125) sy-uline.

WRITE :130 sy-vline .

WRITE :/4 sy-vline ,

10 'document no.' ,

39 sy-vline ,

40 username

69 sy-vline ,

70 date

89 sy-vline ,

90 custmer name

130 sy-vline.

WRITE :/130 sy-vline .

WRITE AT 5(125) sy-uline.

WRITE :4 sy-vline ,130 sy-vline .

<b>TOP-OF-PAGE DURING LINE-SELECTION .

WRITE :4 sy-vline .

WRITE AT 5(125) sy-uline.

WRITE :130 sy-vline .

WRITE :/4 sy-vline ,

<b> 10 material no.</b>

39 sy-vline ,

<b> 40 material description</b>

69 sy-vline ,

<b> 70 batch no.</b>

89 sy-vline ,

<b> 90 item type</b>

130 sy-vline.

WRITE :/130 sy-vline .

WRITE AT 5(125) sy-uline.

WRITE :4 sy-vline ,

130 sy-vline .</b>

SELECT-OPTIONS put_date FOR vbak-erdat .

<b>AT LINE-SELECTION .

PERFORM select_and_write_vbap .</b>

START-OF-SELECTION.

PERFORM sales_document .

END-OF-SELECTION.

FORM select_and_write_vbap .

SELECT

vbap~matnr

makt~maktx

vbap~charg

vbap~posar

FROM ( vbap INNER JOIN makt ON vbapmatnr = maktmatnr )

INTO CORRESPONDING FIELDS OF TABLE IT_VBAP

WHERE vbap~vbeln = wa_vbak-vbeln AND spras = 'EN' .

IF sy-subrc EQ 0 .

LOOP AT it_vbap INTO wa_vbap .

WRITE :/4 sy-vline ,

10 wa_vbap-matnr ,

39 sy-vline ,

40 wa_vbap-maktx ,

69 sy-vline ,

70 wa_vbap-charg ,

89 sy-vline ,

90 wa_vbap-posar ,

130 sy-vline .

ENDLOOP.

WRITE :/4 sy-vline.

WRITE AT 5(125) sy-uline.

WRITE 130 sy-vline.

ELSE .

MESSAGE s000(zginni) .

ENDIF .

ENDFORM . "select_vbap

FORM sales_document .

IF put_date-low IS INITIAL AND put_date-high IS NOT INITIAL .

SELECT

vbak~vbeln

vbak~ernam

vbak~erdat

kna1~name1

FROM ( kna1 INNER JOIN vbak ON vbakkunnr = kna1kunnr ) INTO

CORRESPONDING FIELDS OF TABLE IT_VBAK

WHERE vbak~erdat <= put_date-high.

IF sy-subrc EQ 0 .

PERFORM looping_wa_vbak .

ELSE .

MESSAGE s000(zginni) .

ENDIF .

ENDIF .

IF put_date-low IS NOT INITIAL AND put_date-high IS INITIAL .

SELECT vbeln

vbak~ernam

vbak~erdat

kna1~name1

FROM ( kna1 INNER JOIN vbak ON vbakkunnr = kna1kunnr ) INTO

CORRESPONDING FIELDS OF TABLE IT_VBAK

WHERE vbak~erdat EQ put_date-low .

IF sy-subrc EQ 0 .

PERFORM looping_wa_vbak .

ELSE .

MESSAGE s000(zginni) .

ENDIF .

ENDIF .

IF put_date-high IS INITIAL AND put_date-low IS INITIAL .

MESSAGE s000(zginni) .

ELSE .

SELECT

vbak~vbeln

vbak~ernam

vbak~erdat

kna1~name1

FROM ( kna1 INNER JOIN vbak ON vbakkunnr = kna1kunnr ) INTO

CORRESPONDING FIELDS OF TABLE IT_VBAK

WHERE vbak~erdat BETWEEN put_date-low AND put_date-high.

IF sy-subrc EQ 0 .

PERFORM looping_wa_vbak .

ELSE .

MESSAGE s000(zginni) .

ENDIF .

ENDIF .

ENDFORM . "sales_document

FORM looping_wa_vbak .

LOOP AT it_vbak INTO wa_vbak .

<b>WRITE :/4 sy-vline ,

10 wa_vbak-vbeln .

HIDE wa_vbak-vbeln .

WRITE: 39 sy-vline ,

40 wa_vbak-ernam ,

69 sy-vline ,

70 wa_vbak-erdat ,

89 sy-vline ,

90 wa_vbak-name1 ,

130 sy-vline .

ENDLOOP.</b> WRITE :/4 sy-vline.

WRITE AT 5(125) sy-uline .

WRITE 130 sy-vline.

ENDFORM. "looping_wa_vbak

hope this helps u,

reward points if useful

Ginni