Você está na página 1de 29

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
EntryI just added a field to the sales order header.
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 Sales Order Schedule Line
USEREXIT_MOVE_FIELD_TO_VBAK USEREXIT_MOVE_FIELD_TO_VBEP
 Sales Order Item Sales Order Business Data
USEREXIT_MOVE_FIELD_TO_VBAP 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 Formulas

Pricing
Pricing procedure
procedure
1 5 4
Step
Step Condition
Condition type
type Name
Name Requirement
Requirement Calc.type
Calc.type Base
Base value
value

1 Price 2
10 XXX1 Gross value
15 Sales deal 2 14
16 XXX2 % discount 6 17
17 XXX3 Value discount 8 12
100 XXX4 Net value

Access
Access Access
Access Table
Table Requirement
Requirement
2
Sequence
Sequence
10 Sales Org / Customer / Material 14
20 Sales Org / Material

Condition
Condition XXX4 Scale
3
Type XXX4 Scale Base
Base Formula:
Formula: 15
15
Type
 SAP AG 2001, Title of Presentation, Speaker Name 13
Number 5: Pricing Procedure Userexits
Account Material Listing / Scale Condition Condition
determination determination Exclusion base base base value

Output Structure of
Control group key
Requirements Formulas
Pricing Rounding
rule
Statistics
VOFM

Copying Data transfer


Requirements
Sales Sales
Orders Activities
Billing
Deliveries Texts Documents
 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 and
access sequence level.

The requirement routine defines the circumstances under
which the access should be made.

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 Condition Value
5- USD per CS X 5 CS = 25- USD
10- % X 1500 USD = 150- 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 Zip code (full or partial length)
LPRIO Delivery priority
PLNT1 Plant 1
PLNT2 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
FORM USEREXIT_PLANT_SELECTION
SELECT SINGLE * FROM ZZSOURCE
WHERE ZIPCD EQ KUWEV-PSTLZ
AND LPRIO EQ KUWEV-VSBED.
(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

Você também pode gostar