Sie sind auf Seite 1von 10

Pricing In SAP SD - Create New Condition Types and Procedure

This configuration is done when user request for new pricing condition type other than the standard ones provided by the system. Screen to tcode VA01 - Create New Sales Order for customers - Double Click the Item - Then Click the Conditions Tabstrips

Define Condition types V/05 - Condition Table for V/07 e.g. a business may no longer wants to have a sales discount based on the sales organization, customer group, and material, but decided that the discount should be based on the sales organization, customer group and material group. V/06 - Create new condition types by copying a similar conditions type and changing it according to your needs.
y

Double click on the condition type to change the control options

V/07 - Access Sequences for condition type V/08 - Pricing Procedures for condition types. The pricing procedure is also used in the account determination. This determines the general ledger accounts to which prices, discounts and taxes must be posted.
y y

Click on the Pricing Procedures e.g. PR0000 - Condition Supplements for PR00 Click Control - e.g. Tick Mdt if you want the condition type to be mandatory o OV34 - Define account key

OV35 - Assign account key  Actky - Revenue account  Accrls - Accruals account

OVKK - Determine which Pricing Procedures to use for which Condition Type. Price with additional decimals You can add additional decimals for a currency through a work around method. Set up a currency let's say instead of USD call it US$ ( OY03 ) and define the number of decimal places ( OY04 ) to be 3 or more depending on your requirement. Maintain the exchange rate for between US$ and USD to be 1 to 1 ( OBBS and OB08 ). Create pricing condition records for those customers requiring 3 decimal places using Current US$ instead of USD. That will give you 3 decimal places for your prices. However, one thing you will have to watch out for is rounding. You can try transaction OB90, define rounding rule for currency. Here you define the rounding rule for your customer's currency Control Pricing Conditions based on Order Type 4.6x e.g. You create an order type ZP00 for QT - Quotation and does not wish it to be used in OR Standard Order. Follows this steps :IMG - Sales and Distribution -> Basic Functions -> Pricing Control -> Define and Assign Pricing Procedures Define document pricing procedure e.g. Q - Quotation Assign document pricing procedures to order types e.g. Assign Q to Order Type QT - Quotation Maintain pricing procedures e.g. Copy Standard Pricing Procedure to e.g. ZQT (all the pricing conditions list will only be allowed in order type QT - Quotation

Define Pricing Procedure Determination e.g. Copy and assign Document Pricing Q and Pricing Procedure ZQT accordingly Users will receive Message no. V1 206 "Condition ZP00 is missing in pricing procedure A V ZQT". Create a New Pricing Conditions Key Combination 4.6x In VK12, click the Key Combination button. You can see a list of available key combination for your price master. Now, let create a new key combination e.g. Customer + Sales Document + Material IMG - Sales and Distribution -> Basic Functions -> Pricing Control -> Define Condition Tables -> Create condition tables e.g. 900 Selected fields Sales organization Distribution channel Customer Sales document Material Click Generate to activate it IMG - Sales and Distribution -> Basic Functions -> Pricing Control -> Define Condition Tables -> Defince Access Sequences -> Maintain Access Sequences Select PR00 - Price Click Accesses Click New entries AcNo Tab Exclusive 50 90 X - Tick Save your entries IMG - Sales and Distribution -> Basic Functions -> Pricing Control -> Define Condition Tables -> Defince Access Sequences -> Optimize accesses Copy an existing PR00 and substitute the AcNo with 50 Finally, goto VK12 and key in the new price master for PR00.

Next, goto VA02 and test out the material. If it didn't work check the pricing date in the header details. Is the pricing date within the validity period?

Change a Particular Pricing Procedure


Suppose the client requests to change a particular pricing procedure with respect to a particular customer so what are the steps to go about solving it. What is the standard method?

=== For a particular customer if you need a unique price, then create a condition table with field customer. Put this condition table in the pricing sequence. Since this sequence is assigned to the pricing condition, Create record for this codition table (Price) This will ask customer number and price for that customer.

=== I hope you might have done pricing in SAP SD before this if not, pl follow the steps which I am giving next: 1. create a condition table in necessery by using v/05 or IMG->S&D->BASIC FUNCTIONS >PRICING ->PRICING PROCEDURE -> CREATE TABLE (first serch is ther any table which is having customer number , name , org, order no and all the requeried fields) 2. copy a condition type which is sutible for your requerment . by using v/06 or IMG PATH WHICH I HAVE GIVEN IN STEP ONE 3. copy a accecss sequence which u want v/07 4. assign access sequence to conditiona type and condition tabel to access access sequence . 5. finale create your only pricing procedure by using condition type like price , discount, tax etc see the standard condition pricing procedure rvv001 . attech this procedur to pricing determination with your sales area. Now go to VK11 and create pricing condition record by using customer / material. and also discount and tax recards and save them After creating your pricing procedure and records you creat a sales order wiht the same sales area and order type which you atteched to pricing determination and give a material code and quentity and press enter You will get pricing of that.

Pricing report
Is there a standard SAP report that shows all the sales price for a material/ customer / qty???

=== Take a look at transaction V/LD or something similar. In the menu path where you maintain the conditions there is also a folder for output and there is this transaction "Pricing report" or something similar. If you have the transaction and it doesn't "work" you might have to execute report RV14ALLE to get the transaction to work. If the above transaction doesn't satisfy your needs, you can always configure a pricing report through configuration. Pricing Release Procedures 4.6x Define Processing Status - SM30 -> V_T686E You are free to design your own processing status flow. e.g. from 01 -> 02 or from 01 -> 02 -> 03 To convert the old Pricing Condition with the release status use program SD_MOVE_A004_TO_A304. For the standard tables, the following pairs of condition tables are intended to be used: 'old' <--> 'new' VAKEY fields A004 <--> A304 VKORG + VTWEG + MATNR A005 <--> A305 VKORG + VTWEG + KUNNR + MATNR A006 <--> A306 VKORG + VTWEG + PLTYP + WAERK + MATNR A007 <--> A307 VKORG + VTWEG + (SPART) + KUNNR For example, if you are using A005 --> A305, you have to copy the program to ZSD_MOVE_A005_TO_A305 and amend the program Source and Target table. First test run by ticking both option. If you confirm that there are no errors, then run by unticking both options. Be careful while executing the conversion program as it can erase all your existing pricing condition data.

Once the conversion is completed, you can activate the Customer/Material with release status :IMG -> Sales and Distribution -> Basic Functions -> Pricing -> Pricing Control -> Define Access Sequences -> Maintain Access Sequences In VK12, you will be able to choose the new Customer/Material with the release status column per material. Delivery Pricing Conditions 4.6x Configure the pricing procedure at delivery with the required condition type to determine freight. Also have the copying control from delivery to billing at item level with Price source as D for Delivery. While you execute billing you would get the prices from the sales order as well as from deliveries. If you were to look at the pricing procedure RVAA01 you will see there was a section dedicated to the various freight charges. Normally, I would use one of the available condition types and create a condition master based on the Incoterms. Configuration path :IMG -> Logistics Execution -> Shipping -> Basic Shipping Functions -> Pricing

Hiding condition type VPRS - OSS note 105621


We are wanting to implement an OSS note 105621 that will check authorizations and keep condition type VPRS from being displayed. I have done most of the note, but am a bit confused by part of it. It tells you to modify userexits: USEREXIT_FIELD_MODIFICATION, USEREXIT_FIELD_MODIFIC_LEER, USEREXIT_FIELD_MODIFIC_KZWI, USEREXIT_FIELD_MODIFIC_KOPF and USEREXIT_PRICING_CHECK. It also tells you to create two new includes: ZZAUTH01 and ZZAUTH02, but it doesn't tell you what changes to actually make in any of these. I am assuming that the authority checks have to be added somewhere, but what goes where?

The coding for includes ZZAUTH* are (create them in SE38 like INCLUDE, and althought note say that dev.class must be VF, I have them with own dev.class ie: Z**, and it works) include ZZAUTH01 *&---------------------------------------------------------------------*

*&---------------------------------------------------------------------* *& Object REPS ZZAUTH01 *& Object header PROG ZZAUTH01 *&---------------------------------------------------------------------* *& This object has been generated from an advance correction * *& attached to a R/3 note. * *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Title: Authority check for displaying fields * *&---------------------------------------------------------------------* ***INCLUDE ZZAUTH01. * Beim ersten Aufruf ist KOMV initial; OLD_KOMK lschen, * damit auf jeden Fall Berechtigungsprfung durchgefhrt wird. * Sicherheitshalber zunchst Berechtigung verweigern. * if komv is initial. IF SCREEN-NAME = 'FCODE'. CLEAR OLD_KOMK. AUTH_SUBRC = 4. ENDIF. * Berechtigungsprfung auf Kalkulationsschema und Stufen-Nr. * Beim Wechsel der KOMV-Zeile einmalig eine Berechtigungsprfung * durchfhren IF KOMK-KALSM NE OLD_KOMK-KALSM OR KOMV-STUNR NE OLD_KOMVSTUNR. AUTHORITY-CHECK OBJECT 'Z_KONH_KLS' ID 'ZKALSM' FIELD KOMK-KALSM ID 'ZSTUNR' FIELD KOMV-STUNR ID 'ACTVT' DUMMY. AUTH_SUBRC = SY-SUBRC. OLD_KOMK = KOMK. OLD_KOMV = KOMV. ENDIF. IF AUTH_SUBRC NE 0 AND ( SCREEN-NAME = 'RV61A-SELKZ' OR SCREEN-NAME = 'KOMV-KAWRT' OR SCREEN-NAME = 'RV61A-AWEIN' OR SCREEN-NAME = 'KOMV-KBETR' OR SCREEN-NAME = 'RV61A-KOEIN' OR SCREEN-NAME = 'KOMV-KPEIN' OR SCREEN-NAME = 'KOMV-KMEIN' OR SCREEN-NAME = 'KOMV-KWERT' ). SCREEN-ACTIVE = 0. ENDIF. MODIFY SCREEN. * Ende Berechtigungsprfung

for include ZZAUTH02 ***INCLUDE ZZAUTH02 . *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Object REPS ZZAUTH02 *& Object header PROG ZZAUTH02 *&---------------------------------------------------------------------* *& This object has been generated from an advance correction * *& attached to a R/3 note. * *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Title: Authority check for creating new conditions * *&---------------------------------------------------------------------* ***INCLUDE ZZAUTH02. AUTHORITY-CHECK OBJECT 'Z_KONH_KLS' ID 'ZKALSM' FIELD KOMK-KALSM ID 'ZSTUNR' FIELD KOMV-STUNR ID 'ACTVT' DUMMY. IF SY-SUBRC NE 0. MESSAGE E609(VH). ENDIF. * Ende Berechtigungsprfung ... *&---------------------------------------------------------------------* In my system (46B) I remember that the subroutines USEREXIT is not changed for this purpose. With SU21 (z_konh_kls I think that you don't have problems), like with SU02. In su02, remember that in XU180-PROFILE of first dynpro, you must populate with value 'ZCOND_STD' and click on create work area for profiles. Double click on zcond_std. In object populate with 'Z_KONH_KLS', double click and you see the parameters like in tcode PFCG (profiles and auth.) For action you can populate '*' For procedure you can populate with the procedure (see tcode V/08 ) that you use in your SD documents, or the procedure/s in where you want that the restriction will work, if you have many procedures. For level, you must write the ranges of levels in this procedures (into V/08 ) that you want that the user can see (remember that alpha routine conversion dont works, ie: for level ' 1' [in dynpro] you must write '001', if not, you will have problems). The levels out of this ranges, the user with this profile when go to conditions in SD document will not see the value of these items. Finally, in SU01, add this profile to profiles created with PFCG in 'profiles'.

After check if it works.

Pricing Procedure in Product Hierarchy


Can someone help me with an example of Pricing in Product Hierarchy. If you are an SD consultant (you are one, yes?), you should know your tables and fields. Because you can't do a lot of customizing without that. But if you want an example here goes. Say, you want to base your pricing procedure on first three digits of product hierarchy, defined in the material master, via condition technique. Pricing structure for line item is KOMP. A quick look thru KOMP structure (tx SE11) shows that you have only PRODH field for all 18 digits of product hierarchy, whereas you need only the first three. So you do the following: 1. Create the new data element ZZPRODH1. Also create a domain with the length "3" and the data type "CHAR" for the new data element. Remember that new data fields must start with the letters "ZZ" or "YY", since SAP reserved these letters to protect them from being overwritten during a release upgrade. 2. Check whether the product hierarchy (PRODH) is found at header or at item level. In table VBAP, document field PRODH is defined as an item field. 3. Integrate the field name ZZPRODH in the communication structure KOMP using the INCLUDE KOMPAZ and allocate the data element PRODH to it. 4. Activate the structure. 5. Check in which table the field PRODH exists. The field is in table VBAP (sales document: item data). 6. Assign a value to the new field in the FORM routines for sales order processing and billing using the appropriate user exits: In sales order processing the user exit is found in member MV45AFZZ. The complete statement is: FORM USEREXIT_PRICING_PREPARE_TKOMP. MOVE VBAP-PRODH(3) TO TKOMP-ZZPRODH. ENDFORM. The routines for assigning a value to the new fields in billing are found in member RV60AFZZ. The statement is as follows: FORM USEREXIT_PRICING_PREPARE_TKOMK MOVE XVBRP-PRODH(3) TO TKOMP-ZZPRODH. ENDFORM. 7. Allocate the specifications A, V and 001 to the field ZZPRODH in table T681F. Use "E" has been added for fields in rebate processing.

This is a standard example from SAP Library. In this case you must tell the ABAP three things: - that your source field is VBAP-PRODH, - that you need to get the first three digits from that field into your pricing structure KOMP - and that you need to specify the transfer by user exit thru MV45AFZZ Please note that this is a very simple example. Quite often you have to dig a lot deeper. Modifications of Copy Control routines, making output forms (thru SapScript) and such requires you to know all the necessary tables, structures and fileds. The only advice I can give you is to use tx SE11, which will show you the organisation of a table/structure, and can also help you check the contents of a specific table in a specific sales doc.

Das könnte Ihnen auch gefallen