How does the user exit of validation rules get triggered?

SPRO
FinancialAccounting> GL Accounting > Business Transaction > GL posting > Carry out doc settings > Validation in accounting docs
Here you can specify rules and call user exits also.
To add code into the user exit, we have to copy the standard program that contains this user exit and then create a z version?
If so, where do you tell to branch into the custom z program and not the standard program?

Go to transation GGB0(Change Validation), Go to Application Area/Time -> Financial Accounting -> Line Item. Create a validation what ever you want and add the steps/rules for that. You have a provision to give Rules/Exits(User Exit).

Similar Messages

  • After recording text using the dragon dictation app, it is converted, it can be copied to the iOS system clipboard for use in any app, how does the user access the clipboard to retrive this information if it is no longer on the screen?

    after recording text using the Dragon dictation app, it can be copied to the iOS systme clipboard for use in any app, how does the user access the clipboard to retrive this information if it is no longer on the screen?

    You need to do a long-press in any data entry field, then select Paste.

  • How does the field ABGRU-Reason for Rejection get populated in routines

    Hi All,
    How does the field ABGRU-Reason for Rejection get populated in routines(VOFM)?
    BELNR,KPOSN,etc...fields are populated through KOMK and KOMP structures, similar way what structure is used for ABGRU?
    by the time the control from VA01 comes to routine the values of VBAK and VBAP are cleared, so these structures like KOMP and KOMK are used.
    Thanks in advance.

    You need to add rejection reason field ABGRU as a new field to pricing field catalog (KOMG structure) through APPEND structure KOMPAZ. KOMG inherits new fields from KOMKAZ (for header level fields) or KOMPAZ (for item level fields) structures and it is not directly modified but through KOMKAZ and KOMPAZ structures
    Since VBAP-ABGRU can vary from item to item, add it to item pricing communication structure KOMPAZ in SE11. Once KOMPAZ is added with new ABGRU field and activated it will automatically appear in pricing field catalog (KOMG)
    Afterwards the ABGRU field will then start to appear in the field catalog where you can create condition table (V/03) including the ABGRU as a field. Once done the rest is assigning the condition table to access sequence which is in turn assigned to the relevant condition type that you want to price based on partner function (all under IMG -> SD -> Basic functions -> Pricing -> Pricing control)
    In the pricing user exit userexit_pricing_prepare_tkomp in include MV45AFZZ, you will need a few lines of coding to fetch VBAP-ABGRU for the item and pass it to tkomp-abrug field. This will then be used by system to read the new condition table that you created.
    tkomp-abgru= xvbap-abgru
    So if you populate special pricing based on ABGRU (with possibly other conditions) in the condition table then that condition record will be read for the corresponding condition type.
    You would of course need a developer to modify KOMPAZ structure and code the user exit for moving the rejection reason to tkomp
    That is in short how you can achieve this

  • How does the field CCSOFTLOCK in T000 Table get Updated ?

    Hello Experts !
    I would like to know how does the field CCSOFTLOCK in Table T000 Get updated ?
    I tried all fields in SCC4 for a client but none of my change updates CCSOFTLOCK .
    The Data Element Description says   Client control: Soft Lock Required (Planned for 4.0)
    What does this Planned for 4.0 Indicate. We are in ECC5.0.System.
    Regards,
    Mithun Shetty

    Hi Mithun,
    Can you check if Note "1047952 - SCC4: Client settings with enhanced security options "is  applied to your system.
    as per it , you can put additional restrtictions for modifying SCC4 (table T000) fields ,a BadI will be checked additionally.
    15. Parameter : CCCOPYLOCK_VAL_DEFAULT
           Type      : Exporting
           Pass Value : Check
           Optional  : Space
           Associated type: TYPE
           Reference Type : CCSOFTLOCK
    Regards,

  • FBCJ BADI/User Exit or Validation Rule Implementation

    Inspite of my maintaining validation as under, i am not able to achieve what i desire, i.e., System is still posting Cash transactions thru FBCJ t code for amount exceeding INR 50,000
    1. Created a validation name
    2. Assigned it to Application Area - FI
    3. Callup Point - 2 Line item
    4. In validation step 0001, created pre-requisite as
    Transaction code = 'FBCJ' AND Account Type = 'D' AND
    Posting key = '15'
    5. Under check, Amount <= '50000.00'
    6. Entered E in message type with corresponding message class ZKM_MSG_CLASS for message number 018
    7. Assigned the above validation in OB28 t code for activation level 1 (i.e., Active)
    System display a message; but also post it as well, despite of 'E' error message type.
    How to tackle with the above problem.
    Is there any other badi/user exit for FBCJ. I have only find CJ_DOCUMENT, but it's not working for me.
    Thanks and Regards,
    Sohail

    Hi
    Below are some of BADIs available for WAK1. Please check.
    Exit 
    WCOUP001  User exit for coupon processing in POS inbound
    BADIs
    RDM_BAPI_PROMO_CREATE - Enhancement Spot (RDM_OPT_PROMO_IN)
    RDM_PROMO_POST - Enhancement Spot
    RDM_PROMOTION_WAK1 - Enhancement Spot
    WAKT_BADI_001  -
    ~~~Ganesh Kumar K.

  • When does the Redirection to an outside URL get triggered?

    Before or after the CONFIRMATION Message?

    you will see the confirmation for a minimum of 5 sec then the redirect will happen.
    Gen

  • Adding Records In The User Exit

    I have a requirement to modify the transactional data user exit 0CO_PC_PCP_01. Currently this datasource extracts cost estimate data and using some complex rules I need to determine the active cost estimate for each month and duplicate the records according.
    ie if a cost estimate dated 01.01.2005 is valid for all of 2005 then I need to duplicate all corrsponding records 11 times ie one set of additional records per month.
    I have created the ABAP code to do this and for small volumes of data it works perfectly. However if I increase the data volume the exit seems to run and run.
    The code is as efficient as it can be and there are no database selects within it.
    My questions are:
    1)is it acceptable to add a high volume of new data in the user exit or should I be looking at an alternative.
    2) Does the user exit get called multiple times during a dataload. ie once per datapackage. If so then am I correct in saying it is dangerous to add records this way because some of the records added could already exist and be processed within another datapackage and therefore records would then be duplicated.
    3) One approach I have thought of but not yet tested is to use the function module(s) used by the SAP standard extractor to populate a table on R3 and then use a custome datasource to retrieve the data from this table.
    Any thoughts/views/answers on the above would be appreciated.
    Many thanks

    Simon,
    1. Lets say that the datapacket size is 20000 and all of your records are active. Then when it exits the user exit, the size of the datapacket would be 20000 X 12. that is a very large packet. Probably not a good idea to do this.
    2. The user exit will be called for each datapacket. That is correct and yes, it would be wrong to do this in a datapaket. If a record exists in two datapackets, then records are generated for this multiple times.
    3. Why are you not considering applying the logic in BW rather than doing it in R/3. That should be relatively easy.
    This is how you can do it. When loading the data into BW, load it into an ODS object. Add a new Infoobject to the ODS object (ZACTIVE) for example. In the update rules between infosource and ODS, apply the logic that you are using to determine if each record is active or not. Now from this ODS, load it to either INfoCube or ODS, wherver you want to. In the update rules between the two, you can use the "return table" to generate multiple records where ZACTIVE = true, or you can generate in the start routine instead.
    By doing this you emilinate the case of generating duplicate records.
    Hope that helps.
    Gova

  • Need the user exit/BADI name for Reverese order MIGo- ME21N(changing item)

    Hi
    I have the below requirement.
    I am changing the item details in the transaction MIGO transaction,the value of MSEG entries
    are got changed.and also it should change in the Purchase order level also(in the table EKKO).
    Can anybody tell me the User Exit /BADI name which is triggered in the Reverse order
    i.e MIGO -> ME21N.So that i can implement my code in the reverse order in the User Exit/BADI.

    hi I did not find any paramater type EKPO in the Exporting or changing of any methods in the BADI's given by you...........

  • User exit for iw21 to get Equipment 'position'

    Hi,
    can any one give the user exit for IW21, to get 'Position' of equipment.
    i.e. when i enter equipment in IW21 i am to save it's 'position '  automatically.

    Where do you want to to save the position in the notification?
    Also see the link at the top of this forum for PM/CS User-Exits
    PeteA

  • How does the production system take the benefit from user-exits.

    How does the production system take the benefit from user-exits.

    and it is not the production system that benefits. its the company and the people working with SAP that benefits from the user exits which allow SAP to be altered for the company specific situations.

  • How does the PRODUCTION SYSTEM take the benifit from the USER EXITS?

    how does the PRODUCTION SYSTEM take the benifit from the USER EXITS?
    please explain

    and it is not the production system that benefits. its the company and the people working with SAP that benefits from the user exits which allow SAP to be altered for the company specific situations.

  • Determine which validation step called the user exit, possible?

    Hello all,
    We have a a validation with different steps that use the  same user exit in their respective check.
    My functional analyst asked me if there is a way to programmatically determine in the user exit which step is executing the user exit.
    So I am asking the same question here.
    As an example:
    Validation FI100 has step 001,  002, and 003.
    Each of these steps use the user exit U100 from module pool ZGGBR001 in their check.
    I haven't found a way in the code of U100 to determine which step called U100.
    Does anyone know if this can be done?
    I have used the following technique to get a variable from the program's call stack.
    data: var_name(30) type c value '(Z_CALLING)VARIABLE' .
    field-symbols: <fs> type any.
      assign (var_name) to <fs>.
      write: / 'Variable from Z_CALLING', <fs>.
    But I'm not sure how this might work with validation steps/user exits.
    Thanks
    Bruce

    Vinod,
    I did some debugging after I posted my question.  I came to the same solution, use FM 'SYSTEM_CALLSTACK'.
    VALCHCK_2FI100##001
    loop at i_callstack into w_callstack
                        where EVENTNAME+0(9) = 'VALCHCK_2'.
    FI110 is the validation
    001    is the step
    Thomas,
    Thanks for the caveats. 
    Bruce

  • How to find out the user-exits?

    hi.
    how to find out the user-exits?
    regards
    eswar.

    Hi,
    *& Report  ZEXITFINDER
    *report  zexitfinder.
    *& Enter the transaction code that you want to search through in order
    *& to find which Standard SAP User Exits exists.
    *& Tables
    tables : tstc, "SAP Transaction Codes
    tadir, "Directory of Repository Objects
    modsapt, "SAP Enhancements - Short Texts
    modact, "Modifications
    trdir, "System table TRDIR
    tfdir, "Function Module
    enlfdir, "Additional Attributes for Function Modules
    tstct. "Transaction Code Texts
    *& Variables
    data : jtab like tadir occurs 0 with header line.
    data : field1(30).
    data : v_devclass like tadir-devclass.
    *& Selection Screen Parameters
    selection-screen begin of block a01 with frame title text-001.
    selection-screen skip.
    parameters : p_tcode like tstc-tcode obligatory.
    selection-screen skip.
    selection-screen end of block a01.
    *& Start of main program
    start-of-selection.
    Validate Transaction Code
    select single * from tstc
    where tcode eq p_tcode.
    Find Repository Objects for transaction code
    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 = enlfdir-area.
    move : tadir-devclass to v_devclass.
    endif.
    endif.
    Find SAP Modifactions
    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.
    Take the user to SMOD for the Exit that was selected.
    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.
    Regards

  • How to find the user-exit for transaction fpp2

    Hi experts,
    could you help me how can I find the user-exit for transaction fpp2. I tried to after the package, but I did not find it.

    Hi,
    Use the following program to find user exits of specified code.
    *& Tables
    TABLES : tstc,     "SAP® Transaction Codes
             tadir,    "Directory of Repository Objects
             modsapt,  "SAP® Enhancements - Short Texts
             modact,   "Modifications
             trdir,    "System table TRDIR
             tfdir,    "Function Module
             enlfdir,  "Additional Attributes for Function Modules
             tstct.    "Transaction Code Texts
    *& Variables
    DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
    DATA : field1(30).
    DATA : v_devclass LIKE tadir-devclass.
    *& Selection Screen Parameters
    SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
    SELECTION-SCREEN SKIP.
    PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN END OF BLOCK a01.
    *& Start of main program
    START-OF-SELECTION.
    Validate Transaction Code
      SELECT SINGLE * FROM tstc
        WHERE tcode EQ p_tcode.
    Find Repository Objects for transaction code
      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 = enlfdir-area.
            MOVE : tadir-devclass TO v_devclass.
          ENDIF.
        ENDIF.
    Find SAP® Modifications
        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.
    Take the user to SMOD for the Exit that was selected.
    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.
    I executed the above program but there are no user exits for the specified Transaction.
    Thanks,
    Naveen Kumar.

  • How to  find the user exit for a screen..

    Hi,
    plz help me how to find the user exit for a screen..?
    Regards
    Anbu

    Hi,
    check this program this will give you the list of user-exit and BADI for the perticular Tcode.
    REPORT  zuserexit_badi.
    TABLES : tstc,
    tadir,
    modsapt,
    modact,
    trdir,
    tfdir,
    enlfdir,
    sxs_attrt ,
    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,
    p_pgmna LIKE tstc-pgmna .
    DATA wa_tadir TYPE tadir.
    START-OF-SELECTION.
      IF NOT p_tcode IS INITIAL.
        SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
      ELSEIF NOT p_pgmna IS INITIAL.
        tstc-pgmna = p_pgmna.
      ENDIF.
      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 IN ('SMOD', 'SXSD')
        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:/(105) sy-uline.
          FORMAT COLOR COL_HEADING INTENSIFIED ON.
    Sorting the internal Table
          SORT jtab BY object.
          DATA : wf_txt(60) TYPE c,
          wf_smod TYPE i ,
          wf_badi TYPE i ,
          wf_object2(30) TYPE c.
          CLEAR : wf_smod, wf_badi , wf_object2.
    Get the total SMOD.
          LOOP AT jtab INTO wa_tadir.
            AT FIRST.
              FORMAT COLOR COL_HEADING INTENSIFIED ON.
              WRITE:/1 sy-vline,
              2 'Enhancement/ Business Add-in',
              41 sy-vline ,
              42 'Description',
              105 sy-vline.
              WRITE:/(105) sy-uline.
            ENDAT.
            CLEAR wf_txt.
            AT NEW object.
              IF wa_tadir-object = 'SMOD'.
                wf_object2 = 'Enhancement' .
              ELSEIF wa_tadir-object = 'SXSD'.
                wf_object2 = ' Business Add-in'.
              ENDIF.
              FORMAT COLOR COL_GROUP INTENSIFIED ON.
              WRITE:/1 sy-vline,
              2 wf_object2,
              105 sy-vline.
            ENDAT.
            CASE wa_tadir-object.
              WHEN 'SMOD'.
                wf_smod = wf_smod + 1.
                SELECT SINGLE modtext INTO wf_txt
                FROM modsapt
                WHERE sprsl = sy-langu
                AND name = wa_tadir-obj_name.
                FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
              WHEN 'SXSD'.
    For BADis
                wf_badi = wf_badi + 1 .
                SELECT SINGLE text INTO wf_txt
                FROM sxs_attrt
                WHERE sprsl = sy-langu
                AND exit_name = wa_tadir-obj_name.
                FORMAT COLOR COL_NORMAL INTENSIFIED ON.
            ENDCASE.
            WRITE:/1 sy-vline,
            2 wa_tadir-obj_name HOTSPOT ON,
            41 sy-vline ,
            42 wf_txt,
            105 sy-vline.
            AT END OF object.
              WRITE : /(105) sy-uline.
            ENDAT.
          ENDLOOP.
          WRITE:/(105) sy-uline.
          SKIP.
          FORMAT COLOR COL_TOTAL INTENSIFIED ON.
          WRITE:/ 'No.of Exits:' , wf_smod.
          WRITE:/ 'No.of BADis:' , wf_badi.
        ELSE.
          FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
          WRITE:/(105) 'No userexits or BADis exist'.
        ENDIF.
      ELSE.
        FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
        WRITE:/(105) 'Transaction does not exist'.
      ENDIF.
    AT LINE-SELECTION.
      DATA : wf_object TYPE tadir-object.
      CLEAR wf_object.
      GET CURSOR FIELD field1.
      CHECK field1(8) EQ 'WA_TADIR'.
      READ TABLE jtab WITH KEY obj_name = sy-lisel+1(20).
      MOVE jtab-object TO wf_object.
      CASE wf_object.
        WHEN 'SMOD'.
          SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
          CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
        WHEN 'SXSD'.
          SET PARAMETER ID 'EXN' FIELD sy-lisel+1(20).
          CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
      ENDCASE.
    Reagards,
    Bharat.

Maybe you are looking for