24832 - Pricing rules/TVCPF (定價計算的Pricing type)

JackWu發表於2018-04-27


Symptom

Depending on the situation, the system shouldredetermine conditions or
not. For this, a differentiated control is required, for example:

1. When you create orders or billing documents, the conditions arepartially redetermined although you want to copy the values from the referencedocument.

2. However, in other transactions, you want to redetermine the conditionsinstead of copying them.

3. The "New pricing" function on the item condition screenredetermines all conditions. This means it works with pricing type B.However, you do not always want this.

4. The same applies to the "New pricing" function for the entireorder.


The following text explains some examples for the use of the pricing type(KNPRS) implemented for this purpose:


***********************   Example 1  ********************************
You want to copy the condition type 'VPRS' (cost) from the order into thebilling document. You are using the pricing type G. However, as a consequence,the value of the VPRS condition in the billing document may differ from thevalue of the goods issue posting.


***********************   Example 2   ********************************
You want to copy the condition type 'PI01' ("Price for intercompanybilling") from the order into the billing document. You are using thepricing type G.


***********************   Example3  *********************************
The cost 'VPRS' is to be redetermined when copying a credit memo request from abilling document. This is required if you defined the credit memo item in sucha way that no costs are to be determined. Since the pricing conditions are nolonger checked when copying, you have to proceed as described above toeliminate the VPRS condition.


***********************   Example4  *********************************
The "New pricing" function on the item condition screen is tokeep the manual condition. This means the function should behave like pricingcategory C.


***********************   Example5  *********************************
The "New pricing" function for the entire order is to keep themanual conditions; this means the function should behave like pricing categoryC.


***********************   Example6  *********************************
Billing is to be performed using the pricing type G. However, condition typeswith condition category S and T (standard cost or moving cost) are also to beredetermined in the billing document. In the standard system, this pricing typecopies those condition types from the order.

Other Terms

KNPRS, TVCPF, TVCPA

Reason andPrerequisites

The pricing type controls which conditiontypes are redetermined and which are copied unchanged. (However, the item isalways revaluated). Below, you will find a description of the pricingtype characteristics that are used in the standard system (for the enhancementoptions for customers, see SAP Note 26115). Note that the specified standardpricing types sometimes do not exist in older releases, or that the standardpricing type characteristic may be different in the individual releases.Therefore, the given consulting note should not be considered to be exhaustive.It merely serves to explain the principle of how a pricing type is structuredand how its characteristics can be influenced. The exact characteristic of apricing type in the release being used can be seen directly in the source codeof the form routine KONDITIONSVORSTEP in the main program SAPLV61A.

'A' (Copy price components and redetermine scales):

           Nocondition types are redetermined. Only the scale prices are adapted due to achanged basis.

'B' (Execute new pricing):

           Completelynew pricing (as if you created a new item), manual conditions are lost.

Restriction: Condition types which are not determined via condition technique(for example, condition type 'VPRS' or condition types with KNTYP = 'G' whichare determined using formulas) are NOT redetermined even if you did not changethem manually.

'C' (Copy manual pricing elements and redetermine the others):

           Completelynew pricing, manual ones are copied.
           Caution: Hereyou have to make sure that all condition types that can possibly be changedmanually have T685A-KMANU = 'C' (Manual entry has priority) in Customizing.Otherwise, the conditions may be displayed twice (automatic and manual) andboth may be active.

'D' (Copy pricing elements unchanged):

           Asin pricing type A but the prices are fixed (no scales are read). Conditionbasis and condition basis value are redetermined.

'E' (Adopt price components and fix values):

           Asin pricing type D but neither the condition basis nor the condition basis valueare redetermined.

'F' (Copy pricing elements, turn value and fix):

           Onlyused within the program.

'G' (Copy pricing elements unchanged and redetermine taxes):

           Thefollowing condition types are redetermined:

Condition class KOAID = 'D' (Taxes) Condition class KOAID = 'C' (Rebate) Condition category KNTYP = 'I' (Intercompany billing conditions) Condition category KNTYP = 'R' (Remuneration list conditions) Condition category KNTYP = 'L' (Generally new when copying) Condition category KNTYP = 'G' (Cost) Condition category KNTYP = 'E' (Cash discount conditions)

           Allremaining condition types are dealt with like pricing type D. In particular,with pricing type G, the system does not only redetermine the taxes but alsothe cost conditions and the intercompany billing conditions.

'H' (Redetermine freight conditions):

           Thefollowing condition types are redetermined:

Condition type KNTYP = 'B' (Delivery costs) Condition type KNTYP = 'F' (Freight conditions) Condition category KNTYP = 'L' (Generally new when copying) 'I' (Redetermine rebate conditions):

           Rebateconditions and scales are redetermined.

'J' (Redetermine confirmed purchase net price/value):

           Conditiontypes with condition category KNTYP = 'D' (Confirmed purchase net price/value)are redetermined.

'K' (Adopt price components and costs. Redetermine taxes):

           Thefollowing condition types are redetermined:

Condition class KOAID = 'D' (Taxes) Condition class KOAID = 'C' (Rebate) Condition category KNTYP = 'R' (Remuneration list condition) Condition category KNTYP = 'I' (Price for intercompany billing) Condition category KNTYP = 'E' (Cash discount) 'M' (Copy pricing elements, turn value):

           Noconditions are redetermined; the condition values are
           multiplied by-1 when copied.

'N' (Transfer pricing components unchanged, new cost):

           Conditiontypes with condition category KNTYP = 'G' (Cost) are redetermined.
           Please notethat this pricing type has NO effect on the billing document since here thegoods issue value from the delivery is usually directly transferred to pricing.Redetermination of the costs by subsequently reading the material valuationsegment when executing pricing type "N" would result in the goodsissue value information being irretrievably lost.
           This standardbehavior can be changed by a modification only. If required, please contactyour local consultant or SAP Remote Consulting.

'O' (Redetermine variant conditions):

           Conditiontypes with condition category KNTYP = 'O' (Variants) are redetermined.

'P' (Revaluation only):

           Thesystem does not redetermine any conditions; only the revaluation occurs.

'Q' (Redetermine calculation conditions):

           Conditiontypes with condition category KNTYP = 'Q' (Costing) are redetermined.

'U' (Redetermine precious metal conditions):

           Conditiontypes with condition category KNTYP = 'U' (Discount/surcharge for preciousmetals) are redetermined.

Solution

There are two options to change the standardbehavior:

1. Set up a new pricing type (for example, 'X') and allocate the pricingtype in the document flow (copying control in the IMG, Customizing depending onthe source and target document type via transactions VTAA, VTAF, VTLA, VTLF andVTFF).

2. Change the pricing type used in the standard system.


Procedure

For both purposes, USEREXIT_PRICING_RULE is used in Program RV61AFZA. This iscalled after the setup of internal table STEU which defines the behavior ofpricing types.


***********************   Example 1  ********************************
Pricing type 'X' is to be set in such a way that the condition 'VPRS' (whichhas the condition category 'G') is not redetermined during billing. Otherwise,it behaves as pricing type 'G'.

Up to Release 4.0B, USEREXIT_PRICING_RULE can be implemented as follows:
FORM USEREXIT_PRICING_RULE.
  STEU-KNPRS = 'X'.
  STEU-KNTYP = 'LRIE......'.
  IF KOMK-KNUMA IS INITIAL.
    STEU-KOAID = 'CD........'.
  ELSE.
    STEU-KOAID = 'D.........'.
  ENDIF.
  STEU-MAUEB = ' '.
  APPEND STEU.
ENDFORM.

In order to ensure that pricing type 'X' acts exactly like pricing type 'G',the FORM routine USEREXIT_PRICING_COPY in Program RV61AFZA is to be used inreleases lower than Release 4.0A ( this is called when you create a documentwith reference to another document: copying control; here, the MODE is the pricingtype):
FORM USEREXIT_PRICING_COPY.
   IF MODE CA 'X'.
     IF KONV-KSTEU NA 'CEF'.
        KONV-KSTEU = 'D'.
     ENDIF.
   ENDIF.
ENDFORM.
In this case, you should note that the billing document contains a special ruleconcerning the cost condition 'VPRS'. If the goods issue is posted for thedelivery note to be billed, the value of the goods issue is copied intocondition 'VPRS'. This is hard coded. You can prevent this by setting the fieldTKOMP-WAVWR to zero in the include RV60AFZZ, USEREXIT_PRICING_PREPARE_TKOMP.
In higher releases, pricing type 'K' is also available, which copies the VPRSof the order to the billing document and does not redetermine it unless thereis no goods issue posting
(otherwise, the above-mentioned special rule applies.)


***********************   Example 2  ********************************
Pricing type 'Y' is to be set in a way that this works as pricing type 'G' butwithout redetermining the intercompany billing conditions 'PI01' and 'PI02'.They have condition category 'I'.

Changes in program RV61AFZA:
FORM USEREXIT_PRICING_RULE.
  STEU-KNPRS = 'Y'.
  STEU-KNTYP = 'GLRE.......'.
  IF KOMK-KNUMA IS INITIAL.
    STEU-KOAID = 'CD........'.
  ELSE.
    STEU-KOAID = 'D.........'.
  ENDIF.
  APPEND STEU.
ENDFORM.

In order to ensure that pricing type 'Y' acts exactly like pricing type 'G',the form routine USEREXIT_PRICING_COPY in the program RV61AFZA is to be used:
FORM USEREXIT_PRICING_COPY.
   IF MODE CA 'Y'.
     IF KONV-KSTEU NA 'CEF'.
        KONV-KSTEU = 'D'.
     ENDIF.
     CLEAR: KONV-SAKN1.
   ENDIF.
ENDFORM.


***********************   Example 3  ********************************
Pricing type 'Z' is to be set in the same way as pricing type 'D', but thistime the costs are to be redetermined. Up to Release 4.5B, you can implementUSEREXIT_PRICING_RULE as follows (as of Release 4.6A, pricing type 'N' isavailable for this purpose):
FORM USEREXIT_PRICING_RULE.
  STEU-KNPRS = 'Z'.
  STEU-KNTYP = 'G.........'.
  STEU-KOAID = '..........'.
  STEU-MAUEB = ' '.
  APPEND STEU.
ENDFORM.

In order to ensure that pricing type 'Z' acts exactly like pricing type 'D',the FORM routine USEREXIT_PRICING_COPY in the program RV61AFZA is to be used:
FORM USEREXIT_PRICING_COPY.
   IF MODE CA 'Z'.
     IF KONV-KSTEU NA 'CEF'.
        KONV-KSTEU = 'D'.
     ENDIF.
   ENDIF.
ENDFORM.


Note: To correct the problem, you should define your own pricing types. In somecases, it may be required to change existing pricing types. This is required ifyou want to influence the reaction to certain field changes in the order (seeSAP Note 26115 for this). This also allows you to influence the "Newpricing" function in the order and billing document. This function usesthe pricing type 'B'.


***********************   Example 4  ********************************
The "New pricing" function on the item condition screen should keepthe manual changes. By default, pricing type B is called. As of Release 4.5A,however, you have the option to store another pricing type for this purpose inCustomizing of the pricing procedure (transaction V/08).
                    Inthe USEREXIT_CHANGE_PRICING_RULE of the program MV61AFZA, you can replace thepricing type 'B' with another pricing type, for example 'C', up to Release4.0B.
                    
FORM USEREXIT_CHANGE_PRICING_RULE USING PRICING_RULE.
   IF PRICING_RULE = 'B'.
     PRICING_RULE = 'C'.
   ENDIF. ENDFORM.


***********************   Example 5  ********************************
The "New pricing" function is to be set for the entire order in sucha way that manual changes are kept. By default, pricing type B is called. As ofRelease 4.5A, however, you have the option to store another pricing type forthis purpose in Customizing of the pricing procedure (transaction V/08).

Up to Release 4.0B, a solution is only possible by means of a modification inthe program MV45AF0F:
  FORM FCODE_KONB.
    PERFORM PREISFINDUNG_GESAMT USINGCHARB.      <<<<<<<<<<delete
    PERFORM PREISFINDUNG_GESAMT USINGCHARC.      <<<<<<<<<<insert
  ENDFORM.

FV45PF0P has to be changed in the same way:
FORM PREISFINDUNG_NEU.
* Aufruf neue Preisfindung
  PERFORM PREISFINDUNG USINGCHARB.              <<<<<<<<<< delete
  PERFORM PREISFINDUNG USINGCHARC.              <<<<<<<<<< insert
* geänderte Informationen in Beleg übernehmen
  PERFORM VBAP_BEARBEITEN.
  PERFORM VBAP_BEARBEITEN_ENDE.
ENDFORM.


***********************   Example 6  ********************************
Pricing type 'X' is to be set so that it functions like pricing type 'G', butalso redetermines condition categories 'S' and 'T'.

Changes in program RV61AFZA:

FORM USEREXIT_PRICING_RULE.
  STEU-KNPRS = 'X'.
  STEU-KNTYP = 'GLRIEST...'.
  IF KOMK-KNUMA IS INITIAL.
    STEU-KOAID = 'CD........'.
  ELSE.
    STEU-KOAID = 'D.........'.
  ENDIF.
  STEU-MAUEB = ' '.
  APPEND STEU.
ENDFORM.

To ensure that pricing type 'X' behaves exactly like pricing type 'G', use theform routine USEREXIT_PRICING_COPY in the program RV61AFZA:

FORM USEREXIT_PRICING_COPY.
  IF MODE CA 'X'.
    IF KONV-KSTEU NA 'CEF'.
      KONV-KSTEU = 'D'.
    ENDIF.
  ENDIF.
ENDFORM.


********************   Additional information  ****************************
You can display the standard behavior of the pricing types in the form routineKONDITIONSVORSTEP (up to Release 3.1I in the include LV61AF0K, as of Release4.0A in the include LV61AA12). There, for each pricing type, a line exists ininternal table STEU. The fields have the following meaning:

KNPRS

           Thisis the pricing type used.

KNTYP

           Thisfield contains a positive list of the pricing categories (up to 10
           values can beentered).

KOAID

           Thisfield contains a positive list of the condition classes (up to 10 values can beentered).

MAUEB This XFELD specifies whether manual changes should be copied. STFKZ

           Thisfield contains a positive list of the scale indicators (up to 5 values can beentered).

NOTYP

           Thisfield contains a negative list of the condition categories (up to 5 values canbe entered).

KDUPL

           Thisfield contains a positive list of the structure conditions (up to 3 values canbe entered).

NOKDUPL

           Thisfield contains a negative list of the structure conditions (up to 3 values canbe entered).

KFKIV

           Thisfield specifies whether intercompany billings should be redetermined ('.' or'X' can be entered).

KVARC

           Thisfield specifies whether variant conditions should be redetermined ('.' or 'X'can be entered).

PRSQU

           Thisfield specifies whether the price source should be taken into account ('.' orSPACE can be entered).

Note that most condition attributes (fields of the structure XKOMV) can alsohave the value SPACE. To use the above 'CA' or 'NA' statements in the IFstatements also in these cases as required, you can fill the fields of the lineSTEU with a corresponding number of '.' characters. These values are checked
first of all in the form routine XKOMV_AUFBAUEN_PRUEFEN
(up to 3.1I, in the include LV61AF0X; as of 4.0A, in the include LV61AA65).

 source link: https://launchpad.support.sap.com/#/notes/24832

相關文章