Photo: Do you want fries with that?

SAP: Exploring Cross-Selling in SD

I make a lot of trips to the home improvement store throughout the year.  Unfortunately, many of my trips are necessary because I neglected to put an important item in my cart on a previous trip.  If only there was a way for the store clerk to prompt to purchase additional items related to those already in my cart.  This could simultaneously increase the store’s sales — reducing the risk I purchase items elsewhere — while saving me extra trips to the store.  Fortunately for companies running SAP, this feature DOES exist and it is called Cross-Selling.  Let’s take a deeper dive.


It’s a bit cliché but, being an American, the best example of cross-selling in our everyday lives comes down to those five little words:  You want fries with that?  [I rarely partake of McDonald’s, but you get the picture.]  Cross-selling is the act of offering a customer the option to purchase an additional item that complements an item already being purchased.  It’s not limited to goods, however.  Another common example is that extended warranty being offered by your local electronics store when purchasing a new TV.

SAP’s version of cross-selling is very similar as you will see below.  But it doesn’t make sense in all situations.  Many of my clients take orders via EDI or some other type of interface from a 3rd party system.  Cross-selling makes the most sense when orders are taken in real-time through telesales or a point-of-sale style customer transaction.  As my opening example illustrated, it can be a win-win for sellers and consumers alike.


By default, Cross-Selling is switched off in new SAP systems.  You can activate the functionality by creating a Cross-Selling profile and assigning it to applicable Sales Areas and Sales Document types.

  1. Navigate to the Cross Selling configuration node in the IMG:  Sales and Distribution –> Basic Functions –> Cross Selling.
  2. Define Determination Procedure
    Define Determination Procedure

    The first node, Define determination procedure for cross selling’, contains the basic settings.  Like Pricing, you define Condition Types, Access Sequences, and the Cross Selling Procedure.  If you’re just starting out with Cross Selling, you should stick to the standard-delivered condition CS01 and Access Sequence C001.  This will give you the basic material-based cross selling functionality.  Don’t be confused by the Valid From and Valid To dates on the Cross Selling Condition Type.  These are not date fields, but rather settings to propose a default valid to and valid from date on your individual cross selling condition records.

  3. Assignment of Document Procedure Codes
    Assignment of Document Procedure Codes

    In the next node, ‘Maintain Customer/Document Procedures For Cross Selling’, you can define document and customer procedure codes to be assigned to your Sales Document types and Customer Masters respectively.  This allows you the flexibility to assign different Cross Selling procedures for different business scenarios.  For instance, you may want to have a different set of Cross Selling proposals for Quotes and Contracts.  Similarly, you may want to have different procedures for different classes of customers — wholesale vs. direct sale customers.  This node is also where you assign the document procedures to your document types.  As you might imagine, the customer assignments are made on the Customer Master records in the Sales Area Data view.

  4. Cross Selling Profile
    Cross Selling Profile

    The last step is to set up your Cross Selling Profile and assign it to your Sales Areas and Document/Customer Procedures.  Use the standard-delivered profile (B00001) as a guide.  The Profile links your Cross Selling Procedure with a Product Proposal.  More on that later.  There are also some additional settings you will want to consider.  The ‘Cross-selling dialog box indicator’ allows you to control if the cross selling pop-up window appears automatically after hitting ‘Enter’ during line item creation, or only manually with the click of a button.  There is also a ‘Cross-selling ATP indicator’ which will allow for the calculation of the available quantity for each Cross Selling item.  This may be switched off by default in order to improve performance during order entry.  Since there is no hard limit for cross selling items, running ATP for many items can be time consuming.


Cross Selling Pop-up
Cross Selling Pop-up

The business end of the cross-selling functionality lives exclusively on the Sales Document.  When creating a Sales Document, SAP scans the materials on the order and looks for records matching those materials.  If records are found, a pop-up window can be called up to display those related items along with pricing and availability information.  As mentioned above, this pop-up can be configured to either appear automatically or to appear manually with the press of a button.  The window is the trigger for the order entry user to ask the customer if they need any of the related items.  If so, the user can update quantities directly on the pop-up window and they can be copied directly into the Sales Order.


There are a couple of different ways that you can accomplish cross-selling in SAP.  I refer to these as Traditional Cross-selling and Statistical Cross-selling.

Transaction VB41 - Create Cross Selling
Transaction VB41 – Create Cross Selling

Traditional Cross-selling uses the popular condition technique which is the foundation for many other functions in SD, including pricing and output determination.  Like pricing, this function has a sort of Access Sequence which contains the various source tables for Cross-selling condition records.  With

Transaction VB41 - Creating the first Cross Selling pair
Transaction VB41 – Creating the first Cross Selling pair

this method, you maintain your list of cross-selling relationships manually using Transaction codes VB41, VB42, and VB43.  Transaction VB44 is supplied to allow users to easily copy an existing set of materials for a new record using a Create with Reference function.

Transaction VB41 - Adding additional CS items.
Transaction VB41 – Adding additional CS items.

These records are stored in the database in tables beginning with KOTD.  For example, table KOTD011 is the standard Cross Selling table keying off of a Material number.  PLEASE NOTE:  Not all KOTD tables are Cross-selling; other functions use this same prefix.

As with pricing, you can have many, many different condition tables setup to allow you the flexibility of proposing the right products to the right customers.  Though not as robust as the Field Catalog for Pricing, standard SAP delivers several fields relevant for Cross-selling such as Sold-to, Ship-to, Customer, Sales Org, Distribution Channel, Division and Plant.

The other type that I want to discuss is Statistical Cross Selling.  This method allows SAP to do the heavy lifting with some statistical analysis of your Sales Document history.  If you’ve ever browsed, you’ve probably noticed the “Customers who bought this item also bought” section on each product page.  The Statistical method is essentially the same thing.

Transaction SDVK
Transaction SDVK

Transaction SDVK (program SDCRSL01) will analyze past sales documents using some basic criteria and parameters.  The documents meeting the selection criteria are dumped into table VCRSELA.  Using some basic statistical analysis, common pairs of materials are then written into table VCRSELA_RES where they are later accessed during Sales Document creation in the product proposal.  You will notice that there is an “Identifier” on the SDVK screen; by default this value is ‘CROS’ and it must match the Identifier setup in configuration for the product proposal.

But what if you want to use different statistical analysis for different situations?  Let’s use an example:  You are a product distributor that sells through both B2B as well as B2C channels.  You can run your statistical analysis by Sales Area and aggregate the results using different identifiers.  For instance, you run the SDVK report for Sales Area BP01 / 01 / 01 (Direct consumer sales) and use the indicator B2C.  In a separate instance of SDVK, you run the report for Sales Area BP01 / 02 / 01 (Wholesale) and assign the indicator B2B.  You can then assign these indicators to those same Sales Areas in customizing.  The result is that when the ’01’ Distribution channel is used, you will receive the Consumer-focused listing and when you use Distribution channel ’02’, you will see the related Wholesale products.  Unfortunately, this type of flexibility is limited to Sales Area, Customer attribute, and Sales Document attribute.  Something more complicated, such as segregating the analysis geographically, is more difficult to accomplish.

Dynamic Product Proposal
Dynamic Product Proposal

The activation and setup of the Statistical method is found in the Dynamic Product Proposal node in the IMG:  Sales and Distribution –> Basic Functions –> Dynamic Product Proposal –> Define Product Proposal Procedure and Determine Access Sequences.

Cross Selling Product Proposal
Cross Selling Product Proposal

If you recall, we previously saw a reference to the Product Proposal procedure when setting up our Cross Selling Profile in Step 4 of our Activation.  Standard-delivered Product Proposal Procedure B00001 assigns a standard Function Module (SD_DPP_CROSS_SELLING) to our statistical indicator (‘CROS’ is the default).  Going back to our example from before, if we wanted to separate B2B cross selling from B2C cross selling, we would want to create two separate Product Proposal Procedures — one for indicator B2B and one for indicator B2C — in this configuration step.  We would then assign those Procedures to separate Cross Selling Profiles.


It’s important to note that these two methods — Traditional and Statistical — are not mutually exclusive.  As suggested above, the two methods can be configured side-by-side.  The result is that the cross-sold items will appear together in the pop-up window.


I’m going to use this last section to mention a few additional things about cross selling.  Unfortunately, some of the items below are not documented very well within SAP, so forgive me if I make a few assumptions about how these things work.

Transaction SDVK
Transaction SDVK

Above, I mentioned how you can leverage a standard SAP program (SDVK)  for identifying and proposing related items.  This transaction contains several parameters which allow you to fine tune the statistical analysis.  If you choose ‘All selections’ from the Edit menu, you will see five additional fields displayed at the bottom of the screen.  These parameters allow you to adjust the limits used in the selection of related items.  Although these fields contain no documentation, we can make a few assumptions about how they will impact the program.  The ‘Min. support‘ and ‘Min. Confidence‘ values represent some sort of threshold (expressed as a decimal) that you can use to either select more or select fewer items.  The “Max.” Fields most likely allow you to put a cap on the number of records used in the analysis.  The “L2” and “L3” represent internal tables used in the statistical analysis part of the program.  Adjusting the size of these fields (presumably maintained as a number of records) would presumably be another method for controlling performance or data volumes.  If you are reading this and can provide some added insight, please leave a comment.

In case you are looking for a historical record of when your Statistical Analyses were run, check out table MCWPS (“File for storing results of function group MCWPS”).  My research suggests that this table stores a historical account of each run along with some additional details.

Program SDCRSL02 seems to be closely related to the Cross Selling Analysis.  The report is labeled ‘Purchase analysis:  Display Results’ and seems to rely on the above mentioned table to pull its result set.   I would expect that this report would summarize the results of a recent Analysis run.  However, I was unable to see any results from this report despite having had several successful runs of the SDVK (program SDCRSL01) transaction.  If you can provide some insight, please leave a comment below.


Like other functions in SAP, Cross Selling can be as simple or as complex as you need.  If you are already familiar with Pricing configuration, traditional Cross Selling will be very familiar.  The Statistical method that SAP allows is a nice feature, but is neither transparent in function nor flexible in its operation.  Please feel free to share your thoughts on your Cross Selling experience in the comments below.

SAP: Exploring Cross-Selling in SD was last modified: July 22nd, 2015 by michael

2 thoughts on “SAP: Exploring Cross-Selling in SD”

What say you?