Académique Documents
Professionnel Documents
Culture Documents
Appendix :B
Contents
Overview.....................................................................................................................2 What Is The ABAP List Viewer?................................................................................2 ABAP List Viewer: Cost vs. Benefit Analysis...........................................................2 Report Lists Without ABAP List Viewer ...................................................................4 Report Lists With ABAP List Viewer.........................................................................5 Technical Notes........................................................................................................10 Sample Code Using ALV (Release 4.0B).................................................................11 Where to Learn More................................................................................................15 Review.......................................................................................................................16
{Title of Book}
Overview
If it becomes necessary to write ABAP code to create your reports, then consider using the ABAP List Viewer (ALV) to simplify your development First available in the R/3 System since Release 3.1, the ABAP List Viewer supports many of the standard R/3 reports. The ALV provides additional program code you can quickly add to any custom report for any SAP module. Many reports developed for Release 4.0 (and later) utilize the ABAP List Viewer. Additionally, many older standard R/3 reports (and reporting tools) have been modified to include the ABAP List Viewer. The ABAP List Viewer can be used with any application component or module in the R/3 System. We recommend that developers should adopt ABAP List Viewer as a design principle in all report development activities that occur in your organization.
development. The table which follows shows estimates of time expenditures in report development. Note that it is estimated that roughly 50% of report developers time is taken in building fancy features and enhancing the look-andfeel of custom reports. ABAP Report Development Activity Without ALV Finding the right tables and table relationships that need to be included in order for the program to be written Providing fancy features, such as sorting, subtotals, and interactivity Making the report look pretty with column headings, vertical lines, and color Total Percentage of Time Taken to Complete 50%
SAP developed the ABAP List Viewer to help reduce the time and effort spent on some of the report development activities. It is estimated that by using the ALV in the programming of custom reports, you could reduce the development time by 40% (see table below). ABAP Report Development Activity With ALV Finding the right tables and table relationships that need to be included in order for the program to be written Preparing field catalog and sort sequence for ALV Providing fancy features, such as sorting, subtotals, and interactivity Making the report look pretty with column headings, vertical lines, and color Total Percentage of Time Taken to Complete 50%
1% 9% 0% 60%
Although, the use of ALV adds one more development activity (i.e., preparation of the field catalog), the development time spent on other activities is either eliminated or vastly reduced.
{Title of Book}
A key point to note is that the function bar is blank. In addition, the data in the list is dead in that data is listed, but the report cannot be used for any further data retrieval. It is a so-called data-dump. Among many things, there are no headings for the columns. Any other functionality that is needed would have to be programmed. In short, the interface between the data you see on the screen and the users eyes (the GUI) is bland. Report users routinely ask for additional features in their reports. Often they are looking for the ability to: < < Sort Resize rows
< Double-click on one information element to jump to another information element < < < < Perform basic calculations Downloading of stylized spreadsheets Display several colors Visually separate various pieces of information on the screen
{Release xx}
ALV! However, for the most part, these features need to be programmed into the list as added functionality to the output of the report. While some of these added functions are relatively easy to program, the manner in which this added functionality works may vary greatly. For example, one programmer may decide to enable a single-click as sufficient user input to jump to a next level of information but another programmer may require a double-click at a specific location on a specific line. Similarly, one programmer may set the output of a field to be 10 characters long but another programmer may program it as 20 characters.
< Many buttons that appear on the function bar (some of whose functions will be introduced in the pages that follow).
{Title of Book}
Feature-rich Function bar gives user commonly requested functionality Function bar is blank Column headings make data easier to understand
As you review the additional functionality shown above, remember that without ALV each function would normally have to be programmed into the report. Note: In this appendix you will be introduced to some of the functions that ALV makes possible. However, this does not cover the full breadth of the ALVs functionality. For more information, refer to the ALV documentation in the R/3 online documentation: R/3 Library CA-Cross-Application Components General Application Functions ABAP List Viewer
Guided Tour
This guided tour shows possible ways a user could interact with an ALV-enabled report list.
{Release xx}
In an ALV-enabled report list, a user can select a particular column and execute a subsequent function, if desired. 1. Select the column for Sales doc. With ALVs added functionality the color of the selected column can be changed, making it easy for the report user to know which column has been selected. 2. Click the Filter button (funnel icon). With the filter option, a user can call up a desired subset of the information on the output list.
1
3. Set the filter for the sales documents to be viewed. In this instance, the user only wants to views sales documents that are between the numbers 1000 and 2000. 4. Choose the Copy button to invoke the ALV to filter the list. 5. The resulting filtered list is shown to the right. To return to the previous list, a user can simply click the arrow buttons without having to exit and reexecute the report. 6. If not all columns of the report are of interest to the user, the unwanted columns can be hidden. This can be accomplished by setting the socalled current variant to include only the wanted columns. To hide (or to view previously hidden columns), click the Display variant button.
3 4
{Title of Book}
In the pop-up window, the columns that currently appear in the list are shown in the left section. Hidden fields (if any) appear on the right section. In this example, currently, all fields appear. 7. To make one column disappear, select the row which lists the column you want to hide. In this example, we select Material Group. 8. Then, click the single right-arrow button to move the selected column (Material group) to the hidden fields section. The Material Group is now one of the hidden fields. 9. For this change to take effect on the current list click the Copy button. This will make the popup window disappear and show only the revised output list.
7 8
{Release xx}
The new output list appears. The original list may be called back again simply by pressing the current variant button again and by moving the hidden fields to the left section.
{Title of Book}
Technical Notes
In order for the reports to provide the consistency, flexibility, and user-friendliness of the ALV, it is necessary to include certain statements in the reports program code. This section is intended for those who actually write the code for reports. To include the ALV in a report, the following basic steps must completed: 1. Declare data areas for List Viewer 2. Declare internal table to store selected data 3. Select data into internal table 4. Build Field catalogs 5. Build Event catalogs 6. Start ABAP List Viewer using SAPs standard delivered function modules (see TechTalk below) 7. Process Call back events In the standard R/3 System, SAP delivers several function modules related to the ALV. Use the following function modules with Release 4.0: REUSE_ALV_LIST_DISPLAY (this is the primary function module) or other function modules that begin with the name REUSE_ALV* K_KKB_LIST_DISPLAY is still available but should no longer be used!
Review the sample program on page 11 which has been included here to show the coding related to each of steps listed above. Note: The source code that appears on page 11 was used to create the sample ALV-enabled report list presented in this appendix.
10
{Release xx}
*******Select Data into Internal Table (Begin) *************** SELECT VBELN POSNR MATNR MATKL KWMENG VRKME INTO CORRESPONDING FIELDS OF TABLE IVBAP FROM VBAP WHERE VBELN NE 0.
{Title of Book}
11
******* Select Data into Internal Table (End) **************** ******* Build Field Catalogs (Begin)************************** PERFORM PERFORM PERFORM PERFORM PERFORM BUILD_FIELDCAT. BUILD_FIELDCAT2. BUILD_FIELDCAT3. BUILD_SORTCAT. BUILD_SORTCAT2.
*******Build Field Catalogs (End)****************************** *******Build Event Catalog (Begin)***************************** PERFORM BUILD_EVENTCAT. *******Build Event Catalog (End)******************************* *******Start List Viewer (Begin)******************************* PERFORM START_LIST_VIEWER. *******Start List Viewer (End)********************************* *************************************************************** *************************************************************** *********FORM ROUTINES (Begin)********************************* FORM BUILD_FIELDCAT. ADD 1 TO COL_POS. FIELDCAT_LN-REF_TABNAME = 'VBAP'. FIELDCAT_LN-FIELDNAME = 'VBELN'. FIELDCAT_LN-KEY = 'X'. FIELDCAT_LN-DO_SUM = SPACE. FIELDCAT_LN-COL_POS = COL_POS. FIELDCAT_LN-NO_OUT = SPACE. FIELDCAT_LN-QFIELDNAME = SPACE. FIELDCAT_LN-HOTSPOT = 'X'. APPEND FIELDCAT_LN TO FIELDCAT. ENDFORM. FORM BUILD_FIELDCAT2. ADD 1 TO COL_POS. FIELDCAT_LN-REF_TABNAME = 'VBAP'. FIELDCAT_LN-FIELDNAME = 'MATNR'. FIELDCAT_LN-KEY = SPACE.
12
{Release xx}
FIELDCAT_LN-DO_SUM = SPACE. FIELDCAT_LN-COL_POS = COL_POS. FIELDCAT_LN-NO_OUT = SPACE. FIELDCAT_LN-QFIELDNAME = SPACE. FIELDCAT_LN-HOTSPOT = SPACE. APPEND FIELDCAT_LN TO FIELDCAT. ENDFORM.
FORM BUILD_FIELDCAT3. ADD 1 TO COL_POS. FIELDCAT_LN-REF_TABNAME = 'VBAP'. FIELDCAT_LN-FIELDNAME = 'MATKL'. FIELDCAT_LN-KEY = SPACE. FIELDCAT_LN-DO_SUM = 'X'. FIELDCAT_LN-COL_POS = COL_POS. FIELDCAT_LN-NO_OUT = SPACE. FIELDCAT_LN-QFIELDNAME = SPACE. FIELDCAT_LN-HOTSPOT = SPACE. APPEND FIELDCAT_LN TO FIELDCAT. ENDFORM. FORM BUILD_SORTCAT. SORTCAT_LN-SPOS = '1'. SORTCAT_LN-FIELDNAME = 'MATNR'. SORTCAT_LN-UP = 'X'. SORTCAT_LN-DOWN = SPACE. SORTCAT_LN-SUBTOT = 'X'. APPEND SORTCAT_LN TO SORTCAT. ENDFORM. FORM BUILD_SORTCAT2. SORTCAT_LN-SPOS = '2'. SORTCAT_LN-FIELDNAME = 'VRKME'. SORTCAT_LN-UP = SPACE. SORTCAT_LN-DOWN = 'X'. SORTCAT_LN-SUBTOT = SPACE. APPEND SORTCAT_LN TO SORTCAT. ENDFORM. FORM BUILD_EVENTCAT. EVENTCAT_LN-NAME = 'TOP_OF_PAGE'. EVENTCAT_LN-FORM = 'PAGE_HEADER'. APPEND EVENTCAT_LN TO EVENTCAT.
{Title of Book}
13
ENDFORM. FORM START_LIST_VIEWER. DATA: PGM LIKE SY-REPID. PGM = SY-REPID. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' I_CALLBACK_PROGRAM = PGM * i_callback_pf_status_set = ' ' I_CALLBACK_USER_COMMAND = 'USER_COMMAND' * I_STRUCTURE_NAME = * IS_LAYOUT = IT_FIELDCAT = FIELDCAT * IT_EXCLUDING = * IT_SPECIAL_GROUPS = IT_SORT = SORTCAT * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' I_SAVE = 'A' * IS_VARIANT = ' ' * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * es_exit_caused_by_user = TABLES T_OUTTAB = IVBAP EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. ENDFORM. ********Process Call Back Events (Begin)*************************** FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD.
14
{Release xx}
READ TABLE IVBAP INDEX SELFIELD-TABINDEX. CHECK SY-SUBRC = 0. CASE UCOMM. WHEN '&IC1'. CASE SELFIELD-SEL_TAB_FIELD. WHEN 'IVBAP-VBELN'. SET PARAMETER ID 'AUN' FIELD IVBAP-VBELN. CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN. WHEN 'IVBAP-MATNR'. SET PARAMETER ID 'MAT' FIELD IVBAP-MATNR. CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. ENDCASE. ENDCASE. ENDFORM. ********Process Call Back Events (End)****************************** ***********FORM ROUTINES (END)**************************************
{Title of Book}
15
Review
< The ABAP List Viewer is functionality provided within ABAP which can enhance reports in the R/3 System, and was first made available with R/3 version 3.1. The ALV is a set of function modules which are added to program code. Programs created before v.3.1 can be enhanced with the ALV by adding the links to the function modules. < Using the ALV provides a uniform user-interface and list format for ABAP reports. This standardization helps eliminate redundant functions. < Using the ALV enhances the functionality provided with reports while decreasing the development time by roughly 40%. < The ABAP List Viewer provides the following features: Sorting Resizing of rows Double-clicking on one information element to jump to another information element Performing basic calculations Downloading of stylized spreadsheets Displaying several colors Visually separating various pieces of information on the screen To include the ALV in a report, the following basic steps must completed: 1. 2. 3. 4. 5. Declare data areas for List Viewer Declare internal table to store selected data Select data into internal table Build Field catalogs Build Event catalogs
<
6. Start ABAP List Viewer using SAPs standard delivered function modules 7. Process Call back events
16
{Release xx}