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

Calling Another Program

Former Member
0 Likes
1,371

Hi Guys & Dolls

I have 2 programs (Program A and Program B)

I am calling Program B from Program A via the submit command.

Is there a system field that I can interrogate within Program B that tells me that the program has actually been called externally i.e. via the submit command; if not how can I pass parameters between the two to get what I want.

A very small example would be helpful.

Many thanks in advance.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,271

WHY ARE NOT YOU USING

EXPORT ITAB TO MEMORY ID 'PID'.

FOR 1 ST PROG AND

IMPORT ITAB FROM MEMORY ID 'PID'.

TO GET THE VALUE FROM 1 TO 2.

REGARDS

SHIBA DUTTA

11 REPLIES 11
Read only

Former Member
Read only

Former Member
0 Likes
1,272

WHY ARE NOT YOU USING

EXPORT ITAB TO MEMORY ID 'PID'.

FOR 1 ST PROG AND

IMPORT ITAB FROM MEMORY ID 'PID'.

TO GET THE VALUE FROM 1 TO 2.

REGARDS

SHIBA DUTTA

Read only

Former Member
0 Likes
1,271

Hi Raj,

Here parameters means selection-screen parameters??

you pass them using WITH addition.

can you explain your requirement in detail..

Praneet

Read only

0 Likes
1,271

Hi

When I talk about parameters I'm talking in the context of the actual call

So its submit <program name>

with external_call.

so its the "With" statement attachment I'm refereing to.

Read only

0 Likes
1,271

Hi,

Just like the below mentioned you can supply values ( Selection screen) to B program From A program.

SUBMIT Bprogram

WITH dd_xxx in s_vbeln

WITH dd_xxx = p_vkorg

WITH p_xxx = p_month

WITH p_xxx = p_year

WITH p_dateto = sy-datum

AND RETURN.

ENDIF.

If you want any other values to share in between these programs you should use EXPORT and IMPORT statements accordingly..

Hope this helps.

Regards,

Praneet.

Read only

Former Member
0 Likes
1,271

Hi,

SUBMIT rep.

Additions

1. ... LINE-SIZE col

2. ... LINE-COUNT lin

3. ... TO SAP-SPOOL

4. ... VIA SELECTION-SCREEN

5. ... AND RETURN

6. ... EXPORTING LIST TO MEMORY

7. ... USER user VIA JOB job NUMBER n

8. ... Various additions for parameter transfer to rep

9. ... USING SELECTION-SETS OF PROGRAM prog

Effect

Calls the report rep . Leaves the active program and starts the new report rep .

Addition 1

... LINE-SIZE col

Effect

Prints the report with the line width col .

Addition 2

... LINE-COUNT lin

Effect

Prints the report with lin lines (per page).

Addition 4

... VIA SELECTION-SCREEN

Effect

Displays the selection screen for the user. In this case, the selection screen is redisplayed after return from the report list display - the user's entries are retained.

Addition 5

... AND RETURN

Effect

Returns to the calling transaction or program after the called program has been executed. SUBMIT ... AND RETURN creates a new internal mode .

Addition 6

... EXPORTING LIST TO MEMORY

Effect

Does not display the output list of the called report, but saves it in SAP memory and leaves the called report immediately. Since the calling program can read the list from memory and process it further, you need to use the addition ... AND RETURN . Also, since the called report cannot be requested for printing, the addition ... TO SAP-SPOOL is not allowed here. You can read the saved list from SAP memory with the function module 'LIST_FROM_MEMORY' and then (for example) store it in the database with EXPORT . You can process this list further with the function modules 'WRITE_LIST' , 'DISPLAY_LIST' ... of the function group "SLST" .

Addition 7

... USER user VIA JOB job NUMBER n

Effect

Schedules the specified report in the job specified by the job name job and the job number n . The job runs under the user name user and you can omit the addition USER user . The assignment of the job number occurs via the function module JOB_OPEN (see also the documentation for the function modules JOB_CLOSE and JOB_SUBMIT . This addition can only be used with the addition ...AND RETURN .

Note

When scheduling a report with the SUBMIT ... VIA JOB job NUMBER n statement, you should always use the addition ...TO SAP-SPOOL to pass print and/or archive parameters. Otherwise, default values are used to generate the list and this disturbs operations in a production environment.

Addition 9

... USING SELECTION-SETS OF PROGRAM prog

Effect

Uses variants of the program prog when executing the program rep .

Note

Important

The programs prog and rep must have the same SELECT-OPTIONS and PARAMETER s. Otherwise, variants of the program prog may be destroyed.

Note

When using this addition, the specified variant vari of the program prog is taken in USING SELECTION-SET vari . On the other hand, all variant-related actions on the selection screen of rep (Get , Save as variant , Display , Delete ) refer to the variants of prog .

Example

SUBMIT REPORT01

VIA SELECTION-SCREEN

USING SELECTION-SET 'VARIANT1'

USING SELECTION-SETS OF PROGRAM 'REPORT00'

AND RETURN.

Effect

Executes the program REPORT01 with the variant VARIANT1 of the program REPORT00 .

Note

Runtime errors

LOAD_PROGRAM_NOT_FOUND : The specified program was not found.

SUBMIT_WRONG_TYPE : The specified program is not a report.

SUBMIT_IMPORT_ONLY_PARAMETER : Only one value passed to a report parameter.

SUBMIT_WRONG_SIGN : Invalid value passed to a selection with the addition SIGN .

SUBMIT_IN_ITAB_ILL_STRUCTURE : Table passed to a selection with WITH sel IN itab had an unexpected structure

Passing parameters with SUBMIT

Variants

1. ... USING SELECTION-SET vari

2. ... WITH p op f SIGN s

3. ... WITH p BETWEEN f1 AND f2 SIGN s

4. ... WITH p NOT BETWEEN f1 AND f2 SIGN s

5. ... WITH p IN sel

6. ... WITH SELECTION-TABLE seltab

7. ... WITH FREE SELECTIONS texpr

Effect

Passes values to the SELECT-OPTIONS and PARAMETERS of the program rep (these can also be defined in the database program SAPDBldb of the relevant logical database ldb ). p is the name of a parameter or selection criterion .

Variant 1

... USING SELECTION-SET vari

Effect

The variable vari contains the name of a variant used to start the report.

Variant 2

... WITH p op f SIGN s

Effect

op is one of the operations EQ, NE, CP, NP, GE, LT, LE, GT . s is a variable which must contain one of the values 'I' or 'E' (any other values result in a runtime error). The addition SIGN is optional and the default is 'I' . If p is a selection criterion (SELECT-OPTIONS ), an entry with LOW = f , OPTION = op and SIGN = s is generated in the relevant internal table.

If p is a parameter (PARAMETERS ), the system treats all options like EQ , i.e. it always transfers a single value. The field f is passed to the parameter p or to the field p-LOW of the selection criterion (xxx in the above list) in internal format. If p is not the same type as f , a type conversion is performed in the target report when data is passed.

Variant 3

... WITH p BETWEEN f1 AND f2 SIGN s

Effect

Passes the range with the lower limit f1 and the upper limit f2 to the selection criterion p . As with variant 2, f1 and f2 are passed in internal format and the handling of SIGN is also the same. The system thus generates an entry with LOW = f1 , HIGH = f2 , OPTION = BT and SIGN = s . When data is passed, a type conversion is performed.

Variant 4

... WITH p NOT BETWEEN f1 AND f2 SIGN s

Effect

Similar to 3, except that OPTION NB is generated instead of OPTION BT .

Variant 5

... WITH p IN sel

Effect

p is a selection criterion and sel is an internal table which is compatible with p and contains the transfer values. You are recommended to define sel with RANGES . The lines of sel must have exactly the same structure as the lines of a sdlection table (see SELECT-OPTIONS ).

Variant 6

... WITH SELECTION-TABLE seltab

Effect

seltab is an internal table with the structure RSPARAMS.

This variant allows you to set the names and contents of the parameters and selection options dynamically at runtime.

You can use the function module RS_REFRESH_FROM_SELECTOPTIONS to read the contents of the parameters and selection options of the current program into an internal table seltab with the structure RSPARAMS . By using SUBMIT ... WITH SELECTION-TABLE seltab , you can then pass these values on directly.

Variant 7

... WITH FREE SELECTIONS texpr

Effect

Passes dynamic selections.

texpr is an internal table of the type RSDS_TEXPR (see type pool RSDS).

Note

You can, for example, fill the object texpr in one of the following ways:

While processing a report with dynamic selections, call the function module RS_REFRESH_FROM_DYNAMICAL_SEL . This returns an object of the type RSDS_TRANGE which a subsequent function module FREE_SELECTIONS_RANGE_2_EX then converts to an object of the type RSDS_TEXPR . In this way, you can pass on the dynamic selections of the current report with SUBMIT .

Call the function modules FREE_SELECTIONS_INIT and FREE_SELECTIONS_DIALOG in order to offer the user a dialog for entering dynamic selections. These function modules return an object of the type RSDS_TEXPR .

Notes

You can combine the variants 1-7 in any permutation. The same selection criterion may be addressed several times with WITH . This generates several lines in the internal table assigned to the selection criterion p . You can also combine parameter transfer using a variant with explicit parameter passing via the WITH clause. In the event of a conflict, the parameter passed explicitly overwrites the corresponding parameter or selection criterion from the variant. Addition 6 ( WITH SELECTION-TABLE ) can be combined with parameter transfer using a variant (like directly written WITH clauses), but not with direct WITH clauses.

The values passed during SUBMIT are not taken over until the event INITIALIZATION has been processed, i.e. default values set at INITIALIZATION are overwritten if values are passed for the PARAMETER or SELECT-OPTION during SUBMIT .

Example

1st combination - variant and WITH

RANGES RANGE_LANGU FOR SY-LANGU.

PARAMETERS: MSG_FR LIKE T100-MSGNR,

MSG_TO LIKE T100-MSGNR.

MOVE: 'I' TO RANGE_LANGU-SIGN,

'BT' TO RANGE_LANGU-OPTION,

'D' TO RANGE_LANGU-LOW,

'I' TO RANGE_LANGU-HIGH.

APPEND RANGE_LANGU.

MOVE: 'EQ' TO RANGE_LANGU-OPTION,

'E' TO RANGE_LANGU-LOW.

APPEND RANGE_LANGU.

SUBMIT REPORT00

USING SELECTION-SET 'VARIANT1'

WITH MSG BETWEEN MSG_FR AND MSG_TO

WITH LANGU IN RANGE_LANGU.

Example

2nd combination - variant and WITH SELECTION-TABLE

DATA: BEGIN OF SELTAB OCCURS 5.

INCLUDE STRUCTURE RSPARAMS.

DATA: END OF SELTAB.

MOVE: 'LANGU' TO SELTAB-SELNAME,

'S' TO SELTAB-KIND, " SELECT-OPTION

'I' TO SELTAB-SIGN,

'BT' TO SELTAB-OPTION,

'D' TO SELTAB-LOW,

'I' TO SELTAB-HIGH.

APPEND SELTAB.

MOVE: 'E' TO SELTAB-SIGN,

'EQ' TO SELTAB-OPTION,

'F' TO SELTAB-LOW,

SPACE TO SELTAB-HIGH.

APPEND SELTAB.

CLEAR SELTAB.

MOVE: 'ARBGB' TO SELTAB-SELNAME,

'P' TO SELTAB-KIND, " PARAMETER

'XX' TO SELTAB-LOW.

APPEND SELTAB.

SUBMIT REPORT00

USING SELECTION-SET 'VARIANT1'

WITH SELECTION-TABLE SELTAB

AND RETURN.

regards

Shiva

Read only

Former Member
0 Likes
1,271

make use of SY-CPROG.

orelse check the values of SYST in debug mode , here u will get complete flow.

Regards

Prabhu

Read only

Former Member
0 Likes
1,271

Use the SUBMIT...WITH.. statement

SUBMIT <program name>
            WITH <parameter 1> EQ <value>
            WITH <parameter 2> EQ <value>
            ...

Read only

Shivaji16
Active Participant
0 Likes
1,271

Hi,

SY-REPID will have the current program that is being executed

Read only

Former Member
0 Likes
1,271

Hi patel,

See the following

1) u can use [export <Internal table> to Memory-Id <XYZ>] in program A.

2) submit program B.

3) import <Internal table> from Memory-Id <XYZ>.

Read only

Former Member
0 Likes
1,271

Hi Guys & Dolls

Thanks for all your help.

I've managed to get it working using

Simple form:

EXPORT <variables>/<internal tables> MEMORY ID 'MID'.

IMPORT <variables>/<internal tables> FROM MEMORY

ID 'MID'.

Note that the datatype and names of the variables and

internal tables need to be same in both programs.