Traditionally interaction
between user using e.g. SAP GUI
and SAP system is like follows. User does some interaction (e.g. mouse click)
and this is send to ABAP server to process. The ABAP server processes it and as
per application logic it sends data back to client = SAP GUI where it is
presented to the user (e.g. screen is refreshed with the newest data. This is
what is called traditional SAP user interface design. It follows request/response
model of interaction. However this is one of traditional obstacles in SAP
systems. The traffic between client and server is very high. They basically
exchange the data constantly and it also always requires user interaction (e.g.
hitting refresh button). This approach is also called polling or event driven
communication.
On other hand today’s
application requires real-time data and interaction must be collaborative in
way where user is not supposed to be inquiring information every time but as
the information in application (e.g. in underlying database table) is changed
but the user is supposed to get automatically instead. Means the application is
not waiting for the user but it sends information (e.g. notifications) directly
to the user instead of waiting for the request.
In SAP
Application Server ABAP 7.40 Support Package 05 a new
concept is introduced via infrastructure for event based communication. The new
concept is called ABAP channels
created in SAP NetWeaver Application Server ABAP. Now let’s take closer look
how it is actually implemented.
SAP Web UIs such as WebGUI, Business Server Pages (BSP), Web Dynpro ABAP
(WD4A) or SAPUI5 can use
the ABAP Push Channel (APC)
which enables such a real-time communication via WebSockets (over TCP/IP socket).
The APC is bidirectional message based communication channel representing the
WebSockets integration in ABAP. There is a possibility of push notifications to
UI as soon as data change happened in the ABAP backend. This is a sign for a
user to request the changed data from ABAP backend and update UI. The APC
basically provides real-time UI access to ABAP’s data.
What we need in addition
is to make interaction between events possible. Means event driven
communication between ABAP sessions across different ABAP application servers.
This is because the data might be processed by many sessions. So this would a
way how the sessions are communicating between each other. Traditionally there
would be a many polling performed to inquire the status of the data processing.
Instead of this publish/subscribe mechanism is used to prompt the notifications.
The ABAP Messaging Channel (AMC)
infrastructure replaces the traditional polling. It acts as a broker for the
messages exchange between different ABAP sessions (on different ABAP
application servers). The AMC basically provides real-time communication
between ABAP sessions.
Now how the two – APC and
AMC plays together? By employing both of them scenarios when different users
are working with same data of particular business object data. In here a
changed data must be displayed on GUI of all users in the real-time without
locking the object for changes by other users. With support of push channels, messaging
channels and collaboration scenarios it is possible to use WebSockets to
facilitate the exchange of messages between different ABAP sessions and enable
users to collaborate over the infrastructure in real time.
Let’s go further. Imagine
all possibilities that will come with Internet of Things (IoT). Having ABAP
Messaging and Push Channels in place can enable many scenarios in management of
shop floor and inventory areas be handled simultaneously.
Finally how is this done technically?
It is implemented by Push Channel
Protocol (PCP). It is SAP proprietary message based protocol. It is very
similar to HTTP protocol. The PCP messages consist of header fields and a plain
body. The body is separated by line feeds. Field values entries are in pairs of
name-value separated by “:” sign. Implementation in the ABAP backend comprises
of class CL_AC_MESSAGE_TYPE_PCP and interface IF_AC_MESSAGE_TYPE_PCP PCP which
is having API. Implementation in SAPUI5
is
within the class sap.ui.core.ws.SapPcpWebSocket. For other UI technologies
there is a library sap-pcp-websocket.js for particular PCP methods.
More information:
Specification
of the PCP
No comments:
Post a Comment