Precautions for User Exits

Can anyone tell me what are the precautions to be taken for user exits?
i mean...what are the ABAP statements that are not used in user exits...
can anybody plz suggest me?

Hi,
Welcome to SDN.
COMMIT WORK should not be used in a user exit. This reason is that it could/will commit all work done by the entire transaction and could possibily create data inconsistancy.
Also LEAVE TO TRANSACTION and SUBMIT statements should also be not used. It will terminate the current LUW.
Regards,
Ferry Lianto
Please reward points if helpful.

Similar Messages

  • Value for user-exit variable  is invalid

    Hi Gurus,
    My Value for a Fiscal Year Prd returns a invalid value for the 12th month of each year( for Example 12/2004, returns the error "Value 200313 for User-exit variable is invalid.
    This is the code that is being used.
    *Rolling 12 months for entered month
    when 'ZCALM12'.
          clear: v_mth, v_yr.
          REFRESH E_T_RANGE.
          CLEAR L_S_RANGE.
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE
                   WHERE VNAM = 'ZCALMON'.
            exit.
          endloop.
          v_yr = LOC_VAR_RANGE-LOW+0(4) - 1.
          v_mth = LOC_VAR_RANGE-LOW+4(2) + 1.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT = 'BT'.
          concatenate v_yr v_mth into L_S_RANGE-LOW.
          L_S_RANGE-HIGH = LOC_VAR_RANGE-LOW.
          APPEND L_S_RANGE TO E_T_RANGE.
    Thanks in Advance.

    Hi Ravi,
    when 'ZCALM12'.
    clear: v_mth, v_yr.
    REFRESH E_T_RANGE.
    CLEAR L_S_RANGE.
    LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE
    WHERE VNAM = 'ZCALMON'.
    exit.
    endloop.
    <b>-->> Here, you are not checking any thing.</b> <i>On which logic you are reducing year by one and increasing month by 1..?</i>
    v_yr = LOC_VAR_RANGE-LOW+0(4) - 1.
    v_mth = LOC_VAR_RANGE-LOW+4(2) + 1.
    -->><i>IF month is 200512 you will get output from above code is :</i> please check.
    v_yr = 2005 - 1 = 2004
    v_mth = 12 +1 = 13.
    L_S_RANGE-SIGN = 'I'.
    L_S_RANGE-OPT = 'BT'.
    concatenate v_yr v_mth into L_S_RANGE-LOW.
    L_S_RANGE-HIGH = LOC_VAR_RANGE-LOW.
    APPEND L_S_RANGE TO E_T_RANGE.
    Try to debug the code by keeping break point after When. and execute the report, you will be debugging mode.
    Hope it Helps
    Srini

  • Need help for user exit mereq001

    Hi,
    I need help for user exit mereq001. I think I messed up with include table CI_EBANDB and CI_EBANMEM. And When I tried to check the syntax . It gives me error like : <b>Class IF_PURCHASE_REQUISITION. Inconsistency in the dictionary for the structure mereq_item_s_cust_data.</b> Anyone had experience for this exit? I just need to extract costcenter information of the each item from the requisition and block the requisiton if the costcenter are differents from each other before the requisition is saved. Any one has idea about it?
    Thanks.

    biao,
    Have you checked this struture consistency from SE11. Also check the activation log.
    If there are any errors and you are not able to rectify the same use RSDDCHECK program, give your table name and run the report.
    This will list down the error structures releated this table and also prompts for you to activate it.
    Regds
    Manohar

  • Enhancement for user exit

    hello
      can you please let me the know the enhancement for user exit:exit_sapliqs0_001
    regards
    anik

    Hi,
    these are teh enhancements that r available...u need to check each of them.
    IWO10026  User check on setting status 'Do not perform'
    IWO10027  User exit: Generate user-defined settlement rule
    IWOC0001  Create PM/SM notification: Determine reference object
    IWOC0002  PM/SM notification: Check whether status change is allo
    IWOC0003  PM/SM authorization check of ref. object and planner gr
    IWOC0004  Change single-level list editing PM/QM/SM ALV settings
    Regards,
    nagaraj

  • Hi is there any code for user exits in bw

    can you help me out with user exits in bw reporting pls
    http://abapcode.blogspot.com

    Hi Amit,
      i have good document for user exits in bw. pls send me ur email i will send the document.
    hope that will help you to resolve.
    <b>Reward pts if found usefull:)</b>
    Regards
    Sathish

  • Code for user-exits

    hey guys i want the code for user-exits for  inclusion of Excise Chapter ID mandatory in PO .....
    regards,
    Naveen

    which user exit u are using ?
    check the BADI for the same .
    SE15->Enhancements->BADI--->definations -
    >search on Package = ME.
    and see BADI definition called Process _cust.
    Regards
    Peram

  • Help reqd for user exit

    Hi all,
    the requirement is...
    In MIRO,the Incoimg invoice should not be posted without an empty field of amount(WRBTR) in the Basic Data.Currently as per std,it's not a mandatory field and can be posted by not entering any amount in that.So, either we have to make it as a mandatory field or should restrict not to saving the data if posting of empty field.(Not giving any amount)***seems,it tells the user to give the amount as mandatory.
    How to do this.....if its coming under the USER Exit object...pls post both how to get the std program and enhancement assignment(it asks while creating user exit in CMOD) also for user exit.
    thanks & regards
    sankar.

    hi
    Program name is SAPLMR1M
    For MIRO tcode, you have below user exits.
    LMR1M001            User exits in Logistics Invoice Verification                    
    LMR1M002            Account grouping for GR/IR account maintenance                  
    LMR1M003            Number assignment in Logistics Invoice Verification             
    LMR1M004            Logistics Invoice Verification: item text for follow-on docs    
    LMR1M005            Logistics Inv. Verification: Release Parked Doc. for Posting    
    LMR1M006            Logistics Invoice Verification: Process XML Invoice             
    MRMH0001            Logistics Invoice Verification: ERS procedure                   
    MRMH0002            Logistics Invoice Verification: EDI inbound                     
    MRMH0003            Logistics Invoice Verification: Revaluation/RAP                 
    MRMN0001            Message output and creation: Logistics Invoice Verification     
    EXIT_SAPLMR1M_003 may useful to you. Check with this.
    Reward if it dose
    Thanks
    Siva Kumar.

  • T code for User exits.

    hai all MM gurus,
    How to find out the user exits for any Tcodes or for any documents?.

    for this there is a user written program called "zuserexit" which will be available. Run the program & give Tcode as input u ll get all exits for that.
    http://www.sap-img.com/ab038.htm
    Finding the user-exits of a SAP transaction code
    Finding the user-exits of a SAP transaction code
    Enter the transaction code in which you are looking for the user-exit
    and it will list you the list of user-exits in the transaction code.
    Also a drill down is possible which will help you to branch to SMOD.
    Written by : SAP Basis, ABAP Programming and Other IMG Stuff
                 http://www.sap-img.com
    report zuserexit no standard page heading.
    tables : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
             tables : tstct.
    data : jtab like tadir occurs 0 with header line.
    data : field1(30).
    data : v_devclass like tadir-devclass.
    parameters : p_tcode like tstc-tcode obligatory.
    select single * from tstc where tcode eq p_tcode.
    if sy-subrc eq 0.
       select single * from tadir where pgmid = 'R3TR'
                        and object = 'PROG'
                        and obj_name = tstc-pgmna.
       move : tadir-devclass to v_devclass.
          if sy-subrc ne 0.
             select single * from trdir where name = tstc-pgmna.
             if trdir-subc eq 'F'.
                select single * from tfdir where pname = tstc-pgmna.
                select single * from enlfdir where funcname =
                tfdir-funcname.
                select single * from tadir where pgmid = 'R3TR'
                                   and object = 'FUGR'
                                   and obj_name eq enlfdir-area.
                move : tadir-devclass to v_devclass.
              endif.
           endif.
           select * from tadir into table jtab
                         where pgmid = 'R3TR'
                           and object = 'SMOD'
                           and devclass = v_devclass.
            select single * from tstct where sprsl eq sy-langu and
                                             tcode eq p_tcode.
            format color col_positive intensified off.
            write:/(19) 'Transaction Code - ',
                 20(20) p_tcode,
                 45(50) tstct-ttext.
                        skip.
            if not jtab[] is initial.
               write:/(95) sy-uline.
               format color col_heading intensified on.
               write:/1 sy-vline,
                      2 'Exit Name',
                     21 sy-vline ,
                     22 'Description',
                     95 sy-vline.
               write:/(95) sy-uline.
               loop at jtab.
                  select single * from modsapt
                         where sprsl = sy-langu and
                                name = jtab-obj_name.
                       format color col_normal intensified off.
                       write:/1 sy-vline,
                              2 jtab-obj_name hotspot on,
                             21 sy-vline ,
                             22 modsapt-modtext,
                             95 sy-vline.
               endloop.
               write:/(95) sy-uline.
               describe table jtab.
               skip.
               format color col_total intensified on.
               write:/ 'No of Exits:' , sy-tfill.
            else.
               format color col_negative intensified on.
               write:/(95) 'No User Exit exists'.
            endif.
          else.
              format color col_negative intensified on.
              write:/(95) 'Transaction Code Does Not Exist'.
          endif.
    at line-selection.
       get cursor field field1.
       check field1(4) eq 'JTAB'.
       set parameter id 'MON' field sy-lisel+1(10).
       call transaction 'SMOD' and skip first   screen.
    *---End of Program

  • Request for User Exit or BADIs for outgoing posting block in F-53

    Dear Gurus,
    Can somebody advice me which user exit or BADIs to use for the below scenario:
    My users is using more than one alternative payee for their invoices, therefore when they use F-53 to clear open item, they always accidentally do multiple payment for document no. with different alternative payee. Worst case is that the posting go through! But when they print out the form, its too late and they had to do reversal.
    I like to enforce a block so that if the alternative payee is different across the document no. selected, they cannot post.
    Desperately,
    Belinda
    Edited by: Belinda Lee on Jun 3, 2008 5:34 PM

    Hello,
    You can use Business Transaction Event (BTE) . You should use 00001120 events.
    You must do some customizing in FIBF.
    Regards,
    Burak

  • EXIT_SAPMM06E_016 for User exit how to prepare functional specification.

    Hello Gentlemen,
    Ex: -  issue for the PO no: 4500006789
    Made advance payment against PO 100%, later vendor has given discount on freight charges, so once advance payment is made then system should not allow to amending the PO.
    Now client requirements are as follows likeu2026.
    Condition no1: If there is an existing down payment against the PO then system should allow to amending the PO, but system should throw the warning message as there is already down payment against the PO.
    Condition no2: If there is an existing down payment against the PO system should allow to amending the PO, but system should not allow to changing more than the total value of the PO.
    So User exit which I have mentioned in above subject line it should be in a position to fullfill the condition no1 and condition no2.
    So pleas let me know the functional specification and functional specification logic for above said in subject User exit.
    Early action inthis matter will be highly appreciated.

    as far as i know, when you make an advance payment you can link it to a po only thru a reference text field.
    uncleared vendor items will be table BSIK
    you may have to filter it out by transaction type A and spl gl indicator A, both refering to down payment.
    this way you can find out what is the advance payment still with the vendor.

  • Problem in transporting the text elements for user exit EXIT_SAPLV09A_002

    Hi  All,
    I am facing a problem in transporting the text element (text symbol) for the exit EXIT_SAPLV09A_002. It is implemented and transported but the text elements are not transported and even if I try to delete them and then create them again, on activation it doesn't prompts for TO and it version its shows it as local object. I have tried to manually assign the TO by using limu as id of program and rept as type and SAPLXV09 as the name of the object but still it doesn't allows as an error message comes prompting local object cannot be assigned to TO. Kindly suggest solution this problem.
    Regards,
    Sachin
    Edited by: Sachin Dangayach on Nov 15, 2010 4:21 PM

    Hello ,
               In the Quality after you run the report check in the layout option>display text elements> variables and check what value is displayed for the use exit variable , if it is correct then problem may be in the selection you gave when you run the report if the user exit variable value is wrong , then set a break point in the code and run the report from rsrt and check where the error is.
    hope it is clear
    assign points if useful

  • Look for USER EXIT/Program similar with BADI:  BADI_SCD_ACCTG for SAP 4.5B

    Hello SAP Guru,
              We are having the challenging in performing posting to multiple G/L accounts per shipment. This is required, for example, if customer, interplant, and/or inbound orders are combined onto one shipment.
             We found this BADI that allows system to work the way we want; however, BADI is not support in 4.5B.
             This BADI is linked to enhancement LMR1M002 and function module MR_ACCOUNT_ASSIGMENT. Please refer to note 64204.
             Please advise, I am looking something similar that work in SAP 4.5B.
    Regards,
    Song

    Hi,
    Please try this:
    Enhancement  LMR1M002                             Account grouping for GR/IR account maintenance                    
    Enhancement  MRMH0001        Logistics Invoice Verification: ERS procedure                    
    Enhancement  LMR1M001                             User exits in Logistics Invoice Verification          
    Enhancement  LMR1M005                             Logistics Inv. Verification: Release Parked Doc. for Posting          
    Enhancement  LMR1M004          Logistics Invoice Verification: item text for follow-on docs                    
    I hope this may helpfull and let me know wht exactly the business needs so I can give you some more exits.
    Thank you,
    Thanks,
    AMS

  • Funtion Module for user exits  variables in BEx Queries.

    Hi,
    This is for BW Query customer exit variable (zvar2) for include ZXRSRU01 and exit :EXIT_SAPLRRS0_001.
    Can anyone please suggest the function modules that can be used to do the following.
    1)Read value of zvar1 from selection screen whatever 
      user enters at run time.
    2)How to define the zvar2 in the include. zvar2 is the 
      variable created in BEx to be populated from this
      customer exit.
    3)How to use case statment where once the value for zvar1
      is determined then,
       Case zvar1.
       when zvar1 = 0 , then zvar2 = 10
       when zvar1 = 1 , then zvar2 = 20
    3) Assign zvar2 value as computed in the case statement.
    Can anyone please help with the code to achieve this.
    Any information regarding function modules that can help write user exits for variable reading and input will be greatly helpful.
    Thanks
    Sarah.

    Hi Sarah,
    You don't need any FM for your issue.
    Please try thie sample code :
    DATA: VAR_INPIUT LIKE RRRANGEEXIT.
    CASE I_VNAM.
      WHEN 'ZVAR2'.
       CLEAR L_S_RANGE.
       IF I_STEP = 2."PROCESSED AFTER VARIABLE INPUT
    *Reading value of ZVAR1
        LOOP AT I_T_VAR_RANGE INTO VAR_INPIUT
          WHERE VNAM = 'ZVAR1'.
          CASE VAR_INPIUT-LOW.
    *FILLING ZVAR2
           WHEN 0.
              L_S_RANGE-LOW     = 10.
           WHEN 1.
              L_S_RANGE-LOW     = 20.
          ENDCASE.
          L_S_RANGE-SIGN     = 'I'.
          L_S_RANGE-OPT      = 'EQ'.
          APPEND L_S_RANGE TO E_T_RANGE.
          EXIT.
        ENDLOOP.
      ENDIF.
    ENDCASE.
    Hope this helps
    Joe

  • Modify Std. code to get value for User Exit.

    I am executing release strategry at user exit EXIT_SAPLEBND_002  ( Exit Name M06E0004 ), for the field ( USRN1)
    This has got user program ZXM06U22 in it. In this exit I get values from I_CEKKO , IT_BEKPO, IT_BEKET, IT_EKKNU
    and I have to pass the PO value from these structures to E_CEKKO-USRN1   ( This field has set in SPRO setting ) .
    I get the PO value as per standard calculation in the field IT_BEKPO-EFFWR , I also get a value in I_CEKKO-GNETW. However not one of both these values satisfy any one of my conditions. My document condition is defined in SPRO as ZVPA and values against it is calculated considering Taxes On PO. The fields EFFWR or GNETW does not include taxes. And my release startegy should get executed after considering the amount with taxes.
    After debugging a lot I have found that the PO_AMOUNT can be obtained from the Internal Table TKOMV. In this it is stored at TKOMV-KAWRT. I can get the TKOMV values at the point where this user-exit is called.
    i.e. in program MM06EF0S_STRATEGIE_CEKKO    in the last you can see the call to user exit wriiten as below
        CALL FUNCTION 'EXIT_SAPLEBND_002'
          EXPORTING
            i_cekko  = cekko
            it_bekpo = pot[]
            it_beket = ett[]
            it_ekknu = knt[]
          IMPORTING
            e_cekko  = cekko.
    If I put the debugger on  CALL FUNCTION 'EXIT_SAPLEBND_002 and go to TABLES tab and enter there 'TKOMV'
    I can get the table and it's values. However If I press F5 then I go inside my exit code i.e. ZXM06U22. But Here I Don't Get access to the internal table TKOMV , which is  accessible from main calling program MM06EF0S_STRATEGIE_CEKKO.
    My job can be done if I get value from TKOMV inside the code of ZXM06U22. However to get that code in ZXM06U22 what right now I can do is to get the access key of MM06EF0S_STRATEGIE_CEKKO and write code before exit Call and pass the ZVPA from TKOMV there. However many people here advised me not to do that since it is a STANDARD CODE.
    So I would like to know your suggestion in this regard.
    Amol

    Hi All
    Thanks for your quick replies. I wrote code below in my exit. But I am getting Compilation error at following line ( In Bold )
    DATA: l_name(50).
    DATA: my_tkomv TYPE TABLE OF komv.
    <b>FIELD-SYMBOLS: <tkomv> type standard table of komv.</b>l_name = '(SAPMMM06E)TKOMV[]'.
    ASSIGN (l_name) TO <tkomv>.
    my_tkomv[] = <tkomv>.
    The error is below
         "," expected after "TABLE".          
    I don't know whether TYPE TABLE OF is correct or not.
    I will be glad If I get some further help.
    Amol

  • Funtion Module for user exits for variables used in BEx Queries.

    Hi,
    This is for BW Query customer exit variable (zvar2) for include ZXRSRU01 and exit :EXIT_SAPLRRS0_001.
    Can anyone please suggest the function modules that can be used to do the following.
    1)Read value of zvar1 from selection screen whatever
    user enters at run time.
    2)How to define the zvar2 in the include. zvar2 is the
    variable created in BEx to be populated from this
    customer exit.
    3)How to use case statment where once the value for zvar1
    is determined then,
    Case zvar1.
    when zvar1 = 0 , then zvar2 = 10
    when zvar1 = 1 , then zvar2 = 20
    3) Assign zvar2 value as computed in the case statement.
    Can anyone please help with the code to achieve this.
    Any information regarding function modules that can help write user exits for variable reading and input will be greatly helpful.
    Thanks
    Sarah.

    Hi Sarah,
    You don't need any FM for your issue.
    Please try thie sample code :
    DATA: VAR_INPIUT LIKE RRRANGEEXIT.
    CASE I_VNAM.
      WHEN 'ZVAR2'.
       CLEAR L_S_RANGE.
       IF I_STEP = 2."PROCESSED AFTER VARIABLE INPUT
    *Reading value of ZVAR1
        LOOP AT I_T_VAR_RANGE INTO VAR_INPIUT
          WHERE VNAM = 'ZVAR1'.
          CASE VAR_INPIUT-LOW.
    *FILLING ZVAR2
           WHEN 0.
              L_S_RANGE-LOW     = 10.
           WHEN 1.
              L_S_RANGE-LOW     = 20.
          ENDCASE.
          L_S_RANGE-SIGN     = 'I'.
          L_S_RANGE-OPT      = 'EQ'.
          APPEND L_S_RANGE TO E_T_RANGE.
          EXIT.
        ENDLOOP.
      ENDIF.
    ENDCASE.
    Hope this helps
    Joe

Maybe you are looking for