Skip to Content
avatar image
Former Member

perform using

hallow

i wont to now in which place it place better to use perform using and tables and which benefit i have from that ?

simle sample will help

regards

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

5 Answers

  • Best Answer
    avatar image
    Former Member
    Aug 21, 2007 at 09:17 AM

    form routines are used to

    1. structurize ur code and optimize it

    2. avoid repetition of code

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 21, 2007 at 09:18 AM

    PERFORM - parameter_list

    Syntax

    ... [TABLES itab1 itab2 ...]

    [USING a1 a2 ...]

    [CHANGING a1 a2 ...].

    Extras:

    1. ... TABLES itab1 itab2 ...

    2. ... USING a1 a2 ...

    3. ... CHANGING a1 a2 ...

    Effect

    These additions assign actual parameters to the formal parameters from the parameter interface for the subroutine subr. You can specify all data objects whose data type matches the typing of the corresponding formal parameter (see Check Typing) as actual parameters. Each formal parameter assumes all the properties of the actual parameter assigned to it when it is called.

    Addition 1

    ... TABLES itab1 itab2 ...

    Effect

    If you specify the addition TABLES, each table parameter t1 t2 ... for the subroutine called that is defined with the addition TABLES to the FORM statement must be assigned an internal table itab as the actual parameter. The assignment of the actual parameters to the formal parameters takes place using their positions in the lists t1 t2 ... and itab1 itab2 ... .

    You can only specify standard tables for itab. Transfer takes place by means of a reference. If a specified table itab has a header line, this is also transferred; otherwise, the header line in the corresponding table parameter t is blank when it is called.

    Note

    Use of table parameters in the interface for subroutines is obsolete but a large number of subroutines have not yet been converted to appropriately typed USING or CHANGING parameters, so that they must still be supplied with data by the TABLES addition to the PERFORM statement.

    Example

    Static call of the internal subroutine select_sflight transferring a table parameter.

    PARAMETERS: p_carr TYPE sflight-carrid,

    p_conn TYPE sflight-connid.

    DATA sflight_tab TYPE STANDARD TABLE OF sflight.

    ...

    PERFORM select_sflight TABLES sflight_tab

    USING p_carr p_conn.

    ...

    FORM select_sflight TABLES flight_tab LIKE sflight_tab

    USING f_carr TYPE sflight-carrid

    f_conn TYPE sflight-connid.

    SELECT *

    FROM sflight

    INTO TABLE flight_tab

    WHERE carrid = f_carr AND

    connid = f_conn.

    ENDFORM.

    Addition 2

    ... USING a1 a2 ...

    Addition 3

    ... CHANGING a1 a2 ...

    Effect

    If you specify the additions USING and CHANGING, an actual parameter a1 a2 ... of the appropriate type must be assigned to each of the formal parameters u1 u2 ... and c1 c2 ... defined with the same additions to the FORM statement. The actual parameters specified after USING and CHANGING form one shared list. They are assigned to the formal parameters after the position in the shared list. The type of parameter transfer is defined with the additions USING and CHANGING to the FORM statement. The addition USING must be before CHANGING. Otherwise, the assignment of the actual parameters to the additions USING and CHANGING is irrelevant to the PERFORM statement. It is also irrelevant whether only one or both of the additions is specified.

    Notes

    For the sake of program documentation, we advise that you specify the additions USING and CHANGING in the FORM statement according to the definition of the parameter interface.

    In non-Unicode programs, you can address memory area outside an actual parameter if an actual parameter a1 a2 ... is assigned offset or length specifications. In non-Unicode programs, the length is set to the length of the current parameter if an offset is specified without a length. Both of these lead to warnings in the syntax check and to syntax errors in Unicode programs. The rules for the ASSIGN statement apply to the addressable memory area in non-Unicode programs as well.

    Example

    The following five PERFORM statements mean the same but only the fourth is recommended, since it is the only one that documents the interface of the subroutine called.

    DATA: a1 TYPE string,

    a2 TYPE string,

    a3 TYPE string,

    a4 TYPE string.

    PERFORM test USING a1 a2 a3 a4.

    PERFORM test CHANGING a1 a2 a3 a4.

    PERFORM test USING a1 CHANGING a2 a3 a4.

    PERFORM test USING a1 a2 CHANGING a3 a4.

    PERFORM test USING a1 a2 a3 CHANGING a4.

    ...

    FORM test USING p1 TYPE string

    p2 TYPE string

    CHANGING value(p3) TYPE string

    value(p4) TYPE string.

    ...

    ENDFORM.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 21, 2007 at 09:20 AM

    Hi Rodrigo,

    We use "perform tables itab" when we want to use an internal table which is not global to the program in a subroutine. The tables keyword itself signifies that we can pass internal tables to a subroutine.

    "Perform using" is used when we want to use a variable in a subroutine.Here againg if the variable is not global and you want to use it in a subroutine then you have to pass the variable using the "USING" keyword.

    Hope it was useful.

    Thanks,

    Sandeep.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 21, 2007 at 09:26 AM

    Hi

    its easy for understanding if u use perform and its to avoid repeatable functionality

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 21, 2007 at 09:17 AM

    REPORT demo_mod_tech_example_1.

    DATA: num1 TYPE i,

    num2 TYPE i,

    sum TYPE i.

    num1 = 2. num2 = 4.

    PERFORM addit USING num1 num2 CHANGING sum.

    num1 = 7. num2 = 11.

    PERFORM addit USING num1 num2 CHANGING sum.

    FORM addit

    USING add_num1 TYPE any

    add_num2 TYPE any

    CHANGING add_sum TYPE any.

    add_sum = add_num1 + add_num2.

    PERFORM out USING add_num1 add_num2 add_sum.

    ENDFORM.

    FORM out

    USING out_num1 TYPE any

    out_num2 TYPE any

    out_sum TYPE any.

    WRITE: / 'Sum of', out_num1, 'and', out_num2, 'is', out_sum.

    ENDFORM.

    This produces the following output:

    Sum of 2 and 4 is 6

    Sum of 7 and 11 is 18

    In this example, the actual parameters num1, num2, and sum are passed by reference to the formal parameters of the subroutine addit. After changing add_sum, the latter parameters are then passed to the formal parameters out_num1, out_num2, and out_sum of the subroutine out.

    Input parameters that are changed in the subroutine are also changed in the calling program. To prevent this, you must pass the parameter as a value in a USING addition.

    Add comment
    10|10000 characters needed characters exceeded