2007 Jul 17 12:02 PM
Hi,
This is my program.
REPORT ZAC_TAB18.
T Y P E S
TYPES:
BEGIN OF TYVBAK,
VBELN TYPE VBAK-VBELN,
AUART TYPE VBAK-AUART,
AUDAT TYPE VBAK-AUDAT,
KUNNR TYPE VBAK-KUNNR,
NETWR TYPE VBAK-NETWR,
END OF TYVBAK.
D A T A D E C L A R A T I O N S
DATA:
STVBAK TYPE TYVBAK,
ITVBAK TYPE TABLE OF TYVBAK.
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-001.
SELECT-OPTIONS:
SKUNNR FOR STVBAK-KUNNR.
SELECTION-SCREEN END OF BLOCK B1.
I N I T I A L I Z A T I O N
INITIALIZATION.
FILLING SELECT OPTIONS WITH DEFAULTS
SKUNNR-SIGN = 'I'.
SKUNNR-OPTION = 'BT'.
SKUNNR-LOW = '1'.
SKUNNR-HIGH = '4000000'.
APPEND SKUNNR.
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
PERFORM GETDATA.
&----
*& Form GETDATA
&----
text
----
FORM GETDATA.
SELECT VBELN "SALES DOCUMENT NUMBER
AUART "DOCUMENT TYPE
AUDAT "SALES DOCUMENT DATE
KUNNR "SOLD TO PARTY
NETWR "NETWORTH
FROM VBAK
INTO TABLE ITVBAK
WHERE KUNNR IN SKUNNR.
IF SY-SUBRC EQ 0.
SORT ITVBAK BY KUNNR VBELN.
PERFORM DISPLAY.
ENDIF.
ENDFORM. "GETDATA
&----
*& Form display
&----
text
----
FORM DISPLAY.
LOOP AT ITVBAK INTO STVBAK.
WRITE:/1 STVBAK-VBELN,12 STVBAK-AUART,18 STVBAK-AUDAT,30 STVBAK-NETWR.
ENDLOOP.
ENDFORM. "display
I didnt create the subroutines for Getdata and display, but stillmy program is accepting the subroutines.
Can i create subroutines directly from my program or shall i go to se38 and write the subroutine.
Plz tell me the code in the subroutine.
Thanks
2007 Jul 17 12:05 PM
PERFORM -> calls the subroutine
FORM
...
ENDFORM -> declares and contains the code of the subroutine.
Your copied code HAS those subroutines and their calls... what's the problem?
Hi,
This is my program.
REPORT ZAC_TAB18.
T Y P E S
TYPES:
BEGIN OF TYVBAK,
VBELN TYPE VBAK-VBELN,
AUART TYPE VBAK-AUART,
AUDAT TYPE VBAK-AUDAT,
KUNNR TYPE VBAK-KUNNR,
NETWR TYPE VBAK-NETWR,
END OF TYVBAK.
D A T A D E C L A R A T I O N S
DATA:
STVBAK TYPE TYVBAK,
ITVBAK TYPE TABLE OF TYVBAK.
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-001.
SELECT-OPTIONS:
SKUNNR FOR STVBAK-KUNNR.
SELECTION-SCREEN END OF BLOCK B1.
I N I T I A L I Z A T I O N
INITIALIZATION.
FILLING SELECT OPTIONS WITH DEFAULTS
SKUNNR-SIGN = 'I'.
SKUNNR-OPTION = 'BT'.
SKUNNR-LOW = '1'.
SKUNNR-HIGH = '4000000'.
APPEND SKUNNR.
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
PERFORM GETDATA.
&----
*& Form GETDATA
&----
text
----
FORM GETDATA.
SELECT VBELN "SALES DOCUMENT NUMBER
AUART "DOCUMENT TYPE
AUDAT "SALES DOCUMENT DATE
KUNNR "SOLD TO PARTY
NETWR "NETWORTH
FROM VBAK
INTO TABLE ITVBAK
WHERE KUNNR IN SKUNNR.
IF SY-SUBRC EQ 0.
SORT ITVBAK BY KUNNR VBELN.
PERFORM DISPLAY.
ENDIF.
ENDFORM. "GETDATA
&----
*& Form display
&----
text
----
FORM DISPLAY.
LOOP AT ITVBAK INTO STVBAK.
WRITE:/1 STVBAK-VBELN,12 STVBAK-AUART,18 STVBAK-AUDAT,30 STVBAK-NETWR.
ENDLOOP.
ENDFORM. "display
I didnt create the subroutines for Getdata and display, but stillmy program is accepting the subroutines.
Can i create subroutines directly from my program or shall i go to se38 and write the subroutine.
Plz tell me the code in the subroutine.
Thanks
2007 Jul 17 12:05 PM
PERFORM -> calls the subroutine
FORM
...
ENDFORM -> declares and contains the code of the subroutine.
Your copied code HAS those subroutines and their calls... what's the problem?
2007 Jul 17 12:06 PM
2007 Jul 17 12:13 PM
2007 Jul 17 12:27 PM
just write :
Perform <b>YOUR_ROUTINE_NAME</b> using par1 par2.
Double Click on <b>YOUR_ROUTINE_NAME</b> and u'll be given a blank routine definition with
FORM YOUR_ROUTINE_NAME using p_par1 p_par2.
ENDFORM.
inside which u can write ur own code..
Reward if useful
Regards
Prax
2007 Jul 17 12:40 PM
simple example.. put this in your code
form my_sub_routine.
write:/ 'This is in a sub-routine'.
endform.
to call it use the following
perform my_sub_routine.
2007 Jul 17 12:07 PM
hi,
according to me what you are saying is conflicting you have already defined subroutines as
1. PERFORM GETDATA..
2. PERFORM DISPLAY.
in SAP subroutines are
1. Perform form
2. Function Module
3. Macros which is now Obselete
that is y Your program are working
<b>see i am highlighting your subroutines have a look:</b>
T Y P E S
TYPES:
BEGIN OF TYVBAK,
VBELN TYPE VBAK-VBELN,
AUART TYPE VBAK-AUART,
AUDAT TYPE VBAK-AUDAT,
KUNNR TYPE VBAK-KUNNR,
NETWR TYPE VBAK-NETWR,
END OF TYVBAK.
D A T A D E C L A R A T I O N S
DATA:
STVBAK TYPE TYVBAK,
ITVBAK TYPE TABLE OF TYVBAK.
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-001.
SELECT-OPTIONS:
SKUNNR FOR STVBAK-KUNNR.
SELECTION-SCREEN END OF BLOCK B1.
I N I T I A L I Z A T I O N
INITIALIZATION.
FILLING SELECT OPTIONS WITH DEFAULTS
SKUNNR-SIGN = 'I'.
SKUNNR-OPTION = 'BT'.
SKUNNR-LOW = '1'.
SKUNNR-HIGH = '4000000'.
APPEND SKUNNR.
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
<b>PERFORM GETDATA.</b>
&----
*& Form GETDATA
&----
text
----
FORM GETDATA.
SELECT VBELN "SALES DOCUMENT NUMBER
AUART "DOCUMENT TYPE
AUDAT "SALES DOCUMENT DATE
KUNNR "SOLD TO PARTY
NETWR "NETWORTH
FROM VBAK
INTO TABLE ITVBAK
WHERE KUNNR IN SKUNNR.
IF SY-SUBRC EQ 0.
SORT ITVBAK BY KUNNR VBELN.
<b>PERFORM DISPLAY.</b>
ENDIF.
ENDFORM. "GETDATA
&----
*& Form display
&----
text
----
FORM DISPLAY.
LOOP AT ITVBAK INTO STVBAK.
WRITE:/1 STVBAK-VBELN,12 STVBAK-AUART,18 STVBAK-AUDAT,30 STVBAK-NETWR.
ENDLOOP.
ENDFORM.
<b></b>
2007 Jul 17 12:09 PM
sorry to miss 1 more subroutine defined in SAP i.e Include Programs
2007 Jul 17 12:07 PM
2007 Jul 17 12:08 PM
I'm not sure if I understand your question correctly, but the easiest and most convenient way to create subroutines is by forward navigation when you type in SE38 or SE80:
PERFORM do_somethingAnd then doubleclick on "do_something". It will ask you if it should create this subroutine for you and where (if you have includes). Just confirm and there you are.
Hope that helps
Frank
2007 Jul 17 12:09 PM
&----
*& Form GETDATA
&----
text
----
<b>FORM GETDATA.
SELECT VBELN "SALES DOCUMENT NUMBER
AUART "DOCUMENT TYPE
AUDAT "SALES DOCUMENT DATE
KUNNR "SOLD TO PARTY
NETWR "NETWORTH
FROM VBAK
INTO TABLE ITVBAK
WHERE KUNNR IN SKUNNR.
IF SY-SUBRC EQ 0.
SORT ITVBAK BY KUNNR VBELN.
PERFORM DISPLAY.
ENDIF.
ENDFORM. "GETDATA</b>
&----
*& Form display
&----
text
----
<b>FORM DISPLAY.
LOOP AT ITVBAK INTO STVBAK.
WRITE:/1 STVBAK-VBELN,12 STVBAK-AUART,18 STVBAK-AUDAT,30 STVBAK-NETWR.
ENDLOOP.
ENDFORM. "display
</b>
These are the sub routines... in ur program....
2007 Jul 17 12:51 PM
Hi rams,
Use the '<b>Pattern</b>' push button to call subroutine. But bofore this make sure your subroutine is defined. Or you can simply write <b>perform disp_data.</b> and double click on <u>'disp_da</u>ta' it will create the form definition at end of the program.
Dont forget to Reward points.
All the very best
Sreenivasa Sarma .k
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |