You are on page 1of 4

Simple ALV Report PDF User Rating: / 36 PoorBest Written by Martin Schlegel Saturday, 20 January 2007

Print

E-mail

Simple example to use ALV and to define the ALV data in an internal table. Also see ALV Grid Control REPORT Z_ALV_SIMPLE_EXAMPLE_WITH_ITAB . ************************************************************************ *Simple example to use ALV and to define the ALV data in an internal *table ************************************************************************ * Martin Schlegel, BearingPoint, December 2004 * * Thanks to Madhusudhan Sonee and Rama Krishna Kommineni for testing * and feedback * ************************************************************************ ************************************************************************ *For a very long time, people gave me the feeling that ALV is a *complicated tool that is difficult to understand and to use. *Lately I had to use it and I discovered that ALV is easy to use and *saves a lot of work: *ALV will generate the column headings on its own, so one does not need *to work on headlines and transalation. *ALV allows the user to select the columns he wants to see, so the user *does not need to contact a developer for every change he likes to have. *ALV allows the user to create his own sums, so *ALV has a simple way to work with internal tables. *If you really want to save time, use ALV instead of write! ************************************************************************ * *Please take 30 minutes to explore the following example and see how *easy it is to use ALV! * ************************************************************************ *data definition tables: marav. "Table MARA and table MAKT *---------------------------------------------------------------------* * Data to be displayed in ALV * Using the following syntax, REUSE_ALV_FIELDCATALOG_MERGE can auto* matically determine the fieldstructure from this source program Data: begin of imat occurs 100, matnr like marav-matnr, "Material number maktx like marav-maktx, "Material short text matkl like marav-matkl, "Material group (so you can test to make " intermediate sums) ntgew like marav-ntgew, "Net weight, numeric field (so you can test to "make sums) gewei like marav-gewei, "weight unit (just to be complete) end of imat. *---------------------------------------------------------------------*

* Other data needed * field to store report name data i_repid like sy-repid. * field to check table length data i_lines like sy-tabix. *---------------------------------------------------------------------* * Data for ALV display TYPE-POOLS: SLIS. data int_fcat type SLIS_T_FIELDCAT_ALV. *---------------------------------------------------------------------* select-options: s_matnr for marav-matnr matchcode object MAT1. *---------------------------------------------------------------------* start-of-selection. * read data into table imat select * from marav into corresponding fields of table imat where matnr in s_matnr. * Check if material was found clear i_lines. describe table imat lines i_lines. if i_lines lt 1. * Using hardcoded write here for easy upload write: / 'No materials found.'. exit. endif. end-of-selection. *---------------------------------------------------------------------* * * Now, we start with ALV * *---------------------------------------------------------------------* * * * To use ALV, we need a DDIC-structure or a thing called Fieldcatalogue. * The fieldcatalouge can be generated by FUNCTION * 'REUSE_ALV_FIELDCATALOG_MERGE' from an internal table from any * report source, including this report. * The only problem one might have is that the report and table names * need to be in capital letters. (I had it :-( ) * * *---------------------------------------------------------------------* * Store report name i_repid = sy-repid. * Create Fieldcatalogue from internal table CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = i_repid I_INTERNAL_TABNAME = 'IMAT' "capital letters!

I_INCLNAME = i_repid CHANGING CT_FIELDCAT = int_fcat EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS = 3. *explanations: * I_PROGRAM_NAME is the program which calls this function * * I_INTERNAL_TABNAME is the name of the internal table which you want * to display in ALV * * I_INCLNAME is the ABAP-source where the internal table is defined * (DATA....) * CT_FIELDCAT contains the Fieldcatalouge that we need later for * ALV display IF SY-SUBRC <> 0. write: / 'Returncode', sy-subrc, 'from FUNCTION REUSE_ALV_FIELDCATALOG_MERGE'. ENDIF. *This was the fieldcatlogue *---------------------------------------------------------------------* * * And now, we are ready to display our list * Call for ALV list display CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING * I_CALLBACK_PROGRAM = 'Z_ALV_SIMPLE_EXAMPLE_WITH_ITAB' I_CALLBACK_PROGRAM = i_repid IT_FIELDCAT = int_fcat I_SAVE = 'A' TABLES T_OUTTAB = imat EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. * *explanations: * I_CALLBACK_PROGRAM is the program which calls this function * * IT_FIELDCAT (just made by REUSE_ALV_FIELDCATALOG_MERGE) contains * now the data definition needed for display * * I_SAVE allows the user to save his own layouts * * T_OUTTAB contains the data to be displayed in ALV IF SY-SUBRC <> 0. write: / 'Returncode', sy-subrc, 'from FUNCTION REUSE_ALV_LIST_DISPLAY'.

ENDIF. * *---------------------------------------------------------------------* * * yes, it is that simple. Go ahead and try yourself! * *---------------------------------------------------------------------*

You might also like