‎2008 May 13 1:51 PM
Hi dear,
I have a requirement of interactive report.The basic list of a report will
go to the secondary list by just clicking on a push button on a menubar.(anyone could give me the suggestion with coding would be helpful)
‎2008 May 13 1:55 PM
Hi,
Check this program:
Program Name: Z_SLN_INT_REP
-
Change Log *
Date :
Author :
Description :
Transport No:
-
Tables *
-
TABLES: vbak,
vbap.
-
Constants *
-
CONSTANTS: gc_or TYPE vbak-auart VALUE 'OR'.
-
Variables *
-
*Data: xxxx like yyyy.
-
Structures *
-
TYPES : BEGIN OF gt_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
ernam TYPE vbak-ernam,
auart TYPE vbak-auart,
netwr TYPE vbak-netwr,
waerk TYPE vbak-waerk,
END OF gt_vbak,
BEGIN OF gt_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
netwr TYPE vbap-netwr,
END OF gt_vbap,
BEGIN OF gt_fcode,
code(4) TYPE c,
END OF gt_fcode.
-
Internal Tables *
-
DATA : git_vbak TYPE TABLE OF gt_vbak,
git_vbap TYPE TABLE OF gt_vbap,
git_fcode TYPE TABLE OF gt_fcode.
DATA : wa_vbak TYPE gt_vbak,
wa_vbap TYPE gt_vbap,
wa_fcode TYPE gt_fcode.
-
Selection Screen *
-
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln OBLIGATORY.
PARAMETERS: p_auart LIKE vbak-auart.
SELECTION-SCREEN END OF BLOCK b1.
-
Initialization *
-
INITIALIZATION.
p_auart = gc_or.
-
At Selection Screen Output *
-
AT SELECTION-SCREEN OUTPUT.
-
At Selection Screen *
-
AT SELECTION-SCREEN.
PERFORM validate_entries.
-
Start Of Selection *
-
START-OF-SELECTION.
SET TITLEBAR 'AAA'.
SET PF-STATUS 'ABC'.
PERFORM get_sales_orders.
PERFORM get_items.
-
End Of Selection *
-
END-OF-SELECTION.
PERFORM display_output.
-
Top Of Page *
-
TOP-OF-PAGE.
PERFORM report_header.
-
Top Of Page DURING LINE SELECTION *
-
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM secondary_list_header.
-
End Of Page *
-
END-OF-PAGE.
-
At Line Selection *
-
AT LINE-SELECTION.
PERFORM get_items_list.
-
At User Command *
-
AT USER-COMMAND.
PERFORM get_items_user_command.
&----
*& Form validate_entries
&----
Validate Entries on Selection Screen
-
FORM validate_entries .
DATA : lv_vbeln TYPE vbak-vbeln.
SELECT SINGLE vbeln
FROM vbak
INTO lv_vbeln
WHERE vbeln IN s_vbeln.
IF sy-subrc NE 0.
SET CURSOR FIELD 'S_VBAK-VBELN'.
MESSAGE e000 WITH 'Invalid Sales Orders'(002).
ENDIF.
ENDFORM. " validate_entries
&----
*& Form get_sales_orders
&----
List of Sales Orders
-
FORM get_sales_orders .
CLEAR : git_vbak[].
SELECT vbeln
erdat
ernam
auart
netwr
waerk
FROM vbak
INTO TABLE git_vbak
WHERE vbeln IN s_vbeln
AND auart EQ p_auart.
IF sy-subrc EQ 0.
SORT git_vbak BY vbeln.
ENDIF.
ENDFORM. " get_sales_orders
&----
*& Form display_output
&----
Display List of Sales Orders
-
FORM display_output .
LOOP AT git_vbak INTO wa_vbak.
WRITE :/1(10) wa_vbak-vbeln HOTSPOT ON,
(10) wa_vbak-erdat,
(10) wa_vbak-ernam,
(4) wa_vbak-auart,
(20) wa_vbak-netwr,
(5) wa_vbak-waerk.
HIDE wa_vbak-vbeln.
CLEAR wa_vbak.
ENDLOOP.
ENDFORM. " display_output
&----
*& Form report_header
&----
text
-
FORM report_header .
WRITE :/1(10) 'SalesOrder'(003),
(10) 'Crt. Date'(004),
(10) 'SalesOrder'(005),
(4) 'OrdT'(006),
(20) 'Amount'(007),
(5) 'Curr'(008).
ENDFORM. " report_header
&----
*& Form get_items
&----
Get Line items
-
FORM get_items .
IF NOT git_vbak[] IS INITIAL.
CLEAR : git_vbap[].
SELECT vbeln
posnr
matnr
netwr
FROM vbap
INTO TABLE git_vbap
FOR ALL ENTRIES IN git_vbak
WHERE vbeln EQ git_vbak-vbeln.
IF sy-subrc EQ 0.
SORT git_vbap BY vbeln posnr.
ENDIF.
ENDIF.
ENDFORM. " get_items
&----
*& Form secondary_list_header
&----
Secondary List Header
-
FORM secondary_list_header .
WRITE 😕 'This is my secondary list:'(009), sy-lsind.
ENDFORM. " secondary_list_header
&----
*& Form get_items_list
&----
text
-
FORM get_items_list .
DATA: lv_fname(14) TYPE c VALUE 'WA_VBAK-VBELN',
lv_value TYPE vbak-vbeln.
GET CURSOR FIELD lv_fname VALUE lv_value.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_value
IMPORTING
output = lv_value.
WRITE 😕 ' I AMIN AT SELECTION-SCREEN'.
LOOP AT git_vbap INTO wa_vbap
WHERE vbeln EQ lv_value.
WRITE :/1(10) wa_vbap-vbeln,
(10) wa_vbap-posnr,
(18) wa_vbap-matnr,
(20) wa_vbap-netwr.
CLEAR : wa_vbap.
ENDLOOP.
ENDFORM. " get_items_list
&----
*& Form get_items_user_command
&----
text
-
FORM get_items_user_command .
WRITE 😕 ' I AMIN USER-COMMAND'.
CASE sy-ucomm.
WHEN 'DISP' OR 'DISM'.
LOOP AT git_vbap INTO wa_vbap
WHERE vbeln EQ wa_vbak-vbeln.
WRITE :/1(10) wa_vbap-vbeln,
(10) wa_vbap-posnr,
(18) wa_vbap-matnr,
(20) wa_vbap-netwr.
ENDLOOP.
CLEAR : git_fcode[],
wa_fcode.
wa_fcode-code = 'DISP'.
APPEND wa_fcode TO git_fcode.
wa_fcode-code = 'DISM'.
APPEND wa_fcode TO git_fcode.
ENDCASE.
SET PF-STATUS 'ABC' EXCLUDING git_fcode.
SET TITLEBAR 'AAA' WITH wa_vbak-vbeln.
ENDFORM. " get_items_user_command
Regards,
Shiva
‎2008 May 15 7:54 AM
Hi Debasish,
You can easily implement a button in your interactive report using these statements:
INCLUDE <list>. "ABAP includes, including an appropriate ICON of your choice
SELECTION-SCREEN PUSHBUTTON /1(20) but1 USER-COMMAND docu.
INITIALIZATION.
but1 = icon_display. "this is your selected ICON from the above INCLUDE
but1+4 = 'Secondary List'. "your text
...
...
AT SELECTION-SCREEN.
IF SY-UCOMM = 'DOCU'.
PERFORM display_second_list.
ENDIF.
....
.....Good luck,
Heinz