Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
Showing results for 
Search instead for 
Did you mean: 
Product and Topic Expert
Product and Topic Expert
Hi All,

As you know, 'Order to Cash' (OTC) is a common and important FI (Financial)-SD(Sales&Distribution) integration scenario. It is good to understand how it works for FI and SD consultants.

In this blog post, I will walk through the simple 'Order to Cash' steps with you in the SAP S/4HANA system. Please be aware, this is just a simple introduction, 'Order to Cash' has a lot of useful functions not covered in this blog post.

Image a scenario, there is a food trading company and they have a new customer wants to buy 10 bags of rice. The customer will pay the food trading company the money after the customer picks up the rice from the food trading company's storage.

As a step-by-step guide, I will maintain the necessary objects for the food trading company and the customer from the beginning and then run the 'Order to Cash' process.

Step 1: Define Sales Organization

Path: SPRO-Enterprise Structure-Definition-Sales and Distribution-Define, copy, delete, check sales organization-Define sales organization

We can use the 'New Entries' button to create a new sales organization.

In my test, the Sales Organization is 'ZJC0'.


Step 2: Define Distribution Channel

Path: SPRO-Enterprise Structure-Definition-Sales and Distribution-Define, copy, delete, check distribution channel-Define distribution channel

We can use the 'New Entries' button to add a new distribution channel record to the list.

In my test, the Distribution Channel is 'ZJ'.


Step 3: Define Plant

Path: SPRO-Enterprise Structure-Definition-'Logistics - General'-Define, copy, delete, check plant-Define Plant

We can use the 'New Entries' button to add a new Plant record.

In my test, the Plant is 'ZJP1'.


Step 4: Maintain FI Master Data For The Customer

As above mentioned, this is a new customer, so we should maintain the FI master data for the business.

a. Define company

Path: SPRO-Enterprise Structure-Financial Accounting

Company 'ZJC1'

b. Edit, Copy, Delete, Check Company Code

Path: SPRO-Enterprise Structure-Financial Accounting

Company Code 'ZJC1'

Do not forget to assign the Chart of Account, Fiscal Year, Field Status Variant (and ETC.) to the company code.

c. Reconciliation Account

Transaction Code: FS00

We should create a new reconciliation account for the customer under the company code.

In my test, the reconciliation account is '100100'. As a customer reconciliation account, the 'Recon. Account for Acct Type' field should select 'Customers'.


Step 5: Link The Objects

After the objects are created, we should maintain the relationship between them. Please carefully check the assignments and make sure all the objects which just created have been linked correctly before we start the 'Order to Cash' process. Different error messages will appear in the 'Order to Cash' process if the links are not maintained correctly.

The assignments can be done in the path: SPRO-Enterprise Structure-Assignment

a. Assign company code to company

b. Assign plant to company code

c. Assign sales organization to company code

d. Assign distribution channel to sales organization

e. Assign division to sales organization

The existing divisions can be reused or a new division can be created, this is based on different requirements, in this blog post, I will reuse the existing divisions.

f. Assign sales organization - distribution channel - plant


Step 6: Maintain Customer Data

As mentioned, this is a new customer, so we should create a new customer master record for the customer in the system.

There is no separate transaction code (TCODE) to maintain customer and vendor data in the S/4 HANA system, the things have been moved to Business Partner (BP). We should create a new Business Partner with Customer roles (FLCU00, FLCU01) for this customer.


BP configuration and data maintenance is a big topic, I will introduce it in another blog post.

The simple steps:

a. Create a new Organization

b.  Select Customer role FLCU01 from the role list.

Select the 'Sales and Distribution' button from the top-right screen.

Maintain the 'Sales Organization', 'Distribution Channel', 'Division' data in the poped screen.

In my test, it looks like the screenshot below.

We can maintain the data in the tabs based on the requirements. After the customer is created, we should come back to this screen and check the 'Partner Functions' tab, we will need to use the customer number which maintained in this tab to create a sales order.

For example, customer number 3639 (this is different from the BP number) will be used in our test later:

c. Select FI Customer role FLCU00 from the role list.

Select the 'Company Code' button from the top-right screen.

Using the company code which we created in step 4.b in the poped screen.

Using the reconciliation account which we create in step 4.c.

Step 7: Maintain Material Master

As mentioned, the food trading company will sell 10 bags of rice to the customer. We should create the material master data for rice.

Transaction Code: MM01

Maintain material master data can be a big work. There are a lot of fields can be used in MM01 to meet the business requirements. In this blog post, I will use the most basic functions to maintain the material master data.

a. Select Industry Sector and Material type

b. Select the views

View 'Accounting 1' should also be selected.

c. Input the organization level data, using the data which we created in the previous steps.

d. Maintain basic data in the tab 'Basic Data 1'.

Business Unit of Measure: BAG

Weight information:

e. Maintain tax data in the tab 'Sales: sales org. 1'

f. Maintain price information in the tab 'Accounting 1'.

This is just an example.

After we click the 'Save' button, the system may ask us to maintain the values of other fields, this is based on the existing system configurations.


Step 8: Add Stock Of The Material

As mentioned, the trading company will sell 10 bags of rice to the customer. Before we create the sales order, we should make sure there is enough stock.

In our test, the stock of the material is 0 after it was created, so we should add the stock first.

Transaction Code: MIGO

We may be used transaction code MB1C before, but this transaction code has been obsoleted.

We can add stock by Purchase Order or without Purchase Order. In this blog post, I will use initial stock (movement type 561) but not Purchase Ordre to add the stock.

a. Receipt without PO (Purchase Order)

b. Input the material number which we created in step 7

c. Maintain quantity information

I want to add 1000 bags of rice for further use.

d. Maintain storage location information

Make sure the 'Item Ok' checkbox is selected and click the 'Post' button.


After the new material document is posted, the stock will be increased. The stock can be checked by Transaction Code MMBE.


Step 9: Maintain Item Category

Before we create the sales order to sell the rice, we should make sure the item category is maintained correctly.

As mentioned, we want the goods are deliverable. This should be maintained in the item category.

Transaction Code: VOV7

I will use the item category 'TAQ' in the test, so I double-checked the item category.


Step 10: Create Sales Order

After the preparations, we can create a sales order based on the created data.

Transaction Code: VA01

a. Create a standard order (Order Type 'OR')

b. Using the customer number which we created in step 6 as 'Sold-To Party' and 'Ship-To Party'

c. Maintain the 'Sales' tab

Select the payment term 0002 (pay in 14 days get a 2% discount).

Deliver Plant: ZJC1 (previously maintained)

Using the material which we created in step 7 on the list, maintain the 'Order Quantity' and 'ItCa' (value 'TAQ') and 'Amount' fields for the material.

d. Maintain the 'Shipping' tab

Step 11: Deliver the goods 

After we create the sales order, the next step is to deliver the goods (if the item category is deliverable).

Transaction Code: VL01N

The warning message below may appear.

To fix this issue, we should come back to generate the schedule line for the sales order.

Transaction Code: VA02

Input the 'Confirm Quantity' value and save the change.

After that, come back to VL01N and reprocess the sales order. Check the fields and save the change, after that the outbound delivery document will be created.

Before we can bill the sales order, we should make sure the goods are delivered/picked.

Transaction Code: VL02N

In this blog post, I expect the customer will come to pick the goods by themselves. We should maintain the 'Picked Qty' field under the 'Picking' tab and save the change.

The storage location should also be maintained at the same line item.

After that, we should post a good issue for this outbound delivery.


Step 12: Billing The Sales Order

After the sales order is created and the goods are delivered/picked, we can create the invoice for this sale, this is a very important step to link the sale with Financial function.

Transaction Code: VF01

The delivery document number which we just maintained will auto appear on the list. Select 'F1 Invoice' as the 'Billing Type' and today as the 'Billing Date' and click the 'Execute' button.

If there is nothing wrong, then the screen below will appear. Check the data and click the 'Save' button.


Step 13: Release Billing Document to FI Accounting 

The document generated at step 12 will not default release to FI accounting. We should manually release it to accounting.

Transaction Code: VF02

Click the 'Release to Accounting' button at the top-right screen.

After the document is released to FI accounting, we can check the FI invoice information by the 'Display Document Flow' button in VF02.

The FI invoice information can be found from the screenshot below. This invoice is not cleared.

We may face the 'account cannot be determined' issue when we release the document to FI accounting, this is because of the GL accounts (revenue, sales deductions, etc.) were not maintained in transaction code VKOA. The system cannot determine which GL account should be used to record the revenue and sales deductions and other values. We should check which chart of account we are using for the company code (assign to the BP FI customer role FLCU00) and find out which GL account under the chart of account should be used for the purposes and maintained them in transaction code VKOA (select 'V' for the 'Application' field, as 'V' standards for 'Sales/Distribution' at here). I will not introduce more on this part in this blog post because GL account configuration is quite dependent on business requirements.

Step 14: Check The Invoice

Finally, the invoice is generated. Let's take a look at it.

Transaction Code: FB03

G/L Account 100100 is the reconciliation account which we maintained for the Business Partner 'FI Customer' role FLUC00.

GL Account 800000 is the account which I maintained in transaction code VKOA for recording the sales revenues.

The invoice is not cleared, we can find the related open item from transaction code FBL5N under the customer number which generated in transaction code BP.


Step 15: Process Incoming Payment

The last step in our test is to clear the open invoice by manually processing the incoming payment.

Transaction Code: F-28

Before we can run the payment, we should make sure the bank related configurations have been done in the system. This configuration is out of the scope of this blog post.

An example:

Click the 'Post' button after we input the data.

Input the 'Amount' value and click the 'Post' button.

A new document is created to clear the invoice.

If we check the sales order billing document again, we will see the invoice status changed to 'Cleared'.



Finally, we finish the 'Order to Cash' process. 

In the blog post, I built the master data ( 'Sales Organization', 'Distribution Channel', 'Plant', 'Division', 'Customer', 'Company', 'Company Code', Business Partner) and the transaction data (documents) from the beginning. I advise you to do the configurations and postings by yourself, this will help you to have a better understanding of 'Order to Cash' processing.


Best regards,

Jason Lu