Application Development 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: 

Drill Down Report

Former Member
0 Kudos

Hello Friends,

Can anyone give me a sample code of drill down report?

Thanks,

Aakash

8 REPLIES 8

Former Member
0 Kudos

Hi aakash,

*---- drill down using alv

1. There are some parameters

in the FM which are passed,

and a new FORM has to be written.

2. Just copy paste this code in new program.

3. It will display list of company.

On double-clicking on the alv,

it will again display the clicked company code.

Important code has been marked.

4.

REPORT abc.

TYPE-POOLS : slis.

*----


Data

DATA : BEGIN OF itab OCCURS 0.

INCLUDE STRUCTURE t001.

DATA : END OF itab.

DATA : alvfc TYPE slis_t_fieldcat_alv.

*----


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

READ TABLE itab INDEX whatrow-tabindex.

WRITE itab-bukrs.

ENDFORM. "ITAB_user_command

regards,

amit m.

athavanraja
Active Contributor
0 Kudos

check out these sample programs.

DEMO_LIST_AT_LINE_SELECTION

DEMO_LIST_AT_PF

DEMO_LIST_AT_USER_COMMAND

DEMO_LIST_INTERACTIVE_1

DEMO_LIST_INTERACTIVE_2

DEMO_LIST_INTERACTIVE_3

DEMO_LIST_INTERACTIVE_4

Regards

Raja

Former Member
0 Kudos

HI Aakash,

A simple drill down or interactive report is one which uses one of the three following list events , depending on the function code triggered by the

user.

1. AT PF<nn> ....(obsolete)

2. AT LINE-SELECTION

3. AT USER-COMMAND

The output from any list statements that you write in these event blocks is written to detail lists....

<b>With one ABAP program, you can maintain one basic list and up to 19 detail lists.</b>

TO be very simple..

A simple drill down would be like this..

report zabc.
write : 'List1'.

at line-selection.
write : 'List2'.

on double clicking on 'List1' in report "list2' is displayed..

Samples..

<a href="http://www.sapgenie.com/abap/ireports.htm">Sample1</a>

<a href="http://www.guidancetech.com/people/holland/sap/abap/yusrlock.htm">Sample2</a>

<a href="http://www.planetsap.com/Z_interactive_reporting_1.htm">Sample3</a>

<a href="http://www.planetsap.com/Z_interactive_reporting_2.htm">Sample4</a>

regards

satesh

Former Member
0 Kudos

Hi,

1. As per the forum etiquette,

u may pls award points

to helpful answers by clicking the STAR

on the left of that reply.

regards,

amit m.

former_member186077
Active Participant
0 Kudos

Hi ,

You can create an Interactive report using the events mentioned by Satish.

Satish has rightly pointed out that in ABAP we can maintain 19 LIsts at the maximum.But we can maintain more than that asa well by decreasing the sy-lsind everytime the user clicks on the report other wise there is no point in creating an interactive report as after 20 clicks on the report output the ABAP will give a short dump.

Regards,

Sriranjani Chimakurthy.

Former Member
0 Kudos

Hi,

If you are using ALV,

Then go to package SLIS using SE80.

You will find sample programs of all kinds using ALV.

If you are using basic list,

you will have to use different events like AT LINE-SELECTION, AT USER-COMMAND, etc.

Hope this helps..

Regards,

Shashank

Former Member
0 Kudos

This is simple interactive Drill down list

REPORT zjmdrill NO STANDARD PAGE HEADING.

TABLES : vbak,

vbap,

vbep.

DATA : BEGIN OF i_vbak OCCURS 0,

vbeln LIKE vbak-vbeln,

erdat LIKE vbak-erdat,

vkorg LIKE vbak-vkorg,

vtweg LIKE vbak-vtweg,

spart LIKE vbak-spart,

END OF i_vbak.

DATA : BEGIN OF i_vbap OCCURS 0,

vbeln LIKE vbap-vbeln,

posnr LIKE vbap-posnr,

matnr LIKE vbap-matnr,

zmeng LIKE vbap-zmeng,

END OF i_vbap.

DATA : BEGIN OF i_vbep OCCURS 0,

vbeln LIKE vbep-vbeln,

posnr LIKE vbep-posnr,

etenr LIKE vbep-etenr,

wmeng LIKE vbep-wmeng,

bddat LIKE vbep-bddat,

banfn LIKE vbep-banfn,

END OF i_vbep.

SELECT-OPTIONS : s_vbeln FOR vbak-vbeln.

  • Start of Selection

START-OF-SELECTION.

SELECT * INTO CORRESPONDING FIELDS OF TABLE i_vbak

FROM vbak

WHERE vbeln IN s_vbeln.

IF sy-subrc NE 0.

MESSAGE e000(zjm).

ENDIF.

*End-of-Selection

END-OF-SELECTION.

SET PF-STATUS 'ZJMD'.

LOOP AT i_vbak.

FORMAT COLOR 4 INTENSIFIED ON.

WRITE : /5 i_vbak-vbeln, 16 sy-vline, 17 i_vbak-erdat,

28 sy-vline, 29 i_vbak-vkorg , 34 sy-vline, 35 i_vbak-vtweg,

40 sy-vline, 41 i_vbak-spart, 44 sy-vline.

FORMAT RESET.

HIDE i_vbak-vbeln.

ENDLOOP.

AT LINE-SELECTION.

IF sy-lsind EQ 1.

SELECT * INTO CORRESPONDING FIELDS OF TABLE i_vbap

FROM vbap

WHERE vbeln = i_vbak-vbeln.

LOOP AT i_vbap.

FORMAT COLOR 1 INTENSIFIED ON.

WRITE : /5 i_vbap-vbeln, 16 sy-vline, 17 i_vbap-posnr,

24 sy-vline, 24 i_vbap-matnr, 43 sy-vline, 44 i_vbap-zmeng.

FORMAT RESET.

HIDE i_vbap-vbeln.

ENDLOOP.

ENDIF.

IF sy-lsind EQ 2.

SELECT * INTO CORRESPONDING FIELDS OF TABLE i_vbep

FROM vbep

WHERE vbeln = i_vbap-vbeln.

LOOP AT i_vbep.

WRITE : /5 i_vbep-vbeln.

ENDLOOP.

ENDIF.

TOP-OF-PAGE.

FORMAT COLOR 1 INTENSIFIED ON.

WRITE : /5 'Items', 16 sy-vline, 17 'Date',

28 sy-vline, 29 'Org', 34 sy-vline, 35 'Dist',

40 sy-vline, 41 'Div', 44 sy-vline.

FORMAT RESET.

Former Member
0 Kudos

HI

here is a sample report

REPORT ZKISHDRILL.

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

TABLES: VBAK,VBAP,VBEP.

DATA: BEGIN OF I_VBAK OCCURS 0,

VBELN LIKE VBAK-VBELN,

ERNAM LIKE VBAK-ERNAM,

ERDAT LIKE VBAK-ERDAT,

VKORG LIKE VBAK-VKORG,

VTWEG LIKE VBAK-VTWEG,

SPART LIKE VBAK-SPART,

END OF I_VBAK.

DATA: BEGIN OF I_VBAP OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

MATNR LIKE VBAP-MATNR,

KWMENG LIKE VBAP-KWMENG,

END OF I_VBAP.

DATA: BEGIN OF I_VBEP OCCURS 0,

VBELN LIKE VBEP-VBELN,

POSNR LIKE VBEP-POSNR,

ETENR LIKE VBEP-ETENR,

WMENG LIKE VBEP-WMENG,

BDDAT LIKE VBEP-BDDAT,

BANFN LIKE VBEP-BANFN,

END OF I_VBEP.

  • SELECTION-SCREEN:

  • BEGIN OF SCREEN 500 AS WINDOW TITLE title,

*

  • PUSHBUTTON 2(20) RETURN USER-COMMAND BACK,

  • END OF SCREEN 500.

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

SELECT-OPTIONS S_VBELN FOR VBAK-VBELN MATCHCODE OBJECT VMVA OBLIGATORY.

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

AT SELECTION-SCREEN.

*IF SY-UCOMM EQ 'BACK'.

*SET USER-COMMAND 'BACK'.

*ENDIF.

SELECT SINGLE * FROM VBAK WHERE VBELN IN S_VBELN.

IF SY-SUBRC NE 0.

MESSAGE E001(ZER).

ENDIF.

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

AT LINE-SELECTION.

******************************LEVEL1

IF SY-LSIND EQ 1.

SELECT VBELN POSNR MATNR KWMENG INTO TABLE I_VBAP FROM VBAP WHERE

VBELN = I_VBAK-VBELN.

LOOP AT I_VBAP.

FORMAT COLOR 2 INTENSIFIED ON.

HIDE I_VBAP.

WRITE:/5 SY-VLINE, 6 I_VBAP-VBELN, 20 SY-VLINE, 21 I_VBAP-POSNR, 30

SY-VLINE, 31 I_VBAP-MATNR, 50 SY-VLINE, 51 I_VBAP-KWMENG,

70 SY-VLINE.

AT LAST.

ULINE /5(66).

SUM.

WRITE:/ 'TOTAL QUANTITY :', I_VBAP-KWMENG UNDER I_VBAP-KWMENG.

ENDAT.

ENDLOOP.

ENDIF.

******************************LEVEL 2

IF SY-LSIND EQ 2.

SELECT VBELN POSNR ETENR WMENG BDDAT BANFN INTO TABLE I_VBEP FROM VBEP

WHERE VBELN = I_VBAP-VBELN AND POSNR = I_VBAP-POSNR.

IF SY-SUBRC NE 0.

MESSAGE W003(ZER).

ENDIF.

LOOP AT I_VBEP.

FORMAT COLOR 2 INTENSIFIED ON.

WRITE:/5 SY-VLINE, 6 I_VBEP-VBELN, 20 SY-VLINE, 21 I_VBEP-POSNR,

30 SY-VLINE, 31 I_VBEP-ETENR, 45 SY-VLINE, 46 I_VBEP-WMENG,

60 SY-VLINE, 61 I_VBEP-BDDAT, 72 SY-VLINE, 73 I_VBEP-BANFN,

84 SY-VLINE.

AT LAST.

ULINE /5(80).

SUM.

WRITE:/ 'TOTAL ORDER QUANTITY :', I_VBEP-WMENG UNDER

I_VBEP-WMENG.

ENDAT.

ENDLOOP.

FORMAT RESET.

ENDIF.

IF SY-LSIND GT 2.

MESSAGE W002(ZER).

ENDIF.

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

START-OF-SELECTION.

  • SET PF-STATUS 'ZFUNK'.

SELECT VBELN ERNAM ERDAT VKORG VTWEG

SPART INTO TABLE I_VBAK FROM VBAK WHERE VBELN IN S_VBELN.

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

END-OF-SELECTION.

LOOP AT I_VBAK.

FORMAT COLOR 2 INTENSIFIED ON.

WRITE:/5 SY-VLINE, 6 I_VBAK-VBELN, 20 SY-VLINE, 21 I_VBAK-ERNAM, 35

SY-VLINE, 36 I_VBAK-ERDAT, 48 SY-VLINE, 49 I_VBAK-VKORG,

60 SY-VLINE, 61 I_VBAK-VTWEG, 71 SY-VLINE, 72 I_VBAK-SPART,

80 SY-VLINE.

HIDE I_VBAK.

ENDLOOP.

ULINE 5(76).

FORMAT RESET.

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

TOP-OF-PAGE.

SKIP.

ULINE 5(76).

FORMAT COLOR 1 INTENSIFIED ON.

WRITE:/5 SY-VLINE,6 'SALES NUM', 20 SY-VLINE, 21 'CREATOR', 35

SY-VLINE, 36 'CRET DATE', 48 SY-VLINE, 49 'SALES ORG',

60 SY-VLINE, 61 'SALES WG', 71 SY-VLINE, 72 'SAL DIV',

80 SY-VLINE.

ULINE /5(76).

FORMAT RESET.

TOP-OF-PAGE DURING LINE-SELECTION.

****************************************LEVEL 1

IF SY-LSIND EQ 1.

SKIP.

ULINE 5(66).

FORMAT COLOR 1 INTENSIFIED ON.

WRITE:/5 SY-VLINE,6 'SALES NUM', 20 SY-VLINE, 21 'LINE ITEM', 30

SY-VLINE, 31 'MATEIRAL NO', 50 SY-VLINE, 51 'SALES QTY', 70

SY-VLINE.

ULINE /5(66).

FORMAT RESET.

ENDIF.

****************************************LEVEL 2

IF SY-LSIND EQ 2.

SKIP.

ULINE 5(80).

FORMAT COLOR 1 INTENSIFIED ON.

WRITE:/5 SY-VLINE, 6 'SALES NO', 20 SY-VLINE, 21 'LINE NO',

30 SY-VLINE, 31 'SCHE LINE', 45 SY-VLINE, 46 'ORD QTY',

60 SY-VLINE, 61 'REQ DATE', 72 SY-VLINE, 73 'PURCH NO',

84 SY-VLINE.

ULINE /5(80).

FORMAT RESET.

ENDIF.

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

regards

kishore