<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7792878382309608254</id><updated>2012-02-16T01:40:48.945-08:00</updated><category term='APPEND STRUCTURE'/><category term='TABLES IN ABAP DICTIONARY'/><category term='OPTIMZATION'/><category term='INDEXING  AND BUFFERING'/><category term='DEPENDENCIES'/><category term='SELECTION METHOD ON SEARCH HELP IN ABAP'/><category term='DATA BASE ACCESS'/><category term='ABAP VIEWS'/><category term='SEARCH HELP IN ABAP'/><category term='INNER AND OUTER JOINS IN ABAP'/><category term='DATA BASE INDEX'/><category term='LOCK OBJECTS'/><category term='CONSISTENCY'/><category term='SAP TABLES'/><category term='INTRODUCTIOIN'/><category term='CHANGES TO DATA BASE TABLES'/><category term='TABLE TYPES IN ABAP'/><title type='text'>ABAP DICTIONARY</title><subtitle type='html'>SAP,ABAP PROGRAMMING,Reports,Bdc,SAP Scripts,Smart Forms.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-4440327869199536512</id><published>2008-06-25T06:28:00.000-07:00</published><updated>2010-01-05T07:17:00.013-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOCK OBJECTS'/><title type='text'>LOCK OBJECTS IN SAP ABAP DICTIONARY</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(102, 0, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;OVERVIEW&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt; Lock objects are use in SAP to avoid the inconsistancy at the time of data is being insert/change into database.&lt;br /&gt;&lt;br /&gt;SAP Provide three type of Lock objects.&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;" class="jive-dash"&gt;&lt;li&gt;Read Lock(Shared Locked) &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;    protects read access to an object. The read lock allows other  transactions read access but not write access to  the locked area of  the table&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;" class="jive-dash"&gt;&lt;li&gt;Write Lock(exclusive lock) &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;    protects write access to an object. The write lock allows other  transactions neither read nor write access to   the locked area of the  table.&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;" class="jive-dash"&gt;&lt;li&gt;Enhanced write lock (exclusive lock without cumulating) &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;   works like a write lock except that the enhanced write lock also  protects from further accesses from the   same transaction.&lt;br /&gt;&lt;br /&gt;You can create a lock on a object of SAP thorugh transaction SE11 and enter any meaningful name start with EZ Example EZTEST_LOCK.&lt;br /&gt;&lt;br /&gt;Use:&lt;br /&gt;&lt;br /&gt;you can see in almost all transaction when you are open an object in Change mode SAP could not allow to any other user to open the same object in change mode.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;in HR when we are enter a personal number in master data maintainance screen SAP can't allow to any other user to use same personal number for changes.&lt;br /&gt;&lt;br /&gt;Technicaly:&lt;br /&gt;&lt;br /&gt;When you create a lock object System automatically creat two function module.&lt;br /&gt;&lt;br /&gt;1. ENQUEUE_&lt;lockobject&gt;. to insert the object in a queue.&lt;br /&gt;2. DEQUEUE_&lt;lockobject&gt;. To remove the object is being queued through above FM.&lt;br /&gt;&lt;br /&gt;You have to use these function module in your program.&lt;br /&gt;&lt;br /&gt;For sample program check in transaction /ABAPDOCU.&lt;br /&gt;&lt;br /&gt;RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/aggregate-functions-usage-in-abap.html"&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 0);"&gt;AGGREGATE FUNCTIONS USAGE IN ABAP PROGRAMMS&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/lockobject&gt;&lt;/lockobject&gt;n thirteen posts series as given below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/data-ports-we21-in-idoc.html"&gt;LESSON 1 DATA PORTS IN IDOC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/defining-partner-profile-we20.html"&gt;LESSON 2 DEFINING PARTNER PROFILE FOR IDOC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/partner-profiles-and-ports.html"&gt;LESSON 3 PARTNE RPROFILES AND PORTS IN IDOC &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/converting-data-into-idoc-segment.html"&gt;LESSON 4 CONVERTING DATA INTO IDOC SEGMENTS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/developing-outbound-idoc-function.html"&gt;LESSON 5 DEVELOPING OUTBOUND IDOC FUNCTION &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/creation-e-idoc-data.html"&gt;LESSON 6 CREATION OF IDOC DATA &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/idoc-design-and-processing.html"&gt;LESSON 7 IDOC DESIGN AND PROCESSING &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/dispatching-ale-idocs-for-change.html"&gt;LESSON 8 DISPATCHING IDOC &lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-4440327869199536512?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/4440327869199536512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=4440327869199536512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/4440327869199536512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/4440327869199536512'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/lock-objects-in-sap-abap-dictionary.html' title='LOCK OBJECTS IN SAP ABAP DICTIONARY'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-6518742978849189969</id><published>2008-06-18T05:08:00.000-07:00</published><updated>2010-01-05T07:17:26.858-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE ACCESS'/><title type='text'>Aggregate Functions usage in ABAP Program</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;You can use aggregate functions (COUNT, SUM, MAX, MIN, AVG) to perform calculations using the DBMS. Only use aggregate functions if they significantly reduce the quantity of data records to be transferred. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Aggregate functions are usually used used with a GROUP BY clause. SQL statements that contain aggregate functions bypass R/3 table buffers. (Note that this can be a disadvantage if tables are buffered.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Field values are processed differently, depending on whether they are in ABAP or at database level. The database uses a different method than ABAP for rounding data (for example, when converting F to I). The database recognizes the value NULL. ABAP does not recognize the value NULL. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=""&gt;For the aggregate function AVG, use data type F (number with floating point) for the target field. For the aggregate function SUM, make the data type of the target field longer than the data type of the source field, to allow for overflow.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Using Having Clause in a sql query:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To apply a logical condition to the groups defined in the GROUP BY clause, use HAVING with a SELECT statement. The database determines the resulting quantity, that is, the data quantity to be transferred depends on the selectivity of the HAVING clause. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Using HAVING clauses is similar to using aggregate functions. HAVING clauses create an extra load on the database. Therefore, only use HAVING clauses if they significantly reduce the quantity of data records to be transferred. Before you use a HAVING clause, check whether the condition can be specified in the SELECT clause instead.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-size:100%;" &gt;  Using Array Fetch:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;For SELECT .. ENDSELECT and ARRAY FETCH, the same number of data records must be transferred from the database server to the application server. Since data records are transferred in 32 KB blocks, the transfer load (that is, the number of fetches) is the same for both variants.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="DE"&gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;However, an ARRAY FETCH is preferable to a SELECT ... ENDSELECT loop, because data records are transferred per record from the database interface to the ABAP program in a SELECT .. ENDSELECT. Whereas, in an ARRAY FETCH, the data records are transferred to the ABAP program in a block.&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"   lang="DE"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-size:100%;" &gt;  Using up to n rows in sql query:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;There are two ways to read a fixed number of data records. You can transfer the data records to the application server using SELECT … ENDSELECT and then determine if the required number of rows has been read. However, using SELECT … UP TO n ROWS is preferable, because only the requested number of data records are transferred from the database to the application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;br /&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="DE"&gt;n&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;In the second version, the UP TO n ROWS addition ensures that only the required data quantity is read from the database and transferred to the database interface.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;68&lt;br /&gt;&lt;span style=";font-size:100%;color:black;"   lang="DE"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;  RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/accessing-individual-tables-in-abap.html"&gt;&lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;ACCESSING INDIVIDUAL TABLES IN SAP ABAP&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/ale-change-pointers.html"&gt;LESSON 9 ALE IDOC CHANGE POINTERS &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/01/sending-idocs-via-rsnasted-standard-r3.html"&gt;LESSON 10 SENDING IDOC VIA STANDARD R3 SYSTEM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/12/idocs-outbound-trigger-part-two.html"&gt;LESSON 11 IDOC OUTBOUND TEIGGER PART TWO &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/12/idoc-out-bound-triggers.html"&gt;LESSON 12 IDOC OUTBOUND TRIGGER PART ONE &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/12/abap-idocs-inbound-basic-tools-3.html"&gt;LESSON 13 ABAP IDOC INBOUND BASIC TOOLS&lt;/a&gt;&lt;br /&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-6518742978849189969?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/6518742978849189969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=6518742978849189969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/6518742978849189969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/6518742978849189969'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/aggregate-functions-usage-in-abap.html' title='Aggregate Functions usage in ABAP Program'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-1614786885833436134</id><published>2008-06-12T05:47:00.000-07:00</published><updated>2010-01-05T07:18:15.936-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE ACCESS'/><title type='text'>Accessing individual tables in abap dictionary</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;SELECT FOR ALL ENTRIES:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;With SELECT FOR ALL ENTRIES, you can divide SELECT statements into loops. This variant enables you to create a JOIN between an internal table and a database table. In the example above, only the records from table KKNA1 are read that have customer numbers in the internal table g_itab_vvbak.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The following &lt;b style=""&gt;problems&lt;/b&gt; occur with SELECT FOR ALL ENTRIES: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style="color:black;"&gt;You cannot have an empty driver table.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; If the driver table is empty, selection is not limited. Note that if the WHERE clause contains conditions that do not refer to the internal driver table, these conditions are not evaluated either. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style="color:black;"&gt;Duplicate table entries must be deleted&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; from the internal driver table before the SELECT FOR ALL ENTRIES is executed. If they are not deleted, identical data is read unnecessarily from the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If SELECT FOR ALL ENTRIES is used, SQL statements are divided into several SELECT statements by the database interface. The individual SELECT statements are processed on the database and the results are buffered in the database interface. The database interface eliminates duplicate data records from the resulting set, and transfers the overall results to ABAP. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Each SELECT statement processed on the database is executed as a concatenation of individual accesses (for example, index range scans or index unique scans). Concatenation is performed over the entries in the internal driver table. Since SELECT FOR ALL ENTRIES can become very complex, you should avoid combining them with SELECT-OPTIONS or RANGES tables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Exactly how the WHERE clauses of individual SELECT statements are executed by the database depends on the type of database. The link is generated, for example, using an OR operation as IN list. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;USING RANGE:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;You can use RANGES tables in ABAP. You can define RANGES tables with the ABAP statements SELECT-OPTIONS and RANGES. These two statements implicitly define an internal table with the fields SIGN, OPTION , LOW and HIGH (see R/3 documentation). The end user at the selection screen dynamically fills a RANGES table defined with SELECT OPTION. The program determines how the RANGES table is filled. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The database interface converts the rows in a RANGES table so that they can be read by the DBMS, and links them with OR. The SQL statement produced is then transferred to the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The RANGES table can contain rows with complex expressions (for example, BT =&gt; BETWEEN, CP =&gt; LIKE). The SQL statement that results from a RANGES table can therefore be complex and difficult for the DBMS to process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If the program determines how RANGES tables are filled, you must limit the number of entries. If the RANGES table is too large, a complex database statement is generated when the OR or IN list is evaluated. This statement may take a long time to be evaluated on the database. The maximum possible length of the database statement depends on the database (for example, with ORACLE 32 bit version, the maximum is 32 KB). If the maximum length is exceeded, an ABAP dump may be generated &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);font-size:100%;" &gt;  USING AGGREGATE FUNCTIONS:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;You can use aggregate functions (COUNT, SUM, MAX, MIN, AVG) to perform calculations using the DBMS. Only use aggregate functions if they significantly reduce the quantity of data records to be transferred. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Aggregate functions are usually used used with a GROUP BY clause. SQL statements that contain aggregate functions bypass R/3 table buffers. (Note that this can be a disadvantage if tables are buffered.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Field values are processed differently, depending on whether they are in ABAP or at database level. The database uses a different method than ABAP for rounding data (for example, when converting F to I). The database recognizes the value NULL. ABAP does not recognize the value NULL. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;For the aggregate function AVG, use data type F (number with floating point) for the target field. For the aggregate function SUM, make the data type of the target field longer than the data type of the source field, to allow for overflow.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;  65&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;RELATED POST&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/using-data-base-hints-in-abap-reports.html"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;USING DATA HINTS IN ABAP SQL QUARY&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The links day wise are&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-1.html"&gt;SAP SCRIPTS PART 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-2.html"&gt;SAP SCRIPTS PART 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-3.html"&gt;SAP SCRIPTS PART 3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-4.html"&gt;SAP SCRIPTS PART 4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-5.html"&gt;SAP SCRIPTS PART 5&lt;/a&gt;&lt;br /&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-1614786885833436134?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/1614786885833436134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=1614786885833436134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/1614786885833436134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/1614786885833436134'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/accessing-individual-tables-in-abap.html' title='Accessing individual tables in abap dictionary'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-3678525397457284688</id><published>2008-06-12T05:34:00.000-07:00</published><updated>2010-01-05T07:18:43.181-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE ACCESS'/><title type='text'>Using data base hints in abap reports</title><content type='html'>&lt;p class="MsoNormal"  style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If you want to force the database optimizer to choose a particular execution path, use database hints.&lt;span style=""&gt;  &lt;/span&gt;In R/3 Releases before 4.5A, database hints can only be used in the respective database-specific SQL dialects (native SQL in the parentheses EXEC SQL. … ENDEXEC.).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="lucida grande" style="text-align: justify; font-family: courier new; font-weight: bold;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"  style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;As of R/3 Release 4.5A, you can use database hints directly from OPEN SQL. To do this, add the addition %_HINTS &lt;i style=""&gt;DBMS&lt;/i&gt; ‘&lt;i style=""&gt;DBHINT&lt;/i&gt;’ to the end of the SQL statement. Under &lt;i style=""&gt;DBMS&lt;/i&gt;, enter the applicable database system (for example, ORACLE, INFORMIX). Under &lt;i style=""&gt;DBHINT&lt;/i&gt;, enter the relevant database-specific hint.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="lucida grande" style="text-align: justify; font-family: courier new; font-weight: bold;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"  style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If the hint cannot be interpreted by the database system, it is treated as a comment and does not affect the execution of database statements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="courier new" style="text-align: justify; font-weight: bold; font-family: courier new;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal"  style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;A database hint should be incorporated into an SQL statement only as a last option (regardless of whether it is formulated in native SQL or OPEN SQL). Database hints are database-specific. If you replace the DBMS, you must change all the SQL statements that have database hints (and document your changes).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-weight: bold; font-family: courier new;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"  style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Database hints ignore the database optimizer's strategy of dynamically making selections according to table and index growth and the selectivity of fields. Therefore, an index that is good today could be bad tomorrow.&lt;/span&gt;&lt;/p&gt;&lt;div  style="text-align: justify; font-weight: bold;font-family:verdana;"&gt;&lt;span style="color: rgb(153, 51, 0);font-size:100%;" &gt;Reducing the records to be transfered from SAP Dictionary&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To reduce the number of data records to be transferred, for each SQL statement you must specify a WHERE clause that is as selective as possible. A SELECT statement without a WHERE condition is an indication of a design error in the program. You must ensure that the number of selected records remains constant with time, especially when selecting on transaction tables (for example, BKPF, BSEG, COBK, COEP, LIPK, MKPF, VBAK, VBAP).&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal"  style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" face="lucida grande" style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-family: courier new; font-weight: bold;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To reduce the amount of data to be transferred, do not formulate conditions for selecting data using a CHECK statement within a SELECT … ENDSELECT. Instead, formulate conditions as part of a WHERE clause.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="verdana" style="text-align: justify; font-family: courier new; font-weight: bold;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Always specify all known conditions in the WHERE clause. Without one, the DBMS cannot use an index to optimize a statement. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="arial" style="text-align: justify; font-weight: bold; font-family: courier new;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To make reusing SQL statements possible, and thus to optimally utilize the DB SQL cache, always adhere to the order of fields specified in the ABAP Dictionary when formulating SELECT clauses and WHERE clauses.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="arial" style="text-align: justify; font-weight: bold; font-family: courier new;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"  style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:verdana;"&gt;&lt;span style="color: rgb(102, 0, 0);font-size:100%;" &gt;Reducing the columns to  be transfered in a program&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-family: courier new; font-weight: bold;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If you use SELECT *, it is often the case that more data than necessary is transferred from the database server to the application server. If you require the contents of only a few columns, always list the table fields individually in a field list. If the number of fields can be reduced by more than half, creating a field list makes sense.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div face="courier new" style="text-align: justify; font-weight: bold;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;In this context, the variant SELECT .. INTO TABLE itab PACKAGE SIZE n ENDSELECT is important. PACKAGE SIZE n means that the data is transferred to the internal table itab in packages of n records.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: courier new; font-weight: bold;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If you need different projections on a database table at different places in a program, read all the required fields at once from the database, buffer them in an internal table, and then distribute the data within the program.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;59&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;span style="font-size:100%;"&gt;related post&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;font-family:lucida grande;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/index-design-in-data-base-for-sap.html"&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;sap index design in data base &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"   lang="DE"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify; font-family: courier new; font-weight: bold;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" face="verdana" style="margin: 5pt 0in 5pt 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify; font-weight: bold;"&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-6.html"&gt;SAP SCRIPTS PART 6&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-7.html"&gt;SAP SCRIPTS PART 7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-8.html"&gt;SAP SCRIPTS PART 8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-9.html"&gt;SAP SCRIPTS PART 9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-10.html"&gt;SAP SCRIPTS PART 10&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-11.html"&gt;SAP SCRIPTS PART 11&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-12.html"&gt;SAP SCRIPTS PART 12&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-13.html"&gt;SAP SCRIPTS PART 13&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-3678525397457284688?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/3678525397457284688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=3678525397457284688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/3678525397457284688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/3678525397457284688'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/using-data-base-hints-in-abap-reports.html' title='Using data base hints in abap reports'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-2068649716626398001</id><published>2008-06-11T04:38:00.000-07:00</published><updated>2010-01-05T07:19:13.985-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE INDEX'/><title type='text'>Index design in data base for SAP</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Changing the index design of a table in the R/3 System can affect SQL statements other than the one you want to optimize. You must therefore ensure that other SQL statements are not negatively influenced by a new, changed or deleted index.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To do this, you must first establish which database views are referenced on the table. You can find this information in the where-used list in the ABAP Dictionary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Next, perform an object-related shared SQL area analysis. This means that you restrict the analysis to the relevant tables or database views, rather than finding inefficient SQL statements in the whole system. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;After that, change the index design (also activate the indexes, and update the table and index statistics). Immediately after you have changed the index design, reset the DB SQL cache (use the &lt;i style=""&gt;Reset &lt;/i&gt;pushbutton).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;Repeat the object-related DB SQL cache analysis approximately two days after changing the index design. Because you reset the DB SQL cache, only information is displayed for SQL statements executed after the index design was changed.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To establish in which database views the tables to be analyzed are used, go to the initial screen of the ABAP Dictionary. To do this, from the SAP standard menu choose &lt;i style=""&gt;Tools&lt;/i&gt; &lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;i style=""&gt;ABAP Workbench&lt;/i&gt; &lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;i style=""&gt;Dictionary&lt;/i&gt;, or use Transaction&lt;i style=""&gt; SE12.&lt;/i&gt; Enter the table name in the appropriate field, and choose &lt;i style=""&gt;Where-used list&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;In the dialog box that appears, select the checkbox &lt;i style=""&gt;Views &lt;/i&gt;and confirm your selection. A list appears, showing all the database views that use the table. You must perform the object-related DB SQL cache analysis for the database views and for the table itself.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To perform an object-related DB SQL cache analysis, first go to the initial screen of the database monitor. To do this, from the SAP standard menu choose &lt;i style=""&gt;Tools &lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style=";color:black;" &gt; Administration &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style=";color:black;" &gt; Monitor &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style=";color:black;" &gt; Performance &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style=";color:black;" &gt; Database &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style=";color:black;" &gt; Activity&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;, or use Transaction &lt;i style=""&gt;ST04&lt;/i&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Choose &lt;i style=""&gt;Detail analysis menu &lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style=";color:black;" &gt; SQL request&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;. A dialog box appears, where you can limit the SQL statements displayed. Delete the entries in the fields &lt;i style=""&gt;Buffer Gets &lt;/i&gt;and &lt;i style=""&gt;Disk Reads&lt;/i&gt;. In the &lt;i style=""&gt;Table &lt;/i&gt;field, replace the * with the name of the table to be analyzed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Download to a local file the list of SQL statements contained in the DB SQL cache for the table. Save the &lt;i style=""&gt;Explain SQL&lt;/i&gt; display for each SQL statement. Perform the analysis in the same way for all database views that use the table.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;A few days after you changed the index design, perform the same analysis again, and for each SQL statement compare the values for logical and physical accesses per execution. This second analysis enables you to ensure that none of the SQL statements analyzed is negatively influenced by the change in index design. The change should affect only the SQL statement to be optimized.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;  51&lt;br /&gt;RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/changing-index-design-rules-part-two.html"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;CHANGING DATA BASE INDEX FOR SAP  PART TWO&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-14.html"&gt;SAP SCRIPTS PART 14&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-15.html"&gt;SAP SCRIPTS PART 15&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-16.html"&gt;SAP SCRIPTS PART 16&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-17.html"&gt;SAP SCRIPTS PART 17&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-18.html"&gt;SAP SCRIPTS PART 18&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-19.html"&gt;SAP SCRIPTS PART 19&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/sap-script-20.html"&gt;SAP SCRIPTS PART 20&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-2068649716626398001?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/2068649716626398001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=2068649716626398001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2068649716626398001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2068649716626398001'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/index-design-in-data-base-for-sap.html' title='Index design in data base for SAP'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-8977886238319598555</id><published>2008-06-10T08:40:00.000-07:00</published><updated>2010-01-05T07:19:51.929-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE INDEX'/><title type='text'>Changing Index design rules part two</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Selective Analysis and distinct values :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;When you are sure about what the index fields mean (that is, their semantic meaning), check how many distinct values there are for each index field. Distinct values are the number different values per field in a particular database table. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The relationship between the total number of data records in a table and the distinct values per field indicates how selective the index field is.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;When the table and index statistics are updated, the distinct values are re-calculated. For index fields, the number of distinct values can be determined using Explain SQL (DB SQL cache or SQL trace).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;For an overview of the distinct values for all fields of a database table, from the SAP standard menu choose &lt;i style=""&gt;Tools&lt;/i&gt; &lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; Administration &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; Monitor &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; Performance &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; Database &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; Activity &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; Detail analysis menu &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; State on disk&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;, or use Transaction &lt;i style=""&gt;DB02&lt;/i&gt;. Then choose &lt;i style=""&gt;Detailed analysis&lt;/i&gt;. In the dialog box that appears, enter the table name under &lt;i style=""&gt;Object name&lt;/i&gt;, and confirm. In the next screen, choose &lt;i style=""&gt;Table columns&lt;/i&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;  Histograms:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The number of data records returned for each combination of index fields shows how selective an index is. This means that, if only a few data records are returned for a large number of index field combinations, an index is selective. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;For an overview of how selective an index is for all index field combinations, a histogram can be calculated. Calculating a histogram is very expensive, because the number of data records returned must be checked for all index field combinations over the whole table.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;To perform a selectivity analysis, use Transaction &lt;i style=""&gt;DB05&lt;/i&gt;. In the initial screen of &lt;i style=""&gt;DB05&lt;/i&gt;, enter a table name, select an analysis for primary key or for specified fields, specify the index fields if applicable, and submit the analysis in background or dialog mode.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If quotients are calculated from the total number of table records (635,336) and the number of distinct values for the index fields (16,607), the results show that an average of 30 data records are returned when the index is used.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If the number of distinct values does not increase from one index field to the next index field, this index field is not selective. It should therefore be omitted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Remember that a selectivity analysis is an expensive operation, which should only be performed at times of low system activity.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;46&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;RELATED POST&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/changing-index-design-rules.html"&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;CHANGING THE INDEX DESIGN IN ABAP DICTIONARY PART ONE&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;Here is the list of all related sap smart forms content placed for reference sake.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/sap-smart-forms-brief-discussion.html"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;SAP SMART FORMS A BRIEF DISCUSSION&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-smart-forms-introduction.html"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;SMART FORMS INTRODUCTION AND COMPARISON WITH SCRIPTS&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/creating-smart-forms.html"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;CREATION OF SMART FORMS&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/creating-new-smart-forms-part-two.html"&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;CREATION OF SMART FORMS PART TWO&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-smart-forms-part-three.html"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;CREATION OF SMART FORMS PART THREE&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;br /&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-8977886238319598555?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/8977886238319598555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=8977886238319598555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8977886238319598555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8977886238319598555'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/changing-index-design-rules-part-two.html' title='Changing Index design rules part two'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-8090028733765648919</id><published>2008-06-09T04:47:00.000-07:00</published><updated>2010-01-05T07:20:25.079-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE INDEX'/><title type='text'>Changing Index design rules</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;An index only makes sense if SQL statements that use the index return less than 5% of the table records. The index fields must therefore significantly reduce the resulting sets. Otherwise, the database optimizer would perform a &lt;i style=""&gt;full table scan &lt;/i&gt;anyway.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Indexes must not be contained in other indexes (that is, they must be disjunct), because the cost-based database optimizer can also select the index with the upper quantity. In addition, do not create indexes that can be selected accidentally.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;To keep additional work for the database to a minimum, create as few indexes as possible for each table (approximately 5 indexes per table).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;As a general rule, an index should consist of a maximum of 4 fields. If too many fields are specified in an index, additional work is created every time a database operation is performed, and the memory space required grows accordingly. Consequently, the index becomes less effective and the probabilty of it being selected is reduced.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The selective fields in an index should be as near to the beginning of the index as possible (see &lt;i style=""&gt;index range scan&lt;/i&gt; access strategy). Selective fields are, for example, document number, material number, and customer number. Unselective fields are client, company code, header account, and plant.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;Do not change SAP standard indexes unless SAP explicitly recommends that you do so.&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Before you perform a technical selectivity analysis, you must be sure what the various index fields in question mean. You should therefore type index fields according to their meaning.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Identifiers:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; These are particularly selective table fields. They are usually characterized by consecutive numbers (document number, object number, and so on) since they are assigned using a number range object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Organizational units:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; These are fields such as sales organization, company code, or distribution channel. They are often very unselective, and should only be used in secondary indexes in exceptional circumstances.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Status fields:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; These can be very selective if, in an SQL statement, values are selected where only a few corresponding data records exist in the table (for example, open orders, if most of them are complete). Conversely, they can also be very unselective.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Classifiers:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; These are fields where typing is performed (for example, sales order, planned order, and production order). In general, classifiers are not selective, as few different versions exist, and they are usually distributed relatively evenly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Date and time:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; These are often selective, and can be used in a secondary index.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Text fields:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; These are generally selective, but they are also very long. They should therefore not be used in a secondary index, because it would become too wide.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  42&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;&lt;/span&gt;RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/problems-with-data-base-access-in-sap.html"&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;PROBLEMS WITH DATA BASE ACCESS IN SAP ABAP&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;or spending your time here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/12/edi-introduction.html"&gt;What is EDI an introduction&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/12/business-process-using-edi.html"&gt;Business process with EDI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/12/edi-architecture.html"&gt;EDI process components part one &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/12/edi-process-components-part-two.html"&gt;and &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/12/edi-process-components-part-two.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/12/edi-architecture.html"&gt;EDI architecture introduction&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/12/edi-outbound-process.html"&gt;Outbound process overview&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/12/what-is-inbound-edi-process.html"&gt;Inbound process over view&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/12/what-is-idoc-overview.html"&gt;What is a Idoc?&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-8090028733765648919?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/8090028733765648919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=8090028733765648919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8090028733765648919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8090028733765648919'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/changing-index-design-rules.html' title='Changing Index design rules'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-710109398466287488</id><published>2008-06-07T22:57:00.000-07:00</published><updated>2010-01-05T07:20:56.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE ACCESS'/><title type='text'>Problems with data base access in sap abap</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;MISSING CRITICAL OPERATORS IN WHERE CLAUSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If fields in the WHERE clause are specified with operators NOT or &lt;&gt;, these WHERE conditions cannot be used for a search over a database index. You should therefore formulate SQL statements positively wherever possible. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If a positive formulation cannot be used, for example because the IN list would be too long, you should still specify the WHERE condition with NOT, in order to reduce the amount of data to be transferred. An index search will not be performed, but the amount of data returned will be smaller.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;On ORACLE databases, a WHERE condition with BETWEEN is evaluated together with the costs for reading 5 % of all index blocks and table blocks, regardless of the size of the BETWEEN interval. If the BETWEEN interval is small enough, you can replace SELECT field list WHERE field BETWEEN value1 AND value5 by SELECT field list WHERE field IN (value1, value2, value3, value4, value5) or by SELECT field list WHERE field IN ranges table. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;On ORACLE databases, a WHERE condition with LIKE, &gt; or &lt; field =" ‘999’."&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;A field specified with LIKE can narrow the selection of database indexes and be used for a search over a database index only if it does not begin with the wildcard character ‘_’ or ‘%’.&lt;span style=""&gt;  &lt;/span&gt;In ABAP, the wildcard ‘+’ is used for any character, and ‘*’ is used for any character string. For database accesses, however, the characters ‘_’ and ‘%’ are used.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;WHERE conditions with critical operators that are linked to the WHERE clause with OR can be particularly problematic. Since BETWEEN is calculated as costing 5% and LIKE is calculated as costing 10%, the cost-based database optimizer opts for a full table scan after a certain number of corresponding WHERE conditions, instead of using an index.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;SORTING&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If you want the result of an SQL statement to be returned in a sorted order, use an ORDER BY clause on the database, or use the ABAP statement SORT itab in the program. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Since the database is a central resource and is therefore not scalable, sort in ABAP wherever this is possible. However, if the same database index can be used for sorting and selecting data records (according to the WHERE clause), you can also sort on the database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;CHANGING THE INDEX DESIGN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If you establish that an expensive SQL statement is triggered by an SAP program, first search for R/3 Notes in SAPNet (in a full text search, specify the name of the table or view, as well as the word 'performance'). If you cannot find an applicable R/3 Note, open a problem message in SAPNet. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;In your own programs, if you find expensive SQL statements on SAP standard tables with transaction data, avoid creating secondary indexes wherever possible. Transaction data tables usually grow linearly with their indexes. Therefore, a search using a secondary index becomes less effective as time goes on. You should look for alternative methods of access, for example, using index tables or matchcode tables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Before you create a secondary index to optimize an SQL statement, check whether you can adapt the SQL statement to use a secondary index that already exists. Before you change an index, you must perform a selectivity and interference analysis.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;In some cases, deleting a secondary index makes sense. For example, if a secondary index is not used, or if a secondary index is a subset of another index, updating it causes unnecessary work for the database. Before you delete an index, you must perform an interference analysis.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;As a rule, avoid secondary indexes over SAP basis tables (for example, tables NAST, D010, D020, or tables beginning with DD). &lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;RELATED POST&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/problems-with-data-base-access-part-two.html"&gt;ABAP DATA BASE ACCESS PROBLEMS PART TWO&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/01/out-bound-edi-process-over-view.html"&gt;Outbound process overview&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/01/edi-outbound-process-with-message.html"&gt;Outbound process via message control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/01/edi-outbound-process.html"&gt;EDI outbound process&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/01/edi-inbound-process-overview.html"&gt;EDI inbound process overview&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/01/edi-inbound-process-via-function-module.html"&gt;Inbound process via function module&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/01/edi-inbound-process-via-workflow.html"&gt;Inbound process via work flow&lt;/a&gt;&lt;br /&gt;EDI subsystem part &lt;a href="http://www.abapprogramming.net/2009/01/edi-subsystem.html"&gt;one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/01/sap-edi-sub-system-part-two.html"&gt;two&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-710109398466287488?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/710109398466287488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=710109398466287488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/710109398466287488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/710109398466287488'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/problems-with-data-base-access-in-sap.html' title='Problems with data base access in sap abap'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-9144677383853975908</id><published>2008-06-07T22:49:00.000-07:00</published><updated>2010-01-05T07:21:26.258-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE ACCESS'/><title type='text'>Problems with data base access part two</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;OLD TABLE INDEX STATISTICS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;To ensure that the cost-based database optimizer functions properly, the table and index statistics must be updated regularly. The database optimizer uses these statistics as a basis for selecting the access strategy used to execute a particular SQL statement.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The database administrator must update the table and index statistics regularly. To find out when the last update was performed, from the SAP standard menu choose &lt;i style=""&gt;Tools &lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; CCMS &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; DB administration &lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Symbol;font-size:11pt;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; DBA Planning Calendar&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;, or use Transaction &lt;i style=""&gt;DB13&lt;/i&gt;.&lt;i style=""&gt; &lt;/i&gt;You must ensure that the last update was not performed more than a week ago, and that it was performed successfully (refer to the log).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;For making changes to index design, we recommend that roles and responsibilities are distributed as follows. The ABAP programmer designs the database indexes to support SQL statements. In a production system or test system, only the database administrator should be responsible for creating database indexes. The database administrator must verify whether the programmer's index design is correct. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;When database indexes are created, the table and index statistics must be updated for the relevant tables. If the index design is correct, you can transport the database index to the production system at a time of low system activity, and then update the table and index statistics in the production system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;  MISSING WHERE CONDITIONS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The way in which the database optimizer selects and uses database indexes depends on, among other things, the WHERE conditions specified in the SQL statement. The order of the WHERE conditions in the SQL statement is not important (note that this is not the case with the order of the fields in the database index).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The index search string is concatenated over the fields that are specified without gaps and with '=' in the WHERE condition. The index blocks to be checked are are selected using the index search string.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Using the addition CLIENT SPECIFIED incorrectly can lead to ineffective use of a database index. If you use CLIENT SPECIFIED, specify a WHERE condition for MANDT. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  33&lt;br /&gt;RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/problems-with-data-base-access.html"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;PROBLEMS WITH DATA BASE  ACCESS PART ONE &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/01/edi-subsystem-architecture-and-mapping.html"&gt;EDI Subsystem architecture and mapping&lt;/a&gt;&lt;br /&gt;EDI basic components configuration part &lt;a href="http://www.abapprogramming.net/2009/01/sap-edi-basic-components-configuration.html"&gt;one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/01/sap-edi-basic-components-configuration_29.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/02/edi-rfc-destination-setup.html"&gt;How to set RFC destination&lt;/a&gt; part &lt;a href="http://www.abapprogramming.net/2009/02/edi-rfc-destination-setup.html"&gt;two&lt;/a&gt; and part &lt;a href="http://www.abapprogramming.net/2009/02/edi-setting-rfc-destination.html"&gt;one&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2009/02/edi-port-defination.html"&gt;Defining a port for message control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/02/edi-outbound-process.html"&gt;EDI Outbound process&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/02/edi-of-sap-inbound-process.html"&gt;Inbound process&lt;/a&gt;&lt;br /&gt;Partner profiles configuration part &lt;a href="http://www.abapprogramming.net/2009/02/edi-idoc.html"&gt;one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/02/edi-and-idoc.html"&gt;two&lt;/a&gt;&lt;br /&gt;Overview of outbound parameters part &lt;a href="http://www.abapprogramming.net/2009/02/sap-edi-idoc-business.html"&gt;one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/02/sap-edi-idoc.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/02/sap-edi-ale-idoc.html"&gt;EDI outbound parameters&lt;/a&gt; for message control&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-9144677383853975908?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/9144677383853975908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=9144677383853975908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/9144677383853975908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/9144677383853975908'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/problems-with-data-base-access-part-two.html' title='Problems with data base access part two'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-4720016158658630763</id><published>2008-06-07T22:43:00.000-07:00</published><updated>2010-01-05T07:21:52.104-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE ACCESS'/><title type='text'>Problems with data base access</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Optimizing SQL statements only makes sense if the R/3 System and database system are correctly configured. This is the responsibility of the R/3 System administrator and the database administrator respectively. Technical problems may have an effect on the whole system (for example, wrongly set parameters, communication problems, old table and index statistics), or may only affect SQL statements on certain tables (for example, missing or fragmented indexes).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To avoid technical problems: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;Ÿ&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Follow the R/3 installation instructions and refer to R/3 Notes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;Ÿ&lt;span style=";font-family:&amp;quot;;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Implement the recommendations given by the SAP standard services GoingLive and EarlyWatch &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Communication problems may occur between the application server and database server. Parameters on the database interface may be wrongly set, and thus also cause problems (for example, incorrect value for rsdb/max_blocking_factor, see recommendations for SELECT FOR ALL ENTRIES).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;On some databases (for example, Oracle and Informix), &lt;i style=""&gt;fragmented indexes&lt;/i&gt; may occur. The term &lt;i style=""&gt;fragmented indexes&lt;/i&gt; means that index blocks are less than 50% full. Fragmented indexes can occur if a large number of table records are deleted and then a large number of table records are inserted. If you discover that an index is suitable for an SQL statement, but that executing the SQL statement causes heavy database system load, your database administrator should check whether a fragmented index (database-specific) is causing the problem.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The R/3 Workload monitor gives you an overview of the general state of your R/3 System. To view the initial screen of the R/3 Workload monitor, from the SAP standard menu choose &lt;i style=""&gt;Tools &lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; CCMS &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Control/Monitoring &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Performance menu &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Workload &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Analysis, &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;or use Transaction &lt;i style=""&gt;ST03.&lt;/i&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;From this screen, choose &lt;i style=""&gt;Performance database&lt;/i&gt;.&lt;i style=""&gt; &lt;/i&gt;In the dialog box that appears, first select the server to be checked, then the time period (for example, &lt;i style=""&gt;previous weeks&lt;/i&gt;) and the examination period (for example, &lt;i style=""&gt;previous week&lt;/i&gt;). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;If the average database response time per transaction step is greater than 600ms, the cause is very probably a fundamental R/3 or database problem. If this is the case, the results of the SQL performance trace are not reliable. Your R/3 System administrator or database administrator should therefore first solve the problem, and then you can repeat the analysis.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Missing indexes&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Database reorganization or deliberately deleting database objects at the operating system level can cause inconsistencies between the indexes in the ABAP Dictionary and the indexes on the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;You can find these inconsistencies by using the database monitor. To view the initial screen of the database monitor, from the SAP standard menu choose &lt;i style=""&gt;Tools&lt;/i&gt; &lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Administration &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Monitor &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Performance &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Database &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Activity &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; Detail analysis menu &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Symbol;font-size:100%;color:black;"   &gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style="color:black;"&gt; State on disk&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;, or use Transaction &lt;i style=""&gt;DB02&lt;/i&gt;. For an overview of indexes that are missing in the database or not found in the ABAP Dictionary, choose &lt;i style=""&gt;Missing indexes&lt;/i&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If you find indexes that are missing on the database, inform your database administrator. Database indexes can be activated from this screen or from the ABAP Dictionary, and thus created on the database. Database indexes that exist on the database but not in the ABAP Dictionary can be created in the ABAP Dictionary. They are transferred to the database when they are activated. The index that already exists on the database is then overwritten. After you have changed the index design for a table, you must create new index statistics for the changed indexes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;Only make changes to database indexes at times of low system activity, because the database locks the database table while the indexes are being created. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;RELATED POST&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;&lt;a href="http://www.blogger.com/n%09Database%20reorganization%20or%20deliberately%20deleting%20database%20objects%20at%20the%20operating%20system%20level%20can%20cause%20inconsistencies%20between%20the%20indexes%20in%20the%20ABAP%20Dictionary%20and%20the%20indexes%20on%20the%20database."&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;DATA BASE JOINS PART TWO &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.abapprogramming.net/2009/03/edi-ale-idoc.html"&gt;EDI inbound parameter views&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/edi-maintaining-partner-profiles.html"&gt;Partner profile maintenance&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/edi-message-control-configuration.html"&gt;Message control Configuration&lt;/a&gt;&lt;br /&gt;Message control architecture part &lt;a href="http://www.abapprogramming.net/2009/03/edi-message-control-architecture.html"&gt;one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/03/edi-message-control-architecture-part.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/ediidoc-message-control-and-control.html"&gt;EDI output types part one and two&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2009/03/ediidoc-message-control-and-control.html"&gt;Message control and control table&lt;/a&gt;&lt;br /&gt;Working of message control part &lt;a href="http://www.abapprogramming.net/2009/03/edi-message-control-working-way.html"&gt;one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/03/edi-message-control-working-part-two.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/edi-message-control-setting-up.html"&gt;Message control set up&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/work-flow-management.html"&gt;Work flow management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/work-flow-usage-in-ael-and-edi.html"&gt;Using work flow&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-4720016158658630763?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/4720016158658630763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=4720016158658630763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/4720016158658630763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/4720016158658630763'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/problems-with-data-base-access.html' title='Problems with data base access'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-3919499285230234536</id><published>2008-06-07T22:37:00.000-07:00</published><updated>2010-01-05T07:22:15.439-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE INDEX'/><title type='text'>Data Base Joins part two</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:100%;" &gt;Sort merge join&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;When a join is processed using the &lt;i style=""&gt;sort merge join &lt;/i&gt;access strategy, the following steps are performed:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;The table records that correspond to the WHERE clause are selected&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;The tables in the join are sorted according to the JOIN condition&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;The table records are merged&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;For the SQL statement above, the selective WHERE condition for field CUOBJ, table VVBAP, and the selective WHERE condition for field OBJNR, table VVBAK are evaluated. The resulting sets are sorted according to VBELN. The results are then merged.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;n&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;If selective WHERE conditions exist for the relevant tables, a&lt;i style=""&gt; sort merge join &lt;/i&gt;is very effective. If the JOIN conditions are not selective for any of the relevant tables, the &lt;i style=""&gt;sort merge join &lt;/i&gt;access strategy is more effective than a &lt;i style=""&gt;nested loop&lt;/i&gt;. If there are more than two tables in the join, you can combine the &lt;i style=""&gt;nested loop &lt;/i&gt;and &lt;i style=""&gt;sort merge join&lt;/i&gt; access strategies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:100%;" &gt;  Access staginess for data base joins&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span  lang="EN-GB" style="color:black;"&gt;Nested loop:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt; This strategy is relevant for database views and ABAP JOINs. First, the WHERE clause is used as a basis for selecting the (outer) table to be used for access. Next, starting from the outer table, the table records for the inner tables are selected according to the JOIN condition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style="font-size:100%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:&amp;quot;;color:black;"   lang="EN-GB"&gt;Sort merge join:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"    lang="EN-GB"&gt; First, the WHERE clause is evaluated for all tables in the join, and a resulting set is produced for each table. Each resulting set is sorted according to the JOIN conditions and then merged, also according to the JOIN conditions.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"    lang="EN-GB"&gt;RELATED POST&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/data-base-joins.html"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;DATA BASE JOINS PART ONE&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.abapprogramming.net/2009/03/ale-and-edi-workflow-architecture.html"&gt;Architecture of work flow&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/business-objects_19.html"&gt;Business objects&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/edi-tasks-and-roles.html"&gt;EDI Tasks and roles&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/edi-work-items-and-sap-inbox.html"&gt;Work item and SAP IN box&lt;/a&gt;&lt;br /&gt;Error notification process part &lt;a href="http://www.abapprogramming.net/2009/03/work-flow-error-notificaiton-process.html"&gt;one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/03/work-flow-error-notificaiton-process_23.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/03/work-item-in-edi-work-flow.html"&gt;Work item in EDI Work flow&lt;/a&gt;&lt;br /&gt;EDI Work flow part &lt;a href="http://www.abapprogramming.net/2009/03/setting-up-workflow.html"&gt;one&lt;/a&gt;, &lt;a href="http://www.abapprogramming.net/2009/03/sap-edi-work-flow-setting-part-two.html"&gt;two&lt;/a&gt;, &lt;a href="http://www.abapprogramming.net/2009/03/sap-edi-work-flow-set-up-part-three.html"&gt;three&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/04/abap-programming-edi-work-flow-settting.html"&gt;four&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/04/sap-abap-edi-interface-testing.html"&gt;EDI Interface testing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/04/sap-abap-edi-testing-outbound-process.html"&gt;Out bound testing for EDI&lt;/a&gt; and part&lt;a href="http://www.abapprogramming.net/2009/04/sap-abap-edi-testing-outbound-process_20.html"&gt; two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/04/sap-edi-inbound-process-utilities.html"&gt;Inbound Process utilities&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-3919499285230234536?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/3919499285230234536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=3919499285230234536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/3919499285230234536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/3919499285230234536'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/data-base-joins-part-two.html' title='Data Base Joins part two'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-2056262020315832378</id><published>2008-06-07T22:25:00.000-07:00</published><updated>2010-01-05T07:23:20.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE INDEX'/><title type='text'>Data Base Joins</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;In the R/3 System, users often need to access information stored in different tables. The database-logical operator used to do this is called the JOIN operator.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;In ABAP, there are various ways to implement the JOIN operator (nested SELECTs, SELECT FOR ALL ENTRIES, DB views, ABAP JOINS, subqueries, explicit cursor). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If you want the database system to determine the resulting set of the JOIN operator, you can use DB views, ABAP JOINs or subqueries. DB views are first created in the ABAP Dictionary, and are created on the database when the Dictionary object is activated. DB views created by other developers can also be used (reusability). ABAP JOINs are formulated in ABAP directly. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The following important access strategies are available to the database optimizer for processing ABAP JOINs, subqueries, or SQL statements against database views:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style="font-size:100%;"&gt;&lt;i style=""&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Nested Loop:&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;   &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;When a join is processed using the &lt;i style=""&gt;nested loop&lt;/i&gt; strategy, two steps are performed:&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The order of access is determined&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;Ÿ&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Data is selected from the tables&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The database optimizer first determines the order in which the tables in the join are to be accessed. To do this, it uses the WHERE clause to estimate the number of returned table records or data blocks for each table in the join.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To determine which table will be the outer table, the optimizer determines the table with the lowest number of returned table records or data blocks, because it assumes that in total the fewest data blocks need to be read in this table.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Therefore, the goal once more is to minimize the number of data blocks to be read (index blocks or table blocks). If there are more than two tables in the join, the inner table is selected in the same way. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;In the second step, the table records from the outer table are first selected. For these table records, the table records from the next innermost table are read according to the join condition, and so on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;For the SQL statement above, the optimizer selects the table VVBAK as the outer table, because a selective WHERE condition exists for the field VVBAK-OBJNR. For each table record that fulfills the WHERE condition, table records from VVBUK are selected according to the join condition.&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"   &gt;23&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://abapdictionary.blogspot.com/2008/06/data-base-index-in-detail.html"&gt;DATA BASE INDEX IN DETAIL&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.abapprogramming.net/2009/04/sap-abap-edi-inbound-processtesting.html"&gt;Inbound process testing for EDI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/06/sap-inbox-work-item-processing.html"&gt;SAP Inbox work item processing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/06/sap-inbox-work-items-and-process-log.html"&gt;SAP Inbox process log&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/06/sap-ale-idocs-displaying-information.html"&gt;Idoc's Information display&lt;/a&gt; part &lt;a href="http://www.abapprogramming.net/2009/06/edi-ale-idoc-tools-for-displaying.html"&gt;two&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/06/edi-ale-idoc-tools-for-displaying_28.html"&gt;Three&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/07/sap-work-flow-display-for-edi-and-ale.html"&gt;Work Flow display&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/07/work-load-analysis-on-sap-system.html"&gt;WORK LOAD  analysis on sap SYSTEM&lt;/a&gt; AND part &lt;a href="http://www.abapprogramming.net/2009/07/work-load-analysis-on-sap-system-part.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/07/sap-system-logs-and-analysis.html"&gt;SAP System logs and analysis part one&lt;/a&gt; and &lt;a href="http://www.abapprogramming.net/2009/07/sap-system-logs-and-analysis-part-two.html"&gt;two&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/07/sap-system-logs-and-analysis-part-two.html"&gt;EDI trouble shooting&lt;/a&gt; and&lt;a href="http://www.abapprogramming.net/2009/07/edi-trouble-shooting-for-sap-part-two.html"&gt; Electronic data interchange trouble shooting part two&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2009/07/sap-edi-process-restart-with-ale-tools.html"&gt;SAP EDI process restart with ALE tools&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/08/electronic-data-interchange-tools-for.html"&gt;EDI Tools for SAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2009/08/electonic-data-interchange-performance.html"&gt;EDI performance factors&lt;/a&gt;&lt;br /&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-2056262020315832378?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/2056262020315832378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=2056262020315832378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2056262020315832378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2056262020315832378'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/data-base-joins.html' title='Data Base Joins'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-8671244723025723485</id><published>2008-06-07T22:19:00.000-07:00</published><updated>2010-01-05T07:50:16.607-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DATA BASE INDEX'/><title type='text'>Data Base Index in detail</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Full Table Scan&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If the database optimizer selects the &lt;i style=""&gt;full table scan &lt;/i&gt;access strategy, the table is read sequentially. Index blocks do not need to be read.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;For a &lt;i style=""&gt;full table scan&lt;/i&gt;, the read table blocks are added to the end of an LRU list. Therefore, no data blocks are forced out of the data buffer. As a result, in order to process a &lt;i style=""&gt;full table scan&lt;/i&gt;, comparatively little memory space is required within the data buffer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The &lt;i style=""&gt;full table scan&lt;/i&gt; access strategy is very effective if a large part of a table (for example, 5% of all table records) needs to be read. In the above example, the &lt;i style=""&gt;full table scan&lt;/i&gt; access strategy is not effective, because only a few table records are required, but many table blocks need to be read&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"   lang="EN-GB"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;  Concatenation&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;In the &lt;i style=""&gt;concatenation&lt;/i&gt; access strategy, one index is reused. Therefore, various index search strings also exist. An &lt;i style=""&gt;index unique scan&lt;/i&gt; or an &lt;i style=""&gt;index range scan &lt;/i&gt;can be performed for the various index search strings. Duplicate entries in the resulting set are filtered out when the search results are &lt;i style=""&gt;concatenated&lt;/i&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;In the SQL statement above, a WHERE condition with an IN operation is specified over field VBELN. The fields MANDT and VBELN are shown on the left of the primary index. Various index search strings are created, and an&lt;i style=""&gt; index range scan&lt;/i&gt; is performed over the primary index for each index search string. Finally, the result is &lt;i style=""&gt;concatenated&lt;/i&gt; (combined). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;  Access Staginess&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Index unique scan:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; The index selected is unique (primary index or unique secondary index) and specified fully. One or no table record is returned. This type of access is very effective, because a maximum of four data blocks need to be read.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Index range scan:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; The index selected is unique or non-unique. In the case of a unique index, not all index fields are specified in the WHERE clause. A range of the index is read and checked. An &lt;i style=""&gt;index range scan &lt;/i&gt;may not be as effective as a &lt;i style=""&gt;full table scan&lt;/i&gt;. The table records returned can range from none to all.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Full table scan:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; The whole table is read sequentially. Each table block is read once. Since no index is used, no index blocks are read. The table records returned can range from none to all.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b style=""&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Concatenation:&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-size:11pt;color:black;"  &gt; An index is used more than once. Various areas of the index are read and checked. To ensure that the application reads each table record only once, the search results are concatenated, and duplicate entries are eliminated. The table records returned can range from none to all.&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"   lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;DATA BASE INDEX UNIQUE SCAN&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-list-display-saple-code.html"&gt;SAP ABAP SAMPLE CODE FOR ALV LIST DISPLAY REPORT &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-layout-display-sample-code.html"&gt;SAP ABAP SAMPLE CODE FOR ALV LAYOUT DISPLAY REPORT &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-block-sample-report.html"&gt;SAP ABAP SAMPLE CODE FOR ALV BLOCK REPORT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-check-boxes-sample-code.html"&gt;SAP ABAP SAMPLE CODE  ALV CHECK BOXES REPORT&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-interactive-report-sample-code.html"&gt;SAP ABAP SAMPLE CODE INTERACTIVE REPORT &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-double-click-sample-code.html"&gt;SAP ABAP SAMPLE CODE ALV DOUBLE CLICK REPORT &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-simple-sample-code.html"&gt;SAP ABAP SAMPLE CODE  ALV SIMPLE REPORT &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-coluring-sample-code.html"&gt;SAP ABAP SAMPLE CODE  ALV COLURING REPORT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/alv-list-using-oo-style-sample-code.html"&gt;SAP ABAP SAMPLE CODE USING OBJECT ORIENTED SYLTE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/abap-multiple-interactive-report-sample.html"&gt;SAP ABAP SAMPLE CODE FOR MULTIPLE INTERACTIVE REPORT&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/abap-multiple-interactive-report-sample_12.html"&gt;SAP ABAP SAMPLE CODE MULTIPLE INTERACTIVE REPORT TWO&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-8671244723025723485?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/8671244723025723485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=8671244723025723485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8671244723025723485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8671244723025723485'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/data-base-index-in-detail.html' title='Data Base Index in detail'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-7297588676080886549</id><published>2008-06-07T10:34:00.001-07:00</published><updated>2010-01-05T07:51:54.824-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='INDEXING  AND BUFFERING'/><title type='text'>SAP Data Base Index Unique Scan</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If, for all fields in a unique index (primary index or unique secondary index), WHERE conditions are specified with '=' in the WHERE clause, the database optimizer selects the access strategy &lt;i style=""&gt;index unique scan&lt;/i&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;For the&lt;i style=""&gt; index unique scan&lt;/i&gt; access strategy, the database usually needs to read a maximum of four data blocks (three index blocks and one table block) to access the table record.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;In the SELECT statement shown above, the table VVBAK is accessed. The fields MANDT and VBELN form the primary key, and are specified with '=' in the WHERE clause. The database optimizer therefore selects the&lt;i style=""&gt; index unique scan&lt;/i&gt; access strategy, and only needs to read four data blocks to find the table record requested.&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;INDEX RANGE SCAN&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;font-size:11pt;color:black;"   &gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;To execute the SQL statement, the DBMS first reads a root block (1) and a branch block (2). The branch block contains pointers to two leaf blocks (3 and 4). In order to find the index records that fulfill the criteria in the WHERE clause of the SQL statement, the DBMS searches through these leaf blocks sequentially. The index records found point to the table records within the table blocks (5 and 6).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If index records from different index blocks point to the same table block, this table block must be read more than once. In the example above, an index record from index block 3 and an index record from index block 4 point to table records in table block 5. This table block must therefore be read twice. In total, seven data blocks (four index blocks and three table blocks) are read. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The index search string is determined by the concatenation of the WHERE conditions for the fields contained in the index. To ensure that as few index blocks as possible are checked, the index search string should be specified starting from the left, without placeholders ('_' or %). Because the index is stored and sorted according to the index fields, a connected range of index records can be checked, and fewer index blocks need to be read.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The range that can be used to select the index blocks (that is, the fully specified range starting from the left), therefore only consists of the field MANDT. Since many index records fulfill the condition MANDT = ‘001’, a large number of index blocks are read, and their index records checked. All the index records are then filtered out that fulfill the condition VBELN = ‘0000123’. The relevant index records point to the table records. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If a further WHERE condition had been specified in the SQL statement for a field that was not in the index, this WHERE condition would only have been evaluated after the table records had been read from the table blocks.&lt;/span&gt;&lt;span style=";font-size:11pt;color:black;"   lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Due to old update statistics, database errors, missing indexes, or inappropriate ABAP coding, the database optimizer may select a completely unsuitable index, and then perform an unselective &lt;i style=""&gt;index range scan&lt;/i&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;In the example above, WHERE conditions are only specified for MANDT and MATNR. In spite of this, the database optimizer chooses to perform an&lt;i style=""&gt; index range scan&lt;/i&gt; over the primary index (MANDT, VBELN, POSNR). Since there is only one unselective WHERE condition (MANDT = '001') to select the index blocks (due to the WHERE clause), a large number of index blocks are read. There is no WHERE condition to filter the index records. The table records corresponding to all suitable index records are therefore read. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;More data blocks are read if an unselective &lt;i style=""&gt;index range scan&lt;/i&gt; is performed, than if the table is read sequentially. This is because a table block is read more than once if index records in different index blocks point to the same table record. The maximum number of data blocks to be read per SQL statement execution is thus calculated from the product of the total number of table blocks and the number of index records per index block.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;All index blocks and table blocks read during an index range scan are stored in the data buffer at the top of an LRU (least recently used) list. This can lead to many other data blocks being forced out of the data buffer. Consequently, more physical read accesses become necessary when other SQL statements are executed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  17&lt;br /&gt;RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/data-base-index-over-view.html"&gt;DATA BASE INDEX OVER VIEW&lt;/a&gt;&lt;br /&gt;flow here with this four posts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-1.html"&gt;sap work flow part 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-1.html"&gt;sap work flow part &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-2.html"&gt;2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-1.html"&gt;sap work flow part &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-3.html"&gt;3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-1.html"&gt;sap work flow part &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-4.html"&gt;4&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-7297588676080886549?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/7297588676080886549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=7297588676080886549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7297588676080886549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7297588676080886549'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/sap-data-base-index-unique-scan.html' title='SAP Data Base Index Unique Scan'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-5065970097374089512</id><published>2008-06-07T10:31:00.000-07:00</published><updated>2010-01-05T07:54:24.708-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='INDEXING  AND BUFFERING'/><title type='text'>Data Base Index over view</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Overview&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;When you create a database table in the ABAP Dictionary, you must specify the combination of fields that enable an entry within the table to be clearly identified. The key fields must be specified at the top of the table field list, and define them as key fields. A minimum of 1 key field and a maximum of 16 key fields can be defined.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;When the table is activated, an index formed from all key fields is created on the database (with Oracle, Informix, DB2), in addition to the table itself. This index is called the primary index. The primary index is unique by definition. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;In addition to the primary index, you can define one or more secondary indexes for a table in the ABAP Dictionary, and create them on the database. Secondary indexes can be unique or non-unique.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;If you dispatch an SQL statement from an ABAP program to the database, the program searches for the data records requested either in the database table itself (full table scan) or by using an index (index unique scan or index range scan). If all fields requested are found in the index using an index scan, the table records do not need to be accessed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;A data block shows the level of detail in which data is written to the hard disk or read from the hard disk. Data blocks can contain several data records. Conversely, a data record can extend over several data blocks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;Data blocks can be index blocks or table blocks. The database organizes the index blocks in the form of a multi-level B* tree. There is a single index block at root level, which contains pointers to the index blocks at branch level. The branch blocks contain either some of the index fields and pointers to index blocks at leaf level, or all index fields and a pointer to the table records organized in table blocks. The index blocks at leaf level contain all index fields and pointers to the table records from the table blocks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The pointer that identifies one or more table records has a specific name. It is called, for example, &lt;i style=""&gt;ROWID&lt;/i&gt; for Oracle databases.&lt;i style=""&gt; &lt;/i&gt;The &lt;i style=""&gt;ROWID&lt;/i&gt; consists of the number of the database file, the number of the table block, and the row number within the table block.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;The index records are stored in the index tree and sorted according to index field. This enables accelerated access using the index. The table records in the table blocks are not sorted. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:11pt;color:black;"  &gt;An index should not consist of too many fields. Having a few very selective fields increases the chance of reusability, and reduces the chance of the database optimizer selecting an unsuitable access path.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;RELATED POST&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/data-base-optimizer-part-two.html"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;DATA BASE OPTIMIZER PART TWO&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;posts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-2.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-2.html"&gt;2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-3.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-3.html"&gt;3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-4.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-4.html"&gt;4&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-5.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-5.html"&gt;5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-6.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-6.html"&gt;6&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-5065970097374089512?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/5065970097374089512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=5065970097374089512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/5065970097374089512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/5065970097374089512'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/data-base-index-over-view.html' title='Data Base Index over view'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-6462373912118834348</id><published>2008-06-07T10:24:00.000-07:00</published><updated>2010-01-05T07:54:48.987-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OPTIMZATION'/><title type='text'>Data Base Optimizer part two</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Continued from the last post &lt;a href="http://abapdictionary.blogspot.com/2008/06/data-base-optimizer.html"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;data base optimizer part one.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);font-size:100%;" &gt;Unsuitable access path :&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;If the single object analysis establishes that an expensive SQL statement has an unsuitable access path, you can narrow (and thus &lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;optimize&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;) the search.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;The search range is the number of data records that needs to be checked in a table in order to satisfy an SQL statement. When the SQL statement is processed on the database, the search range is dynamically determined by the WHERE clause, the database index used, and the access strategy selected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;You can narrow the search by:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;Solving technical problems&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;Changing the ABAP coding&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;Changing the index design&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Suitable access path:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;If the single object analysis establishes that the SQL statement analyzed has a suitable access path, you can optimize it by:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Reducing the rows to be transferred&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Reducing the columns to be transferred&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Reducing data transfer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Avoiding unnecessary SQL statements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;You can reduce the number of rows to be transferred, for example, by optimizing the WHERE clause or by using aggregate functions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;You can reduce the number of columns to be transferred, for example, by formulating a suitable field list or, in the case of database changes, by using UPDATE .. SET field = value&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;.&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;You can reduce data transfer between database server and application server by formulating your SQL statements in such a way that data is transferred in as large blocks as possible (a full fetch is 32 KB). You can do this by avoiding nested SELECT statements, for example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;Unnecessary SQL statements are either similar or identical SQL statements. Similar SQL statements can often be grouped together. Identical SQL statements can be avoided by buffering data either in an internal table in the program or on the application server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;  10&lt;br /&gt;RELATED POST&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/hashed-table-usage.html"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;HASHED TABLE USAGE IN ABAP REPORT&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-7.html"&gt;7&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-8.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-8.html"&gt;8&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-9.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-9.html"&gt;9&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-10.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-10.html"&gt;10&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-11.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenorios-in-mm-1.html"&gt;Work flow for MM PART &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-mm-11.html"&gt;11&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-6462373912118834348?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/6462373912118834348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=6462373912118834348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/6462373912118834348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/6462373912118834348'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/data-base-optimizer-part-two.html' title='Data Base Optimizer part two'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-4438562745825180095</id><published>2008-06-07T10:18:00.000-07:00</published><updated>2010-01-05T07:55:22.199-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TABLE TYPES IN ABAP'/><title type='text'>Hashed Table usage</title><content type='html'>&lt;p class="MsoNormal"&gt;What is use of using HASHED TABLE?&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Hashed table is useful when your have to work with very big internal table and to read it with&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;"READ TABLE WITH KEY ..."&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The time access is constant !&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p style="color: rgb(255, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Definition of a Hashed Table:&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;"Defines the table as one that is managed with an internal hash procedure. You can imagine a hashed table as a set, whose elements you can address using their unique key. Unlike standard and sorted tables, you cannot access hash tables using an index. All entries in the table must have a unique key.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Access time using the key is constant, regardless of the number of table entries.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;You can only access a hashed table using the generic key operations or other generic operations (SORT, LOOP, and so on). Explicit or implicit index operations (such as LOOP ... FROM to INSERT itab within a LOOP) are not allowed."&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;As long as your records has unique key(s), using hash table will give you a huge performance gain when dealing with large dataset. assuming in your case, 10000 record , and if the key is unique, use hash table.&lt;span style=""&gt;  &lt;/span&gt;The main use of hash tables is for looking up fixed information from a key. So if you have a report that has personnel number and you want to display their name, you could use a hash table.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p style="color: rgb(255, 0, 0);" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Code:&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;types: begin of typ_pernr,&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;         &lt;/span&gt;pernr&lt;span style=""&gt;  &lt;/span&gt;like pa0001-pernr,&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;         &lt;/span&gt;ename&lt;span style=""&gt;  &lt;/span&gt;like pa0001-ename,&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;       &lt;/span&gt;end&lt;span style=""&gt;   &lt;/span&gt;of typ_pernr.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;data: ls_pernr&lt;span style=""&gt;  &lt;/span&gt;type typ_pernr,&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;      &lt;/span&gt;lt_pernr&lt;span style=""&gt;  &lt;/span&gt;type&lt;span style=""&gt;  &lt;/span&gt;hashed table of typ_pernr&lt;span style=""&gt;  &lt;/span&gt;with unique key pernr.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;...&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;  &lt;/span&gt;select pernr ename into table lt_pernr&lt;span style=""&gt;  &lt;/span&gt;from pa0001.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;...&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;  &lt;/span&gt;loop at itab.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;    &lt;/span&gt;read table lt_pernr&lt;span style=""&gt;  &lt;/span&gt;with table key pernr&lt;span style=""&gt;  &lt;/span&gt;=&lt;span style=""&gt;  &lt;/span&gt;itab-pernr&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;         &lt;/span&gt;into ls_pernr.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;    &lt;/span&gt;write: ls_pernr-ename, itab-data.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;  &lt;/span&gt;endloop.&lt;/p&gt;&lt;p class="MsoNormal"&gt;RELATED POST&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/data-base-optimizer.html"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;DATA BASE OPTIMZER&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;SAP WORK flow in sales and distribution 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;SAP WORK flow &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;in sales and distribution&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt; &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-2.html"&gt;2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;SAP WORK flow&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;in sales and distribution &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-3.html"&gt;3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;SAP WORK flow&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-4.html"&gt; &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;in sales and distribution &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-4.html"&gt;4&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;SAP WORK flow&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;in sales and distribution &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-5.html"&gt;5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;SAP WORK flow&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;in sales and distribution &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-6.html"&gt;6&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;SAP WORK flow&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-7.html"&gt; &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-1.html"&gt;in sales and distribution &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/09/work-flow-scenarios-in-sd-7.html"&gt;7&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-4438562745825180095?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/4438562745825180095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=4438562745825180095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/4438562745825180095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/4438562745825180095'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/hashed-table-usage.html' title='Hashed Table usage'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-607531123741400118</id><published>2008-06-06T08:52:00.000-07:00</published><updated>2010-01-05T07:56:00.534-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OPTIMZATION'/><title type='text'>Data Base Optimizer</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);font-size:100%;" &gt;Cost Based Data Base Optimizer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The database optimizer is the most important part of a relational database system. For each SQL statement, the database optimizer determines the strategy for accessing data records. Access can be with database indexes (index access), or without database indexes (full table scan).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The cost-based database optimizer determines the access strategy on the basis of:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;conditions in the WHERE clause of the SQL statement&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Database indexes of the relevant table(s)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Selectivity of the table fields contained in the database indexes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;size of the relevant table(s)&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"    lang="EN-GB"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"   lang="EN-GB"&gt;The table and index statistics supply information about the selectivity of table fields, the selectivity of combinations of table fields, and table size.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Before a database access is performed, the database optimizer cannot calculate the exact cost of a database access. It uses the information described above to estimate the cost of the database access.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;The optimization calculation is the amount by which the data blocks to be read (logical read accesses) can be reduced. Data blocks show the level of detail in which data is written to the hard disk or read from the hard disk. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoBodyText3"&gt;&lt;span  lang="DE" style="font-size:100%;"&gt;&lt;!--[if !supportEmptyParas]--&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; Data Base SQL  Catche&lt;/span&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 15pt; text-indent: -15pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;To avoid repeating the time-consuming and costly procedure of parsing an SQL statement and determining an access strategy, SQL statements are buffered with the chosen access strategy in the DB SQL cache (shared memory area) of the database server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 15pt; text-indent: -15pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;For a received SQL statement, the DBMS first checks whether the statement already exists in the DB SQL cache. If it does exist, it can be used immediately. If it does not exist, the SQL statement must be parsed and the access strategy must be determined.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 15pt; text-indent: -15pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Next, the DBMS attempts to read the data blocks required by the SQL statement from the data buffer (logical read access). If this is possible, physical read accesses are not necessary. If this is not possible, the missing data blocks are read from the database files on the hard disk (physical read accesses).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;With an appropriate access path: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Here, the SQL statement reads many data blocks in the database and is expensive because it transfers many data records from the database to the application server.&lt;span style=""&gt;  &lt;/span&gt;Database performance is satisfactory according to the criterion that less than 5 data blocks are read per data record.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt; Expensive SQL statements with a suitable access path are listed at the top of the Database SQL Cache if they are executed frequently. A problem with the application logic is usually indicated. This problem can be fixed through changes to the ABAP code or to the business process.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;With no appropriate access path: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Here, the SQL statement reads many data blocks in the database but does not transfer many data records from the database to the application server.&lt;span style=""&gt;  &lt;/span&gt;Database performance is not optimal according to the criterion that more than 5 data blocks are read per data record. &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Expensive SQL statements with no appropriate access paths can be optimized either by by creating or improving the design of an index, or modifying the ABAP code to improve a poorly designed WHERE clause.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt; text-align: justify;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;8&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;  RELATED POST&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://abapdictionary.blogspot.com/2008/06/creating-collective-search-helps.html"&gt;CREATING COLLECTIVE SEARCH HELP&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/abap-faq-interactive-reports.html"&gt;SAP ABAP FAQ'S ON INTERACTIVE REPORT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/faq-on-scripts.html"&gt;SAP ABAP INTERVIEW QUESTIONS ON SCRIPTS PART ONE&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/faq-on-scripts-2.html"&gt;&lt;br /&gt;SAP ABAP INTERVIEW QUESTIONS ON SCRIPTS PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/faq-on-scripts-3.html"&gt;SAP ABAP INTERVIEW QUESTIONS ON SCRIPTS PART THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/abap-faq-1.html"&gt;SAP ABAP  INTERVIEW ROUND ONE FAQ'S PART ONE&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-607531123741400118?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/607531123741400118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=607531123741400118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/607531123741400118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/607531123741400118'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/data-base-optimizer.html' title='Data Base Optimizer'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-985559548348714886</id><published>2008-06-06T06:28:00.000-07:00</published><updated>2010-01-05T07:56:25.542-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEARCH HELP IN ABAP'/><title type='text'>Creating Collective Search Helps</title><content type='html'>&lt;p style="text-align: justify; font-weight: bold; color: rgb(255, 0, 0);" class="MsoNormal"&gt;Procedure&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;In the initial screen of the ABAP Dictionary, select object class Search help, enter the name of the search help and choose Create.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;A dialog box appears in which you must select the type of search help.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Select Collective search help and choose .&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;The maintenance screen for collective search helps is displayed.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Enter an explanatory text in the field Short text.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;You can for example find the search help at a later time using this short text.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;In the Definition tab page enter the parameters of the collective search help.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Select the Imp flag if it is an import parameter. Select the Exp flag if it is an export parameter.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Define the types for the parameters of a collective search help by assigning a data element. Enter the name of the data element that describes the contents of the search help parameter in the Data element field.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;You can assign the parameter a default value in the Default value field.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;In exceptions it could be necessary to change the standard process defined by the search help. You can implement the deviation from the standard using a search help exit.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;In this case enter the name of the search help exit in the corresponding field.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;On the Included search helps tab page, define the search helps that you want to include in the collective search help.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;You can include elementary search helps and collective search helps. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Use the Hide flag to control whether an included search help should appear in the dialog box for selecting the elementary search help. If the flag is set, the search help is not offered.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;It makes sense to hide search help inclusions if one or more search paths in the standard system should not be used in a concrete R/3 System. Similarly, search help inclusions can also be already hidden in the standard system because they only can be used meaningfully in a few R/3 Systems. You have to cancel the flag in this case.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Position the cursor one after the other on each allocated search help and choose Parameter assignment.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;In the next screen, enter the parameter names of the elementary search helps to which the corresponding parameters of the collective search help should be assigned in the field Reference parameter. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;You can select the parameters contained in the included search help using the input help. Create a proposal for the assignment with Proposal.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Save your entries.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;A dialog box appears in which you have to assign a development class to the search help.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Choose .&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; font-weight: bold; color: rgb(255, 0, 0);" class="MsoNormal"&gt;Result&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;The collective search help is activated. You can find information about the activation flow in the activation log, which you can display with Utilities ® Activation log. If errors occurred when the collective search help was activated, the activation log is automatically displayed. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;Do not forget to link the search help to a screen field. The search help attachment is not part of the search help definition; it is part of the object definition to which the search help is attached.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify; font-weight: bold; color: rgb(204, 0, 0);" class="MsoNormal"&gt;Other Options&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;You can test the flow of an input help defined by the collective search help with . A dialog box appears in which you can simulate the behavior of the search help under different conditions. You can obtain information about the options provided in this window with .&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;RELATED POST&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;a href="http://abapdictionary.blogspot.com/2007/11/sap-tables.html"&gt;SAP TABLES&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;a href="http://www.abapprogramming.net/2007/09/abap-faq-2.html"&gt;SAP ABAP  INTERVIEW ROUND ONE FAQ'S PART TWO&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/abap-faq-3.html"&gt;&lt;br /&gt;SAP ABAP  INTERVIEW ROUND ONE FAQ'S PART  THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;S&lt;a href="http://www.abapprogramming.net/2007/09/abap-faq-4.html"&gt;AP ABAP  INTERVIEW ROUND ONE FAQ'S PART FOUR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/faq-on-tables-and-internal-tables.html"&gt;SAP ABAP INTERVIEW QUESTIONS ON INTERNAL TABLE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/faq-report-formating-and-events.html"&gt;SAP ABAP INTERVIEW QUESTIONS ON REPORT FORMATION AND EVENTS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/abap-faq-modulization.html"&gt;SAP ABAP INTERVIEW QUESTIONS ON MODULARIZATION &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/09/abap-faq-basis-layer.html"&gt;SAP ABAP INTERVIEW QUESTIONS ON BASIS LAYER&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-985559548348714886?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/985559548348714886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=985559548348714886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/985559548348714886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/985559548348714886'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2008/06/creating-collective-search-helps.html' title='Creating Collective Search Helps'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-915554001926096899</id><published>2007-11-06T07:53:00.000-08:00</published><updated>2010-01-05T07:56:53.559-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP TABLES'/><title type='text'>SAP TABLES</title><content type='html'>MM MODULE&lt;br /&gt;&lt;br /&gt;CYCLE:&lt;br /&gt;Purchase Requisition (PR)       Request for Quotation (RFQ)      (Vendor Evaluation)&lt;br /&gt;Purchase Order (PO)    Goods Receipt Note (GRN)      Invoice Verification     Data to FI&lt;br /&gt;&lt;br /&gt;Tables and important Fields.&lt;br /&gt;&lt;br /&gt;LFA1 – vendor data (LIFNR)&lt;br /&gt;LFB1 --  Company Code Segment : Vendor Data(LIFNR, BUKRS)&lt;br /&gt;LFC1 --  FI Related Vendor Data (LIFNR, BELNR)&lt;br /&gt;LFM1 – Pur. Orgn. Related Vendor Data (LIFNR, EKORG)&lt;br /&gt;&lt;br /&gt;MARA – Material Master (MATNR)&lt;br /&gt;MARC – Material Master with Plant Data (MATNR, WERKS)&lt;br /&gt;MARD – Material Master with Storage Location Data (MATNR, LGORT, WERKS)&lt;br /&gt;MAKT – Material Master Material Descriptions (MATNR, MATKL)&lt;br /&gt;MBEW – Material Valuation Data (MATNR, BWTAR)&lt;br /&gt;MVKE – Material Master : Sales related Data&lt;br /&gt;MDKP, MDTB – MRP related Data( Header, Item)&lt;br /&gt;MCHA, MCHB – Material Batches (Header, Item) (MATNR, WERKS, LGORT, CHARG)&lt;br /&gt;&lt;br /&gt;EBAN – Pur. Req. Data( BANFN, BNFPO, BADAT, MATNR)&lt;br /&gt;EINA – Purchase Info. Record(General Data)(INFNR, MATNR, LIFNR)&lt;br /&gt;EINE – Purchase Info. Record (pur. Orgn. Data) (INFNR, EKORG)&lt;br /&gt;ELBK, ELBN, ELBP – Vendor Evaluation Related Data&lt;br /&gt;EKKO – PO Data (Header) (EBELN, BSTYP, BSART)&lt;br /&gt;EKPO – PO Data (Item) (EBELN, EBELP, MATNR)&lt;br /&gt;Pur. Req., RFQ and PO are differentiated by Doc Type (BSTYP) in EKKO table.&lt;br /&gt;For RFQ it is ‘A’ and for PO it is ‘F’&lt;br /&gt;MKPF – GRN Data (Header) (EBELN, BLDAT, BUDAT, XBLNR, BKTXT)&lt;br /&gt;MSEG – GRN Data(Item) MBLNR, BWART, LIFNR, MATNR, EBELN)&lt;br /&gt;  Apart from this there are lot of tables which begin with ‘M’ &amp;amp; ‘E’, but we&lt;br /&gt;  use the following very often.&lt;br /&gt;EQUK – Quota (Header)(QUNUM, MATNR)&lt;br /&gt;EQUP – Quota (Item) (QUNUM, QUPOS, LIFNR)&lt;br /&gt;EKBE – PO History Data (EBELN, EBELP, BELNR, BLDAT, MATNR, VGABE)&lt;br /&gt;EKBZ – PO History with Delivery Costs(EBELN, BELNR, LIFNR, XBLNR)&lt;br /&gt;EKET – Schedule lines data of a PO(EBELN, EINDT, SLFDT)&lt;br /&gt;EKES – Vendor Confirmations Data (EBELN, EBTYP, EINDT, XBLNR)&lt;br /&gt;T163F – Confirmation Texts (EBTYP, EBTXT)&lt;br /&gt;T156 – Movement Types (BWARE)&lt;br /&gt;T024 – Purchasing Groups&lt;br /&gt;T024E – Purchase Organizations&lt;br /&gt;T163 – Item Category’s in Purchasing Documents(PSTYP)&lt;br /&gt;T149D – Valuation Types&lt;br /&gt;T134 – Material Types&lt;br /&gt;FVLK – Delivery Types&lt;br /&gt;STKO, STPO – BOM(Bill Of Material) related Data (Header &amp;amp; Item)&lt;br /&gt;STPU, STPN, STST, STZU – BOM Related Tables&lt;br /&gt;RKPF, RBKP, RSEG (Header &amp;amp; Item) – MM – FI Related Data&lt;br /&gt;KONO, KONH – Pricing data&lt;br /&gt;T006 – Basic Unit Of Measurements&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SALES &amp;amp; DISTRIBUTION MODULE RELATED TABLES :&lt;br /&gt;&lt;br /&gt;Cycle:&lt;br /&gt;Enquiry  Quotation  Sales Order  Delivery(Picking, Packing, Post Goods Issue and Shipment)  Billing  Data to FI.&lt;br /&gt;&lt;br /&gt;TABLES and Important Fields :&lt;br /&gt;VBAK : Sales Document(Header Data) (VBELN)&lt;br /&gt;VBAP : Sales Document(Item Data) (VBELN, POSNR, MATNR, ARKTX, CHARG)&lt;br /&gt;Enquiry, Quotation, Sales Order are differentiated based on Doc.&lt;br /&gt;Type(VBTYP Field) in VBAK, VBAP Tables for Enquiry VBTYP = A, for Quotation ‘B’ &amp;amp; for Order it is ‘C’.)&lt;br /&gt;LIKP : Delivery Table(Header Data) (VBELN, LFART, KUNNR, WADAT, INCOL)&lt;br /&gt;LIPS : Delivery Table(Item Data)(VBELN, POSNR, WERKS, LGORT, MATNR, VGBEL)&lt;br /&gt;(LIPS – VBGELN = VBAK- VBELN, LIPS-VGPOS = VBAP-POSNR)&lt;br /&gt;VTTK : Shipment Table(Header Data) (TKNUM)&lt;br /&gt;VTTP : Shipment Table (Item Data)(TKNUM, TPNUM, VBELN)&lt;br /&gt;(VTTP – VBELN = LIKP – VBELN)&lt;br /&gt;VBRK : Billing Table(Header Data) (VBELN, FKART, BELNF)&lt;br /&gt;VBRP : Billing Table(Item Data) (VBELN, POSNR, FKIMG, NEWR, VGBEL, VGPOS)&lt;br /&gt;(VERP – AUBEL = VBAK- VBELN, VBRP – VBEL = LIKP – VBELN)&lt;br /&gt;Apart from these tables there are lot of other tables which starts with ‘V’, but we use the&lt;br /&gt;following tables frequently.&lt;br /&gt;VBUK: All Sales Documents status &amp;amp; Admn. Data(Header) (VBELN, VBTYP)&lt;br /&gt;VBTYP = ‘C’ (Sales Order) VBTYP = ‘L’(Delivery) VBTYP = ‘M’(Invoice)&lt;br /&gt;VBUP: Sales Documents status &amp;amp; Admin. Data(Item) (VBELN, POSNR)&lt;br /&gt;VBEP : Sales Document Schedule Lines Data (VBELN, POSNR, EDATU, WMENG)&lt;br /&gt;VBKD: To get sales related Business data like Payment terms etc.(VBELN, ZTERM)&lt;br /&gt;VBFA: Sales Document flow data(VBELV, VBELN, POSNV, VBTYP)&lt;br /&gt;VBPA: Partner functions Data(VBELN, PARVW, KUNNR, LIFNR)&lt;br /&gt;TVLKT: Delivery Type: Texts(LFART, VTEXT)&lt;br /&gt;KNA1, KNB1, KNC1 : Customer Master Data and Other Partner’s Data(KUNNR, &lt;br /&gt;NAME1,LAND1)&lt;br /&gt;KNVK: Customer Master Contact Person(PARNR, KUNNR)&lt;br /&gt;KNVV: Customer Master Sales Data.&lt;br /&gt;LFA1, LFB1, LFC1: Vendor Master Data(To get Transporter data)(LIFNR, NAME1, ORT01)&lt;br /&gt;MARA, MARC, MARD : Material Master Data(Basic, Plant, St. Location Views)&lt;br /&gt;TVKO: Sales Organizations(VKORG)&lt;br /&gt;TVKOV: Distribution Channels(VTWEG)&lt;br /&gt;TVTA: Divisions(SPART)&lt;br /&gt;TVKBZ: Sales Office(VKBUR)&lt;br /&gt;TVBVK: Sales Group(VKGRP)&lt;br /&gt;T077D: Customer Account Group(KTOKD)&lt;br /&gt;T001W: Plants(WERKS)&lt;br /&gt;T001L: Storage Locations(LGORT)&lt;br /&gt;TWLAD: To get address of Storage Location and Plant(LGORT, ADRNR)&lt;br /&gt;TVAU: Sales Document (Order) Types&lt;br /&gt;KONV: Condition Types (pricing) (KNUMV, KSCHL, KWETR)&lt;br /&gt;T685T: Condition Types Texts.&lt;br /&gt;ADRC: To get Addresses of Partners&lt;br /&gt;VBBE, VBBS: Sales Requirements Data&lt;br /&gt;VBKA: Sales Activities Data&lt;br /&gt;VBPV: Sales Document Product Proposal&lt;br /&gt;&lt;br /&gt;PP &amp;amp; PM Module&lt;br /&gt;&lt;br /&gt;AFKO: PP Order Header Data&lt;br /&gt;AFPO: PP Order Item Data&lt;br /&gt;AFVV: Order Operations Data Qty/Date/Values&lt;br /&gt;AFVC: Operations within an Order&lt;br /&gt;AFRU: Order Completion Confirmation&lt;br /&gt;CSLA: Activity Types Master Data&lt;br /&gt;CSLT: Activity Types Texts&lt;br /&gt;KAKO: Capacity Header Segment&lt;br /&gt;CRHD: Work Center Header Data&lt;br /&gt;AUFK: Order Master Data&lt;br /&gt;AFIH: Maintenance Order Header&lt;br /&gt;AUFM: Goods Movement For Order&lt;br /&gt;EQUI: Equipment Master Data&lt;br /&gt;EQKT: Equipment Texts&lt;br /&gt;ILOA: PM Object Location&lt;br /&gt;T024I: Maintenance Planner Groups&lt;br /&gt;T357: Plant Section&lt;br /&gt;IFLO: Functional Location Text&lt;br /&gt;IHSG: Permits in PM&lt;br /&gt;IHGNS: Permit segment in PM&lt;br /&gt;T357G_T: Permit Text&lt;br /&gt;RESB: Reservation / Dependent requirement&lt;br /&gt;V_EQUI: View for Equipment description&lt;br /&gt;VIAUFKS: View for Order and Equipment Data&lt;br /&gt;CAVFVD: Work Center Text.&lt;br /&gt;VIQMEL: Notification Header View&lt;br /&gt;VIQMFEL: PM Notification View&lt;br /&gt;VIQMMA, VIQMSM : Views for Activities and Tasks&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FI/CO Module&lt;br /&gt;&lt;br /&gt;T001: Company Codes&lt;br /&gt;T002: Language Keys&lt;br /&gt;T003: FI Document Types&lt;br /&gt;T004: Chart Of Accounts&lt;br /&gt;T005: Country Keys&lt;br /&gt;T007A: Tax Keys&lt;br /&gt;T012: House Banks&lt;br /&gt;TKA01: Controlling Areas&lt;br /&gt;SKA1, SKB1: G/L Account Master data&lt;br /&gt;SKAT : G/L Accounts Texts&lt;br /&gt;KNBK: Customer Master(Bank Details)&lt;br /&gt;LFBK: Vendor Master (Bank Details)&lt;br /&gt;BKPF: Accounting Doc. Header&lt;br /&gt;BSEG: Accounting Doc. Item(Cluster Table)&lt;br /&gt;BSIS: G/L Open Items&lt;br /&gt;BSAS: G/L Closed Items&lt;br /&gt;BSID: Customer Open Items(Account Receivables)&lt;br /&gt;BSAD: Customer Closed Items)(Account Receivables)&lt;br /&gt;BSIK: Vendor Open Items(Account Payables)&lt;br /&gt;BSAK: Vendor Closed Items(Account Payables)&lt;br /&gt;BKPF and BSEG Tables consists of data from BSIS, BSAS, BSID, BSAD, BSIK, and BSAK tables.&lt;br /&gt;BSET: Tax Information&lt;br /&gt;BSEC: One Time Vendor Records&lt;br /&gt;CSKS: Cost Center Master&lt;br /&gt;CSKT: Cost Center Texts&lt;br /&gt;CSSK: Cost Center/ Cost Element Relations&lt;br /&gt;GLPCA: EC-PCA: Actual Line Items&lt;br /&gt;GLPCT: EC-PCA: Totals Table&lt;br /&gt;COEP: Co-Object Line Items by Period&lt;br /&gt;COST: Co-Object Price Totals&lt;br /&gt;CSSL: Cost Center- Activity Type&lt;br /&gt;CRCO: Work Center- Cost Center Assignment&lt;br /&gt;CSLA: Activity Types Master(LSTAR)&lt;br /&gt;CSKB: Cost Elements(KSTAR, KOKRS)&lt;br /&gt;COSS: Cost Totals(OBJNR, KSTAR)&lt;br /&gt;COBL: Coding Block&lt;br /&gt;CEPC: Profit Center Master Data&lt;br /&gt;BNKA: Master Records of banks&lt;br /&gt;TBSL: Posting Keys&lt;br /&gt;KEKO: Product  Costing Header Data&lt;br /&gt;ANLH: Main Asset Number&lt;br /&gt;ANLA, ANLB, ANLC : Segment Assets Masters&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;SEARCH HELP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-17-views.html"&gt;ABAP VIEWS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-15-dependencies-of-abap.html"&gt;DEPENDENCIES OF DICTIONARY OBJECTS&lt;/a&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-14-consistency-through-input.html"&gt;&lt;br /&gt;CONSITENCY THROUGH INPUT CHECKS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-13-performance-during-table.html"&gt;PERFORMANCE DURING TABLE ACCESS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-12-abap-dictionery.html"&gt;ABAP DICTIONARY BRIEF&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-5-data-base-dialog.html"&gt;DATA BASE DIALOG IN ABAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/04/table-types-in-abap-sap.ht"&gt;TYPES OF TABLES IN SAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/buffering-in-sap-abap.html"&gt;BUFFERING IN SAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/system-fields-in-sap.html"&gt;SYSTEM FIELDS IN SAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;IMPLEMENTING A SAP PROJECT DIFFERENT  STAGES&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/07/rfc-what-are-types-of-remote.html"&gt;SAP ABAP FAQ'S ON RFC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/04/abap-optimization.html"&gt;SAP ABAP OPTIMIZATION&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/03/abap-cross-applications-ale.html"&gt;SAP ABAP CROSS APPLICATIONS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/03/abap-assignment.html"&gt;ABAP ASSIGNMENT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/03/abap-faqs-real-time.html"&gt;ABAP REAL TIME INTERVIEW QUESTIONS PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/03/real-time-interview-questions-abap-sap.html"&gt;ABAP REAL TIME INTERVIEW QUESTIONS PART TWO&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/03/real-time-interview-questions-abap-sap.html"&gt;&lt;br /&gt;ABAP REAL TIME INTERVIEW QUESTIONS PART THREE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-915554001926096899?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/915554001926096899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=915554001926096899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/915554001926096899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/915554001926096899'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/sap-tables.html' title='SAP TABLES'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-9125483672553303630</id><published>2007-11-04T04:21:00.000-08:00</published><updated>2010-01-05T07:57:36.016-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TABLE TYPES IN ABAP'/><title type='text'>TABLE TYPES IN ABAP</title><content type='html'>Choosing a Table Type&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The table type (and particularly the access method) that you will use depends on how the typical internal table operations will be most frequently executed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard tables&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the most appropriate type if you are going to address the individual table entries using the index. Index access is the quickest possible access. You should fill a standard table by appending lines (ABAP APPEND statement), and read, modify and delete entries by specifying the index (INDEX option with the relevant ABAP command). The access time for a standard table increases in a linear relationship with the number of table entries. If you need key access, standard tables are particularly useful if you can fill and process the table in separate steps. For example, you could fill the table by appending entries, and then sort it. If you use the binary search option with key access, the response time is logarithmically proportional to the number of table entries.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sorted tables&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the most appropriate type if you need a table which is sorted as you fill it. You fill sorted tables using the INSERT statement. Entries are inserted according to the sort sequence defined through the table key. Any illegal entries are recognized as soon as you try to add them to the table. The response time for key access is logarithmically proportional to the number of table entries, since the system always uses a binary search. Sorted tables are particularly useful for partially sequential processing in a LOOP if you specify the beginning of the table key in the WHERE condition.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hashed tables&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the most appropriate type for any table where the main operation is key access. You cannot access a hashed table using its index. The response time for key access remains constant, regardless of the number of table entries. Like database tables, hashed tables always have a unique key. Hashed tables are useful if you want to construct and use an internal table which resembles a database table or for processing large amounts of data.&lt;br /&gt;&lt;br /&gt;Table type&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The table type determines how ABAP will access individual table entries. Internal tables can be divided into three types:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard tables have an internal linear index. From a particular size upwards, the indexes of internal tables are administered as trees. In this case, the index administration overhead increases in logarithmic and not linear relation to the number of lines. The system can access records either by using the table index or the key. The response time for key access is proportional to the number of entries in the table. The key of a standard table is always non-unique. You cannot specify a unique key. This means that standard tables can always be filled very quickly, since the system does not have to check whether there are already existing entries.&lt;br /&gt;&lt;br /&gt;Sorted tables are always saved sorted by the key. They also have an internal index. The system can access records either by using the table index or the key. The response time for key access is logarithmically proportional to the number of table entries, since the system uses a binary search. The key of a sorted table can be either unique or non-unique. When you define the table, you must specify whether the key is to be unique or not. Standard tables and sorted tables are known generically as index tables.&lt;br /&gt;&lt;br /&gt;Hashed tables have no linear index. You can only access a hashed table using its key. The response time is independent of the number of table entries, and is constant, since the system access the table entries using a hash algorithm. The key of a hashed table must be unique. When you define the table, you must specify the key as UNIQUE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;SEARCH HELP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-17-views.html"&gt;ABAP VIEWS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-15-dependencies-of-abap.html"&gt;DEPENDENCIES OF DICTIONARY OBJECTS&lt;/a&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-14-consistency-through-input.html"&gt;&lt;br /&gt;CONSITENCY THROUGH INPUT CHECKS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-13-performance-during-table.html"&gt;PERFORMANCE DURING TABLE ACCESS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-12-abap-dictionery.html"&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-1.html"&gt;abap communication interface 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-1.html"&gt; abap communication interface &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-2.html"&gt;2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-1.html"&gt; abap communication interface &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-3.html"&gt;3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-1.html"&gt; abap communication interface &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-4.html"&gt;4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-1.html"&gt; abap communication interface &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-5.html"&gt;5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-1.html"&gt; abap communication interface &lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2007/10/communication-interface-6-asynchronous.html"&gt;6&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-9125483672553303630?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/9125483672553303630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=9125483672553303630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/9125483672553303630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/9125483672553303630'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/table-types-in-abap.html' title='TABLE TYPES IN ABAP'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-2263672313159592122</id><published>2007-11-02T02:30:00.000-07:00</published><updated>2010-01-05T07:58:08.949-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SELECTION METHOD ON SEARCH HELP IN ABAP'/><title type='text'>SELECTION METHOD ON SEARCH HELP IN ABAP</title><content type='html'>The possible values displayed for a field by the input help are determined at runtime by a selection from the database. When a search help is defined, you must define the database object from which the data should be selected by specifying a table or a view as the selection method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It makes sense to use a view as selection method if the data about the possible values that is relevant for the input help is distributed on several tables. If this data is all in one table or in the corresponding text table, you can use the table as a selection method. The system automatically ensures that the text of the text table is used in the user's logon language.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If there is not yet a view that combines the data that is relevant for an input help, you must first create it in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       Maintenance views may not be used as the selection method for search helps. Normally a database view is used. However, you should note that database views (in the R/3 System) are always created with an inner join. As a result, only those values having an entry in each of the tables involved are offered in the input help. Sometimes the values should be determined with an outer join.&lt;br /&gt;&lt;br /&gt;If the selection method of a search help is client-dependent, the possible values are only selected in the user's logon client.&lt;br /&gt;&lt;br /&gt;DESCRIPTION OF DIALOG BEHAVIOR:&lt;br /&gt;&lt;br /&gt;The possible values are presented in the dialog box for displaying the hit list and the user can select values from here. If the possible values are formal keys, further information should also be displayed.&lt;br /&gt;&lt;br /&gt;If the hit list is very large, the user should be able to define further restrictions for the attributes of the entry. Restricting the set of data in this way both increases the clarity of the list and reduces the system load. Additional conditions can be entered in a further dialog window, the dialog box for restricting values.&lt;br /&gt;&lt;br /&gt;The dialog type of a search help defines whether the dialog box for restricting values should be displayed before determining the hit list.&lt;br /&gt;&lt;br /&gt;You must define the characteristics to appear on either (or both) of the dialog boxes as parameters in the search help. You can use all the fields of the selection method (with the exception of the client field) and the non-key fields of your text table as parameters.&lt;br /&gt;&lt;br /&gt;You define which parameter should appear in which dialog box (in what order) by assigning the parameters positions in the two dialog boxes. You can thus use different parameters (or different orders) in the two dialog boxes.&lt;br /&gt;&lt;br /&gt;Types must be defined for search help parameters with data elements. These define the display in the two dialog boxes. If nothing else is defined, a parameter uses the data element of the corresponding field of the selection method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INTERFACE OF SEARCH HELP:&lt;br /&gt;&lt;br /&gt;When you define a parameter of a search help, you must also define whether it should be used to copy data to the input help (IMPORT parameter) or whether to return data from the input help (EXPORT parameter).&lt;br /&gt;&lt;br /&gt;The IMPORT and EXPORT parameters of a search help together make up your interface. (This is also analogous to function modules.)&lt;br /&gt;&lt;br /&gt;You can also define interface parameters that do not appear in either the dialog box for displaying the hit list or the dialog box for restricting values. This is useful for example when screen fields that do not appear on either of the two dialog boxes are to be updated when you select a value.&lt;br /&gt;&lt;br /&gt;The location from which the IMPORT parameters of a search help get their values and the screen fields in which the contents of the EXPORT parameters of the search help are returned are defined in the search help attachment.&lt;br /&gt;&lt;br /&gt;The search field is a special case. Its contents are only used in the input help if  it is a search string (that is, if it contains a ´*´ or a ´+´) and the parameter linked with the search field is an IMPORT parameter.&lt;br /&gt;&lt;br /&gt;Parameters that only contain additional information about the search field should not be defined as IMPORT parameters since the user must otherwise empty the corresponding screen fields each time before he can define a new value with the input help.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HOW TO USE SEARCH HELP?&lt;br /&gt;&lt;br /&gt;A search help describes the flow of an input help. The search help can only take effect using a mechanism that assigns the search help to this field. This mechanism is called the search help attachment to the field.&lt;br /&gt;&lt;br /&gt;Attaching a search help to a field has an effect on the field's behavior. It is therefore considered to be part of the field definition.&lt;br /&gt;&lt;br /&gt;The semantic and technical attributes of a screen field (type, length, F1 help, ...) are not normally defined directly when the input template is defined. On the contrary, only a reference to an ABAP Dictionary field (usually with the same name) is specified in the Screen Painter. The screen field takes on the attributes of this field from the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;The same principle is also used to define the input help of a screen field. The search help is thus attached to the ABAP Dictionary search field and not to the screen field.&lt;br /&gt;&lt;br /&gt;In the search help attachment, the interface parameters of the search help and the screen fields providing data for the input help or getting data from the input help are assigned to one another. The search field must be assigned to an EXPORT parameter of the search help at this time. This parameter should also be an IMPORT parameter so that the user can take advantage of search patterns that are already entered.&lt;br /&gt;&lt;br /&gt;Fields that do not have a search help attachment can also have an input help since further mechanisms (e.g. domain fixed values) are also used for the F4 help.&lt;br /&gt;&lt;br /&gt;SEARCH HELP ATTACHMENT IN ABAP DICTIONARY:&lt;br /&gt;&lt;br /&gt;There are three mechanisms for attaching a search help to a field of the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;A search help can be attached directly to a field of a structure or table. The definition of this attachment is analogous to that of a foreign key. You have to define an assignment  (between the interface parameters of the search help and the fields of the structure) for which the system makes a proposal.&lt;br /&gt;&lt;br /&gt;If a field has a check table, its contents are automatically offered as possible values in the input help. The key fields of the check table are displayed. If a check table has a text table, its first character-like non-key field is displayed.&lt;br /&gt;&lt;br /&gt;If you are not satisfied with the described standard display of the data of the check table, you can attach a search help to the check table.  This search help is used for all the fields that have this table as check table. You have to define an assignment between the interface of the search help and the key of the check table when you define the attachment.&lt;br /&gt;&lt;br /&gt;The semantics of a field and its possible values are defined by its data element. You can therefore attach a search help to a data element. The search help is then available for all the fields that refer to this data element. In the attachment you must define an EXPORT parameter of the search help for the data transfer.&lt;br /&gt;&lt;br /&gt;Attaching a search help to a check table (or a data element) can result in a high degree of reusability. However, there are restrictions on passing further values via the interface of the search help.&lt;br /&gt;&lt;br /&gt;(135)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;series.&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/sap-script-controls-1.html"&gt;SAP SCRIPT CONTROLS PART 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/sap-script-controls-2.html"&gt;SAP SCRIPT CONTROLS PART 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/sap-script-controls-3.html"&gt;SAP SCRIPT CONTROLS PART 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/sap-script-controls-4.html"&gt;SAP SCRIPT CONTROLS PART 4&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/sap-script-controls-5.html"&gt;SAP SCRIPT CONTROLS PART 5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2007/11/sap-script-controls-6.html"&gt;SAP SCRIPT CONTROLS PART 6&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/04/table-types-in-abap-sap.ht"&gt;TYPES OF TABLES IN SAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/buffering-in-sap-abap.html"&gt;BUFFERING IN SAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/system-fields-in-sap.html"&gt;SYSTEM FIELDS IN SAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;IMPLEMENTING A SAP PROJECT DIFFERENT  STAGES&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-2263672313159592122?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/2263672313159592122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=2263672313159592122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2263672313159592122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2263672313159592122'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/selection-method-on-search-help-in-abap.html' title='SELECTION METHOD ON SEARCH HELP IN ABAP'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-7094580765836668254</id><published>2007-11-01T05:27:00.000-07:00</published><updated>2010-01-05T07:58:56.855-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEARCH HELP IN ABAP'/><title type='text'>SEARCH HELP IN ABAP</title><content type='html'>SEARCH HELP IN ABAP :&lt;br /&gt;&lt;br /&gt;The input help (F4 help) is a standard function of the R/3 System. It permits the user to display a list of possible values for a screen field. A value can be directly copied to an input field by list selection.&lt;br /&gt;&lt;br /&gt;The fields having an input help are shown in the R/3 System by the input help key to the right of the field. This key appears as soon as the cursor is positioned on the corresponding screen field. The help can be started either by clicking on this screen element or with function key F4.&lt;br /&gt;&lt;br /&gt;If the number of possible entries for a field is very large, you can limit the set of displayed values by entering further restrictions.&lt;br /&gt;&lt;br /&gt;The display of the possible entries is enhanced with further useful information about the displayed values. This feature is especially useful if the field requires the entry of a formal key.&lt;br /&gt;&lt;br /&gt;Since the input help is a standard function, it should look and behave the same throughout the entire R/3 System. The development environment therefore provides tools for assigning a standardized input help to a screen field.&lt;br /&gt;&lt;br /&gt;The precise description of the input help for a field is usually defined by its semantics. For this reason, the input help for a field is normally defined in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WHY DO U NEED SEARCH HELP?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A number of requirements must be met for the input help of a screen field (search field):&lt;br /&gt;&lt;br /&gt;Information (about the context) known to the system must be taken into consideration in the input help. This includes entries the user already made in the current input template as well as information obtained in previous dialog steps. Normally the input help uses the context to limit the set of possible values.&lt;br /&gt;&lt;br /&gt;The input help must determine the values that can be offered to the user for selection. The data to be displayed as supplementary information in the list of possible values must also be determined. When the possible values are determined, the restrictions resulting from the context and from further search conditions specified by the user must also be taken into consideration.&lt;br /&gt;&lt;br /&gt;The input help must hold a dialog with the user. This dialog always contains the presentation of the possible values (with supplementary information) in list form and the possibility to select a value from this list. A search template in which the user can define conditions for the values to be displayed is also sometimes required&lt;br /&gt;&lt;br /&gt;If the user selects a value, the input help must return it to the search field. The input template often contains more fields (often only display fields) containing further explanatory information about the search field. The input help should also update the contents of these fields in this case.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The ABAP Dictionary object search help:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The ABAP Dictionary object search help is used to describe an input help. The definition of a search help contains the information the system needs to satisfy the described requirements.&lt;br /&gt;&lt;br /&gt;The interface of the search help controls the data transfer from the input template to the F4 help and back. The interface defines the context data to be used and the data to be returned to the input template when a value is selected.&lt;br /&gt;&lt;br /&gt;The internal behavior of the search help describes the F4 process itself. This includes the selection method with which the values to be displayed should be determined as well as the dialog behavior describing the interaction with the user.&lt;br /&gt;&lt;br /&gt;As with a function module, search helps distinguish between the interface with which it exchanges data with other software components and the internal behavior (for function modules, the latter is defined by the source text).&lt;br /&gt;&lt;br /&gt;It only makes sense to define a search help if there is a mechanism available with which the search help can be accessed from a screen. This mechanism is called the search help attachment and will be described later.&lt;br /&gt;&lt;br /&gt;Like the editor for function modules, the editor for search helps also enables you to test an object. You can thus test the behavior of a search help without assigning it to a screen field.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECTION METHOD OF SEARCH HELP:&lt;br /&gt;&lt;br /&gt;The possible values displayed for a field by the input help are determined at runtime by a selection from the database. When a search help is defined, you must define the database object from which the data should be selected by specifying a table or a view as the selection method.&lt;br /&gt;&lt;br /&gt;It makes sense to use a view as selection method if the data about the possible values that is relevant for the input help is distributed on several tables. If this data is all in one table or in the corresponding text table, you can use the table as a selection method. The system automatically ensures that the text of the text table is used in the user's logon language.&lt;br /&gt;&lt;br /&gt;If there is not yet a view that combines the data that is relevant for an input help, you must first create it in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;Maintenance views may not be used as the selection method for search helps. Normally a database view is used. However, you should note that database views (in the R/3 System) are always created with an inner join. As a result, only those values having an entry in each of the tables involved are offered in the input help. Sometimes the values should be determined with an outer join. In this case you should choose a help view as the selection method. You can find more information about help views in the appendix.&lt;br /&gt;&lt;br /&gt;If the selection method of a search help is client-dependent, the possible values are only selected in the user's logon client.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(131)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;Happy coding.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/sap-abap-syntax-for-add-corresoponding.html"&gt;ADD CORRESPONDING&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/sap-abap-syntax-for-assign.html"&gt;ASSIGN PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/sap-abap-syntax-for-assign-part-two.html"&gt;ASSIGN PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/sap-abap-syntax-for-control-break-with.html"&gt;CONTROL BREAK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/at-events-in-lists-in-abap.html"&gt;EVENTS IN LISTS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/at-events-in-lists-in-abap-part-two.html"&gt;EVENTS IN LISTS PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/at-events-on-selection-screens-syntax.html"&gt;EVENTS ON SELECTION SCREEN PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/03/at-events-on-selection-screen-sap-abap.html"&gt;EVENTS ON SELECTION SCREEN PART TWO&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-7094580765836668254?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/7094580765836668254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=7094580765836668254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7094580765836668254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7094580765836668254'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/search-help-in-abap.html' title='SEARCH HELP IN ABAP'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-8022740866430820962</id><published>2007-11-01T05:24:00.000-07:00</published><updated>2010-01-05T07:59:24.449-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='INNER AND OUTER JOINS IN ABAP'/><title type='text'>INNER AND OUTER JOINS IN ABAP</title><content type='html'>INNER AND OUTER JOINS IN ABAP:&lt;br /&gt;&lt;br /&gt;The set of data that can be selected with a view greatly depends on whether the view implements an inner join or an outer join.&lt;br /&gt;&lt;br /&gt;With an inner join, you only get those records which have an entry in all the tables included in the view. With an outer join, on the other hand, those records that do not have a corresponding entry in some of the tables included in the view are also selected.&lt;br /&gt;&lt;br /&gt;The hit list found with an inner join can therefore be a subset of the hit list found with an outer join.&lt;br /&gt;&lt;br /&gt;Database views implement an inner join. You only get those records which have an entry in all the tables included in the view.&lt;br /&gt;&lt;br /&gt;Maintenance views implement an outer join.&lt;br /&gt;&lt;br /&gt;(124)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/03/abap-synteax-for-authority-check.html"&gt;AUTHORITY CHECK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/abap-syntax-for-back.html"&gt;BACK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntax-for-break-point.html"&gt;BREAK POINT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/abap-syntax-for-call-function.html"&gt;CALL FUNCTION PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/call-function-syntax-for-sap-abap.html"&gt;CALL FUNCTION PART  TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/call-function-syntax-for-sap-abap_07.html"&gt;CALL FUNCTION PART  THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/call-function-syntax-for-sap-abap-part.html"&gt;CALL FUNCTION PART  FOUR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntax-for-call-function-part.html"&gt;CALL FUNCTION PART FIVE&lt;/a&gt;&lt;br /&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-8022740866430820962?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/8022740866430820962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=8022740866430820962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8022740866430820962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/8022740866430820962'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/inner-and-outer-joins-in-abap.html' title='INNER AND OUTER JOINS IN ABAP'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-7003051825693262118</id><published>2007-11-01T05:15:00.000-07:00</published><updated>2010-01-05T07:59:50.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP VIEWS'/><title type='text'>ABAP VIEWS</title><content type='html'>NEED OF VIEWS:&lt;br /&gt;&lt;br /&gt;Data for an application object is often distributed on several database tables. Database systems therefore provide you with a way of defining application-specific views on data in several tables. These are called views.&lt;br /&gt;&lt;br /&gt;Data from several tables can be combined in a meaningful way using a view (join). You can also hide information that is of no interest to you (projection) or only display those data records that satisfy certain conditions (selection).&lt;br /&gt;&lt;br /&gt;The data of a view can be displayed exactly like the data of a table in the extended table maintenance.&lt;br /&gt;&lt;br /&gt;Given two tables TABA and TABB. Table TABA contains 2 entries and table TABB 4 entries.&lt;br /&gt;&lt;br /&gt;The tables are first appended to one another. This results in the cross-product of the two tables, in which each record of TABA is combined with each record of TABB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Usually the entire cross-product is not a meaningful selection. You should therefore limit the cross-product with a join condition. The join condition describes how the records of the two tables are related.&lt;br /&gt;&lt;br /&gt;In our example, Field 3 of TABB identifies Field 1 of TABA. The join condition is then:&lt;br /&gt;TABA - Field 1 = TABB - Field 3&lt;br /&gt;&lt;br /&gt;With this join condition, all the records whose entry in Field 1 is not identical to the entry in Field 3 are removed from the cross product. The column for Field 3 in the view is therefore unnecessary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;STRUCTURE OF A VIEW:&lt;br /&gt;&lt;br /&gt;Often some of the fields of the tables involved in a view are of no interest. You can explicitly define the set of fields to be included in the view (projection).&lt;br /&gt;&lt;br /&gt;The set of records that can be displayed with the view can be further restricted with a selection condition.&lt;br /&gt;&lt;br /&gt;In our example, only those records with value 'A' in Field 4 should be displayed with the view.&lt;br /&gt;&lt;br /&gt;A selection condition therefore can also be formulated with a field that is not contained in the view.&lt;br /&gt;&lt;br /&gt;The join conditions can also be derived from the existing foreign key relationships. Copying the join conditions from the existing foreign keys is supported in the maintenance transaction.&lt;br /&gt;&lt;br /&gt;The field names of the underlying table fields are normally used as field names in the view. However, you can also choose a different field name. This is necessary for instance if two fields with the same name are to be copied to the view from different tables. In this case you must choose a different name for one of the two fields in the view.&lt;br /&gt;&lt;br /&gt;Selection with a database view, however, is usually more efficient than selection with a nested SELECT statement.&lt;br /&gt;&lt;br /&gt;As of Release 4.0 you can formulate the join condition directly in OPEN SQL.&lt;br /&gt;&lt;br /&gt;A view has type character and can be accessed in programs like all other types and can be used to define data objects.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA BASE VIEWS:&lt;br /&gt;&lt;br /&gt;A database view is defined in the ABAP Dictionary and automatically created on the database during activation. Accesses to a database view are passed directly to the database from the database interface. The database software performs the data selection.&lt;br /&gt;&lt;br /&gt;If the definition of a database view is changed in the ABAP Dictionary, the view created on the database must be adjusted to this change. Since a view does not contain any data, this adjustment is made by deleting the old view definition and creating the view again in the ABAP Dictionary with its new definition.&lt;br /&gt;&lt;br /&gt;The maintenance status defines whether you can only read with the view or whether you can also write with it. If a database view was defined with more than one table, this view must be read only.&lt;br /&gt;&lt;br /&gt;The data read with a database view can be buffered. View data is buffered analogously to tables. The technical settings of a database view control whether the view data may be buffered and how this should be done. The same settings (buffering types) can be used here as for table buffering. The buffered view data is invalidated when the data in one of the base tables of the view changes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INCLUDES IN DATA BASE VIEWS:&lt;br /&gt;&lt;br /&gt;You can include entire tables in database views. In this case all the fields of the included table become fields of the view (whereby you can explicitly exclude certain fields). If new fields are included in the table or existing fields are deleted, the view is automatically adjusted to this change. A new or deleted field is therefore automatically included in the view or deleted from it.&lt;br /&gt;&lt;br /&gt;If an append structure is added to a table included in a view, the fields added with the append structure are automatically included in the view.&lt;br /&gt;&lt;br /&gt;To include a table in a view, you must enter the character '*' in field View field in the view maintenance, the name of the table to be included in the field Table and the character '*' again in the field Field name.&lt;br /&gt;&lt;br /&gt;If you do not want to insert a field of the included table in the view, you must enter a '-' in field View field, the name of the included table in field Table and the name of the field to be excluded in field Field name.&lt;br /&gt;&lt;br /&gt;As of Release 4.6C, fields of the base tables of a database view can be included in the view without modifications using an append view. This is analogous to enhancing a table using an append structure. An append view is assigned to exactly one database view. But more than one append view can be created for a database view.&lt;br /&gt;&lt;br /&gt;MAINTENANCE VIEWS:&lt;br /&gt;&lt;br /&gt;Data that is distributed on more than one table often forms a logical unit, called an application object. You should be able to display, change and create the data of such an application object together. Users usually are not interested in the technical implementation of the application object, such as the distribution of the data on several tables.&lt;br /&gt;&lt;br /&gt;You can maintain complex application objects in a simple way using a maintenance view. The data is automatically distributed on the underlying database tables.&lt;br /&gt;&lt;br /&gt;All the tables used in a maintenance view must be linked with a foreign key. This means that the join conditions are always derived from the foreign key in the maintenance view. You cannot enter the join conditions directly as in a database view.&lt;br /&gt;&lt;br /&gt;A maintenance interface with which the data of the view can be displayed, changed and created must be generated from the definition of a maintenance view in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;When the maintenance interface is created, function modules that distribute the data maintained with the view on the underlying tables are automatically generated.&lt;br /&gt;&lt;br /&gt;The maintenance interface is generated with the Transaction Generate Table View (Transaction SE54) or from the view maintenance screen with Utilities -&gt; Tab.maint.generator.&lt;br /&gt;&lt;br /&gt;(116)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapdictionary.blogspot.com/search/label/TABLES%20IN%20ABAP%20DICTIONARY"&gt;DATA BASE TABLES&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntax-for-call-method-of.html"&gt;CALL METHOD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntax-for-call-screen.html"&gt;CALL SCREEN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/call-transaction-syntax-for-sap-abap.html"&gt;CALL TRANSACTION&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/check-syntax-for-sap-abap.html"&gt;CHECK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntax-for-check-with-in-loops.html"&gt;CHECK WITH IN LOOP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntex-for-clear.html"&gt;CLEAR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntax-for-close-and-cnt.html"&gt;CLOSE AND CNT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/04/sap-abap-syntax-for-collect.html"&gt;COLLECT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-commit.html"&gt;COMMIT&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-7003051825693262118?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/7003051825693262118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=7003051825693262118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7003051825693262118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7003051825693262118'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/abap-views.html' title='ABAP VIEWS'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-2443020729298218020</id><published>2007-11-01T05:09:00.000-07:00</published><updated>2010-01-05T08:00:14.938-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='APPEND STRUCTURE'/><title type='text'>APPEND STRUCTURE</title><content type='html'>APPEND STRUCTURE:&lt;br /&gt;&lt;br /&gt;Append structures permit you to append customer fields to a SAP standard table without having to modify the table definition.&lt;br /&gt;&lt;br /&gt;An append structure is a structure which is assigned to exactly one table. There can be several append structures for a table.&lt;br /&gt;&lt;br /&gt;When a table is activated, all the active append structures for the table are found and their fields are appended to the table. If an append structure is created or changed, the table to which it is assigned is also activated and the changes also take effect there when it is activated.&lt;br /&gt;&lt;br /&gt;Like all structures, an append structure defines a type that can be used in ABAP programs.&lt;br /&gt;&lt;br /&gt;With Release 4.6C you can define foreign keys for fields that already exist in the table using an append structure. Search helps can also be attached to fields that already exist in the table.&lt;br /&gt;&lt;br /&gt;Customers create append structures in their namespace. The append structures are thus protected against overwriting during an upgrade.&lt;br /&gt;&lt;br /&gt;The new versions of the standard tables are imported during the upgrade. When the standard tables are activated, the fields contained in the active append structures are appended to the new standard tables. When append structures are added to a table, you therefore do not have to manually adjust the customer modifications to the new SAP version of the table (Transaction SPDD) during the upgrade.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The order of the fields in the ABAP Dictionary can differ from the order of the fields in the database. You therefore do not have to convert the table when you add an append structure or insert fields in an existing append structure. The new fields are simply appended to the table in the database. You can always adjust the structure by adjusting the database catalog (ALTER TABLE).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The new version of the SAP standard table is activated and the new field is appended to the database table.&lt;br /&gt;&lt;br /&gt;Please note the following points about append structures:&lt;br /&gt;&lt;br /&gt;No append structures may be created for pooled and cluster tables.&lt;br /&gt;&lt;br /&gt;If a long field (data type LCHR or LRAW) occurs in a table, it cannot be extended with append structures. This is because such long fields must always be in the last position of the field list, i.e. they must be the last field of the table.&lt;br /&gt;&lt;br /&gt;If you as a customer add an append structure to an SAP table, the fields in this append structure should be in the customer namespace for fields, that is they should begin with YY or ZZ. This prevents name collisions with new fields inserted in the standard table by SAP.&lt;br /&gt;&lt;br /&gt;If you as a partner have your own reserved namespace for your developments, the fields you select in append structures should always lie in this namespace.&lt;br /&gt;&lt;br /&gt;(103)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;IMPLEMENTING A SAP PROJECT DIFFERENT  STAGES&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-communication.html"&gt;COMMUNICATION PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-communication-part.html"&gt;COMMUNICATION PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-communication-part_06.html"&gt;COMMUNICATION PART THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-communication-four.html"&gt;COMMUNICATION PART FOUR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-communication-five.html"&gt;COMMUNICATION PART FIVE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-compute.html"&gt;COMPUTE PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-compute-part-two.html"&gt;COMPUTE PART TWO&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-2443020729298218020?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/2443020729298218020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=2443020729298218020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2443020729298218020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2443020729298218020'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/append-structure.html' title='APPEND STRUCTURE'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-7178345911824611173</id><published>2007-11-01T01:17:00.000-07:00</published><updated>2010-01-05T08:00:39.673-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CHANGES TO DATA BASE TABLES'/><title type='text'>CHANGES TO DATA BASE TABLES</title><content type='html'>CHANGES TO DATA BASE TABLES:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Correct access by ABAP programs to a database table is only possible if the runtime object of the table is consistent with the structure of the table in the database. Each time the table is changed in the ABAP Dictionary, you must check if the database structure of the table must be adjusted to the changed ABAP Dictionary definition of the table when it is activated (when the runtime object is rewritten).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      The database structure does not have to be altered for certain changes to the ABAP Dictionary. For example, you do not have to change the database structure when the order of the fields in the ABAP Dictionary is changed (other than for key fields). In this case the changed structure is simply activated in the ABAP Dictionary and the database structure remains unchanged.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The database table can be adjusted to the changed definition in the ABAP Dictionary in three different ways:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By deleting the database table and creating it again. The table on the database is deleted, the inactive table is activated in the ABAP Dictionary, and the table is created again on the database. Data existing in the table is lost.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By changing the database catalog (ALTER TABLE). The definition of the table on the database is simply changed. Existing data is retained. However, indexes on the table might have to be built again.&lt;br /&gt;&lt;br /&gt;       By converting the table. This is the most time-consuming way to adjust a structure.&lt;br /&gt;&lt;br /&gt;If the table does not contain any data, it is deleted in the database and created again with its new structure. If data exists in the table, there is an attempt to adjust the structure with ALTER TABLE. If the database system used is not able to do so, the structure is adjusted by converting the table.&lt;br /&gt;&lt;br /&gt;EXAMPLE:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CONVERSION PROCESS :&lt;br /&gt;&lt;br /&gt;The following example shows the steps necessary during conversion.&lt;br /&gt;&lt;br /&gt;Starting situation: Table TAB was changed in the ABAP Dictionary. The length of field 3 was reduced from 60 to 30 places.&lt;br /&gt;&lt;br /&gt;The ABAP Dictionary therefore has an active (field 3 has a length of 60 places) and an inactive (field 3 still has 30 places) version of the table.&lt;br /&gt;&lt;br /&gt;The active version of the table was created in the database, which means that field 3 currently has 60 places in the database. A secondary index with the ID A11, which was also created in the database, is defined for the table in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;The table already contains data.&lt;br /&gt;&lt;br /&gt;Step 1: The table is locked against further structure changes. If the conversion terminates due to an error, the table remains locked. This lock mechanism prevents further structure changes from being made before the conversion has been completed correctly. Data could be lost in such a case.&lt;br /&gt;&lt;br /&gt;Step 2: The table in the database is renamed. All the indexes on the table are deleted. The name of the new (temporary) table is defined by the prefix QCM and the table name. The name of the temporary table for table TAB is therefore QCMTAB.&lt;br /&gt;&lt;br /&gt;Step 3: The inactive version of table TAB is activated in the ABAP Dictionary. The table is created in the database with its new structure and with the name QCM8TAB. The primary index on the table is also created in the database. The structure of database table QCM8TAB is the same as the structure of the active table in the ABAP Dictionary after this step. The database table, however, still does not contain any data.&lt;br /&gt;&lt;br /&gt;The table therefore does not exist in the database with its original name during conversion. Programs that access this table therefore cannot be executed. You should therefore always make sure that no applications access the table to be converted during conversion.&lt;br /&gt;&lt;br /&gt;Step 4: The data is loaded back from table QCMTAB to table QCM8TAB (with MOVE-CORRESPONDING). The data is in both tables after this step. When you reduce the size of fields, for example, the extra places are truncated when you reload the data.&lt;br /&gt;&lt;br /&gt;Since the data is in both tables QCM8TAB and QCMTAB during the conversion, there are greater storage requirements during conversion. You should therefore check whether there is sufficient space available in the corresponding tablespace before converting large tables.&lt;br /&gt;&lt;br /&gt;There is a database commit after 16 MB when you copy the data from table  QCMTAB to table QCM8TAB. A conversion process therefore needs 16 MB resources in the rollback segment. The existing database lock is released with the Commit and then requested again before the next data area to be converted is edited.&lt;br /&gt;&lt;br /&gt;When you reduce the size of keys, only one record can be reloaded if there are several records whose key cannot be distinguished. It is not possible to say which record this will be. In such a case you should clean up the data of the table before converting.&lt;br /&gt;&lt;br /&gt;Step 5: Table QCM8TAB is renamed to TAB. The secondary indexes defined in the ABAP Dictionary for the table are created again. The views on the table deleted in the first step of the conversion are also created again in the database.&lt;br /&gt;&lt;br /&gt;Step 6: Table QCMTAB is deleted.&lt;br /&gt;&lt;br /&gt;Step 7: The lock set at the beginning of the conversion is deleted.&lt;br /&gt;&lt;br /&gt;If the conversion terminates, the table remains locked and a restart log is written.&lt;br /&gt;&lt;br /&gt;Caution: The table does not exist in the database with its original name during conversion. Programs therefore may not access the table during conversion. Conversions therefore should not run during production! You must at least deactivate all the applications that use the tables to be converted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You must clean up terminated conversions. Programs that access the table will otherwise not run correctly. In this case you must find out why the conversion terminated (for example overflow of the corresponding tablespace) and correct it. Then continue the terminated conversion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;POSSIBLE PROBLEMS DURING CONVERSIONS:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since the data exists in both the original table and temporary table during conversion, the storage requirements increase during conversion. If the tablespace overflows when you reload the data from the temporary table, the conversion will terminate. In this case you must extend the tablespace and start the conversion in the database utility again.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you shorten the key of a table (for example when you remove or shorten the field length of key fields), you cannot distinguish between the new keys of existing records of the table. When you reload the data from the temporary table, only one of these records can be loaded back into the table. It is not possible to say which record this will be. If you want to copy certain records, you have to clean up the table before the conversion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       During a conversion, the data is copied back to the database table from the temporary table with the ABAP statement MOVE-CORRESPONDING. Therefore only those type changes that can be executed with MOVE-CORRESPONDING are allowed. All other type changes cause the conversion to be terminated when the data is loaded back into the original table. In this case you have to recreate the old state prior to conversion. Using database tools, you have to delete the table, rename the QCM table to its old name, reconstruct the runtime object (in the database utility), set the table structure in the Dictionary back to its old state and then activate the table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RESUMING TERMINATED CONVERSIONS:&lt;br /&gt;&lt;br /&gt;If a conversion terminates, the lock entry for the table set in the first step is retained. The table can no longer be edited with the maintenance tools of the ABAP Dictionary (Transaction SE11).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A terminated conversion can be analyzed with the database utility (Transaction SE14) and then resumed.  The database utility provides an analysis tool with which you can find the cause of the error and the current state of all the tables involved in the conversion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can usually find the precise reason for termination in the object log. If the object log does not provide any information about the cause of the error, you have to analyze the syslog or the short dumps.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If there is a terminated conversion, two options are displayed as pushbuttons in the database utility:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After correcting the error, you can resume the conversion where it terminated with the Continue adjustment option.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is also the Unlock table option. This option only deletes the existing lock entry for the table . You should never choose Unlock table for a terminated conversion if the data only exists in the temporary table, i.e. if the conversion terminated in steps 3 or 4.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(95)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-compute-part-three.html"&gt;COMPUTE PART THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-synta-x-for-concatenate.html"&gt;CONCATENATE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-condense.html"&gt;CONDENSE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-constants-and.html"&gt;CONSTANTS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-table-control.html"&gt;TABLE CONTROL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-convert.html"&gt;CONVERT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-create.html"&gt;CREATE&lt;/a&gt;&lt;br /&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-7178345911824611173?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/7178345911824611173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=7178345911824611173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7178345911824611173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7178345911824611173'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/11/changes-to-data-base-tables.html' title='CHANGES TO DATA BASE TABLES'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-7874707916221017871</id><published>2007-10-31T19:48:00.000-07:00</published><updated>2010-01-05T08:01:02.014-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DEPENDENCIES'/><title type='text'>DEPENDENCIES OF ABAP DICTIONARY OBJECTS</title><content type='html'>ACTIVE AND INACTIVE VERSIONS:&lt;br /&gt;&lt;br /&gt;During development, you sometimes need to change an (active) object already used by the system. Such changes are supported in the ABAP Dictionary by separating the active and inactive versions.&lt;br /&gt;&lt;br /&gt;The active version of an ABAP Dictionary object is the version that the components of the runtime environment (for example ABAP processor, database interface) access. This version is not initially changed.&lt;br /&gt;&lt;br /&gt;An inactive version is created when an active object is changed. The inactive version can be saved without checking. It has no effect on the runtime system.&lt;br /&gt;&lt;br /&gt;At the end of the development process, the inactive version can be made the active version. This is done by activation. The inactive version of the object is first checked for consistency. If it is consistent, the inactive version replaces the active one. From now on, the runtime system uses the new active version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RUN TIME OBJECTS:&lt;br /&gt;&lt;br /&gt;The information about a structure (or table) is distributed in the ABAP Dictionary in domains, data elements, and the structure definition. The runtime object (nametab) combines this information into a structure in a form that is optimized for access from ABAP programs. The runtime object is created when the structure is activated.&lt;br /&gt;&lt;br /&gt;The runtime objects of the structures are buffered so that the ABAP runtime system can quickly access this information.&lt;br /&gt;&lt;br /&gt;The runtime object contains information about the overall structure (e.g. number of fields) and the individual structure fields (field name, position of the field in the structure, data type, length, number of decimal places, reference field, reference table, check table, conversion routine, etc.).&lt;br /&gt;&lt;br /&gt;The runtime object of a table contains further information needed by the database interface for accessing the table data (client dependence, buffering, key fields, etc.).&lt;br /&gt;&lt;br /&gt;Runtime objects are created for all ABAP Dictionary objects that can be used as types in ABAP programs. These are data elements, table types and views, as well as structures and tables.&lt;br /&gt;&lt;br /&gt;HANDLING OF DEPENDING OBJECTS:&lt;br /&gt;&lt;br /&gt;If an object that is already active is modified, this can affect other objects that use it (directly or indirectly). These objects using another object are called dependent objects. On the one hand, it might be necessary to adjust the runtime objects of these dependent objects to the changes. On the other hand, a change might sometimes make a dependent object inconsistent.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For this reason, the dependent objects are determined and activated (if necessary) when an active object is activated. The active versions of the dependent objects are activated again. In particular, new and inactive versions of objects using the changed object are not changed. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If an ABAP Dictionary object has a table as dependent object, its database object as well as its runtime object might have to be adjusted when the dependent object is activated. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WHERE USED LISTS:&lt;br /&gt;&lt;br /&gt;Changing an ABAP Dictionary object might also affect its dependent objects. Before making a critical change (such as changing the data type or deleting a field) you should therefore define the set of objects affected in order to estimate the implications of the planned action.&lt;br /&gt;&lt;br /&gt;There is a where-used list for each ABAP Dictionary object with which you can find all the objects that refer to this object. You can call the where-used list from the maintenance transaction of the object.&lt;br /&gt;&lt;br /&gt;You can find direct and indirect usages of an ABAP Dictionary object with the where-used list. You also have to define which usage object types should be included in the search (e.g. all structures and tables using a data element). You can also search for usages that are not ABAP Dictionary objects (e.g. all programs using a table). The search can also be limited by development class or user namespace.&lt;br /&gt;&lt;br /&gt;If an object is probably used by several objects, you should perform the search in the background.&lt;br /&gt;&lt;br /&gt;REPOSITORY INFORMATION:&lt;br /&gt;&lt;br /&gt;The Repository Information System ABAP Dictionary is part of the general Repository Information System. It helps you search for ABAP Dictionary objects and their users.&lt;br /&gt;&lt;br /&gt;The where-used list for Repository objects can be called from the information system. The information system also enables you to search for objects by their attributes.&lt;br /&gt;&lt;br /&gt;In addition to the object-specific search criteria (e.g. buffering type for tables), you can search for all objects by development class, short description or author and date of last change.&lt;br /&gt;&lt;br /&gt;The object lists created by the Repository Information System are entirely integrated in the ABAP Workbench. They permit you to navigate directly to the maintenance transactions of the objects found.&lt;br /&gt;&lt;br /&gt;(83)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/05/sap-abap-syntax-for-data-part-one.html"&gt;DATA PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/05/abap-syntax-for-data-part-two.html"&gt;DATA PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/abap-syntax-for-data-part-three.html"&gt;DATA PART  THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-data-part-four.html"&gt;DATA PART FOUR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-data-part-five.html"&gt;DATA PART FIVE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-data-part-six.html"&gt;DATA PART SIX&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-define.html"&gt;DEFINE&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-7874707916221017871?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/7874707916221017871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=7874707916221017871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7874707916221017871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/7874707916221017871'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/10/dependencies-of-abap-dictionary-objects.html' title='DEPENDENCIES OF ABAP DICTIONARY OBJECTS'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-1923941566179199743</id><published>2007-10-30T20:23:00.000-07:00</published><updated>2010-01-05T08:01:28.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CONSISTENCY'/><title type='text'>CONSISTENCY</title><content type='html'>The domain describes the value range of a field by specifying its data type and field length. If only a limited set of values is allowed, they can be defined as fixed values. &lt;br /&gt;&lt;br /&gt;Specifying fixed values causes the value range of the domain to be restricted by these values. Fixed values are immediately used as check values in screen entries. There is also an F4 help.&lt;br /&gt;&lt;br /&gt;Fixed values are only checked in screens. No check is made when data records are inserted in a table by an ABAP program.&lt;br /&gt;&lt;br /&gt;Fixed values can either be listed individually or defined as an interval.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The value range of a field can also be defined by specifying a value table in the domain.&lt;br /&gt;&lt;br /&gt;In contrast to fixed values, however, simply specifying a value table does not cause the input to be checked. There is no F4 help either.&lt;br /&gt;&lt;br /&gt;If you enter a value table, the system can make a proposal for the foreign key definition.&lt;br /&gt;&lt;br /&gt;A value table only becomes a check table when a foreign key is defined.&lt;br /&gt;If you refer to a domain with a value table in a field, but no foreign key was defined at field level, there is no check.&lt;br /&gt;&lt;br /&gt;In the ABAP Dictionary, such relationships between two tables are called foreign keys and they must be defined explicitly for the fields.&lt;br /&gt;&lt;br /&gt;Foreign keys are used to ensure that the data is consistent. Data that has been entered is checked against existing data to ensure that it is consistent.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A combination of fields of a table is called a foreign key if this field combination is the primary key of another table.&lt;br /&gt;&lt;br /&gt;A foreign key links two tables.&lt;br /&gt;&lt;br /&gt;The check table is the table whose key fields are checked. This table is also called the referenced table.&lt;br /&gt;&lt;br /&gt;An entry is to be written in the foreign key table. This entry must be consistent with the key fields of the check table.&lt;br /&gt;&lt;br /&gt;The field of the foreign key table to be checked is called the check field.&lt;br /&gt;&lt;br /&gt;Foreign keys can only be used in screens. Data records can be written to the table without being checked using an ABAP program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the ABAP Dictionary, the same domain is required for the check field and referenced key field of the check table so that you do not compare fields with different data types and field lengths. Domain equality is essential. Different data elements can be used, but they must refer to the same domain.&lt;br /&gt;&lt;br /&gt;The requirement for domain equality is only valid for the check field. For all other foreign key fields, it is sufficient if the data type and the field length are equal. You nevertheless should strive for domain equality. In this case the foreign key will remain consistent if the field length is changed because the corresponding fields are both changed. If the domains are different, the foreign key will be inconsistent if for example the field length is changed.&lt;br /&gt;&lt;br /&gt;If the domain of the check field has a value table, you can have the system make a proposal with the value table as check table. In this case a proposal is created for the field assignment in the foreign key.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The cardinality describes the foreign key relationship with regard to how many records of the check table are assigned to records of the foreign key table. The cardinality is always defined from the point of view of the check table.&lt;br /&gt;&lt;br /&gt;The type of the foreign key field defines whether or not the foreign key field identifies a table entry. This means that the foreign key fields are either key fields or they are not key fields or they are a special case, namely the key fields of a text table.&lt;br /&gt;&lt;br /&gt;There are the following kinds of foreign key fields:&lt;br /&gt;&lt;br /&gt;not specified: No information about the kind of foreign key field can be given&lt;br /&gt;&lt;br /&gt;no key fields/candidates: The foreign key fields are neither primary key fields of the foreign key table nor do they uniquely identify a record of the foreign key table (key candidates). The foreign key fields therefore do not (partially) identify the foreign key table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key fields/candidates: The foreign key fields are either primary key fields of the foreign key table or they uniquely identify a record of the foreign key table (key candidates). The foreign key fields therefore (partially) identify the foreign key table.&lt;br /&gt;&lt;br /&gt;Key fields of a text table: The foreign key table is a text table of the check table, i.e. the key of the foreign key table only differs from the key of the check table in an additional language key field. This is a special case of the category Key fields / candidates&lt;br /&gt;&lt;br /&gt;(71)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete.html"&gt;DELETE PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-part-two.html"&gt;DELETE PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-part-three.html"&gt;DELETE PART THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-from.html"&gt;DELETE PART FOUR&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-from.html"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-from.html"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-from_25.html"&gt;DELETE PART FIVE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-from-data.html"&gt;DELETE FROM DATA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-delete-program.html"&gt;DELETE PROGRAM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-describe-part-one.html"&gt;DESCRIBE PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/06/sap-abap-syntax-for-describe-part-two.html"&gt;DESCRIBE PART TWO&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-1923941566179199743?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/1923941566179199743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=1923941566179199743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/1923941566179199743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/1923941566179199743'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/10/consistency.html' title='CONSISTENCY'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-2292051146861438155</id><published>2007-10-30T10:15:00.000-07:00</published><updated>2010-01-05T08:01:50.551-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='INDEXING  AND BUFFERING'/><title type='text'>INDEXING AND BUFFERING</title><content type='html'>PERFORMACE DURING TABLE AINDEXINGCCESS :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An index can be used to speed up the selection of data records from a table.&lt;br /&gt;&lt;br /&gt;An index can be considered to be a copy of a database table reduced to certain fields. The data is stored in sorted form in this copy. This sorting permits fast access to the records of the table (for example using a binary search). Not all of the fields of the table are contained in the index. The index also contains a pointer from the index entry to the corresponding table entry to permit all the field contents to be read.&lt;br /&gt;&lt;br /&gt;When creating indexes, please note that:&lt;br /&gt;&lt;br /&gt;An index can only be used up to the last specified field in the selection! The fields which are specified in the WHERE clause for a large number of selections should be in the first position.&lt;br /&gt;&lt;br /&gt;Only those fields whose values significantly restrict the amount of data are meaningful in an index.&lt;br /&gt;&lt;br /&gt;When you change a data record of a table, you must adjust the index sorting. Tables whose contents are frequently changed therefore should not have too many indexes.&lt;br /&gt;&lt;br /&gt;Make sure that the indexes on a table are as disjunct as possible.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The database optimizer decides which index on the table should be used by the database to access data records.&lt;br /&gt;&lt;br /&gt;You must distinguish between the primary index and secondary indexes of a table. The primary index contains the key fields of the table. The primary index is automatically created in the database when the table is activated. If a large table is frequently accessed such that it is not possible to apply primary index sorting, you should create secondary indexes for the table.&lt;br /&gt;&lt;br /&gt;The indexes on a table have a three-character index ID. '0' is reserved for the primary index. Customers can create their own indexes on SAP tables; their IDs must begin with Y or Z.&lt;br /&gt;&lt;br /&gt;If the index fields have key function, i.e. they already uniquely identify each record of the table, an index can be called a unique index. This ensures that there are no duplicate index fields in the database.&lt;br /&gt;&lt;br /&gt;When you define a secondary index in the ABAP Dictionary, you can specify whether it should be created on the database when it is activated. Some indexes only result in a gain in performance for certain database systems. You can therefore specify a list of database systems when you define an index. The index is then only created on the specified database systems when activated.&lt;br /&gt;&lt;br /&gt;Table buffering increases the performance when the records of the table are read.&lt;br /&gt;&lt;br /&gt;The records of a buffered table are read directly from the local buffer of the application server on which the accessing transaction is running when the table is accessed. This eliminates time-consuming database accesses. The access improves by a factor of 10 to 100. The increase in speed depends on the structure of the table and on the exact system configuration. Buffering therefore can greatly increase the system performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If the storage requirements in the buffer increase due to further data, the data that has not been accessed for the longest time is displaced. This displacement takes place asynchronously at certain times which are defined dynamically based on the buffer accesses. Data is only displaced if the free space in  the buffer is less than a predefined value or the quality of the access is not satisfactory at this time.&lt;br /&gt;&lt;br /&gt;Entering $TAB in the command field resets the table buffers on the corresponding application server. Only use this command if there are inconsistencies in the buffer. In large systems, it can take several hours to fill the buffers. The performance is considerably reduced during this time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The R/3 System manages and synchronizes the buffers on the individual application servers. If an application program accesses data of a table, the database interfaces determines whether this data lies in the buffer of the application server. If this is the case, the data is read directly from the buffer. If the data is not in the buffer of the application server, it is read from the database and loaded into the buffer. The buffer can therefore satisfy the next access to this data.&lt;br /&gt;&lt;br /&gt;The buffering type determines which records of the table are loaded into the buffer of the application server when a record of the table is accessed. There are three different buffering types.&lt;br /&gt;&lt;br /&gt;With full buffering, all the table records are loaded into the buffer when one record of the table is accessed.&lt;br /&gt;&lt;br /&gt;With generic buffering, all the records whose left-justified part of the key is the same are loaded into the buffer when a table record is accessed.&lt;br /&gt;&lt;br /&gt;With single-record buffering, only the record that was accessed is loaded into the buffer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With full buffering, the table is either completely or not at all in the buffer. When a record of the table is accessed, all the records of the table are loaded into the buffer.&lt;br /&gt;&lt;br /&gt;When you decide whether a table should be fully buffered, you must take the table size, the number of read accesses and the number of write accesses into consideration. The smaller the table is, the more frequently it is read and the less frequently it is written, the better it is to fully buffer the table.&lt;br /&gt;&lt;br /&gt;Full buffering is also advisable for tables having frequent accesses to records that do not exist. Since all the records of the table reside in the buffer, it is already clear in the buffer whether or not a record exists.&lt;br /&gt;&lt;br /&gt;The data records are stored in the buffer sorted by table key. When you access the data with SELECT, only fields up to the last specified key field can be used for the access. The left-justified part of the key should therefore be as large as possible for such accesses. For example, if the first key field is not defined, the entire table is scanned in the buffer. Under these circumstances, a direct access to the database could be more efficient if there is a suitable secondary index there.&lt;br /&gt;&lt;br /&gt;With generic buffering, all the records whose generic key fields agree with this record are loaded into the buffer when one record of the table is accessed. The generic key is a left-justified part of the primary key of the table that must be defined when the buffering type is selected. The generic key should be selected so that the generic areas are not too small, which would result in too many generic areas. If there are only a few records for each generic area, full buffering is usually preferable for the table. If you choose too large a generic key, too much data will be invalidated if there are changes to table entries, which would have a negative effect on the performance.&lt;br /&gt;&lt;br /&gt;A table should be generically buffered if only certain generic areas of the table are usually needed for processing.&lt;br /&gt;&lt;br /&gt;Client-dependent, fully buffered tables are automatically generically buffered. The client field is the generic key. It is assumed that not all of the clients are being processed at the same time on one application server. Language-dependent tables are a further example of generic buffering. The generic key includes all the key fields up to and including the language field.&lt;br /&gt;&lt;br /&gt;The generic areas are managed in the buffer as independent objects. The generic areas are managed analogously to fully buffered tables. You should therefore also read the information about full buffering.&lt;br /&gt;&lt;br /&gt;Only those records that are actually accessed are loaded into the buffer. Single-record buffering saves storage space in the buffer compared to generic and full buffering. The overhead for buffer administration, however, is higher than for generic or full buffering. Considerably more database accesses are necessary to load the records than for the other buffering types.&lt;br /&gt;&lt;br /&gt;Single-record buffering is recommended particularly for large tables in which only a few records are accessed repeatedly with SELECT SINGLE. All the accesses to the table that do not use SELECT SINGLE bypass the buffer and directly access the database.&lt;br /&gt;&lt;br /&gt;If you access a record that was not yet buffered using SELECT SINGLE, there is a database access to load the record. If the table does not contain a record with the specified key, this record is recorded in the buffer as non-existent. This prevents a further database access if you make another access with the same key.&lt;br /&gt;&lt;br /&gt;You only need one database access to load a table with full buffering, but you need several database accesses with single-record buffering. Full buffering is therefore generally preferable for small tables that are frequently accessed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since the buffers reside locally on the application servers, they must be synchronized after data has been modified in a buffered table. Synchronization takes place at fixed time intervals that can be set in the system profile. The corresponding parameter is rdisp/bufreftime and defines the length of the interval in seconds. The value must lie between 60 and 3600. A value between 60 and 240 is recommended.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Advantages and disadvantages of this method of buffer synchronization:&lt;br /&gt;&lt;br /&gt;Advantage: The load on the network is kept to a minimum. If the buffers were to be synchronized immediately after each modification, each server would have to inform all other servers about each modification to a buffered table via the network. This would have a negative effect on the performance.&lt;br /&gt;&lt;br /&gt;Disadvantage: The local buffers of the application servers can contain obsolete data between the moments of synchronization.&lt;br /&gt;&lt;br /&gt;This means that:&lt;br /&gt;&lt;br /&gt;Only those tables which are written very infrequently (read mostly) or for which such temporary inconsistencies are of no importance may be buffered.&lt;br /&gt;&lt;br /&gt;Tables whose entries change frequently should not be buffered. Otherwise there would be a constant invalidation and reload, which would have a negative effect on the performance.&lt;br /&gt;(48)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-describe-part-three.html"&gt;DESCRIBE PART THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-describe-part-four.html"&gt;DESCRIBE PART FOUR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-describe-part-five.html"&gt;DESCRIBE PART FIVE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-describe-part-six.html"&gt;DESCRIBE PART SIX&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-describe-and.html"&gt;DESCRIBE PART SEVEN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-detailand-devide.html"&gt;DETAIL&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-devide.html"&gt;DIVIDE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-do-part-one.html"&gt;DO&lt;/a&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-2292051146861438155?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/2292051146861438155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=2292051146861438155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2292051146861438155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/2292051146861438155'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/10/indexing-and-buffering.html' title='INDEXING AND BUFFERING'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-749088558920001937</id><published>2007-10-27T21:10:00.000-07:00</published><updated>2010-01-05T08:02:31.612-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TABLES IN ABAP DICTIONARY'/><title type='text'>TABLES IN ABAP DICTIONARY</title><content type='html'>&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The structure of the objects of application development are mapped in tables on the underlying relational database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The attributes of these objects correspond to fields of the table.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A table consists of columns (fields) and rows (entries). It has a name and different attributes, such as delivery class and maintenance authorization. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A field has a unique name and attributes; for example it can be a key field.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A table has one or more key fields, called the primary key.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The values of these key fields uniquely identify a table entry.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The basic objects for defining data in the ABAP Dictionary are tables, data elements and domains. The domain is used for the technical definition of a table field (for example field type and length) and the data element is used for the semantic definition (for example short description).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A &lt;b&gt;domain&lt;/b&gt; describes the value range of a field. It is defined by its data type and length. The value range can be limited by specifying fixed values.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A &lt;b&gt;data element&lt;/b&gt; describes the meaning of a domain in a certain business context. It contains primarily the field help (F1 documentation) and the field labels in the screen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A field is not an independent object. It is table-dependent and can only be maintained within a table. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;You can enter the data type and number of places directly for a field. No data element is required in this case. Instead the data type and number of places is defined by specifying a &lt;b&gt;direct type&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The data type attributes of a data element can also be defined by specifying a &lt;b&gt;built-in type&lt;/b&gt;, where the data type and number of places is entered directly.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2XJwgH8jhEc/RyQNRb6eVwI/AAAAAAAAABY/Nb0vERZYlo4/s1600-h/P1.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_2XJwgH8jhEc/RyQNRb6eVwI/AAAAAAAAABY/Nb0vERZYlo4/s320/P1.JPG" alt="" id="BLOGGER_PHOTO_ID_5126236869056419586" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A transparent table is automatically created on the database when it is activated in the ABAP Dictionary. At this time the database-independent description of the table in the ABAP Dictionary is translated into the language of the database system used.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The database table has the same name as the table in the ABAP Dictionary. The fields also have the same name in both the database and the ABAP Dictionary. The data types in the ABAP Dictionary are converted to the corresponding data types of the database system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The order of the fields in the ABAP Dictionary can differ from the order of the fields on the database. This permits you to insert new fields without having to convert the table. When a new field is added, the adjustment is made by changing the database catalog (ALTER TABLE). The new field is added to the database table, whatever the position of the new field in the ABAP Dictionary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;ABAP programs can access a transparent table in two ways. One way is to access the data contained in the table with OPEN SQL (or EXEC SQL). With the other method, the table defines a structured type that is accessed when variables (or more complex types) are defined.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;You can also create a structured type in the ABAP Dictionary for which there is no corresponding object in the database. Such types are called &lt;b&gt;structures&lt;/b&gt;. Structures can also be used to define the types of variables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;span style="color:black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Structures can be included in tables or other structures to avoid redundant structure definitions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A table may only be included as an entire table.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;A chain of includes may only contain one database table. The table in which you are including belongs to the include chain. This means that you may not include a transparent table in a transparent table.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Includes may contain further includes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Foreign key definitions are generally imparted from the include to the including table. The attributes of the foreign key definition are passed from the include to the including table so that the foreign key depends on the definition in the include.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style=";font-family:&amp;quot;;font-size:12pt;"  &gt;&lt;br /&gt;&lt;a name="SAPA32295D1F5E9D211B19B00A0C9F06992"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:459pt;" bordertopcolor="this" borderleftcolor="this" borderbottomcolor="this" borderrightcolor="this"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\SIDDAR~1\LOCALS~1\Temp\msohtml1\01\clip_image001.wmz" title=""&gt;  &lt;w:bordertop type="single" width="8"&gt;  &lt;w:borderleft type="single" width="8"&gt;  &lt;w:borderbottom type="single" width="8"&gt;  &lt;w:borderright type="single" width="8"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;  &lt;/p&gt;&lt;p class="MsoBodyText3"&gt;&lt;span style="font-size:12pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;You must maintain the technical settings when you define a transparent table in the ABAP Dictionary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The technical settings are used to individually optimize the storage requirements and accessing behavior of database tables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The technical settings can be used to define how the table should be handled when it is created on the database, whether the table should be buffered and whether changes to entries should be logged.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The table is automatically created on the database when it is activated in the ABAP Dictionary. The storage area to be selected (tablespace) and space allocation settings are determined from the settings for the data class and size category.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The settings for buffering define whether and how the table should be buffered.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;You can define whether changes to the table entries should be logged.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;span  lang="DE" style="color:black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText3"&gt;&lt;span  lang="DE" style="color:black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:12pt;"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The data class logically defines the physical area of the database (for ORACLE the tablespace) in which your table should be stored. If you choose the data class correctly, the table will automatically be created in the appropriate area on the database when it is activated in the ABAP Dictionary. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The most important data classes are &lt;b&gt;master data&lt;/b&gt;, &lt;b&gt;transaction data&lt;/b&gt;, &lt;b&gt;organizational data &lt;/b&gt;and &lt;b&gt;system data&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Master data is data that is rarely modified. An example of master data is the data of an address file, for example the name, address and telephone number.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Transaction data is data that is frequently modified. An example is the material stock of a warehouse, which can change after each purchase order.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Organizational data is data that is defined during customizing when the system is installed and that is rarely modified thereafter. The country keys are an example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;System data is data that the R/3 System itself needs. The program sources are an example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"    lang="DE"&gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Further data classes, called customer data classes (USER, USER1), are provided for customers. These should be used for customer developments. Special storage areas must be allocated in the database&lt;/span&gt;&lt;span  lang="DE" style="color:black;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The size category describes the expected storage requirements for the table on the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;An initial extent is reserved when a table is created on the database. The size of the initial extent is identical for all size categories. If the table needs more space for data at a later time, extents are added. These additional extents have a fixed size that is determined by the size category specified in the ABAP Dictionary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;You can choose a size category from 0 to 4. A fixed extent size, which depends on the database system used, is assigned to each category.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Correctly assigning a size category therefore ensures that you do not create a large number of small extents. It also prevents storage space from being wasted when creating extents that are too large. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;br /&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Modifications to the entries of a table can be recorded and stored using logging.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;To activate logging, the corresponding field must be selected in the technical settings. Logging, however, only will take place if the R/3 System was started with a profile containing parameter &lt;i&gt;'rec/client'&lt;/i&gt;. Only selecting the flag in the ABAP Dictionary is not sufficient to trigger logging. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Parameter &lt;i&gt;'rec/client'&lt;/i&gt; can have the following settings:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 34.1pt; line-height: 13pt;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;rec/client&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; = ALL&lt;span style=""&gt;           &lt;/span&gt;All clients should be logged.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 34.1pt; line-height: 13pt;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;rec/client&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; = 000[...]&lt;span style=""&gt;      &lt;/span&gt;Only the specified clients should be logged.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 34.1pt; line-height: 13pt;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;rec/client&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; = OFF&lt;span style=""&gt;          &lt;/span&gt;Logging is not enabled on this system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;The data modifications are logged independently of the update. The logs can be displayed with the Transaction &lt;i&gt;Table History&lt;/i&gt; (SCU3).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9pt;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;&lt;span style="color:black;"&gt;Logging creates a 'bottleneck' in the system:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:11pt;color:black;"   &gt;&lt;span style=""&gt;Ÿ&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;Additional write access for each modification to tables being logged.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 22.5pt; text-indent: -10.35pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:11pt;color:black;"   &gt;&lt;span style=""&gt;Ÿ&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;This can result in lock situations although the users are accessing different application tables!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;span style="color:black;"&gt;&lt;o:p&gt;(32)&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;span style="color:black;"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; font-weight: bold;"&gt;&lt;span style="color:black;"&gt;&lt;o:p&gt;RELATED LINKS&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; font-weight: bold;"&gt;&lt;a href="http://abapdictionary.blogspot.com/2007/10/abap-dictionary-introductioin.html"&gt;INTRODUCTION TO DICTIONARY&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt; font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-editor-call.html"&gt;EDITOR CALL PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-editor-call-part.html"&gt;EDITOR CALL PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-else-and-else-if.html"&gt;ELSE AND ELSE-IF&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-exec.html"&gt;EXEC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-export.html"&gt;EXPORT PART ONE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-export-part-two.html"&gt;EXPORT PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/07/sap-abap-syntax-for-fetch.html"&gt;FETCH&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/08/sap-abap-syntax-for-field-symbols.html"&gt;FIELD SYMBOLS&lt;/a&gt;&lt;br /&gt;&lt;span style="color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin-left: 12pt; text-indent: -12pt; line-height: 13pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=";font-family:Wingdings;font-size:9px;color:black;"   &gt;&lt;span style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;  &lt;a name="SAP552395D1F5E9D211B19B00A0C9F06992"&gt;&lt;/a&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:459pt;" bordertopcolor="this" borderleftcolor="this" borderbottomcolor="this" borderrightcolor="this"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\SIDDAR~1\LOCALS~1\Temp\msohtml1\01\clip_image001.wmz" title=""&gt;  &lt;w:bordertop type="single" width="8"&gt;  &lt;w:borderleft type="single" width="8"&gt;  &lt;w:borderbottom type="single" width="8"&gt;  &lt;w:borderright type="single" width="8"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-749088558920001937?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/749088558920001937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=749088558920001937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/749088558920001937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/749088558920001937'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/10/tables-in-abap-dictionary.html' title='TABLES IN ABAP DICTIONARY'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2XJwgH8jhEc/RyQNRb6eVwI/AAAAAAAAABY/Nb0vERZYlo4/s72-c/P1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7792878382309608254.post-5017446388142652292</id><published>2007-10-26T08:10:00.000-07:00</published><updated>2010-01-05T08:02:56.330-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='INTRODUCTIOIN'/><title type='text'>ABAP DICTIONARY INTRODUCTIOIN</title><content type='html'>The ABAP Dictionary permits a central management of all the data definitions used in the R/3 System.&lt;br /&gt;&lt;br /&gt;In the ABAP Dictionary you can create user-defined types (data elements, structures and table types) for use in ABAP programs or in interfaces of function modules. Database objects such as tables and database views can also be defined in the ABAP Dictionary and created with this definition in the database.&lt;br /&gt;&lt;br /&gt;The ABAP Dictionary also provides a number of services that support program development. For example, setting and releasing locks, defining an input help (F4 help) and attaching a field help (F1 help) to a screen field are supported.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tables and database views can be defined in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;These objects are created in the underlying database with this definition. Changes in the definition of a table or database view are also automatically made in the database.&lt;br /&gt;&lt;br /&gt;Indexes can be defined in the ABAP Dictionary to speed up access to data in a table. These indexes are also created in the database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are three different type categories in the ABAP Dictionary:&lt;br /&gt;&lt;br /&gt;Data elements: Describe an elementary type by defining the data type, length and possibly decimal places.&lt;br /&gt;      &lt;br /&gt;       Structures: Consist of components that can have any type.&lt;br /&gt;&lt;br /&gt;Table types: Describe the structure of an internal table.&lt;br /&gt;&lt;br /&gt;Any complex user-defined type can be built from these basic types.&lt;br /&gt;&lt;br /&gt;Example: The data of an employee is stored in a structure EMPLOYEE with the components NAME, ADDRESS and TELEPHONE. Component NAME is also a structure with components FIRST NAME and LAST NAME. Both of these components are elementary, i.e. their type is defined by a data element. The type of component ADDRESS is also defined by a structure whose components are also structures. Component TELEPHONE is defined by a table type (since an employee can have more than one telephone number).&lt;br /&gt;&lt;br /&gt;Types are used for example in ABAP programs or to define the types of interface parameters of function modules.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The ABAP Dictionary supports program development with a number of services:&lt;br /&gt;&lt;br /&gt;Input helps (F4 helps) for screen fields can be defined with search helps.&lt;br /&gt;&lt;br /&gt;Screen fields can easily be assigned a field help (F1 help) by creating documentation for the data element.&lt;br /&gt;&lt;br /&gt;An input check that ensures that the values entered are consistent can easily be defined for screen fields using foreign keys.&lt;br /&gt;&lt;br /&gt;The ABAP Dictionary provides support when you set and release locks. To do so, you must create lock objects in the ABAP Dictionary. Function modules for setting and releasing locks are automatically generated from these lock objects; these can then be linked into the application program.&lt;br /&gt;&lt;br /&gt;The performance when accessing this data can be improved for database objects (tables, views) with buffering settings.&lt;br /&gt;By logging, you can switch on the automatic recording of changes to the table entries.&lt;br /&gt;&lt;br /&gt;The ABAP Dictionary is actively integrated in the development and runtime environments. Each change takes immediate effect in the relevant ABAP programs and screens.&lt;br /&gt;&lt;br /&gt;Examples:&lt;br /&gt;&lt;br /&gt;When a program or screen is generated, the ABAP interpreter and the screen interpreter access the type definitions stored in the ABAP Dictionary.&lt;br /&gt;&lt;br /&gt;The ABAP tools and the Screen Painter use the information stored in the ABAP Dictionary to support you during program development. An example of this is the Get from Dictionary function in the Screen Painter, with which you can place fields of a table or structure defined in the ABAP Dictionary in a screen.&lt;br /&gt;&lt;br /&gt;The database interface uses the information about tables or database views stored in the ABAP Dictionary to access the data of these objects.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;RELATED POSTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/06/lesson-18-search-help.html"&gt;&lt;/a&gt;&lt;a href="http://www.abapprogramming.net/2008/08/sap-abap-syntax-form.html"&gt;FORM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/08/sap-abap-syntax-for-form-part-two.html"&gt;FORM PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/08/sap-abap-syntax-for-format.html"&gt;FORMAT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/08/erp-sap-abap-syntax-for-format-part-two.html"&gt;FORMAT PART TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/08/programming-abap-syntax-for-format-part.html"&gt;FORMAT PART THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/09/abap-syntax-for-free.html"&gt;FREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/09/sap-abap-syntax-for-generate.html"&gt;GENERATE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/10/sap-abap-syntax-for-get.html"&gt;GET PART ONE&lt;/a&gt; AND &lt;a href="http://www.abapprogramming.net/2008/10/syntax-check-for-get-part-two.html"&gt;TWO&lt;/a&gt; &lt;a href="http://www.abapprogramming.net/2008/10/syntax-check-for-get-part-three.html"&gt;THREE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/10/get-cursor-syntax-check.html"&gt;GET CURSOR PART ONE TWO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abapprogramming.net/2008/10/get-cursor-syntax-check.html"&gt;GET CURSOR PART ONE&lt;/a&gt; AND &lt;a href="http://www.abapprogramming.net/2008/10/get-curser-syntax-check-part-two.html"&gt;TWO&lt;/a&gt;&lt;br /&gt;&lt;div id="TixyyLink" style="border: medium none ; overflow: hidden; color: rgb(0, 0, 0); background-color: transparent; text-align: left; text-decoration: none;"&gt;&lt;a href="http://abapprogramming.blogspot.com/2007/11/impelmenting-sap-project.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7792878382309608254-5017446388142652292?l=abapdictionary.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://abapdictionary.blogspot.com/feeds/5017446388142652292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7792878382309608254&amp;postID=5017446388142652292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/5017446388142652292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7792878382309608254/posts/default/5017446388142652292'/><link rel='alternate' type='text/html' href='http://abapdictionary.blogspot.com/2007/10/abap-dictionary-introductioin.html' title='ABAP DICTIONARY INTRODUCTIOIN'/><author><name>suresh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
