<?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-177530344658880345</id><updated>2011-10-20T16:57:27.624+05:30</updated><category term='User Exits'/><category term='ABAP Certification'/><category term='ABAP CODING FOR BETTER PERFORMANCE'/><category term='ABAP BAPI&apos;S'/><category term='ABAP Interview Questions'/><category term='ABAP ALV REPORTS COMPLETE'/><category term='ABAP FAQ&apos;S ON SCRIPTS'/><category term='Logical Database'/><category term='ABAP BDC COMPLETE.'/><category term='ABAP ALV REPORTS SAMPLE CODES.'/><category term='ABAP Enhancement'/><category term='ABAP BADI&apos;S'/><category term='ABAP Programming'/><category term='ABAP HR'/><category term='Free Downloads'/><category term='ABAP BDC'/><category term='ABAP LISTS AND SCREENS'/><category term='Function Modules'/><category term='ABAP DICTIONARY'/><title type='text'>Free Download SAP ABAP Books, Projects, Reports, FAQ’s</title><subtitle type='html'>BADI, BAPI'S, BDC, HR, Interview Questions, Programming, Reports, RFC, TCodes, ABAP-Java, ALE, IDOCs, ALV's, BSP, BTE, Data Dictionary, Dialog Programming, FICO, SD, MM, Function Modules, Interactive Reports, Internal Tables, Locking, Logical Database, OOPS,PM,PP,QM,R/3,BW,SCRIPTS,SMART FORMS</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default?start-index=101&amp;max-results=100'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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>112</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-177530344658880345.post-224013038416736092</id><published>2008-07-30T22:00:00.002+05:30</published><updated>2008-07-30T22:01:02.052+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>The R/3 Basis System: Overview</title><content type='html'>The R/3 Basis system is the platform for all other applications (financial accounting, logistics, human resources management) in the R/3 System.&lt;br /&gt;&lt;br /&gt;This documentation explains just what the Basis system is, and how it ties in with the R/3 System as a whole. It starts by introducing the Basis system in general. The second part concentrates on one central component - the application server. Finally, it will explain about work processes, which are components of the application server.&lt;br /&gt;&lt;br /&gt;Position of the Basis System Within the R/3 System&lt;br /&gt;&lt;br /&gt;Application Server&lt;br /&gt;&lt;br /&gt;Work Processes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-224013038416736092?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/224013038416736092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=224013038416736092' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/224013038416736092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/224013038416736092'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/r3-basis-system-overview.html' title='The R/3 Basis System: Overview'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-177530344658880345.post-7960969804805138082</id><published>2008-07-30T22:00:00.001+05:30</published><updated>2008-07-30T22:00:35.260+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Position of the Basis System Within the R/3 System</title><content type='html'>&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The following sections describe three different views of the R/3 System, which show the role of the Basis system. &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_6011"&gt;Logical View&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The following illustration represents a logical view of the R/3 System. &lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e97358411d1829f0000e829fbfe/Image519.gif" /&gt;&lt;/p&gt;&lt;p&gt;The difference between the logical view and a hardware- or software-based view is that not all of the above components can be assigned to a particular hardware or software unit. The above diagram shows how the R/3 Basis system forms a central platform within the R/3 System. Below are listed the tasks of the three logical components of the R/3 Basis system.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Kernel and Basis Services&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The kernel and basis services component is a runtime environment for all R/3 applications that is hardware-, operating system- and database-specific. The runtime environment is written principally in C and C++. However, some parts are also written in ABAP. The tasks of the kernel and basis services component are as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Running applications&lt;br /&gt;All R/3 applications run on software processors (virtual machines) within this component.&lt;/li&gt;&lt;li&gt;User and process administration&lt;br /&gt;An R/3 System is a multi-user environment, and each user can run several independent applications. In short, this component is responsible for the tasks that usually belong to an operating system. Users log onto the R/3 System and run applications within it. In this way, they do not come into contact with the actual operating system of the host. The R/3 System is the only user of the host operating system.&lt;/li&gt;&lt;li&gt;Database access&lt;br /&gt;Each R/3 System is linked to a database system, consisting of a database management system (DBMS) and the database itself. The applications do not communicate directly with the database. Instead, they use Basis services.&lt;/li&gt;&lt;li&gt;Communication&lt;br /&gt;R/3 applications can communicate with other R/3 Systems and with non-SAP systems. It is also possible to access R/3 applications from external systems using a BAPI interface. The services required for communication are all part of the kernel and basis services component.&lt;/li&gt;&lt;li&gt;System Monitoring and Administration&lt;br /&gt;The component contains programs that allow you to monitor and control the R/3 System while it is running, and to change its runtime parameters.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;ABAP Workbench&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The ABAP Workbench component is a fully-fledged &lt;b&gt;development environment&lt;/b&gt; for applications in the ABAP language. With it, you can create, edit, test, and organize application developments. It is fully integrated in the R/3 Basis system and, like other R/3 applications, is itself written in ABAP.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Presentation Components&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The presentation components are responsible for the &lt;b&gt;interaction&lt;/b&gt; between the R/3 System and the user, and for &lt;b&gt;desktop component integration&lt;/b&gt; (such as word processing and spreadsheets).  &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_602"&gt;Software-oriented View&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The following illustration represents a software-oriented view of the R/3 System. The software-oriented view describes the various software components that make up the R/3 System. In the software-oriented view, all of the SAPgui components and application servers in the R/3 System make up the R/3 Basis system.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e97358411d1829f0000e829fbfe/Image520.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The R/3 Basis system is a multi-tier client/server system. The individual software components are arranged in tiers and function, depending on their position, as a client for the components below them or a server for the components above them. The classic configuration of an R/3 System contains the following software layers: &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Database Layer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The database layer consists of a central database system containing &lt;b&gt;all&lt;/b&gt; of the data in the R/3 System. The database system has two components - the database management system (DBMS), and the databse itself. SAP does not manufacture its own database. Instead, the R/3 System supports the following database systems from other suppliers: ADABAS D, DB2/400 (on AS/400), DB2/Common Server, DB2/MVS,INFORMIX, Microsoft SQL Server, ORACLE, and ORACLE Parallel Server.&lt;/p&gt;&lt;p&gt;The database does not only contain the master data and transaction data from your business applications, &lt;b&gt;all&lt;/b&gt; data for the &lt;b&gt;entire&lt;/b&gt; R/3 System is stored there. For example, the database contains the control and Customizing data that determine how your R/3 System runs. It also contains the program code for your applications. Applications consist of program code, screen definitions, menus, function modules, and various other components. These are stored in a special section of the database called the R/3 Repository, and are accordingly called Repository objects. You work with them in the ABAP Workbench. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Application Layer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The application layer consists of one or more application servers and a message server. Each application server contains a set of services used to run the R/3 System. Theoretically, you only need one application server to run an R/3 System. In practice, the services are distributed across more than one application server. This means that not all application servers will provide the full range of services. The message server is responsible for communication between the application servers. It passes requests from one application server to another within the system. It also contains information about application server groups and the current load balancing within them. It uses this information to choose an appropriate server when a user logs onto the system.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Presentation Layer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The presentation layer contains the software components that make up the SAPgui (graphical user interface). This layer is the interface between the R/3 System and its users. The R/3 System uses the SAPgui to provide an intuitive graphical user interface for entering and displaying data. The presentation layer sends the user’s input to the application server, and receives data for display from it. While a SAPgui component is running, it remains linked to a user’s terminal session in the R/3 System. &lt;/p&gt;&lt;p&gt;This software-oriented view can be expanded to include further layers, such as an Intenet Transaction Server (ITS). &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Software-oriented and Hardware-oritented View&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The software-oriented view has nothing to do with the hardware configuration of the system. There are many different hardware configuration possibilities for both layers and components. When distributing the layers, for example, you can have all layers on a single host, or, at the other extreme, you could have at least one host for each layer. When dealing with components, the distribution of the database components depends on the database sytsem you are using. The application layer and presentation layer components can be distributed across any number of hosts. It is also possible to install more than one application server on a single host. A common configuration is to run the database system and a single application server (containing special database services) on one host, and to run each further application server on its own host. The presentation layer components usually run on the desktop computers of the users. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Advantages of the Multi-tier Architecture&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The distribution of the R/3 software over three layers means that the system load is also distributed. This leads to better system performance. &lt;/p&gt;&lt;p&gt;Since the database system contains all of the data for the entire R/3 System, it is subject to a very heavy load when the sytsem is running. It is therefore a good idea not to run application programs on the same host. The architecture of the R/3 System, in which the application layer and database layer are separate, allows you to install them on separate hosts and let them communicate using the network.&lt;/p&gt;&lt;p&gt;It also makes sense to separate program execution from the tasks of processing user input and formatting data output. This is made possible by separating the presentation layer and the application layer. SAPgui and the application servers are designed so that the minimum amount of data has to be transported between the two layers. This means that the presentation layer components can even be used on hosts that have slow connections to application servers a long way away.&lt;/p&gt;&lt;p&gt;The system is highly scalable, due to the fact that the software components of an R/3 System can be distributed in almost any configuration across various hosts. This is particularly valuable in the application layer, where you can easily adapt your R/3 System to meet increasing demand by installing further application servers.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Consequences for Application Programming&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The fact that the application and presentation layers are separate carries an important consequence for application programmers. When you run an application program that requires user interaction, control of the program is continually passed backwards and forwards between the layers. When a screen is ready for user input, the presentation layer is active, and the application server is inactive with regard to that particular program, but free for other tasks. Once the user has entered data on the screen, program control passes back to the application layer. Now, the presentation layer is inactive. The SAPgui is still visible to the user during this time, and it is still displaying the screen, but it &lt;b&gt;cannot accept user input&lt;/b&gt; The SAPgui does not become active again until the application program has called a new screen and sent it to the presentation server.&lt;/p&gt;&lt;p&gt;As a consequence, the program logic in an application program that occurs between two screens is known as a &lt;b&gt;dialog step&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e97358411d1829f0000e829fbfe/Image521.gif" /&gt;&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_6031"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_6031"&gt;User-oriented View&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The following illustration represents a user-oriented view of the R/3 System:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e97358411d1829f0000e829fbfe/Image522.gif" /&gt;&lt;/p&gt;&lt;p&gt;For the user, the visible components of the R/3 System are those that appear as a window on the screen. The windows are generated by the presentation layer of the R/3 System, and form a part of the R/3 Basis system.&lt;/p&gt;&lt;p&gt;Before the user logs onto the R/3 System, he or she must start a utility called SAP Logon, which is installed at the front end. In SAP Logon, the user chooses one of the available R/3 Systems. The program then connects to the message server of that system and obtains the address of a suitable (most lightly-used) application server. It then starts a SAPgui, connected to that application server. The SAP Logon program is then no longer required for this connection. &lt;/p&gt;&lt;p&gt;SAPgui starts the logon screen. Once the user has successfully logged on, it displays the initial screen of the R/3 System in an R/3 window on the screen. Within SAPgui, the R/3 window is represented as a session. After logging on, the user can open up to five further sessions (R/3 windows) &lt;b&gt;within&lt;/b&gt; the single SAPgui. These behave almost like independent SAPguis. The different sessions allow you to run different applications in parallel, independently of one another. &lt;/p&gt;&lt;p&gt;Within a session, the user can run applications that themselves call further windows (such as dialog boxes and graphic windows). These windows are not independent - they belong to the session from which they were called. These windows can be either modal (the original window is not ready for input) or amodal (both windows are ready for input). &lt;/p&gt;&lt;p&gt;The user can open other SAPguis, using SAP Logon, to log onto the same system or another R/3 System. The individual SAPguis and corresponding R/3 terminal sessions are totally independent. This means that you can have SAPguis representing the presentation layers of several R/3 Systems open on your desktop computer.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-7960969804805138082?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/7960969804805138082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=7960969804805138082' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7960969804805138082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7960969804805138082'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/position-of-basis-system-within-r3.html' title='Position of the Basis System Within the R/3 System'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-177530344658880345.post-485762424192880366</id><published>2008-07-30T21:59:00.001+05:30</published><updated>2008-07-30T21:59:59.376+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Application Servers in SAP</title><content type='html'>&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;R/3 programs run on application servers. They are an important component of the R/3 System. The following sections describe application servers in more detail. &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_604"&gt;Structure of an Application Server&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The application layer of an R/3 System is made up of the application servers and the message server. Application programs in an R/3 System are run on application servers. The application servers communicate with the presentation components, the database, and also with each other, using the message server.&lt;/p&gt;&lt;p&gt;The following diagram shows the structure of an application server:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e8a358411d1829f0000e829fbfe/Image512.gif" /&gt;&lt;/p&gt;&lt;p&gt;The individual components are: &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Work Processes&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;An application server contains work processes, which are components that can run an application. Each work process is linked to a memory area containing the context of the application being run. The context contains the current data for the application program. This needs to be available in each dialog step. Further information about the different types of work process is contained later on in this documentation.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Dispatcher&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Each application server contains a dispatcher. The dispatcher is the link between the work processes and the users logged onto the application server. Its task is to receive requests for dialog steps from the SAPgui and direct them to a free work process. In the same way, it directs screen output resulting from the dialog step back to the appropriate user.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Gateway&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Each application server contains a gateway. This is the interface for the R/3 communication protocols (RFC, CPI/C). It can communicate with other application servers in the same R/3 System, with other R/3 Systems, with R/2 Systems, or with non-SAP systems. &lt;/p&gt;&lt;p&gt;The application server structure as described here aids the performance and scalability of the entire R/3 System. The fixed number of work processes and dispatching of dialog steps leads to optimal memory use, since it means that certain components and the memory areas of a work process are application-independent and reusable. The fact that the individual work processes work independently makes them suitable for a multi-procecssor architecuture. The methods used in the dispatcher to distribute tasks to work processes are discussed more closely in the section &lt;i&gt;Dispatching Dialog Steps&lt;/i&gt;.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Shared Memory&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;All of the work processes on an application server use a common main memory area called shared memory to save contexts or to buffer constant data locally. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The resources that all work processes use (such as programs and table contents) are contained in shared memory. Memory management in the R/3 System ensres that the work processes always address the correct context, that is the data relevant to the current state of the program that is running. A mapping process projects the required context for a dialog step from shared memory into the address of the relevant work process. This reduces the actual copying to a minimum.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Local buffering of data in the shared memory of the application server reduces the number of database reads required. This reduces access times for application programs considerably. For optimal use of the buffer, you can concentrate individual applications (financial accounting, logistics, human resources) into separate application server groups.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Database Connection&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;When you start up an R/3 System, each application server registers its work proceses with the database layer, and receives a single dedicated channel for each. While the system is running, each work process is a user (client) of the database system (server). You cannot change the work process registration while the system is running. Neither can you reassign a database channel from one work process to another. For this reason, a work process can only make database changes within a &lt;b&gt;single&lt;/b&gt; database logical unit of work (LUW). A database LUW is an inseparable sequence of database operations. This has important consequences for the programming model explained below.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Dispatching Dialog Steps&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The number of users logged onto an application server is often many times greater than the number of available work processes. Furthermore, it is not restricted by the R/3 system architecture. Furthermore, each user can run several applications at once. The dispatcher has the important task of distributing all dialog steps among the work processes on the application server. &lt;/p&gt;&lt;p&gt;The following diagram is an example of how this might happen:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e8a358411d1829f0000e829fbfe/Image513.gif" /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The dispatcher receives the request to execute a dialog step from user 1 and directs it to work process 1, which happens to be free. The work process addresses the context of the application program (in shared memory) and executes the dialog step. It then becomes free again.&lt;/li&gt;&lt;li&gt;The dispatcher receives the request to execute a dialog step from user 2 and directs it to work process 1, which is now free again. The work process executes the dialog step as in step 1.&lt;/li&gt;&lt;li&gt;While work process 1 is still working, the dispatcher receives a further request from user 1 and directs it to work process 2, which is free.&lt;/li&gt;&lt;li&gt;After work processes 1 and 2 have finished processing their dialog steps, the dispatcher receives another request from user 1 and directs it to work process 1, which is free again.&lt;/li&gt;&lt;li&gt;While work process 1 is still working, the dispatcher receives a further request from user 2 and directs it to work process 2, which is free.&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;From this example, we can see that:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A dialog step from a program is assigned to a single work process for execution.&lt;/li&gt;&lt;li&gt;The individual dialog steps of a program can be executed on different work processes, and the program context must be addressed for each new work process.&lt;/li&gt;&lt;li&gt;A work process can execute dialog steps of different programs from different users.&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;The example does not show that the dispatcher tries to distribute the requests to the work processes such that the same work process is used as often as possible for the successive dialog steps in an application. This is useful, since it saves the program context having to be addressed each time a dialog step is executed.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_610"&gt;Dispatching and the Programming Model&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The separation of application and presentation layer made it necessary to split up application programs into dialog steps. This, and the fact that dialog steps are dispatched to individual work processes, has had important consequences for the programming model. &lt;/p&gt;&lt;p&gt;As mentioned above, a work process can only make database changes within a &lt;b&gt;single&lt;/b&gt; database logical unit of work (LUW). A database LUW is an inseparable sequence of database operations. The contents of the database must be consistent at its beginning and end. The beginning and end of a database LUW are defined by a commit command to the database system (database commit). During a database LUW, that is, between two database commits, the database system itself ensures consistency within the database. In other words, it takes over tasks such as locking database entries while they are being edited, or restoring the old data (rollback) if a step terminates in an error.&lt;/p&gt;&lt;p&gt;A typical SAP application program extends over several screens and the corresponding dialog steps. The user requests database changes on the individual screens that should lead to the database being consistent once the screens have all been processed. However, the individual dialog steps run on different work processes, and a single work process can process dialog steps from other applications. It is clear that two or more independent applications whose dialog steps happen to be processed on the same work process cannot be allowed to work with the same database LUW.&lt;/p&gt;&lt;p&gt;Consequently, a work process must open a &lt;b&gt;separate&lt;/b&gt; datables LUW for &lt;b&gt;each&lt;/b&gt; dialog step. The work process sends a commit command (database commit) to the database at the end of each dialog step in which it makes database changes. These commit commands are called implicit database commits, since they are not explicitly written into the application program. &lt;/p&gt;&lt;p&gt;These implicit database commits mean that a database LUW can be kept open for a maximum of one dialog step. This leads to a considerable reduction in database load, serialization, and deadlocks, and enables a large number of users to use the same system.&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e8a358411d1829f0000e829fbfe/Image514.gif" /&gt;&lt;/p&gt;&lt;p&gt;However, the question now arises of how this method (1 dialog step = 1 database LUW) can be reconciled with the demand to make commits and rollbacks dependent on the logical flow of the application program instead of the technical distribution of dialog steps. Database update requests that depend on one another form logical units in the program that extend over more than one dialog step. The database changes associated with these logical units must be executed together and must also be able to be undone together.&lt;/p&gt;&lt;p&gt;The SAP programming model contains a seies of bundling techniques that allow you to group database updates together in logical units. The section of an R/3 application program that bundles a set of logically-associated database operations is called an &lt;b&gt;SAP LUW&lt;/b&gt;. Unlike a database LUW, a SAP LUW includes all of the dialog steps in a logical unit, including the database update.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-485762424192880366?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/485762424192880366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=485762424192880366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/485762424192880366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/485762424192880366'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/application-servers-in-sap.html' title='Application Servers in SAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-7912039209902743947</id><published>2008-07-30T21:58:00.002+05:30</published><updated>2008-07-30T21:59:15.087+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Work Processes in SAP ABAP</title><content type='html'>&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Work processes execute the individual dialog steps in R/3 applications. The next two sections describe firstly the structure of a work process, and secondly the different types of work process in the R/3 System.&lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_611"&gt;Structure of a Work Process&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Work processes execute the dialog steps of application programs. They are components of an application server. The following diagram shows the components of a work process: &lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e7d358411d1829f0000e829fbfe/Image515.gif" /&gt;&lt;/p&gt;&lt;p&gt;Each work process contains two software processors and a database interface.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Screen Processor&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;In R/3 application programming, there is a difference between &lt;b&gt;user interaction&lt;/b&gt; and &lt;b&gt;processing logic&lt;/b&gt;. From a programming point of view, user interaction is controlled by &lt;b&gt;screens&lt;/b&gt;. As well as the actual input mask, a screen also consists of flow logic. The screen flow logic controls a large part of the user interaction. The R/3 Basis system contains a special language for programming screen flow logic. The screen processor executes the screen flow logic. Via the dispatcher, it takes over the responsibility for communication between the work process and the SAPgui, calls modules in the flow logic, and ensures that the field contents are transferred from the screen to the flow logic.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;ABAP-Prozessor&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The actual processing logic of an application program is written in &lt;b&gt;ABAP&lt;/b&gt; - SAP’s own programing language. The ABAP processor executes the &lt;b&gt;processing logic &lt;/b&gt;of the application program, and communicates with the database interface. The screen processor tells the ABAP processor which module of the &lt;b&gt;screen flow logic&lt;/b&gt; should be processed next. The following screen illustrates the interaction between the screen and the ABAP processors when an application program is running. &lt;/p&gt;&lt;p&gt;&lt;a name="_963406400"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e7d358411d1829f0000e829fbfe/Image516.gif" /&gt;&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_609"&gt;Database Interface&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;a name="Z_609"&gt; &lt;span style="font-family: Arial; font-size: 85%;"&gt; &lt;/span&gt;&lt;/a&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The database interface provides the following services:&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;li&gt;&lt;a name="Z_609"&gt;Establishing and terminating connections between the work process and the database.&lt;/a&gt;&lt;/li&gt;&lt;a name="Z_609"&gt; &lt;/a&gt;&lt;li&gt;&lt;a name="Z_609"&gt;Access to database tables&lt;/a&gt;&lt;/li&gt;&lt;a name="Z_609"&gt; &lt;/a&gt;&lt;li&gt;&lt;a name="Z_609"&gt;Access to R/3 Repository objects (ABAP programs, screens and so on)&lt;/a&gt;&lt;/li&gt;&lt;a name="Z_609"&gt; &lt;/a&gt;&lt;li&gt;&lt;a name="Z_609"&gt;Access to catalog information (ABAP Dictionary)&lt;/a&gt;&lt;/li&gt;&lt;a name="Z_609"&gt; &lt;/a&gt;&lt;li&gt;&lt;a name="Z_609"&gt;Controlling transactions (commit and rollback handling)&lt;/a&gt;&lt;/li&gt;&lt;a name="Z_609"&gt; &lt;/a&gt;&lt;li&gt;&lt;a name="Z_609"&gt;Table buffer administration on the application server.&lt;/a&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt; &lt;/span&gt;&lt;/a&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The following diagram shows the individual components of the database interface: &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e7d358411d1829f0000e829fbfe/Image517.gif" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The diagram shows that there are two different ways of accessing databases: Open SQL and Native SQL.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Open SQL statements are a subset of Standard SQL that is fully integrated in ABAP. They allow you to access data irrespective of the database system that the R/3 installation is using. Open SQL consists of the Data Manipulation Language (DML) part of Standard SQL; in other words, it allows you to read (SELECT) and change (INSERT, UPDATE, DELETE) data. The tasks of the Data Definition Language (DDL) and Data Control Language (DCL) parts of Standard SQL are performed in the R/3 System by the ABAP Dictionary and the authorization system. These provide a unified range of functions, irrespective of database, and also contain functions beyond those offered by the various database systems. &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Open SQL also goes beyond Standard SQL to provide statements that, in conjunction with other ABAP constructions, can simplify or speed up database access. It also allows you to buffer certain tables on the application server, saving excessive database access. In this case, the database interface is responsible for comparing the buffer with the database. Buffers are partly stored in the working memory of the current work process, and partly in the shared memory for all work processes on an application server. Where an R/3 System is distributed across more than one application server, the data in the various buffers is synchronized at set intervals by the buffer management. When buffering the database, you must remember that data in the buffer is not always up to date. For this reason, you should only use the buffer for data which does not often change. &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Native SQL is only loosely integrated into ABAP, and allows access to all of the functions contained in the programming interface of the respective database system. Unlike Open SQL statements, Native SQL statements are not checked and converted, but instead are sent directly to the database system. Programs that use Native SQL are specific to the database system for which they were written. R/3 applications contain as little Native SQL as possible. In fact, it is only used in a few Basis components (for example, to create or change table definitions in the ABAP Dictionary). &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The database-dependent layer in the diagram serves to hide the differences between database systems from the rest of the database interface. You choose the appropriate layer when you install the Basis system. Thanks to the standardization of SQL, the differences in the syntax of statements are very slight. However, the semantics and behavior of the statements have not been fully standardized, and the differences in these areas can be greater. When you use Native SQL, the function of the database-dependent layer is minimal.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;a name="Z_609"&gt; &lt;/a&gt;&lt;p&gt;&lt;a name="Z_609"&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Types of Work Process&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Although all work processes contain the components described above, they can still be divided into different types. The type of a work process determines the kind of task for which it is responsible in the application server. It does not specify a particular set of technical attributes. The individual tasks are distributed to the work processes by the dispatcher. &lt;/p&gt;&lt;p&gt;Before you start your R/3 System, you determine how many work processes it will have, and what their types will be. The dispatcher starts the work processes and only assigns them tasks that correspond to their type. This means that you can distribute work process types to optimize the use of the resources on your application servers.&lt;/p&gt;&lt;p&gt;The following diagram shows again the structure of an application server, but this time, includes the various possible work process types:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e7d358411d1829f0000e829fbfe/Image518.gif" /&gt;&lt;/p&gt;&lt;p&gt;The various work processes are described briefly below. Other parts of this documentation describe the individual components of the application server and the R/3 System in more detail. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Dialog Work Process&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Dialog work processes deal with requests from an active user to execute dialog steps.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Update Work Process&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Update work processes execute database update requests. Update requests are part of an SAP LUW that bundle the database operations resulting from the dialog in a database LUW for processing in the background.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Background Work Process&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Background work processes process programs that can be executed without user interaction (background jobs).&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Enqueue Work Process&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The enqueue work process administers a lock table in the shared memory area. The lock table contains the logical database locks for the R/3 System and is an important part of the SAP LUW concept. In an R/3 System, you may only have one lock table. You may therefore also only have one application server with enqueue work processes.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Spool Work Process&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The spool work process passes sequential datasets to a printer or to optical archiving. Each application server may contain only one spool work process.&lt;/p&gt;&lt;p&gt;The services offered by an application server are determined by the types of its work processes. One application server may, of course, have more than one function. For example, it may be both a dialog server and the enqueue server, if it has several dialog work processes and an enqueue work process.&lt;/p&gt;&lt;p&gt;You can use the system administration functions to switch a work process between dialog and background modes while the system is still running. This allows you, for example, to switch an R/3 System between day and night operation, where you have more dialog than background work processes during the day, and the other way around during the night.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-7912039209902743947?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/7912039209902743947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=7912039209902743947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7912039209902743947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7912039209902743947'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/work-processes-in-sap-abap.html' title='Work Processes in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-4033927655788358282</id><published>2008-07-30T21:58:00.001+05:30</published><updated>2008-07-30T21:58:34.508+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Overview of the Components of Application Programs in SAP ABAP</title><content type='html'>This overview describes application programming in the R/3 System. All application programs, along with parts of the R/3 Basis system, are written in the ABAP Workbench using ABAP, SAP’s programming language. The individual components of application programs are stored in a special section of the database called the R/3 Repository. The R/3 Repository serves as a central store for all of the development objects in the R/3 System. The following sections of this documentation cover the basics and characteristics of application programming.&lt;br /&gt;&lt;br /&gt;Structure of an Application Program&lt;br /&gt;&lt;br /&gt;Screens&lt;br /&gt;&lt;br /&gt;Structure of the Processing Logic&lt;br /&gt;&lt;br /&gt;Processing Blocks in ABAP Programs&lt;br /&gt;&lt;br /&gt;ABAP Statements&lt;br /&gt;&lt;br /&gt;Logical Databases and Contexts&lt;br /&gt;&lt;br /&gt;Memory Structures of an ABAP Program&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-4033927655788358282?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/4033927655788358282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=4033927655788358282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4033927655788358282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4033927655788358282'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/overview-of-components-of-application.html' title='Overview of the Components of Application Programs in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-3199692021786834967</id><published>2008-07-30T21:57:00.000+05:30</published><updated>2008-07-30T21:58:09.179+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Structure of an Application Program in SAP ABAP</title><content type='html'>&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;R/3 application programs run within the R/3 Basis system on the work processes of application servers. This makes them independent of the hardware and operating system that you are using. However, it also means that you cannot run them outside the R/3 System.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;As described in the &lt;/span&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;Overview of the R/3 Basis System&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;, a work process contains a screen processor for processing user input, an ABAP processor for processing the program logic, and a database interface for communicating with the database. These components of a work process determine the following structure of an applciation program:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2e10358411d1829f0000e829fbfe/Image496.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;An application program consists of two components, each of which has a different task:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;font-size:85%;"  &gt;Flow Logic&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;Interaction between application programs and the user is implemented using screens. Screens are processed by the screen processor of a work process. As well as the input mask, they consist of flow logic. This is coding, written using a special set of keywords called the screen language. The input mask is displayed by the SAPgui, which also transfers the user action on the screen back to the flow logic. In the program flow, screens react to the user actions and call program modules. These program modules form the processing logic.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;font-size:85%;"  &gt;Processing logic&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;The components of application programs that are responsible for data processing in the R/3 System are ABAP programs. ABAP stands for ‘Advanced Business Application Programming’. ABAP programs run on the ABAP processor of a work process. They receive screen input from the screen processor and send it to the screen processor. You access the database using the database interface. ABAP contains a special set of commands called OPEN SQL. This allows you to read from and write to the database regardless of the database you are using. The database interface converts the OPEN SQL commands into commands of the relevant database. You can also use native SQL commands, which are passed to the database without first being converted. There is a range of further interfaces such as memory, sequential files and external interfaces. These provide other means of sending data to and from ABAP programs. When working together with screens, ABAP programs play a more passive role, acting as a container for a set of modules that can be called from the flow logic.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-3199692021786834967?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/3199692021786834967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=3199692021786834967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3199692021786834967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3199692021786834967'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/structure-of-application-program-in-sap.html' title='Structure of an Application Program in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-8633753917949613361</id><published>2008-07-30T21:56:00.002+05:30</published><updated>2008-07-30T21:57:36.449+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Screens in SAP ABAP</title><content type='html'>&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;Each screen that a user sees in the R/3 System belongs to an application program. Screens send data to, receive data from, and react to the user’s interaction with the input mask. There are three ways to organize screen input and output. These differ in the way in which they are programmed, and in how the user typically interacts with them. &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;font-size:85%;"  &gt;Screens&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;In the most general case, you create an entire screen and its flow logic by hand using the &lt;b&gt;Screen Painter&lt;/b&gt; in the ABAP Workbench. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;font-size:85%;"  &gt;Selection Screens and Lists&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;There are two special kinds of screen in the R/3 System that you will often use - selection screens and lists. These screens and their flow logic are generated from ABAP statements in the processing logic. In this case, you do not have to work with the &lt;b&gt;Screen Painter&lt;/b&gt;. Instead, you define the entire screen in the &lt;b&gt;processing logic&lt;/b&gt;. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Screens in the R/3 System also contain a menu bar, a standard toolbar, and an application toolbar. Together, these three objects form the &lt;b&gt;status&lt;/b&gt; of the screen. Each status is an object of its corresponding application program. It is a standalone part of the screen . Since it does not expressly belong to one screen, it can be reused in any number of screens. You define statuses using the &lt;b&gt;Menu Painter&lt;/b&gt; in the ABAP Workbench. You can define your own statuses for screens and lists.  Selection screens have a fixed status.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The following sections describe the different types of screen in more detail.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;&lt;a name="Z_020"&gt;Screens&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Each screen contains an input mask that you can use for data input and output. You can design the mask yourself. When the screen mask is displayed by the SAPgui, two events are triggered: Before the screen is displayed, the Process Before Output (PBO) event is processed. When the user interacts with the screen, the Process After Input (PAI) event is processed.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Each screen is linked to a single PBO processing block and a single PAI processing block. The PAI of a screen and the PBO of the subsequent screen together form a &lt;b&gt;dialog step&lt;/b&gt; in the application program.  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The screen language is a special subset of ABAP, and contains only a few keywords. The statements are syntactically similar to the other ABAP statements, but you may not use screen statements in ABAP programs or ABAP statements in the screen flow logic. The most important screen keywords are MODULE, FIELD, CHAIN, and LOOP. Their only funciton is to link the processing logic to the flow logic, that is, to call modules in the processing logic, and control data transfer between the screen and the ABAP program, for example, by checking fields. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The input/output mask of a screen contains all of the normal graphical user interface elements, such as input/output fields, pushbuttons, and radio buttons. The following diagram shows a typical screen mask:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d81358411d1829f0000e829fbfe/Image509.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;All of the active elements on a screen have a field name and are linked to screen fields in shared memory. You can link screen fields to the ABAP Dictionary. This provides you with automatic field and value help, as well as consistency checks. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;When a user action changes the element, the value of the screen field is changed accordingly. Values are transported between screens and the processing logic in the PAI event, where the contents of the screen fields are transported to program fields with the same name. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Each screen calls modules in its associated ABAP program which prepare the screen (PBO) and process the entries made by the user (PAI). Although there are ABAP statements for changing the attributes of screen elements (such as making them visible or invisible), but there are none for defining them. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Dialog screens enable the user and application programs to communicate with each other. They are used in dialog-oriented programs such as transactions, where the program consists mainly of processing a sequence of screens. Essentially, you use screens when you need more flexibility than is offered by selection screens or lists. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;&lt;a name="Z_021"&gt;Selection Screens&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;Selection screens are special screens used to enter values in ABAP programs. Instead of using the Screen Painter, you create them using ABAP statements in the processing logic of your program. The selection screen is then generated according to these statements. The screen flow logic is supplied by the system, and remains invisible to you as the application programmer.&lt;/p&gt;&lt;p&gt;You define selection screens in the declaration part of an ABAP program using the special declaration statements PARAMETERS, SELECT-OPTIONS and SELECTION-SCREEN). These statements declare and format the input fields of each selection screen. The following is a typical selection screen:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d81358411d1829f0000e829fbfe/Image510.gif" /&gt;&lt;/p&gt;&lt;p&gt;The most important elements on a selection screen are input fields for single values and for selection tables. Selection tables allow you to enter more complicated selection criteria. Selection tables are easy to use in ABAP because the system automatically processes them itself. As on other screens, field and possible values help is provided for input fields which refer to an ABAP Dictionary field. Users can use pre-configured sets of input values for selection screens. These are called variants.&lt;/p&gt;&lt;p&gt;You call a selection screen from an ABAP program using the CALL SELECTION-SCREEN statement. If the program is an executable (report) with type 1, the ABAP runtime environment automatically calls the selection screen defined in the declaration part of the program. Selection screens trigger events, and can therefore call event blocks in ABAP programs.&lt;/p&gt;&lt;p&gt;Since selection screens contain principally input fields, selection screen dialogs are more input-oriented than the screens you define using the Screen Painter. Dialog screens can contain both input and output fields. Selection screens, however, are appropriate when the program requires data from the user before it can continue processing. For example, you would use a selection screen before accessing the database, to restrict the amount of data read. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;&lt;a name="Z_022"&gt;Lists&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Lists are output-oriented screens which display formatted, structured data. They are defined, formatted, and filled using ABAP commands. The system displays lists defined in ABAP on a special list screen. As with selection screens, the flow logic is supplied by the system and remains hidden from the application programmer.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The most important task of a list is to display data. However, users can also interact with them. Lists can react to mouse clicks and contain input fields. Despite these similarities with other types of screen, lists are displayed using a completely different technique. Input fields on lists cannot be compared with those on normal screens, since the method of transferring data between the list and the ABAP program is completely different in each case. If input fields on lists are linked to the ABAP Dictionary, the usual automatic field and possible values help is available. The following is a typical list:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d81358411d1829f0000e829fbfe/Image511.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;You define lists using a special set of statements (the list statements WRITE, SKIP, ULINE, NEW-PAGE and so on) in the processing blocks of ABAP programs. When these statements are executed, a list is composed within the system. An internal system program called the list processor is responsible for displaying lists and for interpreting user actions in the list. Lists are important because only data in list format can be sent to the R/3 spool system for printing.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;In an ABAP program, you can use the LEAVE TO LIST-PROCESSING statement to define the next screen as a list. If the ABAP program is an executable (report) with type 1, the ABAP runtime environment automatically calls the list defined in your program. A single program can be responsible for a stack of up to 21 lists. From one basic list, you can create up to 20 details lists. User actions on a list screen trigger events, and can thus call event blocks in the ABAP program.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Lists are output-oriented. When users carry out actions on a list screen, it is normally to use part of the list contents in the next part of the program, and not to input values directly. Using lists is appropriate when you want to work with output data, to print data or when the user’s next action depends on output data. &lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-8633753917949613361?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/8633753917949613361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=8633753917949613361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8633753917949613361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8633753917949613361'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/screens-in-sap-abap.html' title='Screens in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-8234738767508097569</id><published>2008-07-30T21:56:00.001+05:30</published><updated>2008-07-30T21:56:55.396+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Structure of ABAP Programs</title><content type='html'>&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;ABAP processing logic is responsible for processing data in R/3 application programs. ABAP was designed specifically for dialog-oriented database applications. The following sections deal with how an ABAP program is structured and executed.&lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_601"&gt;Program Structure&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;ABAP programs are responsible for data processing within the individual &lt;b&gt;dialog steps&lt;/b&gt; of an application program. This means that the program cannot be constructed as a single sequential unit, but must be divided into sections that can be assigned to the individual dialog steps. To meet this requirement, ABAP programs have a modular structure. Each module is called a &lt;b&gt;processing block&lt;/b&gt;. A processing block consists of a set of ABAP statements. When you run a program, you effectively call a series of processing blocks. They cannot be nested.&lt;/p&gt;&lt;p&gt;The following diagram shows the structure of an ABAP program:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d74358411d1829f0000e829fbfe/Image1091.gif" /&gt;&lt;/p&gt;&lt;p&gt;Each ABAP program consists of the following two parts:&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Declaration Part for Global Data, Classes and Selection Screens&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The first part of an ABAP program is the declaration part for global data, classes, and selection screens. This consists of:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;All declaration statements for global data. Global data is visible in all internal processing blocks. You define it using declarative statements that appear before the first processing block, in dialog modules, or in event blocks. You cannot declare local data in dialog modules or event blocks.&lt;/li&gt;&lt;li&gt;All selection screen definitions.&lt;/li&gt;&lt;li&gt;All local class definitions (CLASS DEFINITION statement). Local classes are part of ABAP Objects, the object-oriented extension of ABAP.&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Declaration statements which occur in procedures (methods, subroutines, function modules) form the declaration part for local data in those processing blocks. This data is only visible within the procedure in which it is declared. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Container for Processing Blocks&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The second part of an ABAP program contains all of the processing blocks for the program. The following types of processing blocks are allowed:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Dialog modules (no local data area)&lt;/li&gt;&lt;li&gt;Event blocks (no local data area)&lt;/li&gt;&lt;li&gt;Procedures (methods, subroutines and function modules with their own local data area).&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Whereas dialog modules and procedures are enclosed in the ABAP keywords which define them, event blocks are introduced with event keywords and concluded implicitly by the beginning of the next processing block. &lt;/p&gt;&lt;p&gt;&lt;b&gt;All&lt;/b&gt; ABAP statements (except declarative statements in the declaration part of the program) are part of a processing block. Non-declarative ABAP statements, which occur between the declaration of global data and a processing block are automatically assigned to the START-OF-SELECTION processing block. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Calling Processing Blocks&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;You can call processing blocks either from outside the ABAP program or using ABAP commands which are themselves part of a processing block. Dialog modules and event blocks are called from outside the ABAP program. Procedures are called using ABAP statements in ABAP programs.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Calling event blocks is different from calling other processing blocks for the following reasons: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;An event block call is triggered by an event. User actions on selection screens and lists, and the runtime environment trigger events that can be processed in ABAP programs. You only have to define event blocks for the events to which you want the program to react (whereas a subroutine call, for example, must have a corresponding subroutine). This ensures that while an ABAP program may react to a particular event, it is not forced to do so.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;&lt;a name="Z_603"&gt;Program Types and Execution&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;When you run an ABAP program, you call its processing blocks. ABAP programs are controlled from outside the program itself by the processors in the current work process. For the purposes of program flow, we can summarize the screen processor and ABAP processor into the ABAP runtime environment. The runtime environment controls screens and ABAP processing blocks. It contains a range of special control patterns that call screens and processing blocks in certain orders. These sections are also called processors. When you run an ABAP program, the control passes between various processors.&lt;/p&gt;&lt;p&gt;&lt;a name="_963406374"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d74358411d1829f0000e829fbfe/Image1092.gif" /&gt;&lt;/p&gt;&lt;p&gt;In the R/3 System, there are various types of ABAP program. The program type determines the basic technical attributes of the program, and you must set it when you create it. The main difference between the different program types is the way in which the runtime environment calls its processing blocks.&lt;/p&gt;&lt;p&gt;When you run an application program, you must call at least the first processing block from outside the program, that is, from the runtime environment. This processing block can then either call further processing blocks or return control to the runtime environment. When you start an ABAP program, the runtime environment starts a processor (dependent on the program type), which calls the first ABAP processing block. An ABAP program can be started either by the user or by the system (for example, in background processing), or through an external interface (for example, Remote Function Call).&lt;/p&gt;&lt;p&gt;There are two ways of allowing users to execute programs - either by entering the program name or by entering a transaction code. You can assign a transaction code to any program. Users can then start that program by entering the code in the command field. Transaction codes are also usually linked to a menu path within the R/3 System. &lt;/p&gt;&lt;p&gt;The following program types are relevant to application programming:&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Type 1&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Type 1 programs have the important characteristic that they do not have to be controlled using user-defined screens. Instead, they are controlled by the runtime environment, which calls a series of processing blocks (and selection screens and lists where necessary) in a fixed sequence. User actions on screens can then trigger further processing blocks. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;You can start a type 1 program and the corresponding processor in the runtime environment using the SUBMIT statement in another ABAP program. There are also various ways of starting a type1 program by entering its program name. This is why we refer to type 1 programs as executable programs.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;When you run a type 1 program, a series of processors run in a particular order in the runtime environment. The process flow allows the user to enter selection parameters on a selection screen. The data is them selected from the database and processed. Finally, an output list is displayed. At no stage does the programmer have to define his or her own screens. The runtime environment also allows you to work with a logical database. A logical database is a special ABAP program which combines the contents of certain database tables. The flow of a type 1 program is oriented towards reporting, whose main tasks are to read data from the database, process it, and display the results. This is why executable programs (type 1) in the R/3 System are often referred to as &lt;b&gt;reports&lt;/b&gt;, and why running an executable program is often called &lt;b&gt;reporting&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Since it is not compulsory to define event blocks, you can yourself determine the events to which your ABAP program should react. Furthermore, you can call your own screens or processing blocks at any time, leaving the prescribed program flow. You can use this, for example, to present data in a table on a dialog screen instead of in a list. The simplest executable program (report) contains only one processing block (START-OF-SELECTION). &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Executable programs do not require any user dialog. You can fill the selection screen using a variant and output data directly to the spool system instead of to a list. This makes executable programs (reports) the means of background processing in the R/3 System. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;You can also assign a transaction code to an executable program. Users can then start it using the transaction code and not the program name. The reporting-oriented runtime environment is also called when you run a report using a transaction code. This kind of transaction is called a &lt;b&gt;report transaction&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;It is appropriate to use executable programs (reports) when the flow of your program corresponds either wholly or in part to the pre-defined flow of the runtime environment. Until Release 4.5A, the only way to use a logical database was to use an executable program. However, from Release 4.5A, it is also possible to call logical databases on their own. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Type M&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The most important technical attribute of a type M program is that it can only be controlled using screen flow logic. You must start them using a transaction code, whcih is linked to the program and one of its screens (initial screen). Another feature of these programs is that you must define your own screens in the Screen Painter (although the intial screen can be a selection screen).&lt;/p&gt;&lt;p&gt;When you start a program using a transaction code, the runtime environment starts a processor that calls the initial screen. This then calls a dialog module in the corresponding ABAP program. The remainder of the program flow can take any form. For example, the dialog module can:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;return control to the screen, after which, the processing passes to a subsequent screen. Each screen has a following screen, set either statically or dynamically. &lt;/li&gt;&lt;li&gt;call other sequences of screens, selection screens or lists, from which further processing blocks in the ABAP program are started.&lt;/li&gt;&lt;li&gt;call other processing blocks itself, either internally or externally.&lt;/li&gt;&lt;li&gt;call other application programs using CALL TRANSACTION (type M program) or SUBMIT (type 1 program).&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;ABAP programs with type M contain the dialog modules belonging to the various screens. They are therefore known as &lt;b&gt;module pools&lt;/b&gt;. It is appropriate to use module pools when you write dialog-oriented programs using a large number of screens whose flow logic largely determines the program flow.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Type F&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Type F programs are containers for &lt;b&gt;function modules&lt;/b&gt;, and cannot be started using a transaction code or by entering their name directly. Function modules are special procedures that you can call from other ABAP programs. &lt;/p&gt;&lt;p&gt;Type F programs are known as &lt;b&gt;function groups&lt;/b&gt;.  Function modules may only be programmed in function groups.  The &lt;b&gt;Function Builder&lt;/b&gt; is a tool in the ABAP Workbench that you can use to create function groups and function modules. Apart from function modules, function groups can contain global data declarations and subroutines. These are visible to all function modules in the group. They can also contain event blocks for screens in function modules.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Type K&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;You cannot start type K programs using a transaction code or by entering the program name. They are containers for &lt;b&gt;global classes&lt;/b&gt; in ABAP Objects . Type K programs are known as &lt;b&gt;class definitions&lt;/b&gt;.  The &lt;b&gt;Class Builder&lt;/b&gt; is a tool in the ABAP Workbench that you can use to create class definitions.&lt;/p&gt;&lt;b&gt;&lt;p&gt;Type J&lt;/p&gt;&lt;/b&gt;&lt;p&gt;You cannot start type J programs using a transaction code or by entering the program name. They are containers for &lt;b&gt;global interface&lt;/b&gt; in ABAP Objects . Type J programs are known as &lt;b&gt;interface definitions&lt;/b&gt;.  Like class definitions, you create interface definitions in the &lt;b&gt;Class Builder&lt;/b&gt;. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Type S&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;You cannot start a type S program using a transaction code or by entering the program name. Instead, they are containers for subroutines, which you can call externally from other ABAP programs. Type S programs are known as &lt;b&gt;subroutine pools&lt;/b&gt;. They cannot contain screens. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Type I&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Type I programs - called &lt;b&gt;includes&lt;/b&gt; - are a means of dividing up program code into smaller, more manageable units. You can insert the coding of an include program at any point in another ABAP program using the INCLUDE statement. There is no technical relationship between include programs and processing blocks. Includes are more suitable for logical programming units, such as data declarations, or sets of similar processing blocks. The ABAP Workbench has a mechanism for automatically dividing up module pools and function groups into include programs.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-8234738767508097569?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/8234738767508097569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=8234738767508097569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8234738767508097569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8234738767508097569'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/structure-of-abap-programs.html' title='Structure of ABAP Programs'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-1457314528262935206</id><published>2008-07-30T21:55:00.000+05:30</published><updated>2008-07-30T21:56:12.276+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Processing Blocks in ABAP Programs</title><content type='html'>&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;The following sections explain the different processing blocks in ABAP programs and how they are called. &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Dialog Modules&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;You call dialog modules from the screen flow logic (screen command MODULE). You can write a dialog module in an ABAP program for each state (PBO, PAI; user input) of any of the screens belonging to it. The PAI modules of a screen together with the PBO modules of the subsequent screen form a &lt;b&gt;dialog step&lt;/b&gt;. The interaction between the flow logic and the screen is controlled by a dialog processor. &lt;/p&gt;&lt;p&gt;Dialog modules are introduced with the MODULE statement and concluded with the ENDMODULE statement.&lt;/p&gt;&lt;p&gt;&lt;a name="_963406376"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/Image502.gif" /&gt;&lt;/p&gt;&lt;p&gt;Fields on a dialog screen have the same name as a corresponding field in the ABAP program. Data is passed between identically-named fields in the program. You do notdefine dialog screens in the ABAP programs.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Event Blocks for Selection Screens&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;A selection screen is a special kind of dialog screen that you create using ABAP commands in the declaration part of the program. The different events in a selection screen (PAI, PBO, user input), are controlled by a selection screen processor. You can program processing logic for these events in your program. The selection screen processor controls the flow logic of the selection screen. &lt;/p&gt;&lt;p&gt;&lt;a name="_963406377"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/Image503.gif" /&gt;&lt;/p&gt;&lt;p&gt;You do not have to create the screen flow logic yourself, neither can you create your own dialog modules for the PBO or PAI events . Data is passed between selection screen and ABAP program using the fields (parameters and selection tables) which you create in the selection screen definition in the declaration part of the ABAP program.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Event Blocks for Lists&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;Lists are special screens which output formatted data. You can create them in any processing block in an ABAP program using a special set of commands (such as WRITE, NEW-PAGE and so on). The list processor displays the list on the screen and handles user actions within lists. The list processor controls the flow logic of the list. You do not have to create the screen flow logic yourself, neither can you create your own dialog modules for the PBO or PAI events .&lt;/p&gt;&lt;p&gt;&lt;a name="_963406379"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/Image504.gif" /&gt;&lt;/p&gt;&lt;p&gt;You can call various event blocks while the list is being created which are used in page formatting. The above illustration contains the event block TOP-OF-PAGE, which is called from the ABAP program itself. When the list is displayed, the user can carry out actions which trigger event blocks for interactive list events (such as AT LINE-SELECTION). You can program processing logic for the interactive list events in your program. Data is transferred from list to ABAP program via system fields or an internal memory area called the HIDE area.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Event Blocks for Executable Programs (Reports)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;When you run an executable program (type 1), it is controlled by a predefined process in the runtime environment. A series of processors is called, one after the other. These processors trigger events, for which you can define event blocks. Type 1 programs are event-driven.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a name="_963406382"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/Image505.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The process is as follows:&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;li&gt;The runtime environment creates the INITIALIZATION event and calls the corresponding event block (if it has been defined in the ABAP program).&lt;/li&gt;  &lt;li&gt;If there is a selection screen defined in the program, control returns to the selection screen processor. This generates the corresponding events and calls their event blocks. &lt;/li&gt;  &lt;li&gt;Control then passes to the reporting processor. It creates the START-OF-SELECTION event and calls the corresponding event block (if it has been defined in the ABAP program).&lt;/li&gt;  &lt;li&gt;The logical database, if you are using one, calls further event blocks at this point.&lt;/li&gt;  &lt;li&gt;The reporting processor creates the END-OF-SELECTION event and calls the corresponding event block (if it has been defined in the ABAP program).&lt;/li&gt;  &lt;li&gt;If the program contains a list description, control now passes to the list processor. The list processor displays the list defined in the ABAP program. It converts user actions on the list into events and calls the corresponding event blocks. &lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Subroutines&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;You call subroutines from ABAP programs using the PERFORM statement.&lt;/p&gt;&lt;p&gt;Subroutines are introduced with the FORM statement and concluded with the ENDFORM statement.&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/Image506.gif" /&gt;&lt;/p&gt;&lt;p&gt;You can define subroutines in any ABAP program. You can either call a subroutine that is part of the same program or an external subroutine, that is, one that belongs to a different program. If you call an internal subroutine, you can use global data to pass values between the main program and the subroutine. When you call an external subroutine, you must pass actual parameters from the main program to formal parameters in the subroutine.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Function Modules&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;Function modules are external functions with a defined interface. You call function modules from ABAP programs using the CALL FUNCTION statement. &lt;/p&gt;&lt;p&gt;Function modules are introduced with the FUNCTION statement and concluded with the ENDFUNCTION statement. &lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/Image507.gif" /&gt;&lt;/p&gt;&lt;p&gt;You can only create function groups within special ABAP programs called function groups using the Function Builder. This means that you can only call them externally from other ABAP programs. Unlike subroutines, you always pass data to function modules using an explicit parameter interface.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Methods&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;Methods describe the functions of classes in ABAP Objects. Like function modules, they have a defined interface. You call methods from ABAP programs using the CALL METHOD statement. &lt;/p&gt;&lt;p&gt;Methods are introduced with the METHOD statement and concluded with the ENDMETHOD statement. &lt;/p&gt;&lt;p&gt;&lt;a name="_963406386"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/Image508.gif" /&gt;&lt;/p&gt;&lt;p&gt;Methods can only be defined in the implementation parts of classes. You can either do this globally in the Class Builder, or locally within ABAP programs. Methods can work with the attributes of their class and with data that you pass to them using their explicit parameter interface. &lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-1457314528262935206?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/1457314528262935206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=1457314528262935206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1457314528262935206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1457314528262935206'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/processing-blocks-in-abap-programs.html' title='Processing Blocks in ABAP Programs'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-8826865235082932847</id><published>2008-07-30T21:54:00.000+05:30</published><updated>2008-07-30T21:55:05.356+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>ABAP Statements in SAP ABAP</title><content type='html'>&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;  &lt;p&gt;The source code of an ABAP program consists of comments and ABAP statements.&lt;/p&gt;&lt;p&gt;Comments are distinguished by the preceding signs * (at the beginning of a line) and " (at any position in a line).&lt;/p&gt;&lt;p&gt;ABAP statements always begin with an ABAP keyword and are always concluded with a period (.) . Statements can be several lines long; conversely, a line may contain more than one statement.&lt;/p&gt;&lt;p&gt;ABAP statements use ABAP data types and objects.&lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;a name="Z_006"&gt;Statements and Keywords&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;The first element of an ABAP statement is the ABAP keyword. This determines the category of the statements. The different statement categories are as follows: &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Declarative Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;These statements define data types or declare data objects which are used by the other statements in a program or routine. The collected declarative statements in a program or routine make up its declaration part. &lt;/p&gt;&lt;p&gt;Examples of declarative keywords:&lt;/p&gt;&lt;p&gt;TYPES, DATA, TABLES&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Modularization Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;These statements define the processing blocks in an ABAP program.&lt;/p&gt;&lt;p&gt;The modularization keywords can be further divided into: &lt;/p&gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;·&lt;/span&gt;  &lt;span style="font-size:85%;"&gt; Event Keywords&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;You use statements containing these keywords to define event blocks. There are no special statements to conclude processing blocks - they end when the next processing block is introduced.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Examples of event keywords are:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;AT SELECTION SCREEN, START-OF-SELECTION, AT USER-COMMAND &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;·&lt;/span&gt;  &lt;span style="font-size:85%;"&gt; Defining keywords&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;You use statements containing these keywords to define subroutines, function modules, dialog modules and methods. You conclude these processing blocks using the END- statements.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Examples of definitive keywords:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;FORM ..... ENDFORM, FUNCTION ... ENDFUNCTION,&lt;br /&gt;MODULE ... ENDMODULE.&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Control Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;You use these statements to control the flow of an ABAP program within a processing block according to certain conditions. &lt;/p&gt;&lt;p&gt;Examples of control keywords:&lt;/p&gt;&lt;p&gt;IF, WHILE, CASE&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Call Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;You use these statements to call processing blocks that you have already defined using modularization statements. The blocks you call can either be in the same ABAP program or in a different program. &lt;/p&gt;&lt;p&gt;Examples of call keywords:&lt;/p&gt;&lt;p&gt;PERFORM, CALL, SET USER-COMMAND, SUBMIT, LEAVE TO&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Operational Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;These keywords process the data that you have defined using declarative statements.&lt;/p&gt;&lt;p&gt;Examples of operational keywords:&lt;/p&gt;&lt;p&gt;WRITE, MOVE, ADD&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Database Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;These statements use the database interface to access the tables in the central database system. There are two kinds of database statement in ABAP: Open SQL and Native SQL.&lt;/p&gt;&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;  &lt;p&gt;Open SQL&lt;/p&gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;Open SQL is a subset of the standard SQL92 language. It contains only Data Manipulation Language (DML) statements, such as SELECT, IINSERT, and DELETE. It does not contain any Data Definition Language (DDL) statements (such as CREATE TABLE or CREATE INDEX). Functions of this type are contained in the ABAP Dictionary. Open SQL contains all of the DML functions from SQL92 that are common to all of the database systems supported by SAP. It also contains a few SAP-specific functions. ABAP programs that use only Open SQL statements to access the database are fully portable. The database interface converts the OPEN SQL commands into commands of the relevant database.&lt;/p&gt;&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;  &lt;p&gt;Native SQL&lt;/p&gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;Native SQL statements are passed directly from the database interface to the database without first being converted. It allows you to take advantage of all of your database’s characteristics in your programs. In particular, it allows you to use DDL operations. The ABAP Dictionary uses Native SQL for tasks such as creating database tables. In ordinary ABAP programs, it is not worth using DDL statements, since you cannot then take advantage of the central administration functions of thie ABAP Dictionary. ABAP programs that use Native SQL statements are database-specific, because there is no standardized programming interface for SQL92.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;a name="Z_005"&gt;Data Types and Objects&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;The physical units with which ABAP statements work at runtime are called internal program data objects. The contents of a data object occupy memory space in the program. ABAP statements access these contents by addressing the name of the data object. For example, statements can write the contents of data objects in lists or in the database, they can pass them to and receive them from routines, they can change them by assigning new values, and they can compare them in logical expressions. &lt;/p&gt;&lt;p&gt;Each ABAP data object has a set of technical attributes, which are fully defined at all times when an ABAP program is running. The technical attributes of a data object are: Data type, field length, and number of decimal places.&lt;/p&gt;&lt;p&gt;The data type determines how the contents of a data object are interpreted by ABAP statements. As well as occurring as attributes of a data object, data types can also be defined independently. You can then use them later on in conjunction with a data object. You can define data types independently either in the declaration part of an ABAP program (using the TYPES statement), or in the ABAP Dictionary.&lt;/p&gt;&lt;p&gt;The data types you will use in a program depend on how you will use your data objects. The task of an ABAP program can range from passing simple input data to the database to processing and outputting a large quantity of structured data from the database. ABAP contains the following data types:&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Predefined and User-defined Elementary Types&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;There are five predefined non-numeric data types: &lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Character string (C), Numeric character string (N), Date (D), Time (T) and Hexadecimal (X)&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;and three predefined numeric types:&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Integer (I), Floating-point number (F) and Packed number (P).&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;The &lt;b&gt;field length&lt;/b&gt; for data types D, F, I, and T is fixed. The field length determines the number of bytes that the data object occupies in memory. In types C, N ,X and P, the length is not part of the type definition. Instead, you define it when you declare the data object in your program. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Data type P is particularly useful for exact calculations in a business context. When you define an object with type P, you also specify a number of &lt;b&gt;decimal places&lt;/b&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;You can also define your own elementary data types in ABAP using the TYPES statement. You base these on the predefined data types. This determines all of the technical attribtues of the new data type. For example, you could define a data type P_2 with two decimal places, based on the predefined data type P. You could then use this new type in your data declarations.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;You use elementary data types to define individual elementary data objects. You use these object to transfer input and output values, as auxiliary fields in calculations, to store intermediate results, and so on. The aggregated data types described below are made up of elementary data types. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;An aggregated data type can be a &lt;b&gt;structure&lt;/b&gt; or an &lt;b&gt;internal table&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Structures&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;A structure is a user-defined sequence of data types. It fully defines the data object. You can either access the entire data object, or its individual components. ABAP has no predefined structures. You therefore need to define your own structures, either in the ABAP program in which you want to use it, or in the ABAP Dictionary. &lt;/p&gt;&lt;p&gt;You use structures in ABAP programs to group work areas that logically belong together. Since the individual elements within a structure can be of any type, and can also themselves be structures or internal tables, the possible uses of structures are very wide-ranging. For example, you can use a structure with elementary data types to display lines from a database table within a program. You can also use structures containing aggregated elements to include all of the attributes of a screen or control in a single data object. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Internal Tables&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;Internal tables consists of a series of lines that all have the same data type.&lt;/p&gt;&lt;p&gt;Internal tables are characterized by:&lt;/p&gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;·&lt;/span&gt;  &lt;span style="font-size:85%;"&gt; Their line type.&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;The line type of an internal table can be any ABAP data type - an elementary type, a structure or an internal table.&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;·&lt;/span&gt;  &lt;span style="font-size:85%;"&gt; A key&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;The key of an internal table is used to identify its entries. It is made up of the elementary fields in the line. The key may be unique or non-unique.&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;·&lt;/span&gt;  &lt;span style="font-size:85%;"&gt; The access type&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;The access method determines how ABAP will access individual table entries. There are three access types, namely unsorted tables, sorted index tables and hash tables.&lt;br /&gt;For index tables, the system maintains a linear index, so you can access the table either by specifying the index or the key.&lt;br /&gt;Hashed tables have no linear index. You can only access hashed tables by specifying the key. The system has its own hash algorithm for managing the table.&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;You should use internal tables whenever you need to use structured data within a program. One imprint use is to store data from the database within a program. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Data Types for Reference&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;You use references to refer to objects in ABAP Objects. References are stored in reference variables. The data type of the reference determines how it is handled in the program. There are different types for class and interface variables.&lt;/p&gt;&lt;p&gt;Reference variables in ABAP are treated like other elementary data objects. This means that a reference variable can occur as a component of a structure or internal table as well as on its own. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-size:85%;" &gt;Declaring Data Objects&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-size:85%;"&gt;  &lt;p&gt;Apart from the interface parameters of routines, you declare all of the data objects in an ABAP program or routine in its declaration part. The declarative statements establish the data type of the object, along with any missing technical attributes, such as its length or the number of decimal places. This all takes place before the program is actually executed. The exception to this are internal tables. &lt;/p&gt;&lt;p&gt;When you declare an internal table, you specify the above details. However, you do not need to specify the overall size of the data object. Only the length of a row in an internal table is fixed. The number of rows (the actual length of the data object in memory) is adapted dynamically at runtime. In short, internal tables can be extended dynamically while retaining a fixed structure. &lt;/p&gt;&lt;p&gt;The interface parameters of routines are generated as local data objects, but not until the routine is called. You can define the technical attributes of the interface parameters in the routine itself. If you do not, they adopt the attributes of the parameters from which they receive their values.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-8826865235082932847?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/8826865235082932847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=8826865235082932847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8826865235082932847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8826865235082932847'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/abap-statements-in-sap-abap.html' title='ABAP Statements in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-6159441292604053382</id><published>2008-07-30T21:53:00.001+05:30</published><updated>2008-07-30T21:53:47.225+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Logical Databases and Contexts in SAP ABAP</title><content type='html'>&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;This section introduces logical databases and contexts - two methods that make it easier to read data from database tables. Both of them encapsulate Open SQL statements in separate ABAP programs.&lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Logical Databases&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Logical databases are special ABAP programs that read data from database tables. They are used by executable (type 1) programs. At runtime, you can regard the logical database and the executable program (reports) as a single ABAP program, whose processing blocks are called by the runtime environment in a particular, pre-defined sequence.&lt;/p&gt;&lt;p&gt;You edit logical databases using a tool within the ABAP Workbench, and link them to executable programs (reports) when you enter the program attributes. You can use a logical database with any number of executable programs (reports). From Release 4.5A, it is also possible to call logical databases on their own. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Structure of a Logical Database&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The following diagram shows the structure of a logical database, which can be divided into three sections:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d4d358411d1829f0000e829fbfe/Image497.gif" /&gt;&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Structure&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The structure of a logical database determines the database tables which it can access. It adopts the hierarchy of the database tables defined by their foreign key relationships. This also controls the sequence in which the tables are accessed.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Selection Part&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The selection part of the logical database defines input fields for selecting data. The runtime environment displays these on the selection screen when you run an executable program linked to the logical database. The corresponding fields are also available in the ABAP program, allowing you, for example, to change their values to insert default values on the selection screen. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Database Program&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The database program of a logical database is a container for special subroutines, in which the data is read from the database tables. These subrotuines are called by the reporting processor in the runtime environment in a predefined sequence. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Running Type 1 Programs with a Logical Database&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The following diagram shows the principal processing blocks that are called when you run an executable program linked to a logical database: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;a name="_963406370"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d4d358411d1829f0000e829fbfe/Image498.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The runtime environment calls depend both on the structure of the logical database and on the definition of the executable program. The structure of the logical database determines the sequence in which the processing blocks of the logical database are called. These in turn call GET event blocks in the executable program. These GET event blocks determine the read depth in the structure of the logical database. TABLES or NODES statements in the declaration part of the executable program determine which of the input fields defined in the logical database are included in the selection screen. They also define interface work areas for passing data between the logical database and the executable program. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The actual access to the R/3 System database is made using OPEN SQL statements in the PUT_subroutines. The data that is read is passed to the executable program using the interface work areas (defined using the TABLES statement). Once the data has been read in the logical database program, the executable program (report) can process the data in the GET event blocks. This technique separates data reading and data processing. &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Uses of Logical Databases&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The main use of logical databases is to make the code that accesses data in database tables reusable. SAP supplies logical databases for all applications. These have been configured for optimal performance, and contain further functions such as authorization checks and search helps. It is appropriate to use logical databases whenever the database tables you want to read correspond largely to the structure of the logical database and where the flow of the system program (select - read - process - display) meets the requirements of the application. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Contexts&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;In application programming, you often use a relatively small set of basic data to derive further data. This basic data might, for example, be the data that the user enters on the screen. The relational links in the database are often used to read further data on the basis of this basic data, or further values are calculated from it using ABAP statements. &lt;/p&gt;&lt;p&gt;It is often the case that certain relationships between data are always used in the same form to get further data, either within a single program or in a whole range of programs. This means that a particular set of database accesses or calculations is repeatedly executed, despite the fact that the result already exists in the system. This causes unnecessary system load, which can be alleviated by using contexts. &lt;/p&gt;&lt;p&gt;You define contexts in the Context Builder, which is part of the ABAP Workbench. They consist of key input fields, the relationships between the fields, and the other fields and values that you can derive from them. Contexts can link these derived fields by foreign key relationships between tables, by function modules, or by other contexts.&lt;/p&gt;&lt;p&gt;&lt;a name="_963406372"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d4d358411d1829f0000e829fbfe/Image499.gif" /&gt;&lt;/p&gt;&lt;p&gt;In application programs, you work with instances of a context. You can use more than one instance of the same context. The application program supplies input values for the key fields in the context using the SUPPLY statement, and can query the derived fields from the instance using the DEMAND statement.&lt;/p&gt;&lt;p&gt;Each context has a cross-transaction buffer on the application server. When you query an instance for values, the context program searches first of all for a data record containing the corresponding key fields in the appropriate buffer. If one exists, the data is copied to the instance. If one does not exist, the context program derives the data from the key field values supplied and writes the resulting data record to the buffer.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-6159441292604053382?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/6159441292604053382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=6159441292604053382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6159441292604053382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6159441292604053382'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/logical-databases-and-contexts-in-sap.html' title='Logical Databases and Contexts in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-283919800411434462</id><published>2008-07-30T21:52:00.002+05:30</published><updated>2008-07-30T21:53:08.258+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Memory Structures of an ABAP Program</title><content type='html'>&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;In the &lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;Overview of the R/3 Basis System&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt; you have seen that each user can open up to six R/3 windows in a single SAPgui session. Each of these windows corresponds to a session on the application server with its own area of shared memory. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The first application program that you start in a session opens an internal session within the main session. The internal session has a memory area that contains the ABAP program and its associated data. When the program calls external routines (methods, subroutines or function modules) their main program and working data are also loaded into the memory area of the internal session.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Only one internal session is ever active. If the active application program calls a further application program, the system opens another internal session. Here, there are two possible cases: If the second program does not return control to the calling program when it has finished running, the called program replaces the calling program in the internal session. The contents of the memory of the calling program are deleted. If the second program does return control to the calling program when it has finished running, the session of the called program is not deleted. Instead, it becomes inactive, and its memory contents are placed on a stack. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The memory area of each session contains an area called ABAP memory. ABAP memory is available to all internal sessions. ABAP programs can use the EXPORT and IMPORT statements to access it. Data within this area remains intact during a whole sequence of program calls. To pass data to a program which you are calling, the data needs to be placed in ABAP memory before the call is made. The internal session of the called program then replaces that of the calling program. The program called can then read from the ABAP memory. If control is then returned to the program which made the initial call, the same process operates in reverse.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;All ABAP programs can also access the SAP memory. This is a memory area to which all sessions within a SAPgui have access. You can use SAP memory either to pass data from one program to another within a session, or to pass data from one session to another. Application programs that use SAP memory must do so using SPA/GPA parameters (also known as SET/GET parameters). These parameters are often used to preassign values to input fields. You can set them individually for users, or globally according to the flow of an application program. SAP memory is the only connection between the different sessions within a SAPgui.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The following diagram shows how an application program accesses the different areas within shared memory:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d40358411d1829f0000e829fbfe/Image523.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;In the diagram, an ABAP program is active in the second internal session of the first main session. It can access the memory of its own internal session, ABAP memory and SAP memory. The program in the first internal session has called the program which is currently active, and its own data is currently inactive on the stack. If the program currently active calls another program but will itself carry on once that program has finished running, the new program will be activated in a third internal session.&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/177530344658880345-283919800411434462?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/283919800411434462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=283919800411434462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/283919800411434462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/283919800411434462'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/memory-structures-of-abap-program.html' title='Memory Structures of an ABAP Program'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-6444712487893072923</id><published>2008-07-30T21:52:00.001+05:30</published><updated>2008-07-30T21:52:38.079+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Creating and Changing ABAP Programs in SAP ABAP</title><content type='html'>&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;ABAP programs are objects of the R/3 Repository. Like all other Repository objects, you maintain them using an &lt;/span&gt;  &lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/book.gif" border="0" /&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;ABAP Workbench&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt; tool - in this case, the ABAP Editor. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;This section provides a brief description of the ABAP Workbench and an overview of how to create and edit ABAP programs. It describes the different ways of starting the ABAP Editor. In the text below, 'open a program' always means 'start the ABAP Editor and use it to open a program'.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Starting the ABAP Editor&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;To start the ABAP Editor to create or change ABAP programs, the R/3 system offers three possibilities:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Using the Repository Browser&lt;/span&gt;&lt;/ul&gt;  &lt;dir&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The Repository Browser in the ABAP Workbench (transaction SE80) offers a hierarchical overview of all R/3 Repository objects, ordered by development class, user name of the programmer, object type, and so on. If you enter a program name, you can directly access all of its components, such as the main program, subroutines, and global data. If you select a program object in the Repository Browser and choose &lt;i&gt;Change&lt;/i&gt;, the system automatically opens the appropriate tool; in this case, the ABAP Editor. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;This method is suitable for complex programs, since the Repository Browser always provides you with an overview of all of the program components. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;ul&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Using the ABAP Editor&lt;/span&gt;&lt;/ul&gt;  &lt;dir&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;You can open a program directly by choosing ABAP Editor from the initial screen of the ABAP Workbench (Transaction SE38). If you want to change a program using this method, you must already know its name and environment. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;This procedure is suited for maintaining or creating relatively simple or short programs, which have few or no additional components. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;ul&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Using Forward Navigation&lt;/span&gt;&lt;/ul&gt;  &lt;dir&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;In any of the tools in the ABAP Workbench, you can open a different Repository object by positioning the cursor on it and double-clicking. The system automatically opens the object using the correct tool. This also applies to ABAP programs.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Forward navigation by double-clicking is possible wherever an ABAP program is called from another object, such as screen flow logic or another program. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Naming ABAP Programs&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The name of an ABAP program can be between 1 and 30 characters long. It cannot contain any of the following characters: Period (.), comma (,), space (), parentheses (), apostrophe (‘), inverted commas ("), equals sign (=), asterisk (*), accented characters or German umlauts (à, é, ø, ä, ß, and so on), percentage signs (%), or underscores (_).&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Program Attributes&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Like many other Repository objects, ABAP programs have attributes, which are important in determining the function of the program within the R/3 System. For an overview of program attributes, refer to &lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;Maintaining Program Attributes&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Source Code&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;ABAP source code defines the processing logic of R/3 application programs. For an introduction to writing source code, refer to &lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;Editing Programs&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&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/177530344658880345-6444712487893072923?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/6444712487893072923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=6444712487893072923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6444712487893072923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6444712487893072923'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/creating-and-changing-abap-programs-in.html' title='Creating and Changing ABAP Programs in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-6095317688265052743</id><published>2008-07-30T21:51:00.002+05:30</published><updated>2008-07-30T21:52:12.131+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Opening a Program from the Repository Browser in SAP ABAP</title><content type='html'>&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;To open ABAP programs from the Repository Browser, choose &lt;i&gt;Repository Browser &lt;/i&gt;from the &lt;i&gt;ABAP Workbench&lt;/i&gt; screen, or start Transaction SE80. &lt;/p&gt;&lt;p&gt;&lt;a name="_966672937"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d33358411d1829f0000e829fbfe/Image6545.gif" /&gt;&lt;/p&gt;&lt;p&gt;Here you can enter a program name directly or display a list of all programs of a certain development class.&lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Opening a Specific Program&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Enter a program name in the object list and choose &lt;i&gt;Display&lt;/i&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If the program does not yet exist, a dialog screen appears, asking you whether to create the program. Otherwise, the Repository Browser opens the specified program.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Creating a New Program&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;li&gt;The dialog box &lt;i&gt;Create Program&lt;/i&gt; appears, which allows you to create a &lt;i&gt;TOP INCL&lt;/i&gt; (top include program). A Top include is a special include program in which you write your global data declarations. When you create a module pool, begin the name with ‘SAPM’. This allows the system to propose a default name for the Top include that is automatically included in the ABAP Workbench navigation functions. &lt;/li&gt;  &lt;li&gt;The &lt;i&gt;ABAP: Program Attributes&lt;/i&gt; screen appears, on which you must enter the program attributes. Maintaining the program attributes is an important procedure when creating a program. Enter the program attributes. &lt;/li&gt;  &lt;li&gt;Save the program attributes.&lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The program now exist in the R/3 Repository. You can now either branch directly to the ABAP Editor by choosing &lt;i&gt;Source code&lt;/i&gt;, or open the program using the Repository Browser. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Displaying the  Programs in a Development Class&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Enter the name of an existing development class in the object list and choose &lt;i&gt;Display&lt;/i&gt;. The system displays a hierarchical overview of all R/3 Repository objects belonging to the specified development class. &lt;/p&gt;&lt;dir&gt;&lt;p&gt;&lt;a name="_966672936"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d33358411d1829f0000e829fbfe/Image6546.gif" /&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;p&gt;You now have several possibilities:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If the &lt;i&gt;Programs&lt;/i&gt; node does not exist on the screen, you can create a program by positioning the cursor on the &lt;i&gt;Object Types Development Class&lt;/i&gt; node and choosing &lt;i&gt;Create&lt;/i&gt;.  &lt;/li&gt;&lt;/ul&gt;  &lt;dir&gt;&lt;p&gt;A dialog box appears (&lt;i&gt;Development Objects&lt;/i&gt;).Choose the entry &lt;i&gt;Program objects&lt;/i&gt;. In the subsequent dialog box (&lt;i&gt;Program Objects&lt;/i&gt;) choose the entry &lt;i&gt;Program.&lt;/i&gt; Enter a name and choose &lt;i&gt;Create&lt;/i&gt; again. &lt;/p&gt;&lt;p&gt;The &lt;i&gt;Create Program&lt;/i&gt; dialog box appears.&lt;i&gt; &lt;/i&gt;From here, carry on as described in &lt;i&gt;Creating a New Program&lt;/i&gt; above. &lt;/p&gt;&lt;/dir&gt;  &lt;ul&gt;&lt;li&gt;If the &lt;i&gt;Programs &lt;/i&gt;node already exists on the screen, you can position the cursor on it and choose &lt;i&gt;Create&lt;/i&gt; to create a new program.&lt;/li&gt;&lt;li&gt;In this case, you can also expand the node to display all of the programs belonging to the development class. &lt;/li&gt;&lt;/ul&gt;  &lt;dir&gt;&lt;p&gt;Position the cursor on a program name and double-click or choose &lt;i&gt;Display&lt;/i&gt; or &lt;i&gt;Change&lt;/i&gt;. This opens the ABAP Editor for the program.&lt;/p&gt;&lt;/dir&gt;  &lt;p&gt;The Repository Browser displays the program as a tree structure with the program as its root node and the individual program components as subnodes. Note that selecting other components of the program does not open the ABAP Editor to display the source code of the program, but always the appripriate tool for the selected component. In special cases, such as for include programs, this can also be the ABAP Editor. However, you then edit only the component and not the source code of the entire program.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-6095317688265052743?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/6095317688265052743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=6095317688265052743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6095317688265052743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6095317688265052743'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/opening-program-from-repository-browser.html' title='Opening a Program from the Repository Browser in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-1992259075933161962</id><published>2008-07-30T21:51:00.001+05:30</published><updated>2008-07-30T21:51:25.342+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Opening Programs in the ABAP Editor</title><content type='html'>&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;To open ABAP programs directly using the ABAP Editor, choose &lt;i&gt;ABAP Editor &lt;/i&gt;in the &lt;i&gt;ABAP Workbench&lt;/i&gt; screen or start Transaction SE38, and enter a program name. &lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;font-size:130%;"  &gt;Creating a New Program&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;If the program does not exist, choose &lt;i&gt;Create&lt;/i&gt;. The &lt;i&gt;ABAP: Program Attributes&lt;/i&gt; screen appears, on which you must enter the program attributes. &lt;/p&gt;&lt;p&gt;If you create a program in this way, the system does &lt;b&gt;not&lt;/b&gt; offer to create a Top include. This way of creating programs is therefore best suited for reports and short test programs. Once you have entered and saved the program attributes, the new program exists in the R/3 Repository. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;font-size:130%;"  &gt;Maintaining an Existing Program&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;To edit an existing program, enter its name on the initial screen of the ABAP Editor (Transaction SE38), select one of the following components, and then choose &lt;i&gt;Display&lt;/i&gt; or &lt;i&gt;Change&lt;/i&gt;. &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;li&gt;&lt;i&gt;Source Code&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;dir&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Starts the ABAP Editor. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;li&gt;&lt;i&gt;Variants&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;dir&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Starts the variant maintenance tool. Variants allow you to define fixed values for the input fields on the selection screen of a report. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;li&gt;&lt;i&gt;Attributes&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;dir&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Allows you to change the program attributes (see below). &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;li&gt;&lt;i&gt;Documentation&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;dir&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Allows you to write documentation for a particular executable program (report). The system starts the SAP&lt;i&gt;script&lt;/i&gt; Editor, where you can enter the documentation according to the predefined template. When executing the report, the user can display this documentation by choosing &lt;i&gt;System &lt;/i&gt;&lt;/span&gt;&lt;i&gt;  &lt;span style=";font-family:Symbol;font-size:85%;"  &gt;®&lt;/span&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt; Services &lt;/span&gt;  &lt;span style=";font-family:Symbol;font-size:85%;"  &gt;®&lt;/span&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt; Reporting&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt; (Transaction SA38) and &lt;i&gt;Goto &lt;/i&gt;&lt;/span&gt;&lt;i&gt;  &lt;span style=";font-family:Symbol;font-size:85%;"  &gt;®&lt;/span&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt; Documentation&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;. If the report is stored as node in a reporting tree (Transaction SERP), the user can choose &lt;i&gt;Goto &lt;/i&gt;&lt;/span&gt;&lt;i&gt;  &lt;span style=";font-family:Symbol;font-size:85%;"  &gt;®&lt;/span&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt; Display docu.&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt; from the tree display to display the documentation.&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;li&gt;&lt;i&gt;Text elements&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;dir&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;Allows you to edit the text elements of the program. Text elements are all texts that appear on the selection screen or on the output screen of a report.&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;You can also access any of these components by using the &lt;i&gt;Goto&lt;/i&gt; menu in the ABAP Editor itself. &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/177530344658880345-1992259075933161962?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/1992259075933161962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=1992259075933161962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1992259075933161962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1992259075933161962'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/opening-programs-in-abap-editor.html' title='Opening Programs in the ABAP Editor'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-1950867381055052161</id><published>2008-07-30T21:50:00.001+05:30</published><updated>2008-07-30T21:50:56.115+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Opening Programs Using Forward Navigation in SAP ABAP</title><content type='html'>&lt;p&gt;If you are already working in the ABAP Workbench, you can open a program by positioning the cursor on the program name and double-clicking.&lt;/p&gt;&lt;p&gt;Other ways of foward navigation are always available in the menus of the workbench tools, usually under &lt;i&gt;Goto&lt;/i&gt; or &lt;i&gt;Environment&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;The following examples show some of the possibilites of forward navigation.  &lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Suppose, you are editing a program and find the line&lt;/p&gt;&lt;p&gt;SUBMIT ZZHKTST 1.&lt;/p&gt;&lt;p&gt;This statement calls an executable program (report) from within another ABAP program. &lt;/p&gt;&lt;p&gt;If you position the cursor on the name ZZHKTST1 and double-click, there are two possibilities:&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;  &lt;dir&gt;&lt;ol&gt;&lt;li&gt;If the program ZZHKTST1 already exists:&lt;/li&gt;&lt;p&gt;The system opens ZZHKTST1 in the ABAP Editor, and you can read or edit it.&lt;/p&gt;&lt;li&gt;If the program ZZHKTST1 does not exist:&lt;/li&gt;&lt;/ol&gt;&lt;/dir&gt;  &lt;dir&gt;&lt;p&gt;A dialog box appears, asking you if you want to create the program. &lt;/p&gt;&lt;/dir&gt;  &lt;p&gt;After editing ZZHKTST1, you can choose &lt;i&gt;Back&lt;/i&gt; to return to the ABAP Editor session of the original program.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In the Repository Browser, open the hierarchy tree of a program that contains at least one screen. Position the cursor on a screen under the &lt;i&gt;Screen&lt;/i&gt; node. &lt;/p&gt;&lt;p&gt;If you choose &lt;i&gt;Display&lt;/i&gt;, &lt;i&gt;Change&lt;/i&gt;, or double-click the screen name, the system opens the Screen Painter and displays the flow logic of the screen.&lt;/p&gt;&lt;p&gt;This usually contains a series of MODULE statements that call ABAP modules in the program. &lt;/p&gt;&lt;p&gt;Position the cursor on a module name and double-click. The system opens the ABAP Editor for the corresponding include program at the position in the program where the relevant module is programmed. The include program is used to modularize the source code of the main program.&lt;/p&gt;&lt;p&gt; &lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/beispiel.gif" /&gt;&lt;/p&gt;&lt;p&gt;If you position the cursor on the name of an include in an INCLUDE statement in the ABAP Editor and double-click, the system opens the include program in the Editor. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-1950867381055052161?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/1950867381055052161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=1950867381055052161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1950867381055052161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1950867381055052161'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/opening-programs-using-forward.html' title='Opening Programs Using Forward Navigation in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-8947666819069500036</id><published>2008-07-30T21:49:00.002+05:30</published><updated>2008-07-30T21:50:20.299+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Maintaining Program Attributes in SAP ABAP</title><content type='html'>&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;In the program attributes, you set the runtime environment of a program, and thus determine how it runs. The most important attribute is the program type. This specifies how the program can be executed. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The program attributes also tell you the application to which the program belongs, and, in the case of executable programs (reports), the name of any associated logical database. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Take care to enter the correct program attributes, otherwise the system will not be able to run the program properly. You maintain the program attributes on the &lt;i&gt;ABAP: Program Attributes &lt;/i&gt;screen. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;&lt;a name="_966672931"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2d0c358411d1829f0000e829fbfe/Image6544.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;To create an executable program (report), enter 1 in the &lt;i&gt;Type&lt;/i&gt; field.  To create a module pool, enter M&lt;/span&gt;  &lt;b&gt;&lt;span style="font-family: Avantegarde,AvantGarde Md BT; font-size: 85%;"&gt; &lt;/span&gt;&lt;/b&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;in the   &lt;i&gt;Type&lt;/i&gt; field. For a list of other possible types, use the possible entries button.&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If you create a report (type = 1), choose&lt;i&gt; &lt;/i&gt;&lt;/span&gt;  &lt;span style="font-family: Courier New; font-size: 85%;"&gt;Enter&lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The system automatically displays the input fields for report-specific attributes. Only now are the additional input fields &lt;i&gt;Logical database, from application,&lt;/i&gt; and &lt;i&gt;Selection screen&lt;/i&gt; visible.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Overview of all program attributes&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The following section provides information about program attributes. Note that some of these attributes only apply to executable programs (reports), and not to other ABAP program types. The field help and possible values help for the fields on the &lt;i&gt;ABAP: Program Attributes&lt;/i&gt; screen provide further information.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Version&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;These fields are used for version administration. The system fills them.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Title&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;In the required entry field &lt;i&gt;Title&lt;/i&gt; enter a program description that describes the function of the program. The system automatically includes the title into the text elements of the program. Thus, you can edit the title when maintaining the text elements.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Maintenance Language&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The maintenance language is the logon language of the user who creates the program. The system fills this field automatically. You can change the maintenance language, if you maintain the program or its components in another logon language.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Type&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;In the &lt;i&gt;Type&lt;/i&gt; field, you must specify the execution mode of your program. &lt;/p&gt;&lt;p&gt;Use &lt;b&gt;Type 1&lt;/b&gt; (report) to declare your program as executable.. This means that the program can run on its own, and that you can start it in the R/3 system without a transaction code. You can also run executable programs (reports) in the background. &lt;/p&gt;&lt;p&gt;Use &lt;b&gt;Type M&lt;/b&gt; to declare your program as a module pool. This means that your program &lt;b&gt;cannot&lt;/b&gt; run on its own, but serves as a frame for program modules used for dialog programming. These program modules contain the application logic of a transaction and are called by a separately programmed screen flow logic (programming screens using the Screen Painter tool). The screen flow logic itself can be called via a transaction code only.&lt;/p&gt;&lt;p&gt;Apart form type 1 (for executable programs (reports)) and type M (for module pools), you should also know &lt;b&gt;Type I&lt;/b&gt; for include programs. An inlcude program is an independent program with two main functions: On one hand, it contains program code that can be used by different programs. On the other hand, it modularizes source code, which consists of several different, logically related parts. Each of these parts is stored in a different include program. Include programs make your source code easier to read and maintain. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Status&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;This entry describes the status of the program development; for example, T for test program.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Application&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;This field contains the short form of your application, for example, &lt;/span&gt;  &lt;b&gt;&lt;span style="font-family: Courier; font-size: 85%;"&gt;F &lt;/span&gt;&lt;/b&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;for Financial accounting. This required entry enables the system to allocate the program to the correct business area.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Authorization Group&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;In this field, you can enter the name of a program group. This allows you to group different programs together for authorization checks. The group name is a field of the two authorization objects S_DEVELOP (program development and program execution) and S_PROGRAM (program maintenance). Thus, you can assign authorizations to users according to program groups. For more information about creating function modules, refer to the &lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;Users and Authorizations&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt; documentation.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Development Class&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;The development class is important for transports between systems. You combine all Workbench objects assigned to one development class in one transportation request.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If you are working in a team, you may have to assign your program to an existing development class, or you may be free to create a new class. All programs assigned to the development class $TMP are private objects and cannot be transported into other systems. You can enter the development class directly into this field. Otherwise, the system prompts for it when you save the attributes.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Choosing &lt;i&gt;Local object&lt;/i&gt; is equivalent to entering $TMP in the field &lt;i&gt;Development class&lt;/i&gt;. You can change the development class of a program later on by choosing, for example, &lt;i&gt;Program&lt;/i&gt; &lt;/span&gt;  &lt;b&gt;&lt;span style="font-family: Symbol; font-size: 85%;"&gt;®&lt;/span&gt;&lt;/b&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;   &lt;i&gt;Reassign&lt;/i&gt; in the &lt;i&gt;ABAP: Program Attributes &lt;/i&gt;screen.&lt;/span&gt;&lt;/p&gt;  &lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;&lt;p&gt;Logical Database from Application&lt;/p&gt;&lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Only for Executable Programs (Reports)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;These attributes determine the logical database used by the executable program (report) to read data, and the application to which it belongs. Logical databases have unique names within their application. However, systemwide, you can have more than one logical database with the same name. This is why you also need to specify the application. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If you read data directly in your program instead of using a logical database, you should enter an application, but leave the &lt;i&gt;logical database&lt;/i&gt; field empty.&lt;/span&gt;&lt;/p&gt;  &lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;&lt;p&gt;Selection Screen Version&lt;/p&gt;&lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Only for Executable Programs (Reports)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If you do not specify a selection screen version, the system automatically creates a selection screen based on the selection criteria of the logical datbase and the parameters and select-options statements in the program.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If you want to use a different selection screen, enter the number here (not 1000, since this is reserved for the standard selection screen). The number must be smaller than 1000 and correspond to an additional selection screen of the logical database. The possible values help displays a list of available selection screens. You can also look in the selection include of the logical database (program DBxxxSEL, where xxx is the name of the logical database).&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Upper/Lower Case&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;If you do not want the ABAP Editor to change the case of your code when you display the program, leave this field empty. If you select it, the program code (apart from literals and comments) is converted to uppercase. The screen display depends on the Editor mode. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Editor Lock&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;If you set this attribute, other users cannot change, rename, or delete your program. Only you will be able to change the program, its attributes, text elements, and documentation, or release the lock.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;Fixed Point Arithmetic&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;If the attribute &lt;i&gt;Fixed point arithmetic&lt;/i&gt; is set for a program, the system rounds type P fields according to the number of decimal places or pads them with zeros. The decimal sign in this case is always the period (.), regardless of the user’s personal settings. We recommend that you &lt;b&gt;always&lt;/b&gt; set the fixed point arithmetic attribute.&lt;/p&gt;&lt;/span&gt;  &lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(0, 0, 128);"&gt;&lt;p&gt;Start Using Variant&lt;/p&gt;&lt;/span&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Only for Executable Programs (Reports)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If you set this attribute, other users can only start your program using a variant. You must then create at least one variant before the report can be started. &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/177530344658880345-8947666819069500036?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/8947666819069500036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=8947666819069500036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8947666819069500036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8947666819069500036'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/maintaining-program-attributes-in-sap.html' title='Maintaining Program Attributes in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-7264445025110664971</id><published>2008-07-30T21:49:00.001+05:30</published><updated>2008-07-30T21:49:42.474+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Editing Programs in SAP ABAP</title><content type='html'>&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;You edit programs using the &lt;/span&gt; &lt;span style="font-family: Arial; font-size: 85%;"&gt;ABAP Editor&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;. For detailed information, refer to the appropriate documentation. Below are a few hints to help you to get started: &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Program Structure&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;The following gives a short overview on how to structure a program. Apart from the first statement, the sequence of statements is not obligatory, but you should keep to it for reasons of clarity and readability.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The first program statement&lt;/li&gt;&lt;p&gt;The first statement of an ABAP program must always be the statement REPORT or PROGRAM, respectively (only exception: FUNCTION-POOL for function modules). Both statements have exactly the same function.&lt;/p&gt;&lt;p&gt;The name specified in the statements REPORT and PROGRAM must not necessarily be the program name, but for documentation reasons, you should use the correct name.&lt;/p&gt;&lt;p&gt;The statements REPORT or PROGRAM can have several options, such as LINE-SIZE, LINE-COUNT, or NO STANDARD PAGE HEADING. You use these options mainly in programs that which evaluate data and display the results in a list. For other options, such as the definition of a message class, see the key word documentation.&lt;/p&gt;&lt;p&gt;Whenever you create a new program, the system automatically inserts the first ABAP statement, for example:&lt;/p&gt;&lt;p&gt;REPORT &lt;name&gt;. for executable programs (reports) or&lt;/name&gt;&lt;/p&gt;&lt;p&gt;PROGRAM &lt;name&gt;. for dialog programs&lt;/name&gt;&lt;/p&gt;&lt;p&gt;As report or program name, the system enters the name you used to create the program.&lt;/p&gt;&lt;li&gt;Data declaration&lt;/li&gt;&lt;p&gt;Next, insert all of your delclarations. This includes the global data definitions, selection screen definitions, and the definitions of classes and interfaces in ABAP Objects.&lt;/p&gt;&lt;li&gt;Processing logic&lt;/li&gt;&lt;p&gt;After the declarations, write the processing logic. This consists of a series of processing blocks. &lt;/p&gt;&lt;li&gt;Subroutines&lt;/li&gt;&lt;/ol&gt;  &lt;dir&gt;&lt;p&gt;At the end of your program, include its internal procedures (subroutines and methods). &lt;/p&gt;&lt;/dir&gt;  &lt;p&gt;Using includes to split up a program into a series of source code modules does not change this basic structure. If, for example, you follow the forward navigation of the ABAP Workbench when creating a dialog program, the system automatically creates a number of include programs, which contain the program parts described above in the correct sequence. The top include program usually contains the PROGRAM statement and the global data declaration. The subsequent include programs contain the individual dialog modules, ordered by PBO and PAI. There may also be further includes, for example, for subroutines. These include programs do not influence the program function, they only serve to make the program order easier to understand. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Program Layout&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;A high-quality ABAP program observes the following layout standards:&lt;/p&gt;&lt;/span&gt;  &lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;&lt;p&gt;Comment Your Programs&lt;/p&gt;&lt;/span&gt;  &lt;/b&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Ensure that your program is correctly commented. &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt; For example, at the beginning of a subroutine, explain what it does, and provide any necessary information and references. The &lt;/span&gt;  &lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/book.gif" border="0" /&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;ABAP Editor&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt; provides predefined comment blocks. Comments within lines of code should be used sparingly, and only where they do not make the program flow more difficult to understand.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Indent Blocks of Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;You should combine statements that belong together into a single block. Indent each block by at least two columns:&lt;/p&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2cff358411d1829f0000e829fbfe/Image6543.gif" /&gt;&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Use Modules&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Make your programs easier to understand by using modules. For example, writing a large processing block as a subroutine makes the logical structure of your program easier to recognize. Subroutines may increase the overall length of programs, but you will soon find that this method greatly increases clarity, especially in the case of complex programs.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; color: rgb(0, 0, 128);"&gt;Use the Pretty Printer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;If you use the Pretty Printer in the &lt;/span&gt; &lt;span style="font-family: Arial; font-size: 85%;"&gt;ABAP Editor&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;, your programs will conform to the layout guidelines.  To use the Pretty Printer, choose &lt;i&gt;Program&lt;/i&gt; &lt;/span&gt;  &lt;b&gt;&lt;span style="font-family: Symbol; font-size: 85%;"&gt;®&lt;/span&gt;&lt;/b&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;   &lt;i&gt;Pretty Printer&lt;/i&gt; from the Editor screen. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Statement Patterns&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;In the ABAP Editor, you can use statement patterns to help you write your program. They provide the exact syntax of a statement and follow the ABAP layout guidelines. You can insert two kinds of predefined structures into your program code when using the ABAP Editor: Keyword structures and comment lines. In the ABAP Editor, choose &lt;i&gt;Edit&lt;/i&gt; &lt;span style="font-family: Symbol;"&gt;®&lt;/span&gt;   &lt;i&gt;Insert statement&lt;/i&gt;. To display a list of all predefined keyword structures, place the cursor in the &lt;i&gt;Other pattern.&lt;/i&gt; field and click the possible entries button to the right of the input field.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Checking Programs&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;When you have finished editing, or reach an intermediate stage of the program, choose &lt;i&gt;Check&lt;/i&gt; to check the syntax. The system checks the program coding for syntax errors and compatibility problems. If it finds an error, it displays a message describing it and, if possible, offers a solution or correction. The system positions the cursor on the error in the coding. Once you decide that your program is finished, run the extended program check on it by choosing &lt;i&gt;Program&lt;/i&gt; &lt;span style="font-family: Symbol;"&gt;®&lt;/span&gt;   &lt;i&gt;Check&lt;/i&gt;  &lt;span style="font-family: Symbol;"&gt;®&lt;/span&gt;   &lt;i&gt;Ext. program check&lt;/i&gt; from the Editor screen. Ensure that you correct all of the errors and warnings displayed. Although they do not prevent the program from working, they are not examples of good programming. Furthermore, some warnings might be escalated to syntax errors in future releases. &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Saving and Activating Programs&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;p&gt;Choose &lt;i&gt;Save&lt;/i&gt; to save the source code.&lt;/p&gt;&lt;p&gt;The system stores the source code in the program library. Before you can execute the program from outside the ABAP Editor, you must generate an active version using the &lt;b&gt;Activate&lt;/b&gt; function.  &lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 130%; color: rgb(0, 0, 128);"&gt;Testing Programs&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;  &lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;You can test executable programs in the ABAP Editor. To do so, choose&lt;i&gt; Program&lt;/i&gt; &lt;/span&gt;  &lt;b&gt;&lt;span style="font-family: Symbol; font-size: 85%;"&gt;®&lt;/span&gt;&lt;/b&gt;  &lt;span style="font-family: Arial; font-size: 85%;"&gt;   &lt;i&gt;Execute&lt;/i&gt;. The system then creates a temporary runtime object with a name that differs from the program name. However, the system executes the program as if started outside the ABAP Editor. If you created an ABAP module pool, you cannot test the program in the ABAP Editor. You must create a transaction code and a screen flow logic before you can execute the program.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;Testing a program often involves a &lt;/span&gt; &lt;span style="font-family: Arial; font-size: 85%;"&gt;runtime analysis&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;, which shows you the amount of time your program consumes in the client/server environment of the R/3 system and what this time is used for. For more information, refer to the runtime analysis documentation. &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/177530344658880345-7264445025110664971?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/7264445025110664971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=7264445025110664971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7264445025110664971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7264445025110664971'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/editing-programs-in-sap-abap.html' title='Editing Programs in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-6105526734418766484</id><published>2008-07-30T21:48:00.000+05:30</published><updated>2008-07-30T21:49:03.193+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>ABAP Syntax</title><content type='html'>&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;The syntax of the ABAP programming language consists of the following elements:&lt;/p&gt;&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;An ABAP program consists of individual ABAP statements. Each statement begins with a keyword and ends with a period. &lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt; &lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/beispiel.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;PROGRAM FIRST_PROGRAM.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;WRITE 'My First Program'.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;This example contains two statements, one on each line. The keywords are PROGRAM and WRITE. The program displays a list on the screen. In this case, the list consists of the line "My First Program".&lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The keyword determines the category of the statement. For an overview of the different categories, refer to &lt;/span&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;ABAP Statements&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a name="_981803121"&gt;&lt;/a&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/fc/eb2ed0358411d1829f0000e829fbfe/Image1086.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;This diagram shows the structure of an ABAP statement.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Formatting ABAP Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;ABAP has no format restrictions. You can enter statements in any format, so a statement can be indented, you can write several statements on one line, or spread a single statement over several lines.&lt;/p&gt;&lt;p&gt;You must separate words within a statement with at least one space. The system also interprets the end of line marker as a space.&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt;&lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/beispiel.gif" /&gt;&lt;/p&gt;&lt;p&gt;The program fragment&lt;/p&gt;&lt;p&gt;PROGRAM TEST.&lt;br /&gt;WRITE 'This is a statement'.&lt;/p&gt;&lt;p&gt;could also be written as follows:&lt;/p&gt;&lt;p&gt;PROGRAM TEST. WRITE 'This is a statement'.&lt;/p&gt;&lt;p&gt;or as follows:&lt;/p&gt;&lt;p&gt;               PROGRAM&lt;br /&gt;             TEST.&lt;br /&gt;                        WRITE&lt;br /&gt;                       'This is a statement'.&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;  &lt;p&gt;Use this free formatting to make your programs easier to understand.&lt;/p&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Special Case: Text Literals&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;Text literals&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt; are sequences of alphanumeric characters in the program code that are enclosed in quotation marks. If a text literal in an ABAP statement extends across more than one line, the following difficulties can occur:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;li&gt;All spaces between the quotation marks are interpreted as belonging to the text literal. &lt;/li&gt;  &lt;li&gt;Letters in text literals in a line that is not concluded with quotation marks are interpreted by the editor as uppercase. &lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;If you want to enter text literals that do not fit into a single line, you can use the ‘&amp;amp;’ character to combine a succession of text literals into a single one.&lt;/span&gt;&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt; &lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/beispiel.gif" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;The program fragment&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;PROGRAM TEST.&lt;br /&gt;WRITE 'This&lt;br /&gt;     is&lt;br /&gt;     a statement'.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;inserts all spaces between the quotation marks into the literal, and converts the letters to uppercase.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;This program fragment&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;PROGRAM TEST.&lt;br /&gt;WRITE 'This'  &amp;amp;&lt;br /&gt;    ' is ' &amp;amp;&lt;br /&gt;    'a statement'.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;combines three text literals into one. &lt;/span&gt;&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Chained Statements&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;The ABAP programming language allows you to concatenate consecutive statements with an identical first part into a chain statement.&lt;/p&gt;&lt;p&gt;To concatenate a sequence of separate statements, write the identical part only once and place a colon (:) after it. After the colon, write the remaining parts of the individual statements, separating them with commas. Ensure that you place a period (.) after the last part to inform the system where the chain ends.&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt; &lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/beispiel.gif" /&gt;&lt;/p&gt;&lt;p&gt;Statement sequence:&lt;/p&gt;&lt;p&gt;WRITE SPFLI-CITYFROM.&lt;br /&gt;WRITE SPFLI-CITYTO.&lt;br /&gt;WRITE SPFLI-AIRPTO.&lt;/p&gt;&lt;p&gt;Chain statement:&lt;/p&gt;&lt;p&gt;WRITE: SPFLI-CITYFROM, SPFLI-CITYTO, SPFLI-AIRPTO.&lt;/p&gt;&lt;p&gt;In the chain, a colon separates the beginning of the statement from the variable parts. After the colon or commas, you can insert any number of spaces.&lt;/p&gt;&lt;p&gt;You could, for example, write the same statement like this: &lt;/p&gt;&lt;p&gt;WRITE:    SPFLI-CITYFROM,&lt;br /&gt;        SPFLI-CITYTO,&lt;br /&gt;        SPFLI-AIRPTO.&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;  &lt;p&gt;In a chain statement, the first part (before the colon) is not limited to the keyword of the statements.&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt; &lt;img src="http://help.sap.com/saphelp_45b/helpdata/en/images/beispiel.gif" /&gt;&lt;/p&gt;&lt;p&gt;Statement sequence:&lt;/p&gt;&lt;p&gt;SUM = SUM + 1.&lt;/p&gt;&lt;p&gt;SUM = SUM + 2.&lt;/p&gt;&lt;p&gt;SUM = SUM + 3.&lt;/p&gt;&lt;p&gt;SUM = SUM + 4.&lt;/p&gt;&lt;p&gt;Chain statement:&lt;/p&gt;&lt;p&gt;SUM = SUM + : 1, 2, 3, 4.&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;&lt;/span&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 128);font-family:Arial;" &gt;Comments&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;p&gt;Comments are texts that you can write between the statements of your ABAP program to explain their purpose to a reader. Comments are distinguished by the preceding signs * (at the beginning of a line) and " (at any position in a line). If you want the entire line to be a comment, enter an asterisk (*) at the beginning of the line. The system then ignores the entire line when it generates the program. If you want part of a line to be a comment, enter a double quotation mark (") before the comment. The system interprets comments indicated by double quotation marks as spaces.&lt;/p&gt;&lt;dir&gt;&lt;dir&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;************************************************&lt;br /&gt;*  PROGRAM SAPMTEST                            *&lt;br /&gt;*  WRITTEN BY KARL BYTE, 06/27/1995            *&lt;br /&gt;*  LAST CHANGED BY RITA DIGIT, 10/01/1995      *&lt;br /&gt;*  TASK:    DEMONSTRATION                      *&lt;br /&gt;************************************************&lt;/p&gt;&lt;p&gt;PROGRAM SAPMTEST.&lt;/p&gt;&lt;p&gt;************************************************&lt;br /&gt;* DECLARATIONS                                 *&lt;br /&gt;************************************************&lt;/p&gt;&lt;p&gt;DATA: FLAG              " GLOBAL FLAG&lt;br /&gt;    NUMBER TYPE I     " COUNTER&lt;/p&gt;&lt;p&gt;......&lt;/p&gt;&lt;p&gt;************************************************&lt;br /&gt;* PROCESSING BLOCKS                            *&lt;br /&gt;************************************************&lt;/p&gt;&lt;p&gt;......&lt;/p&gt;&lt;/dir&gt;&lt;/dir&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-6105526734418766484?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/6105526734418766484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=6105526734418766484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6105526734418766484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6105526734418766484'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/abap-syntax.html' title='ABAP Syntax'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-571005352304802729</id><published>2008-07-30T21:47:00.000+05:30</published><updated>2008-07-30T21:48:14.800+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Programming'/><title type='text'>Processing Data in SAP ABAP</title><content type='html'>This section describes how to work with data objects in ABAP.&lt;br /&gt;&lt;br /&gt;It contains the following topics:&lt;br /&gt;&lt;br /&gt;Assigning Values&lt;br /&gt;&lt;br /&gt;Numeric Operations&lt;br /&gt;&lt;br /&gt;Processing Character Strings&lt;br /&gt;&lt;br /&gt;Single Bit Processing in Hexadecimal Fields&lt;br /&gt;&lt;br /&gt;Type Conversions&lt;br /&gt;&lt;br /&gt;Processing Sections of Strings&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-571005352304802729?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/571005352304802729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=571005352304802729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/571005352304802729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/571005352304802729'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/processing-data-in-sap-abap.html' title='Processing Data in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-6522421422244355299</id><published>2008-07-30T21:46:00.001+05:30</published><updated>2008-07-30T21:46:47.206+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP LISTS AND SCREENS'/><title type='text'>LESSON 25 CALLING PROGRAM AND PASSING DATA</title><content type='html'>CALLING PROGRAM AND PASSING DATA:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are two ways of starting an ABAP program from another ABAP program that is already running:&lt;br /&gt;&lt;br /&gt;By interrupting the current program to run the new one - the called program is executed, and afterwards, processing returns to the program that called it.&lt;br /&gt;&lt;br /&gt;By terminating the current program and then running the new one.&lt;br /&gt;Complete ABAP programs within a single user session can only run sequentially. We refer to this technique as using synchronous calls.&lt;br /&gt;&lt;br /&gt;If you want to run functions in parallel, you must use function modules. For further information about this technique, refer to course BC415 (Communication Interfaces in ABAP), and the documentation for the CALL FUNCTION … STARTING NEW TASK… statement.&lt;br /&gt;The way in which main memory is organized from the program's point of view can be represented easily in the above model. There is a distinction between internal and external sessions:&lt;br /&gt;&lt;br /&gt;Generally, an external session corresponds to an R/3 window. You create new external sessions by choosing System ® Create session or entering /o in the command field. You can have up to six external sessions open simultaneously in one terminal session.&lt;br /&gt;&lt;br /&gt;External sessions are subdivided into internal sessions . Each program that you run occupies its own internal session. Each external session can contain up to nine internal sessions.&lt;br /&gt;&lt;br /&gt;The data in a program is only visible within that internal session, so it is only visible to the program.&lt;br /&gt;&lt;br /&gt;The following pages illustrate how the stack inside an external session changes with various program calls.&lt;br /&gt;&lt;br /&gt;When you insert a program, the system creates a new internal session, which contains the new program context.&lt;br /&gt;&lt;br /&gt;The new session is placed on the stack The program context of the calling program also remains on the stack.&lt;br /&gt;&lt;br /&gt;When the called program finishes, its internal session (the top one in the stack) is deleted.&lt;br /&gt;&lt;br /&gt;Processing is resumed in the next-highest internal session in the stack.&lt;br /&gt;When you end a program and start a new one, there is a difference between calling an executable program and calling a transaction.&lt;br /&gt;&lt;br /&gt;If you start an executable program using its program name, the internal session of the program you are ending (the top one) is removed.&lt;br /&gt;&lt;br /&gt;The system creates a new internal session, which contains the program context of the called program. The new session is placed on the stack. Any program contexts that already existed are retained. The topmost internal session on the stack is replaced.&lt;br /&gt;If you start a program using its transaction code (if one is assigned), all of the existing internal sessions are removed from the stack.&lt;br /&gt;&lt;br /&gt;The system creates a new internal session, which contains the program context of the called program.&lt;br /&gt;&lt;br /&gt;After the call, the ABAP memory is reset.&lt;br /&gt;When you call a function module, the ABAP runtime system checks whether you have already called a function module from the same function group in the current program.&lt;br /&gt;&lt;br /&gt;If this is not the case, the system loads the relevant function group into the internal session of the calling program. Its global data is initialized and the&lt;br /&gt;LOAD-OF-PROGRAM event is triggered.&lt;br /&gt;&lt;br /&gt;If your program had already used a function module from the same function group before the call, the function group is already resident in the internal session, and the new call can access the same global data. We say that the function group remains active until the end of the program that called it.&lt;br /&gt;&lt;br /&gt;The data is only visible in the corresponding program - each program can only address its own data, even if there are identically-named objects in both programs. The same applies when the stack is extended. If a program is added to the stack that calls a function module from a function group already called by another program, the function group is loaded again into the new internal session.&lt;br /&gt;&lt;br /&gt;The system creates new copies of its data objects, initializes them, and, as before, they are only visible within the function group, and only in the internal session in which the function group was loaded.&lt;br /&gt;&lt;br /&gt;To start an executable (type 1) program, use the SUBMIT statement.&lt;br /&gt;If you use the VIA SELECTION-SCREEN addition, the system displays the standard selection screen of the program (if one has been defined).&lt;br /&gt;&lt;br /&gt;If you use the AND RETURN addition, the system resumes processing with the first statement after the SUBMIT statement once the called program has finished.&lt;br /&gt;For further information, refer to the documentation for the SUBMIT statement.&lt;br /&gt;When you use the LEAVE TO TRANSACTION '' statement, the system terminates the current program and starts the transaction with transaction code . The statement is the equivalent of entering /n in the command field.&lt;br /&gt;&lt;br /&gt;CALL TRANSACTION '' allows you to insert an ABAP program with a transaction code into the call chain.&lt;br /&gt;&lt;br /&gt;To terminate an ABAP program, use the LEAVE PROGRAM statement. If the statement occurs in a program that you called using CALL TRANSACTION '' or SUBMIT AND RETURN, the system resumes processing at the next statement after the call in the calling program. In all other cases, the user returns to the application menu from which he or she started the program.&lt;br /&gt;&lt;br /&gt;If you use the …AND SKIP FIRST SCREEN addition, the system does not display the screen contents of the first screen in the transaction. However, it does process the flow logic.&lt;br /&gt;&lt;br /&gt;If you started a transaction using CALL TRANSACTION that uses update techniques, you can use the UPDATE… addition to specify the update technique (asynchronous (default), synchronous, or local) that the program should use.&lt;br /&gt;&lt;br /&gt;There are various ways of passing data to programs running in separate internal sessions:&lt;br /&gt;&lt;br /&gt;You can use&lt;br /&gt;&lt;br /&gt;The interface of the called program (usually a standard selection screen)&lt;br /&gt;ABAP memory&lt;br /&gt;SAP memory&lt;br /&gt;Database tables&lt;br /&gt;Local files on your presentation server&lt;br /&gt;&lt;br /&gt;Function modules have an interface that the calling program and the function module use to exchange data. Subroutines also use a similar technique. Certain restrictions apply to the interfaces of remote enabled&lt;br /&gt;function modules.&lt;br /&gt;&lt;br /&gt;When you call ABAP programs that have a standard selection screen, you can pass data for the input fields in the call. There are two ways to do this:&lt;br /&gt;&lt;br /&gt;By specifying a variant for the selection screen when you call the program.&lt;br /&gt;&lt;br /&gt;By specifying values for the input fields when you call the program.&lt;br /&gt;The WITH addition in the SUBMIT statement allows you to assign values to the fields on a standard selection screen. The abbreviations "EQ, NE, … , I, E" have the same meanings as with select options.&lt;br /&gt;&lt;br /&gt;If you want to pass several selections to a selection option, you can use the RANGES statement instead of individual WITH additions. The RANGES statement creates a selection table , which you can fill as though it were a selection option. You then pass the whole table to the executable program.&lt;br /&gt;&lt;br /&gt;If you want to display the standard selection screen when you call the program, use the VIA SELECTION-SCREEN addition.&lt;br /&gt;&lt;br /&gt;When you use the SUBMIT statement, use the Pattern function in the ABAP Editor to insert an appropriate statement pattern for the program you want to call. It automatically suppplies the names of the parameters and selection options that are available on the standard selection screen.&lt;br /&gt;&lt;br /&gt;The example shown above is an extract from transaction BC402_CALD_CONN. When the user requests the coordinates of a city, the executable program SAPBC402_TABD_HASHED is called.&lt;br /&gt;&lt;br /&gt;The parameters are filled with the city and country code from the transaction. The standard selection screen does not appear.&lt;br /&gt;&lt;br /&gt;For further information about working with variants and about other syntax variants of the WITH addition, refer to the documentation for the SUBMIT statement.&lt;br /&gt;To pass data between programs, you can use either the SAP memory or the ABAP memory.&lt;br /&gt;&lt;br /&gt;SAP memory is a user-specific memory area that you can use to store field values. It is only of limited value for passing data between internal sessions. Values in SAP memory are retained for the duration of the user's terminal session. The memory can be used between sessions in the same terminal session. You can use the contents of SAP memory as default values for screen fields. All external sessions can use the SAP memory.&lt;br /&gt;&lt;br /&gt;ABAP memory is also user-specific. There is a local ABAP memory for each external session. You can use it to exchange any ABAP variables (fields, structures, internal tables, complex objects) between the internal sessions in any one external session.&lt;br /&gt;When the user exits an external session (/i in the command field), the corresponding ABAP memory is automatically initialized or released.&lt;br /&gt;&lt;br /&gt;Use the EXPORT … TO MEMORY statement to copy any number of ABAP variables with their current values (data cluster) to ABAP memory. The ID… addition (maximum 32 characters long) enables you to identify different clusters.&lt;br /&gt;If you use a new EXPORT TO MEMORY statement for an existing data cluster, the new one will overwrite the old.&lt;br /&gt;&lt;br /&gt;The IMPORT… FROM MEMORY ID… statement allows you to copy data from ABAP memory into the corresponding fields of your ABAP program. In the IMPORT statement, you can also restrict the selection to a part of the data cluster.&lt;br /&gt;&lt;br /&gt;The variables into which you want to read data from the cluster in ABAP memory must have the same types in both the exporting and the importing programs.&lt;br /&gt;To release a data cluster, use the FREE MEMORY ID… statement.&lt;br /&gt;Remember when you call programs using transaction codes that you can only use the ABAP memory to pass data to the transaction.&lt;br /&gt;&lt;br /&gt;You can define memory areas (parameters) in the SAP memory in various ways:&lt;br /&gt;&lt;br /&gt;By creating input/output fields with reference to the ABAP Dictionary. These take the parameter name of the data element to which they refer.&lt;br /&gt;Alternatively, you can enter a name in the attributes of the input/output fields. Then, you can also choose whether the entries from the field should be transferred to the parameter (SET), or whether the input field should be filled with the value from the parameter (GET).&lt;br /&gt;To find out about the names of the parameters assigned to input fields, display the field help for the field (F1), then choose Technical info.&lt;br /&gt;&lt;br /&gt;You can also fill a memory area directly using the statement&lt;br /&gt;SET PARAMETER ID '' FIELD .&lt;br /&gt;and read it using the statement GET PARAMETER ID '' FIELD .&lt;br /&gt;&lt;br /&gt;You can also&lt;span style="font-family: arial;"&gt; &lt;span style="font-family: courier new;"&gt;define&lt;/span&gt;&lt;/span&gt; parameters using the Object Navigator and fill them with values.&lt;br /&gt;&lt;br /&gt;When you call a transaction using the statement CALL TRANSACTION '' USING … you can run the transaction using the values from in the screen fields. The internal table must have the structure bdcdata.&lt;br /&gt;&lt;br /&gt;The MODE addition allows you to specify whether the screen contents should all be displayed ('A' - the default setting), only when an error occurs ('E'), or not at all ('N'). You can use the MESSAGE INTO to specify an internal table into which any system messages should be written. The internal table must have the structure bdcmsgcoll. You can find out if the transaction was executed successfully from the system field sy-subrc.&lt;br /&gt;&lt;br /&gt;You might use this technique if&lt;br /&gt;&lt;br /&gt;You are processing in the foreground, but the input fields have not been filled using GET parameters.&lt;br /&gt;&lt;br /&gt;You want to process the transaction invisibly. In this case, you normally have to pass the function codes in the table as well.&lt;br /&gt;&lt;br /&gt;This technique is also one of the possible ways of transferring data from non-SAP systems. When you do this, the internal table with the structure bdcdata must be filled completely.&lt;br /&gt;&lt;br /&gt;Filling the internal table in batch input format:&lt;br /&gt;&lt;br /&gt;Each screen that you want to process automatically in the transaction must be identified by a line in which only the fields program, dynpro, and dynbegin are filled.&lt;br /&gt;&lt;br /&gt;After the record that identifies the screen, use a new bdcdata record for each field you want to fill. These records use the fields fnam and fval. You can fill the following fields:&lt;br /&gt;• Input/output fields (with data)&lt;br /&gt;• The command field bdc_okcode, (with a function code)&lt;br /&gt;• The cursor positioning field, bdc_cursor (with a field name)&lt;br /&gt;&lt;br /&gt;The filled internal table in bdcdata format is illustrated above. At runtime, stands for the customer name from the input field, stands for the city.&lt;br /&gt;&lt;br /&gt;You use the field BDC_OKCODE to address the command field, into which you enter the function code that would have been triggered by the user choosing a function key, pushbutton, or menu entry in dialog mode (or by entering a code directly in the command field).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-6522421422244355299?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/6522421422244355299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=6522421422244355299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6522421422244355299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6522421422244355299'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/lesson-25-calling-program-and-passing.html' title='LESSON 25 CALLING PROGRAM AND PASSING DATA'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-3810377728982747693</id><published>2008-07-30T21:45:00.000+05:30</published><updated>2008-07-30T21:46:03.745+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP LISTS AND SCREENS'/><title type='text'>LESSON 26 TECHNIQUES FOR LIST CREATION AND SAP QUARY</title><content type='html'>TECHNIQUES FOR LIST CREATION AND SAP QUARY:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The QuickViewer is a tool for developing ad hoc reports that is new in Release 4.6A. You can start the QuickViewer using the menu path QUV-1.&lt;br /&gt;&lt;br /&gt;The QuickViewer can use a database table or a database view as a data source. Lists can be generated using the fields in the data source specified. Two modes are available for this: basis mode and layout mode The QuickViewer provides interfaces, for example, to the EIS, ABC analysis or the ALV Grid Control. The list can also be processed further in external programs, such as Word.&lt;br /&gt;&lt;br /&gt;The generated list can be saved and then displayed again in the QuickViewer. Selection criteria are also saved along with the list, and can be queried again at any time.&lt;br /&gt;&lt;br /&gt;Each user defines their own user-specific QuickViews which only they can display. This means that you cannot copy other users' QuickViews. You can, however, compile an SAP Query from a QuickView, if the QuickView uses a functional area from the standard system as a data source (see unit 'SAP Query - Creating Lists'). The query is then visible to the user group.&lt;br /&gt;&lt;br /&gt;QuickViews are not connected to the correction and transport system.&lt;br /&gt;&lt;br /&gt;You must name a data source in order to generate a QuickView. The data source can be a database table, a database view, a logical database, a table join, or even a functional area of SAP query. The functional area must lie in the (client-specific) standard area.&lt;br /&gt;&lt;br /&gt;You can access the specified data, but you cannot extend it with additional fields (also see Local fields under SAP Query).&lt;br /&gt;&lt;br /&gt;When you specify a table join as the data source, you have to define the join before you can structure the list in Query Painter.&lt;br /&gt;&lt;br /&gt;You define the table join graphically. You have to specify the links between the tables, and you can have the system propose a value. It does this using information from the Dictionary .&lt;br /&gt;&lt;br /&gt;You determine the resulting quantity by deciding on either Inner or Left Outer Join logic. For example, if you only want to output airlines from table SCARR in a list when these airlines have flights in table SPFLI, this corresponds to the Inner Join logic. In contrast, if you want to output all the airlines regardless of whether flights exist in table SPFLI, then you would link both tables using Left Outer Join logic. In this case, the left table is SCARR.&lt;br /&gt;&lt;br /&gt;Alias tables enable you to use the same (database) table several times when defining the join&lt;br /&gt;&lt;br /&gt;In basic mode, the screen is divided into four areas. The available fields (data source) are displayed to the left in tree form. Further information on how to work in the basic mode is displayed in the lower left window. You can maintain the title and comments and control the output (list or Excel) in the upper right area. This is also where you control the list structure, set the sort sequence and define the selection criteria. You can branch to the online documentation from the lower right window.&lt;br /&gt;&lt;br /&gt;You can structure your Quick View using two table controls. Select the fields you want in your list in the right table control and use the transfer functions to move them to the left table control ('List fields'). You can also control how many lines the list should have (using the 'Add line' function) in the left table control ('List fields').&lt;br /&gt;&lt;br /&gt;Follow the same procedure for the sort and selection fields: select the fields you require in the right table control and copy them to the left control.&lt;br /&gt;&lt;br /&gt;You can structure your Quick View using two table controls. Select the fields you want in your list in the right table control and use the transfer functions to move them to the left table control ('List fields'). You can also control how many lines the list should have (using the 'Add line' function) in the left table control ('List fields').&lt;br /&gt;&lt;br /&gt;Follow the same procedure for the sort and selection fields: select the fields you require in the right table control and copy them to the left control.&lt;br /&gt;&lt;br /&gt;When you create a list with a report, the data is usually retrieved via a logical database, processed by the report and then output as a list.&lt;br /&gt;&lt;br /&gt;Queries evaluate data and can be created without any prior programming knowledge using the SAP Query tool.&lt;br /&gt;&lt;br /&gt;The query results in a sequence of screen fields which you use to describe the line structure and list layout. Starting in Release 4.6A, you can use the Query Painter to add graphics to query lists.&lt;br /&gt;&lt;br /&gt;When the query is started, an internal report generator creates a program that corresponds to the list definition. That program then reads the data, processes it, and outputs the data as a list. The program is named AQmmbbbbbbbbbbbbqqqqqqqqqqqqqq. You can display the report names with the menu path displayed in appendix documentation AQL-1.&lt;br /&gt;mm - encoded client (standard area) or ZZ (global area)&lt;br /&gt;bbbbbbbbbbbb - Name of user group (12 places)&lt;br /&gt;qqqqqqqqqqqqqq - Name of query (14 places)&lt;br /&gt;Spaces in query program names are replaced with '='.&lt;br /&gt;&lt;br /&gt;The administrative tasks in the query environment include creating functional areas and user groups, as well as assigning the functional areas to the user groups.&lt;br /&gt;&lt;br /&gt;The functional area determines the tables (and the fields of those tables) to which a query can refer.&lt;br /&gt;Functional areas are frequently based on logical databases.&lt;br /&gt;&lt;br /&gt;Users may create and start queries only when they belong to at least one user group. A given user can belong to several user groups. Users in a user group all have the same privileges.&lt;br /&gt;&lt;br /&gt;Functional areas are allocated to a user group; the members of a group can access the functional area to which the group is allocated.&lt;br /&gt;&lt;br /&gt;A functional area can be allocated to several user groups.&lt;br /&gt;&lt;br /&gt;Several functional areas can be allocated to a user group.&lt;br /&gt;&lt;br /&gt;Queries are always created for a specific user group and a specific functional area. Users in a user group have access to all the queries allocated to that group.&lt;br /&gt;&lt;br /&gt;If you have been allocated to several user groups, you can switch within these groups.&lt;br /&gt;&lt;br /&gt;A query is always created from a specific functional area. The functional area must be allocated to the user group in which the query was created.&lt;br /&gt;&lt;br /&gt;You can access all queries that have been allocated to your user group.&lt;br /&gt;&lt;br /&gt;If you are authorized to define a query with a functional area, you can list all the queries for that functional area.&lt;br /&gt;&lt;br /&gt;You can only copy a query from a different user group to your user group when the functional area of the query to be copied has also been allocated to your user group.&lt;br /&gt;&lt;br /&gt;The query results in a sequence of screen fields in which you use&lt;br /&gt;&lt;br /&gt;Selection (checkboxes)&lt;br /&gt;Number assignment (sequence, sort, ...)&lt;br /&gt;Texts (headers, group level texts) to determine the line structure and the list layout.&lt;br /&gt;&lt;br /&gt;Starting in Release 4.6A, you can use the Query Painter to add graphics to basic lists.&lt;br /&gt;&lt;br /&gt;You can use SAP Query to generate different types of lists (partial lists):&lt;br /&gt;&lt;br /&gt;Basic List: Single line or multiline. Multiline basic lists can be compressed.&lt;br /&gt;Statistics, ranked lists: Require a numeric field. Data can be compressed.&lt;br /&gt;You can combine different partial lists in a single query. Starting in 4.6A, you can also print the individual partial lists.&lt;br /&gt;&lt;br /&gt;You can also define local fields within a query, which means you can calculate new values from the collected data.&lt;br /&gt;&lt;br /&gt;While you cannot generate interactive lists you have defined yourself, some standard interaction functions are available. For example, you can pass on the generated lists for further processing (Excel, EIS, ABC analysis), display them in graphical form (SAP Graphics), save them, or edit them in table form (table control and ALV grid control).&lt;br /&gt;&lt;br /&gt;You can use the menu paths displayed in appendix documentation AQL-2 to create, change, and execute queries with the ABAP Workbench.&lt;br /&gt;&lt;br /&gt;Queries are created either in the standard area or the global area. A query area covers a set of query objects that are internally complete and consistent - this means objects with the same name but with a different meaning can exist in the various query areas. The global and standard areas have separate namespaces.&lt;br /&gt;&lt;br /&gt;The standard area is client-specific and is not linked to the Workbench Organizer (WBO). The query objects in the global area are available in all clients and linked to the WBO. If you create a query in the global area, you have to assign it to a development class.&lt;br /&gt;&lt;br /&gt;When creating a query, you must first choose a functional area. The system displays all the functional areas that have been assigned to your user group. Once you have chosen a functional area, you cannot modify your choice: the functional area is the basis for data retrieval.&lt;br /&gt;&lt;br /&gt;SET/GET parameters AQW and AQB are available and can be used in your user parameters to define default settings for the query area (global area: AQW = G) and your user group.&lt;br /&gt;&lt;br /&gt;When selecting fields, the system leads you through the following screens:&lt;br /&gt;&lt;br /&gt;Title, format:&lt;br /&gt;&lt;br /&gt;Used to assign the query title You can set the page layout by making entries for the format. You can also set additional characteristics for the query with special attributes.&lt;br /&gt;&lt;br /&gt;Functional area&lt;br /&gt;&lt;br /&gt;Functional areas are divided into functional groups. These form logical groups of data. You choose the required functional groups here.&lt;br /&gt;&lt;br /&gt;Field Selection&lt;br /&gt;&lt;br /&gt;Here you choose the required data fields of the previously selected functional groups. If you require local fields, you can also define them here.&lt;br /&gt;&lt;br /&gt;Selection fields:&lt;br /&gt;&lt;br /&gt;You can define fields to add to the selection screen and further limit the selection criteria.&lt;br /&gt;&lt;br /&gt;Depending on which type of list you want to generate, edit the screen fields or use layout mode (Query Painter) for the basic list. You always have to use the Field selection screen field to create local fields.&lt;br /&gt;&lt;br /&gt;By defining local fields, you can generate additional information from the fields that are available in a functional area.&lt;br /&gt;&lt;br /&gt;If pre-existing fields are required for the definition of a local field, short descriptions must be provided (see the menu path displayed in appendix documentation AQL-3).&lt;br /&gt;&lt;br /&gt;A short description can be assigned for each field.&lt;br /&gt;&lt;br /&gt;Short descriptions are also used to retrieve values of the corresponding fields in the list headers.&lt;br /&gt;&lt;br /&gt;You can define local fields for a query (menu path AQL-4)&lt;br /&gt;&lt;br /&gt;Local fields are defined with calculation rules. In the simplest case, calculation rules consist of a single formula formed with normal mathematical rules and consisting of operands and operators.&lt;br /&gt;&lt;br /&gt;The calculation of a field's value can be made condition-dependent. In this case, values are calculated according to certain rules only when a particular condition is met. If the condition remains unmet, the field receives a default value. Multiple conditions are allowed.&lt;br /&gt;&lt;br /&gt;You can sort the values of key columns of statistics in ascending or descending order.&lt;br /&gt;&lt;br /&gt;Numerical fields in statistics are accumulated. Statistics only make sense with numerical fields.&lt;br /&gt;&lt;br /&gt;Statistics allow you to display the average value, the percentage breakdown, and the number of records read for each numerical field.&lt;br /&gt;&lt;br /&gt;You can define up to 9 statistics individually or as a supplement to a basic list.&lt;br /&gt;&lt;br /&gt;If you work with different currency or quantity fie lds within statistics, you must enter a reference currency or a reference unit for each field, so that the system can convert it into that currency or unit.&lt;br /&gt;&lt;br /&gt;The list displays the conversions processed by the system. In the event of an error, the system logs any conversions that did not take place. In addition, the system highlights the affected currency or quantity fields within the statistics.&lt;br /&gt;&lt;br /&gt;With the appropriate definition, subtotal lines can also appear within statistics. If you compress the statistics, the system displays only the subtotal lines and the grand total.&lt;br /&gt;&lt;br /&gt;Ranked lists are special forms of statistics. However, they are always sorted based on one numerical value. This value is referred to as the ranked list criterion. In addition, the system only outputs a certain number of records.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ranked lists are sorted according to only one fie ld, and the number of output lines is limited.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can define up to 9 ranked lists individually or as supplements to a basic list.&lt;br /&gt;&lt;br /&gt;You can also define each ranked list as statistics.&lt;br /&gt;&lt;br /&gt;The rules for conversions of currency and quantity fields also apply to ranked lists.&lt;br /&gt;&lt;br /&gt;To create basic lists, use the Query Painter. In the Query Painter, the screen is divided into four areas. The available fields (data source) are displayed to the left in tree form. The list structure is displayed with sample data in the upper right area. Information for the currently active element is displayed in the lower left portion of the window. Links to documentation and any warnings that are output while formatting the list are displayed in the lower right section of the window.&lt;br /&gt;&lt;br /&gt;You can edit list characteristics (frame, width) by selecting a field, right-clicking with the mouse and choosing 'List options' from the menu. While editing, you are working in the lower left window. If you have created new characteristics, then you need to confirm the values you have changed using the APPLY function.&lt;br /&gt;&lt;br /&gt;You can edit list line characteristics (color, separators, and so on) by selecting a field, right-clicking with the mouse and choosing 'Line options' from the menu. While editing, you are working in the lower left window. If you have created new characteristics, then you need to confirm the values you have changed using the APPLY function.&lt;br /&gt;&lt;br /&gt;You can edit field characteristics in the lower left window by selecting the appropriate field. Further field characteristics are available in the menu displayed with the right mouse button.&lt;br /&gt;&lt;br /&gt;You can move column and list headers to a mode that is ready for input by double -clicking.&lt;br /&gt;&lt;br /&gt;Selecting a field in the upper left window automatically adds that field to the list (is appended at the end of the current line). The individual fields are represented by field values. Sample data records are read from the source. If this is not possible, field values are simulated. The structure of the layout determines the structure of the subsequent list - that is, it contains the order of the fields, the headers, the colors, totals lines, and so on. To display the list structure for multi line hierarchy lists, several sample records are read and displayed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In addition, tools are available in the Query Painter to design the list. You can change the arrangement of the tools with drag and drop. Select the tool, such as the trash (a frame is displayed), with the left mouse button. You can now drag the selected area to the new position as long as you keep pressing the left mouse button.&lt;br /&gt;&lt;br /&gt;You can also use drag and drop to edit the list. Example: You want to change the field sequence. To do this, point the mouse at the field you want to move, click and hold the left mouse button (the cursor changes), drag the field to the desired location, and release the mouse button. To delete a field, just drag it to the trash.&lt;br /&gt;&lt;br /&gt;You can also change the output position and output length with entries in the lower left window.&lt;br /&gt;&lt;br /&gt;Press Apply to apply your values to the list structure.&lt;br /&gt;&lt;br /&gt;You can set up control level lists. To do this, you have to determine the sort fields. The sort sequence can be defined in either ascending or descending order separately for each field. To create a sort field, drag a field from the list to the Sort tool.&lt;br /&gt;&lt;br /&gt;You can define control levels with or without a total at the end of the control level (subtotal). You can change the text accompanying the subtotals.&lt;br /&gt;&lt;br /&gt;If you total a field, the total is output to the same column as the field, with the same output length. Accordingly, the output length may be too short and result in an overflow (an asterisk appears in the first position of the value). To prevent overflows of totals, you can simply increase the output length of the field you wish to total.&lt;br /&gt;&lt;br /&gt;You can output blank lines and/or force a page break before outputting control levels.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can hide and change introductory and concluding texts for control levels.&lt;br /&gt;&lt;br /&gt;The system automatically creates a currency distribution for currency totals.&lt;br /&gt;&lt;br /&gt;List overview:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If your list consists of several partial lists, for example a basic list, two statistical lists and a ranked list, the system offers you the ability to display the partial lists individually. The partial lists can also be printed separately.&lt;br /&gt;&lt;br /&gt;Report/report interface (RRI): You can use this interface to call query programs (receiver) and other reports (sender). Additional information is available in the online documentation.&lt;br /&gt;&lt;br /&gt;Table display: The list is displayed as a table control or using the ALV grid control. Starting in Release 4.6A, you can also display multi line lists. The different lines are summarized in one line. Graphics: The information contained in a list can be displayed with SAP Presentation Graphics.&lt;br /&gt;&lt;br /&gt;File storage, private storage: Saves the data as a file on the presentation server or in the private folders.&lt;br /&gt;&lt;br /&gt;Word processing and spreadsheets: Transfer data to MS Word or Excel (for example)&lt;br /&gt;&lt;br /&gt;Selection: Indicates which selections were input in the selection screen.&lt;br /&gt;&lt;br /&gt;Drilldown functions: For expanding and collapsing the list.&lt;br /&gt;&lt;br /&gt;Totaling: Totals for numeric fields.&lt;br /&gt;&lt;br /&gt;You can save a list generated by a query using the menu path AQL-5 and re-display it later.&lt;br /&gt;&lt;br /&gt;Subsequent display of a saved list does not require database access to retrieve data. Such a display is therefore much quicker than restructuring the data running the query again.&lt;br /&gt;&lt;br /&gt;Saving a list stores the list itself and supplemental information. Storage of additional information is a special function of saving lists that is supported only by query. This makes it possible to perform interactive functions in the saved list.&lt;br /&gt;&lt;br /&gt;When a query is integrated in an area menu (not the AQ... query program), then all the saved lists are automatically passed on to the area menu, and can be displayed there. All interactive functions remain available.&lt;br /&gt;&lt;br /&gt;If you save the list 'normally' (using menu path AQL-6), then no interactive functions are available in the saved list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-3810377728982747693?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/3810377728982747693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=3810377728982747693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3810377728982747693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3810377728982747693'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/lesson-26-techniques-for-list-creation.html' title='LESSON 26 TECHNIQUES FOR LIST CREATION AND SAP QUARY'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-2889877396380455300</id><published>2008-07-30T21:43:00.001+05:30</published><updated>2008-07-30T21:44:58.610+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP LISTS AND SCREENS'/><title type='text'>LESSON 29 SELECTION SCREENS ABAP REPORT</title><content type='html'>SELECTION SCREENS:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Selection screens serve as the interface between the program and the user, and allow, for example, limitation of the amount of data to be read from the database.&lt;br /&gt;&lt;br /&gt;Logical databases supply selection screens whose concrete appearance is dependent on the specified node name (NODES&lt;name&gt;). Selection screen versions (if supplied by the logical database) offer a subset of default selection screens.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;You can use the declarative language elements PARAMETERS and SELECT-OPTIONS to generate a default selection screen (screen 1000) with input-ready fields.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;In addition to the default selection screen, you can generate additional selection screens with SELECTION-SCREEN BEGIN .... and call them with CALL SELECTION-SCREEN.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;You can create variants of a selection screen. A variant is a user-specific selection variant. You would create a screen variant if you frequently start a program with the same selection variants or start in background processing.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;The PARAMETERS statement is a declarative language element. As in the case of the DATA statement, you can declare the fields with TYPE or LIKE. The system generates input-ready fields in the selection screen. The names of PARAMETERS fields can be up to 8 characters long. You can maintain selection texts (parameter names) with the function Text elements/Selection texts.&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;You can set a default value with the DEFAULT &lt;value&gt; addition. If you assign a MEMORY ID &lt;pid&gt;, the system uses SAP Memory and the SET/GET parameter to set the default value. If you declare mandatory fields with the OBLIGATORY addition, users cannot leave the selection screen until values have been entered in these fields.&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;You can also define parameters as checkboxes (AS CHECKBOX). Doing so creates a one-character field that can contain a " "(SPACE) or an "X". You can evaluate the contents of checkboxes using IF/ENDIF control structures.&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;You can also define a series of radio buttons for the selection screen with the addition RADIOBUTTON GROUP &lt;grp&gt;. The maximum length name for a RADIOBUTTON GROUP &lt;grp&gt; is 4 characters. Only one radio button in a group can be active and can be evaluated during program processing. You can evaluate the contents of radio buttons using CASE/ENDCASE control structures.&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;The SELECT-OPTIONS statement is a declarative language element. In contrast to the PARAMETERS statement, it allows complex selections instead of just one input-ready field.&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;SELECT-OPTIONS generates an internal table &lt;seltab&gt; with a standard structure. This consists of 4 fields: seltab-sign, seltab-option, seltab-low, and seltab-high. The name of selection table &lt;seltab&gt; can contain up to 8 characters. You can maintain selection texts (name of the selections) with the function Text elements/Selection texts.&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;Use the addition FOR to specify the field against which the system should check the selection entries. This field must be declared in a DATA or TABLES statement. The fields seltab-low and seltab-high possess the same field characteristics as the check field.&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;Each line of the selection table &lt;seltab&gt; formulates a condition using one of the following relational operators. The following values are possible:&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;SIGN: I (Include), E (Exclude)&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;OPTION: EQ, NE, LE, LT, GE, GT, BT(Between), NB (Not Between),&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;CP (Contains Pattern), NP (Contains Pattern not)&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;The selection set is the union of all includes (I1,..., In) minus the union of all excludes (E1, ..., Em). If the table remains empty, selection is performed using the total selection set, if you are working in the SELECT statement with WHERE IN &lt;seltab&gt;. &lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;When you make entries on a selection screen, the system populates the internal table &lt;seltab&gt;. Standard entries for the fields seltab-sign and seltab-option are I and EQ for individual selections, and I and BT for ranges.&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;To change the default entries for seltab-sign and seltab-option, choose Selection options (double click on the appropriate entry field or activate the pushbutton). The system offers all the alternatives for fields seltab-sign and seltab-option that are appropriate for the selection. If the traffic signal icon is green during Select, there is an I in seltab-sign; a red light indicates E.&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;To delete a table entry, use the appropriate pushbutton (Delete selection).&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;Every selection criterion can be used to make multiple selections unless defined otherwise. If multiple selections are present, the color of the arrow changes from white to green.&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;Additions to the SELECT-OPTIONS statement:&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;DEFAULT enables you to set default values for seltab-low (single value) or seltab-low and seltab-high (interval). You can use OPTION and SIGN to set default values for seltab-option and seltab-sign that differ from the normal defaults.&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;MEMORY ID &lt;pid&gt; allocates a SPA/GPA parameter. The value stored in SAP Memory with the ID &lt;pid&gt; is placed in seltab-low (lower interval limit) when you call the selection screen.&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;LOWER CASE suppresses conversion of the entry into upper-case. This addition is&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;not permitted for Dictionary fields, since the attribute set in the Dictionary takes&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;precedence. &lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;OBLIGATORY generates a mandatory field. A question mark appears in the entry field in the selection screen, and the user must enter a value.&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;NO-EXTENSION suppresses multiple single or multiple range selections.&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;NO INTERVALS suppresses the seltab-high (upper interval limit) entry on the selection screen. You can use the additional screen, Multiple selection, to enter ranges.&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;If you entered a logical database in the attributes of the type 1 program, the selection screen of the logical database is processed. If you have programmed additional SELECTION-OPTIONS or PARAMETERS statements, the system displays them after the selections of the logical database.&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;You can use the SELECTION-SCREEN statement to design the layout of the selection screen. You can group selections that belong together logically with the supplemental BEGIN OF BLOCK &lt;block&gt; and place a frame around them using WITH FRAME. You can assign a title to the block, but you can only use the addition TITLE &lt;text&gt; together with a frame. &lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;You can nest framed blocks to a maximum of 5 frames.&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;Before de signing a selection screen, you should orient yourself to the screen design guidelines found in the sample transaction BIBS.&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;You can display multiple parameters and comments in one output line. To do so, you must enclose them between the SELECTION-SCREEN BEGIN OF LINE and SELECTION-SCREEN END OF LINE statements. The COMMENT parameter enables you to include text in the line.&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;Comment texts must always have a format (position and output length). The position can be set with a data field, pos_low or pos_high. These are the positions for fields seltab-low and seltab-high on the selection screen.&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;Adding COMMENT ... FOR FIELD &lt;f&gt; ensures that the F1 Help for field &lt;f&gt; is displayed for the comment text and for the parameter itself. If you hide the parameter (selection variant: attribute invisible) the comment text is also hidden.&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;You can use POSITION &lt;pos&gt; to set the cursor for the next output position (only within ... BEGIN OF LINE ... END OF LINE).&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;The INITIALIZATION event is processed exactly once in an executable program. You can supply default values to the selection screen fields of the logical database during this event.&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;You can use F1 Help (Technical help) to determine the names of the selection fields.&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;You can use the addition DEFAULT &lt;value&gt; to supply additional report-specific default values to selection screen fields in a selection-option statement. The value sets are entered in the internal table &lt;seltab&gt; during this event.&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;The selection screen can generally be initialized during event AT SELECTION-SCREEN OUTPUT. This event corresponds to event Process Before Output (PBO) of the selection screen, and therefore may be passed several times. A typical task for the selection screen's PBO event is dynamic screen modification (LOOP AT SCREEN), that is, showing or hiding fields, enabling or preventing input, and so on.&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;You can perform an error dialog check of the selection screen fields within the AT SELECTIONSCREEN processing block. The event belongs to the PAI (Process After Input) processing of the selection screen. In case of errors (MESSAGE Exxx or MESSAGE Wxxx), all fields are made ready for input again.&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;You can refer to individual selections with the parameters ON &lt;f&gt; or ON &lt;seltab&gt;. In case of errors, only these selections are made input-ready again.&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;To check the entry combinations of a logical group, you can use the event AT SELECTIONSCREEN ON BLOCK &lt;block&gt;. Fields in this block are made ready for input when an error message is issued.&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;The event AT SELECTION-SCREEN ON END OF &lt;field&gt; belongs to the PAI processing of the selection screen for Multiple selections.&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;You can perform entry checks for selection criteria of the logical database and for your own program-specific selections.&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;You can work with several selection screens in one program. The default selection screen always has the screen number 1000.&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;You can also define a selection screen with SELECTION-SCREEN BEGIN OF SCREEN &lt;nnnn&gt; ... END OF SCREEN &lt;nnnn&gt;. Between the BEGIN ... END ... statements, you declare the required selections with SELECT-OPTIONS and PARAMETERS. The selection screen is assigned the screen number &lt;nnnn&gt; and is called with CALL SELECTION-SCREEN &lt;nnnn&gt;.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;The system takes care of the return from the selection screen, which means you do &lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;not have to program it yourself with LEAVE SCREEN (as is the case with CALL SCREEN).&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;The program is continued immediately after the call. However, you must use system field sy-subrc to query whether the user chose Execute (F8) or Cancel (green and yellow arrows, red X). Execute (F8) returns sy-subrc = 0; Cancel returns sy-subrc = 4.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;You can supply the selection screen with default values at INITIALIZATION.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;You can determine which selection screen is currently processing with the AT&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;SELECTION-SCREEN event. You can do so with a CASE control structure and evaluate the system field sy-dynnr.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;You can create any number of selection sets (variants) for a program. The variants are allocated to the program uniquely.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;Creating variants makes sense when you frequently start a program with the same selection default values.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;You can mark Start with variants in the program attributes. Users (system, services, reporting) can then start the program only with a variant.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;If the program uses several selection screens, you can choose to create a variant for all the selection screens or individually for each selection screen.&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;Naming conventions and transporting variants&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;"SAP&amp;amp;xxx" are supplied by SAP&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;"CUS&amp;amp;xxx" are created by customers (in client 000)&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;Variants that follow these naming conventions are client-independent and will automatically be transported along with the report. If these naming conventions are not followed, an entry for a request (task) must be added to the object list: LIMU VARI &lt;variant_name&gt;.&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;You have to assign a name and a description to each variant. By default, variants are available for both online and background processing. You can also define a variant exclusively for use with background processing.&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;You can protect the variant itself and the individual selection criteria and parameters against unauthorized changes. If you select Display only in catalog, this variant will not be displayed in the general value help (F4).&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;The type of a selection is determined in its declaration: Type s for SELECT-OPTIONS, type p for PARAMETERS. If you select Selections protected, then the field(s) will not be ready for input. You can use the hide attribute to suppress selection criteria and parameters on the screen, if required, resulting in a less cluttered selection screen.&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;When you use selection variables, there are three basic ways of supplying your selections with values at runtime: &lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;From table TVARV (type T)&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;Date fields using dynamic date calculation (type D), such as today's date&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;br /&gt;&lt;name&gt;&lt;value&gt;&lt;pid&gt;&lt;grp&gt;&lt;grp&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;seltab&gt;&lt;pid&gt;&lt;pid&gt;&lt;block&gt;&lt;text&gt;&lt;f&gt;&lt;f&gt;&lt;pos&gt;&lt;value&gt;&lt;seltab&gt;&lt;f&gt;&lt;seltab&gt;&lt;block&gt;&lt;field&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;nnnn&gt;&lt;variant_name&gt;User-specific variables (type B); Prerequisite: The selection must be declared with the MEMORY ID &lt;pid&gt; addition.&lt;/pid&gt;&lt;/variant_name&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/nnnn&gt;&lt;/field&gt;&lt;/block&gt;&lt;/seltab&gt;&lt;/f&gt;&lt;/seltab&gt;&lt;/value&gt;&lt;/pos&gt;&lt;/f&gt;&lt;/f&gt;&lt;/text&gt;&lt;/block&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/seltab&gt;&lt;/grp&gt;&lt;/grp&gt;&lt;/pid&gt;&lt;/value&gt;&lt;/name&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-2889877396380455300?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/2889877396380455300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=2889877396380455300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2889877396380455300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2889877396380455300'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/lesson-29-selection-screens-abap-report.html' title='LESSON 29 SELECTION SCREENS ABAP REPORT'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-990626543738907584</id><published>2008-07-25T19:38:00.001+05:30</published><updated>2008-07-25T19:38:30.327+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>ABAP Interview Questions -SQL , Tables , Basic</title><content type='html'>Basic Question :&lt;br /&gt;&lt;br /&gt;(1)Choose the menu path Tools-&gt;Administration, Monitoring-&gt;System monitoring-&gt;User overview. What is the transaction code for this transaction?&lt;br /&gt;(2) What is the transaction code for the R/3 main menu? (The main menu is the first menu displayed after logon.)&lt;br /&gt;(3)What is the transaction code for the menu path Tools-&gt;Development Workbench?&lt;br /&gt;(4)If there are three R/3 systems in your current system landscape, how many databases are there?&lt;br /&gt;(5)If an R/3 system has two application servers, how many instances does it have?&lt;br /&gt;(6)What is Open SQL?&lt;br /&gt;(7)What advantages does Open SQL offer over native SQL?&lt;br /&gt;(8)Which part of the work process is used to implement Open SQL?&lt;br /&gt;(9)When is a roll area allocated, when is it de-allocated, and what does it contain?&lt;br /&gt;(10)When is a user context allocated, when is it de-allocated, and what does it contain?&lt;br /&gt;(11)When does the roll-out occur, and why does it occur?&lt;br /&gt;(12)What two things does the tables statement do?&lt;br /&gt;(13)To what does the term default table work area refer?&lt;br /&gt;(14)If the select statement is missing an into clause, where do the rows go?&lt;br /&gt;(15)If a write statement does not contain a slash, is the output written to the same line as the output for the previous write statement or is it written to a new line?&lt;br /&gt;(16)What is the name of the system variable that indicates whether any rows were found by the select statement?&lt;br /&gt;(17)What is the name of the system variable that indicates how many rows were found by the select statement?&lt;br /&gt;(18)What is the purpose of the domain?&lt;br /&gt;(19)What does the data element contain?&lt;br /&gt;(20)To what does the term application data refer?&lt;br /&gt;(21)For fields of type DEC, is the decimal point stored with the value of the field?&lt;br /&gt;(22)What are the transaction codes of the four data browsers. Which one is most commonly used, and which one cannot be used to update data?&lt;br /&gt;(23)What is the difference between a transparent table and a pooled or cluster table?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-990626543738907584?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/990626543738907584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=990626543738907584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/990626543738907584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/990626543738907584'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/abap-interview-questions-sql-tables.html' title='ABAP Interview Questions -SQL , Tables , Basic'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-3051528851340120641</id><published>2008-07-25T19:37:00.002+05:30</published><updated>2008-07-25T19:38:02.874+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>Dialog Programming Interview Questions(FAQ's)</title><content type='html'>&lt;strong&gt;1) Why do I need to do dialog programming?&lt;/strong&gt;&lt;br /&gt;Ans: to have your own customized screens and processing&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) What does dialog programming consist of ?&lt;/strong&gt;&lt;br /&gt;Ans: Screens with their corresponding processing code, Menu , module pool program&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3) Difference between the normal report / program and Module pool program?&lt;br /&gt;&lt;/strong&gt;Ans: Normal report can be run straight away by executing it and useually has a selection criteria – Attributes : 1 online program&lt;br /&gt;Module pool program cannot be run straight away. It first needs to display a screen – attributes : M module pool program&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4) What is PBO and PAI?&lt;/strong&gt;&lt;br /&gt;Ans: Process before output. Code that is executed prior to the display of a screen.&lt;br /&gt;Process after input. Code that is executed after a button on the screen has been pressed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5) How can I identify which button is pressed?&lt;/strong&gt;&lt;br /&gt;Ans: “ fcode” attributes of the button. Define the okcode value of the screen (type sy-ucomm)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6) What is the GUI interface to the program?&lt;/strong&gt;&lt;br /&gt;Ans: The menu bar where you define the ok-codes of the buttons and function keys for the screen. You typically code SAVE, BACK, CANC, EXIT and then more specific codes. CANC (leave to screen 0) allows you to get out of the current screen.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7) What does PAI and Pbo contain by default?&lt;br /&gt;&lt;/strong&gt;Ans: PBO - MODULE STATUS_0100 - Key / button definitions&lt;br /&gt;PAI - * MODULE USER_COMMAND_0100 - How do you handle thecode behind the button that was pressed&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8) If we do not have / give menu bar than what will menu bar have by default?&lt;br /&gt;&lt;/strong&gt;Ans: Not much -&gt; system , help&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9) How many PBO and PAI modules are allowed for a screen?&lt;br /&gt;&lt;/strong&gt;Ans: one PBO and one PAI&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10) In the menu bar can you associate a function key to a button?&lt;/strong&gt;&lt;br /&gt;Ans: yes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-3051528851340120641?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/3051528851340120641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=3051528851340120641' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3051528851340120641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3051528851340120641'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/dialog-programming-interview.html' title='Dialog Programming Interview Questions(FAQ&apos;s)'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-177530344658880345.post-6080662712531192941</id><published>2008-07-25T19:37:00.001+05:30</published><updated>2008-07-25T19:37:40.857+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>Performance Tuning Faqs in abap</title><content type='html'>&lt;ol start="1" style="margin: 0px 0px 0px 40px; padding: 0pt;"&gt;&lt;span class="text"&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;What is performance tuning?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;What are steps you follow to improve the performance of&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;a report &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;what is the role of secondary index in performance?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;what is the role of ST05 in performance tuning?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;what is the role of extended syntax check in&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;performance tuning?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;will join conditions in sql queries affect perfomance? how?&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;will sorted internal tables help in performance?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;will where conditions in a sql query help improve&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;performance?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="line-height: 0px; color: rgb(0, 0, 0); font-size: 12px; font-family: Verdana;"&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;does select single *.. / select * .. affect performance ?&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%; color: rgb(0, 0, 0);"&gt;&lt;span style="font-size: 12px; line-height: 16px;"&gt;how?&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-6080662712531192941?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/6080662712531192941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=6080662712531192941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6080662712531192941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/6080662712531192941'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/performance-tuning-faqs-in-abap.html' title='Performance Tuning Faqs in abap'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-4824154030959227459</id><published>2008-07-25T19:36:00.000+05:30</published><updated>2008-07-25T19:37:18.040+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>SAP BASIS LAYER Interview Questions</title><content type='html'>&lt;strong&gt;What are the central interfaces of the R/3 system ?&lt;/strong&gt;&lt;br /&gt;- Presentation interface&lt;br /&gt;Database interface&lt;br /&gt;Operating system interface&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Which interface controls what is shown on the p.c. ?&lt;/strong&gt;&lt;br /&gt;- Presentation interface&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Which interface converts SQL requirements in the SAP development system to those of the database ?&lt;/strong&gt;- Database interface&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is SAP dispatcher ?&lt;/strong&gt;&lt;br /&gt;- SAP dispatcher is the control agent which manages the resources for the R/3 applications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the functions of dispatcher ?&lt;/strong&gt;&lt;br /&gt;- Equal distribution of transaction load to the work processes&lt;br /&gt;Management of buffer areas in main memory Integration of the presentation levels&lt;br /&gt;Organization of communication activies&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a work process ?&lt;/strong&gt;&lt;br /&gt;- A work process is where individual dialog steps are actually processed and the work is done. Each work process handles one type of request.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Name various work processes of R/3 system ?&lt;/strong&gt;&lt;br /&gt;1) Dialog or Online ( processes only one request at a time )&lt;br /&gt;2) Background ( started at a specified time ) 3) Update ( primary or secondary ) 4) Enque( lock mechanism ) 5) Spool ( generated online or during back ground processing For printing )&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the types of Update requests ?&lt;/strong&gt;&lt;br /&gt;- An update request can be divided into one primary (V1) and several Secondary update components (V2). Time-critical operations are placed in V1 component and those whose timing are less critical are placed in V2 components. If a V1 update fails, V2 components will not be processed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the roll and page areas ?&lt;/strong&gt;&lt;br /&gt;- Roll and page areas are SAP R/3 buffers used to store user contexts ( process requests ) . The SAP dispatcher assigns process requests to work processes as they are received. If the work process is unavailable the process requests are queued in the roll and page areas. Paging area holds data from the application programs. Roll area holds data from previous dialog steps and data that characterizes user.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a Spool request ?&lt;/strong&gt;&lt;br /&gt;- Spool requests are generated during dialog or background processing and placed in the spool database with information about the printer and print format. The actual data is placed in the Tem Se (Temporary Sequential objects).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the different database integrities ?&lt;/strong&gt;&lt;br /&gt;- Semantic integrity&lt;br /&gt;- Relational integrity&lt;br /&gt;- Primary key integrity&lt;br /&gt;- Value set integrity&lt;br /&gt;- Foreign key integrity and&lt;br /&gt;- Operational integrity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-4824154030959227459?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/4824154030959227459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=4824154030959227459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4824154030959227459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4824154030959227459'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/sap-basis-layer-interview-questions.html' title='SAP BASIS LAYER Interview Questions'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-4325102747356265659</id><published>2008-07-25T19:35:00.000+05:30</published><updated>2008-07-25T19:36:41.749+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>SAP ABAPDATA DICTIONARY Interview Questions</title><content type='html'>Type of a table or structure&lt;br /&gt;The table type determines how the logical table description defined in the ABAP/4 Dictionary is reproduced on the database. There are the following table types:&lt;br /&gt;transparent table&lt;br /&gt;structure&lt;br /&gt;append structure&lt;br /&gt;&lt;br /&gt;For internal purposes, such as storing control data or update texts, there are in addition the following table types:&lt;br /&gt;&lt;br /&gt;pooled table&lt;br /&gt;cluster table&lt;br /&gt;generated view structure&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Transparent table &lt;/strong&gt;There is a physical table on the database for each transparent table. The names of the physical tables and the logical table definition in the ABAP/4 Dictionary correspond. All business data and application data are stored in transparent tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Structure &lt;/strong&gt;No data records exist in the database for a structure. Structures are used for the interface definition between programs or between screens and programs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Append structure &lt;/strong&gt;An append structure defines a set of fields which belong to another table or structure but which are treated in the correction administration as its own object. Append structures are used to support modifications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pooled table &lt;/strong&gt;Pooled tables can be used to store control data (e.g. screen sequences, program parameters or temporary data). Several pooled tables can be combined to form a table pool. The table pool corresponds to a physical table on the database in which all the records of the allocated pooled tables are stored.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cluster table &lt;/strong&gt;Cluster tables contain continuous text, for example, documentation. Several cluster tables can be combined to form a table cluster. Several logical lines of different tables are combined to form a physical record in this table type. This permits object-by-object storage or object-by-object access. In order to combine tables in clusters, at least parts of the keys must agree. Several cluster tables are stored in one corresponding table on the database.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Generated view structure &lt;/strong&gt;In activation a structure is generated for a view. This structure serves as interface for the runtime environment. It does not generally appear in the ABAP/4 Dictionary.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a Data Class? &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Data class determines in which tablespace the table is stored when it is created in the database. What is a Size Category? The Size category describes the probable space requirement of the table in the database. How Many types of size categories and data classes are there? There are five size categories (0-4) and 11 data classes, only three of which are appropriate for application tables:&lt;br /&gt;- APPL0 - Master data (data frequently accessed but rarely updated)&lt;br /&gt;- APPL1 - Transaction data (data that is changed frequnetly)&lt;br /&gt;- APPL2 - Organisational data (customizing data that is entered when system is&lt;br /&gt;configured and then rarely changed)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are control tables?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The values specified for the size category and data class are mapped to database-specific values via control tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the function of the transport system and workbench organiser? &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The function of the transport system and the Workbench Organizer is to manage any changes made to objects of the ABAP/4 Development Workbench and to transport these changes between different SAP systems.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a table pool?&lt;br /&gt;&lt;/strong&gt;A table pool (or pool) is used to combine several logical tables in the ABAP/4 Dictionary. The definition of a pool consists of at least two key fields and a long argument field (VARDATA).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are pooled tables?&lt;/strong&gt;&lt;br /&gt;These are logical tables which must be assigned to a table pool when they are defined. Pooled tables can be used to store control data (such as screen sequences or program parameters).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a table cluster? &lt;/strong&gt;&lt;br /&gt;A table cluster combines several logical tables in the ABAP/4 Dictionary. Several logical rows from different cluster tables are brought together in a single physical record. The records from the cluster tables assigned to a cluster are thus stored in a single common table in the database.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Which objects are independent transport objects?&lt;br /&gt;&lt;/strong&gt;Domains, Data elements, Tables, Technical settings for tables, Secondary indexes for transparent tables,&lt;br /&gt;Structures, Views,&lt;br /&gt;Matchcode objects, Matchcode IDs, Lock objects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the Data types of the external layer? &lt;/strong&gt;&lt;br /&gt;ACCP, CHAR, CLNT, CUKY,CURR, DATS, DEC, FLTP, INT1,INT2, INT4, LANG, LCHR,LRAW, NUMC, PREC, QUAN,RAW ,TIMS, UNIT, VARC.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the Data types of the ABAP/4 layer?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Possible ABAP/4 data types: C: Character. D: Date, format YYYYMMDD. F: Floating-point number in DOUBLE PRECISION (8 bytes). I: Integer. N: Numerical character string of arbitrary length. P: Amount or counter field (packed; implementation depends on hardware platform). S: Time stamp YYYYMMDDHHMMSS. T: Time of day HHMMSS. V: Character string of variable length, length is given in the first two bytes. X: Hexadecimal (binary) storage.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How can we set the tablespaces and extent sizes ? &lt;/strong&gt;&lt;br /&gt;You can specify the extent sizes and the tablespace (physical storage&lt;br /&gt;area in the database) in which a transparent table is to be stored by setting the size category and data class.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a data dictionary ?&lt;br /&gt;&lt;/strong&gt;Data dictionary is a central source of data in a data management system. Its main function is to support the .It has details about&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- What data is contained ? &lt;/strong&gt;&lt;br /&gt;- What are the attributes of the data ?&lt;br /&gt;- What is the relationship existing between the various data elements ?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What functions does a data dictionary perform ?&lt;br /&gt;&lt;/strong&gt;In a data management system, the principal functions performed by the data dictionary are&lt;br /&gt;- Management of data definitions&lt;br /&gt;- Provision of information for evaluation&lt;br /&gt;- Support for software development&lt;br /&gt;- Support form documentation&lt;br /&gt;- Ensuring that the data definitions are flexible and up-to-date.&lt;br /&gt;&lt;br /&gt;A field containing currency amounts (data type CURR) must be assigned to a reference table and a reference field. Explain.&lt;br /&gt;&lt;br /&gt;As a reference table, a system table containing all the valid currencies is assigned or any other table which contains a field with the currency key format. This field is called as reference field. The assignment of the field containing currency amounts to the reference field is made at runtime. The value in the reference field determines the currency of the amount.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the significance of Technical settings (specified while creating a table in the data dictionary) ?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;By specifying technical settings we can control how database tables are created in the database. The technical settings allows us to - optimize storage space requiremnets&lt;br /&gt;- table access behaviour&lt;br /&gt;- buffering required&lt;br /&gt;- changes to entries logged&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the significance of Delivery Class ?&lt;br /&gt;&lt;/strong&gt;- The delivery class controls the degree to which the SAP or the customer is responsible for table maintenance&lt;br /&gt;- whether SAP provides the table with or without contents.&lt;br /&gt;- determines the table type. - determines how the table behaves when it is first installed, at upgrade, when it is transported, and when a client copy is performed.&lt;br /&gt;&lt;br /&gt;What is the maximum number of structures that can be included in a table or structure&lt;br /&gt;- Nine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the two methods of modifying Sap standard tables ?&lt;br /&gt;&lt;/strong&gt;- Append Structures and&lt;br /&gt;- Customizing Includes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the difference between a Substructure and an Append Structure ? &lt;/strong&gt;&lt;br /&gt;- In case of a substructure, the reference originates in the table itself, in the forma of a statement .include... . - In case of an append structure, the table itself remains unchanged and the refrence originates in the append structure.&lt;br /&gt;What are the two ways for restricting the value range for a domain ? - By specifying fixed values.&lt;br /&gt;- By stipulating a value table.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a Match Code ?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Match Code is a tool to help us to search for data records in the system. Match codes are an efficient and user-friendly search aid where key of a record is unknown. What are the two levels in defining a Match Code ?&lt;br /&gt;- Match Code object&lt;br /&gt;- Match Code Id.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the maximum number of match code Id's that can be defined for one Match code object ?&lt;br /&gt;&lt;/strong&gt;- 36. A match code Id is a one character ID which can be a letter or a number.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Can we define our own Match Code ID's for SAP Matchcodes ?&lt;br /&gt;&lt;/strong&gt;Yes, the numbers 0 to 9 are reserved for us to create our own Match Code IDs for a SAP defined Matchcode object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is an Update type with reference to a Match code ID? &lt;/strong&gt;&lt;br /&gt;If the data in one of the base tables of a matchcode ID changes, the matchcode data has to be updated. The update type stipulates when the matchcode is to be updated and how it is to be done. The update type also specifies which method is to be used for Building matchcodes . You must specify the update type when you define a matchcode ID.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are conversion routines ?&lt;br /&gt;&lt;/strong&gt;- Non standard conversions from display format to sap internal format and vice-versa are implemented with so called conversion routines.&lt;br /&gt;Aggregated Objects Views, matchcodes, and lock objects are also called aggregate objects because they are formed from several related tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a View ? &lt;/strong&gt;&lt;br /&gt;- A view is a logical view on one or more tables. A view on one or more tables i.e, the data from a view is not actually physically stored instead being derived from one or more tables. A view can be used to summarize data which is distributed among several tables&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How many types of Views are there ? - Database View (SE11)&lt;br /&gt;&lt;/strong&gt;Database views are implement an inner join, that is, only records of the primary table (selected via the join operation) for which the corresponding records of the secondary tables also exist are fetched. Inconsistencies between primary and secondary table could, therefore, lead to a reduced selection set. In database views, the join conditions can be formulated using equality relationships between any base fields. In the other types of view, they must be taken from existing foreign keys. That is, tables can only be collected in a maintenance or help view if they are linked to one another via foreign keys.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Help View ( SE54) &lt;/strong&gt;&lt;br /&gt;Help views are used to output additional information when the online help system is called. When the F4 button is pressed for a screen field, a check is first made on whether a matchcode is defined for this field. If this is not the case, the help view is displayed in which the check table of the field is the primary table. Thus, for each table no more than one help view can be created, that is, a table can only be primary table in at most one help view.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Projection View&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Projection views are used to suppress or mask certain fields in a table (projection), thus minimizing the number of interfaces. This means that only the data that is actually required is exchanged when the database is accessed. A projection view can draw upon only one table. Selection conditions cannot be specified for projection views.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;- Maintenance View ( SE54 ) &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Maintenance views enable a business-oriented approach to looking at data, while at the same time, making it possible to maintain the data involved. Data from several tables can be summarized in a maintenance view and maintained collectively via this view. That is, the data is entered via the view and then distributed to the underlying tables by the system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is Locking ?&lt;br /&gt;&lt;/strong&gt;- When two users simultaneously attempt to access the same data record, this is synchronised by a lock mechanism.&lt;br /&gt;When dialog transactions are programmed, locks are set and released by calling certain function modules. These function modules are generated automatically from the definition of so-called lock objects in the ABAP/4 Dictionary. To synchronize the access to a table by setting and removing locks, a Lock object has to be defined in the ABAP/4 Dictionary. Activating the lock object automatically creates #function modules for setting and removing locks. These function modules must be included when programming interactive transactions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lock Mechanism :&lt;/strong&gt; To set locks, a lock object must be defined in the ABAP/4 Dictionary. In this lock object, those tables in which data records are to be locked by calling a lock are determined. All tables included in a lock object must be connected to each other via foreign keys. The key fields of the tables in a lock object form the Lock arguments for the tables. The lock arguments are the basis for formulating the logical condition for identifying the records to be locked. When activating this lock object, two function modulesB with the names ENQUEUE_ and DEQUEUE_ are generated.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example :&lt;br /&gt;Problem :&lt;/strong&gt; You wish to prevent a user from being able to change the name of a course or the name of the professor with responsibility for the course at a time when another user is editing the course description (which contains this information).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution :&lt;/strong&gt; The problem described above can be solved by defining a lock object E_UKURS. This is done by defining primary and secondary tables in the lock object. Table UKURS is check table of table UKRSB, so UKURS should be selected as primary table and UKRSB as secondary table of the lock object. The Lock argument in this case is the field combination FABNR, KRSNR, and SPRAS (i.e Primary Key Combination). The Lock mode Shared is to be selected here. This allows several users to access the data simultaneously in display mode. The lock mode in the generated function modules for setting (ENQUEUE_E_UKURS) and releasing (DEQUEUE_E_UKURS) locks is therefore set to shared as default, but can be overridden by calling the function modules. If the function module ENQUEUE_E_UKURS is called with FABNR = '1' and KRSNR = '3', the record for course 3 in faculty 1 is locked in table UKURS. Furthermore, all the course descriptions for this course are locked in table UKRSB since field SPRAS was not specified when the function module was called. In such cases, the lock is made generically for a field which is not defined. If the function module DEQUEUE_E_UKURS is now called with FABNR = '1', KRSNR = '3' and SPRAS = 'D', the German course description is unlocked. All other course descriptions remain locked.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is database utility ? &lt;/strong&gt;&lt;br /&gt;-&lt;br /&gt;Database utility is the interface between the ABAP/4 Dictionary and the underlying the SAP system.&lt;br /&gt;The database utility is the interface between the ABAP/4 Dictionary and the relational database underlying the SAP system. You can call the database utility from the initial screen of the ABAP/4 Dictionary with Utilities ® Database utility. The database utility allows you to create, delete and convert objects from the ABAP/4 Dictionary in the database. MODULARIZATION What is Modularization and its benefits? If the program contains the same or similar blocks of statements or it is required to process the same function several times, we can avoid redundancy by using modularization techniques. By modularizing the ABAP/4 programs we make them easy to read and improve their structure. Modularized programs are also easier to maintain and to update.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How can we create callable modules of program code within one ABAP/4 Program?&lt;br /&gt;&lt;/strong&gt;A. By defining macros. B. By creating include programs in the library.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are subroutines? &lt;/strong&gt;&lt;br /&gt;Subroutines are program modules which can be called from other ABAP/4 programs or within the same program.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the types of Subroutines?&lt;br /&gt;&lt;/strong&gt;A. Internal Subroutines: The source code of the internal subroutines will be in the&lt;br /&gt;same ABAP/4 program as the calling procedure (internal call).&lt;br /&gt;B. External Subroutines: The source code of the external subroutines will be in an&lt;br /&gt;ABAP/4 program other than the calling procedure.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the different types of parameters?&lt;/strong&gt;&lt;br /&gt;Formal parameters: Parameters which are defined during the definition of subroutine with the FORM statement. Actual parameters: Parameters which are specified during the call of a subroutine with the PERFORM statement.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How can one distinguish between different kinds of parameters?&lt;br /&gt;&lt;/strong&gt;A. Input parameters are used to pass data to subroutines. B. Output parameters are used to pass data from subroutines.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the different methods of passing data? &lt;/strong&gt;&lt;br /&gt;A. Calling by reference: During a subroutine call, only the address of the actual&lt;br /&gt;parameter is transferred to the formal parameters. The formal parameter has no memory of its own, and we work with the field of the calling program within the subroutine. If we change the formal parameter, the field contents in the calling program also change.&lt;br /&gt;B. Calling by value: During a subroutine call, the formal parameters are created as&lt;br /&gt;copies of the actual parameters. The formal parameters have memory of their own. Changes to the formal parameters have no effect on the actual parameters.&lt;br /&gt;C. Calling by value and result: During a subroutine call, the formal parameters are&lt;br /&gt;created as copies of the actual parameters. The formal parameters have their own memory space. Changes to the formal parameters are copied to the actual parameters at the end of the subroutine.&lt;br /&gt;The method by which internal tables are passed is By Reference.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the difference between the function module and a normal ABAP/4 subroutine?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;In contrast to normal subroutines function modules have uniquely defined interface. Sub routines do not return values.&lt;br /&gt;Sub routines do not return exceptions. Sub routines cannot be tested independently. Declaring data as common parts is not possible for function modules. Function modules are stored in a central library. What is a function group? A function group is a collection of logically related modules that share global data with each other. All the modules in the group are included in the same main program. When an ABAP/4 program contains a CALL FUNCTION statement, the system loads the entire function group in with the program code at runtime. Every function module belongs to a function group.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is the difference between internal tables and extract datasets?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;A. The lines of an internal table always have the same structure. By using extract&lt;br /&gt;datasets, you can handle groups of data with different structure and get statistical figures from the grouped data.&lt;br /&gt;B. You have to define the structure of the internal table at the begining. You need&lt;br /&gt;not define the structure of the extract dataset.&lt;br /&gt;C. In contrast to internal tables, the system partly compresses extract datasets&lt;br /&gt;when storing them. This reduces the storage space required.&lt;br /&gt;D. Internal tables require special work area for interface whereas extract datasets&lt;br /&gt;do not need a special work area for interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-4325102747356265659?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/4325102747356265659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=4325102747356265659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4325102747356265659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4325102747356265659'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/sap-abapdata-dictionary-interview.html' title='SAP ABAPDATA DICTIONARY Interview Questions'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-2037020758640738796</id><published>2008-07-25T19:34:00.003+05:30</published><updated>2008-07-25T19:35:55.069+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logical Database'/><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>SAP ABAP LOGICAL DATABASE Interview Questions</title><content type='html'>&lt;strong&gt;What are logical databases? &lt;/strong&gt;&lt;br /&gt;What are the advantages/disadvantages of logical databases? Ans :- A Logical Database is a hierarchical structure of tables. Use the GET statement to process Logical Databases. - LDB consists of logically related tables grouped together ­ used for reading and processing data.&lt;br /&gt;- Advantages = 1. No need of programming for retrieval , meaning for data selection&lt;br /&gt;- 2. Easy to use standard user interface, have check completeness of user input.&lt;br /&gt;Disadvantages = 1. Fast in case of lesser no. of tables But if the table is in the lowest level of hierarchy, all upper level tables should be read so performance is slower.&lt;br /&gt;&lt;br /&gt;Preparation of the data records by the L.D.B and reading of the data records in the actual report are accomplished with the command pair.&lt;br /&gt;- Put and Get.&lt;br /&gt;&lt;br /&gt;The three main elements of LDB are - Structure, Selections, Database Program.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What sort of tables one can use in designing the hierarchy of a LDB ?&lt;br /&gt;&lt;/strong&gt;- Tables which are having Foreign key relations.&lt;br /&gt;&lt;br /&gt;The structure of Logical Databases relfects the ________________ dependencies of hierarchical tables in the SAP System.&lt;br /&gt;- Foreign key&lt;br /&gt;&lt;br /&gt;If you want to improve the response time ( time to access data ) Logical DataBases permits you to achieve this using ______________&lt;br /&gt;- VIEWS.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are the advantages of Logical DataBases ? &lt;/strong&gt;&lt;br /&gt;- It offers an easy-to-use selection screen.&lt;br /&gt;You can modify the pre-generated selection screen to your needs. It offers check functions to check whether user input is complete, correct, and plausible.&lt;br /&gt;It offers reasonable data selections.&lt;br /&gt;It contains central authorization checks for database accesses.&lt;br /&gt;Enhancements such as improved performance immediately apply to all report programs that use the logical database.&lt;br /&gt;Report FORMATTING In order to suppress the leading zeros of a number field the keywords used are : NO-ZERO. The Command that allows for vertical alignment of fields one below the other. UNDER. In order to concatenate strings only for output purposes the command _________ can be used in conjunction with the 'Write' statement. NO-GAP. Data can be moved from one field to another using a 'Write:' Statement and stored in the desired format. TRUE. Write : Date_1 to Date_2 format DD/MM/YY. In order to have boldfaced text as output the command used is Write : INTENSIFIED. Background and foreground colors can be interchanged using the command Format inverse. Which datatype cannot be used to define parameters. Type F. For each new event, the system resets all formatting options to their default values. TRUE.&lt;br /&gt;&lt;br /&gt;The processing block following END-OF-PAGE is processed only if you reserve lines for the footer in the LINE-COUNT option of the REPORT statement.&lt;br /&gt;To execute a page break under the condition that less than a certain number of lines is left on a page is acheived by ________________________. RESERVE n lines. What is the limit for the length of a page if the page length is not specified in the report statement. 60,000 Lines. How can Symbols or R/3 icons be output on the screen? WRITE AS SYMBOL. WRITE AS ICON.&lt;br /&gt;&lt;br /&gt;REPORTING - GENERAL What are reports? and how do you set up reports? A report program reads and analyzes data from one or more database tables without modifying the database. Usually, the result of such a report program is in the form of a list which is output to the screen or sent to a printer. What are the different types of programs?&lt;br /&gt;I Include Program&lt;br /&gt;M Module Pool&lt;br /&gt;F Function Modules&lt;br /&gt;S External Subroutines&lt;br /&gt;1 Online program&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Events in Reporting ? Explain ?&lt;br /&gt;&lt;/strong&gt;The following events occur at runtime of a typical report program which uses logical databases: Event keyword&lt;br /&gt;Event&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;-- INITIALIZATION &lt;/strong&gt;&lt;br /&gt;Point before the selection screen&lt;br /&gt;is displayed&lt;br /&gt;When you start a program in which a selection screen is defined (either in the program itself or in the linked logical database program), the system normally processes this selection screen first. If you want to execute a processing block before the selection screen is processed, you can assign it to the event keyword INITIALIZATION.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;AT SELECTION-SCREEN&lt;br /&gt;&lt;/strong&gt;Point after processing user input on the selection screen while the selection screen is still active&lt;br /&gt;The event keyword AT SELECTION-SCREEN provides you with several possibilities to carry out processing blocks while the system is processing the selection screen.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;START-OF-SELECTION &lt;/strong&gt;&lt;br /&gt;Point after processing the selection screen&lt;br /&gt;The event START-OF-SELECTION gives you the possibility of creating a processing block after processing the selection screen and before accessing database tables using a logical database. You can use this processing block, for example, to set the values of internal fields or to write informational statements onto the output screen. At the START-OF-SELECTION event, also all statements are processed that are not attached to an event keyword except those that are written behind a FORM-ENDFORM block .&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GET &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Point at which the logical database offers a line of the database table&lt;br /&gt;The most important event for report programs with an attached logical database is the moment at which the logical database program has read a line from a database table (see Accessing Data Using Logical Databases ). To start a processing block at this event, use the GET statement as follows:&lt;br /&gt;&lt;br /&gt;Syntax&lt;br /&gt;&lt;br /&gt;GET&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[FIELDS ].&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[FIELDS ]. After this statement, you can work with the current line of the database table&lt;br /&gt;&lt;br /&gt;. The data is provided in the table work area&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GET LATE&lt;br /&gt;&lt;br /&gt;Point after processing all tables which are hierarchically subordinate to the database table&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;in the structure of the logical database.&lt;br /&gt;To start a processing block at the moment after the system has processed all database tables of a logical database that are hierarchically inferior to a specific database table, use the event keyword GET as follows:&lt;br /&gt;&lt;br /&gt;Syntax :&lt;br /&gt;&lt;br /&gt;GET&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LATE [FIELDS ]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In analogy to report programs that use only SELECT statements (see table in Comparison of Access Methods ), the processing block of a GET LATE&lt;br /&gt;&lt;br /&gt;statement would appear directly before the ENDSELECT statement in the SELECT loop for the database table&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;END-OF-SELECTION&lt;br /&gt;&lt;br /&gt;Point after processing all lines offered by the logical database.&lt;br /&gt;To define a processing block after the system has read and processed all database tables of a logical database, use the keyword END-OF-SELECTION. The following events occur during the processing of the output list of a report program: Event keyword&lt;br /&gt;&lt;br /&gt;Event&lt;br /&gt;&lt;br /&gt;-----------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;TOP-OF-PAGE&lt;br /&gt;Point during list processing when a new page is started&lt;br /&gt;END-OF-PAGE&lt;br /&gt;&lt;br /&gt;Point during list processing when a page is ended&lt;br /&gt;The following events occur during the display of the output list of a report program: Event keyword&lt;br /&gt;&lt;br /&gt;Event&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--AT LINE-SELECTION&lt;br /&gt;Point at which the user selects a line&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AT USER-COMMAND&lt;br /&gt;Point at which the user presses a function key or enters a command in the&lt;br /&gt;command field.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AT PF&lt;br /&gt;Point at which the user presses the function key with the function code&lt;br /&gt;PF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With the selection screen, ABAP/4 offers an interactive element also for report programs. You can define a selection screen without having to bother about all the details required in dialog programming. The selection screen is always processed directly after a report program is started. The user can enter field values and selection criteria on this screen. The main purpose of the selection screen is to enable the user to control the database selections of the report program. If a report program is started from another ABAP/4 program with the SUBMIT statement (see Calling Reports), the selection screen objects also serve as a data interface, With a selection screen defined in the report program, you can enable the user to ·&lt;br /&gt;assign values to variables with the PARAMETERS statement&lt;br /&gt;·&lt;br /&gt;determine selection criteria with the SELECT-OPTIONS statement&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How do you read selected lines of database table into an internal table in packages of predefined size?.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SELECT * FROM INTO TABLE PACKAGE SIZE .&lt;br /&gt;where 'n' is variable.&lt;br /&gt;Name the WILDCARD characters which are used for comparisions with character strings &amp;amp; numeric strings.&lt;br /&gt;'%' and '_'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How to specify a client for database table processing.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;TABLES SPFLI.&lt;br /&gt;SELECT * FROM SPFLI CLIENT SPECIFIED&lt;br /&gt;WHERE MANDT BETWEEN '001' AND '003'.&lt;br /&gt;...&lt;br /&gt;ENDSELECT.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Activation&lt;/strong&gt; ­ During activation, the runtime object of aggregate object or tables is created. The runtime object is buffered so that the application program can access it quickly. Runtime object has information about the following objects of table - domain ­ data elements ­ field definition ­ table definition&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lock Mechanism &lt;/strong&gt;­ prevents a new database operation being started an existing one has been correctly completed. When conversion is done, lock is created automatically and released only when conversion is successful. Clearing of locks ­ restart adjustment ­ attempt is made to continue conversion at the point of&lt;br /&gt;termination&lt;br /&gt;Cancel adjustment ­ lock entry is simply deleted from table&lt;br /&gt;&lt;br /&gt;Version Management functions ­&lt;br /&gt;&lt;br /&gt;- Canceling changes ­ reset revised version to active version&lt;br /&gt;- Storing changes ­ active version will be temporarily stored in version&lt;br /&gt;Switching changes ­ switch between active and revised versions&lt;br /&gt;&lt;br /&gt;Version catalog ­ list of all existing versions of an object&lt;br /&gt;&lt;br /&gt;- Revised version ­ produced when we edit an existing object&lt;br /&gt;- Active version ­ produced when we activate an object&lt;br /&gt;- Temporary version ­ produced when we copy the active version temporarily to the database with store version functions&lt;br /&gt;- Historical versions ­ created when 1. Correction is created 2 correction is&lt;br /&gt;released&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Table Buffering :&lt;/strong&gt; Possible buffering types&lt;br /&gt;&lt;br /&gt;- full buffering ­ either, whole table or none of the table is located in the buffer (Tables up to 30 kb done in client dependent fully buffered tables)&lt;br /&gt;- Generic buffering ­ generic areas of the table are fully buffered.&lt;br /&gt;- Generic key ­ left justified section of primary key of a table.&lt;br /&gt;Single record buffering ­ records actually being accessed are loaded to buffers, large records where few records are accessed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Internal Tables ? Types ? &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;STANDARD table&lt;/strong&gt; Key access to a standard table uses a linear search. This means that the time required for a search is in linear relation to the number of table entries. You should use index operations to access standard tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SORTED table &lt;/strong&gt;Defines the table as one that is always saved correctly sorted. Key access to a sorted table uses a binary key. If the key is not unique, the system takes the entry with the lowest index. The runtime required for key access is logarithmically related to the number of table entries.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HASHED table&lt;/strong&gt; Defines the table as one that is managed with an internal hash procedure 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 oe INSERT itab within a LOOP) are not allowed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;INDEX table&lt;/strong&gt; A table that can be accessed using an index. Index table is only used to specify the type of generic parameters in a FORM or FUNCTION. That means that you can't create a table of type INDEX. Standard tables and sorted tables are index tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Syntax &lt;/strong&gt;: DATA itab TYPE table type of line type [WITH UNIQUE/NON-UNIQUE KEY ] [Iinitial size n] [WITH HEADER LINE]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are DATA CLUSTERS ?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;You can group any complex internal data objects of an ABAP/4 program together in data clusters and store them temporarily in ABAP/4 memory or for longer periods in databases. You can store data clusters in special databases of the ABAP/4 Dictionary. These databases are known as ABAP/4 cluster databases and have a predefined structure.Storing a data cluster is specific to ABAP/4. Although you can also access&lt;br /&gt;cluster databases using SQL statements, only ABAP/4 statements are able to decode the structure of the stored data cluster.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Describe the functions of the debugger screen.&lt;br /&gt;&lt;br /&gt;- Single step(&lt;strong&gt;F5&lt;/strong&gt;) - Use this option to step through the program statement by statement. This allows you to branch into subroutines and function modules, and to execute these routines step by step as well. Once a subroutine or function module has been processed, control returns to the statement following the CALL FUNCTION or PERFORM statement.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Execute(&lt;strong&gt;F6&lt;/strong&gt;)- Use this option to process a program line by line. All of the statements on the current line are processed in a single step. If you are positioned on a line that calls a subroutine and you choose Execute, the Debugger processes the whole subroutine and then moves on to the line following the subroutine call. This allows you to jump through the statements within the subroutine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Return(&lt;strong&gt;F7&lt;/strong&gt;) - The Debugger returns from a routine to the point at which control returns to the main program. Use this option to return from a subroutine, function module, or called program to the calling program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Continue(&lt;strong&gt;F8&lt;/strong&gt;)- Use this option to process the program up to the next dynamic or static breakpoint or up to the cursor position. If there are no more breakpoints in the program and no cursor has been set, the system exits debugging mode and executes the rest of the program normally.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- &lt;strong&gt;Tables&lt;/strong&gt; - Display the contents of internal tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Problem:&lt;/strong&gt;How to run a program in background?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution&lt;/strong&gt; :Execute the Report In the selection screen :After filling the screen fields press F9. A screen appears requesting U to print the Background Parameters *Enter the output device(Eg HPLJ /SAP2 etc) *In the spool options Uncheck Print immedietly,Uncheck delete after output,and new spool request. Press enter. Another screen appears with heading start time .U can press start immly ,then save Now the Background job is scheduled for the given program .&lt;br /&gt;To View the status of background Job,The transaction code is SM37. Execute from the resulting screen . Job overview --&gt;From the Job list select U'r program and select Spool from the application toolbar Output Controller :List of Spool Requests Select U'r Spool request and click Display icon from the overview screen . U will be displayed with the List. Caution :See to that the list with does not exceed 255 columns ,If it exceeds the extra columns will be truncated in Background&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What are presentation and application servers in SAP?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;A presentation server is actually a program named Sapgui.exe. It is usually installed on a user's workstation. Application server is a set of executables that collectively interpret the ABAP/4 programs and manage the input &amp;amp; output for them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;In an ABAP/4 program how do you access data that exists on a presentation server v/s on an application server?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;For presentation server use UPLOAD or WS_UPLOAD function modules. For application server use OPEN DATASET, READ DATASET and CLOSE DATASET commands.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Describe the syntax and function of the AUTHORITY CHECK command?&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Ans :- AUTHORITY ­ CHECK OBJECT&lt;br /&gt;&lt;br /&gt;ID FIELD ID FIELD ... IF SY-SUBRC NE 0. The AUTHORITY-CHECK checks whether a user has the appropriate authorization to execute a particular activity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-2037020758640738796?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/2037020758640738796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=2037020758640738796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2037020758640738796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2037020758640738796'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/sap-abap-logical-database-interview.html' title='SAP ABAP LOGICAL DATABASE Interview Questions'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-1933463072408260764</id><published>2008-07-25T19:34:00.001+05:30</published><updated>2008-07-25T19:34:43.488+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>SAP ABAP Dialog Programming FAQ</title><content type='html'>&lt;strong&gt;1) Why do I need to do dialog programming? &lt;/strong&gt;&lt;br /&gt;Ans: to have your own customized screens and processing&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) What does dialog programming consist of ? &lt;/strong&gt;&lt;br /&gt;Ans: Screens with their corresponding processing code, Menu , module pool program&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3) Difference between the normal report / program and Module pool program?&lt;br /&gt;&lt;/strong&gt;Ans: Normal report can be run straight away by executing it and useually has a selection criteria – Attributes : 1 online program&lt;br /&gt;Module pool program cannot be run straight away. It first needs to display a screen – attributes : M module pool program&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4) What is PBO and PAI? &lt;/strong&gt;&lt;br /&gt;Ans: Process before output. Code that is executed prior to the display of a screen.&lt;br /&gt;Process after input. Code that is executed after a button on the screen has been pressed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5) How can I identify which button is pressed?&lt;br /&gt;&lt;/strong&gt;Ans: “ fcode” attributes of the button. Define the okcode value of the screen (type sy-ucomm)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6) What is the GUI interface to the program? &lt;/strong&gt;&lt;br /&gt;Ans: The menu bar where you define the ok-codes of the buttons and function keys for the screen. You typically code SAVE, BACK, CANC, EXIT and then more specific codes. CANC (leave to screen 0) allows you to get out of the current screen.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7) What does PAI and Pbo contain by default?&lt;br /&gt;&lt;/strong&gt;Ans: PBO - MODULE STATUS_0100 - Key / button definitions&lt;br /&gt;PAI - * MODULE USER_COMMAND_0100 - How do you handle thecode behind the button that was pressed&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8) If we do not have / give menu bar than what will menu bar have by default?&lt;br /&gt;&lt;/strong&gt;Ans: Not much -&gt; system , help&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9) How many PBO and PAI modules are allowed for a screen? &lt;/strong&gt;&lt;br /&gt;Ans: one PBO and one PAI&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10) In the menu bar can you associate a function key to a button?&lt;br /&gt;&lt;/strong&gt;Ans: yes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-1933463072408260764?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/1933463072408260764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=1933463072408260764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1933463072408260764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1933463072408260764'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/sap-abap-dialog-programming-faq.html' title='SAP ABAP Dialog Programming FAQ'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-7728451701238625972</id><published>2008-07-25T19:33:00.002+05:30</published><updated>2008-07-25T19:34:17.184+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>More than 100 ABAP Interview Faq's</title><content type='html'>&lt;p&gt;&lt;b&gt;1. What is the typical structure of an ABAP/4 program? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;HEADER ,BODY,FOOTER. &lt;/p&gt;&lt;p&gt;&lt;b&gt;2. What are field symbols and field groups.? &lt;/b&gt;&lt;br /&gt; &lt;b&gt;Have you used "component idx of structure" clause with field groups? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;    &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt; Field symbols:-  &lt;/p&gt;&lt;p&gt;    Field groups :- &lt;/p&gt;&lt;p&gt;&lt;b&gt;Can any body explain me what is field group?&lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Field groups are groups similar fields together into one name. Field group works in conjuction with    &lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;INSERT f1 f2 INTO fg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;EXTRACT fg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;SORT BY fg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;LOOP ... ENDLOOP&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;INSERT f1 f2 INTO fg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;---------------------&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;The insert statement is used to create a field group dynamically by inserting the field into it. Only global data fields can be inserted and not local data fields eg : in form modules.&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;EXTRACT fg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;----------  &lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;This will combine all the fields in the fieldgroup and write them to a sequential dataset as a single record.&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;SORT BY fg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;----------&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Sorting of sequential dataset by field group.&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;LOOP AND ENDLOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;---------------&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;LOOP.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  AT ***&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;......&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;....&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ENDAT.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  AT ***&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;.....&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;....&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ENDAT.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;ENDLOOP.                          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*-- Chinmaya&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;3. What should be the approach for writing a BDC program? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;STEP 1: CONVERTING THE LEGACY SYSTEM DATA TO A FLAT FILE to internal table CALLED "CONVERSION".&lt;br /&gt;STEP 2: TRANSFERING THE FLAT FILE INTO SAP SYSTEM CALLED "SAP DATA TRANSFER".&lt;br /&gt;STEP 3: DEPENDING UPON THE BDC TYPE i)call transaction(Write the program explicity)&lt;br /&gt;      ii) create sessions (sessions are created and processed.if success data will transfer). &lt;/p&gt;&lt;p&gt;&lt;b&gt;4. What is a batch input session? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;BATCH INPUT SESSION is an intermediate step between internal table and database table.&lt;br /&gt;Data along with the action is stored in session ie data for screen fields, to which screen it is passed,program name behind it, and how next screen is processed. &lt;/p&gt;&lt;p&gt;&lt;b&gt;5. What is the alternative to batch input session? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Call transaction. &lt;/p&gt;&lt;p&gt;&lt;b&gt;6. A situation: An ABAP program creates a batch input session. &lt;/b&gt;&lt;br /&gt;&lt;b&gt;    We need to submit the program and the batch session in back ground. How to do it? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;  go to SM36 and create background job by giving&lt;br /&gt;  job name,job class and job steps (JOB SCHEDULING)  &lt;/p&gt;&lt;p&gt;&lt;b&gt;8. What are the problems in processing batch input sessions? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;  How is batch input process different from processing online? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;PROBLEMS:-&lt;br /&gt;i) If the user forgets to opt for keep session then the session will be automatically removed from the session queue(log remains). However if session is processed we may delete it manually.&lt;br /&gt;ii)if session processing fails data will not be transferred to SAP database table. &lt;/p&gt;&lt;p&gt;&lt;b&gt;10. What are the different types of data dictionary objects? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;tables, structures, views, domains, data elements, lock objects, Matchcode objects. &lt;/p&gt;&lt;p&gt;&lt;b&gt;11. How many types of tables exists and what are they in data dictionary? &lt;/b&gt;&lt;br /&gt;ans :-&lt;br /&gt;4 types of tables&lt;br /&gt;i)Transparent tables - Exists with the same structure both in dictionary as well as in database exactly with the same data and fields. Both Opensql and Nativesql can be used. &lt;/p&gt;&lt;p&gt;ii)Pool tables &amp;amp; iii)Cluster tables -&lt;br /&gt;These are logical tables that are arranged as records of transparent tables.one cannot use native sql on these tables&lt;br /&gt;(only opensql).They are not managable directly using database system tools. &lt;/p&gt;&lt;p&gt;iv)Internal tables - . &lt;/p&gt;&lt;p&gt;&lt;b&gt;12. What is the step by step process to create a table in data dictionary? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;step 1: creating domains(data type,field length,range).&lt;br /&gt;step 2: creating data elements(properties and type for a table&lt;br /&gt;field).&lt;br /&gt;step 3: creating tables(SE11). &lt;/p&gt;&lt;p&gt;&lt;b&gt;13. Can a transparent table exist in data dictionary but not in the data base physically?&lt;/b&gt;&lt;br /&gt;ANS:- NO.&lt;br /&gt;TRANSPARENT TABLE DO EXIST WITH THE SAME STRUCTURE BOTH IN THE DICTIONARY AS WELL AS IN THE DATABASE,EXACTLY WITH THE SAME DATA AND FIELDS. &lt;/p&gt;&lt;p&gt;&lt;b&gt;14. What are the domains and data elements? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;DOMAINS : FORMAL DEFINITION OF THE DATA TYPES.THEY SET ATTRIBUTES SUCH  AS DATA TYPE,LENGTH,RANGE.&lt;br /&gt;DATA ELEMENT : A FIELD IN R/3 SYSTEM IS A DATA ELEMENT. &lt;/p&gt;&lt;p&gt;&lt;b&gt;15. Can you create a table with fields not referring to data elements? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;YES.  eg:- ITAB LIKE SPFLI.here we are referening to a data object(SPFLI) not data element. &lt;/p&gt;&lt;p&gt;&lt;b&gt;16. What is the advantage of structures? How do you use them in the ABAP programs? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Adv:- GLOBAL EXISTANCE(these could be used by any other program without creating it again).  &lt;/p&gt;&lt;p&gt;&lt;b&gt;17. What does an extract statement do in the ABAP program? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Once you have declared the possible record types as field groups and defined their structure, you can fill the extract dataset using the following statements:&lt;br /&gt;EXTRACT &lt;fg&gt;. &lt;/fg&gt;&lt;/p&gt;&lt;p&gt;When the first EXTRACT statement occurs in a program, the system creates the extract dataset and adds the first extract record to it. In each subsequent EXTRACT statement, the new extract record is added to the dataset &lt;/p&gt;&lt;p&gt;EXTRACT HEADER. &lt;/p&gt;&lt;p&gt;When you extract the data, the record is filled with the current values of the corresponding fields. &lt;/p&gt;&lt;p&gt;As soon as the system has processed the first EXTRACT statement for a field group &lt;fg&gt;, the structure of the corresponding extract record in the extract dataset is fixed. You can no longer insert new fields into the field groups &lt;fg&gt; and HEADER. If you try to modify one of the field groups afterwards and use it in another EXTRACT statement, a runtime error occurs. &lt;/fg&gt;&lt;/fg&gt;&lt;/p&gt;&lt;p&gt;By processing EXTRACT statements several times using different field groups, you fill the extract dataset with records of different length and structure. Since you can modify field groups dynamically up to their first usage in an EXTRACT statement, extract datasets provide the advantage that you need not determine the structure at the beginning of the program. &lt;/p&gt;&lt;p&gt;&lt;b&gt;18. What is a collect statement? How is it different from append? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;If an entry with the same key already exists, the COLLECT statement does not append a new line, but adds the contents of the numeric fields in the work area to the contents of the numeric fields in the existing entry. &lt;/p&gt;&lt;p&gt;&lt;b&gt;19. What is open sql vs native sql? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;span style="color: rgb(153, 0, 0);"&gt;by Madhukar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Open SQL , native SQL are the interfaces to create the database applicatons.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Open SQL is consistant across different types of existing Databases.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Native SQL is the database language specific to database.Its API is specific to the databse.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Open SQL API is consistent across all vendors &lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;20. What does an EXEC SQL stmt do in ABAP? What is the disadvantage of using it? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;21. What is the meaning of ABAP/4 editor integrated with ABAP/4 data dictionary?&lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;22. What are the events in ABAP/4 language? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Initialization, At selection-screen,Start-of-selection,end-of-selection,top-of-page,end-of-page, At line-selection,At user-command,At PF,Get,At New,At LAST,AT END, AT FIRST. &lt;/p&gt;&lt;p&gt;&lt;b&gt;23. What is an interactive report? &lt;/b&gt;&lt;br /&gt;What is the obvious diff of such report compared with classical type reports?&lt;br /&gt;ANS:-&lt;br /&gt;An Interactive report is a dynamic drill down report that produces the list on users choice.&lt;br /&gt;diff:-&lt;br /&gt;a)  THE LIST PRODUCED BY CLASSICAL REPORT DOESN'T allow user to interact with the system&lt;br /&gt; the list produced by interactive report allows the user to interact with the system.&lt;br /&gt;b)  ONCE A CLASSICAL REPORT EXECUTED USER LOOSES CONTROL.IR USER HAS CONTROL.&lt;br /&gt;c)  IN CLASSICAL REPORT DRILLING IS NOT POSSIBLE.IN INTERACTIVE DRILLING IS POSSIBLE. &lt;/p&gt;&lt;p&gt;&lt;b&gt;24. What is a drill down report? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Its an Interactive report where in the user can get more relavent data by selecting explicitly. &lt;/p&gt;&lt;p&gt;&lt;b&gt;25. How do you write a function module in SAP? describe. &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;creating function module:-&lt;br /&gt;called program - se37-creating funcgrp,funcmodule by assigning attributes,importing,exporting,tables,exceptions.&lt;br /&gt;calling program - SE38-in pgm click pattern and write function name- provide export,import,tables,exception values. &lt;/p&gt;&lt;p&gt;&lt;b&gt;26. What are the exceptions in function module? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;COMMUNICATION_FAILURE&lt;br /&gt;SYSTEM_FAILURE  &lt;/p&gt;&lt;p&gt;&lt;b&gt;27. What is a function group? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;GROUP OF ALL RELATED FUNCTIONS.  &lt;/p&gt;&lt;p&gt;&lt;b&gt;28. How are the date and time field values stored in SAP? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;DD.MM.YYYY.  HH:MM:SS  &lt;/p&gt;&lt;p&gt;&lt;b&gt;30. Name a few data dictionary objects? //rep//&lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;TABLES,VIEWS,STRUCTURES,LOCK OBJECTS,MATCHCODE OBJECTS. &lt;/p&gt;&lt;p&gt;&lt;b&gt;31. What happens when a table is activated in DD? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;It is available for any insertion,modification and updation of records by any user. &lt;/p&gt;&lt;p&gt;&lt;b&gt;32. What is a check table and what is a value table? &lt;/b&gt;&lt;br /&gt;Check table will be at field level checking.&lt;br /&gt;Value table will be at domain level checking ex: scarr table is check table for carrid. &lt;/p&gt;&lt;p&gt;&lt;b&gt;33. What are match codes? describe? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;It is a similar to table index that gives list of possible values for either primary keys or non-primary keys. &lt;/p&gt;&lt;p&gt;&lt;b&gt;34. What transactions do you use for data analysis? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;35. What is table maintenance generator? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;36. What are ranges? What are number ranges? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt; max,min values provided in selection screens. &lt;/p&gt;&lt;p&gt;&lt;b&gt;37. What are select options and what is the diff from parameters? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;select options provide ranges where as parameters do not.  &lt;/p&gt;&lt;p&gt;SELECT-OPTIONS declares an internal table which is automatically filled with values or ranges&lt;br /&gt;of values entered by the end user. For each SELECT-OPTIONS , the system creates a selection table. &lt;/p&gt;&lt;p&gt;SELECT-OPTIONS &lt;sel&gt; FOR &lt;field&gt;. &lt;/field&gt;&lt;/sel&gt;&lt;/p&gt;&lt;p&gt;A selection table is an internal table with fields SIGN, OPTION, LOW and HIGH.&lt;br /&gt;The type of LOW and HIGH is the same as that of &lt;field&gt;.&lt;br /&gt;The SIGN field can take the following values: I Inclusive (should apply) E Exclusive (should not apply)&lt;br /&gt;The OPTION field can take the following values: EQ Equal GT Greater than NE Not equal BT Between LE Less&lt;br /&gt;than or equal NB Not between LT Less than CP Contains pattern GE Greater than or equal NP No pattern.&lt;br /&gt;diff:-&lt;br /&gt;PARAMETERS allow users to enter a single value into an internal field within a report.&lt;br /&gt;SELECT-OPTIONS allow users to fill an internal table with a range of values. &lt;/field&gt;&lt;/p&gt;&lt;p&gt;For each PARAMETERS or SELECT-OPTIONS statement you should define text elements by choosing&lt;br /&gt;Goto - Text elements - Selection texts - Change.  &lt;/p&gt;&lt;p&gt;Eg:- Parameters name(30).&lt;br /&gt;when the user executes the ABAP/4 program,an input field for 'name' will appear on the selection screen.You can change the comments on the left side of the input fields by using text elements as described in Selection Texts. &lt;/p&gt;&lt;p&gt;&lt;b&gt;38. How do you validate the selection criteria of a report? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;And how do you display initial values in a selection screen? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;validate :- by using match code objects.&lt;br /&gt;display :- Parameters &lt;name&gt; default 'xxx'.&lt;br /&gt;            select-options &lt;name&gt; for spfli-carrid. &lt;/name&gt;&lt;/name&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;39. What are selection texts? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;40. What is CTS and what do you know about it? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;The Change and Transport System (CTS) is a tool that helps you to organize development projects in the ABAP Workbench and in Customizing, and then transport the changes between the SAP Systems and clients in your system landscape.&lt;br /&gt;This documentation provides you with an overview of how to manage changes with the CTS and essential information on setting up your system and client landscape and deciding on a transport strategy. Read and follow this documentation when planning your development project.&lt;br /&gt;For practical information on working with the Change and Transport System, see Change and Transport Organizer and Transport Management System. &lt;/p&gt;&lt;p&gt;&lt;b&gt;41. When a program is created and need to be transported to prodn does selection texts always go with it? if not how do you make sure? Can you change the CTS entries? How do you do it? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;42. What is the client concept in SAP? What is the meaning of client independent? &lt;/b&gt;&lt;br /&gt;ANS:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;43. Are programs client dependent? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt; Yes.Group of users can access these programs with a client no. &lt;/p&gt;&lt;p&gt;&lt;b&gt;44. Name a few system global variables you can use in ABAP programs? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;SY-SUBRC,SY-DBCNT,SY-LILLI,SY-DATUM,SY-UZEIT,SY-UCOMM,SY-TABIX.....&lt;br /&gt;SY-LILLI IS ABSOLUTE NO OF LINES FROM WHICH THE EVENT WAS TRIGGERED. &lt;/p&gt;&lt;p&gt;&lt;b&gt;45. What are internal tables? How do you get the number of lines in an internal table? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;How to use a specific number occurs statement? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;i)It is a standard data type object which exists only during the runtime of the program.&lt;br /&gt;They are used to perform table calculations on subsets of database tables and for re-organising the contents of database tables according to users need.&lt;br /&gt;ii)using SY-DBCNT.&lt;br /&gt;iii)The number of memory allocations the system need to allocate for the next record population. &lt;/p&gt;&lt;p&gt;&lt;b&gt;46. How do you take care of performance issues in your ABAP programs? &lt;/b&gt;&lt;br /&gt;Performance of ABAPs can be improved by minimizing the amount of data to be transferred.&lt;br /&gt;The data set must be transferred through the network to the applications, so reducing the amount OF time and also reduces the network traffic. &lt;/p&gt;&lt;p&gt;Some measures that can be taken are:  &lt;/p&gt;&lt;p&gt;- Use views defined in the ABAP/4  DDIC (also has the advantage of better reusability).&lt;br /&gt;- Use field list (SELECT clause) rather than SELECT *.&lt;br /&gt;- Range tables should be avoided (IN operator)&lt;br /&gt;- Avoid nested SELECTS.  &lt;/p&gt;&lt;p&gt;i)system tools &lt;/p&gt;&lt;p&gt;ii)field symbols and field groups.&lt;br /&gt;ans:-&lt;br /&gt;Field Symbols : Field symbols are placeholders for existing fields. A Field Symbol does not physically reserve space for a field,but points to a field which is not known until runtime of the program.&lt;br /&gt;eg:-  FIELD-SYMBOL &lt;fs&gt; [&lt;type&gt;].  &lt;/type&gt;&lt;/fs&gt;&lt;/p&gt;&lt;p&gt;Field groups : A field group combines several fields under one name.At runtime,the INSERT command is used to define which data fields are assigned to which field group.&lt;br /&gt;There should always be a HEADER field group that defines how the extracted data will be sorted,the data is sorted by the fields grouped under the HEADER field group. &lt;/p&gt;&lt;p&gt;&lt;b&gt;47. What are datasets? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;The sequential files(ON APPLICATION SERVER) are called datasets. They are used for file handling in SAP. &lt;/p&gt;&lt;p&gt;&lt;b&gt;48. How to find the return code of a statement in ABAP programs? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Using function modules. &lt;/p&gt;&lt;p&gt;&lt;b&gt;49. What are interface/conversion programs in SAP? &lt;/b&gt;&lt;br /&gt;ANS :&lt;br /&gt;CONVERSION : LEGACY SYSTEM TO FLAT FILE.&lt;br /&gt;INTERFACE  : FLAT FILE TO SAP SYSTEM. &lt;/p&gt;&lt;p&gt;&lt;b&gt;50. Have you used SAP supplied programs to load master data? &lt;/b&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;51. What are the techniques involved in using SAP supplied programs? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Do you prefer to write your own programs to load master data? Why? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;52. What are logical databases? What are the advantages/disadvantages of logical databases? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;To read data from a database tables we use logical database.&lt;br /&gt;A logical database provides read-only access to a group of related tables to an ABAP/4 program. &lt;/p&gt;&lt;p&gt;adv:-&lt;br /&gt;The programmer need not worry about the primary key for each table.Because Logical database knows how the different tables relate to each other,and can issue the SELECT command with proper where clause to retrieve the data.&lt;br /&gt;i)An easy-to-use standard user interface.&lt;br /&gt;ii)check functions which check that user input is complete,correct,and plausible.&lt;br /&gt;iii)meaningful data selection.&lt;br /&gt;iv)central authorization checks for database accesses.&lt;br /&gt;v)good read access performance while retaining the hierarchical data view determined by the application logic.  &lt;/p&gt;&lt;p&gt;disadv:-&lt;br /&gt;i)If you donot specify a logical database in the program attributes,the GET events never occur.&lt;br /&gt;ii)There is no ENDGET command,so the code block associated with an event ends with the next event&lt;br /&gt;statement (such as another GET or an END-OF-SELECTION).  &lt;/p&gt;&lt;p&gt;&lt;b&gt;53. What specific statements do you using when writing a drill down report? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;AT LINE-SELECTION,AT USER-COMMAND,AT PF. &lt;/p&gt;&lt;p&gt;&lt;b&gt;54. What are different tools to report data in SAP? What all have you used? &lt;/b&gt;&lt;br /&gt;ans:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;55. What are the advantages and disadvantages of ABAP/4 query tool? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;56. What are the functional areas? User groups? and how does ABAP/4 query work in relation to these? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;57. Is a logical database a requirement/must to write an ABAP/4 query? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;59. What are Change header/detail tables? Have you used them? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;60. What do you do when the system crashes in the middle of a BDC batch session? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;we will look into the error log file (SM35). &lt;/p&gt;&lt;p&gt;&lt;b&gt;61. What do you do with errors in BDC batch sessions? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;We look into the list of incorrect session and process it again. To correct incorrect session we analyize the session to determine which screen and value produced the error.For small errors in data we correct them interactively otherwise&lt;br /&gt;modify batch input program that has generated the session or many times even the datafile. &lt;/p&gt;&lt;p&gt;&lt;b&gt;62. How do you set up background jobs in SAP? What are the steps? What are the event driven batch jobs? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;go to SM36 and create background job by giving job name,job class and job steps(JOB SCHEDULING) &lt;/p&gt;&lt;p&gt;&lt;b&gt;63. Is it possible to run host command from SAP environment? How do you run? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;64. What kind of financial periods exist in SAP? What is the relavent table for that? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;65. Does SAP handle multiple currencies? Multiple languages? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;Yes. &lt;/p&gt;&lt;p&gt;&lt;b&gt;66. What is a currency factoring technique? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;67. How do you document ABAP/4 programs? Do you use program documentation menu option? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;68. What is SAPscript and layout set? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;The tool which is used to create layout set is called SAPscript. Layout set is a design document. &lt;/p&gt;&lt;p&gt;&lt;b&gt;69. What are the ABAP/4 commands that link to a layout set? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;control commands,system commands, &lt;/p&gt;&lt;p&gt;&lt;b&gt;70. What is output determination? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;71. What are IDOCs? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;IDOCs are intermediate documents to hold the messages as a container. &lt;/p&gt;&lt;p&gt;&lt;b&gt;72. What are screen painter? menu painter? Gui status? ..etc. &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;dynpro - flow logic + screens.&lt;br /&gt;menu painter -&lt;br /&gt;GUI Status - It is subset of the interface elements(title bar,menu bar,standard tool bar,push buttons) used for a certain screen.&lt;br /&gt;The status comprises those elements that are currently needed by the transaction. &lt;/p&gt;&lt;p&gt;&lt;b&gt;73. What is screen flow logic? What are the sections in it? Explain PAI and PBO. &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;The control statements that control the screen flow.&lt;br /&gt;PBO - This event is triggered before the screen is displayed.&lt;br /&gt;PAI - This event is responsible for processing of screen after the user enters the data and clicks the pushbutton. &lt;/p&gt;&lt;p&gt;&lt;b&gt;74. Overall how do you write transaction programs in SAP? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;Create program-SE93-create transcode-Run it from command field. &lt;/p&gt;&lt;p&gt;&lt;b&gt;75. Does SAP has a GUI screen painter or not? If yes what operating systems is it available on? What is the other type of screen painter called? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;76. What are step loops? How do you program pagedown pageup in step loops? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;step loops are repeated blocks of field in a screen. &lt;/p&gt;&lt;p&gt;&lt;b&gt;77. Is ABAP a GUI language? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Yes.&lt;br /&gt;ABAP IS AN EVENT DRIVEN LANGUAGE. &lt;/p&gt;&lt;p&gt;&lt;b&gt;78. Normally how many and what files get created when a transaction program is written? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;What is the XXXXXTOP program? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;ABAP/4 program.&lt;br /&gt;DYNPRO &lt;/p&gt;&lt;p&gt;&lt;b&gt;79. What are the include programs? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;When the same sequence of statements in several programs are to be written repeadly they are coded in include programs (External programs) and are included in ABAP/4 programs. &lt;/p&gt;&lt;p&gt;&lt;b&gt;80. Can you call a subroutine of one program from another program? &lt;/b&gt;&lt;br /&gt;ans:-  Yes- only external subroutines Using 'SUBMIT' statement. &lt;/p&gt;&lt;p&gt;&lt;b&gt;81. What are user exits? What is involved in writing them? What precations are needed? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;82. What are RFCs? How do you write RFCs on SAP side? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;83. What are the general naming conventions of ABAP programs? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;Should start with Y or Z. &lt;/p&gt;&lt;p&gt;&lt;b&gt;84. How do you find if a logical database exists for your program requrements? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;SLDB-F4. &lt;/p&gt;&lt;p&gt;&lt;b&gt;85. How do you find the tables to report from when the user just tell you the transaction he uses? And all the underlying data is from SAP structures? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;Transcode is entered in command field to open the table.Utilities-Table contents-display. &lt;/p&gt;&lt;p&gt;&lt;b&gt;86. How do you find the menu path for a given transaction in SAP? &lt;/b&gt;&lt;br /&gt;ans:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;87. What are the different modules of SAP? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;FI,CO,SD,MM,PP,HR. &lt;/p&gt;&lt;p&gt;&lt;b&gt;89. How do you get help in ABAP? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;HELP-SAP LIBRARY,by pressing F1 on a keyword. &lt;/p&gt;&lt;p&gt;&lt;b&gt;90. What are different ABAP/4 editors? What are the differences? &lt;/b&gt;&lt;br /&gt;ans:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;91. What are the different elements in layout sets? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;PAGES,Page windows,Header,Paragraph,Character String,Windows. &lt;/p&gt;&lt;p&gt;&lt;b&gt;92. Can you use if then else, perform ..etc statements in sap script? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;yes. &lt;/p&gt;&lt;p&gt;&lt;b&gt;93. What type of variables normally used in sap script to output data? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;94. How do you number pages in sapscript layout outputs? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;95. What takes most time in SAP script programming? &lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;LAYOUT DESIGN AND LOGO INSERTION. &lt;/p&gt;&lt;p&gt;&lt;b&gt;96. How do you use tab sets in layout sets? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;97. How do you backup sapscript layout sets? Can you download and upload? How? &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;98. What are presentation and application servers in SAP?&lt;/b&gt;&lt;br /&gt;ANS:-&lt;br /&gt;The application layer of an R/3 System is made up of the application servers and the message server. Application programs in an R/3 System are run on application servers. The application servers communicate with the presentation components, the database, and also with each other, using the message server. &lt;/p&gt;&lt;p&gt;&lt;b&gt;99. In an ABAP/4 program how do you access data that exists on a presentation server vs on an application server? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;i)using loop statements.&lt;br /&gt;ii)flat  &lt;/p&gt;&lt;p&gt;&lt;b&gt;100. What are different data types in ABAP/4? &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;  Elementary -&lt;br /&gt;       predefined C,D,F,I,N,P,T,X.&lt;br /&gt;       userdefined TYPES.&lt;br /&gt;ex: see in intel book page no 35/65 &lt;/p&gt;&lt;p&gt;     Structured -&lt;br /&gt;      predefined    TABLES.&lt;br /&gt;      userdefined Field Strings and internal tables. &lt;/p&gt;&lt;p&gt;&lt;b&gt;101. What is difference between session method and Call Transaction? &lt;/b&gt;&lt;br /&gt;ans:- &lt;/p&gt;&lt;p&gt;&lt;b&gt;102. Setting up a BDC program where you find information from? &lt;/b&gt;&lt;br /&gt;ans:-  &lt;/p&gt;&lt;p&gt;&lt;b&gt;103. What has to be done to the packed fields before submitting to a BDC session. &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;  fields converted into character type. &lt;/p&gt;&lt;p&gt;&lt;b&gt;104. What is the structure of a BDC sessions. &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;   BDCDATA (standard structure). &lt;/p&gt;&lt;p&gt;&lt;b&gt;105. What are the fields in a BDC_Tab Table. &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;   program,dynpro,dynbegin,fnam,fval. &lt;/p&gt;&lt;p&gt;&lt;b&gt;106. What do you define in the domain and data element. &lt;/b&gt;&lt;br /&gt;Technical details like  &lt;/p&gt;&lt;p&gt;&lt;b&gt;107. What is the difference between a pool table and a transparent table and how they are stored at the database level. &lt;/b&gt;&lt;br /&gt;ans:-&lt;br /&gt;ii)Pool tables is a logical representation of transparent tables .Hence no existence at database level. Where as transparent tables are physical tables and exist at database level. &lt;/p&gt;&lt;p&gt;&lt;b&gt;108. What is cardinality? &lt;/b&gt;&lt;br /&gt;For cardinality one out of two (domain or data element) should be the same for Ztest1 and Ztest2 tables. M:N&lt;br /&gt;Cardinality specifies the number of dependent(Target) and independent (source) entities which can be in a relationship. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-7728451701238625972?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/7728451701238625972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=7728451701238625972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7728451701238625972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7728451701238625972'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/more-than-100-abap-interview-faqs.html' title='More than 100 ABAP Interview Faq&apos;s'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-1822520000833918900</id><published>2008-07-25T19:33:00.001+05:30</published><updated>2008-07-25T19:33:25.311+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>SAP Workflow Items Sent To Everyone If Agent Not Determined</title><content type='html'>&lt;p&gt;&lt;b&gt;We have this problem,whenever a workitem does not determine a agent, it  send the workitem to everyone. &lt;/b&gt;&lt;br /&gt;&lt;b&gt;This is causing lot of problems. &lt;/b&gt;   &lt;/p&gt;&lt;p&gt;This is generally a two part issue:   &lt;/p&gt;&lt;p&gt;1. At design time, you have defined the task as a 'general task' under the  agent assignment.&lt;br /&gt;2. At runtime, when the agent determination routine tries to identify the agent, it cannot. So, because it is a general task, the task is sent to everyone. &lt;/p&gt;&lt;p&gt;To resolve:&lt;br /&gt;1. Instead of making it a general task, try to identify an actual list of 'possible' agents. This could be by positions, userIDs, Org Units, etc. Make this list your possible agents instead of defining it as a general task. &lt;/p&gt;&lt;p&gt;or   &lt;/p&gt;&lt;p&gt;2. Make sure your logic for determining the agent always return an agent. If you are using a custom rule, then at the end of the logic check to see if an agent was determined and if not, identify a default agent (like a WF admin or business analyst) that can receive the item and investigate who to properly route it to. &lt;/p&gt;&lt;p&gt;FYI... if you go with option 1 and at runtime the logic fails to determine an agent, then an error message is sent to the WF admin instead of the task being sent to everyone. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Which Agent did execute the task in the Inbox?&lt;/b&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;Which FW system field does contain the agent, whom has executed a task in  her inbox ? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;If one of the agents executes task number 1 in her inbox, which system field do I have to use in task number 2 to find which agents did the thing ? &lt;/b&gt;  &lt;/p&gt;&lt;p&gt;Make a workflow container for Actual Agent of type WFSYST-ACT_AGENT   &lt;/p&gt;&lt;p&gt;and then in task 1 do the binding from task container to workflow container  for actual agent.   &lt;/p&gt;&lt;p&gt;This container then you can use in your next task to see who was the previous  agent  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-1822520000833918900?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/1822520000833918900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=1822520000833918900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1822520000833918900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1822520000833918900'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/sap-workflow-items-sent-to-everyone-if.html' title='SAP Workflow Items Sent To Everyone If Agent Not Determined'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-8010675116544031087</id><published>2008-07-25T19:32:00.002+05:30</published><updated>2008-07-25T19:33:00.124+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>How to delete an editor lock in sap?</title><content type='html'>&lt;p&gt;&lt;b&gt;A user created the ABAP program and set the "editor lock" checked-ON (in Program Attributes screen); which makes that user the only person to make any changes to the program. &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;The same user left the project a year ago, and now there is a need to change the program. How can we do that? Because if someone else tries to modify it, the system doesn't allow him/her saying that "the program is locked from any changes. Only original user can change it". &lt;/b&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;How do we resolve it? I know the checked-ON indicator is stored in TRDIR table, but that table cann't be maintained manually. Please suggest what to do?&lt;/b&gt; &lt;/p&gt;&lt;p&gt;The lock in an ABAP program is defined in table TRDIR, field EDTX. You must change the value 'X' by ' '.  &lt;/p&gt;&lt;p&gt;Use the following example program to unlock your program editor lock: &lt;/p&gt;&lt;pre&gt;REPORT sy-repid.&lt;br /&gt;TABLES: TRDIR.&lt;br /&gt;&lt;br /&gt;PARAMETERS: P_PROG LIKE TRDIR-NAME OBLIGATORY.&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;SELECT SINGLE * FROM TRDIR WHERE NAME = P_PROG.&lt;br /&gt;IF SY-SUBRC = 0.&lt;br /&gt; IF TRDIR-EDTX = 'X'.&lt;br /&gt;   MOVE ' ' TO TRDIR-EDTX.&lt;br /&gt;   MODIFY TRDIR.&lt;br /&gt;   WRITE: /'Editor Lock was removed from', P_PROG.&lt;br /&gt; ELSE.&lt;br /&gt;   WRITE: /'Program', P_PROG, 'does not have an Editor Lock'.&lt;br /&gt; ENDIF.&lt;br /&gt;ELSE.&lt;br /&gt; WRITE: /'No match found for program', P_PROG.&lt;br /&gt;ENDIF.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-8010675116544031087?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/8010675116544031087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=8010675116544031087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8010675116544031087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/8010675116544031087'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/how-to-delete-editor-lock-in-sap.html' title='How to delete an editor lock in sap?'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-7199099352770678767</id><published>2008-07-25T19:32:00.001+05:30</published><updated>2008-07-25T19:32:30.738+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>How can I insert my company logo in the sap abap standard report?</title><content type='html'>&lt;p&gt;It is not possible to print logo in the ordinary report, but it can done through ALV. &lt;/p&gt;&lt;p&gt;Write  the code in Top-of-page event in ALV. &lt;/p&gt;&lt;p&gt;The following is the code for inserting the logo in ALV. &lt;/p&gt;&lt;p&gt;FORM TOP_OF_PAGE. &lt;/p&gt;&lt;p&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;br /&gt;    EXPORTING&lt;br /&gt;        I_LOGO             = 'ENJOYSAP_LOGO'&lt;br /&gt;         IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE. &lt;/p&gt;&lt;p&gt;ENDFORM. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-7199099352770678767?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/7199099352770678767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=7199099352770678767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7199099352770678767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7199099352770678767'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/how-can-i-insert-my-company-logo-in-sap.html' title='How can I insert my company logo in the sap abap standard report?'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-3171427894363184600</id><published>2008-07-25T19:31:00.002+05:30</published><updated>2008-07-25T19:32:06.378+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>sap abap program for Issuing an Unix Command from ABAP</title><content type='html'>&lt;p&gt;* Issuing an Unix Command from ABAP&lt;br /&gt;*&lt;br /&gt;REPORT ZUNIX. &lt;/p&gt;&lt;p&gt;DATA  UNIXCMD(50) TYPE C.&lt;br /&gt;DATA: BEGIN OF ITAB occurs 0,&lt;br /&gt;             LINE(200),&lt;br /&gt;          end of ITAB. &lt;/p&gt;&lt;p&gt;PARAMETERS UNIXCOMM LIKE UNIXCMD&lt;br /&gt;                 DEFAULT 'ls -ls /usr/sap/trans/data' LOWER CASE. &lt;/p&gt;&lt;p&gt;* Executing the system commands witin ABAP. &lt;/p&gt;&lt;p&gt;call 'SYSTEM' id 'COMMAND' field  UNIXCOMM&lt;br /&gt;    id 'TAB'   field  ITAB-*SYS*. &lt;/p&gt;&lt;p&gt;EDITOR-CALL FOR ITAB DISPLAY-MODE.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-3171427894363184600?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/3171427894363184600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=3171427894363184600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3171427894363184600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3171427894363184600'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/sap-abap-program-for-issuing-unix.html' title='sap abap program for Issuing an Unix Command from ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-2318639046070926391</id><published>2008-07-25T19:31:00.001+05:30</published><updated>2008-07-25T19:31:32.591+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>Difference for Stock Transfer and Transfer Posting in sap</title><content type='html'>&lt;p&gt;&lt;b&gt;Questions: Tell me the difference between transfer postings and stock transfers. What are the material documents that are generated and what are the accounts hits.&lt;/b&gt;  &lt;/p&gt;&lt;p&gt;Stock Transfer = physically stock transfer of goods,&lt;br /&gt;Trasfer posting =  may physical (or) logical (not physical) stock transfer of goods.  &lt;/p&gt;&lt;p&gt;Transfer posting and stock transfer:&lt;br /&gt;Transfer posting : plant to plant/  Storage location to Storage Location.&lt;br /&gt;In which if the valuation area is  same. i.e.&lt;br /&gt;&lt;b&gt;- &lt;/b&gt;Sloc to Sloc within one plant then there will be no  accounting entry occurs.&lt;br /&gt;- However if the its Sloc to Sloc but with two different plant. and valuation area+valuation price is diff then there will accounting doc and material doc created for the same. &lt;/p&gt;&lt;p&gt;Stock Transfer:&lt;br /&gt;There are unrestricted stock, quality inspection stock, blocked stock. Also you can have GR Blocked stock, special stock too. It will update the quantity. &lt;span style="color: rgb(102, 102, 0);"&gt;*-- Madhura k&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;Stock Tranfer and Transfer Posting - Importances are same up to Plant to Plant . However Customer ( Client ) Prefer Stock Transfer than Transfer Posting. &lt;/p&gt;&lt;p&gt;See the Below Advantages of Stock Transfer more than Transfer Postings :&lt;br /&gt;The transfer of stock using a stock transport order has the following advantages over the transfer of stock without a stock transport order:&lt;br /&gt;- A  goods receipt can be planned in the receiving plant.&lt;br /&gt;- You can enter a  vendor (transport vendor) in the stock transport order.&lt;br /&gt;- Delivery costs  can be entered in the stock transport order.&lt;br /&gt;- The stock transfer order is part of MRP: Purchase requisitions that were created in MRP can be converted into stock transport orders.&lt;br /&gt;- The goods issue can be entered using a  delivery via Shipping (LE-SHP&lt;br /&gt;- The goods receipt can be posted directly to  consumption.&lt;br /&gt;- The entire process can be monitored via the purchase order  history.&lt;br /&gt;However we need to do some times Plant to Plant Trasfer Postings only in some industires. This is based on Customer Requirement. &lt;span style="color: rgb(102, 102, 0);"&gt;*-- Pavan G Kulkarni&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;How many stock transfer  process are avaikable in SAP? &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Like   1)Two step  stock transfer (MM/SD) .&lt;/b&gt;&lt;br /&gt;&lt;b&gt;          2)Two steap stock  transfer ( MM only)  Move type 303&amp;amp;  305.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;          3) One step  stock transfer  Move type 301.&lt;/b&gt;  &lt;/p&gt;&lt;p&gt;Stock Transport Order (STO)  &lt;/p&gt;&lt;p&gt;Without STO&lt;br /&gt;One step stock transfer Move type 301.&lt;br /&gt;Two step stock  transfer ( MM only) Move type 303&amp;amp; 305.  &lt;/p&gt;Using STO without delivery:&lt;br /&gt;doc.type: UB&lt;br /&gt;GI:351, GR:101&lt;br /&gt;&lt;br /&gt;STO with delivery:&lt;br /&gt;GI:641, GR:101&lt;br /&gt;delivery type:NL&lt;br /&gt;&lt;br /&gt;STO with delivery and billing:&lt;br /&gt;GI:643, GR:101&lt;br /&gt;delivery type:NLCC ,  billing type:IV&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-2318639046070926391?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/2318639046070926391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=2318639046070926391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2318639046070926391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2318639046070926391'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/difference-for-stock-transfer-and.html' title='Difference for Stock Transfer and Transfer Posting in sap'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-4293867961288983676</id><published>2008-07-25T19:30:00.000+05:30</published><updated>2008-07-25T19:31:04.630+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Interview Questions'/><title type='text'>Add a Field To New Condition Table in Pricing in SAP</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Add a field to a new condition table in Pricing  (Condition Technique):-&lt;/span&gt;&lt;/b&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;I will explain you the process with below  example...Please follow steps in below sequence-&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Try to add the filed from the field catalog. In case the required combination field is not there, you can add the field through the following process to filed catalog and create the condition table. It is most common that one or other time we need to use this function while configuring multi tasking &amp;amp; complex Pricing Architecture.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Here I'm giving a simple guide to add fields to the  Pricing Field Catalogues:&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For example you want to use field PSTYV ('Sales document item category') that is included in structure KOMP ('Pricing Communication Item') as a key for a condition table.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;When you create a condition table (Transaction V/03),  however, the system does not propose the field in the field catalog.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Condition access, field catalog, allowed fields, KOMG, KOMK, KOMP, KOMPAZ, KOMKAZ, PSTYV are the other terms which we need to know about, to add Fields.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Reason and Prerequisites: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For technical reasons, field PSTYV was included in structure KOMP, however, not in structure KOMG ('Allowed Fields for Condition Structures').&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Proceed as follows:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1. Call up the ABAP Dictionary (Transaction SE11) and create data type ZZPSTYV. Choose PSTYV as a domain.As a short text, you can use, for example, 'ZZ - sales document item category' and as a field label, you can use the field labels of PSTYV.Save, check and activate your entries.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2. Call up structure KOMPAZ in the ABAP Dictionary  (Transaction SE11) in the change mode and make the following entry:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Component Component type:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ZZPSTYV ZZPSTYV&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Save, check and  activate the change you made.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3. Note:Because of the change in structure KOMPAZ, field ZZPSTYV is now known in structures KOMG and KOMP because structure KOMPAZ is included in both structures.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4. Call up Transaction SPRO. Navigate to 'Sales and Distribution -&gt; Basic Functions -&gt; Pricing -&gt; Pricing Control' and execute 'Define Condition Tables'.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Choose  'Conditions: Allowed fields' and include ZZPSTYV as a new entry.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5. Note:Now you can use field ZZPSTYV as a key field when  you create a condition table Axxx.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6. Supply the new field you defined by including the  following source code line in USEREXIT_PRICING_PREPARE_TKOMP:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MOVE xxxx-PSTYV TO TKOMP-ZZPSTYV.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;In order processing you find the user exit in Include MV45AFZZ, and in billing document processing you find it in Include RV60AFZZ.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Consider that you can also use this note as a help if you want to use other customer-specific fields as key fields in a condition table.&lt;/span&gt;  &lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For header fields, use structure KOMKAZ instead of  structure KOMPAZ and&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; USEREXIT_PRICING_PREPARE_TKOMK instead of&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; USEREXIT_PRICING_PREPARE_TKOMP.&lt;/span&gt;   &lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For more information, see Transaction SPRO via the path 'Sales and Distribution -&gt; System Modifications -&gt; Create New Fields (Using Condition Technique) -&gt; New Fields for Pricing' and OSS Note 21040.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-4293867961288983676?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/4293867961288983676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=4293867961288983676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4293867961288983676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4293867961288983676'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/add-field-to-new-condition-table-in.html' title='Add a Field To New Condition Table in Pricing in SAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-2444074983172110691</id><published>2008-07-25T19:29:00.002+05:30</published><updated>2008-07-25T19:30:05.433+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP HR'/><title type='text'>Unified Access to All SAP ABAP HR Infotypes</title><content type='html'>The code snippet shows how to access any HR infotype using unified class-based methods.&lt;br /&gt;The SAP standard class CL_PT_EMPLOYEE provides us with two methods for reading either a default set of infotypes or any other required infotype(s).&lt;br /&gt;&lt;br /&gt;The infotypes are returned either in transparent form (default infotypes) or in semi-transparent form (structure PRELP "HR Master Data Buffer") which can be easily converted into their corresponding transparent form (table PAnnnn).&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp; Report Z_SDN_CL_PT_EMPLOYEE&lt;br /&gt;*&amp;amp;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;&lt;br /&gt;*&amp;amp;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;REPORT z_sdn_cl_pt_employee.&lt;br /&gt;&lt;br /&gt;TABLES: pa0000.&lt;br /&gt;&lt;br /&gt;DATA:&lt;br /&gt;go_employee TYPE REF TO cl_pt_employee,&lt;br /&gt;* generic variables for retrieving infotype data&lt;br /&gt;gd_infty TYPE infty,&lt;br /&gt;gt_infty TYPE tim_tmw_itlist_tab,&lt;br /&gt;gt_result TYPE tim_blp_request_tab,&lt;br /&gt;gd_result LIKE LINE OF gt_result,&lt;br /&gt;go_data TYPE REF TO cl_pt_td_itnnnn,&lt;br /&gt;* specific infotype variables&lt;br /&gt;gs_prelp TYPE prelp, " HR Master Data Buffer&lt;br /&gt;gs_p0009 TYPE pa0009. " HR Master Record: Infotype 0009 (Bank&lt;br /&gt;" Details)&lt;br /&gt;&lt;br /&gt;FIELD-SYMBOLS:&lt;br /&gt;TYPE ANY.&lt;br /&gt;&lt;br /&gt;PARAMETERS:&lt;br /&gt;p_pernr TYPE pa0000-pernr DEFAULT '00900222',&lt;br /&gt;p_begda TYPE begda DEFAULT syst-datum,&lt;br /&gt;p_endda TYPE endda DEFAULT syst-datum.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;* Create an instance of the employee&lt;br /&gt;go_employee ?= cl_pt_employee=&gt;get_employee( p_pernr ).&lt;br /&gt;&lt;br /&gt;* The class has a method GET_MASTER_DATA which returns several&lt;br /&gt;* basic infotypes of the employee in a transparent form.&lt;br /&gt;CALL METHOD go_employee-&gt;get_master_data&lt;br /&gt;EXPORTING&lt;br /&gt;im_begda = p_begda&lt;br /&gt;im_endda = p_endda&lt;br /&gt;* IMPORTING&lt;br /&gt;* EX_I0000 = " infotype 0000 = Actions&lt;br /&gt;* EX_I0001 = " infotype 0001 = Organizational Assignment&lt;br /&gt;* EX_I0002 = " infotype 0002 = Personal Data&lt;br /&gt;* EX_I0007 = " infotype 0007 = Planned Working Time&lt;br /&gt;* EX_I0008 = " infotype 0008 = Basic Pay&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Using this method you can access any infotype(s)&lt;br /&gt;APPEND '0009' TO gt_infty. " Bank Details&lt;br /&gt;* APPEND '0010' TO gt_infty. " Capital Formation&lt;br /&gt;CALL METHOD go_employee-&gt;if_pt_employee~get_infotypes&lt;br /&gt;EXPORTING&lt;br /&gt;i_itlist = gt_infty&lt;br /&gt;i_fromdate = '20000101'&lt;br /&gt;i_todate = syst-datum&lt;br /&gt;* I_FILTER =&lt;br /&gt;i_noauthcheck = ' ' " do authority check (if required)&lt;br /&gt;IMPORTING&lt;br /&gt;e_result = gt_result.&lt;br /&gt;* E_RETCD =&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;* Method GET_INFOTYPES returns a list of infotype objects&lt;br /&gt;* containing the infotype data in semi-transparent form&lt;br /&gt;LOOP AT gt_result INTO gd_result.&lt;br /&gt;go_data ?= gd_result-&gt;data.&lt;br /&gt;&lt;br /&gt;* Get infotype in semi-transparent form&lt;br /&gt;gs_prelp = go_data-&gt;if_pt_td_infotype~get_prelp( ).&lt;br /&gt;&lt;br /&gt;* Convert: semi-transparent -&gt; transparent infotype&lt;br /&gt;CALL METHOD cl_hr_pnnnn_type_cast=&gt;prelp_to_pnnnn&lt;br /&gt;EXPORTING&lt;br /&gt;prelp = gs_prelp&lt;br /&gt;IMPORTING&lt;br /&gt;pnnnn = gs_p0009.&lt;br /&gt;ENDLOOP.&lt;br /&gt;&lt;br /&gt;* Print-Out infotype data&lt;br /&gt;DO.&lt;br /&gt;ASSIGN COMPONENT syst-index OF STRUCTURE gs_p0009 TO .&lt;br /&gt;IF ( syst-subrc NE 0 ).&lt;br /&gt;EXIT.&lt;br /&gt;ELSE.&lt;br /&gt;WRITE: / .&lt;br /&gt;ENDIF.&lt;br /&gt;ENDDO.&lt;br /&gt;&lt;br /&gt;END-OF-SELECTION.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-2444074983172110691?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/2444074983172110691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=2444074983172110691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2444074983172110691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2444074983172110691'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/unified-access-to-all-sap-abap-hr.html' title='Unified Access to All SAP ABAP HR Infotypes'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-2155320874533473127</id><published>2008-07-25T19:29:00.001+05:30</published><updated>2008-07-25T19:29:29.303+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP HR'/><title type='text'>SAP HR ABAP Logical Database</title><content type='html'>&lt;strong&gt;Logical database&lt;/strong&gt;&lt;br /&gt;A logical database is a special ABAP/4 program which combines the contents of certain database tables. Using logical databases facilitates the process of reading database tables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HR Logical Database is PNP&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Main Functions of the logical database PNP:&lt;br /&gt;&lt;br /&gt;Standard Selection screen&lt;br /&gt;Data Retrieval&lt;br /&gt;Authorization check&lt;br /&gt;&lt;br /&gt;To use logical database PNP in your program, specify in your program attributes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Standard Selection Screen&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Date selection&lt;/strong&gt;&lt;br /&gt;Date selection delimits the time period for which data is evaluated. GET PERNR retrieves all records of the relevant infotypes from the database. When you enter a date selection period, the PROVIDE loop retrieves the infotype records whose validity period overlaps with at least one day of this period.&lt;br /&gt;&lt;strong&gt;Person selection&lt;/strong&gt;&lt;br /&gt;Person selection is the 'true' selection of choosing a group of employees for whom the report is to run.&lt;br /&gt;&lt;strong&gt;Sorting Data&lt;/strong&gt;&lt;br /&gt;· The standard sort sequence lists personnel numbers in ascending order.&lt;br /&gt;· SORT function allows you to sort the report data otherwise. All the sorting fields are from infotype 0001.&lt;br /&gt;&lt;strong&gt;Report Class&lt;/strong&gt;&lt;br /&gt;· You can suppress input fields which are not used on the selection screen by assigning a report class to your program.&lt;br /&gt;· If SAP standard delivered report classes do not satisfy your requirements, you can create your own report class through the IMG.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Data Retrieval from LDB&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;1. Create data structures for infotypes.&lt;br /&gt;&lt;br /&gt;INFOTYPES: 0001, "ORG ASSIGNMENT&lt;br /&gt;0002, "PERSONAL DATA&lt;br /&gt;0008. "BASIC PAY&lt;br /&gt;&lt;br /&gt;2. Fill data structures with the infotype records.&lt;br /&gt;&lt;br /&gt;Start-of-selection.&lt;br /&gt;GET PERNR.&lt;br /&gt;End-0f-selection.&lt;br /&gt;&lt;br /&gt;Read Master Data&lt;br /&gt;&lt;br /&gt;Infotype structures (after GET PERNR) are internal tables loaded with data.&lt;br /&gt;The infotype records (selected within the period) are processed sequentially by the PROVIDE - ENDPROVIDE loop.&lt;br /&gt;GET PERNR.&lt;br /&gt;PROVIDE * FROM Pnnnn BETWEEN PN/BEGDA AND PN/ENDDA&lt;br /&gt;If Pnnnn-XXXX = ' '. write:/ Pnnnn-XXXX. endif.&lt;br /&gt;ENDPROVIDE.&lt;br /&gt;&lt;br /&gt;Period-Related Data&lt;br /&gt;All infotype records are time stamped.&lt;br /&gt;&lt;br /&gt;IT0006 (Address infotype)&lt;br /&gt;01/01/1990 12/31/9999 present&lt;br /&gt;Which record to be read depends on the date selection period specified on the&lt;br /&gt;selection screen. PN/BEGDA PN/ENDDA.&lt;br /&gt;&lt;br /&gt;Current Data&lt;br /&gt;IT0006 Address - 01/01/1990 12/31/9999 present&lt;br /&gt;RP-PROVIDE-FROM-LAST retrieves the record which is valid in the data selection period.&lt;br /&gt;&lt;br /&gt;For example, pn/begda = '19990931' pn/endda = '99991231'&lt;br /&gt;IT0006 subtype 1 is resident address&lt;br /&gt;RP-PROVIDE-FROM-LAST P0006 1 PN/BEGDA PN/ENDDA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-2155320874533473127?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/2155320874533473127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=2155320874533473127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2155320874533473127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/2155320874533473127'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/sap-hr-abap-logical-database.html' title='SAP HR ABAP Logical Database'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-7251278899382168537</id><published>2008-07-25T19:28:00.001+05:30</published><updated>2008-07-25T19:28:58.524+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP HR'/><title type='text'>Processing Payroll infotypes/Cluster in SAP HR ABAP</title><content type='html'>&lt;p&gt;&lt;strong&gt;Database Tables in HR&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Personnel Administration (PA)&lt;/strong&gt; - master and time data infotype tables (transparent tables). PAnnnn: e.g. PA0001 for infotype 0001 &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;2. Personnel Development (PD)&lt;/strong&gt; - Org Unit, Job, Position, etc. (transparent tables). HRPnnnn: e.g. HRP1000 for infotype 1000 &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;3. Time/Travel expense/Payroll/Applicant Tracking data/HR work areas/Documents (cluster PCLn: e.g. PCL2 for time/payroll results&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cluster Table&lt;/strong&gt;&lt;br /&gt;· Cluster tables combine the data from several tables with identical (or almost identical) keys&lt;br /&gt;into one physical record on the database.&lt;br /&gt;. Data is written to a database in compressed form.&lt;br /&gt;· Retrieval of data is very fast if the primary key is known.&lt;br /&gt;· Cluster tables are defined in the data dictionary as transparent tables.&lt;br /&gt;· External programs can NOT interpret the data in a cluster table.&lt;br /&gt;· Special language elements EXPORT TO DATABASE, IMPORT TO DATABASE and DELETE&lt;br /&gt;FROM DATABASE are used to process data in the cluster tables.&lt;br /&gt;&lt;br /&gt;PCL1 - Database for HR work area;&lt;br /&gt;PCL2 - Accounting Results (time, travel expense and payroll);&lt;br /&gt;PCL3 - Applicant tracking data;&lt;br /&gt;PCL4 - Documents, Payroll year-end Tax data&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Database Tables PCLn&lt;/strong&gt;&lt;br /&gt;· PCLn database tables are divided into subareas known as data clusters.&lt;br /&gt;· Data Clusters are identified by a two-character code. e.g RU for US payroll result, B2 for&lt;br /&gt;time evaluation result...&lt;br /&gt;· Each HR subarea has its own cluster.&lt;br /&gt;· Each subarea has its own key.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Database Table PCL1&lt;/strong&gt;&lt;br /&gt;· The database table PCL1 contains the following data areas:&lt;br /&gt;B1 time events/PDC&lt;br /&gt;G1 group incentive wages&lt;br /&gt;L1 individual incentive wages&lt;br /&gt;PC personal calendar&lt;br /&gt;TE travel expenses/payroll results&lt;br /&gt;TS travel expenses/master data&lt;br /&gt;TX infotype texts&lt;br /&gt;ZI PDC interface -&gt; cost account&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Database Table PCL2&lt;/strong&gt;&lt;br /&gt;· The database table PCL2 contains the following data areas:&lt;br /&gt;B2 time accounting results&lt;br /&gt;CD cluster directory of the CD manager&lt;br /&gt;PS generated schemas&lt;br /&gt;PT texts for generated schemas&lt;br /&gt;RX payroll accounting results/international&lt;br /&gt;Rn payroll accounting results/country-specific ( n = HR country indicator )&lt;br /&gt;ZL personal work schedule&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Database Table PCL3&lt;br /&gt;&lt;/strong&gt;· The database table PCL3 contains the following data areas:&lt;br /&gt;AP action log / time schedule&lt;br /&gt;TY texts for applicant data infotypes&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Data Management of PCLn&lt;/strong&gt;&lt;br /&gt;· The ABAP commands IMPORT and EXPORT are used for management of read/write to&lt;br /&gt;database tables PCLn.&lt;br /&gt;· A unique key has to be used when reading data from or writing data to the PCLn.&lt;br /&gt;Field Name KEY Length Text&lt;br /&gt;MANDT X 3 Client&lt;br /&gt;RELID X 2 Relation ID (RU,B2..)&lt;br /&gt;SRTFD X 40 Work Area Key&lt;br /&gt;SRTF2 X 4 Sort key for dup. key&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Cluster Definition&lt;br /&gt;&lt;/strong&gt;· The data definition of a work area for PCLn is specified in separate programs which comply&lt;br /&gt;with fixed naming conventions.&lt;br /&gt;· They are defined as INCLUDE programs (RPCnxxy0). The following naming convention applies:&lt;br /&gt;n = 1 or 2 (PCL1 or PCL2)&lt;br /&gt;xx = Relation ID (e.g. RX)&lt;br /&gt;y = 0 for international clusters or country indicator (T500L) for different country cluster&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Exporting Data (I)&lt;/strong&gt;&lt;br /&gt;· The EXPORT command causes one or more 'xy' KEY data objects to be written to cluster xy.&lt;br /&gt;· The cluster definition is integrated with the INCLUDE statement.&lt;br /&gt;&lt;br /&gt;REPORT ZHREXPRT.&lt;br /&gt;TABLES: PCLn.&lt;br /&gt;INCLUDE: RPCnxxy0. "Cluster definition&lt;br /&gt;* Fill cluster KEY&lt;br /&gt;xy-key-field = &lt;value&gt;.&lt;br /&gt;* Fill data object&lt;br /&gt;....&lt;br /&gt;* Export record&lt;br /&gt;EXPORT TABLE1 TO DATABASE PCLn(xy) ID xy-KEY.&lt;br /&gt;IF SY-SUBRC EQ 0.&lt;br /&gt;WRITE: / 'Update successful'.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Exporting Data (II)&lt;/strong&gt;&lt;br /&gt;. Export data using macro RP-EXP-Cn-xy.&lt;br /&gt;· When data records are exported using macro, they are not written to the database but to a&lt;br /&gt;main memory buffer.&lt;br /&gt;· To save data, use the PREPARE_UPDATE routine with the USING parameter 'V'.&lt;br /&gt;&lt;br /&gt;REPORT ZHREXPRT.&lt;br /&gt;*Buffer definition&lt;br /&gt;INCLUDE RPPPXD00. INCLUDE RPPPXM00. "Buffer management&lt;br /&gt;DATA: BEGIN OF COMMON PART 'BUFFER'.&lt;br /&gt;INCLUDE RPPPXD10.&lt;br /&gt;DATA: END OF COMMON PART 'BUFFER'.&lt;br /&gt;...&lt;br /&gt;RP-EXP-Cn-xy.&lt;br /&gt;IF SY-SUBRC EQ 0.&lt;br /&gt;PERFORM PREPARE_UPDATE USING 'V'..&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Importing Data (I)&lt;br /&gt;· The IMPORT command causes data objects with the specified key values to be read from&lt;br /&gt;PCLn.&lt;br /&gt;· If the import is successful, SY-SUBRC is 0; if not, it is 4.&lt;br /&gt;&lt;br /&gt;REPORT RPIMPORT.&lt;br /&gt;TABLES: PCLn.&lt;br /&gt;INCLUDE RPCnxxy0. "Cluster definition&lt;br /&gt;&lt;br /&gt;* Fill cluster Key&lt;br /&gt;&lt;br /&gt;* Import record&lt;br /&gt;IMPORT TABLE1 FROM DATABASE PCLn(xy) ID xy-KEY.&lt;br /&gt;IF SY-SUBRC EQ 0.&lt;br /&gt;* Display data object&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;Importing data (II)&lt;br /&gt;· Import data using macro RP-IMP-Cn-xy.&lt;br /&gt;· Check return code SY-SUBRC. If 0, it is successful. If 4, error.&lt;br /&gt;· Need include buffer management routines RPPPXM00&lt;br /&gt;&lt;br /&gt;REPORT RPIMPORT.&lt;br /&gt;*Buffer definition&lt;br /&gt;INCLUDE RPPPXD00.&lt;br /&gt;DATA: BEGIN OF COMMON PART 'BUFFER'.&lt;br /&gt;INCLUDE RPPPXD10.&lt;br /&gt;DATA: END OF COMMON PART 'BUFFER'.&lt;br /&gt;*import data to buffer&lt;br /&gt;RP-IMP-Cn-xy.&lt;br /&gt;....&lt;br /&gt;*Buffer management routines&lt;br /&gt;INCLUDE RPPPXM00.&lt;br /&gt;&lt;br /&gt;Cluster Authorization&lt;br /&gt;· Simple EXPORT/IMPORT statement does not check for cluster authorization.&lt;br /&gt;· Use EXPORT/IMPORT via buffer, the buffer management routines check for cluster&lt;br /&gt;authorization.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Payroll Results (I)&lt;/strong&gt;&lt;br /&gt;· Payroll results are stored in cluster Rn of PCL2 as field string and internal tables.&lt;br /&gt;n - country identifier.&lt;br /&gt;· Standard reports read the results from cluster Rn. Report RPCLSTRn lists all payroll results;&lt;br /&gt;report RPCEDTn0 lists the results on a payroll form.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Payroll Results (II)&lt;br /&gt;&lt;/strong&gt;· The cluster definition of payroll results is stored in two INLCUDE reports:&lt;br /&gt;include: rpc2rx09. "Definition Cluster Ru (I)&lt;br /&gt;include: rpc2ruu0. "Definition Cluster Ru (II)&lt;br /&gt;&lt;br /&gt;The first INCLUDE defines the country-independent part; The second INCLUDE defines the country-specific part (US).&lt;br /&gt;&lt;br /&gt;· The cluster key is stored in the field string RX-KEY.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Payroll Results (III)&lt;/strong&gt;&lt;br /&gt;· All the field string and internal tables stored in PCL2 are defined in the ABAP/4 dictionary. This&lt;br /&gt;allows you to use the same structures in different definitions and nonetheless maintain data&lt;br /&gt;consistency.&lt;br /&gt;· The structures for cluster definition comply with the name convention PCnnn. Unfortunately,&lt;br /&gt;'nnn' can be any set of alphanumeric characters.&lt;br /&gt;&lt;br /&gt;*Key definition&lt;br /&gt;DATA: BEGIN OF RX-KEY.&lt;br /&gt;INCLUDE STRUCTURE PC200.&lt;br /&gt;DATA: END OF RX-KEY.&lt;br /&gt;&lt;br /&gt;*Payroll directory&lt;br /&gt;DATA: BEGIN OF RGDIR OCCURS 100.&lt;br /&gt;INCLUDE STRUCTURE PC261.&lt;br /&gt;DATA: END OF RGDIR.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Payroll Cluster Directory&lt;/strong&gt;&lt;br /&gt;· To read payroll results, you need two keys: pernr and seqno&lt;br /&gt;. You can get SEQNO by importing the cluster directory (CD) first.&lt;br /&gt;&lt;br /&gt;REPORT ZHRIMPRT.&lt;br /&gt;TABLES: PERNR, PCL1, PCL2.&lt;br /&gt;INLCUDE: rpc2cd09. "definition cluster CD&lt;br /&gt;PARAMETERS: PERSON LIKE PERNR-PERNR.&lt;br /&gt;...&lt;br /&gt;RP-INIT-BUFFER.&lt;br /&gt;*Import cluster Directory&lt;br /&gt;CD-KEY-PERNR = PERNR-PERNR.&lt;br /&gt;RP-IMP-C2-CU.&lt;br /&gt;CHECK SY-SUBRC = 0.&lt;br /&gt;LOOP AT RGDIR.&lt;br /&gt;RX-KEY-PERNR = PERSON.&lt;br /&gt;UNPACK RGDIR-SEQNR TO RX-KEY-SEQNO.&lt;br /&gt;*Import data from PCL2&lt;br /&gt;RP-IMP-C2-RU.&lt;br /&gt;INLCUDE: RPPPXM00. "PCL1/PCL2 BUFFER HANDLING&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Function Module (I)&lt;br /&gt;&lt;/strong&gt;CD_EVALUATION_PERIODS&lt;br /&gt;· After importing the payroll directory, which record to read is up to the programmer.&lt;br /&gt;· Each payroll result has a status.&lt;br /&gt;'P' - previous result&lt;br /&gt;'A' - current (actual) result&lt;br /&gt;'O' - old result&lt;br /&gt;&lt;br /&gt;· Function module CD_EVALUATION_PERIODS will restore the payroll result status for a period&lt;br /&gt;when that payroll is initially run. It also will select all the relevant periods to be evaluated.&lt;br /&gt;&lt;br /&gt;Function Module (II)&lt;br /&gt;CD_EVALUATION_PERIODS&lt;br /&gt;&lt;br /&gt;call function 'CD_EVALUATION_PERIODS'&lt;br /&gt;exporting&lt;br /&gt;bonus_date = ref_periods-bondt&lt;br /&gt;inper_modif = pn-permo&lt;br /&gt;inper = ref_periods-inper&lt;br /&gt;pay_type = ref_periods-payty&lt;br /&gt;pay_ident = ref_periods-payid&lt;br /&gt;tables&lt;br /&gt;rgdir = rgdir&lt;br /&gt;evpdir = evp&lt;br /&gt;iabkrs = pnpabkrs&lt;br /&gt;exceptions&lt;br /&gt;no_record_found = 1.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Authorization Check&lt;/strong&gt;&lt;br /&gt;Authorization for Persons&lt;br /&gt;· In the authorization check for persons, the system determines whether the user has the&lt;br /&gt;authorizations required for the organizational features of the employees selected with&lt;br /&gt;GET PERNR.&lt;br /&gt;· Employees for which the user has no authorization are skipped and appear in a list at the end&lt;br /&gt;of the report.&lt;br /&gt;· Authorization object: 'HR: Master data'&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Authorization for Data&lt;br /&gt;&lt;/strong&gt;· In the authorization check for data, the system determines whether the user is authorized to&lt;br /&gt;read the infotypes specified in the report.&lt;br /&gt;· If the authorization for a particular infotype is missing, the evaluation is terminated and an error&lt;br /&gt;message is displayed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Deactivating the Authorization Check&lt;br /&gt;&lt;/strong&gt;· In certain reports, it may be useful to deactivate the authorization check in order to improve&lt;br /&gt;performance. (e.g. when running payroll)&lt;br /&gt;· You can store this information in the object 'HR: Reporting'.&lt;/value&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-7251278899382168537?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/7251278899382168537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=7251278899382168537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7251278899382168537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/7251278899382168537'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/processing-payroll-infotypescluster-in.html' title='Processing Payroll infotypes/Cluster in SAP HR ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-4342046799320738214</id><published>2008-07-25T19:26:00.003+05:30</published><updated>2008-07-25T19:27:56.128+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP FAQ&apos;S ON SCRIPTS'/><title type='text'>FAQ ON SCRIPTS 1</title><content type='html'>SAP Scripts&lt;br /&gt;&lt;br /&gt;What is sap script and layout set?&lt;br /&gt;&lt;br /&gt;Ans - SAPscript is the integrated text management system of the SAP R/3 System. SAPscript is tightly integrated into the SAP System. It is used for many different word-processing tasks all over the SAP System.&lt;br /&gt;&lt;br /&gt;What is layout set?&lt;br /&gt;&lt;br /&gt;A layout set in SAPscript is used for page layout. The layout set contains various elements, which are used for layout control of the individual pages and also contain layout information for texts which are to be output on the individual pages.&lt;br /&gt;The layot of a document is defined in a layot set.&lt;br /&gt;&lt;br /&gt;A layout set specified the appearance and structure of a document.&lt;br /&gt;Layout sets contain predefined text modules with space reserved for variable data. You can use these text modules for different application.&lt;br /&gt;&lt;br /&gt;Every SAPscript document uses a layout set.&lt;br /&gt;To make changes to your documents, such as moving a piece of text, or changing fonts, paragraph formats, and tabs, you only need to change the layout set.&lt;br /&gt;&lt;br /&gt;There are two ways of formatting texts using layout sets:&lt;br /&gt;The text is entered and output in standard text maintenance.  You can  assign any layout set.&lt;br /&gt;&lt;br /&gt;Text can also be entered via the layout set  a  letter header, for example.&lt;br /&gt;&lt;br /&gt;The text is formatted via an ABAP/4 program using a layout set. The program can either dynamically output individual predefined text modules, text elements or transfer entire texts, which are to be output in the layout set.&lt;br /&gt;&lt;br /&gt;You can use Styles to define the formatting of the text in your documents. A style determines text formatting by setting the paragraph and character formats used in a document.&lt;br /&gt;&lt;br /&gt;You can, for example, use a style to highlight character strings or whole paragraphs. You can assign a style to any text. Typically, however, you’ll use styles&lt;br /&gt;primarily in the main windows of layout sets, where users type or enter text directly in documents.&lt;br /&gt;&lt;br /&gt;Header data is found  in both style and layout set maintenance.&lt;br /&gt;In style maintenance, it is used primarily to present important information - designed to make it easier for the end user to select a style. The header data in layout set maintenance, on the other hand, is used for information and control purposes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Windows are defined in layout set maintenance. They represent areas which are positioned on pages as page windows and in which text is later output. At least one window must be defined for each layout set. If not, a text cannot be formatted by SAP script.&lt;br /&gt;&lt;br /&gt;The following window types can be used:&lt;br /&gt;MAIN - Main window in which continuous text is output. This is the window used by dialog users of a print program and layout set. For example the body text of a letter would be entered in MAIN.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VAR - Window with variable contents. The text can vary on each page in which the window is positioned. Variable windows are formatted for each page.&lt;br /&gt;CONST - Window with constant contents which is only formatted once.&lt;br /&gt;&lt;br /&gt;A layout set has the following elements:&lt;br /&gt;&lt;br /&gt;Header data - Data related to development (created by, development class, etc.) and layout set information (which elements are used) are both stored in the header data. A start page must be entered here.&lt;br /&gt;&lt;br /&gt;Paragraph formats - Paragraph formats are required in layout sets - as in styles - in order to format texts. However, they are also used for word processing in layout sets, for example, to format text elements.&lt;br /&gt;&lt;br /&gt;Character formats - You can also use character formats to format texts or paragraphs. Unlike paragraph formats, however, they are used to format text within a paragraph.&lt;br /&gt;Windows - Windows are names and window types, which are not physically positioned until they are allocated to pages and units of measurement are specified.&lt;br /&gt;Pages - Pages are defined to provide the system with a start and end point  in text formatting.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Page windows - Page windows are the combination of windows and pages, where the dimensions of a window and its position on a page are specified.&lt;br /&gt;The purpose of SAP script control commands is to allow control of the output formatting. These commands are not interpreted by the SAPscript editor, but are passed through to the SAPscript Composer for processing. The composer is the program that converts text from the form displayed in the editor to the form used for printing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What is SAPscript and explain its purpose?&lt;br /&gt;SAP Script is the SAP system’s own text-proessing system. You’ll find that it looks and feels a lot like other leading text-processing system that you may use on your personal computer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Every company needs to output documents with a uniformly defined layout (eg. Invoices, delivery notes, etc..) all the time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The basic layout of the document is pre-defined , but in many cases, other data has to be merged with it, such as address data or purchase order items. This data might be entered manually by a employee, or retrieved from a database table.&lt;br /&gt;Large quantities of these documents have to be produced.&lt;br /&gt;&lt;br /&gt;From printing is usually a mattter of large print runs of documents such as payslips, checks, order confirmation, reminders etc.&lt;br /&gt;SAPscript has been developed to meet the above requirements. IT is an integrated tool for text entry and form printing in R/3 applications.&lt;br /&gt;&lt;br /&gt;These documents are normally provided by SAP but every organization have their unique waqys of these documents so to customize these and for creating newer ones if required; SAP script is used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What are components of SAPscript?&lt;br /&gt;Layout set, SAPscript Text, ABAP Print program , symbols, function modules like open_form, close_From, Read_text etc,.&lt;br /&gt;What are the ABAP/4 Commands that link to a layout set?&lt;br /&gt;Call function OPEN-form.    Call function WRITE-from.   Call function CLOSE-from&lt;br /&gt;Importing Graphics (Logos) into SAPScript&lt;br /&gt;The program RSTXLDMC can be used to upload graphics (file extension .tif on PC files) into individual standard text.&lt;br /&gt;Other useful programs for SAPScript&lt;br /&gt;RSTXFCON - Converts page format&lt;br /&gt;RSTXSCRP - Upload/Download layout sets&lt;br /&gt;RSTXDBUG - SAPScript debugger&lt;br /&gt;Debug SAPScript&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can debug a SAPScript: Use Tools - Word Processing - Layout Set.&lt;br /&gt;Enter name of layout set and then Utilities - Activate Debugger.&lt;br /&gt;It is of no consequence which layout set you enter when selecting the SAPscript debugger. (Menu path: Tools-Word-processing - Forms, Utilities - Activate Debugger) The next layoutset called will invoke the debugger.&lt;br /&gt;&lt;br /&gt;This is quite handy when verifying which layoutset is being called (Verifying customizing settings).&lt;br /&gt;Another way to set the SAPScript debugger is to run program RSTXDBUG.&lt;br /&gt;When a Form is copied from one client to another .And If U try to display or change the form in the copied client&lt;br /&gt;&lt;br /&gt;.The  possible error message cud be :&lt;br /&gt;1.Form not found&lt;br /&gt;Try coping again specifing the language .&lt;br /&gt;2.IF IT dispalys an error message saying That the text file is inconsistent .&lt;br /&gt;Then go to SE38 and Run “RSTXCHKO” .&lt;br /&gt;It will ask for the form name ,then check all the checkboxes and then run the program.&lt;br /&gt;Note : all Script related problems can be solved using Program ‘RSTX*’.&lt;br /&gt;How to take a back up of script layout  into U’r hard disk and load it later&lt;br /&gt;Use Program RSTXSCRP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use EXPORT mode, when downloading and IMPORT when uploading a script. Don’t forget to give the form name in the object field. This will create a script with the same name as that of the original script .&lt;br /&gt;&lt;br /&gt;If a script with the same name exists in the same client ,then it will give an error ‘Object cannot be overwritten ’ .&lt;br /&gt;I want to copy table across clients&lt;br /&gt;Use Program RSCLTCOP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To transfer script files across systems (Not Clients)  - RSTXSCRP&lt;br /&gt;To compare the contents of a table across clients: RSTBSERV&lt;br /&gt;To change the development class of any object - RSWBO052&lt;br /&gt;What type of variables normally used in sap script to output data?&lt;br /&gt;&amp;amp;Tables name- fields&amp;amp;.&lt;br /&gt;How do you number pages in sap script layout outputs?&lt;br /&gt;&amp;amp; page &amp;amp;&lt;br /&gt;&amp;amp;next Page &amp;amp;&lt;br /&gt;What takes most time in SAP script programming?&lt;br /&gt;Defining layout set up / sets.&lt;br /&gt;How do you use tab sets in layout sets?&lt;br /&gt;Define paragraph with defined tabs.&lt;br /&gt;How do you backup sap script layout sets? Can you download and upload? How?&lt;br /&gt;SAP script backup :- In transaction SE71 goto Utilities -&gt; Copy from client -&gt; Give source form name, source client (000 default), Target form name.&lt;br /&gt;Download :- SE71, type form name -&gt; Display -&gt; Utilities -&gt; form info -&gt; List -&gt; Save to PC file.&lt;br /&gt;Upload :- Create form with page, window, pagewindow with the help of downloaded PC file. Text elements for Page windows to be copied from PC file.&lt;br /&gt;What is Compare Tool in SAP Script ?&lt;br /&gt;SAP Script offers  tools for comparing objects across clients. We can compare or copy the following kinds of objects.&lt;br /&gt;Styles&lt;br /&gt;Layout sets&lt;br /&gt;Documents&lt;br /&gt;With the Compare tool we can do the following :&lt;br /&gt;Check whether an object exists in both clients&lt;br /&gt;Display the differences between the versions of an object&lt;br /&gt;Layout Sets  are used to control page layout and text formatting in documents .&lt;br /&gt;SAP Standard styles and layout sets are always held in Client 000.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In what format does  SAP Script store text ?&lt;br /&gt;SAPscript texts are stored in Interchange Text Format (ITF). SAPscript offers conversion programs for the text file formats Rich Text Format (RTF) and ASCII as an interface to other word processors.&lt;br /&gt;The various window types in SAP Script are&lt;br /&gt;Main, Variable and Constant.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The New-Page command is used to force a Page break in the text at any point.&lt;br /&gt;Protect ... Endprotect command pairs can be nested (True / False).&lt;br /&gt;False.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Delimiter &amp;amp;  must be used immediately before and after the symbol.&lt;br /&gt;What does the composer do?&lt;br /&gt;The final appearance of your documednt depends on interaction between the print program and the layout set.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The SAPscript print program initializes the printing process. Every command entered using the SAPscript programming interfaces is transferred to the composer.&lt;br /&gt;The composer received layout information from the layout set specified by the print program. The documents are formatted according to this layout information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If the documents contain variables, the compoer replaces these variables with data from the R/3 system, such as the current date, or with the userdata selected by the print program.&lt;br /&gt;The print program controls the completion of thelayout set. Once this is done, the composer places the completed document in the spool.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Where do we define Tab space for data in SAPScript?&lt;br /&gt;When defining the paragraph for the text element we can define the TABS then. There is parameter called TABS to be defined in paragraph definition.&lt;br /&gt;what is difference between Window &amp;amp; a Page Window?&lt;br /&gt;&lt;br /&gt;Window: An area that is predefined in the layout set.  Windows are text modules, which are positioned on a document page.&lt;br /&gt;We define the window type, Default Paragraph, specify the text elements or a SAPscript text to be included etc in the Windcow Component.&lt;br /&gt;PageWindow: we define the parameters of the earlier defined Window, appearance on the document like left or right margins, Width &amp;amp; Height.&lt;br /&gt;What are symboles &amp;amp; state their different types with E.g.&lt;br /&gt;&lt;br /&gt;A Symbol is a constant, which can be inserted in a document. It saves the user unnecessary work when replacing sections of text, phrases, etc. Each symbol has a name which is encloses by &amp;amp;.&lt;br /&gt;Eg. &amp;amp;variable name &amp;amp;&lt;br /&gt;System symbols eg &amp;amp;Date&amp;amp;, &amp;amp;time&amp;amp; etc.&lt;br /&gt;Standard symbols :Standard symbols are user-defined. They are maintained centrally in table TTDTG. Eg. &amp;amp;SGDH&amp;amp; for the opening salutation : “dear sir/madam”.&lt;br /&gt;&amp;amp;MFG&amp;amp; for the closing salutation :”yours Faithfully”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Program Symbols : Program symbols display data from the ABAP/4 program which has called the word processing function Eg. Itab-connid.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Text symbols: You can define a text symbol for any text module. This symbol is valid only in the text module for which you have defined it. Eg. Define &amp;amp;Symbol&amp;amp; = ‘value’.&lt;br /&gt;How do we define Text symbols?&lt;br /&gt;Using the control command DEFINE &amp;amp;x1&amp;amp; = ‘56’.&lt;br /&gt;State few control commands?.&lt;br /&gt;Protect .. endprotect, define, new-page, include.. if… endif.&lt;br /&gt;what is the purpose  of “Protect and EndProtect”?.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can specify either in the style or in the layout set that a particular paragraph should not be slit in two by a page beak. If the page protect attribute is set then the complete paragraph is always output ona single page. This property applies only to that particular paragraph. SAPScript provides the PROTECT… ENDPROTECT command pair to allow you to define the areas to be protected against a page beak on an individual basis.&lt;br /&gt;&lt;br /&gt;Thus the PROTECT/ENDPROTECT commands may be regarded as a kind of conditional NEW-PAGE command, the condition being whether or not the lines enclosed between the two commands fit in the space remaining in the current main window.&lt;br /&gt;How do we set the date, time format?&lt;br /&gt;SET TIME MASK : CONROLS THE TIME FIELD FORMAT.&lt;br /&gt;SET DATE MASK : CONTRLS THE DATE FIELD FORMAT.&lt;br /&gt;EG. Set Time Mask = “ HH:MM:SS”.&lt;br /&gt;what is the role of an ABAP progrm in SAPScript?&lt;br /&gt;Retrieves R/3 application data from the database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Defines the layout set processing logic ( The order and repetition of text elements).&lt;br /&gt;Chooses a layout set for printing.&lt;br /&gt;Selects the output device, such as printer,monitor, or fax.&lt;br /&gt;Sets print attributes such as immediate output, number of copies ,and pages to beprinted.&lt;br /&gt;&lt;br /&gt;How to reuse some components of the script layout to other program?&lt;br /&gt;Is this script layout is standard for all the printer? If not then y  we are going for script layout?&lt;br /&gt;&lt;br /&gt;Give me couple of methods that I will take standard script layout printout for different printer.&lt;br /&gt;&lt;br /&gt;How u will analysis script program? ( which goes to main and how many windows etc….)&lt;br /&gt;Can V inserted logo on your program?. Give me the program name which uploads my logo and syntax for logo inserting in sap script.&lt;br /&gt;Yes u can insert a logo on your script layout.&lt;br /&gt;Use this Report “RSTXLDMC” which will uploads the logo.&lt;br /&gt;Use the following statement which includes the logo on your script prog.&lt;br /&gt;/: INCLUDE 'ZHEX-MACRO-XXX' OBJECT TEXT ID ST LANGUAGE 'E'.&lt;br /&gt;XXX - object name, u will gives @ runtime in rstxldmc program.&lt;br /&gt;Give me syntax for box command.&lt;br /&gt;BOX XPOS 2 MM  WIDTH 0 CM HEIGHT '9.5' CM FRAME 10 TW&lt;br /&gt;Script Commands.&lt;br /&gt;Defining a variable&lt;br /&gt;&lt;br /&gt;DEFINE &amp;amp;CUST&amp;amp; = '00000021'.&lt;br /&gt;Define and insert a standard text:&lt;br /&gt;Standard texts is predifined textst that can be used in more than one form. Standard texts are can be created, changed and displayed using transaction SO10.&lt;br /&gt;The text ID is used to callsify texts.&lt;br /&gt;To include a stadard text in a form, use the INCLUDE command:&lt;br /&gt;/: INCLUDE Z_BC460_EX4_HF OBJECT TEXT ID SDVD&lt;br /&gt;When formatting the standard text the PARAGRAPH parameter is used. To center the text use:&lt;br /&gt;/: INCLUDE Z_BC460_EX4_HF OBJECT TEXT ID SDVD LANGUAGE EN PARAGRAPH C.&lt;br /&gt;Formatting addresses&lt;br /&gt;The ADDRESS-ENDADDRESS command formats addresses according to the postal norms of the recipient's country, as defined in the&lt;br /&gt;country parameter.&lt;br /&gt;ADDRESS DELIVERY PARAGRAPH AD&lt;br /&gt;NAME             &amp;amp;KNA1-NAME&amp;amp;&lt;br /&gt;STREET        &amp;amp;KNA1-STRAS&amp;amp;&lt;br /&gt;POSTCODE      &amp;amp;KNA1-PSTLZ&amp;amp;&lt;br /&gt;CITY          &amp;amp;KNA1-ORT01&amp;amp;'&lt;br /&gt;COUNTRY &amp;amp;KNA1-LAND1&amp;amp;&lt;br /&gt;FROMCOUNTRY  'DE'&lt;br /&gt;ENDADDRESS&lt;br /&gt;Avoiding pagebreaks in a paragraph&lt;br /&gt;/: PROTECT&lt;br /&gt;:&lt;br /&gt;:&lt;br /&gt;/: ENDPROTECT&lt;br /&gt;&lt;br /&gt;The text lines to be protected are enclosed between the two commands&lt;br /&gt;Conditonal text ouput IF - ENDIF&lt;br /&gt;You can use IF/ENDIF like in a normal ABAP program&lt;br /&gt;/: IF condition&lt;br /&gt;:&lt;br /&gt;:&lt;br /&gt;/: ENDIF&lt;br /&gt;and&lt;br /&gt;/: IF condition&lt;br /&gt;:&lt;br /&gt;/: ELSE&lt;br /&gt;:&lt;br /&gt;/: ENDIF&lt;br /&gt;Example:&lt;br /&gt;/: IF &amp;amp;SPFLI-CITYTO&amp;amp; = "BERLIN"&lt;br /&gt;..... put some text here&lt;br /&gt;/: ENDIF&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-4342046799320738214?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/4342046799320738214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=4342046799320738214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4342046799320738214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4342046799320738214'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/faq-on-scripts-1.html' title='FAQ ON SCRIPTS 1'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-1273625876623459920</id><published>2008-07-25T19:26:00.001+05:30</published><updated>2008-07-25T19:26:33.171+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP FAQ&apos;S ON SCRIPTS'/><title type='text'>FAQ ON SCRIPTS 2</title><content type='html'>Symbols and Control commands&lt;br /&gt;&lt;br /&gt;Symbols are placeholders for values that are inserted during print formatting.&lt;br /&gt;Symbols are indentified by name surrounded by "&amp;amp;" and are not case sensitive&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Types of symbols&lt;br /&gt;System symbols&lt;br /&gt;DATE Date&lt;br /&gt;DAY Day&lt;br /&gt;NAME_OF_DAY Name of day&lt;br /&gt;MONTH Month&lt;br /&gt;YEAR Year&lt;br /&gt;TIME Time&lt;br /&gt;HOURS Hours&lt;br /&gt;MINUTES Minutes&lt;br /&gt;SECONDS Seconds&lt;br /&gt;PAGE Page number&lt;br /&gt;NEXTPAGE Number of next pagre&lt;br /&gt;DEVICE Output device&lt;br /&gt;SPACE Blank space&lt;br /&gt;ULINE Underline&lt;br /&gt;VLINE Vertical line&lt;br /&gt;Standard symbols&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Standard symbols are user defined and are maintained in table TTDG(table is not available???)&lt;br /&gt;&lt;br /&gt;. You use transaction SM30 to change or display standard symbols.&lt;br /&gt;An examples of standard symbols is &amp;amp;MFG&amp;amp; fot "Yours faithfully"&lt;br /&gt;Standard text&lt;br /&gt;standard texts is predifined texts that can be used in more than one form. Standard texts are can be created, changed and displayed using transaction SO10.&lt;br /&gt;The text ID is used to classify texts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To include a standard text in a form, use the INCLUDE command:&lt;br /&gt;INCLUDE Z_BC460_EX4_HF OBJECT TEXT ID SDVD&lt;br /&gt;When formatting the standard text the PARAGRAPH parameter is used. To center the text use:&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;INCLUDE Z_BC460_EX4_HF OBJECT TEXT ID SDVD LANGUAGE EN PARAGRAPH C.&lt;br /&gt;Name: Z_BC460_EX4_HF&lt;br /&gt;Object: Text&lt;br /&gt;Text id: SDVD (Text id from SO10)&lt;br /&gt;Language: EN&lt;br /&gt;Paragraph: C (Centered)&lt;br /&gt;Tip: You can use menu Insert-&gt;Text-&gt;Standard to make it easier to insert the text&lt;br /&gt;Program symbols&lt;br /&gt;Program symbols are for contents of database fields or global program symbols. When you print the form, data from the database tables are printed isntead of the symbols.&lt;br /&gt;In the print program:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TABLES: kna1.&lt;br /&gt;In the form:&lt;br /&gt;&amp;amp;KNA1-NAME1&amp;amp;&lt;br /&gt;Formatting&lt;br /&gt;&amp;amp;SYMBOL&amp;amp; No formatting&lt;br /&gt;&amp;amp;SYMBOL+4&amp;amp; Offset - Output begins here. Offset refers to formatted value&lt;br /&gt;&amp;amp;SYMBOL(5)&amp;amp; Length - Output data in the specified length&lt;br /&gt;&amp;amp;SYMBOL(I)&amp;amp; Suppress initial value - If the field has been initialized, nothing is output&lt;br /&gt;&amp;amp;SYMBOL(Z)&amp;amp; Suppress leading zeros&lt;br /&gt;&amp;amp;SYMBOL(C)&amp;amp; Compress blank spaces - Consecutice spaces are compressed into a single space. Leading spacesare suppressed.&lt;br /&gt;&amp;amp;SYMBOL(R)&amp;amp; Right align output&lt;br /&gt;&amp;amp;SYMBOL(S)&amp;amp; Operators are suppressed&lt;br /&gt;&amp;amp;SYMBOL(*)&amp;amp; Dictionary length - The data length is defined by the ABAP dictionary&lt;br /&gt;&amp;amp;SYMBOL(8.2)&amp;amp; Decimal format. Length 8 decimals 2&lt;br /&gt;&amp;amp;'text1'SYMBOL'text2'&amp;amp; Text can be inserted before and after the symbol&lt;br /&gt;Control commands&lt;br /&gt;Control command are used to modify text output. Use format key /: in the format column.&lt;br /&gt;&lt;br /&gt;The intensity is the grey scale of the box as %. The frame parameters is the thickness of the frame. Default is 0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Each of the paramteters ypos, xpos, width, height and frame muts be followed of the measurement unit:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TW (twip)&lt;br /&gt;PT (point)&lt;br /&gt;IN (inch)&lt;br /&gt;MM (millimeter)&lt;br /&gt;CM (centimeter)&lt;br /&gt;LN (line)&lt;br /&gt;CH (character).&lt;br /&gt;Examples:&lt;br /&gt;BOX XPOS '11.21' MM YPOS '5.31' MM HEIGHT '10' MM WIDTH '20' MM INTENSITY 10 FRAME 0 TW&lt;br /&gt;&lt;br /&gt;Draws two rectangles and two lines to construct a table of three columns with a highlighted heading section.&lt;br /&gt;&lt;br /&gt;POSITION and SIZE&lt;br /&gt;&lt;br /&gt;You can use the POSITION and SIZE commands to set default parmeters for a box. This can be usefull if you have several boxes that share the same parameters.&lt;br /&gt;&lt;br /&gt;If you want to set the position realtively to the window use POSITION WINDOW to set the position to the top/left start of the window. Then use POSITION to set the current position relatively to the start of the Window. Note that&lt;br /&gt;you uses "+" or "-" in the ORIGIN position to the set the position relatively.&lt;br /&gt;&lt;br /&gt;the position is now 5 MM from the left and 10 MM from the top of the window.&lt;br /&gt;NOTE: After using the position command you can move the current position realtively to the last used position&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-1273625876623459920?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/1273625876623459920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=1273625876623459920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1273625876623459920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/1273625876623459920'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/faq-on-scripts-2.html' title='FAQ ON SCRIPTS 2'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-3711728929893425949</id><published>2008-07-25T19:25:00.001+05:30</published><updated>2008-07-25T19:25:55.576+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP FAQ&apos;S ON SCRIPTS'/><title type='text'>FAQ ON SCRIPTS 3</title><content type='html'>Styles&lt;br /&gt;&lt;br /&gt;Styles are used to predefine paragraph and character formats for forms. SAP provides several standard styles e.g. for Address includes, on-line documentation and so on. You can define your own styles.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To find styles, create styles and maintaine styles, use transaction SE72.&lt;br /&gt;You assign style to a text by using menu Format -&gt; Style&lt;br /&gt;You can make temporary style changes using the control command /: STYLE&lt;br /&gt;&lt;br /&gt;Using graphics in SapScript&lt;br /&gt;Use transaction SE78 to inmport graphics to SAP.&lt;br /&gt;In the form painter, you can either include directly to the form using menu Edit-&gt;Graphic-&gt;Create or using the INCLUDE statement in a window.&lt;br /&gt;&lt;br /&gt;To use an INCLUDE stanment, goto into the woindow script editor and use menu Include-&gt;Graphic. The include can look like this for a bitmap:&lt;br /&gt;/: BITMAP MYLOGO OBJECT GRAPHICS ID BMAP TYPE BMON&lt;br /&gt;&lt;br /&gt;Modifications&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Considerations in connection with modifications&lt;br /&gt;&lt;br /&gt;The standard SAP print program should only be changed when it is absolutely necessary. If additional data is needed, these can in many cases be retrieved using a a PERFORM statement in the form instead of changing the print program..&lt;br /&gt;&lt;br /&gt;There can be the following reasons to change the print program:&lt;br /&gt;Structureal changes&lt;br /&gt;New text eloements are needed&lt;br /&gt;&lt;br /&gt;Print program to be used to print additional forms&lt;br /&gt;Determine/change which forms and printprograms that are used for printing&lt;br /&gt;The forms and print programs for a given output type and application can be found in table TNAPR Processing programs for output&lt;br /&gt;&lt;br /&gt;Use view V_TNAPR in (Transaction SE30) to change entries.&lt;br /&gt;Import/Export SapScript form from PC file&lt;br /&gt;Use ABAP program: RSTXSCRP&lt;br /&gt;SD - Finding the name of the print program&lt;br /&gt;For SD dopcuments you can use table TNAPR top find the name of the a&lt;br /&gt;printprogram&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-3711728929893425949?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/3711728929893425949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=3711728929893425949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3711728929893425949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/3711728929893425949'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/faq-on-scripts-3.html' title='FAQ ON SCRIPTS 3'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-746298052266927810</id><published>2008-07-25T19:21:00.001+05:30</published><updated>2008-07-25T19:24:34.910+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Enhancement'/><title type='text'>General - Reporting Tree in ABAP</title><content type='html'>&lt;pre&gt;*&lt;br /&gt;* An ABAP reporting tree program that allows the user to press enter or double click on&lt;br /&gt;* any line. The report is updated with new internal table data and re-written. The cursor&lt;br /&gt;* and paging returns to the exact same line the user was on, even though the report was&lt;br /&gt;* re-written from the internal table. Input fields are filled with data based on ENTER of&lt;br /&gt;* DOUBLE CLICK. [+] and [-] is displayed on each line and changes if user selects to&lt;br /&gt;* expand/collapse.&lt;br /&gt;*&lt;br /&gt;* Create a gui status (8000) with Functions Keys&lt;br /&gt;*                                 ENTER        = ENTE&lt;br /&gt;*                                 BACK         = BACK&lt;br /&gt;*                                 EXIT         = %EX&lt;br /&gt;*                                 CANCEL       = RW&lt;br /&gt;*                                 PICK         = F2&lt;br /&gt;*                                 EXPAND ALL   = EXPA&lt;br /&gt;*                                 COLLAPSE ALL = COLA&lt;br /&gt;*&lt;br /&gt;* Written by : SAP Basis, ABAP Programming and Other IMG Stuff&lt;br /&gt;*             http://www.sap-img.com&lt;br /&gt;*&lt;br /&gt;REPORT ZTREE NO STANDARD PAGE HEADING&lt;br /&gt;            LINE-COUNT 65&lt;br /&gt;            LINE-SIZE 80.&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF IT_DATA OCCURS 0,&lt;br /&gt;       EXP(1) TYPE C,&lt;br /&gt;       WERKS LIKE T001W-WERKS,&lt;br /&gt;       MATNR LIKE MARA-MATNR,&lt;br /&gt;       VALUE1(13) TYPE C,&lt;br /&gt;       VALUE2(13) TYPE C,&lt;br /&gt;     END OF IT_DATA.&lt;br /&gt;&lt;br /&gt;DATA: W_MATNR LIKE MARA-MATNR,&lt;br /&gt;     W_COUNT TYPE I,&lt;br /&gt;     G_FIELD(40) TYPE C.&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF PAGE,&lt;br /&gt;       SCRLLINE LIKE SYST-LILLI,      "scroll line to top of screen&lt;br /&gt;       CURSLINE LIKE SYST-LILLI,      "line to put cursor on&lt;br /&gt;       HDRLINES TYPE I,               "lines in header + 1&lt;br /&gt;       TWOHDRS TYPE I,                "two headers on screen&lt;br /&gt;       CPOSTOP TYPE I,                "position of cursor from top&lt;br /&gt;       CPOSBOT TYPE I,                "position of cursor from bottom&lt;br /&gt;       CPOSIT TYPE I,                 "position on the screen&lt;br /&gt;       PAGNO TYPE I,                  "pageno of line&lt;br /&gt;       PGELINES TYPE I,               "lines used so far&lt;br /&gt;     END OF PAGE.&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt; PERFORM BUILD_IT_DATA.&lt;br /&gt;&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt; PERFORM WRITE_REPORT.&lt;br /&gt;&lt;br /&gt;TOP-OF-PAGE.&lt;br /&gt; PERFORM TOP_OF_PAGE.&lt;br /&gt;&lt;br /&gt;TOP-OF-PAGE DURING LINE-SELECTION.&lt;br /&gt; PERFORM TOP_OF_PAGE.&lt;br /&gt;&lt;br /&gt;AT LINE-SELECTION.&lt;br /&gt; G_FIELD = SPACE.&lt;br /&gt; GET CURSOR FIELD G_FIELD.&lt;br /&gt; PERFORM LINE_SELECTION.&lt;br /&gt;&lt;br /&gt;AT USER-COMMAND.&lt;br /&gt; G_FIELD = SPACE.&lt;br /&gt; GET CURSOR FIELD G_FIELD.&lt;br /&gt; PERFORM USER_COMMAND.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM BUILD_IT_DATA                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM BUILD_IT_DATA.&lt;br /&gt; IT_DATA-WERKS = '0000'.&lt;br /&gt; WHILE IT_DATA-WERKS &lt; '0100'.&lt;br /&gt;   ADD '10' TO IT_DATA-WERKS.&lt;br /&gt;   W_MATNR = 0.&lt;br /&gt;   WHILE W_MATNR &lt; 10.&lt;br /&gt;     ADD 1 TO W_MATNR.&lt;br /&gt;     IT_DATA-EXP = '+'.&lt;br /&gt;     WRITE W_MATNR TO IT_DATA-MATNR.&lt;br /&gt;     IF IT_DATA-WERKS = 10 AND W_MATNR = 1.&lt;br /&gt;           WRITE 'ZTEST2' TO IT_DATA-VALUE1.&lt;br /&gt;           WRITE 'Testing program 2' TO IT_DATA-VALUE2.&lt;br /&gt;     ELSE.&lt;br /&gt;           CLEAR: IT_DATA-VALUE1, IT_DATA-VALUE2.&lt;br /&gt;     ENDIF.&lt;br /&gt;     APPEND IT_DATA.&lt;br /&gt;   ENDWHILE.&lt;br /&gt; ENDWHILE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM WRITE_REPORT                                             *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_REPORT.&lt;br /&gt; SET PF-STATUS '8000'.&lt;br /&gt; SYST-LSIND = '0'.&lt;br /&gt; LOOP AT IT_DATA.&lt;br /&gt;   AT NEW WERKS.&lt;br /&gt;     FORMAT COLOR COL_HEADING INTENSIFIED OFF.&lt;br /&gt;     WRITE: /1 SYST-VLINE NO-GAP,&lt;br /&gt;               '[' NO-GAP,&lt;br /&gt;               IT_DATA-EXP NO-GAP HOTSPOT ON,&lt;br /&gt;               ']'.&lt;br /&gt;     FORMAT COLOR COL_NORMAL INTENSIFIED ON.&lt;br /&gt;     WRITE:     IT_DATA-WERKS,&lt;br /&gt;             AT SYST-LINSZ SYST-VLINE.&lt;br /&gt;     PAGE-PAGNO = SYST-PAGNO.&lt;br /&gt;     HIDE: IT_DATA-WERKS, PAGE-PAGNO.&lt;br /&gt;   ENDAT.&lt;br /&gt;   IF IT_DATA-EXP = '-'.&lt;br /&gt;     FORMAT COLOR COL_NORMAL INTENSIFIED OFF.&lt;br /&gt;     WRITE: /1 SYST-VLINE,&lt;br /&gt;             8 IT_DATA-MATNR,&lt;br /&gt;               IT_DATA-VALUE1 INPUT ON,&lt;br /&gt;               IT_DATA-VALUE2 INPUT ON,&lt;br /&gt;            AT SYST-LINSZ SYST-VLINE.&lt;br /&gt;     HIDE: IT_DATA, PAGE-PAGNO.&lt;br /&gt;   ENDIF.&lt;br /&gt; ENDLOOP.&lt;br /&gt; ULINE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM USER_COMMAND                                             *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM USER_COMMAND.&lt;br /&gt; PERFORM SET_SCROLL_LINE.&lt;br /&gt; CASE SY-UCOMM.&lt;br /&gt;   WHEN 'ENTE'.&lt;br /&gt;     READ TABLE IT_DATA WITH KEY WERKS = IT_DATA-WERKS&lt;br /&gt;                                 MATNR = IT_DATA-MATNR.&lt;br /&gt;     IF SYST-SUBRC = 0.&lt;br /&gt;       CASE G_FIELD.&lt;br /&gt;         WHEN 'IT_DATA-VALUE1'.&lt;br /&gt;           IF IT_DATA-VALUE1 &lt;&gt; SPACE.&lt;br /&gt;              SUBMIT (IT_DATA-VALUE1) VIA SELECTION-SCREEN AND RETURN.&lt;br /&gt;           ELSE.&lt;br /&gt;              IT_DATA-VALUE1 = 'Enter 1 Press'(001).&lt;br /&gt;           ENDIF.&lt;br /&gt;         WHEN 'IT_DATA-VALUE2'.&lt;br /&gt;           IT_DATA-VALUE2 = 'Enter 2 Press'(001).&lt;br /&gt;       ENDCASE.&lt;br /&gt;       MODIFY IT_DATA INDEX SYST-TABIX.&lt;br /&gt;     ENDIF.&lt;br /&gt;     PERFORM WRITE_REPORT.&lt;br /&gt;     PERFORM POSITION_LIST.&lt;br /&gt;     CASE G_FIELD.&lt;br /&gt;       WHEN 'IT_DATA-EXP'.&lt;br /&gt;         ADD 1 TO PAGE-CURSLINE.&lt;br /&gt;         SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.&lt;br /&gt;       WHEN 'IT_DATA-VALUE1'.&lt;br /&gt;         SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.&lt;br /&gt;       WHEN 'IT_DATA-VALUE2'.&lt;br /&gt;         SET CURSOR FIELD 'IT_DATA-VALUE2' LINE PAGE-CURSLINE.&lt;br /&gt;     ENDCASE.&lt;br /&gt;   WHEN 'EXPA'.&lt;br /&gt;     PERFORM SET_EXPAND USING '-'.&lt;br /&gt;     PERFORM WRITE_REPORT.&lt;br /&gt;   WHEN 'COLA'.&lt;br /&gt;     PERFORM SET_EXPAND USING '+'.&lt;br /&gt;     PERFORM WRITE_REPORT.&lt;br /&gt; ENDCASE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM SET_EXPAND                                               *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM SET_EXPAND USING W_EXP.&lt;br /&gt; LOOP AT IT_DATA.&lt;br /&gt;   IT_DATA-EXP = W_EXP.&lt;br /&gt;   MODIFY IT_DATA INDEX SYST-TABIX.&lt;br /&gt; ENDLOOP.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM LINE_SELECTION                                           *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM LINE_SELECTION.&lt;br /&gt; PERFORM SET_SCROLL_LINE.&lt;br /&gt; READ TABLE IT_DATA WITH KEY WERKS = IT_DATA-WERKS&lt;br /&gt;                             MATNR = IT_DATA-MATNR.&lt;br /&gt; CASE G_FIELD.&lt;br /&gt;   WHEN 'IT_DATA-EXP'.&lt;br /&gt;     LOOP AT IT_DATA WHERE WERKS = IT_DATA-WERKS.&lt;br /&gt;       IF IT_DATA-EXP = '-'.&lt;br /&gt;         IT_DATA-EXP = '+'.&lt;br /&gt;       ELSE.&lt;br /&gt;         IT_DATA-EXP = '-'.&lt;br /&gt;       ENDIF.&lt;br /&gt;       MODIFY IT_DATA INDEX SYST-TABIX.&lt;br /&gt;     ENDLOOP.&lt;br /&gt;   WHEN 'IT_DATA-VALUE1'.&lt;br /&gt;     IT_DATA-VALUE1 = 'Double Click'(004).&lt;br /&gt;     MODIFY IT_DATA INDEX SYST-TABIX.&lt;br /&gt;   WHEN 'IT_DATA-VALUE2'.&lt;br /&gt;     IT_DATA-VALUE2 = 'Double Click'(004).&lt;br /&gt;     MODIFY IT_DATA INDEX SYST-TABIX.&lt;br /&gt; ENDCASE.&lt;br /&gt; PERFORM WRITE_REPORT.&lt;br /&gt; PERFORM POSITION_LIST.&lt;br /&gt; CASE G_FIELD.&lt;br /&gt;   WHEN 'IT_DATA-EXP'.&lt;br /&gt;     ADD 1 TO PAGE-CURSLINE.&lt;br /&gt;     SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.&lt;br /&gt;   WHEN 'IT_DATA-VALUE1'.&lt;br /&gt;     SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.&lt;br /&gt;   WHEN 'IT_DATA-VALUE2'.&lt;br /&gt;     SET CURSOR FIELD 'IT_DATA-VALUE2' LINE PAGE-CURSLINE.&lt;br /&gt; ENDCASE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM SET_SCROLL_LINE                                          *&lt;br /&gt;* determine the correct line to scroll the re-written report to, so   *&lt;br /&gt;* that the user is returned to the same spot on the screen            *&lt;br /&gt;* if user is mid way between pages, ie two headers are visable on the *&lt;br /&gt;* screen, check if they are on the secondary page and adjust the      *&lt;br /&gt;* scroll variable accordingly so as not to jump up lines because the  *&lt;br /&gt;* scroll variable will be out by the number of lines in the extra hdr *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM SET_SCROLL_LINE.&lt;br /&gt; PAGE-CURSLINE = SYST-LILLI.&lt;br /&gt; PAGE-SCRLLINE = SYST-LILLI - ( SYST-CUROW - PAGE-HDRLINES ).&lt;br /&gt; PAGE-PGELINES = ( PAGE-PAGNO - 1 ) * SYST-LINCT.&lt;br /&gt; PAGE-CPOSTOP = ( PAGE-SCRLLINE + SYST-CUROW ) - PAGE-PGELINES.&lt;br /&gt; PAGE-CPOSBOT = ( PAGE-SCRLLINE - SYST-CUROW ) - PAGE-PGELINES.&lt;br /&gt; PAGE-CPOSIT = PAGE-CPOSTOP + PAGE-CPOSBOT.&lt;br /&gt; PAGE-TWOHDRS = PAGE-HDRLINES * 2.&lt;br /&gt; IF PAGE-CPOSIT LT PAGE-TWOHDRS.&lt;br /&gt;   PAGE-SCRLLINE = PAGE-SCRLLINE + 1.&lt;br /&gt; ENDIF.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM POSITION_LIST                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM POSITION_LIST.&lt;br /&gt; CALL FUNCTION 'LIST_SCROLL_LINE_TOPMOST'&lt;br /&gt;      EXPORTING&lt;br /&gt;           LIST_INDEX = 1&lt;br /&gt;           LIST_LINE  = PAGE-SCRLLINE&lt;br /&gt;      EXCEPTIONS&lt;br /&gt;           OTHERS     = 1.&lt;br /&gt; CHECK SYST-SUBRC = 0.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM TOP_OF_PAGE                                              *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM TOP_OF_PAGE.&lt;br /&gt;* set page-hdrlines = lines in header + 1 system generated blank line&lt;br /&gt; PAGE-HDRLINES = 5.&lt;br /&gt; ULINE.&lt;br /&gt; WRITE : /1 SYST-VLINE, 'Header'(002), AT SYST-LINSZ SYST-VLINE.&lt;br /&gt; WRITE : /1 SYST-VLINE, 'Lines'(003), AT SYST-LINSZ SYST-VLINE.&lt;br /&gt; ULINE.&lt;br /&gt;ENDFORM.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-746298052266927810?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/746298052266927810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=746298052266927810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/746298052266927810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/746298052266927810'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/general-reporting-tree-in-abap.html' title='General - Reporting Tree in ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-4548980644848624481</id><published>2008-07-25T19:20:00.002+05:30</published><updated>2008-07-25T19:21:11.959+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Enhancement'/><title type='text'>List Box in ABAP Report</title><content type='html'>&lt;pre&gt;*&lt;br /&gt;REPORT ZLIST.&lt;br /&gt;&lt;br /&gt;TYPE-POOLS: VRM.&lt;br /&gt;&lt;br /&gt;DATA: NAME  TYPE VRM_ID,&lt;br /&gt;     LIST  TYPE VRM_VALUES,&lt;br /&gt;     VALUE LIKE LINE OF LIST.&lt;br /&gt;&lt;br /&gt;PARAMETERS: PS_PARM(10) AS LISTBOX VISIBLE LENGTH 10.&lt;br /&gt;&lt;br /&gt;AT SELECTION-SCREEN OUTPUT.&lt;br /&gt;&lt;br /&gt;NAME = 'PS_PARM'.&lt;br /&gt;VALUE-KEY = '1'.&lt;br /&gt;&lt;br /&gt;VALUE-TEXT = 'LINE 1'.&lt;br /&gt;APPEND VALUE TO LIST. VALUE-KEY = '2'.&lt;br /&gt;&lt;br /&gt;VALUE-TEXT = 'LINE 2'.&lt;br /&gt;APPEND VALUE TO LIST.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'VRM_SET_VALUES' EXPORTING ID = NAME VALUES = LIST.&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;WRITE: / 'PARAMETER:', PS_PARM.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-4548980644848624481?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/4548980644848624481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=4548980644848624481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4548980644848624481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/4548980644848624481'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/list-box-in-abap-report.html' title='List Box in ABAP Report'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-9143877554284619176</id><published>2008-07-25T19:20:00.001+05:30</published><updated>2008-07-25T19:20:49.545+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Enhancement'/><title type='text'>Example Code For Drill Down Report in SAP ABAP</title><content type='html'>&lt;pre&gt;REPORT  zmm_rept_purchorderkkb01 LINE-SIZE 80&lt;br /&gt;                                LINE-COUNT 65(3)&lt;br /&gt;                                MESSAGE-ID z_msg_class&lt;br /&gt;                                NO STANDARD PAGE HEADING.&lt;br /&gt;&lt;br /&gt;*------------------DECLARING THE STANDARD TABLES---------------------*&lt;br /&gt;TABLES : ekko, "PURCHASE ORDER : HEADER&lt;br /&gt;        ekpo. "PURCHASE ORDER : ITEM&lt;br /&gt;&lt;br /&gt;*------------------DECLARING THE INTERNAL TABLE----------------------*&lt;br /&gt;DATA  : BEGIN OF it_ekko OCCURS 2,&lt;br /&gt;         ebeln LIKE ekko-ebeln, "PURCHASE ORDER NUMBER&lt;br /&gt;         bukrs LIKE ekko-bukrs, "COMPANY CODE&lt;br /&gt;         bsart LIKE ekko-bsart, "PURCHASING DOCUMENT TYPE&lt;br /&gt;         lifnr LIKE ekko-lifnr, "VENDOR&lt;br /&gt;         spras LIKE ekko-spras, "LANGUAGE KEY&lt;br /&gt;         zterm LIKE ekko-zterm, "PAYMENT TERMS KEY&lt;br /&gt;       end of it_ekko.&lt;br /&gt;&lt;br /&gt;DATA  : BEGIN OF it_ekpo OCCURS 2,&lt;br /&gt;         ebeln LIKE ekpo-ebeln, "PURCHASE ORDER NUMBER&lt;br /&gt;         ebelp LIKE ekpo-ebelp, "PURCHASE ORDER NUMBER&lt;br /&gt;         werks LIKE ekpo-werks, "PLANT&lt;br /&gt;         matnr LIKE ekpo-matnr, "MATERIAL NUMBER&lt;br /&gt;         matkl LIKE ekpo-matkl, "MATERIAL GROUP&lt;br /&gt;       END OF it_ekpo.&lt;br /&gt;&lt;br /&gt;DATA: it_ebeln LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;*DATA: it_ebeln_high LIKE ekko-ebeln OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;DATA: p_ebeln       TYPE i.&lt;br /&gt;&lt;br /&gt;*------------------Declaring the selection screen--------------------*&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.&lt;br /&gt;&lt;br /&gt;SELECT-OPTIONS : s_ebeln FOR ekko-ebeln.&lt;br /&gt;&lt;br /&gt;PARAMETER      : p_limit TYPE i.&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN END OF BLOCK blk1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*INCLUDE z_incl_purorderkkb01_sub_f01.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;*  Validation for  number of records to be printed                   *&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*AT SELECTION-SCREEN ON p_limit.&lt;br /&gt;*  IF p_limit IS INITIAL.&lt;br /&gt;*    MESSAGE e011.&lt;br /&gt;*  ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*  IF p_limit GT sy-linct.&lt;br /&gt;*    MESSAGE e010.&lt;br /&gt;*  ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*        Search help for purchase document number (s_ebeln-low)        *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-low.&lt;br /&gt; CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'&lt;br /&gt;   EXPORTING&lt;br /&gt;     input  = s_ebeln-low&lt;br /&gt;   IMPORTING&lt;br /&gt;     output = s_ebeln-low.&lt;br /&gt;&lt;br /&gt; perform form_search_help.&lt;br /&gt;&lt;br /&gt; IF sy-subrc &lt;&gt; 0.&lt;br /&gt;   CASE sy-subrc.&lt;br /&gt;     WHEN 2.&lt;br /&gt;       LEAVE TO SCREEN 1000.&lt;br /&gt;   ENDCASE.&lt;br /&gt; ELSE.&lt;br /&gt;   LOOP AT it_ebeln.&lt;br /&gt;     IF sy-tabix = p_ebeln.&lt;br /&gt;       s_ebeln-low = it_ebeln.&lt;br /&gt;       EXIT.&lt;br /&gt;     ENDIF.&lt;br /&gt;   ENDLOOP.&lt;br /&gt; ENDIF.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*        Search help for purchase document number (s_ebeln-high)       *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ebeln-high.&lt;br /&gt; CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'&lt;br /&gt;   EXPORTING&lt;br /&gt;     input  = s_ebeln-high&lt;br /&gt;   IMPORTING&lt;br /&gt;     output = s_ebeln-high.&lt;br /&gt;&lt;br /&gt; perform form_search_help.&lt;br /&gt;&lt;br /&gt; IF sy-subrc &lt;&gt; 0.&lt;br /&gt;   CASE sy-subrc.&lt;br /&gt;     WHEN 2.&lt;br /&gt;       LEAVE TO SCREEN 1000.&lt;br /&gt;   ENDCASE.&lt;br /&gt; ELSE.&lt;br /&gt;   LOOP AT it_ebeln.&lt;br /&gt;     IF sy-tabix = p_ebeln.&lt;br /&gt;       s_ebeln-high = it_ebeln.&lt;br /&gt;       EXIT.&lt;br /&gt;     ENDIF.&lt;br /&gt;   ENDLOOP.&lt;br /&gt; ENDIF.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                   Start-of-selection event                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;*----------------------To attach a user interface----------------------*&lt;br /&gt;SET PF-STATUS '0010'.&lt;br /&gt;&lt;br /&gt;*---------To fetch the data for the basic list-------------------------*&lt;br /&gt;   SELECT ebeln                   "PURCHASE ORDER NUMBER&lt;br /&gt;          bukrs                   "COMPANY CODE&lt;br /&gt;          bsart                   "PURCHASING DOCUMENT TYPE&lt;br /&gt;          lifnr                   "VENDOR&lt;br /&gt;          spras                   "LANGUAGE KEY&lt;br /&gt;          zterm                   "PAYMENT TERMS KEY&lt;br /&gt;    up to p_limit rows&lt;br /&gt;    into table it_ekko from ekko&lt;br /&gt;    where ebeln in s_ebeln.&lt;br /&gt;&lt;br /&gt;    REFRESH it_ekpo.&lt;br /&gt;&lt;br /&gt;*---------To fetch the data for the secondary list-----------------------*&lt;br /&gt;&lt;br /&gt;if it_ekpo is initial.&lt;br /&gt;&lt;br /&gt;   SELECT ebeln "PURCHASE ORDER NUMBER&lt;br /&gt;          ebelp "PURCHASING DOCUMENT TYPE&lt;br /&gt;          werks "PLANT&lt;br /&gt;          matnr "MATERIAL NUMBER&lt;br /&gt;          matkl "MATERIAL GROUP&lt;br /&gt;   FROM ekpo  INTO TABLE it_ekpo for all entries in it_ekko&lt;br /&gt;   WHERE ebeln EQ it_ekko-ebeln.&lt;br /&gt;&lt;br /&gt;endif.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                   End-of-selection event                             *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*---------To display the data for the basic list-----------------------*&lt;br /&gt;  format color 4 intensified off.&lt;br /&gt; LOOP AT it_ekko.&lt;br /&gt;   WRITE :/ sy-vline, it_ekko-ebeln UNDER text-002, 18 sy-vline,&lt;br /&gt;                                                   "PURCHASE ORDER NUMBER&lt;br /&gt;                      it_ekko-bukrs UNDER text-003, 27 sy-vline,&lt;br /&gt;                                                   "COMPANY CODE&lt;br /&gt;                      it_ekko-bsart UNDER text-004, 38 sy-vline,&lt;br /&gt;                                                   "PURCHASING DOCUMENT TYPE&lt;br /&gt;                      it_ekko-lifnr UNDER text-005, 50 sy-vline,&lt;br /&gt;                                                   "VENDOR&lt;br /&gt;                      it_ekko-spras UNDER text-006, 62 sy-vline,&lt;br /&gt;                                                   "LANGUAGE KEY&lt;br /&gt;                      it_ekko-zterm UNDER text-007, 80 sy-vline.&lt;br /&gt;                                                   "PAYMENT TERMS KEY&lt;br /&gt;&lt;br /&gt; hide : it_ekko-ebeln.&lt;br /&gt; ENDLOOP.&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                To generate the detailed lists                        *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;AT LINE-SELECTION.&lt;br /&gt; CASE sy-lsind.&lt;br /&gt;   WHEN 1.&lt;br /&gt;     SET PF-STATUS '0011'.&lt;br /&gt;&lt;br /&gt;*---------To display the data for the secondary list-----------------------*&lt;br /&gt;WINDOW STARTING AT 10 10&lt;br /&gt;      ENDING   AT 90 30.&lt;br /&gt;   format color 5 intensified off.&lt;br /&gt; LOOP AT it_ekpo where ebeln = it_ekko-ebeln .&lt;br /&gt;   WRITE :/ sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline,&lt;br /&gt;                                                    "PURCHASE ORDER NUMBER&lt;br /&gt;                      it_ekpo-ebelp UNDER text-008, 30 sy-vline,&lt;br /&gt;                                                    "PO ITEM NUMBER&lt;br /&gt;                      it_ekpo-werks UNDER text-009, 45 sy-vline,&lt;br /&gt;                                                    "PLANT&lt;br /&gt;                      it_ekpo-matnr UNDER text-010, 60 sy-vline,&lt;br /&gt;                                                    "MATERIAL NUMBER&lt;br /&gt;                      it_ekpo-matkl UNDER text-011, 80 sy-vline.&lt;br /&gt;                                                    "MATERIAL GROUP&lt;br /&gt; ENDLOOP.&lt;br /&gt;&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt;&lt;br /&gt; ENDCASE.&lt;br /&gt;&lt;br /&gt; CASE sy-ucomm.&lt;br /&gt;   WHEN 'EXIT' OR 'CANC' OR 'BACK'.&lt;br /&gt;      LEAVE TO SCREEN 0.&lt;br /&gt; ENDCASE.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                    At user-command event                             *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;AT USER-COMMAND.&lt;br /&gt; CASE sy-ucomm.&lt;br /&gt;   WHEN 'SELE' OR 'LIST1'.&lt;br /&gt;     IF sy-lsind = 1.&lt;br /&gt;     SET PF-STATUS '0011'.&lt;br /&gt;&lt;br /&gt;*---------To display the data for the secondary list-----------------------*&lt;br /&gt;&lt;br /&gt;WINDOW STARTING AT 10 10&lt;br /&gt;      ENDING   AT 90 30.&lt;br /&gt;      format color 5 intensified off.&lt;br /&gt;&lt;br /&gt; LOOP AT it_ekpo where ebeln = it_ekko-ebeln .&lt;br /&gt;   WRITE :/ sy-vline, it_ekpo-ebeln UNDER text-002, 15 sy-vline, "PURCHASE ORDER NUMBER&lt;br /&gt;                      it_ekpo-ebelp UNDER text-008, 30 sy-vline, "PO ITEM NUMBER&lt;br /&gt;                      it_ekpo-werks UNDER text-009, 45 sy-vline, "PLANT&lt;br /&gt;                      it_ekpo-matnr UNDER text-010, 60 sy-vline, "MATERIAL NUMBER&lt;br /&gt;                      it_ekpo-matkl UNDER text-011, 80 sy-vline. "MATERIAL GROUP&lt;br /&gt;&lt;br /&gt; ENDLOOP.&lt;br /&gt;&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt; endif.&lt;br /&gt;&lt;br /&gt; ENDCASE.&lt;br /&gt;&lt;br /&gt; CASE sy-ucomm.&lt;br /&gt;   WHEN 'EXIT' OR 'CANC' OR 'BACK'.&lt;br /&gt;      LEAVE TO SCREEN 0.&lt;br /&gt;&lt;br /&gt; ENDCASE.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                    Top-of-page for basic list                        *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;TOP-OF-PAGE.&lt;br /&gt;&lt;br /&gt;format color 3 intensified off.&lt;br /&gt;&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt; WRITE :/    sy-vline,&lt;br /&gt;          03 sy-repid,&lt;br /&gt;          60 text-015,&lt;br /&gt;             sy-uname,&lt;br /&gt;          80 sy-vline.&lt;br /&gt; WRITE :/ sy-vline, 03 sy-datum,&lt;br /&gt;          35 text-012,&lt;br /&gt;          60 text-014,&lt;br /&gt;             sy-pagno,&lt;br /&gt;          80 sy-vline.&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt; WRITE :/ sy-vline, text-002, 18 sy-vline, "PURCHASE ORDER NUMBER&lt;br /&gt;                    text-003, 27 sy-vline, "COMPANY CODE&lt;br /&gt;                    text-004, 38 sy-vline, "PURCHASING DOCUMENT TYPE&lt;br /&gt;                    text-005, 50 sy-vline, "VENDOR&lt;br /&gt;                    text-006, 62 sy-vline, "LANGUAGE KEY&lt;br /&gt;                    text-007, 80 sy-vline. "PAYMENT TERMS KEY&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*              Top-of-page for secondary list                          *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;TOP-OF-PAGE DURING LINE-SELECTION.&lt;br /&gt;format color 2 intensified off.&lt;br /&gt;WINDOW STARTING AT 10 10&lt;br /&gt;      ENDING   AT 90 30.&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt; WRITE :/   sy-vline,&lt;br /&gt;         03 sy-repid,&lt;br /&gt;         60 text-015,&lt;br /&gt;            sy-uname,&lt;br /&gt;         80 sy-vline.&lt;br /&gt;&lt;br /&gt; WRITE :/   sy-vline,&lt;br /&gt;         03 sy-datum,&lt;br /&gt;         35 text-013,&lt;br /&gt;         60 text-014,&lt;br /&gt;            sy-pagno,&lt;br /&gt;         80 sy-vline.&lt;br /&gt;&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt;&lt;br /&gt; WRITE :/ sy-vline, text-014, 15 sy-vline, "PURCHASE ORDER NUMBER&lt;br /&gt;                    text-008, 30 sy-vline, "PO ITEM NUMBER&lt;br /&gt;                    text-009, 45 sy-vline, "PLANT&lt;br /&gt;                    text-010, 60 sy-vline, "MATERIAL NUMBER&lt;br /&gt;                    text-011, 80 sy-vline. "MATERIAL GROUP&lt;br /&gt;&lt;br /&gt; WRITE :/ sy-uline(80).&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                    End-of-page event                                 *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;END-OF-PAGE.&lt;br /&gt; WRITE :/    sy-vline,&lt;br /&gt;          03 text-016,&lt;br /&gt;             p_limit,&lt;br /&gt;          60 text-014,&lt;br /&gt;             sy-pagno,&lt;br /&gt;          80 sy-vline.&lt;br /&gt; write:/ sy-uline(80).&lt;br /&gt;&lt;br /&gt;INCLUDE Z_INCLUDE_PURCHORDERKKB01.&lt;br /&gt;form form_search_help .&lt;br /&gt;&lt;br /&gt;REFRESH it_ebeln.&lt;br /&gt; CLEAR it_ebeln.&lt;br /&gt; CLEAR P_ebeln.&lt;br /&gt;&lt;br /&gt; SELECT ebeln FROM ekko INTO TABLE it_ebeln.&lt;br /&gt;&lt;br /&gt; CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'&lt;br /&gt;   EXPORTING&lt;br /&gt;     endpos_col   = 21&lt;br /&gt;     endpos_row   = 35&lt;br /&gt;     startpos_col = 12&lt;br /&gt;     startpos_row = 1&lt;br /&gt;     titletext    = text-012&lt;br /&gt;&lt;br /&gt;   IMPORTING&lt;br /&gt;     choise       = P_ebeln&lt;br /&gt;&lt;br /&gt;   TABLES&lt;br /&gt;     valuetab     = it_ebeln&lt;br /&gt;&lt;br /&gt;   EXCEPTIONS&lt;br /&gt;     break_off    = 1&lt;br /&gt;     OTHERS       = 2.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-9143877554284619176?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/9143877554284619176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=9143877554284619176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/9143877554284619176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/9143877554284619176'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/example-code-for-drill-down-report-in.html' title='Example Code For Drill Down Report in SAP ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-5984064826552020480</id><published>2008-07-25T19:19:00.002+05:30</published><updated>2008-07-25T19:20:07.797+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Enhancement'/><title type='text'>TABStrips in ABAP</title><content type='html'>&lt;pre&gt;*&lt;br /&gt;* Different Selection Options separated by Tabstrips 1,2 and 3&lt;br /&gt;*&lt;br /&gt;&lt;a href="http://www.sap-img.com/index.htm" target="_top"&gt;&lt;br /&gt;&lt;/a&gt;*&lt;br /&gt;REPORT  ZTABSTRIPS  LINE-SIZE 120&lt;br /&gt;       NO STANDARD PAGE HEADING.&lt;br /&gt;&lt;br /&gt;TABLES: ekko, ekpo, eket, marc, t134h.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*   Tab Strips 1&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK vendor WITH FRAME TITLE text-t00.&lt;br /&gt;SELECT-OPTIONS vendor FOR ekko-lifnr.&lt;br /&gt;SELECTION-SCREEN SKIP.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;SELECTION-SCREEN COMMENT (10) text-m01.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN SKIP.&lt;br /&gt;SELECT-OPTIONS vplant FOR ekko-reswk.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK vendor.&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 101.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*   Tab Strips 2&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK data1 WITH FRAME TITLE text-t02.&lt;br /&gt;SELECT-OPTIONS: busarea FOR t134h-gsber,&lt;br /&gt;               plant   FOR ekpo-werks,&lt;br /&gt;               puorg   FOR ekko-ekorg.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK data1.&lt;br /&gt;SELECTION-SCREEN SKIP.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK data2 WITH FRAME TITLE text-t03.&lt;br /&gt;SELECT-OPTIONS  sched   FOR ekko-ebeln.&lt;br /&gt;SELECT-OPTIONS  matl    FOR ekpo-matnr.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK data2.&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 102.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*   Tab Strips 3&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK rype WITH FRAME TITLE text-t04.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS del RADIOBUTTON GROUP one.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(35) text-c05 FOR FIELD del.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS fix RADIOBUTTON GROUP one.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(35) text-c06 FOR FIELD fix.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK rype.&lt;br /&gt;SELECTION-SCREEN SKIP.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK interval WITH FRAME TITLE text-t05.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS mon RADIOBUTTON GROUP two.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(15) text-c01 FOR FIELD mon.&lt;br /&gt;PARAMETERS evalmon TYPE spbup.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS wek RADIOBUTTON GROUP two.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(15) text-c02 FOR FIELD wek.&lt;br /&gt;PARAMETERS evalweek TYPE sptag.&lt;br /&gt;SELECTION-SCREEN COMMENT 35(30) text-i01.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK interval.&lt;br /&gt;SELECTION-SCREEN SKIP.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK type WITH FRAME TITLE text-t01.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS ext RADIOBUTTON GROUP thr.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(15) text-c08 FOR FIELD int.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS int RADIOBUTTON GROUP thr.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(15) text-c07 FOR FIELD ext.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK type.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK pre WITH FRAME TITLE text-t06.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS vn RADIOBUTTON GROUP slv.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(15) text-c09 FOR FIELD vn.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS bp RADIOBUTTON GROUP slv.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(17) text-c10 FOR FIELD bp.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK pre.&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 103.&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN BEGIN OF TABBED BLOCK uno FOR 20 LINES.&lt;br /&gt;SELECTION-SCREEN TAB (15) name1 USER-COMMAND ucomm1&lt;br /&gt;DEFAULT SCREEN 101.&lt;br /&gt;SELECTION-SCREEN TAB (17) name2 USER-COMMAND ucomm2&lt;br /&gt;DEFAULT SCREEN 102.&lt;br /&gt;SELECTION-SCREEN TAB (23) name3 USER-COMMAND ucomm3&lt;br /&gt;DEFAULT SCREEN 103.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK uno.&lt;br /&gt;&lt;br /&gt;INITIALIZATION.&lt;br /&gt; name1 = text-n01.&lt;br /&gt; name2 = text-n02.&lt;br /&gt; name3 = text-n03.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-5984064826552020480?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/5984064826552020480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=5984064826552020480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/5984064826552020480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/177530344658880345/posts/default/5984064826552020480'/><link rel='alternate' type='text/html' href='http://allsapabaplive.blogspot.com/2008/07/tabstrips-in-abap.html' title='TABStrips in ABAP'/><author><name>Technology</name><uri>http://www.blogger.com/profile/02848910784152231987</uri><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-177530344658880345.post-4715414830504453014</id><published>2008-07-25T19:19:00.001+05:30</published><updated>2008-07-25T19:19:32.745+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Enhancement'/><title type='text'>A demo program to create subscreen in your ABAP Program</title><content type='html'>&lt;p&gt;*&lt;br /&gt;* A demo program to create subscreen in your ABAP Program&lt;br /&gt;*&lt;br /&gt;* This report will display the user last login date and time.&lt;br /&gt;*&lt;br /&gt;* Subscreen selection 1 : User Name&lt;br /&gt;*                                2 : Last Login Date&lt;br /&gt;*                                3 : Class Belong To&lt;br /&gt;*&lt;br /&gt;* Written by : SAP Basis, ABAP Programming and Other IMG Stuff&lt;br /&gt;*                 &lt;br /&gt;* &lt;/p&gt;&lt;pre&gt;REPORT ZSUBSCREEN.&lt;br /&gt;&lt;br /&gt;TABLES: USR02,       "Logon data&lt;br /&gt;       SSCRFIELDS.  "FIELDS ON SELECTION SCREENS&lt;br /&gt;*---------------------------------------------------------------&lt;br /&gt;* SUBSCREEN 1&lt;br /&gt;*---------------------------------------------------------------&lt;br /&gt;SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-010.&lt;br /&gt;  SELECT-OPTIONS: USERNAME FOR USR02-BNAME.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK B1.&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 100.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------&lt;br /&gt;* SUBSCREEN 2&lt;br /&gt;*---------------------------------------------------------------&lt;br /&gt;SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-020.&lt;br /&gt;  SELECT-OPTIONS: LASTLOGI FOR USR02-TRDAT.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK B2.&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 200.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------&lt;br /&gt;* SUBSCREEN 3&lt;br /&gt;*---------------------------------------------------------------&lt;br /&gt;SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-030.&lt;br /&gt;  SELECT-OPTIONS: CLASSTYP FOR USR02-CLASS.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK B3.&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 300.&lt;br /&gt;&lt;br /&gt;* STANDARD SELECTION SCREEN FOR SCROLLING LEFT AND RIGHT&lt;br /&gt;SELECTION-SCREEN: FUNCTION KEY 1,&lt;br /&gt;                 FUNCTION KEY 2.&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN: BEGIN OF TABBED BLOCK SUB FOR 15 LINES,&lt;br /&gt;                 END OF BLOCK SUB.&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;   SELECT * FROM USR02 WHERE BNAME IN USERNAME&lt;br /&gt;                         AND ERDAT IN LASTLOGI&lt;br /&gt;                         AND CLASS IN CLASSTYP.&lt;br /&gt;      WRITE: / 'User ', USR02-BNAME,&lt;br /&gt;               'Last Login Date ', USR02-TRDAT,&lt;br /&gt;               'Last Login Time ', USR02-LTIME,&lt;br /&gt;               'CLASS ', USR02-CLASS.&lt;br /&gt;   ENDSELECT.&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;INITIALIZATION.&lt;br /&gt;* SCREEN ICON LEFT AND RIGHT&lt;br /&gt; SSCRFIELDS-FUNCTXT_01 = '@0D@'.&lt;br /&gt; SSCRFIELDS-FUNCTXT_02 = '@0E@'.&lt;br /&gt; SUB-PROG = SY-REPID.&lt;br /&gt; SUB-DYNNR = 100.&lt;br /&gt;&lt;br /&gt;AT SELECTION-SCREEN.&lt;br /&gt; CASE SY-DYNNR.&lt;br /&gt;&lt;br /&gt;   WHEN 100.&lt;br /&gt;     IF SSCRFIELDS-UCOMM = 'FC01'.&lt;br /&gt;       SUB-DYNNR = 300.&lt;br /&gt;     ELSEIF SSCRFIELDS-UCOMM = 'FC02'.&lt;br /&gt;       SUB-DYNNR = 200.&lt;br /&gt;     ENDIF.&lt;br /&gt;&lt;br /&gt;   WHEN 200.&lt;br /&gt;     IF SSCRFIELDS-UCOMM = 'FC01'.&lt;br /&gt;       SUB-DYNNR = 100.&lt;br /&gt;     ELSEIF SSCRFIELDS-UCOMM = 'FC02'.&lt;br /&gt;       SUB-DYNNR = 300.&lt;br /&gt;     ENDIF.&lt;br /&gt;&lt;br /&gt;   WHEN 300.&lt;br /&gt;     IF SSCRFIELDS-UCOMM = 'FC01'.&lt;br /&gt;       SUB-DYNNR = 200.&lt;br /&gt;     ELSEIF SSCRFIELDS-UCOMM = 'FC02'.&lt;br /&gt;       SUB-DYNNR = 100.&lt;br /&gt;     ENDIF.&lt;br /&gt; ENDCASE.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/177530344658880345-4715414830504453014?l=allsapabaplive.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://allsapabaplive.blogspot.com/feeds/4715414830504453014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=177530344658880345&amp;postID=4715414830504453014' titl
