Application Development and Automation 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: 
Read only

SUBROUTINES

Former Member
0 Likes
1,479

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

1 ACCEPTED SOLUTION
Read only

VXLozano
Active Contributor
0 Likes
1,449

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

11 REPLIES 11
Read only

VXLozano
Active Contributor
0 Likes
1,450

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?

Read only

Former Member
0 Likes
1,449

hi,

U can create the subroutines directly from ur program.

Read only

0 Likes
1,449

Hi,

How can i create subroutines directly from the program

Read only

0 Likes
1,449

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

Read only

0 Likes
1,449

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.

Read only

Former Member
0 Likes
1,449

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>

Read only

0 Likes
1,449

sorry to miss 1 more subroutine defined in SAP i.e Include Programs

Read only

former_member189059
Active Contributor
0 Likes
1,449

the FORM code that is in your program IS your subroutine

Read only

Former Member
0 Likes
1,449

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_something

And 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

Read only

Former Member
0 Likes
1,449

&----


*& 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....

Read only

Former Member
0 Likes
1,449

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