FAQ: What is SAP River?

If my memory serves me correctly, SAP River was first mentioned after the acquisition of Frictionless E-Sourcing – the acquisition came with a rapid application development platform, which was subsequently jettisoned. We briefly saw the SAP River product back in 2010, where it was briefly showcased as a development concept.

Fast-forward 3 years and we now have the first – Early Adopter – release of the SAP River software. I’ve been looking at it over the weekend – and thought I’d give some first impressions, and start up the FAQ.

What is SAP River?

SAP River is a development platform based on the SAP HANA Platform, that allows expression of intent, to build entire business applications.

In short, you to express what you want to build, and how you intend for it to be built – using the River Development Language, and River builds everything for you. You describe entities, relationships, views and actions and SAP River will build things like database tables, entity relationships, stored procedures, views and OData services. All you have to build on top of this is a UI layer which can consume OData. For example, using SAP’s SAPUI5 development platform, which is also included in SAP HANA.

What is SAP River not?

SAP River is not a platform in itself (rather, it relies upon SAP HANA for this) and it is not a UI. You can build the UI in anything that can consume OData, though SAPUI5/OpenUI5 and the SAP HANA UI Integration Services is a logical choice of UI.

What are the use cases for SAP River?

In my opinion, it is well suited to a few things:

– Standalone Apps built by app vendors and resold as apps or templates

– Extendible HANA Apps built by SAP

– Extending existing Apps like SAP HANA Live

– Small-Medium sized ERP Apps

– Big Data Apps

What is the River Development Language?

River Development Language, or RDL, is the language for expression entities, views, associations and actions using SAP River. I found a document here that describes this in more detail, if you’re interested.

Will RDL or SQLScript become the go-to language for SAP HANA Development?

RDL and SQLScript are complementary and serve different purposes.

SQLScript is HANA’s stored procedure language – fantastic for manipulating large volumes of data under the cover and returning a result set. It can be used in RDL, in SQL, via ODBC, JDBC, OData or MDX and native HANA development. Most HANA projects will use SQLScript somewhere.

RDL is a development language for expressing whole business scenarios, and it is one option for HANA Development. Certainly, not all HANA projects will use RDL, but only those that decide to use it as the main language for their scenario. RDL will not replace SQLScript, though it is possible to write SQLScript in-line with RDL.

So SAP River is in-Memory?

Yes, SAP River is based on SAP HANA so everything you build will be in-Memory. It is blazingly fast even with large data volumes and can of course use data replicated out of another system like SAP ERP, or any other database for that matter.

What can SAP River do that HANA can’t do?

SAP River is built on the HANA Platform, so the short answer is: from a capability perspective, nothing.

However what River allows is very concise expression of development artifacts and a data-driven developer experience. Automatic documentation, for example. River isn’t intended to be the solution to every problem, but rather a solution to the problem of wanting to build apps easily and quickly.

And this is what River can do: facilitate the build of Enterprise-Grade applications in hours, not weeks, and easy and fast changes. What’s more, River allows quite sophisticated business logic to be built very easily, whilst HANA requires you to build your own stored procedures or Server-Side JavaScript.

What is the downside to SAP River?

In my opinion, SAP River is another weapon in the SAP HANA platform which you can use as you see fit. Ian Bradshaw told me he felt that River was just another development platform to learn, but I think it will appeal to a certain type of developer and use case, so I’m not sure I agree this is a problem.

Certainly, I think there are apps which will be better suited to custom SAP HANA Development, or using SAP Business Suite or BW on HANA. River doesn’t preclude you from using those – even on the same data models – but it provides you a neat option.

Is SAP River Available now?

Sort of. It’s available with SAP HANA SP07 via an Early Adopters Program – email earlyAdoption@sap-river.com for more details. This is designed for people who would like to take an application live.

You need to do some installation with SAP HANA SP07 to get it to work, and the SAP HANA Academy videos below are very helpful. With SAP HANA SP08 it will likely be included in the main installation.

What does SAP River run on?

SAP River will run on any SAP HANA SP07 appliance – on premise, or in the cloud. It requires > Rev.70 of SAP HANA so right now it’s only available on premise, or with the developer edition on sap-river.com. It requires a delivery unit to be added to your SAP HANA appliance, some SAP HANA Studio plug-ins (which work on the Mac!) and a little configuration. Then, you’re all good to go.

How is SAP River licensed?

SAP River is included in the HANA Enterprise license. This presumably includes HANA One on AWS, but as usual contact your account rep for more details.

Where do I go to find more information about SAP River?

SAP have done an excellent job of making River relatively available on day 1. I’m very impressed. Here are my favorite resources:

I’ve yet to build much in SAP River, but I found it exceptionally easy to get started. I’m thinking of building a small app over the holiday period, and I’ll share the experience. Does anyone have any suggestions for what to build?

sap.hana.utils.dateTime.nano100Between does not exist in the current implementation on www.sap–river.com I don’t where else I can post this as Im a TA with SAP and exploring in my own time. (i.e not an early adopter, or customer POC, so not SMP to log issues)

Great article btw. Also, I agree sap river is easy to understand, adopt and quick to develop, The language definition and functionality is in it’s early days and in such the functions, encapsulation, and instanciation isn’t JAVA, But a java programmer would find the syntax easy.

The much anticipated SAP River became available with SAP HANA SPS7 and is attracting a huge amount of interest. To help everyone get to up speed, SAP HANA Academy has produced a series of video tutorials that show you SAP River hands-on. Read What’s New in SAP HANA SPS 7: SAP River and check out the 19 videos that cover everything from installation to RDL specifics.Feb 28, 2014.

You can always find the latest, greatest index of SAP River tutorials on the SAP HANA Academy site here

it now seems that SAP are planning to discontinue the RDL concept, having incorporated some of the RDL features into CDS. As far as I remember, there were also explicit messages from SAP that RDL and CDS would “merge” at some point.

However, some of the more interesting features of RDL will not be ported to CDS; mainly Actions, OData generation, n:m associations, and access management. There was also a promise of RDL supporting existing entities via some kind of representation, allowing for using already created tables (from other namespaces, such as ERP) to incorporate into new models. In short, CDS lacks some of the vital pieces that made RDL unique and exciting as a stand-alone development platform.

Any thoughts on this? We’d like to see RDL continued, but now the signals from SAP seems to be disappointing. Have you done any RDL projects, or any plans to do so?

One of the disappointments of RDL was the incompatibility of OData versions regarding UI5 – this was discovered in the SP8 validations (by my team, among others), but we were initially told SAP was working on this. Now, the wind seems to have changed directions.

I can comment on a few of the things we plan to add to CDS/HDBDD. Already in SPS09 (in just a few weeks) we plan to add many new features. We plan to add unmanaged association, n:m assocations, new data types, etc. We also ported the River Application Explorer over to run against XSODATA services. We also plan to introduce a new XSJSLIB called XSDS that allows for the reuse of CDS semantics (including associations) at the XSJS programming level.

On the backlog for future releases we also plan to bring the XSODATA generation into CDS along with Actions once we have OData V4 support.