[ABAP Part Three] Program Development Phase 3 -- Call Query Form Introduction

  SAP ABAP Queries Introduction

Why ABAP/4 Queries?

Many times a need arises for SAP Users and Functional Consultants to generate quick reports without getting any ABAP coding done – time taken to complete the coding in development, transport and test it in QA system and then transport to production – is sometimes too long. In such cases, ABAP/4 query is a tool provided by SAP for generating these kind of reports.

This document aims at explaining the concept of ABAP/4 query in a simple and straight forward manner. The reader of this document should have a moderate knowledge of ABAP concepts and authorizations for understanding the concept of ABAP query.

Type of Report Desired

Before starting to write an ABAP query, its advisable to decide the type of report that the user wants. ABAP query provides the following type of reports:

  • Basic List        Simple report

  • Statistics         Report containing statistical functions like Average &Percentage

  • Ranked List     Report written for analytical purpose

Read This Nugget
The output is always seen in the order of Basic List, then Statistics and then Ranked List if any. One ABAP query can have one basic list, maximum of 9 statistics and maximum of 9 ranked lists.

In a nutshell, an ABAP/4 query can be designed in four steps

  1. Creation of a user group

  2. Creation of functional area

  3. Assignment of user group to functional area

  4. Creation of the query based on functional area

The various objects that form an ABAP query can be created in the following 2 ways:

Tools => ABAP/4 Workbench => Utilities => ABAP/4 Query

OR

By executing the transaction codes mentioned below

  • SQ01   ABAP/4 Query

  • SQ02   Functional Area

  • SQ03   User group

Step I       Create Functional Area

In the functional area section, the user indicates from which part of the SAP database the data is going to be retrieved and how the data is to be retrieved by the query. One functional area can be assigned to many user groups. A functional area can be created with or without a logical database.

To create a functional area with a logical database, one has to mention the name of the database and then select the fields from the tables that form the logical database.

 

To create the functional area with a logical database

  • Tools => ABAP/4 Workbench => Utilities => ABAP/4 query => Functional Areas.

  • Give the functional area name and click on Create button

  • In the next screen give a brief description of the functional area

  • Specify the name of the logical database, for e.g. Database FI, Application S. This will be the definition for the flight database

  • Click on the button Functional Group present on the application toolbar, in order to create the functional group for the required fields from the logical database tables

  • In the functional group box mention the number of the functional group and the description for the functional group

  • The tables from the logical database are shown in Tables Of Logical Database/Joins while the fields are displayed in the Fields Box

  • Double click on the table name in order to change the list

  • Every field that has to be selected in the query should be assigned a functional group number against it

  • Sometimes the list of fields in the Fields box will not be completely visible. To have a wider display of the list place the cursor in the fields box area and click on Settings => Full Screen from the SAP menu bar

  • To see the fields from different tables select the table and double click on it.

  • Once the required fields are selected, save the functional Area by clicking on the SAVE icon on the toolbar, and then Generate the Functional Area by clicking the Generate icon on the toolbar

  • To add user defined fields to the abap query use the menu bar option GOTO => Additional Field

  • Give the field name and the table name from the logical database to which the field needs to be included. Click the ENTER button.

  • On the next screen give the Sequence, description, title and the technical attributes for the field (field type, length). Here you can also specify the formula for the field. Click on the SAVE button to register the data to the database.

  • Remember that the sequence of the field matters – if the second field uses the first field in its code then the second field should have a higher sequence than the first. Tables can also be included – to do this use the menu option Goto => Additional Tables

  • You can include your own selection criteria and parameters to control the data to be selected from the database. For these additions to get activated, code needs to be written for taking care of the additional fields.

  • To display something before the execution of the actual query, go to the start of selection event via the menu path Goto => Code => Start-of-selection.

  • To display something just before or after the output of the query, go to the end of selection event via the menu path Goto => Code => End-of-selection.

  • To display something at the beginning of the page, go to the top of page event via the menu path Goto => Code => Top-of-page.

After finishing everything save and generate the functional area and click on the BACK icon to come out. 

To create a functional area without a logical database

One of the following can be selected

  • Based on a single table

  • Using an ABAP/4 program

  • Using Table Joins

  • Using Sequential Dataset

The steps to be followed for creating the functional area are as follows

  • Tools => ABAP/4 Workbench => Utilities => ABAP/4 query => Functional Areas.

  • Give the functional area name and click on Create button

  • In the next screen give a brief description of the functional area

  • In the Without a logical database area give the base table on which to form the ABAP query

  • To form the query with two or three tables, we need to create a join. For this check the Table Join Check Box and click on the Table Join button.

NOTE: The tables to be used in the join should have at least one field in common i.e. it should have the same name, domain or data element.

Mention the tables that you want to include in the join condition in the Joined Tables area and press ENTER.

A checkbox will appear against the table names on the left side, and three radio buttons will appear against the tables on the right side specifying the join type.

  • Base table name remains grayed out. Select the two tables to be involved in the join by clicking the check boxes against them. Use menu path Edit => Join => Define condition to create the join. A mapping between the tables will be displayed on the right hand side. Click on the button provided (with + and down arrow symbol) to specify the join.

  • Click YES on the Proposal Requested message that gets displayed.

  • If the join tables have a foreign key relationship then the common fields in the tables will be marked with 00 to indicate that the join has been created. User can create the join by specifying 00, 01 etc. against the fields that qualify for the join.

  • Complete the join condition by adding more tables if necessary.

Remaining concepts for creating the functional area without a logical database are same as the concepts for creating the functional area with a logical database.

After finishing everything save and generate the functional area and click on the BACK icon to come out. 
 

STEP II    Creating User Group

Here you specify the users who should be authorized to run the query. A user group is always associated with a Functional Area.

·         Go to the menu path Environment => User Group. Give a user group name in the screen that comes next.

·         Specify the sap logins of the users whom you want to authorize for using the functional area and click on the Create button.

·         Use the menu path Assign Functional Area to assign the functional area to the user group.

·         Save the user group and back out of the screen by clicking the Back button.

Note: One user group can be assigned to any number of functional areas with logical database or without logical database.

The final step is to create the actual query.

 

STEP III   Creating The Query

·         In order to create the query use the menu path Environment => Queries

·         Give a name to the query and click on the Create button

·         Give the description of the query in the next screen. Specify the output length and select the processing option from the Further Processing Options box. The data can be displayed in various formats such as table, download to a file, and display in Word etc.

·         Click on the Next screen icon. Select the functional group screen. All the functional groups created in the functional area are displayed. Select the groups that you desire – fields from only these groups will be displayed in the output. Click on the respective check boxes and click on the Next Screen icon.

·         The Select Field screen gets displayed. Select all the fields from the user group that you need to display on the output of the query. If required, specify the short names for the fields using the menu path Edit => Short Names => Switch On/Off or you can also change the selection text contains in the order you want to appear on the selection screen. You can also maintain column headers for the fields by using the menu path Edit => Column Header => Maintain.

·         Click on the Next Screen icon to get the Selections Screen. Here you can check against the fields that you require to be shown on the selection screen.

·         Now we need to specify the output type for the query as Basic List, Statistics or Ranked List. Choose the option Basic List.

·         On the Basic List line structure screen the following things can be done

o        Specify the report layout in detail – lines on which the fields will appear.

o        Order in which the fields will appear in the output

o        Sort order for the fields – this is optional.

o        For the numeric fields you can check against the fields for which you require totals in the output.

o        Beautify the output according to the options provided.

·         Click on the next screen icon, to specify the control levels as mentioned below

o        Specify the sort order. The default sort order is ascending and can be changed to descending if required.

o        Totals for each field selected for sorting can be displayed

o        To display the output of a field in a box click on the check box against box. To display a line after the output of a field, click on the check box against BlnkLn

o        To display the output of a field on a new page click on the check box against New Page

·         Click on the next screen icon to get the List Line options Screen. Here you can specify the background color for displaying the output.

·         Click on the next screen icon to get the Field Output Option screen. In this you can specify the following:

o        Change the output length or the display positions of the fields

o        Specify the display position of the unit for quantity or currency fields. Click left radio button to display it before the figure, middle radio button to display it after the figure while last radio button to hide the unit altogether.

o        Specify color for the column of every field under the Format option.

o        Specify the label against the output of sort fields.

·         Click on the Next screen option to go to the Basic List Header screen. Here you can specify

o        Give page header and page footer for the output

o        Include user name and date by specifying &N and &D respectively.

 

After providing all the above options you can save the query and execute it by clicking the Execute button twice.

 

Ranked List and Statistics

Same process mentioned above can be used for generating Ranked list and statistics. The only difference is that you should choose Ranked list or statistic instead of Basic List. 

Ranked lists are special outputs where numeric values are summed for key terms and displayed in the table, and the sorting is always by a numeric value called Ranked List Criterion. Only a certain number of additional items are displayed on the output. 

One query can have many ranked lists – hence every ranked list should be assigned a title. The default entries in the ranked list can be 10 but user can also change the number.  

One of the fields should be defined as the ranked list criterion. The default sort sequence for this field is descending but ascending order can also be specified. An output length and a rounding factor can also be defined.

 In case of statistics, a reference currency or reference units to convert all the amounts for the currency fields and quantity fields. You can also maintain the header and specify graphic parameters for statistics.

 To define another ranked list choose the menu option Next Ranked List.

 

Retrieving Data Using Program

Sometimes a situation arises when an ABAP query’s automatic data retrieval facility is not enough to get the desired results. In that case, the steps up to creating the functional area are the same. Only difference is that on the Title and Database screen specify a structure in the field Table and select the field Data Retrieval Using Program.

The default report name given by the system can be overwritten.

This report needs to be defined before hand – because it is used as a model while generating the query report. Thus the report itself remains unchanged but based on that another one is created.

Note: Ensure that the report is free of syntax errors and has the same fixed point arithmetic settings as the functional area.

General Format Of the Report

A typical report of this type will have the following format:

Report <report name>.

Tables: <list of dictionary structures to be used>.

Parameters: <name of parameters>.

Select-options: <name of select options>.

Data: < all internal tables>.

*<query head> This comment should always be after data declarations.

Beginning of a loop to retrieve each record and place it in the field string tab.

Select, do-enddo, loop, etc.

<code to format the data>.

*<query body> This comment should always be the last statement in the loop.

At this stage the data will come into the field string.

Endselect, enddo, endloop.

 

ABAP Query Authorizations

To use an ABAP query, the user must have appropriate authorizations. Two ways of providing authorizations to the users are as follows:

User groups

The user should be a part of at least one user group to run the corresponding ABAP query. This automatically restricts the access of the user to specific functional areas, and thus the corresponding underlying logical databases.

Authorizations

The authorization object S_QUERY should be used to give proper authorizations to the user for a query. This authorization object has a field named ACTVT which can take values 02 for Change, 23 for Maintain and 67 for Translate.

This value determines whether the user can create and modify the query. The possible authorizations in the object are as follows: 

  • S_QUERY_ALL          Change, maintain and translate query

  • S_QUERY_UPD         Change and Translate

Though the general concept of an ABAP query is moderately difficult, the results and the long term use of the ABAP query is worth the effort.

I hope you have found this introduction useful.

.... To be continue

posted @ 2007-07-05 23:20  Slashout  阅读(774)  评论(0编辑  收藏  举报