Sap Abap Reports

April 26, 2018 | Author: Pavan | Category: Data Management, Databases, Information Science, Computer Engineering, Computer Data
Share Embed Donate


Short Description

SAP ABAP Reports with sample logic and screen shots...

Description

Created by Pavan Mail: [email protected]

Page 1 of 107

Reports:

In ABAP, there are total of 7 types of reports. They are: • • • • • • •

Classical Interactive Logical Database ABAP query ALV Reports (ALV stands for ABAP List Viewer) Report Writer/Report Painter Views (There are different types of views also)

Classical Reports These are the simplest reports. Programmers learn this one first. It is just an output of data using the Write statement inside a loop. •

Classical reports are normal reports. These reports are not having any sub reports. IT IS HAVING ONLY ONE SCREEN/LIST FOR OUTPUT.

Events In Classical Reports. • • •

INTIALIZATION: This event triggers before selection screen display. AT-SELECTION-SCREEN: This event triggers after processing user input still selection screen is in active mode. START OF SELECTION: Start of selection screen triggers after processing selection screen.

END-OF-SELECTION: It is for Logical Database Reporting. Event blocks are introduced by an event keyword. They end when the next processing block begins. The following processing block can either be an event block or another processing block allowed in this context – for example, a subroutine or a dialog module. Event keywords have the same name as the events to which they react.

Created by Pavan Mail: [email protected]

Page 2 of 107

Syntax: DATA:... INITIALIZATION. ... AT SELECTION-SCREEN. ... START-OF-SELECTION. ... GET spfli... ..

... END-OF-SELECTION. ... FORM... ... ENDFORM.

The sequence in which the processing blocks occur in the program is irrelevant. The actual processing sequence is determined by the external events. However, to make your programs easier to understand, you should include the event blocks in your program in approximately the same order in which they will be called by the system. Subroutines should be placed at the end of the program. With only two exceptions (AT SELECTION-SCREEN and GET), event blocks have no local data area. All declarative statements in event blocks are handled with the global data declarations in the program. You should therefore include all of your declarations at the start of the program. Statements that are not assigned to a processing block are never executed. In executable programs, all non-declarative statements between the REPORT or PROGRAM statement and the first processing block are assigned to the default event START-OF-SELECTION. if a program does not contain an explicit

Created by Pavan Mail: [email protected]

Page 3 of 107

START-OF-SELECTION event block, these statements form the entire START-OF-SELECTION block. If a program contains an explicitly defined START-OF-SELECTION event block, these statements are inserted at the beginning of this event block. If a program does not contain any explicit event blocks, all non-declarative statements form the processing block START-OFSELECTION.

In ABAP Editor initial screen give your program name and then press F5 or click on Create

Created by Pavan Mail: [email protected]

Page 4 of 107

Fill all the attributes & then save it

Created by Pavan Mail: [email protected]

Page 5 of 107

Here Goes your coding check for inconsistencies and then activate it

Created by Pavan Mail: [email protected]

Page 6 of 107

*&---------------------------------------------------------------------* *& Report ZCLASSICAL * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZCLASSICAL TABLES: vbak,vbap. DATA: v_flag TYPE i.

.

******INTERNAL TABLE USED TO HOLD DATA TEMPORARILY DATA: BEGIN OF it_salesorder OCCURS 0, kunnr LIKE vbak-kunnr, " vbeln LIKE vbak-vbeln, " posnr LIKE vbap-posnr, " matnr LIKE vbap-matnr, " bstnk LIKE vbak-bstnk, " bstdk LIKE vbak-bstdk, " kwmeng LIKE vbap-kwmeng, netpr LIKE vbap-netpr, " netwr LIKE vbap-netwr, "

Sold To Party. Sales Document Number. Sales Document Item. Material Number. Customer purchase order number. Customer purchase order date. " Cumulative order quantity. Net price. Net value of the order item.

END OF it_salesorder. ***********INPUT THE DATA USING SELECT OPTIONS SELECT-OPTIONS: s_kunnr FOR vbak-kunnr, " Sold To Party. s_vbeln FOR vbak-vbeln. " Sales Document Number. **********INITIALIZATION INITIALIZATION. PERFORM initialization. *********FETCH THE DATA FROM TABLES AND PLACE THEM IN INTERNAL TABLE START-OF-SELECTION. PERFORM fetch_data. **********DISPLAYING THE DATA FROM INTERNAL TABLE END-OF-SELECTION. **********PAGE HEADINGS PERFORM Page_headings. PERFORM display_data. *&---------------------------------------------------------------------* *& Form initialization *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * p1 text * . 2. INSERT: INSERT index . 3. MODIFY: MODIFY index 4. DESCRIBE: DESCRIBE TABLE lines OCCURS . 5. APPEND: APPEND . 6. CLEAR CLEAR . 7. REFRESH REFRESH .

Created by Pavan Mail: [email protected]

Page 35 of 107

Sample report for Internal Table with header manipulation:

*&---------------------------------------------------------------------* *& Report ZITAB_WITH_HEADER_MANIPULATION * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT

ZITAB_WITH_HEADER_MANIPULATION

DATA: BEGIN OF ITAB OCCURS 0, BOOKNO(4) TYPE N, BOOKNAME(5) TYPE C, BOOKADD(10) TYPE C, END OF ITAB. ITAB-BOOKNO = '1234'. ITAB-BOOKNAME = 'SAP'. ITAB-BOOKADD = 'KOTI'. APPEND ITAB. CLEAR ITAB. ITAB-BOOKNO = '1235'. ITAB-BOOKNAME = 'ABAP'. ITAB-BOOKADD = 'PUNJAGUTTA'. APPEND ITAB. CLEAR ITAB. ITAB-BOOKNO = '1236'. ITAB-BOOKNAME = 'ERP'. ITAB-BOOKADD = 'BEGUMPET'. APPEND ITAB. CLEAR ITAB. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP. SKIP 2. READ TABLE ITAB WITH KEY BOOKNO = '1235'. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. READ TABLE ITAB INDEX 3. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. ITAB-BOOKNO = '9876'. ITAB-BOOKNAME = 'XI'. ITAB-BOOKADD = 'CHENNAI'. INSERT ITAB INDEX 2. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP. SKIP 2. ITAB-BOOKNO = '4567'. ITAB-BOOKNAME = 'BASIS'. ITAB-BOOKADD = 'SR NAGAR'. MODIFY ITAB INDEX 2. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP. SKIP 2.

.

Created by Pavan Mail: [email protected] DELETE ITAB INDEX 2. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP. SKIP 2. CLEAR ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. FREE ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. REFRESH ITAB. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP.

Page 36 of 107

Created by Pavan Mail: [email protected]

Page 37 of 107

Sample report for Internal Table without header: *&---------------------------------------------------------------------* *& Report ZITAB_WITHOUT_HEADER * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZITAB_WITHOUT_HEADER . DATA: BEGIN OF HEADER, BOOKNO(4) TYPE N, BOOKNAME(5) TYPE C, BOOKADD(10) TYPE C, END OF HEADER. DATA: BODY LIKE HEADER OCCURS 0. HEADER-BOOKNO = '1209'. HEADER-BOOKNAME = 'SAP'. HEADER-BOOKADD = 'HYD'. APPEND HEADER TO BODY. CLEAR HEADER. HEADER-BOOKNO = '1235'. HEADER-BOOKNAME = 'ABAP'. HEADER-BOOKADD = 'PUNJAGUTTA'. APPEND HEADER TO BODY. CLEAR HEADER. HEADER-BOOKNO = '1236'. HEADER-BOOKNAME = 'ERP'. HEADER-BOOKADD = 'KOTI'. APPEND HEADER TO BODY. CLEAR HEADER. LOOP AT BODY INTO HEADER. WRITE:/ HEADER-BOOKNO,HEADER-BOOKNAME,HEADER-BOOKADD. ENDLOOP.

Created by Pavan Mail: [email protected]

Page 38 of 107

Sample report for Internal Table with header: *&---------------------------------------------------------------------* *& Report ZITAB_WITH_HEADER * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT

ZITAB_WITH_HEADER

DATA: BEGIN OF ITAB OCCURS 0, BOOKNO(4) TYPE N, BOOKNAME(10) TYPE C, BOOKADD(15) TYPE C, END OF ITAB. ITAB-BOOKNO = '1216'. ITAB-BOOKNAME = 'SAP'. ITAB-BOOKADD = 'GANDHINAGAR'. APPEND ITAB. CLEAR ITAB. ITAB-BOOKNO = '1209'. ITAB-BOOKNAME = 'PAVAN-ABAP'. ITAB-BOOKADD = 'GANDHINAGAR'. APPEND ITAB. CLEAR ITAB. ITAB-BOOKNO = '1236'. ITAB-BOOKNAME = 'ERP'. ITAB-BOOKADD = 'HYD'. APPEND ITAB. CLEAR ITAB. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP. SKIP 2. READ TABLE ITAB WITH KEY BOOKNO = '1235'. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. READ TABLE ITAB INDEX 3. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. ITAB-BOOKNO = '9876'. ITAB-BOOKNAME = 'HR'. ITAB-BOOKADD = 'PUNJAGUTTA'. INSERT ITAB INDEX 2. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP. SKIP 2. ITAB-BOOKNO = '4567'. ITAB-BOOKNAME = 'BASIS'. ITAB-BOOKADD = 'KOTI'. MODIFY ITAB INDEX 2. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP. SKIP 2. DELETE ITAB INDEX 2. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD.

.

Created by Pavan Mail: [email protected]

Page 39 of 107

ENDLOOP. SKIP 2. CLEAR ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. FREE ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. SKIP 2. REFRESH ITAB. LOOP AT ITAB. WRITE:/ ITAB-BOOKNO,ITAB-BOOKNAME,ITAB-BOOKADD. ENDLOOP.

Initialization event is to set the initial values for the output that we get for the report. Low value – here refers to the low value for the primary key. High value – here refers to the highest value u need. Sign – can be either ‘Inclusive’ or ‘exclusive’. Option – can be ‘BT (between), GT(greater than), LT( lesser than). Now after declaring your internal table declare these values in your report SELECT-OPTIONS: EMP_NO FOR ZEMP_DETAILS1-EMPNO. INITIALIZATION. EMP_NO-LOW = '1000'. EMP_NO-HIGH = '4000'. EMP_NO-SIGN = 'I'. “ HERE ‘I’ REPRESENTS INTEGER EMP_NO-OPTION = 'BT'. APPEND EMP_NO. CLEAR EMP_NO.

AT SELECTION-SCREEN is used to check the validity of the user input values by setting the messages in the Message Class. AT SELECTION-SCREEN. IF EMP_NO-LOW < '1000'. MESSAGE S000(ZPA1). ELSEIF EMP_NO-HIGH > '4000'. MESSAGE S001. ENDIF.

Created by Pavan Mail: [email protected]

Page 40 of 107

START-OF SELECTION event where exactly we use the SQL statements to retrieve the output from the database table. START-OF-SELECTION. SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO IN EMP_NO. WRITE:/5 SY-ULINE(35). LOOP AT ITAB. WRITE:/5 SY-VLINE, 6 ITAB-EMPNO, 17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE , 39 SY-VLINE. ENDLOOP.

To get the output in the table format we use 2 system variables such as SYULINE to draw the horizontal line and SY-VLINE to draw the vertical line. To get the header at the top of every page we use TOP-OF-PAGE event . TOP-OF-PAGE. WRITE:/5 SY-ULINE(35). WRITE:/5 SY-VLINE,6 'EMPNO',17 SY-VLINE,18 'EMPNAME',28 SY-VLINE, 39 SY-VLINE. WRITE:/5 SY-ULINE(35).

In order to set the LINE-SIZE and the LINE-COUNT , REPORT

ZSMALL_INTERACTIVE_REPORT MESSAGE-ID ZPA1 LINE-SIZE 255

we need to declare In the first line of the program and at the end of each and every page we can set the page no by using the END-OF PAGE event and at the end of selection we can set some message telling that the output is closed in the ENDOF-SELECTION event. END-OF-PAGE. WRITE:/5 SY-ULINE(35). WRITE:/ 'THE PAGE NO IS',SY-PAGNO. END-OF-SELECTION. WRITE:/ 'THE RECORD IS CLOSED'.

Up to here what we have performed is Classical report the events upto here same as interactive Some of the interactive events are: 1. At line Selection 2. At PFn.

Created by Pavan Mail: [email protected]

Page 41 of 107

3. At User-command. AT LINE-SELECTION event is triggered by double-clicking on the output value to get the drilldown report. AT LINE-SELECTION. IF SY-LSIND = 1. SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO = ITAB-EMPNO. LOOP AT ITAB. WRITE:/5 SY-VLINE,6 ITAB-EMPNO,17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ELSEIF SY-LSIND = 2. SELECT * FROM ZCOMP_DETAILS INTO TABLE JTAB. LOOP AT JTAB. WRITE:/5 SY-VLINE,6 JTAB-COMP_NO,17 SY-VLINE,18 JTAB-COMP_NAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ENDIF.

Complete Coding for Interactive report *&---------------------------------------------------------------------* *& Report ZSMALL_INTERACTIVE_REPORT * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZSMALL_INTERACTIVE_REPORT MESSAGE-ID ZPA1 LINE-SIZE 255 LINE-COUNT 10(2). Tables: zemp_details1, zcomp_details. Data: itab like zemp_details1 occurs 0 with header line. Data: Jtab like zCOMP_details occurs 0 with header line. SELECT-OPTIONS: EMP_NO FOR ZEMP_DETAILS1-EMPNO. INITIALIZATION. EMP_NO-LOW = '1000'. EMP_NO-HIGH = '4000'. EMP_NO-SIGN = 'I'. EMP_NO-OPTION = 'BT'. APPEND EMP_NO. CLEAR EMP_NO. AT SELECTION-SCREEN. IF EMP_NO-LOW < '1000'. MESSAGE S000(ZPA1). ELSEIF EMP_NO-HIGH > '4000'. MESSAGE S001. ENDIF. START-OF-SELECTION.

Created by Pavan Mail: [email protected]

Page 42 of 107

SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO IN EMP_NO. WRITE:/5 SY-ULINE(35).

LOOP AT ITAB. WRITE:/5 SY-VLINE, 6 ITAB-EMPNO, 17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE , 39 SY-VLINE. ENDLOOP. TOP-OF-PAGE. WRITE:/5 SY-ULINE(35). WRITE:/5 SY-VLINE,6 'EMPNO',17 SY-VLINE,18 'EMPNAME',28 SY-VLINE, 39 SY-VLINE. WRITE:/5 SY-ULINE(35). END-OF-PAGE. WRITE:/5 SY-ULINE(35). WRITE:/ 'THE PAGE NO IS',SY-PAGNO. END-OF-SELECTION. WRITE:/ 'THE RECORD IS CLOSED'. AT LINE-SELECTION. IF SY-LSIND = 1. SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO = ITAB-EMPNO. LOOP AT ITAB. WRITE:/5 SY-VLINE,6 ITAB-EMPNO,17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ELSEIF SY-LSIND = 2. SELECT * FROM ZCOMP_DETAILS INTO TABLE JTAB. LOOP AT JTAB. WRITE:/5 SY-VLINE,6 JTAB-COMP_NO,17 SY-VLINE,18 JTAB-COMP_NAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ENDIF.

After executing this report if you click on the output any name or number then it will take you to the another line for which you have defined coding as above AT PF ’n’ event is triggered by clicking on the function key assigned at the n value wherein n can vary from 5 to 9. If we go to se41, we can get menus, items and different function keys, which we are using for secondary list in interactive report. AT PF7.

Created by Pavan Mail: [email protected]

Page 43 of 107

Now to set an PF-STATUS we have to go to Menu Painter (Se41). This Pf status is for GUI. Goto se 41 and create a menu list or just follow this In your program write the following code SET PF-STATUS 'ZPA1_MENU'.

And now double click on ZPA1_MENU

Created by Pavan Mail: [email protected]

Page 44 of 107

Fill all the necessary fields and then press enter

Created by Pavan Mail: [email protected]

Click on this to expand the menu bar options

Page 45 of 107

Created by Pavan Mail: [email protected]

Give any name to your object and double click on the same line

Page 46 of 107

Created by Pavan Mail: [email protected]

Page 47 of 107

In the application tool bar it provides option in output such as open, back, exit, folder etc,

Fill your required option here so that it will be displayed in the output and then press enter

Created by Pavan Mail: [email protected]

Page 48 of 107

Select Static or Dynamic text and then press enter

Created by Pavan Mail: [email protected]

Page 49 of 107

Give your Function Text and in the icon name press F4 and select relevant icon to be displayed at output

Created by Pavan Mail: [email protected]

Page 50 of 107

Created by Pavan Mail: [email protected]

Page 51 of 107

Created by Pavan Mail: [email protected]

Page 52 of 107

You have to assign any function keys to the object for which u have created and then press enter

Created by Pavan Mail: [email protected]

Page 53 of 107

Created by Pavan Mail: [email protected]

Page 54 of 107

Here you can see your added function keys or else you can add from here also

Created by Pavan Mail: [email protected]

Page 55 of 107

Complete code of present report *&---------------------------------------------------------------------* *& Report ZSMALL_INTERACTIVE_REPORT * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZSMALL_INTERACTIVE_REPORT MESSAGE-ID ZPA1 LINE-SIZE 255 LINE-COUNT 10(2). Tables: zemp_details1, zcomp_details. Data: itab like zemp_details1 occurs 0 with header line. Data: Jtab like zCOMP_details occurs 0 with header line. SELECT-OPTIONS: EMP_NO FOR ZEMP_DETAILS1-EMPNO. SET PF-STATUS 'ZPA1_MENU'. INITIALIZATION. EMP_NO-LOW = '1000'. EMP_NO-HIGH = '4000'. EMP_NO-SIGN = 'I'. EMP_NO-OPTION = 'BT'. APPEND EMP_NO. CLEAR EMP_NO. AT SELECTION-SCREEN. IF EMP_NO-LOW < '1000'. MESSAGE S000(ZPA1). ELSEIF EMP_NO-HIGH > '4000'. MESSAGE S001. ENDIF. START-OF-SELECTION. SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO IN EMP_NO. LOOP AT ITAB. WRITE:/5 SY-VLINE,6 ITAB-EMPNO,17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE, 39 SY-VLINE. HIDE: ITAB-EMPNO. ENDLOOP. WRITE:/5 SY-ULINE(35). TOP-OF-PAGE. WRITE:/5 SY-ULINE(35). WRITE:/5 SY-VLINE,6 'EMPNO',17 SY-VLINE,18 'EMPNAME',28 SY-VLINE, 39 SY-VLINE. WRITE:/5 SY-ULINE(35). END-OF-PAGE. WRITE:/5 SY-ULINE(35).

Created by Pavan Mail: [email protected]

Page 56 of 107

WRITE:/ 'THE PAGE NO IS',SY-PAGNO. END-OF-SELECTION. WRITE:/ 'THE RECORD IS CLOSED'. AT LINE-SELECTION. IF SY-LSIND = 1. SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO = ITAB-EMPNO. LOOP AT ITAB. WRITE:/5 SY-VLINE,6 ITAB-EMPNO,17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ELSEIF SY-LSIND = 2. SELECT * FROM ZCOMP_DETAILS INTO TABLE JTAB. LOOP AT JTAB. WRITE:/5 SY-VLINE,6 JTAB-COMP_NO,17 SY-VLINE,18 JTAB-COMP_NAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ENDIF. AT PF7. IF SY-LSIND = 1. SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO = ITAB-EMPNO. LOOP AT ITAB. WRITE:/5 SY-VLINE,6 ITAB-EMPNO,17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ELSEIF SY-LSIND = 2. SELECT * FROM ZCOMP_DETAILS INTO TABLE JTAB. LOOP AT JTAB. WRITE:/5 SY-VLINE,6 JTAB-COMP_NO,17 SY-VLINE,18 JTAB-COMP_NAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ENDIF. AT USER-COMMAND. IF SY-UCOMM = '0001'.

Created by Pavan Mail: [email protected]

Page 57 of 107

IF SY-LSIND = 1. SELECT * FROM ZEMP_DETAILS1 INTO TABLE ITAB WHERE EMPNO = ITAB-EMPNO. LOOP AT ITAB. WRITE:/5 SY-VLINE,6 ITAB-EMPNO,17 SY-VLINE,18 ITAB-EMPNAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ELSEIF SY-LSIND = 2. SELECT * FROM ZCOMP_DETAILS INTO TABLE JTAB. LOOP AT JTAB. WRITE:/5 SY-VLINE,6 JTAB-COMP_NO,17 SY-VLINE,18 JTAB-COMP_NAME,28 SY-VLINE, 39 SY-VLINE. ENDLOOP. WRITE:/5 SY-ULINE(35). ENDIF. ENDIF.

Created by Pavan Mail: [email protected]

Page 58 of 107

Logical Data Base Builder: A logical database is a special ABAP/4 program which combines the contents of certain database tables. You can link a logical database to an ABAP/4 report program as an attribute. The logical database then supplies the report program with a set of hierarchically structured table lines which can be taken from different database tables. If you need to find the logical database for a table name, you can used SE36 Logical Database Builder. Steps:Go to transaction SE36 Click Extras -> Table usage Supply the Table name and hit enter. A Display Logical Database will be shown on a pop-up window.

More Information from help.sap.com Logical databases are special ABAP programs that retrieve data and make it available to application programs. The most common use of logical databases is still to read data from database tables and linking them to executable ABAP programs while setting the program contents. You edit logical databases using the Logical Database Builder in the ABAP Workbench. However, since Release 4.5A, it has also been possible to call logical databases independently of this tool using the function module LDB_PROCESS. This allows you to call several logical databases from any ABAP program, nested in any way. It is also possible to call a logical database more than once in a program, if it has been programmed to allow this. This is particularly useful for executable programs, allowing them to use more than one logical database and process a database more than once. Logical databases contain Open SQL statements that read data from the database. You do not therefore need to use SQL in your own programs. The logical database reads the program, stores them in the program if necessary, and then passes them

Created by Pavan Mail: [email protected]

Page 59 of 107

line by line to the application program or the function module LDB_PROCESS using an interface work area. Views of Data in Logical Databases Logical databases provide a particular view of database tables. It is appropriate to use logical databases if 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. The data structure in a logical database is hierarchical. Many tables in the R/3 System are linked to each other using foreign key relationships. Some of these dependencies form tree-like hierarchical structures. Logical databases read data from database tables that are part of these structures.

Created by Pavan Mail: [email protected]

Page 60 of 107

A logical database can read the lines of these tables one after the other into an executable program in a sequence which is normally defined by the hierarchical structure. The term logical database is sometimes used to mean not only the program itself, but also the data that it can procure. Tasks of Logical Databases Logical databases serve mainly to reuse predefined functionality for reading data from database tables, but they can also be programmed for other tasks. To keep the application logic of application programs free from technical details, logical databases can perform the following tasks: ·

Reading the same data for several programs.

The individual programs do not then need to know the exact structure of the relevant database tables (and especially not their foreign key relationships). Instead, they can rely on the logical database to read the database entries in the right order during the GET event. ·

Defining the same user interface for several programs.

Logical databases have a built-in selection screen. Therefore, all of the programs that use the logical database have the same user interface. ·

Central authorization checks

Authorization checks for central and sensitive data can be programmed centrally in the database to prevent them from being bypassed by simple application programs. ·

Improving Performance

If you want to improve response times, logical databases permit you to take a number of measures to achieve this (for example, using joins instead of nested SELECT statements). These become immediately effective in all of the application programs concerned and save you from having to modify their source code.

Created by Pavan Mail: [email protected]

Goto Tcode SE36 to create logical Data base

Page 61 of 107

Created by Pavan Mail: [email protected]

Page 62 of 107

Give your short description and then press enter

Created by Pavan Mail: [email protected]

Page 63 of 107

Give your table name here

Give the text same as in declared in your table

Again Declare your Table here

Created by Pavan Mail: [email protected]

Page 64 of 107

Give the second node which should be hierarchically under the root node and enter the short description with the database table Name

Created by Pavan Mail: [email protected]

Give your second table name and the short text should be same as declared in your table for this particular table

Page 65 of 107

Created by Pavan Mail: [email protected]

Select your table and then click on Selections Button

Page 66 of 107

Created by Pavan Mail: [email protected]

Page 67 of 107

Created by Pavan Mail: [email protected]

Page 68 of 107

Created by Pavan Mail: [email protected]

Page 69 of 107

Created by Pavan Mail: [email protected]

Page 70 of 107

Now uncomment your select-options and give any name for your select option

Created by Pavan Mail: [email protected]

Page 71 of 107

This is our complete code after uncommenting few lines SELECT-OPTIONS : empno FOR ZEMP_DETAILS1-EMPNO.

* Parameter for search pattern selection (Type SY-LDB_SP): * PARAMETERS p_sp AS SEARCH PATTERN ZEMP_DETAILS1.

FOR

TABLE

SELECT-OPTIONS : compno FOR ZCOMP_DETAILS-COMP_NO.

* Enable DYNAMIC SELECTIONS for selected nodes : SELECTION-SCREEN DYNAMIC SELECTIONS ZEMP_DETAILS1. SELECTION-SCREEN DYNAMIC SELECTIONS ZCOMP_DETAILS. * Enable FIELD SELECTION for selected nodes :

FOR

TABLE

FOR

TABLE

Created by Pavan Mail: [email protected]

Page 72 of 107

Now go back to your initial screen and select your table and then Select Source code

Created by Pavan Mail: [email protected]

Now double click on TOP Include which is used for Header.

Page 73 of 107

Created by Pavan Mail: [email protected]

Page 74 of 107

Now check whether the tables you have defined are uncommented or not??

Created by Pavan Mail: [email protected]

Page 75 of 107

Now go back to your Program screen and double click on Routines

Created by Pavan Mail: [email protected]

Page 76 of 107

Now click on the include

Double click on top include BASEN001 for emp details table here my table is ZEMP_DETAILS1

Created by Pavan Mail: [email protected]

Page 77 of 107

Now uncomment the SQL statement and enter the field and the database table name according to the logical database builder.

Created by Pavan Mail: [email protected]

Page 78 of 107

Now go back to includes screen and in the same way as done above for employee details now double click on Company details and uncomment the SQL statements then SAVE, CHECK and ACTIVATE the screen. Click BACK and SAVE, CHECK & ACTIVATE the screen until u reach the main screen and SAVE the logical database. Thus the logical database is constructed. In order to generate the query report, first construct the logical database and generation of query report is as follows. The transaction codes used in Query reports are: 1. SQ01 – For creating Query. 2. SQ02 – For creating Infoset. 3. SQ03 – For creating User. First u need to create the USER and generate the INFOSET, in turn can produce the Query report.

Created by Pavan Mail: [email protected]

Page 79 of 107

Infoset: An SAP Infoset (formerly known as a Functional Area) is crucial for ABAP query usage (in SAP versions 4.6A - onward). The reason for Info Sets being important is because many R/3 clients find themselves faced with how to develop useful reports from an application using 20k+ tables. In addition, many clients desire to use third-party reporting tools; i.e., Crystal Reports. In this article, we will look at what an R/3 Infoset and how they relate to Crystal Reports. 1. Knowledge learned in this article can be put to use when: 2. Users require an understanding of how InfoSets are used within SAP R/3 3. Users require an understanding of the various methods of developing InfoSets 4. Users require an understanding of how InfoSets are used in concert with Crystal Reports. Report developers cannot be expected to cull through the thousands of tables and fields R/3 presents - even from a single logical database. Therefore, some form of technical shortcut is beneficial. InfoSets, when used with ABAP queries are an example of an available shortcut. At its simplest definition, an InfoSet determines which tables and/or fields within a table, queries may reference. To accomplish this, InfoSets are typically based upon table joins or logical databases (LDBs). Therefore, an Infoset is, for lack of a better term, a form of Ubber View (Super View).

Created by Pavan Mail: [email protected]

Go to Transaction Code SQ01. Now follow this path Environment  Usergroups

Page 80 of 107

Created by Pavan Mail: [email protected]

Page 81 of 107

Give your Query name and Click on create button

Click on Create Button

Created by Pavan Mail: [email protected]

Save or press Enter

Page 82 of 107

Created by Pavan Mail: [email protected]

Page 83 of 107

Go back to User Group initial screen and then click on Assign users and InfoSets

Click on Assign users & InfoSets

Created by Pavan Mail: [email protected]

Page 84 of 107

Assign any user existing in SAP and press enter

Created by Pavan Mail: [email protected]

Page 85 of 107

Now go back to your user screen from there follow this menu path Environment  InfoSets Or go to Tcode SQ02

Created by Pavan Mail: [email protected]

Page 86 of 107

Created by Pavan Mail: [email protected]

Page 87 of 107

Give your InfoSet query name and press Create button

Created by Pavan Mail: [email protected]

Page 88 of 107

Give your InfoSet name

Select a logical data base by pressing F4

Created by Pavan Mail: [email protected]

Page 89 of 107

This is the logical database which we had created in SE36

Created by Pavan Mail: [email protected]

Page 90 of 107

Created by Pavan Mail: [email protected]

You can drag & drop your fields on to the screen save it and come back to main screen

Page 91 of 107

Created by Pavan Mail: [email protected]

Now in SQ03 assign your Infoset which u had created just above

Page 92 of 107

Created by Pavan Mail: [email protected]

Page 93 of 107

Select your infoset query and then save it

Now to create Query goto USER screen and click on the ENVIRONMENT  QUERIES and the Query name and click on the CREATE button. It will ask for infoset. Choose the corresponding Infoset.

Created by Pavan Mail: [email protected]

Page 94 of 107

Created by Pavan Mail: [email protected]

Page 95 of 107

Created by Pavan Mail: [email protected]

Page 96 of 107

Select your infoset

Created by Pavan Mail: [email protected]

Page 97 of 107

Now on the left hand side u can find the fields in the dictionary and on the right hand side the field required for the Query report. Drag and drop the field you want for the Query report and click on the GENERATE button.

Created by Pavan Mail: [email protected]

After selecting your fields click on generate

Page 98 of 107

Created by Pavan Mail: [email protected]

Page 99 of 107

In the Tcode SQ03 enter your title

Select ABAP List

Created by Pavan Mail: [email protected]

Click on Next screen

Page 100 of 107

Created by Pavan Mail: [email protected]

Page 101 of 107

Check the Tables for which u want to make a query

Created by Pavan Mail: [email protected]

Click on Next screen

Page 102 of 107

Created by Pavan Mail: [email protected]

Page 103 of 107

Select the fields and click next screen

ABAP/4 Query can generate the following 3 simple reports: Basic List: It is the simple reports. Statistics: Reports with statistical functions like Average, Percentages. Ranked Lists: For analytical reports. - For creating a ABAP/4 Query, programmer has to create user group and a functional group. Functional group can be created using with or without logical database table. Finally, assign user group to functional group. Finally, create a query on the functional group generated.

Created by Pavan Mail: [email protected]

Page 104 of 107

Click on Basic List

Now select the data fields that you want to appear in the query report and click on the SAVE button. Then Click on the TEST button.

Created by Pavan Mail: [email protected]

Page 105 of 107

The fields which u have selected will be displayed here Select the fields which u want to display in the output

Created by Pavan Mail: [email protected]

Page 106 of 107

In Logical data base(SE36) maintain all fields Such as Selection Texts, Documentation and then in query report SQ01 execute your report

Execute the report

Created by Pavan Mail: [email protected]

Page 107 of 107

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF