Condition Technique in SAP

Condition Technique in SAP

Tweet

Related Trainings

SAP Training

SAP SD Training

SAP Access

Condition technique is THE most pervasive and a very flexible methodology used by SAP to aid the consultant in configuring complex business rules. Some modules ( SD, MM ) are more dependent on it than others. We are taking Pricing as an example here, but will not enter into the domain of Pricing (which is pretty large by itself ). This article is also useful for consultants working in other modules like FICO who might require an understanding of Condition Technique before they understand Pricing

What is Condition Technique

Condition Technique is an SAP configuration technique/methodology that is used to configure complex business rules. Consider it as a rules engine. For example, in SD it is used across multiple functionalities – Pricing, Outputs, Texts etc. In MM the same technique is used to configure Schemas ( Same as Pricing ).

Why is Condition Technique Used

Condition technique is used when a complex, ever-changing set of business rules need to be configured as generically as possible in the system. Nothing could capture the essence of this statement more than the complex rules that businesses use to Price their products/services. For example, in pricing, each organization has their own set of business rules including base price, margins, discounts, taxes, surcharges, deals/promotions, price lists etc. For a single system to be generic enough to cater to all of these complex needs is a challenge in itself and that is exactly what condition technique tries to solve.

Condition Technique at a Very High Level

There are 7 key components of Condition Technique. Not all of the components are used all the time. But it is beneficial to learn all of them just in case you want to solve complex problems like pricing. .

Field Catalog
Field Catalog consists of all the possible set of fields that play a role in determining the business rules

Condition Table
Condition table is a database table that is created from a small subset of the field catalog as part of the customization.

Access Sequence
Access sequence comprises of a sequence of condition tables prioritized in a particular order.

Condition type
Each condition type represents a logical component of the condition technique. For example, excise tax could be one of the logical components of pricing and it could be represented using one condition type or a combination of multiple condition types.

Procedure
A procedure is a combination of multiple condition types. For example, in output determination procedure, all the sequence of condition types might exist – Like EDI, Print, Fax etc.

Procedure Determination
Finally the procedure is assigned to the final document type that is effected by the business rule.

It may not make much heads or tails just yet. But continue to read and you will be surprised how simple and powerful this is. Condition technique could be learnt either bottom up or top-down. However, we are trying to explain it here using the bottom-up approach. Also, it is much easier to explain condition technique using a standard SAP functionality as an example. We will take the most complicated example/use ( Pricing ) and that way all of the aspects of the condition technique will be covered. The menu path to be followed is under [ SPRO -> Sales & Distribution -> Basic Functions -> Pricing ].

SAP Pricing Base customization path

Field Catalog

Field catalog consists of all the possible fields that will play a role in affecting the business functionality. Please remember that this transaction is Cross-Client . Click on “Define Field Tables” and double click on “Conditions: Allowed Fields”

Allowed fields in the field catalog

The list of available fields will be shown. These fields are got from the following structures. You can add new fields from any of the standard pricing communication structures

  • KOMP ( Line Item level Pricing Communication Structure )
  • KOMK ( Header Level Pricing Communication Structure )
  • KOMG (Combination of the above structures )

If your business requires that new fields ( not available in the above communication structures ) be available in the field catalog, then they need to be added to the structures in either of the .INCLUDE or .APPEND components.

Without complicating things further, lets move forward to Condition Table.

Condition Table

Condition Table is an actual transparent database table that is created from the list of fields selected from the field catalog. Lets look at an already existing condition table. Click on “Display Condition Tables” and select 005 . This is the condition table for Customer/Material.

Condition Table A005

As you can see, this table contains the fields “Customer” , “Material” ( Forget about Sales organization and distribution channel for now . They are common fields ).

Details of Condition Table A005

Click on the button “Technical Overview” and you will get the detailed table-like view of the condition table.

Technical view of SAP Conditional Table

Creating a table is just as simple. Pick a number ( Above 500 and less than 1000 – because the name of the actual database table will be prefixed with A . So if you create a number say 701, an actual database table will be created with the name A701. You can verify the same using table browser SE16 ). You have a choice of either copying from the existing table and adding more fields or creating a completely new table. Let’s start by creating a new condition table – say 899.

Create new condition table

Start by entering the number 899 and hit enter. You will be shown a empty column to the left and list of available fields from the field catalog on the right. If you want to select one of the fields, just double click it. There is no scroll-bar to move down, so position your cursor on the right column and hit page-down to see more fields. Fields that were already added will be highlighted in blue in the field catalog. For example, in this case, we have chosen country as the field.

Now lets generate the condition table. Hit on the “Generate Table” button in the application tool bar. SAP will show a log of the table generated ( A899 ).

Generate Condition Table

Access Sequence

An Access Sequence is virtually a sequence in which the condition tables are accessed to determine which parameter to consider. For example, in pricing, if you want the discount per material to over-rule the discount per customer , then you would position the discount per material condition table above the discount per customer table.

Access Sequence

Click on “Define Access Sequence” and then choose “Maintain Access Sequence”. Once again please remember that an access sequence is Client Independent as well.

As discussed before, an access sequence consists of

Access Sequence -> Accesses ( Condition Tables ) -> Fields (of the condition table )

Lets explore the Access Sequence A001

A001 Access Sequence

Select A001 and double-click on “Accesses”

Accesses for Access Sequence A001

As you can see, the Access Sequence “A001” consists of condition tables – A005, A007, A006, A004 in that order.

Condition Tables for Access Sequence A001

You can explore the fields in the corresponding condition tables by selecting any of them and double-clicking on fields. There are other fields that effect how the access sequence performs, but that is currently outside of the scope of this primer.

Fields of each of the condition tables

Condition Type

Condition type is a very important component of condition technique. Condition types form the basis for procedures. The logical sequence of arrangement is as follows. While the condition table aggregates fields in the field catalog, an access sequence aggregates condition tables and lays them down in a sequence. A condition type however is just associated to an Access Sequence ( It does not Aggregate ) . The role of an condition type is to determine the type rather than determine something from a sequence of steps.

Condition Type -> Access Sequence -> Condition Tables -> Fields

Lets take the simple example of PR00 ( The basic price condition type ).

Double click on it to know more about its controls.

Condition Type

The first of the control being its attachment to the access sequence ( In this example, the condition type PR00 is attached to Access sequence PR02 ).

Associate condition type with access sequence

The rest of the data is very specific to Pricing and will not be in the scope of this article.

SAP Condition Type controls

Procedure

A procedure is an aggregation of multiple condition types.

Procedure -> Condition Type -> Access Sequence -> Condition Tables -> Fields

SAP Pricing Procedure

For example, click on “Maintain Pricing Procedure” and then search for “RVAA01” which is the standard pricing procedure used.

controls of pricing procedure

Double click on Control Data to know more about the different condition types aggregated under Procedure. This is the most complicated screen of condition technique for pricing, but other areas like output determination, text determination are pretty simple.

Condition types in pricing procedure

Procedure Determination

While the procedure itself determines the sequence of condition types to evaluate the rules, the procedure determination involves determining the right procedure to be used for the specific scenario. For example, this step determines under what circumstances the procedure RVAA01 needs to be used as the pricing procedure to evaluate pricing for that document

As you can see from the picture below, RVA001 will be used as the pricing procedure when the conditions ( The Sales Organization should be “0001”, distribution Channel should be “01” , the division should be “01” and the document pricing procedure should be “A” and the customer pricing procedure should be “1” ) – Which is another way of saying under a particular sales area, for a particular sales order type ( for eg., contracts ) , and a customer type ( say wholesale customer ) , use the logic in procedure “RVAA01”

19 thoughts on “Condition Technique in SAP

  1. Shyam says:

    Why is a condition table number should be above 500? are the first 500 reserved by SAP? Are they the standard tables from which I can copy the fields if they match my requirements??

    Like

    • siva says:

      Shyam
      Yes you are right. The first 500 are reserved for SAP. In fact, starting with ECC 6.0 , numbers until 600 are reserved for SAP. SAP strongly recommends that we start our custom condition tables between 601 and 999. To understand this concept you will have to understand the concepts of namespace, upgrades etc.

      Our forums are only open to the students of Magna Training. Apologize I will not be able to reply going forward.

      Like

  2. Ehsan A Shah says:

    Siva,

    When creating Pricing Procedure Determination for 1000/10/00, DoPr is A and CuPP is 1
    PriP =ZMA01, CTyp = ZMA1, Why I am getting error…” an entry already exist’?

    Like

  3. Isaac says:

    Hi Siva,

    As per our conversation earlier today in our class, please find the following details abt the transaction:

    Order number: 25364
    Document type: z001
    Customer: 1601

    Problem encountered: Pricing error- mandatory condition MWST is missing.

    Thanx

    Isaac

    Like

  4. ravi says:

    SIva,

    I was analyzing the logic behind Cond Tech and following is my perspective –

    It seems interesting to understand this process when you look at it in the reverse direction of the 7 steps. Let me explain –

    We will take the case of pricing being the object being calculated using cond tech.

    End result = Price for a material M and customer C

    In order to get there, we need an equation to calculate pricing. One has to pick from several possible equations defined to calculate price.

    The way to choose one of such equations is done in the ‘Assignement’ step and the
    choice is made by using DPP, CPP and ???. If there are several equations defined in the SAP system to calculate pricing, assignment picks exactly one based on the
    values of the variables resulting from current transaction.

    Now, we are at the point we have an equation to calculate pricing. Lets say this is
    ‘pricing proc’.

    Typically an equation has several terms, in pricing let’s say
    Base price – disc1 – disc2 – promo1 – promo2 + tax1 + tax2 + delivery etc

    Each of these terms is represented by ‘condition type’. So we have a condition
    type for Base price, disc1, disc2, etc. This is why there is a many to one from Cond types to Pric Proc (step4 to step5).

    Lets consider ‘tax1’ term of the equation (condition type)

    There are several possible tables in the system resulting in calculating this term(condition type).

    Which table should be looked at is determined by the Access Sequence.

    Eg. There may be 3 different tax tables based on –

    Region (States like NY, CA, Tx etc)
    Sales Org and Distrib Channel (Retail, Online,Wholesale etc eg, online out of state sales have no sales tax at the moment)
    CAG (some cust account groups may have taxes waived or discounted)

    Each of the above represent a Condition Table.

    Current transaction may result in different tax calculations from each of the
    above scenarios (Condition Tables). However, the access sequence decides on which one of the tables need to be picked.

    Ofcourse, condition tables are defined based on System variables (SOrg, DC, Region, CAG from the above example)

    These system variables come from ‘Field Catalog’.

    If one can imagine how the SW evolved over the years, you can see that some
    of these variables associated with objects have been incorporated as new requirements/situations come along and the SW developers would throw in a
    new variable here and there to solve the problem on hand, resulting in
    significant redundancies inthe system, meaning you can end up with same result
    in multiple ways. Same is true with Cond tech as well.As I think of why CPP and
    DPP etc could not be a part of Field Catalog, above is what I postulate..

    This is my high level understanding of the theory and i am certain to get much more clarity as I do some exercises. Please correct any gross mis-assumptions.

    Regards,
    Ravi

    Like

  5. zaheer says:

    I have created table=911
    Access Sequence = s911 and assigned table 911 to access sequence
    Created Cond type= t911 and assigned it access sequence t911
    Created pricing procedure=za0911

    Created doc pricing procedure=?
    Created Customer pricing procedure = –
    Created doc = z019 and customer customer=29994

    I have completed the step for pricing procedure determination by assigning
    sales area, doc pricing procedure , customer pricing procedure and condition type to the appropriate fields.

    In the end I created condition record to the condition type t911 and created sale order number 13391 to check if condition setting is working properly.

    Pricing has been determined in the order and everything is working fine…

    Like

  6. Anshu says:

    Siva,

    You mentioned in class not to save the Condition table as “Local object” but when I am trying to create table 899 and saving it I get the meassge “Specify the package or flag it as a local object” . I am not sure what to fill in the field “Package”. What does this mean ?

    Can I ingnore this an save it as “Local object” for pratice ?

    Like

  7. Murali says:

    Siva,

    Greetings. As a SD functional consultant do we create procedures. As the procedure is a combination of condition types how we sequence the condition types in a procedure. Is there any business example you have documented to get more understanding. Appreciate your reply.

    Like

    • siva says:

      Murali
      yes – We do create procedures (If you are talking about pricing procedures, account determination procedures, text determination procedures etc). I guess we have discussed about them in detail in the classes.

      Like

  8. pooyou says:

    Your explainations are clear, easy to read and easy to understand.

    Thank you very much, I hope you will write more trainings like that one!

    Like

  9. google says:

    Google Sites is a website builder that is quick and easy to learn. This would also meet thee
    Penguin requirement of diversity in backlink sources.
    What drew me in about this offer was the price – only ten dollars.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s