Você está na página 1de 7

Example Code For Drill Down Report

REPORT

zmm_rept_purchorderkkb01 LINE-SIZE 80
LINE-COUNT 65(3)
MESSAGE-ID z_msg_class
NO STANDARD PAGE HEADING.

*------------------DECLARING THE STANDARD TABLES---------------------*


TABLES : ekko, "PURCHASE ORDER : HEADER
ekpo. "PURCHASE ORDER : ITEM
*------------------DECLARING THE INTERNAL TABLE----------------------*
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
ebelp LIKE ekpo-ebelp, "PURCHASE
werks LIKE ekpo-werks, "PLANT
matnr LIKE ekpo-matnr, "MATERIAL
matkl LIKE ekpo-matkl, "MATERIAL
END OF it_ekpo.

ORDER NUMBER
ORDER NUMBER
NUMBER
GROUP

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.

*------------------Declaring the selection screen--------------------*


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_ebelnlow)
*
*---------------------------------------------------------------------*
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_ebelnhigh)
*
*---------------------------------------------------------------------*
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.
*----------------------To attach a user interface---------------------*
SET PF-STATUS '0010'.
*---------To fetch the data for the basic list------------------------*
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.
*---------To fetch the data for the secondary list----------------------*
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.
*---------To display the data for the basic list----------------------*
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'.
*---------To display the data for the secondary list----------------------*
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'.
*---------To display the data for the secondary list----------------------*
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,
"PURCHASE ORDER NUMBER
it_ekpo-ebelp UNDER text-008,
ITEM NUMBER
it_ekpo-werks UNDER text-009,
"PLANT
it_ekpo-matnr UNDER text-010,
"MATERIAL NUMBER
it_ekpo-matkl UNDER text-011,
"MATERIAL GROUP

15 sy-vline,
30 sy-vline, "PO
45 sy-vline,
60 sy-vline,
80 sy-vline.

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,
text-003,
text-004,
text-005,
text-006,
text-007,
WRITE :/ sy-uline(80).

18
27
38
50
62
80

sy-vline,
sy-vline,
sy-vline,
sy-vline,
sy-vline,
sy-vline.

"PURCHASE ORDER NUMBER


"COMPANY CODE
"PURCHASING DOCUMENT TYPE
"VENDOR
"LANGUAGE KEY
"PAYMENT TERMS KEY

*---------------------------------------------------------------------*
*
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,
text-008,
text-009,
text-010,
text-011,

15
30
45
60
80

sy-vline,
sy-vline,
sy-vline,
sy-vline,
sy-vline.

"PURCHASE ORDER NUMBER


"PO ITEM NUMBER
"PLANT
"MATERIAL NUMBER
"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
OTHERS

= 1
= 2.

Você também pode gostar