PERFORM_TOO_MANY_PARAMETERS

We recently implemented the latest support stacks for SAP ERP 4.7.
We are getting the following runtime message for transactions:
FB50, FB60, TBB1, MIRO.
We need help.
Thanks.
Runtime Error          PERFORM_TOO_MANY_PARAMETERS
Exception              CX_SY_DYN_CALL_PARAM_NOT_FOUND
       Occurred on     04/30/2008 at   08:57:22
Too many parameters specified with PERFORM.
What happened?
In a subroutine call, there were more parameters than in the
routine definition.
Error in ABAP application program.
The current ABAP program "SAPLGLIN" had to be terminated because one of the
statements could not be executed.
This is probably due to an error in the ABAP program.
Error analysis
An exception occurred. This exception is dealt with in more detail below
. The exception, which is assigned to the class
'CX_SY_DYN_CALL_PARAM_NOT_FOUND', was neither
caught nor passed along using a RAISING clause, in the procedure "G_RWIN_CHECK"
"(FUNCTION)"
Since the caller of the procedure could not have expected this exception
to occur, the running program was terminated.
The reason for the exception is:
A PERFORM was used to call the routine "G_RWIN_CHECK" of the program
"SAPLGLIN".
This routine contains exactly 3 formal parameters, but the current
call contains 4 actual parameters.
parameters.
How to correct the error
The exception must either be prevented, caught within the procedure
"G_RWIN_CHECK"
"(FUNCTION)", or declared in the procedure's RAISING clause.
To prevent the exception, note the following:
Correct the PERFORM call. You can find out where the call
occurs in the section "Active calls / events".
"PERFORM_TOO_MANY_PARAMETERS" CX_SY_DYN_CALL_PARAM_NOT_FOUNDC
"SAPLGLIN" or "LGLINU26"
"G_RWIN_CHECK"

Check where this perform is called in the program of given Tcodes.
the subroutine definition.
u should either add one parameter to the form G_RWIN_CHECK.... endform
or u should remove one parameter from the perform G_RWIN_CHECK, but as they are sap provided program u cant change i hope
u can find if there is any note available to solve this probelm..
gud luck

Similar Messages

  • Runtime error- Perform_too_many_parameters

    Hi gurus,
    I created a cash sale (bv) did goods issue, invoiced. Customer returns the goods, I want to do a sales return(re) but when I enter the invoice number(9xxxxxxxxxxxx), I get the error.
    Error "Runtime errors -     Perform_too_many_parameters"
    What do I do?
    Maureen

    Have an ABAPer check the dump text (ST22) to see where exactly the error occurs. If it's in a standard SAP code, check the OSS notes and send a message to SAP, if none applies. If it's in your custom code, have the code corrected.

  • SEM-BCS Short Dump while executing Manual Posting Task

    Hi SEM-BCS Colleagues,
    I am having a peculiar problem with relation to the settings for Manual Postings. I have three scenarios for which I have defined manual document types and tasks 1) Standardizing Entry (Data Collection) 2) Manual Document in IU for adjustment 3) COI Group level manual postings. I am just creating and not changing any settings for document field properties also. I have configured monthly consolidation frequency and period category and I am posting document type 1 in Local Currency and 2 and 3 in Group Currency since they are after currency translation.
    Have any of you faced similar problem and help me please?

    Hello,
    I am also getting short dump during data collection in BCS.
    we recently upgraded the system to SP20. Is it anyway related to upgrade.
    I also checked the MYSELF as a source system, but not found one.
    Could you please let me know how you have solved this issue.
    short dump:
    Runtime Errors         PERFORM_TOO_MANY_PARAMETERS
    Exception              CX_SY_DYN_CALL_PARAM_NOT_FOUND
    Date and Time          04.12.2009 05:21:11
    Short text
         Too many parameters specified with PERFORM.
    What happened?
         In a subroutine call, there were more parameters than in the
         routine definition.
         Error in the ABAP Application Program
         The current ABAP program "SAPLRSDRI" had to be terminated because it has
         come across a statement that unfortunately cannot be executed.
    Error analysis
         An exception occurred that is explained in detail below.
         The exception, which is assigned to class 'CX_SY_DYN_CALL_PARAM_NOT_FOUND', was
          not caught in
         procedure "RSDRI_CUBE_WRITE_PACKAGE_RFC" "(FUNCTION)", nor was it propagated by
          a RAISING clause.
         Since the caller of the procedure could not have anticipated that the
         exception would occur, the current program is terminated.
         The reason for the exception is:
         A PERFORM was used to call the routine "CUBE_WRITE_PACKAGE" of the program
          "GPD1S8520HM8UV0U2XBDVPADF03".
         This routine contains 7 formal parameters, but the current call
         contains 10 actual parameters.

  • Client Cost Allocation to COPA Failed

    Hey guys... when we try to Client Cost Allocate to COPA using TR : keub..
    the test run is ok... but the actual run fails with the following error.. pls help
    Runtime Errors         PERFORM_TOO_MANY_PARAMETERS  
    Except.                CX_SY_DYN_CALL_PARAM_NOT_FOUND
    What happened?                                                              
        In a subroutine call, there were more parameters than in the            
        routine definition.                                                     
        Error in the ABAP Application Program                                                                               
    The current ABAP program "SAPLKEIB" had to be terminated because it has 
        come across a statement that unfortunately cannot be executed.          
    Error analysis                                                                     
        An exception occurred that is explained in detail below.                       
        The exception, which is assigned to class 'CX_SY_DYN_CALL_PARAM_NOT_FOUND', was
         not caught in                                                                 
        procedure "RKE_POST_CO_ITEM_PLANNING" "(FUNCTION)", nor was it propagated by a 
         RAISING clause.                                                               
        Since the caller of the procedure could not have anticipated that the          
        exception would occur, the current program is terminated.                      
        The reason for the exception is:                                               
        A PERFORM was used to call the routine "PREPARE_CO_PLANNING" of the program    
         "RK2OBPUS".                                                                   
        This routine contains 1 formal parameters, but the current call                
        contains 2 actual parameters.

    ECC 6
    SAP_BASIS     700     0012
    SAP_ABA     700     0012
    PI_BASIS     2006_1_700     0002
    ST-PI     2005_1_700     0005
    SAP_BW     700     0012
    SAP_AP     700     0008
    SAP_HR     600     0007
    SAP_APPL     600     0008
    EA-IPPE     400     0006
    EA-APPL     600     0006
    EA-DFPS     600     0006
    EA-HR     600     0007
    EA-FINSERV     600     0006
    FINBASIS     600     0006
    EA-PS     600     0006
    EA-RETAIL     600     0006
    EA-GLTRADE     600     0006
    ECC-DIMP     600     0006
    ERECRUIT     600     0006
    FI-CA     600     0006
    FI-CAX     600     0006
    INSURANCE     600     0006
    IS-CWM     600     0006
    IS-H     600     0006
    IS-M     600     0006
    IS-OIL     600     0006
    IS-PS-CA     600     0006
    IS-UT     600     0006
    SEM-BW     600     0006
    P3A     V600     0003
    LSOFE     600     0006

  • Update teminated message after releasing and saving PO

    Hello Friends,
    After releasing and saving PO in ME29N ...when pressing BACK button...i am getting a pop message with "updated terminated".
    then i enter...in inbox the below message i am getting.
    System ID....   DEV
    Client.......   600
    User.....   ABAP
    Transaction..   ME29N
    Update key...   BAC6150D3B4CE853F588CFC55F23
    Generated....   17.04.2007, 11:08:13
    Completed....   17.04.2007, 11:08:53
    Error info...   00 671: ABAP/4 processor: PERFORM_TOO_MANY_PARAMETERS
    Even I debugged ...with break point satement with 'message' but not able to capture the "updated terminated'.
    Let me know how to sort this bug??
    With Ever Smile & Warm Regards,
    Madhu..!!

    Hi,
    Go to ST22 Transaction and Analyse the DUMP of this clearly in detail
    and discuss the same with a MM functional consultant and solve the issue.
    reward if useful
    regards,
    Anji

  • Remittance Advice Form in Scripts

    Hi All..
    I am doing Remittance Advice Form in Scripts. I want to print Purchase Order No. I want to read it from line items. For that I copied the Standard Pgm( RFFOUS_C) into Z pgm( ZRFFOUS_C).  I copied standard form( F110_IN_AVIS) INTO Z form. For this I am writing PERFORM statement in the form like this
    DEFINE &ZEBELN& = ' '
    PERFORM GET_EBELN IN PROGRAM ZRFFOUS_C
    USING &REGUP-BUKRS&
    USING &REGUP-BELNR&
    CHANGING &ZEBELN&
    ENDPERFORM
    Even In the place of PROGRAM ZRFFOUS_C, I am trying to use another Z pgm like Ztest.
    In both case while creating payment advise I am getting an error PERFORM_TOO_MANY_PARAMETERS. And getting job is cancelled.
    Even it is not creating Spool Request for Remittance Advice.
    In z pgm I ma writing the perform statement like this…
    FORM GET_EBELN USING ZBUKRS TYPE BSEG-BUKRS
                         ZBELNR TYPE BSEG-BELNR
             CHANGING    ZZEBELN TYPE BSEG-EBELN.
    SELECT SINGLE EBELN FROM BSEG INTO ZZEBELN
           WHERE BUKRS = ZBUKRS
           AND   BELNR = ZBELNR
           AND   BUZEI = 2.
    ENDFORM.
    PLZ GIVE ME SUGGESTIONS ASAP..
    Regards
    Rajendra

    Hello,
    Your form in the program should be like this.
    FORM GET_EBELN  TABLES i_inval  STRUCTURE itcsy
                        i_outval STRUCTURE itcsy.
    data: w_burks like t001-bukrs.
      READ TABLE i_inval with key = 'REGUP-BUKRS'.
    w_bukrs = i_inval-value.
    read all other data from the input table as above
    give back the values
        READ TABLE i_outval with key = 'ZEBELN'.
          out_tab-value = w_zebeln.
          MODIFY out_tab INDEX sy-tabix.
    endform
    regards,
    Naimesh

  • Form triggering through Output type

    Hi All,
    There is a issue which i am facing , I have create a output type ZFIN and attached a custome program xyz with this outputtype. when the output is triggered throught transaction VL32n the custom program should be trigger but ther is an error raising which is going to my SAP inbox that is " PERFORM_TOO_MANY_PARAMETERS".
    Regards
    Dhiraj Shetty

    Hi,
    1. Run transaction SU01
    2. Enter <user name> => EDIT
    3. Go to tab 'Parameters'
    4. Select parameter ID = 'NDR' and enter value 'X'
    5. Save
    Done

  • PERFORM_TOO_MANY_PARAMETER

    I get this short dump, when doing Initial Stock Initilization for 2LIS_40_S278.
    I couldnt use 2LIS_03_BX because, i would be missing some fields related to AFS.
    Any Input on how to ..Stock Initilization for AFS Inventory.
    I have earlier done for MM but its a bit different for AFS..i think.
    Steps I followed.
    1. Activated Asyncronous Mode for 2LIS_40_S278 without Delta Update.
    2.Using Tran Code: MCNB, executed stock Initilization for Structure 2LIS_40_S278.
    It Actally pops up an informattion about how many records it collected, but when i click on OK...
    it Dumps, saying "PERFORM_TOO_MANY_PARAMETER"....This routine contains 4 formal parameters, but the current call
    contains 5 actual parameters.
    parameters.

    HI,
    Check this Note 113382 - Perform_too_many_parameters and see if it helps
    Regards
    Srinivas

  • Catching a runtime error

    Hi,
    A runtime error for overflow (type p) occurs with the following details:
    Runtime Errors         COMPUTE_BCD_OVERFLOW    
    Exception              CX_SY_ARITHMETIC_OVERFLOW
    Date and Time          06/12/2007 11:33:13     
    Instead of displaying the dump screen, i'd like to catch the runtime error and display a message instead. The following is the code that causes the error (onhand is too large):
          REQRMENT = FORECAST - ONHAND - OPENQTY.
    Please help,
    Points will be rewarded and all help will be greatly appreciated.
    Thanks,
    John

    According to help, these are the catchable exceptions for a form call:
    Catchable Exceptions
    CX_SY_PROGRAM_NOT_FOUND
    Cause: The specified program was not found.
    Runtime Error: LOAD_PROGRAM_NOT_FOUND
    Cause: The specified program cannot exist because the program name is longer than 40 characters.
    Runtime Error: PERFORM_PROGRAM_NAME_TOO_LONG
    CX_SY_DYN_CALL_ILLEGAL_FORM
    Cause: The specified subroutine was not found.
    Runtime Error: PERFORM_NOT_FOUND
    Cause: The specified index was too small.
    Runtime Error: PERFORM_INDEX_0
    Cause: The specified index was negative.
    Runtime Error: PERFORM_INDEX_NEGATIVE
    Cause: The specified index was too large.
    Runtime Error: PERFORM_INDEX_TOO_LARGE
    CX_SY_DYN_CALL_PARAM_MISSING
    Cause: The called FORM expects more parameters than were specified.
    Runtime Error: PERFORM_PARAMETER_MISSING
    CX_SY_DYN_CALL_PARAM_NOT_FOUND
    Cause: More parameters were specified than expected by FORM.
    Runtime Error: PERFORM_TOO_MANY_PARAMETERS
    CX_SY_DYN_CALL_ILLEGAL_TYPE
    Cause: In the parameter transfer using the addition STRUCTURE, the addressing offsets/> do not match in the current and target structures.
    Runtime Error: PERFORM_BASE_WRONG_ALIGNMENT
    Cause: The deep components contained in the current and target structures cannot be passed to each other. This error can only occur in parameter transfer using STRUCTURE.
    Runtime Error: PERFORM_CAST_DEEP_MISMATCH
    Cause: During the transfer of a generically defined type to the form, a type conflict occurred.
    Runtime Error: PERFORM_CONFLICT_GENERIC_TYPE
    Cause: The table type of the current parameter does not match the table type of the parameter defined in the form.
    Runtime Error: PERFORM_CONFLICT_TAB_TYPE
    Cause: The type of current parameter does not match the type of parameter defined in the form.
    Runtime Error: PERFORM_CONFLICT_TYPE
    Cause: The current parameter occupies less storage space than the target parameter defined in the form. This error occurs only with parameter specification using STRUCTURE.
    Runtime Error: PERFORM_PARAMETER_TOO_SHORT
    Cause: During parameter transfer with the addition STRUCTURE, the fragment views of the current and target parameters do not match. This error only occurs in Unicode programs in
    Runtime Error: PERFORM_CONFLICT_UC_STRUCT
    Cause:When the form is called, an internal table is expected as current parameter.
    Runtime Error: PERFORM_TABLE_REQUIRED
    Cause: A hash table was passed to a parameter defined using TABLES.
    Runtime Error: PERFORM_STD_TAB_REQUIRED

  • Error in Creating Time series objects in APO 5.0

    Hi, We are implementing APO 5.0.  I am trying to Create Time series objects for Planning Area 9ASNP05, but getting the following Run Time Error
    We have used Support Package 10
    Runtime Errors         PERFORM_TOO_MANY_PARAMETERS
    Exception              CX_SY_DYN_CALL_PARAM_NOT_FOUND
    The exception, which is assigned to class 'CX_SY_DYN_CALL_PARAM_NOT_FOUND', was
    not caught in procedure "RSS_TEMPLATE_INSTANTIATE" "(FUNCTION)", nor was it propagated by a RAISING clause.
    Since the caller of the procedure could not have anticipated that the
    exception would occur, the current program is terminated.
    The reason for the exception is: A PERFORM was used to call the routine "INSTANTIATE" of the program
      "GP_MET_RSSG_HEADER_COMMENT".
    This routine contains 15 formal parameters, but the current call
    contains 16 actual parameters.
    Any

    Hi
    I am getting exactly the same error, on SCM 5.0 SR2, running on Windows 2003 64 BIT & SQL 2000.
    Conditions for error:
    Using transaction:
    /SAPAPO/MSDP_ADMIN
    Select: Planning Object Structures
    Short Dump occurs if you either:
    1. Attempt to deactivate an active Planning Object Structure
    2. Attempt to create a Characteristic Combination
    Gives a runtime error shortdump PERFORM_TOO_MANY_PARAMETERS
    Error analysis:
        An exception occurred that is explained in detail below.
        The exception, which is assigned to class 'CX_SY_DYN_CALL_PARAM_NOT_FOUND', was
         not caught in
        procedure "RSS_TEMPLATE_INSTANTIATE" "(FUNCTION)", nor was it propagated by a
         RAISING clause.
        Since the caller of the procedure could not have anticipated that the
        exception would occur, the current program is terminated.
        The reason for the exception is:
        A PERFORM was used to call the routine "INSTANTIATE" of the program
         "GP_MET_RSSG_HEADER_COMMENT".
        This routine contains 15 formal parameters, but the current call
        contains 16 actual parameters.
    Has anyone seen this before?
    Did you find a solution Bhavesh ?
    Thanks.

  • Routine In Program giving syntax error

    Hi All,
    I am calling below FORM from Script in 4.6C Version.
    /:  PERFORM GET_YY42V_ACTID
                      IN PROGRAM    Y42S_FORM_POOL
    /:  USING &VBELN&
    /:  USING &POSNR&
    /:  CHANGING &ACTID&
    Y42S_FORM_POOL is a function pool.
    FORM  GET_YY42V_ACTID USING   TABLES   in_par        
                                                            structure itcsy
                                          out_par   structure   itcsy .
      read  table in_par  with  key  'VBELN' .
    ENDFORM.                    " GET_YY42V_ACTID
    When I do syntax check getting below message:
      in_par  is not defined as tables    nor as Internal Table.
    Why i am getting this error?????
    2. i then left the routine without any code and activated.
       And this time while in Debugging checked that from Print Program control went to SAP code:
        perform (co_perform-form) in program (co_perform-program)
                                  tables co_sym_using
                                         co_set_symbols
                                  if found.
         co_perform-form & co_perform-program contains correct
         script name and Routine Pool names.
    But after pressing F%its going for Dump ...
    No Clues on that ?????????
    getting message:
    Runtime errors         PERFORM_TOO_MANY_PARAMETERS
    Exception              CX_SY_DYN_CALL_PARAM_NOT_FOUND
           Occurred on     2008/08/29 at   09:14:38
    Too many parameters specified with PERFORM.
    Any idea about this problem.
    Thanks in advance.
    Praveen

    1) FORM GET_YY42V_ACTID TABLES in_par
    structure itcsy
    out_par structure itcsy .
    The USING parameter is wrong.  Check again the syntax of FORM.  This leads to the second problem as with what you had, it considers TABLE, in_par structure itcsy out_par structure itcsy to all be parameters.
    matt

  • Form Routines

    Hi  ABAP Gurus,
                             i am new to abap.i Have some small doubts.please explain me some doubts.please do explain me in simple words dont send links.
    1. what is a FORM Routine?
    2. what is importing ,Exporting?
    3. what is the diff. b/w exporting & Returning?
    4.what is changing?
    5. what is returning ,receiving?
    6.what is PERFORM Statement?
    7.explain me about public,protected and private?
    note:please do explain me these with simple coding so that i can be familiar to know where to use them.

    Check this link -
    http://www.geocities.com/rmtiwari/Resources/Utilities/ABAPReference/ABAPReference.html
    PERFORM
    Variants:
    1. PERFORM form.
    2. PERFORM form IN PROGRAM prog.
    3. PERFORM n OF form1 form2 form3 ... .
    4. PERFORM n ON COMMIT.
    5. PERFORM n ON ROLLBACK.
    6. PERFORM form(prog).
    Variant 1
    PERFORM form.
    Extras:
    1. ... USING    p1 p2 p3 ... 2. ... CHANGING p1 p2 p3 ...
    3. ... TABLES   itab1 itab2 ...
    Effect
    Calls the subroutine form defined usng a FORM statement. After the subroutine has finished, processing continues after the PERFORM statement. The parameters of the subroutine are position parameters, and must be passed in the call according to the definition of the formal parameters in the corresponding FORM statement.
    Example
    PERFORM HELP_ME.
    FORM HELP_ME.
    ENDFORM.
    The PERFORM statement calls the subroutine HELP_ME.
    Note
    Non-Catchable Exceptions:
    PERFORM_PARAMETER_MISSING: The subroutine called has more parameters than you passed to it.
    PERFORM_TOO_MANY_PARAMETERS: You passed more parameters to the subroutine than it was expecting.
    PERFORM_CONFLICT_TYPE,
    PERFORM_CONFLICT_TAB_TYPE,
    PERFORM_STD_TAB_REQUIRED,
    PERFORM_CONFLICT_GENERIC_TYPE,
    PERFORM_BASE_WRONG_ALIGNMENT,
    PERFORM_PARAMETER_TOO_SHORT,
    PERFORM_CAST_DEEP_MISMATCH,
    PERFORM_TABLE_REQUIRED: The type of a parameter did not correspond to the type specified in the FORM statement.
    Addition 1
    ... USING    p1 p2 p3 ...
    Addition 2
    ... CHANGING p1 p2 p3 ...
    Effect
    These two additions have an identical function. However, you should always use the same addition as is used in the corresponding FORM definition (for documentary reasons).
    The statement passes the parameters p1 p2 p3 ... to the subroutine. A subroutine may have any number of parameters.
    The order in which you list the parameters is crucial. The first parameter in the PERFORM statement is passed to the first formal parameter in the FORM defintion, the second to the second, and so on.
    You can specify offset and length of a parameter as variables. If you use the addition ' ...USING p1+off(*)', the parameter p1 will be passed with the offset off, but the length will not exceed the total length of the field.
    Example
    DATA: NUMBER_I TYPE I VALUE 5,
          NUMBER_P TYPE P VALUE 4,
          BEGIN OF PERSON,
            NAME(10)      VALUE 'Paul',
            AGE TYPE I    VALUE 28,
          END   OF PERSON,
          ALPHA(10)       VALUE 'abcdefghij'.
    FIELD-SYMBOLS <POINTER> TYPE ANY.
    ASSIGN NUMBER_P TO <POINTER>.
    PERFORM CHANGE USING 1
                         NUMBER_I
                         NUMBER_P
                         <POINTER>
                         PERSON
                         ALPHA+NUMBER_I(<POINTER>).
    FORM CHANGE USING VALUE(PAR_1)
                      PAR_NUMBER_I
                      PAR_NUMBER_P
                      PAR_POINTER
                      PAR_PERSON STRUCTURE PERSON
                      PAR_PART_OF_ALPHA.
      ADD PAR_1 TO PAR_NUMBER_I.
      PAR_NUMBER_P = 0.
      PAR_PERSON-NAME+4(1) = ALPHA.
      PAR_PERSON-AGE = NUMBER_P + 25.
      ADD NUMBER_I TO PAR_POINTER.
      PAR_PART_OF_ALPHA = SPACE.
    ENDFORM.
    Field contents after the PERFORM statement:
    NUMBER_I    = 6
    NUMBER_P    = 6
    <POINTER>   = 6
    PERSON-NAME = 'Paula'
    PERSON-AGE  = 25
    ALPHA       = 'abcde    j'
    Notes
       1. If you want to pass the body of an internal table itab that has a header line, you must use the notation itab[] (see Data Objects). If you do not use the brackets, the header line of the tabel is passed.
       2. The field types and lengths of the parameters remain the same. If a parameter is changed within the subroutine, it will still have the changed value after the subroutine has finished. This does not apply to parameters passed using VALUE. werden.
       3. If you pass literals, they may not be changed unless you pass them to a formal parameter defined with USING VALUE.
    Addition 3
    ... TABLES itab1 itab2 ...
    Effect
    TABLES allows you to pass internal tables to a subroutine.
    Example
    TYPES: BEGIN OF ITAB_TYPE,
             TEXT(50),
             NUMBER TYPE I,
           END OF ITAB_TYPE.
    DATA:  ITAB TYPE STANDARD TABLE OF ITAB_TYPE WITH
                     NON-UNIQUE DEFAULT KEY INITIAL SIZE 100,
           BEGIN OF ITAB_LINE,
             TEXT(50),
             NUMBER TYPE I,
           END OF ITAB_LINE,
           STRUC like T005T.
    PERFORM DISPLAY TABLES ITAB
                    USING  STRUC.
    FORM DISPLAY TABLES PAR_ITAB STRUCTURE ITAB_LINE
                 USING  PAR      like      T005T.
      DATA: LOC_COMPARE LIKE PAR_ITAB-TEXT.
      WRITE: / PAR-LAND1, PAR-LANDX.
      LOOP AT PAR_ITAB WHERE TEXT = LOC_COMPARE.
      ENDLOOP.
    ENDFORM.
    Within the subroutine DISPLAY, you can use any internal table operation to work with the internal table that you passed to it.
    Note
    If you use TABLES, it must always be the first addition in a PERFORM statement.
    Variant 2
    PERFORM form IN PROGRAM prog.
    Extras:
    1. ... USING    p1 p2 p3 ... 2. ... CHANGING p1 p2 p3 ...
    3. ... TABLES   itab1 itab2 ...
    4. ... IF FOUND
    Passsing SY-REPID not allowed and Receiving SY-SUBRC not allowed.
    Effect
    This variant is similar to variant 2 (external perform). However, here you can specify the names of both the subroutine and the program in which it occurs dynamically at runtime. If you do this, you should place the variables form and prog in parentheses. The names in form and prog must be entered in uppercase, otherwise a runtime error occurs. If you do not specify any additions (such as USING) you do not need to specify the program after IN PROGRAM. In this case, the system looks for the subroutine in the current program.
    Example
    DATA: RNAME(30) VALUE 'WRITE_STATISTIC',   "Form and program
                                               "names must
          PNAME(8)  VALUE 'ZYX_STAT'.          "be written in
                                               "upper case
    PERFORM (RNAME)         IN PROGRAM ZYX_STAT.
    PERFORM WRITE_STATISTIC IN PROGRAM (PNAME).
    PERFORM (RNAME)         IN PROGRAM (PNAME).
    All three PERFORM statements have the same effect, that is, they call the subroutine 'WRITE_STATISTIC', which is defined in the program 'ZYX_STAT'.
    Notes
    Dynamic PERFORM statements require more CPU time, since the system has to locate the subroutine each time.
    Note
    Non-Catchable Exceptions:
    PERFORM_NOT_FOUND: Unable to find the specified subroutine.
    LOAD_PROGRAM_NOT_FOUND: Unable to find the specified main program.
    PERFORM_PROGRAM_NAME_TOO_LONG: The specified program cannot exist because the program name is longer than 40 characters.
    Addition 1
    ... USING p1 p2 p3 ...
    Effect
    See variant 1, addition 1.
    Addition 2
    ... CHANGING p1 p2 p3 ...
    Effect
    See variant 1, addition 2.
    Addition 3
    ... TABLES itab1 itab2 ...
    Effect
    See variant 1, addition 3.
    Addition 4
    ... IF FOUND
    Effect
    The system only calls the subroutine if it and its main program exist. If this is not the case, the statement is ignored.
    Variant 3
    PERFORM n OF form1 form2 form3 ... .
    Effect
    Calls the subroutine with the index n from the list of subroutines in the statement. At runtime, n must contain a value between 1 (first name) and the total number of subroutines listed in the PERFORM statement (last name). The list can contain up to 256 subroutines.
    Note
    Non-Catchable Exceptions:
    PERFORM_INDEX_0: The specified index was too small.
    PERFORM_INDEX_NEGATIVE: The specified index was negative.
    PERFORM_INDEX_TOO_LARGE: The specified index was too big.
    Variant 4
    PERFORM n ON COMMIT.
    Extras:
    1. ... LEVEL idx
    Effect
    Calls the specified subroutine at the next COMMIT WORK statement. This allows you to delay the subroutine until the logical transaction is finished. Even if you register the same subroutine more than once, it is only executed once. For further information, refer to COMMIT WORK. The ROLLBACK WORK statement deregisters all subroutines registered using this addition.
    Notes
       1. You cannot use USING or CHANGING with the ... ON COMMIT addition. If you need to pass data to the subroutine, you must place it in global variables or use the EXPORT ... TO MEMORYstatement.
       2. The PERFORM ... ON COMMIT statement can also be used during update. The corresponding subroutine is called at the end of the update task.
    Addition 1
    ... LEVEL idx
    Effect
    The LEVEL addition, followed by a field, determines the sequence in which the specified subroutines will be executed at the COMMIT WORK statement. The subroutines are called in ascending order of their level. If you do not use the LEVEL addition, the subroutine assumes the level zero. If two or more subroutines have the same level, they are executed in the sequence in which they are called in the program. You assign levels by defining constants in an include program. The level must have type I.
    Variant 5
    PERFORM n ON ROLLBACK.
    Effect
    The specified subroutine is executed if a ROLLBACK WORK occurs. This allows you, for example, to delete data, such as an internal table or data in memory, that was intended for use in PERFORM...ON COMMIT. If you register the same subroutine more than once, it will still only be executed once per ROLLBACK WORK.
    Notes
       1. Subroutines registered using PERFORM... ON COMMIT cannot have USING or CHANGING parameters. Any data you want to pass to them must be contained in global variables or buffered using EXPORT ... TO MEMORY.
       2. If you catch a type A message ( MESSAGE) using the EXCEPTIONS..ERROR_MESSAGE addition in the CALL FUNCTION statement, a ROLLBACK WORK occurs, in which the subroutines registered using PERFORM ... ON ROLLBACK are executed.
    Variant 6
    PERFORM form(prog).
    Extras:
    1. ... USING    p1 p2 p3 ... 2. ... CHANGING p1 p2 p3 ...
    3. ... TABLES   itab1 itab2 ...
    4. ... IF FOUND
    PERFORM form(prog) not allowed.
    Effect
    Calls the subroutine form defined in program prog ("external PERFORM").
    Notes
       1. You pass parameters to the external subroutine as described in variant 1.
       2. However, you can also do it using a shared data area ( DATA BEGIN OF COMMON PART).
       3. Please consult Data Area and Modularization Unit Organization documentation as well.
       4. You can use nested calls, including several different subroutines in different programs.
       5. When you call a subroutine that belongs to a program prog, prog is loaded into the PXA buffer (if it has not been loaded already). To minimize the possibility of memory problems, try not to use too many external subroutines from a large number of different programs.
    Hope this helps.
    ashish

Maybe you are looking for

  • Bind variable is not defined

    Hi, it is my first attempt to modify a rdf file. I run into a problem while trying to add an additional user parameter in an existing rdf file. While I am successful in adding a new FREQUENCY user parameter and I am able to update the form to show th

  • Using SYSDATE in a PreparedStatement

    I feel sure this must have done already, but .... I need to use a PreparedStatement to insert rows. The table has a DATE column and I want to use the SYSDATE value. I've tried using setString("SYSDATE") and setObject("SYSDATE") but I'm getting ORA-01

  • SEM CPM

    Hi, I am new to SEM. I tried to search the forum for some documentation. Everyone referred to help.sap.com and service.sap.com/sem. In service.sap.com/sem I didn't find any documents for sem documentation. Help.sap.com doesn't have any examples. My f

  • Batch input to be mandatory in production order

    Dear All, While creating production order I want to make the batch (CHARG --> GR Tab page) to be made mandatory. I have tried SHD0 but not useful. Also tried to find some BADIs, but could not find the appropriate one. Is there any other way of doing

  • Smpatch update and java cpu time

    hello, since i installed the updatemanager for solaris 10 x86 (last week) i have a problem to get some updates. the java is taken around 99% of CPU time. after 6 hours i quited the "smpatch update" and my CPU is doing normal again. PID USERNAME SIZE