‎2007 Mar 10 3:41 AM
‎2007 Mar 10 3:53 AM
Hi Naveen,
Please search this forum there are lot of thread related to this
aRs
‎2007 Mar 10 4:02 AM
Check this link -
http://www.sapgenie.com/abap/drill_down_reports.htm
http://www.sap-img.com/abap/difference-between-drilldown-report-and-interactive-report.htm
Regards,
Amit
Reward all helpful replies.
‎2007 Mar 10 4:05 AM
Hi,
Herewith i am sending the sample coding for the drilldown report.
Kindly go through it.
&----
*& Report YMS_DRILLDOWN *
*& *
&----
*& *
*& *
&----
REPORT YMS_rept_purchorderkkb01 LINE-SIZE 80
LINE-COUNT 65(3)
MESSAGE-ID z_msg_class
NO STANDARD PAGE HEADING.
--
TABLES : ekko, "PURCHASE ORDER : HEADER
ekpo. "PURCHASE ORDER : ITEM
--
DATA : BEGIN OF it_ekko OCCURS 2,
ebeln LIKE ekko-ebeln, "PURCHASE ORDER NUMBER
bukrs LIKE ekko-bukrs, "COMPANY CODE
bsart LIKE ekko-bsart, "PURCHASING DOCUMENT TYPE
lifnr LIKE ekko-lifnr, "VENDOR
spras LIKE ekko-spras, "LANGUAGE KEY
zterm LIKE ekko-zterm, "PAYMENT TERMS KEY
end of it_ekko.
DATA : BEGIN OF it_ekpo OCCURS 2,
ebeln LIKE ekpo-ebeln, "PURCHASE ORDER NUMBER
ebelp LIKE ekpo-ebelp, "PURCHASE ORDER NUMBER
werks LIKE ekpo-werks, "PLANT
matnr LIKE ekpo-matnr, "MATERIAL NUMBER
matkl LIKE ekpo-matkl, "MATERIAL GROUP
END OF it_ekpo.
DATA: it_ebeln LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.
*DATA: it_ebeln_high LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.
DATA: p_ebeln TYPE i.
--
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_ebeln FOR ekko-ebeln.
PARAMETER : p_limit TYPE i.
SELECTION-SCREEN END OF BLOCK blk1.
*INCLUDE z_incl_purorderkkb01_sub_f01.
----
Validation for number of records to be printed *
----
*AT SELECTION-SCREEN ON p_limit.
IF p_limit IS INITIAL.
MESSAGE e011.
ENDIF.
IF p_limit GT sy-linct.
MESSAGE e010.
ENDIF.
----
Search help for purchase document number (s_ebeln-low) *
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-low.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = s_ebeln-low
IMPORTING
output = s_ebeln-low.
perform form_search_help.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 2.
LEAVE TO SCREEN 1000.
ENDCASE.
ELSE.
LOOP AT it_ebeln.
IF sy-tabix = p_ebeln.
s_ebeln-low = it_ebeln.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
----
Search help for purchase document number (s_ebeln-high) *
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-high.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = s_ebeln-high
IMPORTING
output = s_ebeln-high.
perform form_search_help.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 2.
LEAVE TO SCREEN 1000.
ENDCASE.
ELSE.
LOOP AT it_ebeln.
IF sy-tabix = p_ebeln.
s_ebeln-high = it_ebeln.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
----
Start-of-selection event *
----
START-OF-SELECTION.
--
SET PF-STATUS '0010'.
--
SELECT ebeln "PURCHASE ORDER NUMBER
bukrs "COMPANY CODE
bsart "PURCHASING DOCUMENT TYPE
lifnr "VENDOR
spras "LANGUAGE KEY
zterm "PAYMENT TERMS KEY
up to p_limit rows
into table it_ekko from ekko
where ebeln in s_ebeln.
REFRESH it_ekpo.
--
if it_ekpo is initial.
SELECT ebeln "PURCHASE ORDER NUMBER
ebelp "PURCHASING DOCUMENT TYPE
werks "PLANT
matnr "MATERIAL NUMBER
matkl "MATERIAL GROUP
FROM ekpo INTO TABLE it_ekpo for all entries in it_ekko
WHERE ebeln EQ it_ekko-ebeln.
endif.
----
End-of-selection event *
----
END-OF-SELECTION.
--
format color 4 intensified off.
LOOP AT it_ekko.
WRITE 😕 sy-vline, it_ekko-ebeln UNDER text-002, 18 sy-vline,
"PURCHASE ORDER NUMBER
it_ekko-bukrs UNDER text-003, 27 sy-vline,
"COMPANY CODE
it_ekko-bsart UNDER text-004, 38 sy-vline,
"PURCHASING DOCUMENT TYPE
it_ekko-lifnr UNDER text-005, 50 sy-vline,
"VENDOR
it_ekko-spras UNDER text-006, 62 sy-vline,
"LANGUAGE KEY
it_ekko-zterm UNDER text-007, 80 sy-vline.
"PAYMENT TERMS KEY
hide : it_ekko-ebeln.
ENDLOOP.
WRITE 😕 sy-uline(80).
----
To generate the detailed lists *
----
AT LINE-SELECTION.
CASE sy-lsind.
WHEN 1.
SET PF-STATUS '0011'.
--
WINDOW STARTING AT 10 10
ENDING AT 90 30.
format color 5 intensified off.
LOOP AT it_ekpo where ebeln = it_ekko-ebeln .
WRITE 😕 sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline,
"PURCHASE ORDER NUMBER
it_ekpo-ebelp UNDER text-008, 30 sy-vline,
"PO ITEM NUMBER
it_ekpo-werks UNDER text-009, 45 sy-vline,
"PLANT
it_ekpo-matnr UNDER text-010, 60 sy-vline,
"MATERIAL NUMBER
it_ekpo-matkl UNDER text-011, 80 sy-vline.
"MATERIAL GROUP
ENDLOOP.
WRITE 😕 sy-uline(80).
ENDCASE.
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC' OR 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
----
At user-command event *
----
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'SELE' OR 'LIST1'.
IF sy-lsind = 1.
SET PF-STATUS '0011'.
--
WINDOW STARTING AT 10 10
ENDING AT 90 30.
format color 5 intensified off.
LOOP AT it_ekpo where ebeln = it_ekko-ebeln .
WRITE 😕 sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline, "PURCHASE ORDER NUMBER
it_ekpo-ebelp UNDER text-008, 30 sy-vline, "PO ITEM NUMBER
it_ekpo-werks UNDER text-009, 45 sy-vline, "PLANT
it_ekpo-matnr UNDER text-010, 60 sy-vline, "MATERIAL NUMBER
it_ekpo-matkl UNDER text-011, 80 sy-vline. "MATERIAL GROUP
ENDLOOP.
WRITE 😕 sy-uline(80).
endif.
ENDCASE.
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC' OR 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
----
Top-of-page for basic list *
----
TOP-OF-PAGE.
format color 3 intensified off.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline,
03 sy-repid,
60 text-015,
sy-uname,
80 sy-vline.
WRITE 😕 sy-vline, 03 sy-datum,
35 text-012,
60 text-014,
sy-pagno,
80 sy-vline.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline, text-002, 18 sy-vline, "PURCHASE ORDER NUMBER
text-003, 27 sy-vline, "COMPANY CODE
text-004, 38 sy-vline, "PURCHASING DOCUMENT TYPE
text-005, 50 sy-vline, "VENDOR
text-006, 62 sy-vline, "LANGUAGE KEY
text-007, 80 sy-vline. "PAYMENT TERMS KEY
WRITE 😕 sy-uline(80).
----
Top-of-page for secondary list *
----
TOP-OF-PAGE DURING LINE-SELECTION.
format color 2 intensified off.
WINDOW STARTING AT 10 10
ENDING AT 90 30.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline,
03 sy-repid,
60 text-015,
sy-uname,
80 sy-vline.
WRITE 😕 sy-vline,
03 sy-datum,
35 text-013,
60 text-014,
sy-pagno,
80 sy-vline.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline, text-014, 15 sy-vline, "PURCHASE ORDER NUMBER
text-008, 30 sy-vline, "PO ITEM NUMBER
text-009, 45 sy-vline, "PLANT
text-010, 60 sy-vline, "MATERIAL NUMBER
text-011, 80 sy-vline. "MATERIAL GROUP
WRITE 😕 sy-uline(80).
----
End-of-page event *
----
END-OF-PAGE.
WRITE 😕 sy-vline,
03 text-016,
p_limit,
60 text-014,
sy-pagno,
80 sy-vline.
write:/ sy-uline(80).
INCLUDE Z_INCLUDE_PURCHORDERKKB01.
form form_search_help .
REFRESH it_ebeln.
CLEAR it_ebeln.
CLEAR P_ebeln.
SELECT ebeln FROM ekko INTO TABLE it_ebeln.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 21
endpos_row = 35
startpos_col = 12
startpos_row = 1
titletext = text-012
IMPORTING
choise = P_ebeln
TABLES
valuetab = it_ebeln
EXCEPTIONS
break_off = 1
OTHERS = 2.
Thanks,
Shankar
‎2007 Mar 10 4:11 AM
HI,
The Drilldown reports are
The lines of basic list of a drilldown report when clicked, will take the user to the corresponding (standard) object's display.
For eg: Suppose your report's primary component is purchase requisition, (assume you are printing PR details), and the basic list displays details of many PRs.
Eg: when clicked on a particular line of the PR basic list, it takes you to std t-code me53 (display of purchase requisition). This is the 'Drill-down' functionality.
For this, in the at-line selection of your program, as per the above ex: you'll set the parameter ID of PR number BAN (that you can get from Data element) in memory (using set parameter id) and then calling the corresponding transaction (usually skipping initial screen of the std t-code).
Likewise, if it's Material Number (Matnr), you'll be displaying MM03 transaction w.r.t. the line's matnr.
&----
*& Report YMS_DRILLDOWN *
*& *
&----
*& *
*& *
&----
REPORT YMS_rept_purchorderkkb01 LINE-SIZE 80
LINE-COUNT 65(3)
MESSAGE-ID z_msg_class
NO STANDARD PAGE HEADING.
--
TABLES : ekko, "PURCHASE ORDER : HEADER
ekpo. "PURCHASE ORDER : ITEM
--
DATA : BEGIN OF it_ekko OCCURS 2,
ebeln LIKE ekko-ebeln, "PURCHASE ORDER NUMBER
bukrs LIKE ekko-bukrs, "COMPANY CODE
bsart LIKE ekko-bsart, "PURCHASING DOCUMENT TYPE
lifnr LIKE ekko-lifnr, "VENDOR
spras LIKE ekko-spras, "LANGUAGE KEY
zterm LIKE ekko-zterm, "PAYMENT TERMS KEY
end of it_ekko.
DATA : BEGIN OF it_ekpo OCCURS 2,
ebeln LIKE ekpo-ebeln, "PURCHASE ORDER NUMBER
ebelp LIKE ekpo-ebelp, "PURCHASE ORDER NUMBER
werks LIKE ekpo-werks, "PLANT
matnr LIKE ekpo-matnr, "MATERIAL NUMBER
matkl LIKE ekpo-matkl, "MATERIAL GROUP
END OF it_ekpo.
DATA: it_ebeln LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.
*DATA: it_ebeln_high LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.
DATA: p_ebeln TYPE i.
--
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_ebeln FOR ekko-ebeln.
PARAMETER : p_limit TYPE i.
SELECTION-SCREEN END OF BLOCK blk1.
*INCLUDE z_incl_purorderkkb01_sub_f01.
----
Validation for number of records to be printed *
----
*AT SELECTION-SCREEN ON p_limit.
IF p_limit IS INITIAL.
MESSAGE e011.
ENDIF.
IF p_limit GT sy-linct.
MESSAGE e010.
ENDIF.
----
Search help for purchase document number (s_ebeln-low) *
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-low.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = s_ebeln-low
IMPORTING
output = s_ebeln-low.
perform form_search_help.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 2.
LEAVE TO SCREEN 1000.
ENDCASE.
ELSE.
LOOP AT it_ebeln.
IF sy-tabix = p_ebeln.
s_ebeln-low = it_ebeln.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
----
Search help for purchase document number (s_ebeln-high) *
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-high.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = s_ebeln-high
IMPORTING
output = s_ebeln-high.
perform form_search_help.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 2.
LEAVE TO SCREEN 1000.
ENDCASE.
ELSE.
LOOP AT it_ebeln.
IF sy-tabix = p_ebeln.
s_ebeln-high = it_ebeln.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
----
Start-of-selection event *
----
START-OF-SELECTION.
--
SET PF-STATUS '0010'.
--
SELECT ebeln "PURCHASE ORDER NUMBER
bukrs "COMPANY CODE
bsart "PURCHASING DOCUMENT TYPE
lifnr "VENDOR
spras "LANGUAGE KEY
zterm "PAYMENT TERMS KEY
up to p_limit rows
into table it_ekko from ekko
where ebeln in s_ebeln.
REFRESH it_ekpo.
--
if it_ekpo is initial.
SELECT ebeln "PURCHASE ORDER NUMBER
ebelp "PURCHASING DOCUMENT TYPE
werks "PLANT
matnr "MATERIAL NUMBER
matkl "MATERIAL GROUP
FROM ekpo INTO TABLE it_ekpo for all entries in it_ekko
WHERE ebeln EQ it_ekko-ebeln.
endif.
----
End-of-selection event *
----
END-OF-SELECTION.
--
format color 4 intensified off.
LOOP AT it_ekko.
WRITE 😕 sy-vline, it_ekko-ebeln UNDER text-002, 18 sy-vline,
"PURCHASE ORDER NUMBER
it_ekko-bukrs UNDER text-003, 27 sy-vline,
"COMPANY CODE
it_ekko-bsart UNDER text-004, 38 sy-vline,
"PURCHASING DOCUMENT TYPE
it_ekko-lifnr UNDER text-005, 50 sy-vline,
"VENDOR
it_ekko-spras UNDER text-006, 62 sy-vline,
"LANGUAGE KEY
it_ekko-zterm UNDER text-007, 80 sy-vline.
"PAYMENT TERMS KEY
hide : it_ekko-ebeln.
ENDLOOP.
WRITE 😕 sy-uline(80).
----
To generate the detailed lists *
----
AT LINE-SELECTION.
CASE sy-lsind.
WHEN 1.
SET PF-STATUS '0011'.
--
WINDOW STARTING AT 10 10
ENDING AT 90 30.
format color 5 intensified off.
LOOP AT it_ekpo where ebeln = it_ekko-ebeln .
WRITE 😕 sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline,
"PURCHASE ORDER NUMBER
it_ekpo-ebelp UNDER text-008, 30 sy-vline,
"PO ITEM NUMBER
it_ekpo-werks UNDER text-009, 45 sy-vline,
"PLANT
it_ekpo-matnr UNDER text-010, 60 sy-vline,
"MATERIAL NUMBER
it_ekpo-matkl UNDER text-011, 80 sy-vline.
"MATERIAL GROUP
ENDLOOP.
WRITE 😕 sy-uline(80).
ENDCASE.
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC' OR 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
----
At user-command event *
----
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'SELE' OR 'LIST1'.
IF sy-lsind = 1.
SET PF-STATUS '0011'.
--
WINDOW STARTING AT 10 10
ENDING AT 90 30.
format color 5 intensified off.
LOOP AT it_ekpo where ebeln = it_ekko-ebeln .
WRITE 😕 sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline, "PURCHASE ORDER NUMBER
it_ekpo-ebelp UNDER text-008, 30 sy-vline, "PO ITEM NUMBER
it_ekpo-werks UNDER text-009, 45 sy-vline, "PLANT
it_ekpo-matnr UNDER text-010, 60 sy-vline, "MATERIAL NUMBER
it_ekpo-matkl UNDER text-011, 80 sy-vline. "MATERIAL GROUP
ENDLOOP.
WRITE 😕 sy-uline(80).
endif.
ENDCASE.
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC' OR 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
----
Top-of-page for basic list *
----
TOP-OF-PAGE.
format color 3 intensified off.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline,
03 sy-repid,
60 text-015,
sy-uname,
80 sy-vline.
WRITE 😕 sy-vline, 03 sy-datum,
35 text-012,
60 text-014,
sy-pagno,
80 sy-vline.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline, text-002, 18 sy-vline, "PURCHASE ORDER NUMBER
text-003, 27 sy-vline, "COMPANY CODE
text-004, 38 sy-vline, "PURCHASING DOCUMENT TYPE
text-005, 50 sy-vline, "VENDOR
text-006, 62 sy-vline, "LANGUAGE KEY
text-007, 80 sy-vline. "PAYMENT TERMS KEY
WRITE 😕 sy-uline(80).
----
Top-of-page for secondary list *
----
TOP-OF-PAGE DURING LINE-SELECTION.
format color 2 intensified off.
WINDOW STARTING AT 10 10
ENDING AT 90 30.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline,
03 sy-repid,
60 text-015,
sy-uname,
80 sy-vline.
WRITE 😕 sy-vline,
03 sy-datum,
35 text-013,
60 text-014,
sy-pagno,
80 sy-vline.
WRITE 😕 sy-uline(80).
WRITE 😕 sy-vline, text-014, 15 sy-vline, "PURCHASE ORDER NUMBER
text-008, 30 sy-vline, "PO ITEM NUMBER
text-009, 45 sy-vline, "PLANT
text-010, 60 sy-vline, "MATERIAL NUMBER
text-011, 80 sy-vline. "MATERIAL GROUP
WRITE 😕 sy-uline(80).
----
End-of-page event *
----
END-OF-PAGE.
WRITE 😕 sy-vline,
03 text-016,
p_limit,
60 text-014,
sy-pagno,
80 sy-vline.
write:/ sy-uline(80).
*INCLUDE Z_INCLUDE_PURCHORDERKKB01.
form form_search_help .
REFRESH it_ebeln.
CLEAR it_ebeln.
CLEAR P_ebeln.
SELECT ebeln FROM ekko INTO TABLE it_ebeln.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
endpos_col = 21
endpos_row = 35
startpos_col = 12
startpos_row = 1
titletext = text-012
IMPORTING
choise = P_ebeln
TABLES
valuetab = it_ebeln
EXCEPTIONS
break_off = 1
OTHERS = 2.
endform.
Thanks,
Shankar