USEREXIT_FIELD_MODIFICATION

We currently have the following code in the above user exit.
  CASE screen-name.
     WHEN 'VBAP-WERKS'.
        vbap-vstel = vbap-werks.
  ENDCASE.
The code only changes the value on screen.  I need to change the value in the VBAP table at the same time.  I have tried the following code but this short dumps.  Can anyone help?
  CASE screen-name.
    WHEN 'VBAP-WERKS'.
      IF vbak-auart = 'ZVC'.
        vbap-vstel = vbap-werks.
        xvbap-vstel = vbap-vstel.
        MODIFY xvbap TRANSPORTING vstel.
      ELSE.
        vbap-vstel = vbap-werks.
      ENDIF.                                              
Kind Regards
Carly

Hi
It means the item is new, so I suppose you're testing your code for trx VA01.
But that exit is triggered for trx VA02 too, so in this case XVBAP-UPDKZ is I if a new item is inserted else it has to have the value U if a value is changed:
CASE screen-name.
    WHEN 'VBAP-WERKS'.
      IF vbak-auart = 'ZVC'.
        vbap-vstel = vbap-werks.
        xvbap-vstel = vbap-vstel.
        MODIFY xvbap TRANSPORTING vstel.
      ELSE.
        vbap-vstel = vbap-werks.
      ENDIF.
I don't believe the user can change the plant (VBAP-WERKS) in VA02, so probably this code is useless in VA02, anyway you have to considere when XVBAP table is directly changed, the updating code should be changed too, because the system couldn't do it.
For VA02 the code should be:
CASE screen-name.
    WHEN 'VBAP-WERKS'.
      IF vbak-auart = 'ZVC'.
        IF VBAP-VSTEL <> VBAP-WERKS.
          vbap-vstel = vbap-werks.
          LOOP AT XVBAP WHERE POSNR = VBAP-POSNR.
            xvbap-vstel = vbap-vstel.
            XVBAP-UPDKZ = 'U'.
            MODIFY XVBAP.
          ENDLOOP.      
        ENDIF.
      ELSE.
        vbap-vstel = vbap-werks.
      ENDIF.
Anyway just as I said before, this code is usefull only if the plant can be changed in VA02.
Max

Similar Messages

  • How to  use USEREXIT_FIELD_MODIFICATION ?

    hi there
    how can i implement USEREXIT_FIELD_MODIFICATION in va02?
    do i need acess key for that?

    yes, u do need a access key, contact ur basis team to obtain an access key, once u r done with that u can use the following sample code
    FORM userexit_field_modification.
    CHECK vbap-pstyv EQ 'ZTAE' OR          " Sub-item Category for COMBO items
          vbap-pstyv EQ 'ZRCI'.            " Sub-item Category for Return Orders
    IF screen-name = 'RV45A-MABNR'  OR     " Material
       screen-name = 'RV45A-KWMENG' OR     " Order quantity
       screen-name = 'VBAP-VRKME'   OR     " Sales Unit
       screen-name = 'VBEP-WMENG'   OR     " Order qty in Schedule Lines
       screen-name = 'RV45A-KMPMG'.        " Order quantity in "Structure" tab
      SCREEN-INPUT = 0.
    ENDIF.                                 " IF screen-name = 'RV45A-...
    ENDFORM.

  • Modify screen in VA41 : How to hide field in userexit_field_modification

    Hello,
    How to hide field at item level only (User should not be able to edit this field) in userexit_field_modification, instead of hiding the complete column.
    If I use
    FORM USEREXIT_FIELD_MODIFICATION.
    IF screen-name = 'RV45A-MABNR'. " Material
    SCREEN-required = 0.
    ENDIF.
    ENDFORM
    the complete material column will be greyed out. I want to grey out only for some items.
    Thanks,
    AP

    Hi AP,
    You havent given MODIFY SCREEN after screen-required = 0.
    Please try it abd check.
    FORM USEREXIT_FIELD_MODIFICATION.
    IF screen-name = 'RV45A-MABNR'. " Material
    SCREEN-required = 0.
    MODIFY SCREEN.
    ENDIF.
    ENDFORM
    Regards,
    Pawan

  • FORM USEREXIT_FIELD_MODIFICATION

    Hi All,
    When will this form FORM USEREXIT_FIELD_MODIFICATION will trigger in the user exit 'MV45AFZZ' My requirement is I need to make one field on the screen additional data A Disable based on some condition  for the change transctions VA02, I am writing the code in the form 'FORM USEREXIT_FIELD_MODIFICATION ' but this form is not triggering when I am changing and saving the line items it's triggering at the begining when we are trying to enter into the Ist screen of va02. Can some body will give idea where I have to write my code and what's the exact purpose of the user exit 'USEREXIT_FIELD_MODIFICATION '.
    Thanks&Regards
    Mahesh

    Hi,
    You can try as below.
         if <Conditon>
            MESSAGE 'error message here..!' TYPE 'S' DISPLAY LIKE 'E'.
          endif.
    Regards
    Gangadhar

  • Triggering of the form FORM USEREXIT_FIELD_MODIFICATION

    Hi All,
    When will this form FORM USEREXIT_FIELD_MODIFICATION will trigger in the user exit 'MV45AFZZ' My requirement is I need to make one field on the screen additional data A Disable based on some condition  for the change transctions VA02, I am writing the code in the form 'FORM USEREXIT_FIELD_MODIFICATION ' but this form is not triggering when I am changing and saving the line items it's triggering at the begining when we are trying to enter into the Ist screen of va02. Can some body will give idea where I have to write my code and what's the exact purpose of the user exit 'USEREXIT_FIELD_MODIFICATION '.
    Thanks&Regards
    Mahesh

    Hi,
    I still do not have my desired solution.
    I can not work with userexit_move_field_to_vbap because this userexit is called at the begin of creating a sales document.
    With Userexit_field_modification I still have the problem that I loose the value in VBAP-KTGRM when I leave the dynpro.
    My coding Inside Userexit_field_modification:
    CASE screen-name.
        WHEN 'VBAP-KTGRM'.
    Set to INPUT on when in Create or Change mode
          IF ( t180-trtyp = charh OR t180-trtyp = charv ).
             screen-input = 1.
          ENDIF.
      ENDCASE.
    These code lines make the field editable but I see no chance to save the entered value of VBAP-KTGRM.
    Thanks again,
    Tobi

  • Userexit_field_modification in MV45AFZZ

    Hi ABAP-gurus,
    I´ve used the above mentioned userexit to make a field editable.
    The field is VBAP-KTGRM.
    How I can store the entered content of this field?
    I thought that I can use userexit_move_field_to_vbap in the same include but it seems that the entered values get lost when I leave the dynpro.
    Any hints?
    Thanks,
    Tobias

    Hi,
    I still do not have my desired solution.
    I can not work with userexit_move_field_to_vbap because this userexit is called at the begin of creating a sales document.
    With Userexit_field_modification I still have the problem that I loose the value in VBAP-KTGRM when I leave the dynpro.
    My coding Inside Userexit_field_modification:
    CASE screen-name.
        WHEN 'VBAP-KTGRM'.
    Set to INPUT on when in Create or Change mode
          IF ( t180-trtyp = charh OR t180-trtyp = charv ).
             screen-input = 1.
          ENDIF.
      ENDCASE.
    These code lines make the field editable but I see no chance to save the entered value of VBAP-KTGRM.
    Thanks again,
    Tobi

  • Using USEREXIT_FIELD_MODIFICATION

    Hello SDNites,
    Please tell me how to insert code in USEREXIT_FIELD_MODIFICATION and also tell me whether this exit is applicated for Sales Order transaction or can be used with Purchase Order or not?
    Please provide me steps for writing the code in USEREXIT_FIELD_MODIFICATION.
    Regards,
    Abhi

    Dear Abhishek,
    If you do changes in this userexit MV45AFZZ surely it will reflect in the t-code VA01.Moreover screen related changes can be done.For example check the below:
       if screen-name = 'VBAK-LIFSK'.
             screen-input = 0.
    endif.
    if screen-name = 'VBAK-FAKSK'.
             screen-input = 0.
    endif.
    select single * from zsdauth_check where bname = sy-uname.
    if zsdauth_check-delfg = 'X'.
    if screen-name = 'VBAK-LIFSK'.
             screen-input = 1.
    endif.
    endif.

  • USEREXIT_FIELD_MODIFICATION in MV45AFZZ to set tooltip?

    Hi,
    i will set a tooltip for a specific field in VA02/03 (say Matnr). I try to use the exit
    USEREXIT_FIELD_MODIFICATION in MV45AFZZ.
    There is a possibility to change the structure SCREEN and it works but
    there is no way to set a tooltip.
    Does anyone know a way by using this EXIT or creating a SCREEN variant or
    any otehr way?
    Thanks.
    Regards, Dieter

    Hi,
    I still do not have my desired solution.
    I can not work with userexit_move_field_to_vbap because this userexit is called at the begin of creating a sales document.
    With Userexit_field_modification I still have the problem that I loose the value in VBAP-KTGRM when I leave the dynpro.
    My coding Inside Userexit_field_modification:
    CASE screen-name.
        WHEN 'VBAP-KTGRM'.
    Set to INPUT on when in Create or Change mode
          IF ( t180-trtyp = charh OR t180-trtyp = charv ).
             screen-input = 1.
          ENDIF.
      ENDCASE.
    These code lines make the field editable but I see no chance to save the entered value of VBAP-KTGRM.
    Thanks again,
    Tobi

  • Error message in userexit_field_modification

    Hello,
    I'm doing a check in the "Ship-to-party" field at VA01-VA02 transactions.
    Under some conditions, the value that the user inputs is not right so they want me to show an error message like "The ship to party is not valid for this kind of sales order" and block all the fields of the transaction except this one (KUWEV-KUNNR). If the user wants to proceed, has to change the value of ship-to-party for a good one.
    First of all, I'm not sure if this user exit is the place to do this, but I've done it because the consultant told me and I haven't found an alternative. Now the problem is that when I show an error message, it prompts in a popup and then it closes the transaction... is there a way to avoid this and get the behaviour that I told you before?

    Please try this Error meesage:
      MESSAGE ID '00' TYPE 'E' NUMBER '435' WITH 'Please fill vaild' ' Ship-to-party.Press enter to continue'.
    Remove the popup error message.Try to send some sample code and exit that your using.
    Based on that I can suggest some validations.
    I hope this may helpfull.
    Thank you,
    Thanks,
    AMS

  • In Free goods how to restrict the quantity to not to alter.

    Dear All,
    I have maintain condition record for free goods in VBN1.EX.102.While creating sales order for 20 quantities system populates 204.But if am changing this as 152 or 205,system is allowing to do.Same is the case at delivery.How can we restrict the system to not to allow the changes in sales order in case of free goods .Please guide me.
    Regards,
    Deepti

    Hi
    KIndly check the  below user exit and make the free goods item as in display mode
    MV45AFZZ 'USEREXIT_FIELD_MODIFICATION'
    to change the SCREEN-INPUT = 0 to make it display  for free goods item category Tann
    By doing above if any one changes main item  system will accordingly change the free goods item also
    Regards
    Damu.

  • Restrict Manual Entry of Items while creation of sales order

    Hi,
    <b>Requirement:</b>
    User can create a sales order only for line items of contract if sales order is created with reference to contract. Any manual entry of line item should be restricted.
    <b>Analysis:</b>
      I have coded to check the line item is created with ref to contract or not.( VGBEL gets populated if it is created with ref to contract.). I checked in userexits (USEREXIT_SAVE_DOCUMENT_PREPARE) and (USEREXIT_FIELD_MODIFICATION).
      Do help if anyone have come across such scenario.
    Regards
    Sailaja.
    (Intelligroup)

    Hi,
       This functionality may be possible with a Configuration setting in SPRO.
       plz check with your Functional guys.
    regards.

  • Help in defaulting a value in a program

    I have a program called MV45AZZA, and I got the following requirement
    In MV45AFZZ we need to default VBAP-BWTAR = RH while new items are added in transaction VA01 and VA02, if sales org = 5090, order type = ZSBK and MBEW-BWTTY = 1 for the VBAP-MATNR. Once defaulted user should be able to change it to new value in VA01 and VA02, in that case system should not overwrite it with default value.
    Sales order functionality needs to be changed to account for Sbank sales updating to repair profit center.
    any help in coding is highly appreciated. i know little ABAP and I would appreciate if somebody can help in adding the code.Please highlight the code you added
    Please check the Program below.
    Thanks
    SP
    *TABLES: zue003, tvarv.
    *DATA: werks LIKE vbap-werks.
    Start of DEVK923935.
    Global Definition
    INCLUDE  zsdi_mv45afzz_top.
          FORM ZZEXAMPLE                                                *
          text......................................                    *
    *FORM ZZEXAMPLE.
    *ENDFORM.
    *eject
          FORM USEREXIT_DELETE_DOCUMENT                                 *
          This userexit can be used to delete data in additional tables *
          when a sales document is deleted.                             *
         This form is called in dialog at the end of form BELEG_LOESCHEN*
         just before form BELEG_SICHERN is performed to delete the      *
         datas on the database.                                         *
    FORM userexit_delete_document.
    ENDFORM.
    *eject
          FORM USEREXIT_FIELD_MODIFICATION                              *
          This userexit can be used to modify the attributes of         *
          screen fields.                                                *
          This form is processed for each field in the screen.          *
          The use of the fields screen-group1 to screen-group4 is:      *
          Screen-group1: Automatic modification contolles by transaction*
                         MFAW.                                          *
          Screen-group2: Contents 'LOO' for steploop-fields.            *
          Screen-group3: Used for modififaction, which are dependent on *
                         control tables or other fix information.       *
          Screen-group4: Unused                                         *
          For field mofifications, which are dependent on the document  *
          status, you can use the status field in the workareas         *
          XVBAP for item status and XVBUK for header status.            *
          This form is called from module FELDAUSWAHL.                  *
    FORM userexit_field_modification.
      DATA: zvbtyp LIKE vbfa-vbtyp_n,
            zvbeln LIKE vbfa-vbeln.
    CASE SCREEN-GROUP3.
      WHEN '900'.
        IF VBAK-VBTYP NE 'A'.
          SCREEN-ACTIVE = 0.
        ENDIF.
    ENDCASE.
    CASE SCREEN-NAME.
      WHEN 'VBAK-VBELN'.
        SCREEN-ACTIVE = 0.
    ENDCASE.
      IF vbap-pstyv = 'IRLA'.
       CHECK sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
        IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
          SELECT SINGLE vbtyp_n INTO zvbtyp FROM vbfa
                 WHERE vbelv = xvbap-vbeln AND posnv = vbap-posnr.
         CHECK sy-subrc <> 0.
          IF sy-subrc <> 0.
            CASE screen-group2.
              WHEN 'LOO'.
                IF screen-name = 'VBAP-WERKS'.
                  screen-input = 1.
                ENDIF.
            ENDCASE.
          ENDIF.
        ENDIF.
      ENDIF.
    Make Reject Reason modifiable when document category is 'RETURNS'
    06/10/02  
    Modified by Ak for check on subsequent credit memo
    This opens up the field - reason for rejection - for change even after
    the material has been received into the system on the returns delivery
    but before the Returns Credit Memo has been issued.
    Changed field to be modified from Reason for Rejection to Item
    Category on the line item for which no credit to be given.
    select single * from vbfa where vbelv = vbak-vbeln and
                                     vbtyp_n = 'O'.
    select a Returns Credit Memo document from VBFA that has NOT been
    cancelled. if the selection is successful, credit has been issued and
    the field should stay locked. however, if selection is unsuccessful
    and since no credit has been issued, the field for item category
    must be available for changing, if need be.
    check: vbak-vbtyp = 'H'.
      IF vbak-vbtyp = 'H'.
        IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
          SELECT SINGLE vbrk~vbeln INTO zvbeln
            FROM vbfa INNER JOIN vbrk ON vbfavbeln = vbrkvbeln
              WHERE vbfavbelv = vbak-vbeln AND vbfaposnv = vbap-posnr
                AND vbfavbtyp_n = 'O' AND vbrkfksto NE 'X'.
          CHECK sy-subrc NE 0.
          CASE screen-group2.
            WHEN 'LOO'.
              IF screen-name = 'VBAP-PSTYV'.
                screen-input = 1.
              ENDIF.
          ENDCASE.
        ENDIF.
      ENDIF.
      INCLUDE zue_sd_0029.
    **If no invoice is created then make PSTYV ready for input for item
    **category IRIN.
      INCLUDE zue_sd_0031.
    ENDFORM.
    *eject
          FORM USEREXIT_MOVE_FIELD_TO_VBAK                              *
          This userexit can be used to move some fields into the sales  *
          dokument header workaerea VBAK.                               *
          SVBAK-TABIX = 0:  Create header                               *
          SVBAK-TABIX > 0:  Change header                               *
          This form is called at the end of form VBAK_FUELLEN.          *
    FORM userexit_move_field_to_vbak.
    vbak-zzfield = xxxx-zzfield2.
    **Ernesto EDIT for UE DEMO 10/16/2002
    SELECT single * INTO TABLE i_tvarv FROM tvarv WHERE name =
    *ZKS_KSEASORG'.
    Start of DEVK923935.
    Initialization Section
      INCLUDE zsdi_mv45afzz_initialization.
    End of DEVK923935.
    **{   INSERT         SNDK900075                                        1
    Change user exit according to Online Documentation to
    copy ship-to info to sale doc header (VBAK)
    *CODE BELOW*REPLACED WITH zue_sd_0017***********
    IF vbak-kvgr1 IS INITIAL AND
        vbak-kvgr2 IS INITIAL AND
        vbak-kvgr3 IS INITIAL AND
        vbak-kvgr4 IS INITIAL AND
        vbak-kvgr5 IS INITIAL.
       SELECT SINGLE vkgrp vkbur kvgr1 kvgr2 kvgr3 kvgr4 kvgr5
       FROM knvv  INTO (vbak-vkgrp, vbak-vkbur, vbak-kvgr1, vbak-kvgr2,
                                    vbak-kvgr3, vbak-kvgr4, vbak-kvgr5)
       WHERE kunnr = kuwev-kunnr AND
             vkorg = vbak-vkorg AND
             vtweg = vbak-vtweg AND
             spart = vbak-spart.
    ENDIF.
    *CODE ABOVE*REPLACED WITH zue_sd_0017***********
      INCLUDE zue_sd_0017.
    *CODE BELOW*REPLACED WITH zue_sd_0017***********
    IF svbak-tabix = 0.
       SELECT SINGLE vsbed  FROM knvv INTO vbak-vsbed
    *WHERE kunnr = kuwev-kunnr AND
         vkorg = vbak-vkorg AND
         vtweg = vbak-vtweg AND
         spart = vbak-spart.
    ENDIF.
    *CODE ABOVE*REPLACED WITH zue_sd_0017***********
    Start of DEVK915182
    **Ernesto EDIT for UE DEMO 10/15/2002.
    READ TABLE i_tvarv WITH KEY name = 'ZKS_KSEASORG'.
    IF sy-subrc = 0.
       IF vbak-vkorg =  i_tvarv-low.
      IF vbak-vkorg IN i_zsd01_vkorg.
        IF sy-tcode EQ 'VA01'.
          IF sy-dynnr EQ '4021'.
            IF sy-ucomm NE 'SICH'.
              l_pop_type = 'X'.
              INCLUDE zue_sd_0027.
             PERFORM partner_validation USING 'X'.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    end-of DEVK915182
    Project : KSEA - Sales Force Expansion of 1st Jan 2003
    Include for KSEA  Sales Org 5010 only for PopUp Windows " 12/23/2002
      INCLUDE zsd_salesforce_expnsn_hdr." Include 1 of 4
    */ Description        : KSE Modification to remove the billing block for
    */                      returns/credits/debits if sales Org is 5090.
    *ORIGINAL CODE
    *if vbak-vkorg = '5090' and vbak-vbtyp ca 'HKL'.
    *vbak-faksk = ' '.
    *endif.
      IF sy-tcode = 'VA01'.
        IF vbak-vkorg IN i_zsd09_vkorg.
          IF vbak-vbtyp IN i_zsd09_vbtyp.
            vbak-faksk = ' '.
          ENDIF.
        ENDIF.
      ENDIF.
    BREAK-POINT.
    INCLUDE zue_sd_0039.
    ENDFORM.
    *eject
          FORM USEREXIT_MOVE_FIELD_TO_VBAP                              *
          This userexit can be used to move some fields into the sales  *
          dokument item workaerea VBAP                                  *
          SVBAP-TABIX = 0:  Create item                                 *
          SVBAP-TABIX > 0:  Change item                                 *
          This form is called at the end of form VBAP_FUELLEN.          *
    FORM userexit_move_field_to_vbap.
    VBAP-zzfield = xxxx-zzfield2.
    *{   INSERT         SNDK900164                                        1
    Item Category Determination
      DATA: zzbukrs LIKE tvko-bukrs,
            zzmtpos LIKE mvke-mtpos.
      DATA: BEGIN OF zzwerks OCCURS 0,
              werks LIKE marc-werks,
            END OF zzwerks.
      DATA: zdoccat LIKE tvak-vbklt,
            zvmsta LIKE mvke-vmsta,
            zspvbc LIKE tvms-spvbc,
            zvmstb LIKE tvmst-vmstb.
      DATA: z_xvbap LIKE xvbap,
            yp1 LIKE t001k-bwkey,
            z_uepos_bukrs LIKE t001k-bukrs.
      IF i_zsd01_vkorg[] IS INITIAL.
    If the initialization was not performed in the Fill VBAK,
    reload data
        INCLUDE zsdi_mv45afzz_initialization.
      ENDIF.
      SELECT SINGLE bukrs
        INTO zzbukrs
        FROM tvko
       WHERE vkorg = vbak-vkorg.
      SELECT w~werks
        INTO TABLE zzwerks
        FROM t001w AS w JOIN t001k AS k
          ON wbwkey = kbwkey
       WHERE k~bukrs = zzbukrs.
      SELECT SINGLE mtpos INTO zzmtpos
        FROM mvke
       WHERE matnr = vbap-matnr
         AND vkorg = vbak-vkorg
         AND vtweg = vbak-vtweg.
    Export Plant - inport in ZXQSMU07
      EXPORT zz_plant = vbap-werks TO MEMORY ID  'ZZPLANT'.   " KN05
    check vbap-pstyv = 'TAN' or vbap-pstyv = 'TANN'.
    removed the CHECK statement and replaced by IF-ENDIF.
    inserted by arvind r kulkarni for TAN, TANN switching
      IF vbap-pstyv = 'TAN' OR vbap-pstyv = 'TANN'
      OR vbap-pstyv = 'REN'                                     " KN02
      OR vbap-pstyv = 'RENN' .                                  " KN02
        READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
       check sy-subrc ne 0.
        IF sy-subrc NE 0.
          IF vbap-pstyv = 'TAN'.
            vbap-pstyv = 'ZAN'.
          ELSEIF vbap-pstyv = 'REN'.                            " KN02
            vbap-pstyv = 'YREN'.                                " KN02
          ELSEIF vbap-pstyv = 'RENN'.                           " KN02
            vbap-pstyv = 'YRNN'.                                " KN02
          ELSEIF vbap-pstyv = 'TANN'.
            vbap-pstyv = 'ZANN'.
          ENDIF.
        ENDIF.
      ENDIF.
      INCLUDE zue_sd_0014.
    Begin insert for check for discontinued material in repair orders
    LOGIC: For IRAT item categories, check if the material status field *
           blank or populated.                                          *
           If populated, get the value of the D-Chain specific status   *
           and issue warning/error message with the associated text     *
           from config the D-Chain specific material status.            *
           Included YRAT to this logic (YRAT is free IRAT); 11/22/2002. *
      IF vbap-pstyv = 'IRAT' OR vbap-pstyv = 'YRAT'.
        CLEAR: zvmsta, zvmstb, zspvbc.
        SELECT SINGLE vmsta INTO zvmsta FROM mvke WHERE
                matnr = vbap-matnr AND vkorg = vbak-vkorg
                AND vtweg = vbak-vtweg.
       CHECK: NOT zvmsta IS INITIAL.
        IF NOT zvmsta IS INITIAL.
          SELECT SINGLE spvbc INTO zspvbc FROM tvms WHERE
                  vmsta = zvmsta.
          SELECT SINGLE vmstb INTO zvmstb FROM tvmst WHERE
                  spras = sy-langu AND vmsta = zvmsta.
          CASE zspvbc.
            WHEN 'A'.
              MESSAGE ID 'V1' TYPE 'W' NUMBER '028' WITH zvmsta zvmstb.
            WHEN 'B'.
              MESSAGE ID 'V1' TYPE 'E' NUMBER '028' WITH zvmsta zvmstb.
          ENDCASE.
        ENDIF.
      ENDIF.
    End insert for check for discontinued material in repair orders
      INCLUDE zue_sd_0004.
      INCLUDE zue_sd_0005.
    end of DEVK923935.
    ****************END OF TEST SOURCE CODE******************
    Begin Insert to assign material entered for TRADE material
    Ak; 11/08/2002.
    For trade material, the system will now mandate entry of higher level
    item number and based on this, the system will bring in specialty,
    material number (into material entered) and profit centre from this
    higher level item into the line item for material TRADE.
    Added MVGR2 & 3 to pass onto TRADE material; 11/12/2002 - Arvind.
    Added material a/c assignment grp to trade-in material.
    Added ZTRD item category to this logic.  - Arvind 11/18/2002.
      INCLUDE zzsdprc01.
      INCLUDE zue_sd_0028.
    End Insert to assign material entered for TRADE material
    ********************End of DIP Profile change************************
    Get custom group data from MVKE (Sales Data for Material) by Material
    when order type is 'RAS' (Repairs/Service)
    and populate line item's Additional data A
      INCLUDE zue_sd_0006.
      INCLUDE zue_sd_0001.
    include ZUE_SD_0032.
      INCLUDE zue_sd_0002.
    Get similar data (as above) from Servicable Material
      INCLUDE zue_sd_0003.
    *}   INSERT
    Determine Delivery Priority from SH Partner
    11/02/2001
      SELECT SINGLE lprio
      FROM knvv
      INTO vbap-lprio
      WHERE kunnr = kuwev-kunnr AND
            vkorg = vbak-vkorg AND
            vtweg = vbak-vtweg AND
            spart = vbak-spart.
    Determine Delivery Priority for Order Type RAS
      INCLUDE zsd_check_pstyv_werks.
    To re-determine Matwa if the replacement item is changed afterwards
    Niranjan 05/10/05 and ECLARKE
    INCLUDE zue_sd_0021.
    Mod for all sales organizations
    Determination of Profit Center
    06/24/03
      INCLUDE zue_sd_0007.
    End PRCTR Determination for KSI's document
    KSI modification
    Code to enter the actual part number of the item being repaired,
    rather than "REPAIR"
    09/18/02  GM
      DATA: intercoflag TYPE c.
      PERFORM zz_determine_cross_comp USING vbak-vkorg
                                            vbap-werks
                                            intercoflag.
      IF intercoflag = 'Y'
        AND
        ( vbap-pstyv = 'IRIN' OR vbap-pstyv = 'ZRIN' ).
        SELECT SINGLE matwa INTO vbap-matwa FROM vbap
        WHERE vbeln = vbap-vbeln AND posnr = vbap-uepos.
        IF sy-subrc NE 0.
          MESSAGE e006(z1) WITH vbap-uepos.
        ENDIF.
      ENDIF.
    End material look up modification GM 9/17/02
    KSI modification
    DP90 Only:
    Remove Billing Block from IRIN items and moved them to the header
    10/06/02 CNG
    11/18/2002     Tr-DEVK917363
    Added Sales Orgs 5040 & 5060
    KSI modification
    06/10/2003   CNG  CN01
    If IRIN, clear billing block at item level
      IF sy-tcode = 'DP90'.
      IF vbap-werks = '7000' AND vbak-vkorg = '5010' AND"            SM01-
        vbap-pstyv = 'IRIN'."                                        SM01-
        IF vbap-werks = '7000' AND"                                    SM01+
           ( vbak-vkorg IN i_zsd01_vkorg OR"                    SM01+
             vbak-vkorg = '5040' OR"                                   SM01+
    Removed >>
            vbak-vkorg = '5060' )"              SM01+                CN01-
         AND vbap-pstyv = 'IRIN'."              SM01+                CN01-
        vbak-faksk = '02'.
    Removed <<
    Inserted - check and block for line item IRIN only
             vbak-vkorg = '5060' )."                                   SM01+
          vbak-faksk = '02'.
         IF vbap-pstyv = 'IRIN'."                                      CN01+
            CLEAR vbap-faksp.
    Inserted - check and block for line item IRIN only
          ENDIF.
        ENDIF.
      ENDIF.
    KSI modification
    Routine to populate VBAP-ZZEDATU and VBAP-ZZVDATU on change and
    creation of order
    02/10/03 CNG
      PERFORM check_custom_dates.
    KSE Modification to create return item automatically**
    Copied from Niranjan's routine tested in SND210  Date 04/05/03
      INCLUDE zue_sd_0008.
    User Exit for Service Processing - Clear Results
    Analysis Key in sales order item for non-KSE service
    items.  DEVK927084       W. Miller 05/12/2003
    Changed to validate by plant instead of sales org.
    06/30/03    BEGIN>>>
    if not vbak-vkorg = '5090' and vbap-bedae = 'SE'.
    *Added 5000 for  KSEM Prjct 02-09-2006 EC
      IF NOT ( vbap-werks = '9000' OR vbap-werks = '5000' )
      AND ( vbap-bedae = 'SE' OR VBAP-BEDAE = 'SERA' ).
    06/30/03    END  <<<<
        CLEAR vbap-abgrs.
      ENDIF.
    End of DEVK924084
    */ Author             :  w/ Trimb.
    */ Date               : 10/07/2003   ---> Repair No : DEVK930002
    */ Description        : KSE Modification For plant 9000, to check the
    */                      material is 'Non-R' for RAS order type
    */                      and is 'R' for ZREX and ZWAR order types.
    *Added lines below for -  There is a user exit which exists that does
    *not allow materials that do not begin with an "R" to be posted into
    *plant 9000 if they are attached to a ZWAR order type.  KSE/KSEA would
    *like to modify this exit to allow materials with profit centers
    *5090-03003 and 5090-04003 to be posted.
    *ECLARKE/Niranjan 07-29-2004
    *________________________n 07-29-2004__________________
      DATA: flag_dexe.
      TABLES: zzue027.
      CLEAR: flag_dexe.
      SELECT SINGLE werks auart prctr INTO (zzue027-werks, zzue027-auart,
      zzue027-prctr) FROM zzue027 WHERE werks = vbap-werks AND auart =
      vbak-auart AND prctr = vbap-prctr.
      IF sy-subrc = 0.
        flag_dexe = 'X'.
      ENDIF.
    *________________________ 07-29-2004__________________
      IF flag_dexe IS INITIAL. " 07-29-2004
        IF vbap-werks IN i_zsd09_werks.
       IF ( vbak-auart IN i_zsd02_auart AND vbap-pstyv IN i_zsd04_pstyv AND
                 vbap-matwa(1) = 'R' ) OR ( vbak-auart IN i_zsd02_auart AND
                      vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) = 'R' ).
            IF vbap-matwa(1) = 'R'.
              MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
                vbap-pstyv.
            ENDIF.
            IF vbap-matnr(1) = 'R'.
              MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
              vbap-pstyv.
            ENDIF.
          ELSEIF ( vbak-auart IN i_zsd03_auart AND vbap-pstyv IN
      i_zsd04_pstyv AND vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN
    i_zsd03_auart AND vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' )
      OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv IN i_zsd04_pstyv AND
    vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv
      IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' ).
            IF vbap-matwa(1) <> 'R'.
              MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
              vbap-pstyv.
            ENDIF.
            IF vbap-matnr(1) <> 'R'.
              MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
              vbap-pstyv.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
      INCLUDE zue_sd_0015.
    include zue_sd_0019
    Enhancement to populate Storage Location for sales order 5090
    and plant 9000. But any companies can use it as long as entries are
    maintained in table zsd_default_sloc
    Niranjan  02/11/04
    DEVK933987 - MV45AFZZ - MPitisci 4/12/2004
       DEVK933989 - ZUE_SD_0019  include
       DEVK933998 - ZSD_DEFAULT_SLOC table
      INCLUDE zue_sd_0019.
    To give hard error for D-CHin status 07 for items catgories other
    than trade.
    04/10/05
      INCLUDE zue_sd_0034.
    Checks if the storage location value is changed and checks to see if
    the storage location correlates to the P3 Partner function rules
    08/05/2005
      INCLUDE zue_sd_0036.
      INCLUDE zue_sd_0013.
    ENDFORM.
    *eject
          FORM USEREXIT_MOVE_FIELD_TO_VBEP                              *
          This userexit can be used to move some fields into the sales  *
          dokument schedule line workaerea VBEP                         *
          SVBEP-TABIX = 0:  Create schedule line                        *
          SVBEP-TABIX > 0:  Change schedule line                        *
          This form is called at the end of form VBEP_FUELLEN.          *
    FORM userexit_move_field_to_vbep.
      DATA: intercoflag TYPE c.
    VBEP-zzfield = xxxx-zzfield2.
    Assign 'ZP' to Schedule line Category for Acct Assignment Grp =
    Chui 10/23/2001
      DATA: zzbukrs LIKE tvko-bukrs,
            zzmtpos LIKE mvke-mtpos.
      DATA: z_vbelv LIKE vbfa-vbelv,"                                KN03
            z_auart LIKE vbak-auart,"                                KN03
            z_vbtyp LIKE vbak-vbtyp,"                                KN03
            z_ettyp LIKE vbep-ettyp,"                                KN03
            z_pstyv LIKE vbap-pstyv,"                                KN04
            z_posnr LIKE vbap-posnr."                                KN04
      DATA: BEGIN OF zzwerks OCCURS 0,
              werks LIKE marc-werks,
            END OF zzwerks.
      IF vbak-vbtyp CN 'AB'. "ECLARKE 01-26-04
        SELECT SINGLE bukrs
          INTO zzbukrs
          FROM tvko
         WHERE vkorg = vbak-vkorg.
        SELECT w~werks
          INTO TABLE zzwerks
          FROM t001w AS w JOIN t001k AS k
            ON wbwkey = kbwkey
         WHERE k~bukrs = zzbukrs.
        SELECT SINGLE mtpos INTO zzmtpos
          FROM mvke
         WHERE matnr = vbap-matnr
           AND vkorg = vbak-vkorg
           AND vtweg = vbak-vtweg.
    *lines added for valuated customer-returns project by msn
    110903. It will set required schedule line category YR on specific
    item categories if the document created is of type RE with reference
    document being an invoice of type F2
    *ECLARKE & MILIND NAND. 11-11-2003.
    *Schedule Line Category - Valuate Customer Returns Stock
    INCLUDE zue_sd_0010.
        CASE vbap-pstyv.
          WHEN  'ZRPN'.
            EXIT.
          WHEN 'TAN' OR 'TANN'.
            IF vbkd-ktgrd = '01'.            " Added 6/5/02
              IF vbep-ettyp = 'CN'.
                vbep-ettyp = 'ZA'.
              ELSE.
                vbep-ettyp = 'ZP'.
              ENDIF.
            ENDIF.
    **Ernesto EDIT for UE DEMO 10/15/2002
    ***************TEST FUNCTION MODULE FOR USER EXIT MAINT.******
    **ADDED  A CASE STATEMENT BELOW.
    CALL FUNCTION 'Z_UE_SD_GET_SCHEDULE_LINE_CAT'
          EXPORTING
               pstyv  = vbap-pstyv
               ktgrd  = vbkd-ktgrd
               ettyp2 = vbep-ettyp
          IMPORTING
               ettyp  = vbep-ettyp.
    ****************END OF TEST SOURCE CODE******************
            READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
         check sy-subrc ne 0.
            IF sy-subrc NE 0.
    Change inserted by Arvind R Kulkarni; 07/22/2002
    TAN -> ZAN; TANN => ZANN
           vbap-pstyv = 'ZAN'.
              IF vbap-pstyv = 'TAN'.
                vbap-pstyv = 'ZAN'.
              ELSEIF vbap-pstyv = 'TANN'.
                vbap-pstyv = 'ZANN'.
              ENDIF.
    end of change
            ENDIF.
    *ADDED CASE HERE FOR TEST FOR SYNTAX CHECK 10/15/2002
    *CASE vbap-pstyv.
          WHEN 'ZAN'.
            READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
            CHECK sy-subrc EQ 0.
            vbap-pstyv = 'TAN'.
          WHEN 'ZANN'.
            READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
            CHECK sy-subrc EQ 0.
            vbap-pstyv = 'TANN'.
          WHEN 'ZTAN'.
            IF vbkd-ktgrd = '01'.            " Added 6/5/02
              IF vbep-ettyp = 'CN'.
                vbep-ettyp = 'ZA'.
              ELSE.
                vbep-ettyp = 'ZP'.
              ENDIF.
            ENDIF.
            READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
         check sy-subrc ne 0.
            IF sy-subrc NE 0.
              IF vbep-ettyp = 'CN'.
                vbep-ettyp = 'ZA'.
              ELSE.
                vbep-ettyp = 'ZP'.
              ENDIF.
            ENDIF.
    03/23/2005 KN03 Set Schedule Line default to ZF order type ZFD,
    item cat ZTAN, sales org 5060, 5070, and 5071
            IF vbak-auart EQ 'ZFD' AND
            ( vbak-vkorg = '5060' OR vbak-vkorg = '5070'
             OR vbak-vkorg = '5071' ).
              vbep-ettyp = 'ZF'.
            ENDIF.
    Begin of insertion for IRAT processing
    Arvind R Kulkarni; Dated: 07/17/2002.
    Changed to include YRAT; ; 11/22/2002
          WHEN 'IRAT' OR 'YRAT'.
            IF vbak-auart NE 'ZWAR'.
    the sales order is NOT a ZWAR
              READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
              IF sy-subrc NE 0.
    the transaction IS intercompany
                IF vbep-ettyp = 'CN'.
                  vbep-ettyp = 'YN'.
                ELSE.
                  vbep-ettyp = 'YL'.
                ENDIF.
              ELSE.
    the transaction IS NOT intercompany
                IF vbep-ettyp = 'CN'.
                  vbep-ettyp = 'ZN'.
                ELSE.
                  vbep-ettyp = 'ZL'.
                ENDIF.
              ENDIF.
              IF vbkd-ktgrd = '01'.
    sale is to an affiliate in local sales org
                IF vbep-ettyp = 'CN'.
                  vbep-ettyp = 'YN'.
                ELSE.
                  vbep-ettyp = 'YL'.
                ENDIF.
              ENDIF.
            ELSE.
    the sales order IS a ZWAR
              READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
              IF sy-subrc NE 0.
    the transaction IS intercompany
                IF vbep-ettyp = 'CN'.
                  vbep-ettyp = 'ZA'.
                ELSE.
                  vbep-ettyp = 'ZP'.
                ENDIF.
         ELSE.
    the transaction IS NOT intercompany
    NOTHING NEEDS TO BE DONE FOR ZWAR DOMESTIC
    STD SCHED LINE CATEGORIES TO BE MAINTAINED.
           IF VBEP-ETTYP = 'CN'.
             VBEP-ETTYP = 'ZN'.
           ELSE.
             VBEP-ETTYP = 'ZL'.
           ENDIF.
         ENDIF.
         IF VBKD-KTGRD = '01'.
    sale is to an affiliate in local sales org
                IF vbep-ettyp = 'CN'.
                  vbep-ettyp = 'ZA'.
                ELSE.
                  vbep-ettyp = 'ZP'.
                ENDIF.
              ENDIF.
            ENDIF.
    End of insertion for IRAT processing
          WHEN 'IRRS' OR 'IRRE' OR 'IRLA' OR 'IRLB' OR 'KBN' OR 'TAQ'
    KSI Modification    04/22/03
    Exclude check for item category 'YKW'
            OR 'YTAN' OR 'ZKLN' OR 'KAN'  OR 'ZTAQ'
            OR 'YKW' OR 'IRRP'  OR 'ZKBC' OR 'ZKBN' OR 'ZKAN' OR 'KLN'.
          or  'ZKEN' OR 'ZKEC' or ZREK OR 'KEN'.
            EXIT.
          WHEN 'ZTR1' OR 'ZRBB' OR 'ZREB' OR 'ZREC' OR 'ZREF' OR 'ZREN'
    Removed ZRTN to validate plant 9000
            OR 'ZRFF' OR 'ZRNB' OR 'ZRNN' OR 'REN' OR 'RENN'
            OR 'ZLN' OR 'IRAL' OR 'ZTR0' OR 'KLN'.
            EXIT.
    03/23/2005 KN03 set default sched line for KE & ZKE
          WHEN 'KEN' OR 'ZKEG' OR 'ZKEN' OR 'ZKEC'.
            IF vbak-vkorg EQ '5070'.
              vbep-ettyp = 'Z0'.
            ENDIF.
          WHEN 'ZREK'.
            INCLUDE zue_sd_0033.
            IF vbap-werks = '9000'.                    " KN04
              IF vbkd-ktgrd = '01'.                    " KN04
                IF  z_auart = 'ZFD ' and z_pstyv = 'KLN '.    " KN04
                  vbep-ettyp = 'YK'.                   " KN04
                ENDIF.
              ENDIF.
            ENDIF.
    KSE Modification    04/10/03
    For Item Cate 'ZRTN'
    Assign 'YQ' to Schedule line cat, if cross-company
    'YU' if not.
          WHEN 'ZRTN'.

    Hi,
    Step 1) Create a include ZSD_DEFAULT_BWTAR and add the following code
    DATA: S_MBEW TYPE MBEW.
    Check for create and change.
    IF T180-TRTYP = 'H' OR T180-TRTYP = 'V'.
    IF VBAK-VKORG = '5090' AND VBAK-AUART = 'ZSBK'.
    SELECT SINGLE * FROM MBEW
    INTO S_MBEW
    WHERE MATNR = VBAP-MATNR
    AND BWKEY = VBAP-WERKS.
    IF SY-SUBRC = 0 AND S_MBEW-BWTTY = '1'.
    Check if it is for line item creation.
    WHen the changes the value this will not trigger.
    IF SVBAP-TABIX = 0.
    VBAP-BWTAR = 'RH'.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    STEP 2)
    Add the include to the subroutine USEREXIT_FIELD_TO_VBAP. The include statement is marked in bold.
    *TABLES: zue003, tvarv.
    *DATA: werks LIKE vbap-werks.
    Start of DEVK923935.
    Global Definition
    INCLUDE zsdi_mv45afzz_top.
    FORM ZZEXAMPLE *
    text...................................... *
    *FORM ZZEXAMPLE.
    *ENDFORM.
    *eject
    FORM USEREXIT_DELETE_DOCUMENT *
    This userexit can be used to delete data in additional tables *
    when a sales document is deleted. *
    This form is called in dialog at the end of form BELEG_LOESCHEN*
    just before form BELEG_SICHERN is performed to delete the *
    datas on the database. *
    FORM userexit_delete_document.
    ENDFORM.
    *eject
    FORM USEREXIT_FIELD_MODIFICATION *
    This userexit can be used to modify the attributes of *
    screen fields. *
    This form is processed for each field in the screen. *
    The use of the fields screen-group1 to screen-group4 is: *
    Screen-group1: Automatic modification contolles by transaction*
    MFAW. *
    Screen-group2: Contents 'LOO' for steploop-fields. *
    Screen-group3: Used for modififaction, which are dependent on *
    control tables or other fix information. *
    Screen-group4: Unused *
    For field mofifications, which are dependent on the document *
    status, you can use the status field in the workareas *
    XVBAP for item status and XVBUK for header status. *
    This form is called from module FELDAUSWAHL. *
    FORM userexit_field_modification.
    DATA: zvbtyp LIKE vbfa-vbtyp_n,
    zvbeln LIKE vbfa-vbeln.
    CASE SCREEN-GROUP3.
    WHEN '900'.
    IF VBAK-VBTYP NE 'A'.
    SCREEN-ACTIVE = 0.
    ENDIF.
    ENDCASE.
    CASE SCREEN-NAME.
    WHEN 'VBAK-VBELN'.
    SCREEN-ACTIVE = 0.
    ENDCASE.
    IF vbap-pstyv = 'IRLA'.
    CHECK sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
    IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
    SELECT SINGLE vbtyp_n INTO zvbtyp FROM vbfa
    WHERE vbelv = xvbap-vbeln AND posnv = vbap-posnr.
    CHECK sy-subrc <> 0.
    IF sy-subrc <> 0.
    CASE screen-group2.
    WHEN 'LOO'.
    IF screen-name = 'VBAP-WERKS'.
    screen-input = 1.
    ENDIF.
    ENDCASE.
    ENDIF.
    ENDIF.
    ENDIF.
    Make Reject Reason modifiable when document category is 'RETURNS'
    06/10/02
    Modified by Ak for check on subsequent credit memo
    This opens up the field - reason for rejection - for change even after
    the material has been received into the system on the returns delivery
    but before the Returns Credit Memo has been issued.
    Changed field to be modified from Reason for Rejection to Item
    Category on the line item for which no credit to be given.
    select single * from vbfa where vbelv = vbak-vbeln and
    vbtyp_n = 'O'.
    select a Returns Credit Memo document from VBFA that has NOT been
    cancelled. if the selection is successful, credit has been issued and
    the field should stay locked. however, if selection is unsuccessful
    and since no credit has been issued, the field for item category
    must be available for changing, if need be.
    check: vbak-vbtyp = 'H'.
    IF vbak-vbtyp = 'H'.
    IF sy-tcode = 'VA01' OR sy-tcode = 'VA02'.
    SELECT SINGLE vbrk~vbeln INTO zvbeln
    FROM vbfa INNER JOIN vbrk ON vbfavbeln = vbrkvbeln
    WHERE vbfavbelv = vbak-vbeln AND vbfaposnv = vbap-posnr
    AND vbfavbtyp_n = 'O' AND vbrkfksto NE 'X'.
    CHECK sy-subrc NE 0.
    CASE screen-group2.
    WHEN 'LOO'.
    IF screen-name = 'VBAP-PSTYV'.
    screen-input = 1.
    ENDIF.
    ENDCASE.
    ENDIF.
    ENDIF.
    INCLUDE zue_sd_0029.
    **If no invoice is created then make PSTYV ready for input for item
    **category IRIN.
    INCLUDE zue_sd_0031.
    ENDFORM.
    *eject
    FORM USEREXIT_MOVE_FIELD_TO_VBAK *
    This userexit can be used to move some fields into the sales *
    dokument header workaerea VBAK. *
    SVBAK-TABIX = 0: Create header *
    SVBAK-TABIX > 0: Change header *
    This form is called at the end of form VBAK_FUELLEN. *
    FORM userexit_move_field_to_vbak.
    vbak-zzfield = xxxx-zzfield2.
    **Ernesto EDIT for UE DEMO 10/16/2002
    SELECT single * INTO TABLE i_tvarv FROM tvarv WHERE name =
    *ZKS_KSEASORG'.
    Start of DEVK923935.
    Initialization Section
    INCLUDE zsdi_mv45afzz_initialization.
    End of DEVK923935.
    **{ INSERT SNDK900075 1
    Change user exit according to Online Documentation to
    copy ship-to info to sale doc header (VBAK)
    *CODE BELOW*REPLACED WITH zue_sd_0017***********
    IF vbak-kvgr1 IS INITIAL AND
    vbak-kvgr2 IS INITIAL AND
    vbak-kvgr3 IS INITIAL AND
    vbak-kvgr4 IS INITIAL AND
    vbak-kvgr5 IS INITIAL.
    SELECT SINGLE vkgrp vkbur kvgr1 kvgr2 kvgr3 kvgr4 kvgr5
    FROM knvv INTO (vbak-vkgrp, vbak-vkbur, vbak-kvgr1, vbak-kvgr2,
    vbak-kvgr3, vbak-kvgr4, vbak-kvgr5)
    WHERE kunnr = kuwev-kunnr AND
    vkorg = vbak-vkorg AND
    vtweg = vbak-vtweg AND
    spart = vbak-spart.
    ENDIF.
    *CODE ABOVE*REPLACED WITH zue_sd_0017***********
    INCLUDE zue_sd_0017.
    *CODE BELOW*REPLACED WITH zue_sd_0017***********
    IF svbak-tabix = 0.
    SELECT SINGLE vsbed FROM knvv INTO vbak-vsbed
    *WHERE kunnr = kuwev-kunnr AND
    vkorg = vbak-vkorg AND
    vtweg = vbak-vtweg AND
    spart = vbak-spart.
    ENDIF.
    *CODE ABOVE*REPLACED WITH zue_sd_0017***********
    Start of DEVK915182
    **Ernesto EDIT for UE DEMO 10/15/2002.
    READ TABLE i_tvarv WITH KEY name = 'ZKS_KSEASORG'.
    IF sy-subrc = 0.
    IF vbak-vkorg = i_tvarv-low.
    IF vbak-vkorg IN i_zsd01_vkorg.
    IF sy-tcode EQ 'VA01'.
    IF sy-dynnr EQ '4021'.
    IF sy-ucomm NE 'SICH'.
    l_pop_type = 'X'.
    INCLUDE zue_sd_0027.
    PERFORM partner_validation USING 'X'.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    end-of DEVK915182
    Project : KSEA - Sales Force Expansion of 1st Jan 2003
    Include for KSEA Sales Org 5010 only for PopUp Windows " 12/23/2002
    INCLUDE zsd_salesforce_expnsn_hdr." Include 1 of 4
    */ Description : KSE Modification to remove the billing block for
    */ returns/credits/debits if sales Org is 5090.
    *ORIGINAL CODE
    *if vbak-vkorg = '5090' and vbak-vbtyp ca 'HKL'.
    *vbak-faksk = ' '.
    *endif.
    IF sy-tcode = 'VA01'.
    IF vbak-vkorg IN i_zsd09_vkorg.
    IF vbak-vbtyp IN i_zsd09_vbtyp.
    vbak-faksk = ' '.
    ENDIF.
    ENDIF.
    ENDIF.
    BREAK-POINT.
    INCLUDE zue_sd_0039.
    ENDFORM.
    *eject
    FORM USEREXIT_MOVE_FIELD_TO_VBAP *
    This userexit can be used to move some fields into the sales *
    dokument item workaerea VBAP *
    SVBAP-TABIX = 0: Create item *
    SVBAP-TABIX > 0: Change item *
    This form is called at the end of form VBAP_FUELLEN. *
    FORM userexit_move_field_to_vbap.
    VBAP-zzfield = xxxx-zzfield2.
    *{ INSERT SNDK900164 1
    Item Category Determination
    DATA: zzbukrs LIKE tvko-bukrs,
    zzmtpos LIKE mvke-mtpos.
    DATA: BEGIN OF zzwerks OCCURS 0,
    werks LIKE marc-werks,
    END OF zzwerks.
    DATA: zdoccat LIKE tvak-vbklt,
    zvmsta LIKE mvke-vmsta,
    zspvbc LIKE tvms-spvbc,
    zvmstb LIKE tvmst-vmstb.
    DATA: z_xvbap LIKE xvbap,
    yp1 LIKE t001k-bwkey,
    z_uepos_bukrs LIKE t001k-bukrs.
    IF i_zsd01_vkorg[] IS INITIAL.
    If the initialization was not performed in the Fill VBAK,
    reload data
    INCLUDE zsdi_mv45afzz_initialization.
    ENDIF.
    SELECT SINGLE bukrs
    INTO zzbukrs
    FROM tvko
    WHERE vkorg = vbak-vkorg.
    SELECT w~werks
    INTO TABLE zzwerks
    FROM t001w AS w JOIN t001k AS k
    ON wbwkey = kbwkey
    WHERE k~bukrs = zzbukrs.
    SELECT SINGLE mtpos INTO zzmtpos
    FROM mvke
    WHERE matnr = vbap-matnr
    AND vkorg = vbak-vkorg
    AND vtweg = vbak-vtweg.
    Export Plant - inport in ZXQSMU07
    EXPORT zz_plant = vbap-werks TO MEMORY ID 'ZZPLANT'. " KN05
    check vbap-pstyv = 'TAN' or vbap-pstyv = 'TANN'.
    removed the CHECK statement and replaced by IF-ENDIF.
    inserted by arvind r kulkarni for TAN, TANN switching
    IF vbap-pstyv = 'TAN' OR vbap-pstyv = 'TANN'
    OR vbap-pstyv = 'REN' " KN02
    OR vbap-pstyv = 'RENN' . " KN02
    READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
    check sy-subrc ne 0.
    IF sy-subrc NE 0.
    IF vbap-pstyv = 'TAN'.
    vbap-pstyv = 'ZAN'.
    ELSEIF vbap-pstyv = 'REN'. " KN02
    vbap-pstyv = 'YREN'. " KN02
    ELSEIF vbap-pstyv = 'RENN'. " KN02
    vbap-pstyv = 'YRNN'. " KN02
    ELSEIF vbap-pstyv = 'TANN'.
    vbap-pstyv = 'ZANN'.
    ENDIF.
    ENDIF.
    ENDIF.
    INCLUDE zue_sd_0014.
    Begin insert for check for discontinued material in repair orders
    LOGIC: For IRAT item categories, check if the material status field *
    blank or populated. *
    If populated, get the value of the D-Chain specific status *
    and issue warning/error message with the associated text *
    from config the D-Chain specific material status. *
    Included YRAT to this logic (YRAT is free IRAT); 11/22/2002. *
    IF vbap-pstyv = 'IRAT' OR vbap-pstyv = 'YRAT'.
    CLEAR: zvmsta, zvmstb, zspvbc.
    SELECT SINGLE vmsta INTO zvmsta FROM mvke WHERE
    matnr = vbap-matnr AND vkorg = vbak-vkorg
    AND vtweg = vbak-vtweg.
    CHECK: NOT zvmsta IS INITIAL.
    IF NOT zvmsta IS INITIAL.
    SELECT SINGLE spvbc INTO zspvbc FROM tvms WHERE
    vmsta = zvmsta.
    SELECT SINGLE vmstb INTO zvmstb FROM tvmst WHERE
    spras = sy-langu AND vmsta = zvmsta.
    CASE zspvbc.
    WHEN 'A'.
    MESSAGE ID 'V1' TYPE 'W' NUMBER '028' WITH zvmsta zvmstb.
    WHEN 'B'.
    MESSAGE ID 'V1' TYPE 'E' NUMBER '028' WITH zvmsta zvmstb.
    ENDCASE.
    ENDIF.
    ENDIF.
    End insert for check for discontinued material in repair orders
    INCLUDE zue_sd_0004.
    INCLUDE zue_sd_0005.
    end of DEVK923935.
    ****************END OF TEST SOURCE CODE******************
    Begin Insert to assign material entered for TRADE material
    Ak; 11/08/2002.
    For trade material, the system will now mandate entry of higher level
    item number and based on this, the system will bring in specialty,
    material number (into material entered) and profit centre from this
    higher level item into the line item for material TRADE.
    Added MVGR2 & 3 to pass onto TRADE material; 11/12/2002 - Arvind.
    Added material a/c assignment grp to trade-in material.
    Added ZTRD item category to this logic. - Arvind 11/18/2002.
    INCLUDE zzsdprc01.
    INCLUDE zue_sd_0028.
    End Insert to assign material entered for TRADE material
    ********************End of DIP Profile change************************
    Get custom group data from MVKE (Sales Data for Material) by Material
    when order type is 'RAS' (Repairs/Service)
    and populate line item's Additional data A
    INCLUDE zue_sd_0006.
    INCLUDE zue_sd_0001.
    include ZUE_SD_0032.
    INCLUDE zue_sd_0002.
    Get similar data (as above) from Servicable Material
    INCLUDE zue_sd_0003.
    *} INSERT
    Determine Delivery Priority from SH Partner
    11/02/2001
    SELECT SINGLE lprio
    FROM knvv
    INTO vbap-lprio
    WHERE kunnr = kuwev-kunnr AND
    vkorg = vbak-vkorg AND
    vtweg = vbak-vtweg AND
    spart = vbak-spart.
    Determine Delivery Priority for Order Type RAS
    INCLUDE zsd_check_pstyv_werks.
    To re-determine Matwa if the replacement item is changed afterwards
    Niranjan 05/10/05 and ECLARKE
    INCLUDE zue_sd_0021.
    Mod for all sales organizations
    Determination of Profit Center
    06/24/03
    INCLUDE zue_sd_0007.
    End PRCTR Determination for KSI's document
    KSI modification
    Code to enter the actual part number of the item being repaired,
    rather than "REPAIR"
    09/18/02 GM
    DATA: intercoflag TYPE c.
    PERFORM zz_determine_cross_comp USING vbak-vkorg
    vbap-werks
    intercoflag.
    IF intercoflag = 'Y'
    AND
    ( vbap-pstyv = 'IRIN' OR vbap-pstyv = 'ZRIN' ).
    SELECT SINGLE matwa INTO vbap-matwa FROM vbap
    WHERE vbeln = vbap-vbeln AND posnr = vbap-uepos.
    IF sy-subrc NE 0.
    MESSAGE e006(z1) WITH vbap-uepos.
    ENDIF.
    ENDIF.
    End material look up modification GM 9/17/02
    KSI modification
    DP90 Only:
    Remove Billing Block from IRIN items and moved them to the header
    10/06/02 CNG
    11/18/2002 Tr-DEVK917363
    Added Sales Orgs 5040 & 5060
    KSI modification
    06/10/2003 CNG CN01
    If IRIN, clear billing block at item level
    IF sy-tcode = 'DP90'.
    IF vbap-werks = '7000' AND vbak-vkorg = '5010' AND" SM01-
    vbap-pstyv = 'IRIN'." SM01-
    IF vbap-werks = '7000' AND" SM01+
    ( vbak-vkorg IN i_zsd01_vkorg OR" SM01+
    vbak-vkorg = '5040' OR" SM01+
    Removed >>
    vbak-vkorg = '5060' )" SM01+ CN01-
    AND vbap-pstyv = 'IRIN'." SM01+ CN01-
    vbak-faksk = '02'.
    Removed <<
    Inserted - check and block for line item IRIN only
    vbak-vkorg = '5060' )." SM01+
    vbak-faksk = '02'.
    IF vbap-pstyv = 'IRIN'." CN01+
    CLEAR vbap-faksp.
    Inserted - check and block for line item IRIN only
    ENDIF.
    ENDIF.
    ENDIF.
    KSI modification
    Routine to populate VBAP-ZZEDATU and VBAP-ZZVDATU on change and
    creation of order
    02/10/03 CNG
    PERFORM check_custom_dates.
    KSE Modification to create return item automatically**
    Copied from Niranjan's routine tested in SND210 Date 04/05/03
    INCLUDE zue_sd_0008.
    User Exit for Service Processing - Clear Results
    Analysis Key in sales order item for non-KSE service
    items. DEVK927084 W. Miller 05/12/2003
    Changed to validate by plant instead of sales org.
    06/30/03 BEGIN>>>
    if not vbak-vkorg = '5090' and vbap-bedae = 'SE'.
    *Added 5000 for KSEM Prjct 02-09-2006 EC
    IF NOT ( vbap-werks = '9000' OR vbap-werks = '5000' )
    AND ( vbap-bedae = 'SE' OR VBAP-BEDAE = 'SERA' ).
    06/30/03 END <<<<
    CLEAR vbap-abgrs.
    ENDIF.
    End of DEVK924084
    */ Author : w/ Trimb.
    */ Date : 10/07/2003 ---> Repair No : DEVK930002
    */ Description : KSE Modification For plant 9000, to check the
    */ material is 'Non-R' for RAS order type
    */ and is 'R' for ZREX and ZWAR order types.
    *Added lines below for - There is a user exit which exists that does
    *not allow materials that do not begin with an "R" to be posted into
    *plant 9000 if they are attached to a ZWAR order type. KSE/KSEA would
    *like to modify this exit to allow materials with profit centers
    *5090-03003 and 5090-04003 to be posted.
    *ECLARKE/Niranjan 07-29-2004
    *________________________n 07-29-2004__________________
    DATA: flag_dexe.
    TABLES: zzue027.
    CLEAR: flag_dexe.
    SELECT SINGLE werks auart prctr INTO (zzue027-werks, zzue027-auart,
    zzue027-prctr) FROM zzue027 WHERE werks = vbap-werks AND auart =
    vbak-auart AND prctr = vbap-prctr.
    IF sy-subrc = 0.
    flag_dexe = 'X'.
    ENDIF.
    *________________________ 07-29-2004__________________
    IF flag_dexe IS INITIAL. " 07-29-2004
    IF vbap-werks IN i_zsd09_werks.
    IF ( vbak-auart IN i_zsd02_auart AND vbap-pstyv IN i_zsd04_pstyv AND
    vbap-matwa(1) = 'R' ) OR ( vbak-auart IN i_zsd02_auart AND
    vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) = 'R' ).
    IF vbap-matwa(1) = 'R'.
    MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
    vbap-pstyv.
    ENDIF.
    IF vbap-matnr(1) = 'R'.
    MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
    vbap-pstyv.
    ENDIF.
    ELSEIF ( vbak-auart IN i_zsd03_auart AND vbap-pstyv IN
    i_zsd04_pstyv AND vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN
    i_zsd03_auart AND vbap-pstyv IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' )
    OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv IN i_zsd04_pstyv AND
    vbap-matwa(1) <> 'R' ) OR ( vbak-auart IN i_zsd04_auart AND vbap-pstyv
    IN i_zsd03_pstyv AND vbap-matnr(1) <> 'R' ).
    IF vbap-matwa(1) <> 'R'.
    MESSAGE e001(zkse) WITH vbap-matwa vbap-posnr vbak-auart
    vbap-pstyv.
    ENDIF.
    IF vbap-matnr(1) <> 'R'.
    MESSAGE e001(zkse) WITH vbap-matnr vbap-posnr vbak-auart
    vbap-pstyv.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    INCLUDE zue_sd_0015.
    include zue_sd_0019
    Enhancement to populate Storage Location for sales order 5090
    and plant 9000. But any companies can use it as long as entries are
    maintained in table zsd_default_sloc
    Niranjan 02/11/04
    DEVK933987 - MV45AFZZ - MPitisci 4/12/2004
    DEVK933989 - ZUE_SD_0019 include
    DEVK933998 - ZSD_DEFAULT_SLOC table
    INCLUDE zue_sd_0019.
    To give hard error for D-CHin status 07 for items catgories other
    than trade.
    04/10/05
    INCLUDE zue_sd_0034.
    Checks if the storage location value is changed and checks to see if
    the storage location correlates to the P3 Partner function rules
    08/05/2005
    INCLUDE zue_sd_0036.
    INCLUDE zue_sd_0013.
    <b>**************New code********
    INCLUDE ZSD_DEFAULT_BWTAR.
    ********************************</b>
    ENDFORM.
    *eject
    FORM USEREXIT_MOVE_FIELD_TO_VBEP *
    This userexit can be used to move some fields into the sales *
    dokument schedule line workaerea VBEP *
    SVBEP-TABIX = 0: Create schedule line *
    SVBEP-TABIX > 0: Change schedule line *
    This form is called at the end of form VBEP_FUELLEN. *
    FORM userexit_move_field_to_vbep.
    DATA: intercoflag TYPE c.
    VBEP-zzfield = xxxx-zzfield2.
    Assign 'ZP' to Schedule line Category for Acct Assignment Grp =
    Chui 10/23/2001
    DATA: zzbukrs LIKE tvko-bukrs,
    zzmtpos LIKE mvke-mtpos.
    DATA: z_vbelv LIKE vbfa-vbelv," KN03
    z_auart LIKE vbak-auart," KN03
    z_vbtyp LIKE vbak-vbtyp," KN03
    z_ettyp LIKE vbep-ettyp," KN03
    z_pstyv LIKE vbap-pstyv," KN04
    z_posnr LIKE vbap-posnr." KN04
    DATA: BEGIN OF zzwerks OCCURS 0,
    werks LIKE marc-werks,
    END OF zzwerks.
    IF vbak-vbtyp CN 'AB'. "ECLARKE 01-26-04
    SELECT SINGLE bukrs
    INTO zzbukrs
    FROM tvko
    WHERE vkorg = vbak-vkorg.
    SELECT w~werks
    INTO TABLE zzwerks
    FROM t001w AS w JOIN t001k AS k
    ON wbwkey = kbwkey
    WHERE k~bukrs = zzbukrs.
    SELECT SINGLE mtpos INTO zzmtpos
    FROM mvke
    WHERE matnr = vbap-matnr
    AND vkorg = vbak-vkorg
    AND vtweg = vbak-vtweg.
    *lines added for valuated customer-returns project by msn
    110903. It will set required schedule line category YR on specific
    item categories if the document created is of type RE with reference
    document being an invoice of type F2
    *ECLARKE & MILIND NAND. 11-11-2003.
    *Schedule Line Category - Valuate Customer Returns Stock
    INCLUDE zue_sd_0010.
    CASE vbap-pstyv.
    WHEN 'ZRPN'.
    EXIT.
    WHEN 'TAN' OR 'TANN'.
    IF vbkd-ktgrd = '01'. " Added 6/5/02
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'ZA'.
    ELSE.
    vbep-ettyp = 'ZP'.
    ENDIF.
    ENDIF.
    **Ernesto EDIT for UE DEMO 10/15/2002
    ***************TEST FUNCTION MODULE FOR USER EXIT MAINT.******
    **ADDED A CASE STATEMENT BELOW.
    CALL FUNCTION 'Z_UE_SD_GET_SCHEDULE_LINE_CAT'
    EXPORTING
    pstyv = vbap-pstyv
    ktgrd = vbkd-ktgrd
    ettyp2 = vbep-ettyp
    IMPORTING
    ettyp = vbep-ettyp.
    ****************END OF TEST SOURCE CODE******************
    READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
    check sy-subrc ne 0.
    IF sy-subrc NE 0.
    Change inserted by Arvind R Kulkarni; 07/22/2002
    TAN -> ZAN; TANN => ZANN
    vbap-pstyv = 'ZAN'.
    IF vbap-pstyv = 'TAN'.
    vbap-pstyv = 'ZAN'.
    ELSEIF vbap-pstyv = 'TANN'.
    vbap-pstyv = 'ZANN'.
    ENDIF.
    end of change
    ENDIF.
    *ADDED CASE HERE FOR TEST FOR SYNTAX CHECK 10/15/2002
    *CASE vbap-pstyv.
    WHEN 'ZAN'.
    READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
    CHECK sy-subrc EQ 0.
    vbap-pstyv = 'TAN'.
    WHEN 'ZANN'.
    READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
    CHECK sy-subrc EQ 0.
    vbap-pstyv = 'TANN'.
    WHEN 'ZTAN'.
    IF vbkd-ktgrd = '01'. " Added 6/5/02
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'ZA'.
    ELSE.
    vbep-ettyp = 'ZP'.
    ENDIF.
    ENDIF.
    READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
    check sy-subrc ne 0.
    IF sy-subrc NE 0.
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'ZA'.
    ELSE.
    vbep-ettyp = 'ZP'.
    ENDIF.
    ENDIF.
    03/23/2005 KN03 Set Schedule Line default to ZF order type ZFD,
    item cat ZTAN, sales org 5060, 5070, and 5071
    IF vbak-auart EQ 'ZFD' AND
    ( vbak-vkorg = '5060' OR vbak-vkorg = '5070'
    OR vbak-vkorg = '5071' ).
    vbep-ettyp = 'ZF'.
    ENDIF.
    Begin of insertion for IRAT processing
    Arvind R Kulkarni; Dated: 07/17/2002.
    Changed to include YRAT; ; 11/22/2002
    WHEN 'IRAT' OR 'YRAT'.
    IF vbak-auart NE 'ZWAR'.
    the sales order is NOT a ZWAR
    READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
    IF sy-subrc NE 0.
    the transaction IS intercompany
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'YN'.
    ELSE.
    vbep-ettyp = 'YL'.
    ENDIF.
    ELSE.
    the transaction IS NOT intercompany
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'ZN'.
    ELSE.
    vbep-ettyp = 'ZL'.
    ENDIF.
    ENDIF.
    IF vbkd-ktgrd = '01'.
    sale is to an affiliate in local sales org
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'YN'.
    ELSE.
    vbep-ettyp = 'YL'.
    ENDIF.
    ENDIF.
    ELSE.
    the sales order IS a ZWAR
    READ TABLE zzwerks WITH TABLE KEY werks = vbap-werks.
    IF sy-subrc NE 0.
    the transaction IS intercompany
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'ZA'.
    ELSE.
    vbep-ettyp = 'ZP'.
    ENDIF.
    ELSE.
    the transaction IS NOT intercompany
    NOTHING NEEDS TO BE DONE FOR ZWAR DOMESTIC
    STD SCHED LINE CATEGORIES TO BE MAINTAINED.
    IF VBEP-ETTYP = 'CN'.
    VBEP-ETTYP = 'ZN'.
    ELSE.
    VBEP-ETTYP = 'ZL'.
    ENDIF.
    ENDIF.
    IF VBKD-KTGRD = '01'.
    sale is to an affiliate in local sales org
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'ZA'.
    ELSE.
    vbep-ettyp = 'ZP'.
    ENDIF.
    ENDIF.
    ENDIF.
    End of insertion for IRAT processing
    WHEN 'IRRS' OR 'IRRE' OR 'IRLA' OR 'IRLB' OR 'KBN' OR 'TAQ'
    KSI Modification 04/22/03
    Exclude check for item category 'YKW'
    OR 'YTAN' OR 'ZKLN' OR 'KAN' OR 'ZTAQ'
    OR 'YKW' OR 'IRRP' OR 'ZKBC' OR 'ZKBN' OR 'ZKAN' OR 'KLN'.
    or 'ZKEN' OR 'ZKEC' or ZREK OR 'KEN'.
    EXIT.
    WHEN 'ZTR1' OR 'ZRBB' OR 'ZREB' OR 'ZREC' OR 'ZREF' OR 'ZREN'
    Removed ZRTN to validate plant 9000
    OR 'ZRFF' OR 'ZRNB' OR 'ZRNN' OR 'REN' OR 'RENN'
    OR 'ZLN' OR 'IRAL' OR 'ZTR0' OR 'KLN'.
    EXIT.
    03/23/2005 KN03 set default sched line for KE & ZKE
    WHEN 'KEN' OR 'ZKEG' OR 'ZKEN' OR 'ZKEC'.
    IF vbak-vkorg EQ '5070'.
    vbep-ettyp = 'Z0'.
    ENDIF.
    WHEN 'ZREK'.
    INCLUDE zue_sd_0033.
    IF vbap-werks = '9000'. " KN04
    IF vbkd-ktgrd = '01'. " KN04
    IF z_auart = 'ZFD ' and z_pstyv = 'KLN '. " KN04
    vbep-ettyp = 'YK'. " KN04
    ENDIF.
    ENDIF.
    ENDIF.
    KSE Modification 04/10/03
    For Item Cate 'ZRTN'
    Assign 'YQ' to Schedule line cat, if cross-company
    'YU' if not.
    WHEN 'ZRTN'.
    KN03 for KSI set default schedule line for order type ZREK
    INCLUDE zue_sd_0033.
    IF svbep-tabix IS INITIAL.
    IF vbap-werks = '9000'.
    IF vbkd-ktgrd = '01'. " KN04
    IF z_auart = 'ZFD' and z_pstyv = 'KLN '. " KN04
    vbep-ettyp = 'YK'. " KN04
    ELSE. " KN04
    vbep-ettyp = 'YQ'.
    ENDIF.
    ELSE.
    vbep-ettyp = 'YU'.
    ENDIF.
    ENDIF.
    ENDIF.
    KN03 for KSI set default schedule line for order type ZREK
    INCLUDE zue_sd_0033.
    WHEN OTHERS.
    IF vbkd-ktgrd = '01'.
    IF vbep-ettyp = 'CN'.
    vbep-ettyp = 'ZA'.
    ELSE.
    vbep-ettyp = 'ZP'.
    ENDIF.
    ENDIF.
    ENDCASE.
    endif.
    Redetermine Movement Type
    PERFORM tvep_select(sapmv45a) USING vbep-ettyp
    charx
    sy-subrc.
    vbep-bwart = tvep-bwart.
    ENDIF.
    KSE Mod
    User Exit for Repair Replacement
    Export VBEP-ETTYP, imported by RV64A950
    04/18/03
    EXPORT i_ettyp = vbep-ettyp TO MEMORY ID 'ZZSCHEDULE'.
    **lines added for valuated customer-returns project by msn
    110903. It will set required schedule line category YR on specific
    item categories if the document created is of type RE with reference
    document being an invoice of type F2
    **. 11-11-2003.
    **Schedule Line Category - Valuate Customer Returns Stock
    BREAK-POINT.
    INCLUDE zue_sd_0010.
    *KSEA Modification to default item creation date for the IRAT
    *line item schedule line. SAP Note 23281
    04/01/04
    INCLUDE zue_sd_0020.
    ENDFORM.
    *eject
    FORM USEREXIT_MOVE_FIELD_TO_VBKD *
    This userexit can be used to move some fields into the sales *
    dokument business data workaerea VBKD *
    SVBKD-TABIX = 0: Create data *
    SVBKD-TABIX > 0: Change data *
    This form is called at the end of form VBKD_FUELLEN. *
    FORM userexit_move_field_to_vbkd.
    VBKD-zzfield = xxxx-zzfield2.
    Get Customer group, Price group and Price list type *
    by Ship-to party
    10/04/2001
    DATA: yp1 LIKE t001k-bwkey,
    z_uepos_bukrs LIKE t001k-bukrs.
    *Request by Customer Service - Marian Favors 11-08-2004
    TABLES: zzue030. "ECLARKE 11-08-2004
    SELECT SINGLE tcode INTO zzue030-tcode FROM zzue030
    WHERE tcode = sy-tcode. "ECLARKE 11-08-2004
    IF sy-subrc = 0. "ECLARKE 11-08-2004
    Removed check for customer group as this was required by Steve Ludewig
    IF " vbkd-kdgrp IS INITIAL AND "Arvind Kulkarni; 08/05/2002.
    vbkd-konda IS INITIAL AND
    vbkd-pltyp IS INITIAL.
    SELECT SINGLE kdgrp konda pltyp bzirk
    INTO (vbkd-kdgrp, vbkd-konda, vbkd-pltyp, vbkd-bzirk)
    FROM knvv
    WHERE kunnr = kuwev-kunnr
    AND vkorg = vbak-vkorg
    AND vtweg = vbak-vtweg
    AND spart = vbak-spart.
    ENDIF.
    ENDIF. "ECLARKE 11-08-2004
    Redetermine Schedule line Category if Acct Assignment Grp is changed
    to
    Chui 10/23/2001
    IF svbkd-tabix > 0 AND sy-dynnr = '4311'.
    IF vbkd-ktgrd = '01' AND vbep-ettyp <> 'ZP'.
    PERFORM userexit_move_field_to_vbep.
    ENDIF.
    ENDIF.
    INCLUDE zzsdprc01.
    To make the value of the field VBAK-ZUONR same as VBKD-BSTKD
    05/04/04
    vbak-zuonr = vbkd-bstkd.
    ENDFORM.
    *eject
    FORM USEREXIT_NUMBER_RANGE *
    This userexit can be used to determine the numberranges for *
    the internal document number. *
    US_RANGE_INTERN - internal number range *
    This form is called from form BELEG_SICHERN *
    FORM userexit_number_range USING us_range_intern.
    Example: Numer range from TVAK like in standard
    US_RANGE_INTERN = TVAK-NUMKI.
    ENDFORM.
    *eject
    FORM USEREXIT_PRICING_PREPARE_TKOMK *
    This userexit can be used to move additional fields into the *
    communication table which is used for pricing: *
    TKOMK for header fields *
    This form is called from form PREISFINDUNG_VORBEREITEN. *
    FORM userexit_pricing_prepare_tkomk.
    TKOMK-zzfield = xxxx-zzfield2.
    *{ INSERT SNDK900075 1
    tkomk-aland = t001-land1.
    *} INSERT
    Fill Zip code with Ship-to party's
    tkomk-post_code1 = kuwev-pstlz.
    ENDFORM.
    *eject
    FORM USEREXIT_PRICING_PREPARE_TKOMP *
    This userexit can be used to move additional fields into the *
    communication table which is used for pricing: *
    TKOMP for item fields *
    This form is called from form PREISFINDUNG_VORBEREITEN. *
    FORM userexit_pricing_prepare_tkomp.
    TKOMP-zzfield = x

  • Remessa de Entrega Futura

    Senhores tenho o seguinte problema:
    Estamos em processo de implantanção do sap na empresa, e ainda tudo é novo, mas tenho uma duvida sobre o faturamento antecipado.
    No processo cria-se uma ordem para faturamento antecipando (entrega futura) e um documento de faturamento relacionado a esta ordem, até este ponto tudo bem.
    O problema esta na criação das notas de remessa relacionadas ao faturamento antecipado, cria-se uma ordem relacionando o faturamento antecipado mas o Sap nao controla o saldo do faturamento antecipado, trazendo para a ordem sempre a quantidade total faturada antecipadamente.
    O exemplo seria assim:
    Entrega Futura: 100
    Remessa Entrega Futura 1: Saldo 100 Quantidade Utilizada 10 Saldo Restante 90
    Remessa Entrega Futrua 2: Saldo 90   Quantidade Utilizada 20 Saldo Restante 70
    E assim por diante, até zerar o saldo de faturamento futuro.
    Gostaria de saber se tem como controlar este saldo

    Olá Petrúcio,
    O cenário de venda/entrega futura é muito comum nas empresas, porém a SAP não criou essa consistência/inteligência de controlar o saldo das quantidades na remessa.
    Ao mesmo tempo, também não faz para uma simples devolução. As quantidades não são controladas, daquilo que vendeu, daquilo que foi devolvido.
    Quando ocorre a  referencia o sistema simplesmente copia o campo da quantidade e não realiza a verificação se o campo é ou não maior.                                                                               
    A única alternativa para que o sistema atenda as necessidades do negócio,nesse caso, é modificando essa funcionalidade padrão. Veja as sugestões abaixo:                                                                               
    1. Verificar por meio das userexist se o campo está com a quantidade maior que a fatura. Podes usar, por exemplo, a userexit:    
    USEREXIT_CHECK_VBAP -> MV45AFZB ou                                     
    USEREXIT_MOVE_FIELD_TO_VBAP -> MV45AFZZ                                                                               
    2. Bloquear a modificação da quantidade do campo, a userexist USEREXIT_FIELD_MODIFICATION -> MV45AFZZ é uma sugestão para que o campo seja copiado e não modificado o seu valor.                             
    Espero poder ter ajudado.
    Ruy Castro

  • RE: Urgent changing values in the table VA01 items (table COntrol)

    HI,
    i am using the include MV45AFZZ, userexit_field_modification sub routine.
    when i enter any value in them items automatically that value should be copied to the next line,  can anyone guide me how to proceed witth it.
    Thanks & Regards
    Dinesh Subrahmanyam

    HI,
    I am using the form, 
    When we enter the first material and the quantity (KWMENG) the next item.. has to be disabled and the value entered in the first item should be copied to the others.  can you please guide me how to proceed with..
    Thanks & Regards
    Dinesh Subrahmanyam

  • Sale order- Pricing -Access Sequence

    Hi Gurus,
    While creating Sale order, the price is picked from the Pricing procedure and Condition records maintained.
    In PR00- Material price and Customer-Material special price is maintained in VK11.
    So the system picks Customer Material combination price and the same we can see in the Item level conditions-Analysis for pricing and can also see it fetched record from where.
    So for this Client wants in the following way: POPUP MESSAGE
    At Sale order Warning Message that Price is taken from Which List- Normal Price List or Special Price List for Customer and Material combination
    Is there some way to do this?
    Thanks in Advance.
    Best Regards
    Sri

    Hi,
    U have to take ABAPER HELP  No doubt please use this input if tis use full .
    User Exits For Price Determination
    USEREXIT_PRICING_PREPARE_TKOMK (module pool SAPLV60A, program RV60AFZZ)
    This user exit allows you to copy additional fields for pricing in the TKOMK communication structure (header fields), which have not been provided in the standard SAP system. These fields can also be used for pricing in the billing document.
    This user exit is described in detail in the "New fields in pricing" section.
    USEREXIT_PRICING_PREPARE_TKOMP (module pool SAPLV60A, program RV60AFZZ)
    This user exit allows you to copy additional fields for pricing in the TKOMP communication structure (item fields), which have not been provided in the standard SAP system. These fields can also be used for pricing.
    This user exit is described in detail in the "New fields in pricing" section.
    USEREXIT_FIELD_MODIFICATION (module pool SAPMV61A, program MV61AFZA)
    You can use this user exit to adjust the display of individual lines in the condition screen by changing the display attributes of the screen fields. This does not include the display of subtotals.
    This user exit is also used in order processing.
    USEREXIT_FIELD_MODIFIC_KZWI (module pool SAPMV61A, program MV61AFZB)
    You can change the display of subtotals in the condition screen by changing the display attributes of the screen fields.
    This user exit is also used in order processing.
    USEREXIT_FIELD_MODIFIC_KOPF (module pool SAPMV61A, program MV61AFZB)
    You can adjust the display of subtotals in the condition screen to your requirements by changing the display attributes of the screen fields.
    This user exit is also used in order processing.
    USEREXIT_FIELD_MODIFIC_LEER (module pool SAPMV61A, program MV61AFZB)
    You can adjust the display of blank lines in the condition screen to your requirements by changing the display attributes of the screen fields.
    This user exit is also used in order processing.
    USEREXIT_PRICING_CHECK (module pool SAPMV61, program MV61AFZA)
    You can install additional checks to the standard checks of condition lines (e.g. maximum/minimum value).
    USEREXIT_PRICING_RULE (module pool SAPLV61A, program RV61AFZA)
    In the standard SAP system, it is predefined which condition categories and classes can be copied or recalculated per pricing type. You can change the predefined standard procedure for each pricing type.
    USEREXIT_CHANGE_PRICING_RULE (module pool SAPMV61A, program MV61AFZA)
    You can use this user exit to change the pricing type that has been predefined in the copying control table in billing.
    USEREXIT_XKOMV_BEWERTEN_INIT (module pool SAPLV61A, program RV61AFZB)
    This field is used in the formulas and therefore initialized before the loop for the pricing procedure starts.
    USEREXIT_XKOMV_BEWERTEN_END (module pool SAPLV61A, program RV61AFZB)
    Within a loop for the price components during pricing, specific values can be transferred into the communication structures in pricing to be further processed.
    USEREXIT_XKOMV_ERGAENZEN (module pool SAPLV61A, program RV61AFZB)
    In change mode, you can change the dynamic part of the condition record (KONVD) that is always redetermined (i.e. it is not stored in database table KONV).
    USEREXIT_XKOMV_ERGAENZEN_MANU (module pool SAPLV61A, program RV61AFZB)
    You can use this user exit to change the ready-for-input fields of the manually entered condition record in add mode in the condition screen.
    USEREXIT_XKOMV_FUELLEN (module pool SAPLV61A, program RV61AFZB)
    This user exit is always called up during a redetermination of all or individual price components. You can change the work fields of the condition line. However, this only applies to conditions that have been determined via a condition record.
    USEREXIT_XKOMV_FUELLEN_O_KONP (module pool SAPLV61A, program RV61AFZB)
    This user exit is always called up during a redetermination of all or individual price components. You can change the work fields of the condition line. However, this only applies to conditions that have been determined via a condition record. This may include subtotals, manually entered conditions or conditions that have been calculated with a formula.
    USEREXIT_PRICING_COPY (module pool SAPLV61A, program RV61AFZA)
    You can change the KONV fields for copied price components
    With best regards,
    venkataswamy.y

Maybe you are looking for