Introduction to ABAP
February 6, 2017 | Author: gokul.p | Category: N/A
Short Description
ABAP...
Description
Introduction Write a report that displays the text 'Hello world' on your screen. Solution Ok, because this is your first program, you get an extra help. Call Transaction 'SE38'. Create a new program. To proceed in an SAP 3.x system you must be registered as a Developer. You get your Developer Key from your Sys. admin in a couple of minutes/hours/days after you applied for it. It must be entered once when you create your first program. Program attributes: Type: 1 Application: S Choose a meaningful title (Save) Choose Development Class &TMP or press Button 'Local object' Now you can edit the source code. Position the cursor in a line number cell. Press F1 for the help of editor line commands. enter i3 which inserts three new rows into your program. report zbctcb98. write: / 'hello world'. (Save, Generate, Execute) In 3.x you can set your Editor mode in menu /Settings/Editor mode (in 2.x this is the only editor mode) If you choose Command mode you get an extra input line, where you can execute commands. Position the cursor here and press F1 for the available commands. My favorite one is the HELP command.Try out the HELP WRITE command. What you see now is a hypertext (clickable). I know that this online help is an online
meaningless chaos for the first time, but sooner or later it should become your reference.
The title of the report should not be printed in your list. Define an integer variable with a value of 2. Display the text 'example' and then this variable. Create an integer input parameter (Default value 20). Display the 'hello world' in the same row, the input parameter tells in wich column. Check that the the value of your input paramater is between 0 and 40. On the screen you should get something like this: example
2
hello world
Solution
Second variant for 'hello world' report zbctcb98 no standard page heading. parameters: column type i default 20. data: num2 type i value 2. check column ge 0 and column le 40. write: / 'example', num2, at column 'hello world' intensified off. Try out different values for column. You should notice that the display of num2 is right-justified. Check the output characteristics of other data types!
Modify the second example. Display a title row with page number and date. Put a counter before the rows and display a header line at the top of each page. Format the numbers so, that just 4 places are displayed. (the value of the parameter is 40 to get a nice list) The list should look like this one: Page: 1 Counter 1 2 3 4 Solution
Text example example example example
Third Example Number 2 2 2 2
18.03.1997 Introduction hello world hello world hello world hello world
It's the first formatted list report zbctcb98 no standard page heading line-size 90 line-count 120. parameters: column type i default 40. data: num2 type i value 2. data: counter type i value 1. check column ge 0 and column le 40. do. write: /2(4) counter, 15 'example', 23(4) num2, at column 'hello world' intensified off. add 1 to counter. check counter eq 161. exit. enddo. top-of-page. write: /2 'Page:', 8(4) sy-pagno, 40 'Third Example', 70 sy-datum. uline. write: /2 'Counter', 15 'Text', 23 'Number', at column 'Introduction' intensified off. uline. Try out the SHOW SY command in the editor command line. The SHOW command describes the fields of database tables, views and structures. With the SHOW SY command you can see the fields of the SYSTEM structure. These fields are updated at run time. In this example we used the fields sy-pagno and sy-datum.
Read a logical database (you must have data in those tables, now LFA1), fill up an internal table. Sort the data by a given field and then display the internal table. solution
Reading database tables - logical database report zbctcb98 no standard page heading. tables: lfa1. data: begin of t occurs 0, linfr like lfa1-lifnr, name1 like lfa1-name1, end of t. start-of-selection. get lfa1. clear t. move-corresponding lfa1 to t. append t. end-of-selection. sort t by name1.
loop at t. write: / t-name1, t-lifnr. endloop.
Write the same report with a select statement. solution
Reading database tables - select report zbctcb98 no standard page heading. tables: lfa1. select * from lfa1 order by name1. write: / lfa1-name1, ' ', lfa1-lifnr. endselect.
Useful System Adm. Utilities Autotransport Complete documentation to perform automatic transports. The developer mails the change request numbers to a technical user. The program collects these mails regularly and starts the imports for the the requested system. In this way the transports are automatically imported, the system administrator checks only the logs. The program can be scheduled as a job to run at anytime. Documentation is written in German, there is a concise English translation. Sendmessage This is a modification of the standard system. It implements the 'send message' function. The system administrator (or user) can send individual messages to one or more users. The chosen users will receive the message immediately in a pop-up window. ZBCTCB89.TXT The report creates a user list of the system. Useful in a multi-client development system. Fields: user-id, client, printer, profiles ZBCMKZ17.TXT Report and Transaction Starter. It shows an individual list of reports/trans. to start It's like User Menu, but you can also start reports with it (and much faster). Needs a table with user name and favourite reports/ transactions. ZPROG001.TXT Fills up a database table with records from a UNIX file.
BC Tips&Tricks You run a report as job and it does not want to finish. You might want to debug the report to find out what causes this 'neverending' run. 1. Start the report as a job. 2. Call transaction 'SM50' 3. Put the cursor on the workprocess which runs your job. 4. Push button 'Debugging'. You will get a session where you can debug the running job. Be careful! When the job is in the middle of a SELECT it will dump when you try to debug. If you start the report online and already opened a second session, you can start transaction 'SM04'. Click on the user-id and choose the session you want to debug. After pressing the button 'Debugging', the choosen session jumps in debug mode. Infosystem You forgot the name of an SAP table or program, but found one which is quite similar to it. I found the easiest way to use the development class as search field. Look for it in the attributes of the known program/table. Then go to the infosystem in the development workbench. Select the object type you are looking for. Set only the development class on the selection screen. Program analysis You want to find out which tables are used in a standard program, but the source code is too complex to analyze or debug. Switch on the SQL trace and run the program. Later you can find all the used tables in the trace log.
SAP R/3 3.0d Useful System Adm. Transactions AL01 SAP Alert Monitor AL02 Database alert monitor AL03 Operating system alert monitor AL04 Monitor call distribution AL05 Monitor current workload AL06 Performance: Upload/Download AL07 EarlyWatch Report AL08 Users Logged On AL09 Data for database expertise AL10 Download to Early Watch AL11 Display SAP Directories AL12 Display table buffer (Exp. session) AL13 Display Shared Memory (Expert mode) AL15 Customize SAPOSCOL destination AL16 Local Alert Monitor for Operat.Syst. AL17 Remote Alert Monitor f.Operat. Syst. AL18 Local File System Monitor AL19 Remote File System Monitor AL20 EarlyWatch Data Collector List CREF Cross-reference DB01 Analyze exclusive lockwaits DB02 Analyze tables and indexes DB03 Parameter changes in database DB11 Early Watch Profile Maintenance DB12 Overview of Backup Logs DB13 Database administration calendar DB14 Show SAPDBA Action Logs DMIG Start Transaction for Data Migration RLOG Data migration logging RZ01 Job Scheduling Monitor RZ02 Network Graphics for SAP Instances RZ03 Presentation, Control SAP Instances RZ04 Maintain SAP Instances RZ06 Alerts Thresholds Maintenance RZ08 SAP Alert Monitor RZ10 Maintenance of profile parameters RZ11 Profile parameter maintenance SA38 ABAP/4 Reporting SARA Archive management SARL Call of ArchiveLink Monitor SARP Reporting (Tree Structure): Execute SART Display Reporting Tree SCC0 Client Copy SCC1 Client Copy - Special Selections
SCC2 Client transport SCC3 Client Copy Log SCC4 Client administration SCC5 Client Delete SCOM SAPcomm: Configuration SCPF Generate enterprise IMG SCU0 Table Analyses And Comparison SCU1 Table Comparison - Export to Tape SCU2 Table Comparison Against Tape SCU3 Table History SE01 Transport and Correction System SE02 Environment Analyzer SE03 Transport Utilities SE06 Set up Workbench Organizer SE07 Transport System Status Display SICK Installation Check SM01 Lock Transactions SM02 System Messages SM04 User Overview SM12 Display and Delete Locks SM13 Display Update Records SM21 System log SM23 System Log Analysis SM28 Installation Check SM30 Call Up View Maintenance SM31 Table maintenance SM35 Batch Input Monitoring SM36 Batch request SM37 Background job overview SM38 Queue Maintenance Transaction SM39 Job analysis SM49 Execute Logical Commands SM50 Work Process Overview SM51 List of SAP Servers SM54 TXCOM maintenance SM55 THOST maintenance SM56 Number Range Buffer SM58 Asynchronous RFC Error Log SM59 RFC Destinations (Display/Maintain) SM60 Borrow/Return Objects SM63 Display/Maintain Operating Mode Sets SM64 Release of an event SM65 Background Processing Analysis Tool SM66 Systemwide Work Process Overview SM67 Job scheduling SM68 Job administration SM69 Display/Maintain Logical Commands SMEN Dynamic menu SMGW Gateway Monitor SMLG Maintain Logon Group
SMLI Language import utility SMLT Language transport utility SP12 TemSe Administration SPAD Spool Management ST01 System Trace ST02 Setups/Tune Buffers ST03 Performance,SAP Statistics, Workload ST04 Select activity of the databases ST05 SQL Trace ST06 Operating System Monitor ST07 Application monitor ST08 Network Monitor ST09 Network Alert Monitor ST10 Table Call Statistics ST11 Display Developer Traces ST22 ABAP/4 Runtime Error Analysis ST62 Create industry short texts STAT Local transaction statistics SU01 Maintain User SU02 Maintain Authorization Profiles SU03 Maintain Authorizations SU10 Mass changes to User Master SU11 Maintain Authorizations SU12 Mass Changes to User Master Records SU20 Maintain Authorization Fields SU21 Maintain Authorization Objects SU22 Auth. object usage in transactions SU30 Total checks in the area of auth.
System fields
ABCDE APPLI BATCH BATZD BATZM BATZO BATZS BATZW BINPT BREP4 BSPLD CALLD CALLR CCURS CCURT CDATE COLNO CPAGE CPROG CTABL CTYPE CUCOL CUROW DATAR DATLO DATUM DATUT DAYST DBCNT DBNAM DBSYS DCSYS DSNAM DYNGR DYNNR FDAYW FDPOS FMKEY HOST INDEX LANGU LDBPG LILLI LINCT
Constant: Alphabet (A,B,C,...) SAP applications Background active (X) Background SUBMIT: Daily Background SUBMIT: Monthly Background SUBMIT: Once Background SUBMIT: Immediately Background SUBMIT: Weekly Batch input active (X) Background SUBMIT: Root name of request report Background SUBMIT: List output to spool CALL mode active (X) Print: ID for print dialog function Rate specification/result field (CURRENCY CONVERT) Table rate from currency conversion Date of rate from currency conversion Current column during list creation Current page number Runtime: Main program Exchange rate table from currency conversion Exchange rate type 'M','B','G' from CURRENCY CONVERSION Cursor position (column) Cursor position (line) Flag: Data received Local date for user System: Date Global date related to UTC (GMT) Summertime active ? ('daylight saving time') Number of elements in edited dataset with DB operations Logical database for ABAP/4 program System: Database system System: Dialog system Runtime: Name of dataset for spool output Screen group of current screen Number of current screen Factory calendar weekday Location of a string Current function code menu Host Number of loop passes SAP logon language key Program: ABAP/4 database program for SY-DBNAM Number of current list line Number of list lines
LINNO LINSZ LISEL LISTI LOCDB LOCOP LOOPC LSIND LSTAT MACDB MACOL MANDT MARKY MAROW MODNO MSGID MSGLI MSGNO MSGTY MSGV1 MSGV2 MSGV3 MSGV4 OPSYS PAART PAGCT PAGNO PDEST PEXPI PFKEY PLIST PRABT PRBIG PRCOP PRDSN PREFX PRIMM PRNEW PRREC PRREL PRTXT REPID RTITL SAPRL SCOLS
Current line for list creation Line size of list Interact.: Selected line Number of current list line Local database exists Local database operation Number of LOOP lines at screen step loop Number of secondary list Interact.: Status information for each list level Program: Name of file for matchcode access Number of columns from SET MARGIN Client number from SAP logon Current line character for MARK No. of lines from SET MARGIN statement Number of alternative modi Message ID Interact.: Message line (line 23) Message number Message type (E,I.W,...) Message variable Message variable Message variable Message variable System: Operating system Print: Format Page size of list from REPORT statement Runtime: Current page in list Print: Output device Print: Spool retention period Runtime: Current F key status Print: Name of spool request (list name) Print: Department on cover sheet Print: Selection cover sheet Print: Number of copies Print: Name of spool dataset ABAP/4 prefix for background jobs Print: Print immediately Print: New spool request (list) Print: Recipient Print: Delete after printing Print: Text for cover sheet Program: Name of ABAP/4 program Print: Report title of program to be printed System: SAP Release Columns on screen
SLSET SPONO SPONR SROWS STACO STARO STEPL SUBRC SUBTY SYSID TABIX TCODE TFDSN TFILL TIMLO TIMUT TITLE TLENG TMAXL TNAME TOCCU TPAGI TSTLO TSTUT TTABC TTABI TVAR0 TVAR1 TVAR2 TVAR3 TVAR4 TVAR5 TVAR6 TVAR7 TVAR8 TVAR9
Name of selection set Runtime: Spool number for list output
Runtime: Spool number from TRANSFER statement Lines on screen Interact.: List displayed from column Interact.: Page displayed from line Number of LOOP line at screen step Return value after specific ABAP/4 statements ABAP/4: Call type for SUBMIT System: SAP System ID Runtime: Current line of an internal table Session: Current transaction code Runtime: Dataset for data extracts Current number of entries in internal table Local time for user Global time related to UTC (GMT) Title of ABAP/4 program Line width of an internal table Maximum number of entries in internal table (?) Name of internal table after an access (?) OCCURS parameter with internal tables Flag indicating roll-out of internal table to paging area (?) Timestamp (date and time) for user Timestamp (date and time) related to UTC (GMT) Number of line last read in an internal table (?) Offset of internal table in roll area (?) Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Runtime: Text variable for ABAP/4 text elements Time difference from 'Greenwich Mean Time' (UTC) in TZONE seconds UCOMM Interact.: Command field function entry ULINE Constant: Underline (---------...) UNAME Session: SAP user from SAP logon UZEIT System: Time VLINE Constant: Vertical bar WAERS T001: Company code currency after reading B segment
WILLI WINCO WINDI WINRO WINSL WINX1 WINX2 WINY1 WINY2 WTITL XCODE ZONLO
Number of current window line Cursor position in window (column) Index of current window line Cursor position in window (line) Interact.: Selected window line Window coordinate (column left) Window coordinate (column right) Window coordinate (line left) Window coordinate (line right) Standard page header indicator Extended command field Time zone of user
Tips&Tricks How to customize the display options? In the right upper corner of your SAP window you can find a symbol. Click on it. In the Options you can change the colors, text fonts. Hide or display various elements of the standard SAP window. There are two important settings. In the Cursor folder enable AutoTAB. This means that after filling an 8 character field with eight character you don't have to push the TAB button to jump to the next field, the system automatically puts the cursor there. In the General folder you can deselect the statusbar. This enlarges the work area of your window. When you receive a warning this comes in a small window and you must press the button to return to your work. But you don't see the time, system and session number in the status line any more. With the Default Size options you can easily change your window back to the default size.
Office Tips You want to send an urgent message to an SAP user. When you send your mail choose the option Express. The user receives your letter immediately and a popup window informs him that he has an express mail in his mailbox. Go /Office/Outbox/Edit and create a mail. In the Extras menu you can find the Insert URL function. Fill out the fields and press Ok. This puts a text in your letter which referes to a Web page (same as an html link). If your network has Internet access, when the receiver clicks on the text the Web browser starts and loads the refered Web page automatically. Printer problems Printing does not work in SAP. There is a printer definition for your local printer, but it does not work. Presuming that you use the program SAPLPD on your computer. Boot your computer and start only the SAPLogon and the SAPLpd program. Delete all of your old print jobs in the SAP system (Transaction SP01).Generate only one new print job. Check that there is enough resource in your computer. Check the free memory (Win 3.1x) and the free disk space (The lists are temporarily saved on your disk). Open the SAPLPD and read the print log in the window. The printer definition must correspond with the parameters shown here. Check that the standard printer is on the same lpt (Win 3.1: Control panel, Printer) as defined for the printer (usually lpt1). In Transaction SP01 read the protocol of your print job. Do not generate new print jobs! Wait till the SAP system changes the status of the print job. If you can not find the print job in SP01 anymore, then the print job was successfully printed out. If it didn't come out on your printer and the SAPLpd didn't indicate an incoming print job, then the connection was realised with another PC. Then SAP printer definition you used, does not correspond with your computer. Use icons in your mail Put the code @nn@ in the title or in the body of your SAP mail where nn is a number, for example 01 ( @01@ ). The system will look up the icon and displays it in the mail. The next program lists the icon codes, their length with other information and the corresponding icons. REPORT ZMDICON2. TABLES: ICON. DATA: ICONE LIKE ICON-ID. DATA: BUFFER(4), FF LIKE ICON-NAME. INCLUDE . FIELD-SYMBOLS: . WRITE : / 'Icon Id L B S M F Name der Icone'. ULINE. WRITE : / 'Icone Id Länge F für Funktionstaste geeignet'. WRITE : / ' M für Nachricht (message) geeignet'. WRITE : / ' S für Statusanzeige geeignet'. WRITE : / ' B für Drucktaste (button) geeignet'. ULINE. SELECT * FROM ICON.
MOVE: ICON-ID TO ICONE, ICON-NAME TO FF. ASSIGN (FF) TO . MOVE TO BUFFER. * write: / buffer, , 20 icon-id,icon-name,icon-oleng, WRITE: / BUFFER. * write at (4) . WRITE: 20 '@',21 ICON-ID+1(2),23 '@',ICON-OLENG, ICON-BUTTON,ICON-STATUS,ICON-MESSAGE,ICON-FUNCTION, ICON-NAME. ENDSELECT.
SAP ABAP Performance Tuning Tips & Tricks Introduction Page 1 of 8
Need for performance tuning In this world of SAP programming, ABAP is the universal language. In most of the projects, the focus is on getting a team of ABAP programmers as soon as possible, handing over the technical specifications to them and asking them to churn out the ABAP programs within the “given deadlines”. Often due to this pressure of schedules and deliveries, the main focus of making a efficient program takes a back seat. An efficient ABAP program is one which delivers the required output to the user in a finite time as per the complexity of the program, rather than hearing the comment “I put the program to run, have my lunch and come back to check the results”.
Leaving aside the hyperbole, a performance optimized ABAP program saves the time of the end user, thus increasing the productivity of the user, and in turn keeping the user and the management happy. This tutorial focuses on presenting various performance tuning tips and tricks to make the ABAP programs efficient in doing their work. This tutorial also assumes that the reader is well versed in all the concepts and syntax of ABAP programming. NOTE: Performance of a program is also often limited due to hardware restrictions, which is out of the scope of this article. ================================================================================
Use of selection criteria Instead of selecting all the data and doing the processing during the selection, it is advisable to restrict the data to the selection criteria itself, rather than filtering it out using the ABAP code. Not recommended Select * from zflight. Check : zflight-airln = ‘LF’ and zflight-fligh = ‘BW222’. Endselect. Recommended Select * from zflight where airln = ‘LF’ and fligh = ‘222’. Endselect. One more point to be noted here is of the select *. Often this is a lazy coding practice. When a programmer gives select * even if one or two fields are to be selected, this can significantly slow the program and put unnecessary load on the entire system. When the application server sends this request to the database server, and the database server has to pass on the entire structure for each row back to the application server. This consumes both CPU and networking resources, especially for large structures. Thus it is advisable to select only those fields that are needed, so that the database server passes only a small amount of data back. Also it is advisable to avoid selecting the data fields into local variables as this also puts unnecessary load on the server. Instead attempt must be made to select the fields into an internal table.
Use of aggregate functions Use the already provided aggregate functions, instead of finding out the minimum/maximum values using ABAP code. Not recommended Maxnu = 0. Select * from zflight where airln = ‘LF’ and cntry = ‘IN’. Check zflight-fligh > maxnu.
Maxnu = zflight-fligh. Endselect.
Recommended Select max( fligh ) from zflight into maxnu where airln = ‘LF’ and cntry = ‘IN’. The other aggregate functions that can be used are min (to find the minimum value), avg (to find the average of a Data interval), sum (to add up a data interval) and count (counting the lines in a data selection).
Use of Views instead of base tables Many times ABAP programmers deal with base tables and nested selects. Instead it is always advisable to see whether there is any view provided by SAP on those base tables, so that the data can be filtered out directly, rather than specially coding for it. Not recommended Select * from zcntry where cntry like ‘IN%’. Select single * from zflight where cntry = zcntry-cntry and airln = ‘LF’. Endselect.
Recommended Select * from zcnfl where cntry like ‘IN%’ and airln = ‘LF’. Endselect.
Use of the into table clause of select statement Instead of appending one record at a time into an internal table, it is advisable to select all the records in a single shot. Not recommended Refresh: int_fligh. Select * from zflight into int_fligh. Append int_fligh. Clear int_fligh. Endselect.
Recommended Refresh: int_fligh.
Select * from zflight into table int_fligh.
Modifying a group of lines of an internal table Use the variations of the modify command to speed up this kind of processing. Not recommended Loop at int_fligh. If int_fligh-flag is initial. Int_fligh-flag = ‘X’. Endif. Modify int_fligh. Endloop.
Recommended Int_fligh-flag = ‘X’. Modify int_fligh transporting flag where flag is initial.
Use of binary search option When a programmer uses the read command, the table is sequentially searched. This slows down the processing. Instead of this, use the binary search addition. The binary search algorithm helps faster search of a value in an internal table. It is advisable to sort the internal table before doing a binary search. Binary search repeatedly divides the search interval in half. If the value to be searched is less than the item in the middle of the interval, the search is narrowed to the lower half, otherwise the search is narrowed to the upper half. Not Recommended Read table int_fligh with key airln = ‘LF’.
Recommended Read table int_fligh with key airln = ‘LF’ binary search.
Appending 2 internal tables Instead of using the normal loop-endloop approach for this kind of programming, use the variation of the append command. Care should be taken that the definition of both the internal tables should be identical. Not Recommended Loop at int_fligh1.
Append int_fligh1 to int_fligh2. Endloop.
Recommended Append lines of int_fligh1 to int_fligh2.
Using table buffering Use of buffered tables is recommended to improve the performance considerably. The buffer is bypassed while using the following statements
1. 2. 3. 4.
Select distinct Select … for update Order by, group by, having clause Joins
Use the Bypass buffer addition to the select clause in order to explicitly bypass the buffer while selecting the data.
Use of FOR ALL Entries Outer join can be created using this addition to the where clause in a select statement. It speeds up the performance tremendously, but the cons of using this variation are listed below
1. Duplicates are automatically removed from the resulting data set. Hence care should be taken that the unique key of the detail line items should be given in the select statement.
2. If the table on which the For All Entries IN clause is based is empty, all rows are selected into 3.
the destination table. Hence it is advisable to check before-hand that the first table is not empty. If the table on which the For All Entries IN clause is based is very large, the performance will go down instead of improving. Hence attempt should be made to keep the table size to a moderate level.
Not Recommended Loop at int_cntry. Select single * from zfligh into int_fligh where cntry = int_cntry-cntry. Append int_fligh. Endloop.
Recommended Select * from zfligh appending table int_fligh
For all entries in int_cntry Where cntry = int_cntry-cntry.
Proper structure of Where Clause When a base table has multiple indices, the where clause should be in the order of the index, either a primary or a secondary index. To choose an index, the optimizer checks the field names specified in the where clause and then uses an index that has the same order of the fields. One more tip is that if a table begins with MANDT, while an index does not, there is a high possibility that the optimizer might not use that index. In certain scenarios, it is advisable to check whether a new index can speed up the performance of a program. This will come handy in programs that access data from the finance tables.
Proper use of Move statement Instead of using the move-corresponding clause it is advisable to use the move statement instead. Attempt should be made to move entire internal table headers in a single shot, rather than moving the fields one by one.
Proper use of Inner Join When multiple SAP tables are logically joined, it is always advisable to use inner join to read the data from them. This certainly reduces the load on the network. Let us take an example of 2 tables, zairln and zflight. The table zairln has the field airln, which is the airline code and the field lnnam, which is the name of the airline. The table zflight has the field airln, the airline code and other fields which hold the details of the flights that an airline operates. Since these 2 tables a re logically joined by the airln field, it is advisable to use the inner join. Select a~airln a~lnnam b~fligh b~cntry into table int_airdet From zairln as a inner join zflight as b on a~airln = b~airln. In order to restrict the data as per the selection criteria, a where clause can be added to the above inner join.
Use of ABAP Sort instead of Order By The order by clause is executed on the database server, while the sort statement is executed on the application server. Thus instead of giving the order by in the select clause statement, it is better to collect the records in an internal table and then use the sort command to sort the resulting data set.
Tools provided for Performance Analysis Following are the different tools provided by SAP for performance analysis of an ABAP object
1. Run time analysis transaction SE30 This transaction gives all the analysis of an ABAP program with respect to the database and the nondatabase processing.
2. SQL Trace transaction ST05
The trace list has many lines that are not related to the SELECT statement in the ABAP program. This is because the execution of any ABAP program requires additional administrative SQL calls. To restrict the list output, use the filter introducing the trace list. The trace list contains different SQL statements simultaneously related to the one SELECT statement in the ABAP program. This is because the R/3 Database Interface - a sophisticated component of the R/3 Application Server - maps every Open SQL statement to one or a series of physical database calls and brings it to execution. This mapping, crucial to R/3s performance, depends on the particular call and database system. For example, the SELECT-ENDSELECT loop on the SPFLI table in our test program is mapped to a sequence PREPARE-OPEN-FETCH of physical calls in an Oracle environment. The WHERE clause in the trace list's SQL statement is different from the WHERE clause in the ABAP statement. This is because in an R/3 system, a client is a selfcontained unit with separate master records and its own set of table data (in commercial, organizational, and technical terms). With ABAP, every Open SQL statement automatically executes within the correct client environment. For this reason, a condition with the actual client code is added to every WHERE clause if a client field is a component of the searched table. To see a statement's execution plan, just position the cursor on the PREPARE statement and choose Explain SQL. A detailed explanation of the execution plan depends on the database system in use.
View more...
Comments