User Exit  for Compounded Key

I have written a FM that was included in a user exit.  The purpose of my user exit is to restrict  certain  Accounts that my Query uses.  The problem that I run into is that the  Account is a numerical value which is NOT a key.  For example, I could have one  account that exists in two different reporting divisions such as Africa and Asia and might not want to restrict Africa.  If I don't take into consideration the divison, then I will be eliminating required  Accounts.  I thought about creating a seperate user exit for the reporting division but then I might run into the problem of eliminating certain  Accounts that are associated with that division.  I'm thinking that If I create another user exit for the division, then I will somehow have to link the two(not sure how this would work). Secondly, the divison and account is a compounded key in my InfoCube.  There is not InfoObject that holds the compounded key so I can not create a variable of this type.
I'm not sure what would be the best way to solve this problem so any input you can give is greatly appreciated.
Thanks,
Nyrvole

Hi Reddy,
This user exit can creating & activating in project by using CMOD Transaction code.
AFAR0002 is Enhanc for external determination of depreciation.
Thank you
Anil

Similar Messages

  • 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.

  • User exit for BOM

    hello,....
    problem: using BOM in VA01...for free goods material.....
    I am working on user exit for BOM...I need to write a code in FV45SFCO_CONFIGURATION_SET_STM under this we have call customer funcion '003'
    if we click on this we will enter in include ZXVVAU12.....In this including I need to write the code(user exit) by using XSTB table and the values in that table I have to populate in XVBAP.......for the BOM Explosion........when we use VA01......
    so please tell me how can i write the code in that exit ...by getting the data from XSTB to XVBAP........by using the field STLAL (It is Alternative BOM in BOM Screen)...for example if I select '05' (stlal) BOM type.....the values in XSTB populate in XVBAP...
    anyone help me on this........
    Otherwise give me any other sample code for the userexit BOM so that I will learn...a lot from that....
    Thanks in advance,
    Madhu

    Hi Madhu,
    You can try something like this to read XSTB in user exits EXIT_SAPFV45S_003.
    DATA: XT_XSTB LIKE STANDARD TABLE OF SDSTPOX WITH HEADER LINE.
    FIELD-SYMBOLS: <XSTB> TYPE TABLE.
    DATA: FIELD_NAME(30) VALUE '(SAPFV45S)XSTB[]'.
    ASSIGN (FIELD_NAME) TO <XSTB>.
    XT_XSTB[] = <XSTB>.
    READ TABLE XT_XSTB WITH KEY STLAL = '05'.
    IF SY-SUBRC = 0.
    ....                      <--- your logic to move to VBAP
    ENDIF.
    Regards,
    Ferry Lianto

  • BAdI/User Exit for MM01

    Hi All,
    I am looking for a User Exit for MM01
    I need to catpure the Document data in MM01>Additional data>Document data tab
    I checked with the following enchancements but no use
    MGA00001
    MGA00002
    MGA00003
    BADI_Material_Check.
    Can any one help me in finding the suitable enhancemet?
    Thanks
    Bhasker

    Hi Bhasker
    Go to Se18 Tcode
    and give the definition name is "DOCUMENT_MAIN01"
    check the definition in display mode because it is Sap Standard Definition.
    there you will find a "TYPE" Tab
    under this you have two check boxes 
    <b>1) Multiple Use</b>
    2) Filter-Depend
    if you want multiple implementations  check this Check box
    after this you need to create a request and the system asks  Access Key for Changes
    for that you will catch that Key from your Basis Team.
    Regards
    Sreeni

  • BADI/User Exit for KO02

    Dear Experts,
    When I'm setting the BUDGETED status manually to Internal Order (With out distributing the Budget to Order in IM52) and after if I m setting RELEASE status the system is accepting. So, I want to stop this without giving the budget in IO, it should not accept to release IO.
    This is not possible with User Status, coz' User may go and set manually "REL" Status.
    can anyone suggest me the BAdi/User Exit for KO02(Internal Order Change) tcode.
    Thanks,
    Sanju.

    When you set a User status , you can assign an Authorization Object on who can change the status .
    Follow the path in SPRO--> Controlling --> Internal orders --> Order Master Data > Status Management> Define authorization Keys for Status Management
    Define Authorization Keys for Status Management
    In this step you define authorization keys which you can use to set up authorization checks when you manually set or delete a user status. When the system sets a user status as a reaction to business transaction, it does not perform an authorization check.
    When you set or delete a user status, the system checks whether the user is authorized for this action. In addition to the status profile and the object type, the system also checks the authorization key assigned to the user status in question.
    Example
    You want to define that certain user statuses can be changed only by a specified employee group.
    To do this, create an authorization key and assign it to the relevant user statuses.
    In the general authorization maintenance you can then assign authorizations for this key via the authorization object B_USERSTAT.
    Activities
    1. Check whether you want to define authorizations for your user statuses.
    2. If necessary, create authorization keys as follows:
    a) Choose "New entries".
    b) Enter a key and an explanatory text in the appropriate fields and choose "Save".
    You have now created the authorization key.
    3. Assign the authorization key to one or more user statuses in your status profile.
    4. Define corresponding authorizations and include them in the relevant authorization profiles.

  • User Exit for payment term

    Hi Friends
    how to write the User Exit for Payment terms at Item Level. Any Sample User Exits can help me if no exact User Exit Is there
    User Exit Name : USEREXIT_MOVE_FIELD_TO_VBKD
    Thanks in Advance.
    Regards
    sahiti

    Hi Amrish.
    thanks again.
    Hear is the complete ticket which i got from the client.
    1. User exit in Program MV45AFZZ
    User Exit Name : USEREXIT_MOVE_FIELD_TO_VBKD.
    create an include first - and then add the statements to that include..
    this way when there is a patch or an upgrade - we need to only type the include statement and not the extire userexit.
    2. External Table Specifications:
    the table is client dependent
    table name: zpaymentterm.
    client(keyfield)-mandt
    sales org(key)vkorg
    sales Doc-(key)auart
    material Grp-Matkl
    cust:kunnr
    Payment term (zterm) : ijput field in table maintenance
    3. select from the ztable using vbak-vkorg/vbak-auart/vbap-matkl/vbak-kunnr is equal to zztable fields.
    move corresponding zztable-zterm to vbkd-zterm.
    4. Validations: if no entry found in ztable then payment term from the customer master should be copied in the document.
    5. Create the maintenence view for the table and assigned with Transaction Code.
    Thanks in advance.
    Sahiti.

  • User exit for MRP run - MD01

    Hi All,
    Can i know the use of "User exit parameter" field in MD01. as i know it means if we only want to plan the materials of a certain MRP controller, for example, we can enter the key of the appropriate MRP controller as the parameter.
    in my scenario, we have already incorporated a user exit for MD01 - MRP Run.
    i have 3 MRP controllers, but want to plan for only 2 MRP controllers, then how to enter in that field?
    Regards,
    Ram

    HI,
    User exit are available for Md01 transaction. You can plan material by MRP Type, MRP Controller,MRP Type, Procurement type & so on....
    Once you activate user exit, you can select the same by drill down option in user exit Key field.
    Regards,
    Milind.

  • Abap code of user EXIT for my first post on FISCPER_CALC_MONTH or year

    *ZSIGFISCPER Exercice cumulé jusqu'à la période selectionnée par utilisateur
    TABLES: TVARVC.
    DATA: L_S_RANGE TYPE RSR_S_RANGESID.
    DATA : LOC_VAR_RANGE LIKE RRRANGEEXIT,
    v_year like T009B-BDATJ,
    v_per3 like T009B-POPER,
    v_month(3) type c,
    v_initial(7) type c,
    v_date type d,
    w_progcod like tvarvc-low.
    BREAK-POINT.
    CASE I_VNAM.
      WHEN 'ZSIGFISCPER'.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            v_year = LOC_VAR_RANGE-LOW(4).
            concatenate v_year '001' into v_initial.
            L_S_RANGE-LOW = v_initial.
            L_S_RANGE-HIGH = LOC_VAR_RANGE-LOW.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'BT'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
      WHEN 'ZSIGVFISCYEAR'.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            CLEAR v_year.
            v_year = LOC_VAR_RANGE-LOW(4).
            L_S_RANGE-LOW = v_year.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'EQ'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
    *Sélection de la période 1 par rapport à une période sélectionnée via la variable 'ZP_FIL_FISCPER'
      WHEN 'ZVUEPER1'.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            CLEAR v_year.
            v_year = LOC_VAR_RANGE-LOW(4).
            concatenate v_year '001' into v_initial.
            L_S_RANGE-LOW = v_initial.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'EQ'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
    *Sélection de la période 1 par rapport à une période sélectionnée via la variable 'ZSIGFISC'
      WHEN 'ZVUEPER2'.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZSIGFISC'.
            CLEAR L_S_RANGE.
            CLEAR v_year.
            v_year = LOC_VAR_RANGE-LOW(4).
            concatenate v_year '001' into v_initial.
            L_S_RANGE-LOW = v_initial.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'EQ'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
    Variables pour la requête ZSIGRQ_ZSIGMCM1_01 (Suivi des investissements)
      WHEN 'ZSIGCDR2'.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            CLEAR v_year.
            v_year = LOC_VAR_RANGE-LOW(4).
            CONCATENATE v_year '01' '01' INTO v_date.
            L_S_RANGE-LOW = v_date.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'EQ'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
      WHEN 'ZSIGCDMS'. " Date de mise en service
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            CLEAR v_year.
            v_year = LOC_VAR_RANGE-LOW(4).
            CONCATENATE v_year '01' '01' INTO v_date.
            L_S_RANGE-LOW = v_date.
            CONCATENATE v_year '12' '31' into v_date.
            L_S_RANGE-HIGH = v_date.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'BT'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
      WHEN 'ZSIGHIM'. " Hierarchie
        IF I_STEP = 1. "before the popup
          Clear v_year.
          SELECT SINGLE * FROM TVARVC WHERE NAME EQ 'ZSIG_REF_0APPR_YEAR'.
          IF sy-subrc EQ 0.
            v_year = TVARVC-low.
          ENDIF.
          CLEAR w_progcod.
          SELECT SINGLE * FROM TVARVC WHERE NAME EQ 'ZSIFVA_REF_0PROG_DEF_S'.
          IF sy-subrc EQ 0.
            w_progcod = TVARVC-low.
          ELSE.
            MESSAGE 'Variable ZSIFVA_REF_0PROG_DEF_S is missing in TVARVC' TYPE 'E'.
          ENDIF.
          CONCATENATE w_progcod v_year INTO L_S_RANGE-LOW.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT = 'EQ'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            CLEAR v_year.
            v_year = LOC_VAR_RANGE-LOW(4).
            CLEAR w_progcod.
            SELECT SINGLE * FROM TVARVC WHERE NAME EQ 'ZSIFVA_REF_0PROG_DEF_S'.
            IF sy-subrc EQ 0.
              w_progcod = TVARVC-low.
            ELSE.
              MESSAGE 'Variable ZSIFVA_REF_0PROG_DEF_S is missing in TVARVC' TYPE 'E'.
            ENDIF.
            CONCATENATE w_progcod v_year INTO L_S_RANGE-LOW.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'EQ'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
      WHEN 'ZSIGCAC'. " version
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            CLEAR v_month.
            v_month = LOC_VAR_RANGE-LOW+4(3).
            IF v_month LE '003'.
              L_S_RANGE-LOW = 'PLA'.
              L_S_RANGE-SIGN = 'I'.
              L_S_RANGE-OPT = 'EQ'.
            ELSEIF v_month LE '008'.
              L_S_RANGE-LOW = 'AC1'.
              L_S_RANGE-SIGN = 'I'.
              L_S_RANGE-OPT = 'EQ'.
            ELSE.
              L_S_RANGE-LOW = 'AC2'.
              L_S_RANGE-SIGN = 'I'.
              L_S_RANGE-OPT = 'EQ'.
            ENDIF.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
      WHEN 'ZSIGDDP'.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'ZP_FIL_FISCPER'.
            CLEAR L_S_RANGE.
            CLEAR v_year.
            v_year = LOC_VAR_RANGE-LOW(4).
            v_per3 = LOC_VAR_RANGE-LOW+4(3).
            CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
              EXPORTING
                I_GJAHR              = v_year
      I_MONMIT             = 00
                I_PERIV              = 'K4'
                I_POPER              = v_per3
              IMPORTING
                E_DATE               = v_date
              EXCEPTIONS
                INPUT_FALSE          = 1
                T009_NOTFOUND        = 2
                T009B_NOTFOUND       = 3
                OTHERS               = 4
            IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
            L_S_RANGE-LOW = '20101231'."v_date.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'EQ'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
    Variable Z_DATE_REF_INF_FOUR pour caracteristique 0CALDAY
    Intervalle
      WHEN 'Z_DATE_REF_INF_FOUR'.
        IF I_STEP = 2. "after the popup
          LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE WHERE VNAM = 'Z_DATE_REF_SUP_FOUR'.
            CLEAR L_S_RANGE.
            CLEAR v_date.
            v_date = LOC_VAR_RANGE-low.
           break-point.
            CALL FUNCTION 'SALP_CALC_DATE'
              EXPORTING
                IN_RECTYPE          = 'M'
                IN_NBR_DWXMQY       = '6'
                IN_DATE             = v_date
             IMPORTING
               OUT_DATE            = v_date
            EXCEPTIONS
              OTHER_ERROR         = 1
              OTHERS              = 2
            IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
            CALL FUNCTION 'SALP_CALC_DATE'
              EXPORTING
                IN_RECTYPE          = 'Y'
                IN_NBR_DWXMQY       = '-2'
                IN_DATE             = v_date
             IMPORTING
               OUT_DATE            = v_date
            EXCEPTIONS
              OTHER_ERROR         = 1
              OTHERS              = 2
            IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
            L_S_RANGE-LOW = v_date.
            L_S_RANGE-SIGN = 'I'.
            L_S_RANGE-OPT = 'EQ'.
            APPEND L_S_RANGE TO E_T_RANGE.
          ENDLOOP.
        ENDIF.
    Variable Z_DATE_REF_INF_FOUR pour caracteristique 0CALDAY
    Intervalle
    Variables pour Production interne
    Intervalle
    Debut - FDUPEYROUX - 11/01/2010
      WHEN 'ZSIGPEROI'.
        IF I_STEP = 2. "after the popup
          CLEAR L_S_RANGE.
          CLEAR v_date.
          READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE
           WITH KEY VNAM = 'ZSIGPERPI'.
          L_S_RANGE-LOW  = LOC_VAR_RANGE-HIGH.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT  = 'EQ'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
      WHEN 'ZSIGPEROI_ENT'.
        IF I_STEP = 2. "after the popup
          CLEAR L_S_RANGE.
          READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE
           WITH KEY VNAM = 'ZSIGPERPI'.
          L_S_RANGE-HIGH = LOC_VAR_RANGE-HIGH.
          L_S_RANGE-LOW  = '1000001'.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT  = 'BT'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
      WHEN 'ZSIGPEROI_P1'.
        IF I_STEP = 2. "after the popup
          CLEAR: L_S_RANGE, v_per3.
          READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE
           WITH KEY VNAM = 'ZSIGPERPI'.
          IF LOC_VAR_RANGE-LOW+4(3) = '001'.
            LOC_VAR_RANGE-LOW(4) = LOC_VAR_RANGE-LOW(4) - 1.
            LOC_VAR_RANGE-LOW+4(3) = '012'.
          ELSE.
            v_per3 = LOC_VAR_RANGE-LOW+4(3) - 1.
            LOC_VAR_RANGE-LOW+4(3) = v_per3.
          ENDIF.
          L_S_RANGE-LOW  = LOC_VAR_RANGE-LOW.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT  = 'EQ'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
      WHEN 'ZSIGPEROI_PINF'.
        IF I_STEP = 2. "after the popup
          CLEAR: L_S_RANGE, v_per3.
          READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE
           WITH KEY VNAM = 'ZSIGPERPI'.
          IF LOC_VAR_RANGE-LOW+4(3) = '001'.
            LOC_VAR_RANGE-LOW(4) = LOC_VAR_RANGE-LOW(4) - 1.
            LOC_VAR_RANGE-LOW+4(3) = '012'.
          ELSE.
            v_per3 = LOC_VAR_RANGE-LOW+4(3) - 1.
            LOC_VAR_RANGE-LOW+4(3) = v_per3.
          ENDIF.
          L_S_RANGE-HIGH = LOC_VAR_RANGE-LOW.
          L_S_RANGE-LOW  = '1000001'.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT  = 'BT'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
      WHEN 'ZSIGPERAN'.
        IF I_STEP = 2. "after the popup
          CLEAR L_S_RANGE.
          READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE
           WITH KEY VNAM = 'ZSIGPERPI'.
          L_S_RANGE-HIGH = LOC_VAR_RANGE-HIGH.
          L_S_RANGE-LOW  = '1000001'.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT  = 'BT'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
      WHEN 'ZSIGVDRPI'.
        IF I_STEP = 2. "after the popup
          CLEAR: L_S_RANGE,v_date,v_year,v_per3.
          READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE
           WITH KEY VNAM = 'ZSIGPERPI'.
          v_year = LOC_VAR_RANGE-HIGH(4).
          v_per3 = LOC_VAR_RANGE-HIGH+4(3).
          CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
            EXPORTING
              I_GJAHR        = v_year
              I_MONMIT       = 00
              I_PERIV        = 'K4'
              I_POPER        = v_per3
            IMPORTING
              E_DATE         = v_date
            EXCEPTIONS
              INPUT_FALSE    = 1
              T009_NOTFOUND  = 2
              T009B_NOTFOUND = 3
              OTHERS         = 4.
          L_S_RANGE-LOW  = v_date.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT  = 'EQ'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
    Variables pour Production interne
    Intervalle
    Variables pour Production interne
    Intervalle
    WHEN 'ZSIGVDRPIM1'.
        IF I_STEP = 2. "after the popup
          CLEAR: L_S_RANGE,v_date,v_year,v_per3.
          READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE
           WITH KEY VNAM = 'ZSIGPERPI'.
          IF LOC_VAR_RANGE-LOW+4(3) = '001'.
            LOC_VAR_RANGE-LOW(4) = LOC_VAR_RANGE-LOW(4) - 1.
            LOC_VAR_RANGE-LOW+4(3) = '012'.
          ELSE.
            v_per3 = LOC_VAR_RANGE-LOW+4(3) - 1.
            LOC_VAR_RANGE-LOW+4(3) = v_per3.
          ENDIF.
          v_year = LOC_VAR_RANGE-LOW(4).
          v_per3 = LOC_VAR_RANGE-LOW+4(3).
          CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
            EXPORTING
              I_GJAHR        = v_year
              I_MONMIT       = 00
              I_PERIV        = 'K4'
              I_POPER        = v_per3
            IMPORTING
              E_DATE         = v_date
            EXCEPTIONS
              INPUT_FALSE    = 1
              T009_NOTFOUND  = 2
              T009B_NOTFOUND = 3
              OTHERS         = 4.
          L_S_RANGE-LOW  = v_date.
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT  = 'EQ'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
    Variables pour Production interne
    Intervalle
    Edited by: Yass79 on Jan 9, 2012 8:55 PM

    Hi ricx,
    hmm, Finally I got you...
    What you are asking is;
    Is it possible to have User exit for Custom Developed ABAP Programs?
    Am i right?
    If this is your question, i can say it is not needed as we can edit Zprograms whenever we need.
    If you have more doubts, revert back....
    Regards
    Karthik D

  • User exit for updating delivery block of Sales order before Delivery

    Hi  Folks,
    Need to have an user exit for updating Delivery Block indicator for a Sales order Before creating its delivery
    I have got an exit in Program SAPMV45A
    MV50AFZ1
    FORM USEREXIT_REFRESH_DOCUMENT.
    that hits before processing the delivery block fro delivery (Correct me if i m wrong with this )
    Now i want now how to change the Delivery Block indicator of Sales order in that exit
    any FM available ?
    Thanks n regards
    Sonal...

    Hi  ,
    How did you solved this issue?
    I am having similar scenario in which while pressing the save button  delivery block should update if multiple schedule line exist.
    Tried by two different approaches in various user exit without any success.
    AFAIK we have two ways to achieve this functionality.
    1) Count the no of rows in vbep. If greater than 1 then multiple schedule line exist and we can assign the value to VBAK-LIFSK(delivery block) as per our requirement.
    This is not correct. If there are two line items both with single schedule line . This case total no lines in vbep will 2 and above condition will true which is incorrect.
    2) There is a indicator for multiple schedule line (VBAPD-EPMEH , xvbap-epmeh ) if it is check then multiple schedule line exist and we can assign the value to VBAK-LIFSK(delivery block) as per our requirement.
    If I write code in USEREXIT_SAVE_DOCUMENT_PREPARE.
    Multiple schedule line indicator is not populate so can not use 2nd approach.
    If I write code in  USEREXIT_SAVE_DOCUMENT it of no use as vbak is updated before reaching this user exit.
    If I write code in USEREXIT_MOVE_FIELD_TO_VBAK as this user exit is also called while pressing the enter key for this I have use
    the condition of fcode but it also fails in some condition.
    If fcode eq 'SICH'.
    Read table xvbap with key epmeh = 'X'.
    IF SY-SUBRC = 0.
    VBAK-LIFSK = '03'.
    Else.
    VBAK-LIFSK = ' '.
    Endif.
    Endif.
    Please help me to get the desired functionality working for all cases.
    1) One line item with multiple schedule line                                              
    2) Two line item with multiple schedule line                                             
    3) One line item having one schedule line and second one having multiple
    4)Two line item both with single schedule line.

  • As01 transaction using substitution user exit populate classificaion key

    Hi all,
    I have a requirement, where in using the substitution user exit rule U210, I need to populate fields ANLB-NDPER, ANLB-NDJAR and ALNA-VMGLI  from the values maintained in Ztable.
    I am able to overwrite the SAP standard values for the fields ANLB-NDPER and ANLB-NDJAR. But not able to populate the filed VMGLI(Classification key).   
    For some asset classes, the classification key is not mandatory and the user without giving the value in that field if save the transaction, then I need to populate the value of VMGLI with the ztable value.
    The present rule U210 is not working for classification key.  
    Please suggest, is there any other user exit for the scenario where we can populate VBGLI field.
    regards
    Rajani Yeluri

    Hi,
    Did you find a solution. I'm just looking for the same thing.
    best regards..

  • As01 using substitution user exit populate classificaion key(ANLA-VMGLI)

    Hi all,
    I have a requirement, where in using the substitution user exit rule U210, I need to populate fields ANLB-NDPER, ANLB-NDJAR and ALNA-VMGLI from the values maintained in Ztable.
    I am able to overwrite the SAP standard values for the fields ANLB-NDPER and ANLB-NDJAR. But not able to populate the filed VMGLI(Classification key).
    For some asset classes, the classification key is not mandatory and the user without giving the value in that field if save the transaction, then I need to populate the value of VMGLI with the ztable value.
    The present rule U210 is not working for classification key.
    Please suggest, is there any other user exit for the scenario where we can populate VBGLI field.
    regards
    Rajani Yeluri

    Hi Balaji,
    We have the same problem.
    Have you discovered how to make this exit works?
    We will really apreciate your help.
    Thanks a lot,
    Ivan Spellmeier

  • Need Help for User Exit for Pricing

    Dear ABAPers
    I created a user exit for pricing where I am comparing a condition type (manually entered(ZD01)) to another condition type(YD01). If the entered value is more than the other condition type than pricing should not be updated.
    RATE = 0.
    IF KOMP-ZZVBTYP = 'C'.
    IF KOMP-PRSFD = 'X' OR
       KOMP-PRSFD = 'A'.
      IF KOMV-KSCHL = 'ZD01'.
            LOOP AT XKOMV WHERE  KSCHL EQ 'YD01'.
                  KOMP-KZWI2 = ( XKOMV-KBETR / 10 ).
            ENDLOOP.
            RATE = KOMV-KBETR / 10.
        IF ( RATE <> 0 ) AND ( RATE < KOMP-KZWI2 ).
            MESSAGE W991. "Maximum Allowed Discount Has Exceeded !!!!
            CLEAR KOMV-KBETR.
            CLEAR KOMV-KWERT.
            MODIFY SCREEN.
        ENDIF.
      ENDIF.
    ENDIF.
    ENDIF.
    It is giving me the message but it is also updating the pricing. I want not to be updated. So in place of modify screen i need to reset pricing procedure.
    I need a function module or a abap key word which can reset the pricing procedure.
    Thanks in Advance.
    regards,
    MAM

    as per i can understand you are coding in user-exits ,.. so if you are giving that
    message 'Maximum Allowed Discount Has Exceeded !!!!' type 'E'.
    i think it will work. I think there is no way to stop the processing without type e.
    regards
    shiba dutta

  • NEED VL02N VL09 USER-EXIT FOR DELIVERY COMPLETE INDICATOR IN PURCHASE ORDER

    I NEED VL02N VL09 USER-EXITS FOR DELIVERY COMPLETE INDICATOR IN PURCHASE ORDER POSITIONS.
    F.X: IF POST QUANTITY 10, BUT PURCHASE ORDER POSITION QUANTITY 30, I NEED AT ANY CASE TO SET DELIVERY COMPLETE INDICATOR FOR RELEVANT OUTBOUND DELIVERY AN P. ORDER POSITIONS.
    THANKS/

    Hi Malka,
    It's possible set the system to mark automatically the delivery completed indicator.
    First you need to set the under delivery and over delivery tolerances.You do this in customizing:
    Materials Management under Purchasing -> Material Master -> Define Purchasing Value Keys.
    Once you set this, you can insert this value keys on Material Master Record for the materials.
    When you create the PO with a material with this value keys set the system will check the under delivery and over delivery set on customizing.
    In customizing you also have the option to let the system mark automatically the delivery indicator based on delivery tolerances set.
    In Customizing for Inventory Management and Physical Inventory under Goods Receipt -> Set Delivery Completed Indicator, you can determine for each plant whether the system automatically sets the delivery completed indicator for delivery quantities within the underdelivery and overdelivery tolerances.
    You can test setting the under delivery for 0 (with a warning message) and see if the system will only mark delivery complete only for over delivery.
    You can also work with the following Badi: MB_GOODSMOVEMENT_DCI. This Badi also allows custom logic for setting the delivery completed indicator in a PO item.
    Message: M7 433 (The "delivery completed" indicator is set for the purchase order item)
    Regards,
    Rodrigo

  • User exit for Delivery Module

    Hi ,
    I had a include program in Development for Delivery module, "MV50AFZ1" in program "SAPMV50A", which is supposed to be a user exit.  So I transported that to production on clients requirement, but then its creating some problems for client, so he wants his previous program to be back.  But I can't change this "MV50AFZ1" program in development nor in Production.  So how could I bring that previous code in production. 
    Plz help, and if possible tell me how can I change "MV50AFZ1" program code.
    Thanks.
    Shailesh.

    check the below link for user exits in SD
    http://help.sap.com/saphelp_46c/helpdata/en/1c/f62c7dd435d1118b3f0060b03ca329/content.htm
    Some more links r here....
    User Exits In Sales Document Processing
    http://help.sap.com/saphelp_46c/helpdata/en/1c/f62c7dd435d1118b3f0060b03ca329/content.htm
    Get the access key from basis for the program SAPMV45A. And change the screen.
    First create a subscreen with that two fields, call that subscreen in the screen 8309.
    call subscreen s2 including 'SAPMV45A' '9002'.
    How to add custoim fields on the additiondata b tab of va01 and va02
    VA01/VA02  screen exit
    Re: Is there any enhancement  available .....for va01??
    Add a field in va01 transaction
    Additional Screen field in VA41 or VA01
    Here are the user exits available for creating PO.
    AMPL0001 - User subscreen for additional data on AMPL
    LMEDR001 - Enhancements to print program
    LMELA002 - Adopt batch no. from shipping notification when posting a GR
    LMELA010 - Inbound shipping notification: Transfer item data from IDOC
    LMEQR001 - User exit for source determination
    LMEXF001 - Conditions in Purchasing Documents Without Invoice Receipt
    LWSUS001 - Customer-Specific Source Determination in Retail
    M06B0001 - Role determination for purchase requisition release
    M06B0002 - Changes to comm. structure for purchase requisition release
    M06B0003 - Number range and document number
    M06B0004 - Number range and document number
    M06B0005 - Changes to comm. structure for overall release of requisn.
    M06E0004 - Changes to communication structure for release purch. doc.
    M06E0005 - Role determination for release of purchasing documents
    ME590001 - Grouping of requsitions for PO split in ME59
    MEETA001 - Define schedule line type (backlog, immed. req., preview)
    MEFLD004 - Determine earliest delivery date f. check w. GR (only PO)
    MELAB001 - Gen. forecast delivery schedules: Transfer schedule implem.
    MEQUERY1 - Enhancement to Document Overview ME21N/ME51N
    MEVME001 - WE default quantity calc. and over/ underdelivery tolerance
    MM06E001 - User exits for EDI inbound and outbound purchasing documents
    MM06E003 - Number range and document number
    MM06E004 - Control import data screens in purchase order
    MM06E005 - Customer fields in purchasing document
    MM06E007 - Change document for requisitions upon conversion into PO
    MM06E008 - Monitoring of contr. target value in case of release orders
    MM06E009 - Relevant texts for "Texts exist" indicator
    MM06E010 - Field selection for vendor address
    MMAL0001 - ALE source list distribution: Outbound processing
    MMAL0002 - ALE source list distribution: Inbound processing
    MMAL0003 - ALE purcasing info record distribution: Outbound processing
    MMAL0004 - ALE purchasing info record distribution: Inbound processing
    MMDA0001 - Default delivery addresses
    MMFAB001 - User exit for generation of release order
    MRFLB001 - Control Items for Contract Release Order
    EXIT_SAPMM06E_001 Other Number Range or Own Document Number
    EXIT_SAPMM06E_004 User Exit for Cust.-Specific Control of Import Data Screens in Purchasing
    EXIT_SAPMM06E_005 Field Selection Control: Vendor Address Screen
    EXIT_SAPMM06E_006 Export Data to Customer Subscreen for Purchasing Document Header (PBO)
    EXIT_SAPMM06E_007 Export Data to Customer Subscreen for Purchasing Document Header (PAI)
    EXIT_SAPMM06E_008 Import Data from Customer Subscreen for Purchasing Document Header
    EXIT_SAPMM06E_009 Reset Customer Data at Beginning of New Document (Without Dialog)
    EXIT_SAPMM06E_010 Export of Service RFQ Data
    EXIT_SAPMM06E_011 Import Service Prices for Quotation
    EXIT_SAPMM06E_012 Check Customer-Specific Data Before Saving
    EXIT_SAPMM06E_013 Update Customer-Specific Data in Purchasing Document
    EXIT_SAPMM06E_014 Read Customer-Specific Data when Importing Purchasing Document
    EXIT_SAPMM06E_016 Export Data to Customer Subscreen for Purchasing Document Item (PBO)
    EXIT_SAPMM06E_017 Export Data to Customer Subscreen for Purchasing Document Item (PAI)
    EXIT_SAPMM06E_018 Import Data from Customer Subscreen for Purchasing Document Item
    EXIT_SAPMM06E_020 User Exit: Change Document for Requisitions (Conversion into PO)
    EXIT_SAPMM06E_021 Fulfillment of Target Value: Release Orders Against a Contract
    EXIT_SAPMM06E_022 Relevant Texts for "Texts Exist" Indicator
    EXIT_SAPMM06E_023 Definition of Relevant Texts for "Texts Exist" Indicator
    EXIT_SAPMM06E_024 Customer Enhancement: Activate PReq Block
    user exit for sto
    Regards.

  • User Exit for Delivery Updating

    Hi,
    I am creating one user exit for delivery ,
    My condition:
    If XLIKP-UPDKZ (Update indicator) = Update (U).
    Read table Deferred COGS Activity (Z1009) with key
    Delivery Number  eq LIKP-VBELN.
    If sy-subrc <> 0
    Exit.
    Else.
    If V50AGL-WARENAUSGANG=X (PGI is active)
    Update table Z1009 with
    WADAT_IST = XLIKP-WADAT_IST
    PGI_ERNAM = SY-UNAME
    PGI_ERDAT = SY-DATUM.
    where Delivery Number (DL_NO) eq LIKP-VBELN.
    If delivery updated successfully then no problem ,
    if not updated then I need to through error message to log.
    I need Function Module for this.
    Can u help me.

    These ar all the User Exits used in VL01N.
    Exit Name           Description
    V02V0001            Sales area determination for stock transport order
    V02V0002            User exit for storage location determination
    V02V0003            User exit for gate + matl staging area determination (headr)
    V02V0004            User Exit for Staging Area Determination (Item)
    V50PSTAT            Delivery: Item Status Calculation
    V50Q0001            Delivery Monitor: User Exits for Filling Display Fields
    V50R0001            Collective processing for delivery creation
    V50R0002            Collective processing for delivery creation
    V50R0004            Calculation of Stock for POs for Shipping Due Date List
    V50S0001            User Exits for Delivery Processing
    V53C0001            Rough workload calculation in time per item
    V53C0002            W&S: RWE enhancement - shipping material type/time slot
    V53W0001            User exits for creating picking waves
    VMDE0001            Shipping Interface: Error Handling - Inbound IDoc
    VMDE0002            Shipping Interface: Message PICKSD (Picking, Outbound)
    VMDE0003            Shipping Interface: Message SDPICK (Picking, Inbound)
    VMDE0004            Shipping Interface: Message SDPACK (Packing, Inbound)
    You can also look at BADI: LE_SHP_DELIVERY_PROC. It has several implementations which could be useful to you.

Maybe you are looking for

  • Xsl:if creates unwanted newline [SOLVED]

    Hi there. I'm making a report, with some images. This works fine (it's just an image of a checkbox, base64 data..). However, when printing many lines, I only want to print the checkbox if it's actually text there. Short explanation: Q1 Q2 Q3 Q4 Q5 I

  • Fill In The Blank / Sequence Questions

    Is it possible to have a fill in the blank question in captivate (4 or 5) that is scored according to how many options the user got correct? For example: If you use 4 grams of 'b' you will need _____ grams of 'x', _____ grams of 'y' and ____ grams of

  • Preview.app Scrolling Issue

    Since updating I've been having a problem with Preview while scrolling through PDFs of all sizes. The scrolling will stop randomly and the app will become unresponsive to my touch pad movements for 1-2 seconds. Anyone else having this issue? I'm on a

  • I can not publish with iWeb.

    I seem to be in a circle of prompts. "sign in to mobile." I do and "your account has been upgraded to iCloud." How do I now publish my website?

  • I can't purchase order and chaos online.

    I don't know whats going on, im trying to purchase Order and Chaos online using Itunes (pc) but it fails "Contact apple support" Im using my GC, since i dont have credit card. I tried to purchased other apps like angry birds space and it works like a