Advance Notice: New Terms of Use for SAP ONE Support Launchpad and SAP Support Portal

On May 25, 2018, the General Data Protection Regulation (GDPR) 2016/679 will become effective.

GDPR introduces new directives regulating the processing of personal data by private companies and public authorities throughout the European Union. This makes it necessary to adjust the terms of use for SAP ONE Support Launchpad and SAP Support Portal. Read more. http://bit.ly/2Ezb3ZS #SAP #SAPCloud #AI

Revenue recognition in context of IFRS 15 with SAP S/4HANA Cloud made easy – Part 1/2

The International Accounting Standards Board (IASB) and Financial Accounting Standards Board (FASB) have jointly issued the new revenue standards, IFRS 15/ASC 606 Revenue from Contracts with Customers. They become effective for annual periods beginning on or after January, 1, 2018.

In a small blog-series, I would like to demo the process that we provide in SAP S/4HANA Cloud 1711 to support the requirements along the 5-step-model:

* This blog: Demo of Revenue recognition for sell from stock with delivery-based billing
* Next blog: Project based services scenario

A company sells printers and cartridges. Recently it created a contract with a customer about a package containing 1 printer and 1 cartridge. The contract price of the printer is 80 EUR and for the cartridge 20 EUR. If printer and cartridge would be sold independently the price for the printer would be 100 EUR and for the cartridge 50 EUR. The delivery of printer and cartridge happens at the same time. After delivery, the invoice for both items is send to the customer.

Creation of Sales Order:

Step 1: Identify the contracts with the customers (IFRS 15.9ff) – what qualifies it as a contract?

For many entities step 1 will be relatively straightforward. The key point is to determine when a contract is existing. The SAP system automatically identifies each sales order as one revenue recognition contract.

Step 2: Identify the separate performance obligations (PO) (IFRS 15.22ff) – how to identify those deliverables that were accounted performance obligations?

For standard sales orders with multiple line items, the SAP system determines each line item as a distinct performance obligation.

Step 3: Determine the transaction price (IFRS 15.47ff) – how to measure the total revenue arising under a contract? IFRS 15 typically bases revenue on the amount to which an entity is entitled.

The SAP system identifies the net value of the sales order as the transaction price.

Step 4: Allocate the transaction price to the separate POs (IFRS 15.73ff) – how to allocate the transaction price between the different performance obligations identified in step 2?

The standalone selling price (SSP) or estimated standalone selling price (ESSP) can be maintained or uploaded in the SAP system. For each performance obligation (i.e., each item in the sale order), the SSP or ESSP appears automatically as condition type in the pricing procedure.

SSP in the SAP sales order for item 10 – Printer

When a sales order is saved in the system, the transaction price is allocated to each performance obligation automatically based on the relative SSP of each distinct item. The App “Allocated Revenue” shows the allocated amounts for each performance obligation (POB) based on the relative standalone selling price of each distinct item.

Call App ‘Allocated Revenue’ in the Fiori Launchpad

App ‘Allocated Revenue’ for the created sales order

Step 5: Recognize revenue when the entity satisfied a PO (IFRS 15.31ff)

The final step is to determine for each performance obligation, when revenue should be recognized. Revenue is recognized when the performance obligation is fulfilled – that is when the goods issues are posted.

Posting Goods Issue:

The revenue recognition entry created by the system records the contract asset and is based on the ‘allocated revenue’.

Revenue recognition document created with Goods Issue posting for both items printer and cartridge

The performance obligation is fulfilled. The system records costs and recognizes revenue base on allocated amounts.

The App ‘Revenue Recognition (Event-Based)-Sales Orders’ shows contract balances, contract assets and contract liabilities in the balance sheet, as well as the recognized revenue and costs for each performance obligation for every sales order in the income statement.

Call the App ‘Revenue Recognition (Event-Based)-Sales Orders’ in the Fiori Launchpad

The App ‘Revenue Recognition (Event-Based)-Sales Orders’ item 10 printer, after Goods Issue posting

Billing:

With the billing contract liability is recorded based on transaction price.

Revenue recognition document created with billing for both items printer and cartridge

The App “Revenue Recognition (Event-Based)-Sales Orders” shows updated account balances in the income statement and balance sheet after billing.

The App “Revenue Recognition (Event-Based)-Sales Orders” item 10 printer, after billing

Period end run:

With the period end run netting of contract asset and contract liability happens for sales order. In our example the sales order is completely delivered and billed therefore the balance of each sales order item is the difference between the transaction price and the allocated revenue. We call the App ‘Run Revenue Recognition – Sales Orders’ from Fiori Launchpad.

The App “Revenue Recognition (Event-Based)-Sales Orders” shows the updated amounts on contract assets and contract liabilities in the balance sheet, after period end run has been conducted.

Remaining balance after netting on contract liability for sales order item 10

In my next blog, I will demo a customer project scenario with fixed price services.

For more information on SAP S/4HANA Cloud, check out the following links:

* Sven Denecken’s SAP S/4HANA Cloud 1711 Release Blog
* SAP S/4HANA Cloud release info: http://www.sap.com/s4-cloudrelease
* Best practices for SAP S/4HANA Cloud here
* openSAP course ‘How to Best Leverage SAP S/4HANA Cloud for Your Company’
* Learn more about intelligent ERP S/4HANA Cloud

Follow us via @SAP and #S4HANA, or myself via LinkedIn http://bit.ly/2EBrftk #SAP #SAPCloud #AI

A Great Combination: Python and SAP Predictive Analytics

Introduction

Recently, SAP released SAP Predictive Analytics version 3.3.  Details on what is in this release can be found on the blog Announcing the release of SAP Predictive Analytics.  This release touts new support for Python.  Python is one of the most used languages for machine learning and is well equipped in numeric calculation.  Embedding predictive analytics libraries into a Python application is a natural progression for SAP Predictive Analytics.  In this article, we will take you through setting up the SAP Predictive Analytics Automated Analytics library with a Python environment on Windows.

Details on Python’s use with data science and in general can be found in the links below:

https://towardsdatascience.com/what-is-the-best-programming-language-for-machine-learning-a745c156d6b7

https://fossbytes.com/popular-top-programming-languages-machine-learning-data-science/

https://www.python.org/about/apps/

Note: You can also embed the SAP Predictive Analytics library into C++ and Java applications.

Business Benefits of Python

There are many web sites identifying the business benefits of Python. Here are some of my favorites which those of you working in data science may also appreciate.

* Ease of use and readability
* Large community support with many examples to draw upon
* Large list of standard libraries, with many numeric and scientific libraries
* No need for compilation
* Internet of Things (IOT) applications are adopting Python
* Python’s support for procedural, functional and object oriented approaches
* Ability to integrate with Enterprise Applications
* Extensibility

I encourage you to do an internet search on “business benefits of using Python” you may find other reasons that resonate better for your situation.

Additionally, for those who are leveraging the segmenting feature for forecasting in SAP Predictive Factory, using Python could be used to accomplish the same functionality with other types of predictive models.

What type of use-cases could include predictive analytics into an application?

Below are some examples where an application can include predictive analytics as a differentiating feature:

* Recommending products to customers based on prior buying patterns in on line web stores
* Scoring customers for the customer service team based a customer’s likelihood to churn in CRM applications
* Forecasting profit, sales growth rates in financial applications
* Alerting maintenance teams when a bearing has an 80% chance of failing to keep operations at running 100% of the time
* Alerting insurance agents on cases that have 90% chance of fraud.

Many SAP Partners embed SAP Predictive Analytics into their application to differentiate their own solution.  This article discusses embedding advanced analytics into applications:

https://blogs.sap.com/2016/08/29/predictive-analytics-changing-the-game-for-sap-oem-partners/

Additionally, there are perks for SAP Partners described in the article on Becoming an OEM partner has its benefits.

Prerequisites:

SAP Predictive Analytics 3.3 Desktop

Steps to Follow

* First you will need to get Python. The Anaconda distribution is very popular for Python and you can download it from https://www.anaconda.com/download/ . The default Anaconda install currently installs Python version 3.6.  SAP Predictive Analytics requires Python version 3.5.  To download this version with Anaconda, download Anaconda version 4.2 which uses Python version 3.5.  Anaconda 4.2 can be found on this URL.  If you download this version, then you will not need to manage versioning with environments as the instructions below state.
* I will continue using Anaconda3 5.0.1.  Install Anaconda using the graphical installer using the default options.

* Open the environment settings for your computer. Press the Windows start button and type “explorer”, click on the “File Explorer” icon the appears as shown below.

* Right click on the computer icon circled in red below and select the “Properties” option in the pop-up menu.

* Click on the “Advanced system settings” option circled below.

* Click on the Environment Variables button highlighted below.

* Add Python environment to your Windows computer. Press the ‘New’ button boxed in red below.

* Type ‘PYTHONPATH’ for the variable name and ‘C:Program FilesSAP Predictive AnalyticsDesktopAutomatedEXEClientsPython35’ for the variable value.  Then press the OK button.

* Again, press the ‘New’ button boxed in red below.

* Type ‘AALIBPATH’ for the variable name and ‘C:Program FilesSAP Predictive AnalyticsDesktopAutomatedEXEClientsPython35’ for the variable value.  Then press the OK button.

* Select the ‘PATH’ system variable by clicking on the PATH entry in the lower dialog which is highlighted in blue (you may need to scroll down).  Click on the lower Edit button circled below.

* Click on the New button boxed in red below. This action will add a row to the bottom of the PATH editor.

* Enter ‘C:Program FilesSAP Predictive AnalyticsDesktopAutomatedEXEClientsCPP’ for this new row and press the OK button circled below.

* Press the OK button circle below.

* To launch the Anaconda command line, press the Windows start button  and type “anaconda”, then click on the “Anaconda Prompt” icon the appears as shown below.

* SAP Predictive Analytics requires Python version 3.5. To setup Anaconda with that version, you will need to add this environment as discussed in this article https://conda.io/docs/user-guide/tasks/manage-environments.html  Type the following commands:

conda create -n py35 python=3.5 activate py35

* The first command above installs Python version 3.5.  The second command changes the environment to use Python version 3.5.  Your command prompt should now start with (py35) c:…  Lets run a SAP Predictive Analytics clustering sample. Type the following commands at the prompt:

cd %PYTHONPATH%..SAMPLESpython python clustering.py

You will see the following output:

Congratulations you are ready to work Python with SAP Predictive Analytics Automated library!

* This example uses the mathlibplot library. Add this library to your environment if you wish using the following command:

python -mpip install -U matplotlib

* When you rerun the clustering sample again with the following command:

python clustering.py

You should see the following graph plotted (It may take a few seconds to render).

Some Python lovers prefer command line, while others like Python graphical tools.  If you are a command line person, you are ready to work with SAP Predictive Analytics and Python.  If not, your next step would be to setup a Jupyter Notebook for a more interactive experience. I have an article on this topic as well.

Related Resources

For more information on the Automated Analytics API, see the SAP documentation at https://help.sap.com/http.svc/download?deliverable_id=20569176

You may also want to connect with your HANA database from your Python code.  The article “Connect to SAP HANA, express edition using Python” will help you get this setup as well.  Additionally, there is a blog on connecting Python to SAP HANA on the Cloud. http://bit.ly/2EAFwGJ #SAP #SAPCloud #AI