Saturday, January 19, 2019

Similarities of SAP and mainframes

I recently took a part in online MOOC course called "Mainframe - Crucial Role in Modern Enterprise Computing" by HPI institute.

Here while learning about mainframe architecture its operating systems, history how it evolved and features of mainframes I noticed few similarities comparing to SAP NetWeaver architecture.

There are few points of view where I found some similarities between the two.

With regards to architecture - From this point of view, it all goes back to early days of SAP. When they introduced R/2 software (Enterprise Resource Planning software) which at the time (approximately in 1979) was only available on the mainframes (before R/2 there was an R/1 which was batch processed based system). When they started to develop R/3 (launched in 1992) they needed to migrate to client/server architecture. The R/3 inherited many components of the R/2 like tables, UI in form of DynPros, ABAP programming language, batch job management, etc. which at the end formed Basis platform of the R/3 (Basis Component - BC). By this way many of architecture principles that they used on mainframe got to new technology that was the client/server. Later the Basis Component of R/3 was transformed to NetWeaver (2003) by adding Web Application Server and other components and rest is history. As a side, note approximately as of 2020 the NetWeaver is transitioning to ABAP Platform - that is the foundation of the S/4HANA products starting with S/4HANA 1809.

Controlling of user interactions – in R/3 SAP had to simulate functionality of 3270 terminal screens of R/2. That’s how function key like F1, F3, F11, F12 made to SAP GUI of R/3 and subsequently even to most recent version of SAP GUI. The purpose of function keys followed an IBM standard for application user interfaces (mainframe user interfaces).  See user screens examples of R/2 and R/3 here.

F1 Help

F3 Save and Quit

F10/F11 Shift left/right

F12 Cancel (Quit without saving)

Batch job management - SAP NetWeaver job management has its roots in jobs on an IBM mainframe. The concept is quite similar. Mainframe’s JES (Job Entry Subsystem) has similar principles that we can find in SAP’s NetWeaver like: job class, input, conversion, processing, output (output goes to spool), etc.

Software development – ABAP was introduced in case of R/2 (so on mainframe) software and it is supported by SAP stack also today (of course ABAP has evolved since and has many features of modern programming languages. It started as a report language influenced by COBOL which is predominant programming language even today. There are many similarities between the two. E.g. language statements like: END-IF, END-PERFORM, ADD, MOVE-CORRESPONDING, WRITE etc.

In standard SAP NetWeaver ABAP stack based installations there is ABAP program called ROIUHSTRUTIL. It is available in the newest version of the NetWeaver – 7.5. The program itself appears to be COBOL to ABAP conversion, string processing support tool.

Storage Management - Data sets are basically files in Linux. This term is used in both worlds, mainframe and in case of SAP there is a language statement in ABAP called OPEN DATASET.

ABAP message type - Abend (A as per field MSGTY that described possible values of the message type) that means Cancel. Sometime there is a reference to abended/cancelled (or something is abending) in SAP documentation. The term ABEND means Abnormal END. In the mainframe world, the ABEND is macro used to initiate error processing for a task. There are multiple values of the ABENDs – abend’s codes. Normally they are represented by four characters code (e.g. S0CB  - Attempting to divide by 0 and not using ON SIZE ERROR, in case of IBM’s z/OS). Similarly, in SAP world there are also code like AEXL in program SYBLSTNR which means that updates to local recoverable.

In general, by what is mean by the ABEND in SAP terminology is the error message that the ABEND caused. The ABEND description or the ABEND message means ABAP message content it-self. E.g. something leads to the abend = to the cancellation of the program. E.g. abend message: 'Tab page &1 contains errors'.

No comments: