Learn how to use product costing and internal orders to create a system that can meet all the basic requirements for developing a quote request.
Key Concept
The quote request process can start with an external customer request or an internal product simulation exercise. Multiple departments become involved to develop or review this process. As soon as the marketing or research and development (R&D) department starts this quote process, R&D checks if an existing product with slight modifications in the configuration can be used and if this change is feasible. Procurement becomes involved to provide feedback for procured materials (e.g., their pricing). The production operation department may be involved to check the manufacturing process, and finally, finance reviews the costing of this product and completes the simulated gross margin analysis.
Organizations often need a system that can show them the what-if quotes for new or already used products. They also need a system that enables them to create customer quotes using all available master data, such as the material master and bill of materials (BOMs). The preference is usually to use the material master and BOMs for simulations only without actually changing the production-relevant data. Moreover, while simulating these objects, the organizations may need to use several materials that do not even exist in the system. All these exercises require coordination among various departments. Lack of a system or process in a standard system can cause a delay in preparing a quote request. Using the product cost planning module and internal orders, you can create a system that can meet all the basic requirements for developing a quote or to come up with what-if costing. Base planning object material cost estimates and easy cost planning methods are used from the product cost planning area (the CO-PC module). A separate statistical internal order is created, and the easy cost planning method is used for this object using the product cost planning configuration. Each new product quote is a new internal order.
I outline various configuration elements for the easy cost planning process. However, I do not go into detailed configuration for each step as these instructions are readily available on SAP’s help Web site.
You need to create characteristics and a data entry form to create these quotes. Using a template function within easy cost planning, you can simulate a material cost estimate. Various departments can add their information into the data entry form. I also demonstrate a basic standard data entry form to explain the concepts. In the templates, there is a provision to design a much more sophisticated custom screen using HTML coding.
Lastly, I discuss how you can integrate workflow into the internal order-based easy cost planning to facilitate this quote design process. Various elements for the workflow are highlighted for this internal order setup.
The quote request system design is primarily based on the SAP easy cost planning process. To set up this process, you need to create a few configuration and master data elements. The master data setup prerequisites are:
- Base planning objects in the CO-PC module
- Creation of an internal order-based easy cost planning template with various characteristics using the standard CO module. Other existing master data such as materials with full-blown cost estimates using other modules such as production planning (PP) or materials management (MM)
The Quote Request Process
There are two main components for this quote request process: the easy cost planning model and an internal order. Apart from these two components a simple workflow is handy for leveraging the full potential of this quote request process. The following configuration elements are necessary for this quote system:
- Configure the internal order type and user status profile
- Configure the costing variant for easy cost planning
- Configure the base planning object costing variant
- Set up workflow
Configure the Internal Order Type and User Status Profile
Configure a separate internal order type to manage the quotes. Also, tracking the various department activities or inputs is done by using various statuses available in a status profile.
First, create the user status profile for the internal orders. To configure the user status profile under customizing, follow menu path Controlling > Internal Orders > Order Master Data > Status Management > Define Status Profile. In the Change Status Profile screen enter a status profile name (e.g., ZQRS) and a short text to describe the department’s function (Figure 1).

Figure 1
Define user status profile details
In Figure 1 you define five custom user statuses to represent the various departments. If you have more or fewer departments involved in this process, you can create the statuses accordingly. The idea is that whenever one department has completed the activity, the representative from this department updates the radio button (the first one being defaulted automatically as R&D in this example). I demonstrate a typical business scenario prevailing in many organizations with five departments.
You can use statuses based on your departmental structure so that one or more departments at the same time can work on them. You can even define a status that combines departments or that is based on phases. The lowest and highest status numbers are applied to all statuses (as shown all rows have 1 through 5 in Figure 1). These statuses can be interchanged meaning these departments can start their work and use their status without following the sequence shown in Figure 1 The initial one is R&D in my example, so the initial check box (Init. st…) is checked.
Next, you configure a new internal order type to be used in the quote development process, which is not shown in this article. This separate internal order type helps to give flexibility in building the quote request-specific configuration. Also, having a separate internal order type helps in designing the authorization for SAP user IDs.
To configure the internal order type, under customizing, follow menu path Controlling > Internal Orders > Order Master Data > Define Order Types. Click the New Entries button. In the screen that appears the order type Q100 is configured for the quote request process (Figure 2). Figure 2 shows that the status profile ZQRS is used in this order type.

Figure 2
Define an internal order type
You can configure the number range for this internal order to become an external number. This configuration enables you to use the internal order number field as an alphanumeric quote number that all departments can track. You can also configure the screen layout that suits your screen layout requirement for this type of internal order (an example can be that you want to make profit center mandatory as part of your overall setup).
Configure the Costing Variant for Easy Cost Planning
The costing variant is the key that helps create the cost estimate in the easy cost planning form. The price for the materials is not going to be entered. This costing variant and the valuation variant attached to the costing variant help you to look up the cost for this kind of scenario. The costing type in case of the easy cost planning costing variant is not used as this cost estimate is for planning purposes only.
Under customizing, follow menu path Controlling > Internal Orders > Planning > Easy Cost Planning and Execution Services. Figure 3 shows the costing variant PC02 that is used in the costing process for the easy cost planning process. I use this standard system-delivered costing variant for my quote request system demonstration.

Figure 3
Define the costing variant for easy cost planning
Configure a Costing Variant for Base Object Planning
To configure a costing variant, under customizing, follow menu path Controlling > Product Cost Controlling > Product Cost Planning > Reference and Simulation Costing > Costing Variants and Their Components > Define Costing Variants to call up the costing variant PG (not shown in this screen, but this costing variant is the standard system-delivered variant I am using here). Double-click the Valuation Variant button for this costing variant to call up the next screen (Figure 4).

Figure 4
Define the valuation variant for the base planning object
This screen shows the valuation variant 012 that is used in the costing process for the base planning object. This is the standard system-delivered valuation variant. You can make changes to this if the delivered strategies do not meet your costing scenario. Most of the business cases can be satisfied with this as-is valuation variant.
These strategies are going to be used for the base planning objects cost determination. However, for my business case demonstration in the base planning objects, I do not maintain any prices so that users can manually enter the price into each individual quote request. As a result, this base planning object functions as materials without any predefined fixed standard prices or cost. I explain this process further under the “Master Data” section.
The configuration details for the workflow setup are available in the SAP Help Portal.
Master Data
As seen from the configuration list, there is minimal effort required to set up the standard settings before starting to use the process. The easy cost planning is mostly master data and template driven.
The final outcome of the easy cost planning is a model. The model needs several characteristics and a template in which all these characteristics can be used with the help of available functions. An entry screen is usually proposed by the system with built-in HTML coding. You can use this standard data entry screen or use custom HTML tags to enhance this screen. The custom HTML tags are not covered here.
The Base Planning Object
The next step is to check the functionality of the base planning objects. As the name signifies these objects are used in the planning process to substitute for material masters. These objects can be similar to materials without any further complexity in setup and are solely used for the purpose of planning. These objects can be reused in any number of quotes if you keep them generic by giving them generic names such as REF_RAW, as shown in the next section.
My previous example shows how to create a quote for a new material that uses a semi-finished material that is not an existing material for the organization. This semi-finished material (a subassembly that consists of other components) base planning object is made up of one raw material and another packaging material base planning object. To keep the scenario simple, the routing or recipe part of the subassembly or semi-finished material is not shown here.
Use transaction code KKE1 and enter a base planning object name. Press the Enter key. In the screen you create the base planning object for a raw material. You need to enter a cost element, base unit of measure, plant, company code, profit center, and some text. Click the save icon to create this base planning object (Figure 5).

Figure 5
Create a base planning object for a raw material
Click the change cost estimate icon that is available along with two other icons in the top or press F8 to access the detail screen (Figure 6) where you can do a detailed cost estimate for this base planning object.

Figure 6
Create cost estimate details for the raw base planning object
In Figure 6 you can enter the category as V for the variable item to keep this raw base planning object as reference object (i.e., generic) for quotes to be developed later. The quantity is entered as 1, and the price is left blank so that based on the use of the base planning object, the user can use any price for this. Click the save icon to save this object.
Use transaction code KKE1, enter a name, and press the Enter key to call up the screen to create a base planning object for a semi-finished material (Figure 7). This time you create a subassembly or semi-finished material that has two other base planning objects. Enter the cost element, base unit of measure, company code, name, description, and plant. Click the create cost estimate icon
that is available at the top along with two other icons or press F7 to get to the Create Cost Estimate pop-up box. The costing lot size is left as 1 so that it is generic. You can use a different unit per your requirement.

Figure 7
Create base planning for a semi-finished material
Click the enter icon in the Create Cost Estimate pop-up box to call up the screen shown in Figure 8. In Figure 8 I enter two base planning objects as the component for this semi-finished material. Imagine this as a BOM in which the components are entered. I choose B as the category (the C column) for base planning objects. A category M would have let you enter any existing material and in fact you could have used menu path Functions > Explode material cost estimate to explode this material’s BOM. Any changes to the BOM do not affect the standard system. This way, base planning objects can help in simulation. However, for the purposes of my demonstration, I create these objects as reference objects. That means any quote can use them. You can fill in the new or proposed material and generate a quote. Click the save icon to save all changes.

Figure 8
Create cost estimate details for the semi-finished material
The Easy Cost Planning Model
The easy cost planning tool that you use to simulate product cost. The easy cost planning transaction is available in the standard CO module under product cost planning menu. This is mostly master data driven as I demonstrate in this section. This helps to create data entry screen fields that you can tie together through a template to create a product cost estimation or a quote. If you think of a BOM or routing, then each of characteristics can be a material component or activities component such as labor hours, which are variable. Making this a characteristic keeps the model flexible. Therefore, you can use it for any type of quote.
This model has a template to develop all the logic needed to create a cost estimate. Use transaction code CKCM to call up the screen shown in Figure 9. In my example, I create model ZQRS01. Now follow three steps as shown in the upper right side panel. The first step is to assign all the characteristics that this model uses. There are two ways to create these. You can click the create icon that is shown in the lower right panel (the icon with a plus sign) and then enter a new characteristic name. Double-click this characteristic to enter further detail. Another method you can use is to create the characteristics outside this model using transaction code CT05, but just attach these characteristics by entering the name once the create icon is clicked.

Figure 9
Create an easy cost planning model
If this characteristic is an existing one, the system retrieves all the attributes for it. The benefit of using transaction code CT05 is that an additional tab (Addnl data) is available in CT05 to make the characteristics link to an existing SAP data field and to be able to have a drop-down list. In my case I use CT05 to make the characteristics link to either the material master or base object planning fields.
Use transaction code CT05 to call up the screen shown in Figure 10. Enter the characteristics name, validity date, description, Chars Group (selected as Local characteristics in my example, but this can be your own defined group), data type, and number of characters. Make the status released so that this characteristic can be used immediately. Note that I choose the value assignment (the Basic data tab) as a single value so that you can choose one data value at a time (see the screen shown in Figure 22 in which I show that only one material number can be entered for the material field). The characteristic being created is similar to a material number, so I just want the user to choose one value.

Figure 10
Create characteristics for easy cost planning
Click the Addnl data tab. In this tab you can enter the table name and field name so that the standard SAP pull-down menu for a field can be attached to this characteristic. For my demonstration I want to look up existing materials. I use structure CKF_RES_TPL and refer to the field as MATNR (Figure 11).

Figure 11
Create a drop-down menu for the chracteristic
Click Structure the model entry screen in Figure 9 to call up the screen shown in Figure 12.

Figure 12
Create the entry screen for the easy cost planning model
All the characteristics are listed. On the right side you can see the system-generated HTML tags. The screen that has been designed by the system is shown on the left. Make sure that you are in the change mode. You can click the change HTML template icon (the pencil) if it’s in display mode. Also the field with the F4 button next to it has the drop-down menu attached. If this button does not show up even after you have designed the characteristics as shown in Figures 10 and 11, click the WITH F4 button. In Figure 12, this button shows up as WITHOUT F4 as I clicked the WITH F4 button.
Click the Define the derivation rules (template) text in Figure 12 (list of three options in the upper right side) to call up the screen shown in Figure 13.

Figure 13
Create the template for the easy cost planning model
As shown in Figure 9, the template name is the same as the model name ZQRS01. Each template is attached to an environment in which the standard system has delivered numerous functions for dynamic calculation. The standard system has environment 207 dedicated for easy cost planning. The template starts with entering a type for the template row from the drop-down menu of the first row (as shown I have chosen Material type for the first row) (and subsequent rows) in Figure 9. There are four major components of a template type that need to be configured after choosing the type:
- Object
- Quantity
- Activation
- Price
The first row has the type as material as I want to use the first material component that the user enters. Check this object (material entered by the user), calculate its quantity and price, and then calculate the total cost for the final quoted material cost.
Next you calculate the quantity for this first material. As you saw in Figure 10, I made this material to be an existing material from the system. Later on when I design the screen, I will activate the drop-down menu for this field. Click the Object column in Figure 13 to call up the screen shown in Figure 14.

Figure 14
Define object validation for the template row
In the left lower section of Figure 14, you can validate this field by clicking the check formula in editor icon (the second icon from the left). The Object column is mostly used for this validation. In my case I show you that I am checking that the material entered by the user in the easy cost planning screen is available in plant 3000 only. This is a simple case. I have written this formula by dragging and dropping the functions available (in my case the functions used are Plant and Material_Number) in the lower right section in Figure 14. Once the logic is built in this field, click the check syntax button
. If everything looks good, you can click the Object button to adopt this formula for the object field for this row.
Now click the Quantity field for the first row to call up the screen shown in Figure 15.

Figure 15
Define quantity logic for the template row
In Figure 15, I calculate the quantity for the first material entered by the user. The logic is to pick up the quantity and scrap from the user entry screen and calculate the quantity by using mathematical functions. If the user enters the quantity as 100 and the scrap factor as 10%, the quantity will be 100 * (1+10/100) = 110. As you can see the right side offers many functions that you can use to make this determination more variable and complex.
Click the Activation field (the field with the label Activation) for the first row from the screen shown in Figure 15 to call up the screen shown in Figure 16.

Figure 16
Define activation logic for the template row
As shown in the Figure 16, I need to define under which condition this row is activated and the cost calculation is carried out by the system. So I define that whenever the user enters any valid value in the first material field, this calculation becomes active.
The transport of templates can be a complex task based on the setup and complexity of the templates. Therefore, there is an export/import functionality available in the standard system. There are two standard programs (CKECP_Export_model and CKECP_Import_model). You can use the export program in transaction code SA38 to execute and download the template as a XML file. Later on in the destination client you can import this same XML file using the import program.
Demonstration of a Quote Create Process
Now I demonstrate the steps to follow to complete a quote. The process usually starts with the sales or marketing department receiving a quote request from a customer. In the following example I show you that R&D has received the request to create a quote, which is usually the second step. This R&D step initiates the quote in the SAP system. However, depending on your business scenario and organizational structure, you can rearrange the user status profile described in Figure 1 to let a different department initiate the quote. Each organization has its unique approach to complete a quote. This needs to be mapped into the user status profile. Thereafter, one or more departments can work on the quote. I demonstrate a business case in which just one department follows the other. To avoid repetitive work, I show two departments’ activities.
Create an Internal Order for the Quote
Use transaction code KO01 and enter the order type as Q100, which I have configured for this kind of internal order. Press the Enter key to call up the screen shown in Figure 17. Enter the field values as shown in the screen. The number of fields that the user needs to enter here is based on the configuration for the screen layout or on the model order as described earlier. This description is entered as Quote for the New Material T1 to represent the quote for the requested material.

Figure 17
Create an internal order for a quote request
Click the Control data tab in Figure 17 to call up the screen shown in Figure 18.

Figure 18
Create the quote request order (statuses shown)
Figure 18 shows that based on my configuration, the R&D status is active initially. Therefore, in this case, this step belongs to the R&D department. Click the cost estimate icon as shown in Figure 18 to call up the screen shown in Figure 19.

Figure 19
Select the easy cost planning model
In Figure 19 select the subject area as all planning forms to access the easy cost planning model Quote Request System that I designed earlier. Click this form to use it for this internal order. The screen shown in Figure 20 appears.

Figure 20
Select the easy cost planning model
Figure 20 shows the data entry form that I designed in Figure 12. The details for the new product for which the quote is being developed are created by entering data into this data entry form (Figure 20). Imagine this data to be similar to a BOM. Click the F4 button next to the first material field to call up the screen shown Figure 21 to look at an existing material number.

Figure 21
Select a material from the drop-down menu
Look up the material and double-click the material number to call up the screen shown in Figure 22. Enter the quantity and scrap factor. Click the Confirm button to check if this entry is valid. If there is no error, click the back button to go back to the initial internal order screen and click the save icon.

Figure 22
Enter quantity and scrap factor
After you click the Confirm button, a message is displayed (Figure 23) if there is any error. To demonstrate I entered an alphanumeric value into the quantity field. Click the Back button in Figure 23 to go back to data entry screen and resolve the error. Then click the Confirm button again. If there is no error, click the Back button to return to the main screen. If you click the Control data tab, you see that the default status R&D has been chosen. This is as per my designed status sequence.

Figure 23
Error display from confirmation
Update the Quote
As soon as one department finishes its input, another department usually is involved to fill in the relevant data. This is how the user status has been configured. The business users can update the relevant information using the internal order change process. In some organizations, various departments need to work at the same time on the quote. If your requirement is similar, then you need to create the status that calls out all the departments involved in the relevant steps. I do not show that in this article. However, the configuration and process remain the same in this later case also.
Use transaction code KO02 to call up the screen for internal order change and enter the internal order/quote request number. Press the Enter key. Click the Costing button
to call up the screen shown in Figure 24. This step can also be called upon through a workflow task.

Figure 24
Update the quote with further details
As Figure 24 shows, I selected a base planning object REF_SEMIFIN from the drop-down menu. I also entered data in the fields for quantity and scrap factor. If this completes the activity of the department, then it can confirm the cost by clicking the Confirm button and then clicking the Show/Hide Item View button on the left side panel to call up the itemization list shown in Figure 25.

Figure 25
Display the itemization for the quote request
As Figure 25 shows the system automatically picks up the cost for the material number TEST1 and calculates the quantity using the quantity from this screen and the scrap factor. For the base planning object the system calculates the quantity from the data entered in Figure 24. The price for the base planning object is 0.00. This is in accordance with my setup as the base planning object represents a subassembly with its own BOM. Now select the row for this base planning object and click the explode base planning object icon (the seventh icon from the left) that is available in the lower panel for the itemization display to call up the screen shown in Figure 26.

Figure 26
Explosion of a base planning object into its components
Figure 26 shows that the components have received the quantities, but the prices are 0.00. The quantities have been updated also based on the setup in Figure 15 taking into account the quantity and scrap factor. To update the prices, you manually overwrite the blank value with planning prices as shown in Figure 27. In my case the REF_RAW price has been planned as $10.00 and REF_PAK price has been set at $12.00.

Figure 27
Manual update of unit prices for base planning object
Click the Confirm button in Figure 27 to recalculate the total cost ($122.02). After review of the cost of the quote, click the Back button and click the Control data tab. In the screen that appears click the Set/reset… button to choose the appropriate user status (Figure 28). As shown in Figure 28, the user is choosing the PUR status specifying that the purchasing data input is complete now. This process can be repeated as many times as needed based on the various departments’ data input. For the current scope the quote request concludes here and as soon as the user clicks the save icon, the system triggers a workflow if it is configured. In the next section I go over a simple workflow demonstration.

Figure 28
Change the user status for the quote
Use transaction code SBWP or inbox display to call up the screen shown in Figure 29. In my example as soon as the quote achieves the status of PUR, or purchasing complete, an action item appears in the inbox of the next person responsible.

Figure 29
Workflow trigger based on the user status change
As I have already discussed, designing a workflow for the internal order is standard. With the standard settings you can activate a workflow. However, you definitely need some help on the ABAP side for the workflow configuration. By clicking the workflow item in the inbox, the user calls up the quote request change screen or transaction code KO02 (internal order change) next.
Clicking the workflow item calls up the screen shown in Figure 30.

Figure 30
Quote change screen access from the workflow
After the activity in internal order change is complete, as soon as you click the save icon the screen in Figure 31 appears.

Figure 31
Workflow confirmation expectation screen
As shown in the Figure 31 (which is based on my workflow design), the system requests a confirmation to record the completion of the activity. As the demonstration shows, you can design a flexible quote request process using the easy cost planning functions. This setup also does not interfere with any other modules. Therefore, this quote request process can be configured and implemented any time the business requirement arises in an organization. The cost to implement this process also does not amount to much if the process is designed on the basis of standard SAP processes.
Surajit Mohanty
Surajit Mohanty is an independent consultant with more than 14 years of SAP Financials consulting experience. In the past he has worked with various consulting firms such as IBM, Deloitte, and BearingPoint. He has vast experience in SAP CO (Controlling/Management Accounting) and FI areas spanning across nine end-to-end implementations. He has delivered solutions to a broad range of clients with various roles in the areas of product costing, material ledger average costing, transfer pricing, profitability analysis, revenue recognition, accounts receivable and payable, sales and use taxation, SAP General Ledger, and integration of the SAP General Ledger with materials management, production execution, and sales and distribution areas. He lives in Schaumburg, IL, with his wife and son.
You may contact the author at surajit.mohanty@hotmail.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.