Top 10 Userexits in SD

© SAP AG 2001, Title of Presentation, Speaker Name 1

What is a Userexit?

A Userexit is a predefined place in the SAP standard code where the user can write code to influence processing.
 Code written in userexits is not overwritten during an upgrade.  A list of most userexits can be found in the IMG.
 SD

-> System Modification -> Userexits

 This list grows with every new release.  Code written in userexits is not supported by SAP.

© SAP AG 2001, Title of Presentation, Speaker Name 2

TOP 10 SD Userexits
1. APPEND Structures 2. User Screens in Sales Order Processing 3. Determining Sales Orders Fields 4. Add New Fields for Pricing 5. Pricing Procedure Userexits 6. ATP Plant Selection 7. Copying Data to Reference Documents 8. Sales Document “Save” Userexits 9. Pricing Type with “New Pricing” 10. Influencing “New Pricing”
© SAP AG 2001, Title of Presentation, Speaker Name 3

Number 1: Append Structures Can I add a new field to the sales order?

Release 3.0A APPEND STRUCTURES

© SAP AG 2001, Title of Presentation, Speaker Name 4

Number 2: User Screens in Sales Order Entry just added a field to the sales order header. I How can I maintain / display it in the sales order?

HEADER
 SAPMV45A 8309 This is an include dynpro in SAPMV45A 309

ITEM
 SAPMV45A 8459 This is an include dynpro in SAPMV45A 459

© SAP AG 2001, Title of Presentation, Speaker Name 5

Number 2: User Screens in Sales Order Entry I just added a field to the sales order header. How can I maintain / display it in the sales order?

User dynpros exist as part of the “additional data” screens at header/item level in 3.0. They have their own tabs in Release 4.X. Sales Installation Specific Data Definitions
 MV45ATZZ

Sales Installation Specific PBO Modules
 MV45AOZZ

Sales Installation Specific PAI Modules
 MV45AIZZ

© SAP AG 2001, Title of Presentation, Speaker Name 6

Number 3: Determining Sales Order Fields I just added a new field to the sales order header. How do I fill it with a value? How can I determine the payment terms different from standard?

MV45AFZZ  Sales Order Header
USEREXIT_MOVE_FIELD_TO_VBAK

Sales Order Schedule Line
USEREXIT_MOVE_FIELD_TO_VBEP

 Sales Order Item
USEREXIT_MOVE_FIELD_TO_VBAP

Sales Order Business Data
USEREXIT_MOVE_FIELD_TO_VBKD

MV45AFZB  Sales Order Serial Numbers
USEREXIT_MOVE_FIELD_TO_VBSN

© SAP AG 2001, Title of Presentation, Speaker Name 7

Number 3: Determining Sales Order Fields

MV45ATZZ  Use for general data declarations TABLES: YYYY.

Common Work Areas KUAGV - Sold-to Party Information KUWEV - Ship-to Party Information KURGV - Payer Information KUREV - Bill-to Party Information MAAPV - Material Master View: Sales Org Data 1 MAEPV - Material Master View: Sales Org Data 2

© SAP AG 2001, Title of Presentation, Speaker Name 8

Number 3: Determining Sales Order Fields

MV45AFZZ FORM USEREXIT_MOVE_FIELD_TO_VBAK. IF SVBAK-TABIX = 0. VBAK-ZZFIELD = YYYY-ZZFIELD1. ENDIF. FORM USEREXIT_MOVE_FIELD_TO_VBKD. IF SVBKD-TABIX = 0. VBKD-ZTERM = YYYY-ZZFIELD2. ENDIF.

© SAP AG 2001, Title of Presentation, Speaker Name 9

Number 4: Add New Fields for Pricing How can I price off of the new field I added to the sales order header? Add new field to:
KOMKAZ - User header fields for pricing KOMPAZ - User item fields for pricing

Add to pricing field catalog and create necessary pricing tables, access sequences. Next slide ….

© SAP AG 2001, Title of Presentation, Speaker Name 10

Number 4: Add New Fields for Pricing How can I price off of the new field I added to the sales order header?

Fill value during order entry and billing.
 MV45AFZZ – Sales Order
 USEREXIT_PRICING_PREPARE_TKOMK

TKOMK_ZZABC=VBAK-ZZABC
 USEREXIT_PRICING_PREPARE_TKOMP

TKOMP-ZZABC=VBAP-ZZABC  RV60AFZZ – Billing Document
 USEREXIT_PRICING_PREPARE_TKOMK  USEREXIT_PRICING_PREPARE_TKOMP

© SAP AG 2001, Title of Presentation, Speaker Name 11

Number 5: Pricing Procedure Userexits What are all of the formulas, requirements, etc. in the pricing procedure for?

Pricing Procedure Requirement Access Sequence Requirement Scale Base Formula Condition Base Formula Condition Value Formula

© SAP AG 2001, Title of Presentation, Speaker Name 12

Number 5: Pricing Procedure Userexits
Requirements Pricing procedure Pricing procedure Step Condition type Name Step Condition type Name 1 10 15 16 17 100 Access Access Sequence Sequence Price Gross value Sales deal % discount Value discount Net value Access Access 10 20 Condition Condition Type Type XXX4 XXX4 Table Table Sales Org / Customer / Material Sales Org / Material Scale Base Formula: 15 Scale Base Formula: 15 Formulas

Requirement Requirement 2 2 6 8

1

Calc.type Base value Calc.type Base value

5

4

XXX1 XXX2 XXX3 XXX4

14 17 12

Requirement Requirement 14

2

3

© SAP AG 2001, Title of Presentation, Speaker Name 13

Number 5: Pricing Procedure Userexits
Account determination Output Control Material determination Listing / Exclusion Scale base Condition base Condition base value Structure of group key

Requirements
Pricing Statistics

Formulas
Rounding rule

VOFM
Copying Requirements Data transfer
Sales Activities Deliveries Texts Billing Documents

Sales Orders
© SAP AG 2001, Title of Presentation, Speaker Name 14

Number 5: Pricing Procedure Userexits
General Notes

Requirements are available to aid performance by eliminating unnecessary accesses to the database. Formulas are available to calculate values differently from the way they are calculated in the standard system or to set certain values. In formulas, the field XKWERT always stands for the number being determined. Important work areas:
 KOMK - Sales header communication structure  KOMP - Sales item communication structure  XKOMV - Internal pricing table

© SAP AG 2001, Title of Presentation, Speaker Name 15

Number 5: Pricing Procedure Userexits
Requirements

Definable at the pricing procedure access sequence level. The requirement routine defines the circumstances under which the access should be made.

and

Examples Requirement ‘6’: Only perform the access if condition exclusion is not active. CHECK: KOMP-KZNEP NE ‘X’. New Requirement: Discount is only relevant for items with material group ‘ABC’. CHECK: KOMP-MATKL EQ ‘ABC’.
© SAP AG 2001, Title of Presentation, Speaker Name 16

Number 5: Pricing Procedure Userexits
Formulas

Scale Base Formula
 This formula alters the value that the system uses to read the scales in the condition record.  Standard delivered formula “023” is used with condition type KP03 to compute the incremental surcharge for not ordering in full pallets. If 24.30 pallets are ordered, scale base formula “023” changes XKWERT to 0.30 which is then used to read the scales to determine the appropriate surcharge.

Scale Base

© SAP AG 2001, Title of Presentation, Speaker Name 17

Number 5: Pricing Procedure Userexits
Formulas

Condition Base Formula
 After the condition record has been read and the scale value retrieved, it is possible to influence the condition basis to which the scale value will be applied.  Standard delivered formula “022” is used with condition type KP00 to compute the discount based on full pallets ordered. If 24.30 pallets are ordered, condition base formula “022” changes XKWERT to 24 which is then multiplied by the scale rate.

Condition Base Formula
© SAP AG 2001, Title of Presentation, Speaker Name 18

Number 5: Pricing Procedure Userexits
Formulas

Condition Value Formula
 After the system has found the correct scale rate from the condition record and the condition basis for the calculation, the condition value is calculated.
 Scale

Rate

Condition Basis
X X 5 CS

Condition Value
= 150- USD 25- USD

5- USD per CS 10- %

1500 USD =

 It is possible to influence the condition value calculated by the system using the condition value formula. It is also possible to use the formula to do comparisons and set flags.

© SAP AG 2001, Title of Presentation, Speaker Name 19

Number 5: Pricing Procedure Userexits
Formulas

Condition Value Formula - Examples
 Under certain circumstances, the condition value should be set to zero.
 IF

XXX = YYY.

XKWERT = 0. ENDIF.
 Standard formulas “8” and “9” are used with customer expected price to compare the expected value / price with the net value of the sales order item. Based on the result, the “pricing ok” flag is used to block the line item.

© SAP AG 2001, Title of Presentation, Speaker Name 20

Number 6: ATP Plant Selection My primary sourcing plant is determined by zip code and shipping conditions. Can I do this in SAP? How can I automate the selection of plants on the “Other Plants” push button screen?

MV45AFZB  Selection of primary sourcing plant
USEREXIT_SOURCE_DETERMINATION

RV03VFZZ  Selection of secondary sourcing plant
USEREXIT_PLANT_SELECTION

© SAP AG 2001, Title of Presentation, Speaker Name 21

Number 6: ATP Plant Selection My primary sourcing plant is determined by zip code and shipping conditions. Can I do this in SAP?

Define new table (ZZSOURCE) in data dictionary:

ZIPCD LPRIO PLNT1 PLNT2

Zip code (full or partial length) Delivery priority Plant 1 Plant 2, 3, 4, etc.

MV45AFZB
FORM USEREXIT_SOURCE_DETERMINATION SELECT SINGLE * FROM ZZSOURCE WHERE ZIPCD EQ KUWEV-PSTLZ AND LPRIO EQ KUWEV-VSBED. VBAP-WERKS = ZZSOURCE-PLNT1.

© SAP AG 2001, Title of Presentation, Speaker Name 22

Number 6: ATP Plant Selection How can I automate the selection of plants on the “Other Plants” push button?

RV03VFZZ
SELECT SINGLE * FROM ZZSOURCE WHERE ZIPCD EQ KUWEV-PSTLZ AND LPRIO EQ KUWEV-VSBED.

FORM USEREXIT_PLANT_SELECTION

(Mark SELKZ field in PLANTS internal table for the plant(s) that should be checked or rearrange plants to show secondary, tertiary, etc. selections).

© SAP AG 2001, Title of Presentation, Speaker Name 23

Number 7: Copying Data to Reference Documents I create credit memo requests with reference to the source billing document, but payment card data doesn’t copy from the billing document. Can I do this in SAP?
TABLES: T180, FPLTC. ‘’Not needed in all routines IF T180-TRTYP CA 'HV'. ‘’Not in display transactions) IF NOT CVBRK-RPLNR IS INITIAL. SELECT SINGLE * FROM FPLTC WHERE FPLNR = CVBRK-RPLNR AND FPLTR = 900001. IF SY-SUBRC = 0. “referenced document contains credit cards CCDATA-CCNUM = FPLTC-CCNUM. "Payment cards: Card number CCDATA-CCINS = FPLTC-CCINS. "Payment cards: Card type CCDATA-DATBI = FPLTC-DATBI. "Payment cards: Exp. date CCDATA-CCNAME = FPLTC-CCNAME. "Payment cards: Cardholder ENDIF. SY-SUBRC = 0. ENDIF. ENDIF.

(See Data Transfer under t-code VOFM)

© SAP AG 2001, Title of Presentation, Speaker Name 24

Number 8: Sales Document “Save” Userexits I have some special checks to perform before a sales order can be saved. Where can I specify them? I have some user tables to update when a sales order is saved. Where can I do that?

MV45AFZZ 8a USEREXIT_SAVE_DOCUMENT_PREPARE (Look at Note 64876 if you want to return the user to the transaction.) MV45AFZZ 8b USEREXIT_SAVE_DOCUMENT

© SAP AG 2001, Title of Presentation, Speaker Name 25

Number 9: Pricing Type with New Pricing When I use “new pricing” in the sales order, I lose all manually entered conditions. Can I do anything about this?

MV61AFZA
 USEREXIT_CHANGE_PRICING_RULE
PRICING_RULE = ‘C’.

Release 4.0C allows the pricing rule to be specified in a pop up window with “New Pricing”. Refer to note 24832 for more examples.

© SAP AG 2001, Title of Presentation, Speaker Name 26

Number 10: Influencing “New Pricing” When I change the value of field XXX, the system does not automatically reprice the document. How can I accomplish this?

MV45AFZB
 USEREXIT_NEW_PRICING_VBAP (document item)

Example: New pricing if the “route” is changed. IF VBAP-ROUTE NE *VBAP-ROUTE.
NEW_PRICING = 'B'.

ENDIF.
 USEREXIT_NEW_PRICING_VBKD (business data)

© SAP AG 2001, Title of Presentation, Speaker Name 27

Last Thoughts

Userexits are to a talented ABAP programmer what a canvas is to a talented artist. Userexits are great solution solvers. When you’ve come up against a gap, look for a userexit as the possible solution. Remember that code in userexits is not supported by SAP, even if Customer Service happens to give you the code. Document the business processes that your userexits support. When you upgrade or interface, that information will be much more valuable to you than the code itself. Try to keep it simple!

© SAP AG 2001, Title of Presentation, Speaker Name 28

Patti Meder Kimler Product Manager Supply Chain Management

SAP America, Inc. 3999 West Chester Pike Newtown Square, PA 19073

Tel: 610-661-8575 Fax: 610-661-8576 Pager: 877-630-9366

Email: patricia.kimler@sap.com

© SAP AG 2001, Title of Presentation, Speaker Name 29