Saturday, November 28, 2009

A peep into SAP

I was at college when I first heard about SAP to be frank. I googled and found that it meant "Systems, Applications and Products in Data Processing". It meant nothing to me then. It was something which I didn't understand at that point in time. I just came to know that it was some German company formed by 5 engineers who quit IBM.


After completing my B.Tech I was waiting for my DOJ at Wipro. Which was getting delayed due to the unrest in the market. The idea of getting enrolled for the certification course struck me when I saw catch phrase in "The Times of India". It went like "Why get stuck with a boring jobs when SAP can add zeros to your salary" !!! I thought then that I should give it a try. I checked up for the list of authorized education partners and found one close by to my place. I went to the institute and the guys there explained me the different modules and the role of SAP in a company. The modules were - Basis, ABAP, HR, FICO, XI, PP, MM (There are many more). Basis mainly deals with the management of the SAP network, ABAP is a 4th generation event oriented, OOP language which also has a procedural support (if you go by what the book says!!!), HR is of course is Human Resource, FICO is Financial Accounting, PP stands for Production Planning, XI means eXchange Infrastructure ( Which mainly manages cross client and cross platform communication), MM stands is Materials Management.


If you guys have paid attention till now, then, I believe that you would have made a good guess about my module. It is ABAP. ABAP stands for Advanced Business Application Programming. ABAP was initially a procedural language but was extended with OOP concepts. The new extended language is called ABAP objects. ABAP Objects supports multi-level inheritance. Multiple inheritance is simulated by interfaces. It is event driven. It can work with the database as well as present GUI.


Programs can fetch reports, input data, update database tables, present GUI across multiple platforms in suitable formats and using minimum resources. We as "ABAPers" create such programs, we perform database updates using special function modules which can be called remotely (RMI), we provide input helps in user fields, so that values entered by the user are checked for consistencies through foreign key relationships across all dependent tables in the database, we create transactions. A person who is working in a different module uses the stuff that we create. For eg(its not a bookish example!!): If a guy from MM needs a report about the stock. Then the ABAPer creates a report program which fetches data from the DB and presents it. Then ABAPer then creates the transaction code for the program. The transaction code is normally a 4 letter alphanumeric code. The MM guy just needs to enter this code and he sees what he wants to see!!


ABAP is database independent. It uses something called a database interface. We write all the queries in something called Open SQL (ABAP syntax) and the database interface translates it to the native SQL of the underlying database. Native SQL is supported though strongly advised not to use due to the loss of database independence. You can imagine a database interface like the Java Compiler which creates a platform independent code. Also, we manage database locks, queries. Guys it is exciting!!! There are naming conventions which need to be followed for everything - classes, packages, function modules(actual functions grouped in a function group). Function groups are globally available(across the entire system). There is something called ABAP dictionary which manages the everything all global data is declared in the ABAP dictionary.


For table fields there is a two-level domain concept. There is a data element and a domain. A data element defines things like field label etc. while the domain defines data type, length etc. There can be multiple data elements using the same domain. Once created in the ABAP dictionary, the data element can be used in  different tables. This ensures centralized management of table fields.


SAP manages multiple clients in the same system. While logging on, the user needs to specify a client and a log on language. Data relevant to the specified client is available to the user; although it is stored in the same table along with other clients. The GUI text, menu options, context menu etc. is available in the log on language chosen by the user.


There are tools for creating classes, funtion groups(function groups contain function modules), screens, transactions etc. ;You name it SAP has it. SAP was previously using a 2 tier architecture(R/2), but now it supports R/3 (3 tier) architecture. The 3 levels being Presentation, Application and Database. Some layers are scalable. There can be many application servers in a SAP network. These communicate using a message server. There are tables buffers which are used for frequently accessed data. The buffers lie in the application server and so need to be synchronized at regular intervals to avoid irrelevant data creeping in.


SAP also provides a workflow which manages mailing and automation of complex work cycles, ensuring that the right data reaches the right person at the right time. Data can be presented according to the business requirement. SAP Web Application Server(WAS) has a JRE and supports JSP. ABAP uses something called BSP (Business Server Pages) while JAVA uses JSP. There is a Internet Communication Manager(ICM) which manages the requests. If they come from BSP's then they are handled by the ABAP dispatcher and if they are JSP's then the requests are sent to the JAVA dispatcher. In this scenario only web browsers are required.


SAP also provides a mobile version for mobile devices like PDA. This for business on the go. SAP provides a portal which provides a user with tools that are relevant to his or her role. Workflow is bundled.


Getting certified is a privilege. Certified guys get their business card on the SAP site and get access to an ocean of SAP's resources and software, expert help etc. etc. I'm really happy and proud to be a SAP professional. I'd like to say SAP's got balls guys !!! My exact profile is SAP ABAP Technical Consultant. This is just a BRIEF description about SAP.