0% found this document useful (0 votes)
1K views36 pages

Sample Reports On All Topics

This document provides examples of different types of ABAP reports and common SELECT statements used in SAP ABAP. It covers: 1. A simple report using internal tables and work areas to SELECT and display data from the MARA table. 2. Examples of SELECT SINGLE and SELECT UP TO 1 rows statements to retrieve single or limited rows from MARA. 3. A SELECT statement using a JOIN to retrieve fields from multiple tables (MARA and MAKT). It provides code snippets for common reporting tasks like validation, selection screens, and output displays.

Uploaded by

Anonymous EB4o01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views36 pages

Sample Reports On All Topics

This document provides examples of different types of ABAP reports and common SELECT statements used in SAP ABAP. It covers: 1. A simple report using internal tables and work areas to SELECT and display data from the MARA table. 2. Examples of SELECT SINGLE and SELECT UP TO 1 rows statements to retrieve single or limited rows from MARA. 3. A SELECT statement using a JOIN to retrieve fields from multiple tables (MARA and MAKT). It provides code snippets for common reporting tasks like validation, selection screens, and output displays.

Uploaded by

Anonymous EB4o01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 36

ABAP Reports

1. Simple ABAP Report using internal tables and work areas

**TYPES is a statement which is used to declare a user defined internal


table with specific fields
TYPES : BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MEINS TYPE MARA-MEINS,
MBRSH TYPE MARA-MBRSH,
END OF TY_MARA.
DATA : IT_MARA TYPE TABLE OF TY_MARA . "INTERNAL TABLE FOR ABOVE USER
DEFINED TYPES TABLE

DATA : WA_MARA TYPE TY_MARA. "WORK AREA FOR ABOVE USER DEFINED TABLE

SELECT MATNR MTART MEINS MBRSH FROM MARA INTO TABLE IT_MARA. " GET MARA
DATA
LOOP AT IT_MARA INTO WA_MARA.
WRITE :/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MEINS, WA_MARA-MBRSH.
"Display required fields
ENDLOOP.

2. Select Single and Select up to 1 rows

Select Single:

DATA : WA_MARA TYPE MARA. " Declare work area

SELECT SINGLE * FROM MARA INTO WA_MARA WHERE MATNR = '0001'. " Read
exact record from MARA table

write : wa_mara-matnr, wa_mara-mtart, wa_mara-meins. " Print data to


screen

Select up to 1/n rows

DATA : IT_MARA TYPE TABLE OF MARA. " Declare internal table


DATA : WA_MARA TYPE MARA. " Declare work area

SELECT * FROM MARA INTO WA_MARA UP TO 50 ROWS WHERE MTART = 'FERT'. "
Read 50 appropriate records from MARA table here MTART is not a
keyfield
ENDSELECT.
LOOP AT IT_MARA INTO WA_MARA.
write :/ wa_mara-matnr, wa_mara-mtart, wa_mara-meins. " Print data to
screen
ENDLOOP.

3. Select with Joins in SAP ABAP

**DATA DECLERATIONS
TYPES: BEGIN OF T_MARA,
MATNR LIKE MARA-MATNR, "FIELD1 FROM MARA TABLE
MTART TYPE MARA-MTART, "FIELD2 FROM MARA TABLE
MAKTX TYPE MAKT-MAKTX, "FIELD1 FROM MAKT TABLE
SPRAS TYPE MAKT-SPRAS, "FIELD2 FROM MAKT TABLE
END OF T_MARA.
ABAP Reports

DATA: IT_MARA TYPE TABLE OF T_MARA .


DATA : WA_MARA TYPE T_MARA.
SELECT MARA~MATNR
MARA~MTART
MAKT~MAKTX
MAKT~SPRAS
INTO TABLE IT_MARA
FROM MARA INNER JOIN MAKT ON ( MARA~MATNR = MAKT~MATNR )
UP TO 50 ROWS.

LOOP AT IT_MARA INTO WA_MARA.


WRITE : / WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MAKTX, WA_MARA-SPRAS
.
ENDLOOP.

4. Select for all entries in SAP ABAP

DATA: it_mara TYPE TABLE OF mara,


wa_mara TYPE mara.
DATA: it_makt TYPE TABLE OF makt,
wa_makt TYPE makt.
SELECT *
FROM mara
INTO TABLE it_mara
WHERE mtart = 'FERT'.
IF it_mara IS NOT INITIAL.
SELECT *
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.
ENDIF.

5. Select into corresponding fields in SAP ABAP

REPORT ZSAPN_SELECT_CORRESPONDING.
TYPES : BEGIN OF TY_MARA,
"USER DEFINED TYPE WITH FOUR FIELDS
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : IT_MARA TYPE TABLE OF TY_MARA . "INTERNAL TABLE FOR USER DEFINED
TYPE
DATA : WA_MARA TYPE TY_MARA . "WORK AREA FOR USER DEFINED TYPE
SELECT * FROM MARA
INTO CORRESPONDING FIELDS OF TABLE IT_MARA
UP TO 50 ROWS.
LOOP AT IT_MARA INTO WA_MARA.
WRITE :/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MBRSH, WA_MARA-MEINS.
"DISPLAY OUTPUT
ENDLOOP.
ABAP Reports

6. Select distinct in sap abap

TYPES: BEGIN OF ty_mtart,


mtart TYPE mara-mtart,
END OF ty_mtart.
DATA: it_mtart TYPE TABLE OF ty_mtart,
wa_mtart TYPE ty_mtart.
START-OF-SELECTION.
SELECT DISTINCT mtart FROM mara INTO TABLE it_mtart UP TO 5 ROWS.

LOOP AT it_mtart INTO wa_mtart.


WRITE:/ wa_mtart-mtart.
ENDLOOP.

7. SELECT with BYPASSING BUFFER in SAP ABAP

TYPES: BEGIN OF ty_mara,


matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
END OF ty_mara.
DATA: it_mara TYPE TABLE OF ty_mara,
wa_mara TYPE ty_mara.

START-OF-SELECTION.
SELECT matnr mtart FROM mara INTO TABLE it_mara BYPASSING BUFFER.

LOOP AT it_mara INTO wa_mara.


WRITE:/ wa_mara-matnr, wa_mara-mtart.
ENDLOOP.

8. SELECT APPENDING

TYPES: BEGIN OF ty_mara,


matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
END OF ty_mara.
DATA: it_mara TYPE TABLE OF ty_mara.
DATA: wa_mara TYPE ty_mara.
**Get first 10 records from MARA where MTART = FERT
SELECT matnr mtart
FROM mara
INTO TABLE it_mara
UP TO 10 ROWS
WHERE mtart = 'FERT'
.
**Get 10 reords from MARA where MTART = HALB append them to same
internal table
SELECT matnr mtart
FROM mara
APPENDING TABLE it_mara
UP TO 10 ROWS
WHERE mtart = 'HALB'.

LOOP AT it_mara INTO wa_mara.


WRITE:/ wa_mara-matnr, wa_mara-mtart.
ENDLOOP.
ABAP Reports

9. Drop Down box in Selection Screen in SAP ABAP

REPORT ZSAPN_DROP_DOWN_SS.

TYPE-POOLS: VRM. " Use type group VRM for list

DATA: IT_LIST TYPE VRM_VALUES.


DATA: WA_LIST TYPE VRM_VALUE.
DATA: IT_VALUES TYPE TABLE OF DYNPREAD,
WA_VALUES TYPE DYNPREAD.

DATA: LV_SELECTED_VALUE(10) TYPE C.


*--------------------------------------------------------------*
*Selection-Screen
*--------------------------------------------------------------*
PARAMETERS: COLORS TYPE C AS LISTBOX VISIBLE LENGTH 20. "Parameter
*--------------------------------------------------------------*
*Initialization
*--------------------------------------------------------------*
INITIALIZATION. "initialize values to drop down list
WA_LIST-KEY = '1'.
WA_LIST-TEXT = 'Green'.
APPEND WA_LIST TO IT_LIST.
WA_LIST-KEY = '2'.
WA_LIST-TEXT = 'Blue'.
APPEND WA_LIST TO IT_LIST.
WA_LIST-KEY = '3'.
WA_LIST-TEXT = 'Orange'.
APPEND WA_LIST TO IT_LIST.
WA_LIST-KEY = '4'.
WA_LIST-TEXT = 'Gray'.
APPEND WA_LIST TO IT_LIST.
WA_LIST-KEY = '5'.
WA_LIST-TEXT = 'White'.
APPEND WA_LIST TO IT_LIST.
WA_LIST-KEY = '6'.
WA_LIST-TEXT = 'Yellow'.
APPEND WA_LIST TO IT_LIST.

CALL FUNCTION 'VRM_SET_VALUES'


EXPORTING
ID = 'COLORS'
VALUES = IT_LIST
EXCEPTIONS
ID_ILLEGAL_NAME = 1
OTHERS = 2.

*--------------------------------------------------------------*
*At Selection Screen
*--------------------------------------------------------------*
AT SELECTION-SCREEN ON COLORS.
CLEAR: WA_VALUES, IT_VALUES.
REFRESH IT_VALUES.
WA_VALUES-FIELDNAME = 'COLORS'.
APPEND WA_VALUES TO IT_VALUES.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
ABAP Reports

DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TRANSLATE_TO_UPPER = 'X'
TABLES
DYNPFIELDS = IT_VALUES.

READ TABLE IT_VALUES INDEX 1 INTO WA_VALUES.


IF SY-SUBRC = 0 AND WA_VALUES-FIELDVALUE IS NOT INITIAL.
READ TABLE IT_LIST INTO WA_LIST
WITH KEY KEY = WA_VALUES-FIELDVALUE.
IF SY-SUBRC = 0.
LV_SELECTED_VALUE = WA_LIST-TEXT.
ENDIF.
ENDIF.
*--------------------------------------------------------------*
*Start of Selection
*--------------------------------------------------------------*
START-OF-SELECTION.
WRITE:/ LV_SELECTED_VALUE.

10. Classical Report Using all events in SAP ABAP

REPORT ZSAPN_CLASSICAL_REPORT LINE-COUNT 34(2). "34 lines are for


report space and 2 lines are for footer space
TABLES : MARA.
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
ERSDA TYPE MARA-ERSDA,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MATKL TYPE MARA-MATKL,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA: IT_MARA TYPE TABLE OF TY_MARA. "material out put internal table
DATA: WA_MARA TYPE TY_MARA. " work area

DATA: LV_MTART TYPE MARA-MTART.


DATA: LV_START_TIME TYPE SY-UZEIT.
DATA: LV_END_TIME TYPE SY-UZEIT.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. "designs
a block just for design double click on TEXT-001 to add text

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR. " Material range input


PARAMETERS: P_MTART TYPE MARA-MTART. "material type input

SELECTION-SCREEN END OF BLOCK B1.


PARAMETERS P_DLOAD AS CHECKBOX USER-COMMAND UC1.
PARAMETERS P_FILE TYPE RLGRAP-FILENAME MODIF ID DLD.
PARAMETERS P_LIMIT TYPE I. "Limit no of rows to display to avoid the
burden on database

LOAD-OF-PROGRAM. "loads program into memory


LV_START_TIME = SY-UZEIT. " see system variables
www.sapnuts.com/resourse/system-variable.html

INITIALIZATION. "triggers second


P_MTART = 'FERT'. "MATERIAL TYPE DEFAULT VALUE
P_LIMIT = '50'. "Limit rows to 50
ABAP Reports

AT SELECTION-SCREEN OUTPUT. "For dynamic modifications


IF P_DLOAD IS INITIAL.
LOOP AT SCREEN.
CHECK SCREEN-GROUP1 = 'DLD'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDLOOP.
ENDIF.

AT SELECTION-SCREEN ON P_MTART. " Validate single input field at


selection-screen is an alternative and good see
http://www.sapnuts.com/courses/core-abap/classical-reports/selection-
screen-event.html

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MTART. "This event is not


required here will use in the next lesson
PERFORM MTART_VALUE_HELP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.


PERFORM FILE_VALUE_HELP.

AT SELECTION-SCREEN ON HELP-REQUEST FOR P_MTART. " Provide help request


F1 help.
PERFORM MTART_HELP.

AT SELECTION-SCREEN.
PERFORM VALIDATE_INPUTS.

START-OF-SELECTION.
PERFORM GET_MATERIALS.

END-OF-SELECTION.
LV_END_TIME = SY-UZEIT.
PERFORM DISPLAY_OUTPUT.
IF P_DLOAD = 'X'.
PERFORM DOWNLOAD_DATA.
ENDIF.

TOP-OF-PAGE.
WRITE: 'Material Details ' COLOR 2.

END-OF-PAGE.
WRITE:'The above materials are active materials available in
database' COLOR 3.
WRITE: 'Start time'.
WRITE: LV_START_TIME.
WRITE: 'End time'.
WRITE: LV_END_TIME.

FORM VALIDATE_INPUTS.
IF S_MATNR IS INITIAL OR P_MTART IS INITIAL.

MESSAGE 'Please enter required inputs' TYPE 'E'.

ELSE.
ABAP Reports

***Validate material type is valid or not


SELECT MTART FROM MARA INTO LV_MTART
UP TO 1 ROWS WHERE MTART = P_MTART.
ENDSELECT.
IF LV_MTART IS INITIAL.
MESSAGE 'Material type is not available in MARA' TYPE 'E'.
ENDIF.
ENDIF.
ENDFORM. " VALIDATE_INPUTS

FORM GET_MATERIALS.
SELECT MATNR ERSDA MTART MBRSH MATKL MEINS FROM MARA
INTO TABLE IT_MARA
UP TO P_LIMIT ROWS
WHERE MATNR IN S_MATNR AND MTART = P_MTART.

ENDFORM. " GET_MATERIALS

FORM DISPLAY_OUTPUT .
IF IT_MARA IS NOT INITIAL.
LOOP AT IT_MARA INTO WA_MARA.

WRITE :/ WA_MARA-MATNR, WA_MARA-ERSDA, WA_MARA-MTART, WA_MARA-


MBRSH, WA_MARA-MATKL, WA_MARA-MEINS .

ENDLOOP.
ELSE.
WRITE :'No Data Found for your Query'.
ENDIF.
ENDFORM. " DISPLAY_OUTPUT

FORM MTART_HELP.
MESSAGE 'Enter a Material Type ' TYPE 'I'.
ENDFORM. " MTART_HELP

FORM MTART_VALUE_HELP.
MESSAGE 'Material type input ex: FERT' TYPE 'I'.
ENDFORM. " MTART_VSLUE_HELP

FORM DOWNLOAD_DATA .
DATA : LV_FILE TYPE STRING .
LV_FILE = P_FILE .
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
FILENAME = LV_FILE
FILETYPE = 'ASC'
* APPEND = ' '
WRITE_FIELD_SEPARATOR = 'X'
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
ABAP Reports

* CODEPAGE = ' '


* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = IT_MARA
* FIELDNAMES =
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
.
IF SY-SUBRC = 0.
WRITE :/ 'Data downloaded to'.
WRITE:P_FILE.
ENDIF.

ENDFORM. " DOWNLOAD_DATA

FORM FILE_VALUE_HELP.

CALL FUNCTION 'F4_FILENAME'


EXPORTING
FIELD_NAME = 'P_FILE'
IMPORTING
FILE_NAME = P_FILE.
ENDFORM. " FILE_VALUE_HELP
ABAP Reports

11. Using at Selection Screen output in SAP ABAP

REPORT ZSPN_SELECTION_SCREEN_OUTPUT.
PARAMETERS P_ENABLE AS CHECKBOX USER-COMMAND UC1.
PARAMETERS: INPUT(5) TYPE C MODIF ID IN1 . "Based on modif id we will
perform dynamic operations

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
IF P_ENABLE = 'X' . " If check box is selected
IF SCREEN-GROUP1 = 'IN1' .
SCREEN-ACTIVE = 1.
MODIFY SCREEN.
ENDIF.
ELSE.
IF SCREEN-GROUP1 = 'IN1' .
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.

12. Using INITIALIZATION event to set default Values

REPORT ZSAPN_INITIALIZATION.
TABLES : MARA. "tables decleration for select-options
PARAMETERS: P_INPUT TYPE CHAR20. "Input fied with 20 character length.

SELECT-OPTIONS: S_SO FOR MARA-MATNR. "select-options

PARAMETERS P_CHK AS CHECKBOX. "check box

PARAMETERS P_RAD1 RADIOBUTTON GROUP RB1.


PARAMETERS P_RAD2 RADIOBUTTON GROUP RB1.

INITIALIZATION.

P_INPUT = 'SAPNuts'.
S_SO-LOW = '1'.
S_SO-OPTION = 'BT'.
S_SO-SIGN = 'I'.
S_SO-HIGH = '100'.
APPEND S_SO.
P_CHK = 'X'.

13. Developing a Interactive report in SAP ABAP

REPORT ZSAPN_INTERACTIVE_REPORT LINE-COUNT 33(3) NO STANDARD PAGE


HEADING. "leave some pages for footer and hide standard heading
DATA : IT_MARA TYPE TABLE OF MARA, "mara internal table
WA_MARA TYPE MARA, "mara work area
IT_MARC TYPE TABLE OF MARC, "marc internal table
WA_MARC TYPE MARC. "marc work area

PARAMETERS P_MTART TYPE MARA-MTART. "selection screen element input


field
ABAP Reports

INITIALIZATION. "initialization event

AT SELECTION-SCREEN. "at selection screen event to validate inputs


PERFORM VALIDATE_INPUT. "Subroutine to validate input

START-OF-SELECTION.
PERFORM GET_MATERIAL_DATA.
PERFORM DISPLAY_MATERIALS.

TOP-OF-PAGE.
PERFORM DISPLAY_HEADER.

END-OF-PAGE.
PERFORM DISPLAY_FOOTER.

AT LINE-SELECTION.
PERFORM GET_PLANT_DATA.
PERFORM DISPLAY_PLANT_DATA.

TOP-OF-PAGE DURING LINE-SELECTION.


PERFORM DISPLAY_LIST_HEADER.
FORM VALIDATE_INPUT .
IF P_MTART IS INITIAL.
MESSAGE 'Please enter input' TYPE 'E'.
ENDIF.
ENDFORM. " VALIDATE_INPUT

FORM GET_MATERIAL_DATA .
SELECT * FROM MARA
INTO TABLE IT_MARA
UP TO 50 ROWS
WHERE MTART = P_MTART .
ENDFORM. " GET_MATERIAL_DATA
FORM DISPLAY_MATERIALS .
LOOP AT IT_MARA INTO WA_MARA.
WRITE:/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MATKL, WA_MARA-MBRSH.
HIDE WA_MARA. "store line details in HIDE area
ENDLOOP.
ENDFORM. " DISPLAY_MATERIALS
FORM DISPLAY_HEADER .
WRITE : 'Material Basic Details' COLOR 5.
ENDFORM. " DISPLAY_HEADER

FORM DISPLAY_FOOTER .
WRITE: 'Report Generated at:', SY-DATUM COLOR 1.
ENDFORM. " DISPLAY_FOOTER
FORM GET_PLANT_DATA .
SELECT * FROM MARC
INTO TABLE IT_MARC
WHERE MATNR = WA_MARA-MATNR.
ENDFORM. " GET_PLANT_DATA
FORM DISPLAY_PLANT_DATA .
LOOP AT IT_MARC INTO WA_MARC.
WRITE :/ WA_MARC-MATNR, WA_MARC-WERKS.
ENDLOOP.
ENDFORM. " DISPLAY_PLANT_DATA
ABAP Reports

FORM DISPLAY_LIST_HEADER .
WRITE: 'List of Plants for material:', WA_MARA-MATNR COLOR 6.
ENDFORM. " DISPLAY_LIST_HEADER

14. Interactive report using HIDE technique in SAP ABAP

REPORT ZSAPN_INTERACTIVE_REPORT LINE-COUNT 33(3) NO STANDARD PAGE


HEADING. "leave some pages for footer and hide standard heading
DATA : IT_MARA TYPE TABLE OF MARA, "mara internal table
WA_MARA TYPE MARA, "mara work area
IT_MAKT TYPE TABLE OF MAKT, "MAKT internal table
WA_MAKT TYPE MAKT. "MAKT work area

PARAMETERS P_MTART TYPE MARA-MTART. "selection screen element input


field

INITIALIZATION. "initialization event

AT SELECTION-SCREEN. "at selection screen event to validate inputs


PERFORM VALIDATE_INPUT. "Subroutine to validate input

START-OF-SELECTION.
PERFORM GET_MATERIAL_DATA.
PERFORM DISPLAY_MATERIALS.

TOP-OF-PAGE.
PERFORM DISPLAY_HEADER.

END-OF-PAGE.
PERFORM DISPLAY_FOOTER.

AT LINE-SELECTION.
PERFORM GET_DESC_DATA.
PERFORM DISPLAY_DESC_DATA.

TOP-OF-PAGE DURING LINE-SELECTION.


PERFORM DISPLAY_LIST_HEADER.
FORM VALIDATE_INPUT .
IF P_MTART IS INITIAL.
MESSAGE 'Please enter input' TYPE 'E'.
ENDIF.
ENDFORM. " VALIDATE_INPUT

FORM GET_MATERIAL_DATA .
SELECT * FROM MARA
INTO TABLE IT_MARA
UP TO 50 ROWS
WHERE MTART = P_MTART .
ENDFORM. " GET_MATERIAL_DATA
FORM DISPLAY_MATERIALS .
LOOP AT IT_MARA INTO WA_MARA.
WRITE:/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MATKL, WA_MARA-MBRSH.
HIDE WA_MARA. "store line details in HIDE area
ENDLOOP.
ENDFORM. " DISPLAY_MATERIALS
FORM DISPLAY_HEADER .
WRITE : 'Material Basic Details' COLOR 5.
ENDFORM. " DISPLAY_HEADER
ABAP Reports

FORM DISPLAY_FOOTER .
WRITE: 'Report Generated at:', SY-DATUM COLOR 1.
ENDFORM. " DISPLAY_FOOTER
FORM GET_DESC_DATA .
SELECT * FROM MAKT
INTO TABLE IT_MAKT
WHERE MATNR = WA_MARA-MATNR.
ENDFORM. " GET_DESC_DATA
FORM DISPLAY_DESC_DATA .
LOOP AT IT_MAKT INTO WA_MAKT.
WRITE :/ WA_MAKT-MATNR, WA_MAKT-MAKTX.
ENDLOOP.
ENDFORM. " DISPLAY_DESC_DATA

FORM DISPLAY_LIST_HEADER .
WRITE: 'Descriptions for material:', WA_MARA-MATNR COLOR 6.
ENDFORM. " DISPLAY_LIST_HEADER

15. Interactive report using GET CURSOR technique SAP ABAP

REPORT ZSAPN_INTERACTIVE_GETCURSOR LINE-COUNT 30(3) NO STANDARD PAGE


HEADING.
DATA : IT_MARA TYPE TABLE OF MARA,
WA_MARA TYPE MARA,
IT_MAKT TYPE TABLE OF MAKT,
WA_MAKT TYPE MAKT.
DATA : FNAM(30), FVAL(50).

SELECT-OPTIONS : S_MATNR FOR WA_MARA-MATNR.

INITIALIZATION.

AT SELECTION-SCREEN.
PERFORM VALIDATE_INPUT.

START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM DISPLAY_DATA.

TOP-OF-PAGE.
PERFORM DISPLAY_TOPOFPAGE.

AT LINE-SELECTION.
PERFORM DISPLAY_SECONDARYLIST.

TOP-OF-PAGE DURING LINE-SELECTION.


PERFORM LINE_TOPOFPAGE.
FORM VALIDATE_INPUT .
IF S_MATNR IS INITIAL.
MESSAGE 'Enter material input' TYPE 'E'.
ENDIF.
ENDFORM. " VALIDATE_INPUT
FORM GET_DATA .
SELECT * FROM MARA INTO TABLE IT_MARA WHERE MATNR IN S_MATNR.
ENDFORM. " GET_DATA
FORM DISPLAY_DATA .
LOOP AT IT_MARA INTO WA_MARA.
ABAP Reports

WRITE:/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MATKL, WA_MARA-MEINS.


ENDLOOP.
ENDFORM. " DISPLAY_DATA
FORM DISPLAY_SECONDARYLIST .
GET CURSOR FIELD FNAM VALUE FVAL.
CONDENSE FNAM.
CONDENSE FVAL.
IF FNAM = 'WA_MARA-MATNR'.
SELECT SINGLE * FROM MARA INTO WA_MARA WHERE MATNR = FVAL .
WRITE:/ WA_MARA-MATNR, WA_MARA-MBRSH, WA_MARA-MTART, WA_MARA-MATKL,
WA_MARA-MEINS, WA_MARA-ERSDA, WA_MARA-ERNAM.
ELSEIF FNAM = 'WA_MARA-MTART'.
SELECT * FROM MARA INTO TABLE IT_MARA UP TO 50 ROWS WHERE MTART =
FVAL.
LOOP AT IT_MARA INTO WA_MARA.
WRITE:/ WA_MARA-MATNR, WA_MARA-MTART, WA_MARA-MATKL.
ENDLOOP.
ENDIF.

ENDFORM. " DISPLAY_SECONDARYLIST


FORM DISPLAY_TOPOFPAGE .
WRITE:/ 'Material Details' COLOR 3.
ENDFORM. " DISPLAY_TOPOFPAGE
FORM LINE_TOPOFPAGE .
IF FNAM = 'WA_MARA-MATNR'.
WRITE:/ 'Material details ', WA_MARA-MATNR COLOR 5.
ELSEIF FNAM = 'WA_MARA-MTART'.
WRITE:/ 'Material with material type ', WA_MARA-MTART COLOR 5.
ENDIF.
ENDFORM. " LINE_TOPOFPAGE

16. TREE list report using SAP ABAP

REPORT ZSAPN_TREE_MATERIAL.
***Material Basic Data Declarations
TYPES: BEGIN OF TY_MARA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MATKL TYPE MARA-MATKL,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : IT_MARA TYPE TABLE OF TY_MARA.
DATA : WA_MARA TYPE TY_MARA.
***Material Descriptions Declarations
TYPES: BEGIN OF TY_MAKT,
MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MAKT.
DATA : IT_MAKT TYPE TABLE OF TY_MAKT.
DATA : WA_MAKT TYPE TY_MAKT.
***Data Table decleration for FM RS_TREE_CONSTRUCT
DATA: IT_NODE TYPE STANDARD TABLE OF SNODETEXT,
WA_NODE TYPE SNODETEXT.
**Declare Constants for TREE
CONSTANTS:
C_COL_KEY TYPE C LENGTH 1 VALUE COL_KEY,
ABAP Reports

C_COL_FIELD TYPE C LENGTH 1 VALUE COL_NORMAL,


C_COL_MATNR TYPE C LENGTH 1 VALUE COL_KEY,
C_COL_MAKTX TYPE C LENGTH 1 VALUE COL_POSITIVE.
**Selection Screen
SELECT-OPTIONS : S_MATNR FOR WA_MARA-MATNR.

START-OF-SELECTION.
**Get Data From Tables
SELECT MATNR MTART MBRSH MATKL MEINS FROM MARA INTO TABLE IT_MARA UP
TO 50 ROWS WHERE MATNR IN S_MATNR.
SELECT MATNR SPRAS MAKTX FROM MAKT INTO TABLE IT_MAKT FOR ALL ENTRIES
IN IT_MARA WHERE MATNR = IT_MARA-MATNR.
"Create root node at level 1
WA_NODE-TLEVEL = 1.
WA_NODE-NAME = 'Materials'.
WA_NODE-NLENGTH = 20.
WA_NODE-COLOR = C_COL_KEY.
WA_NODE-TEXT = 'Material Master Report'.
WA_NODE-TLENGTH = 50.
APPEND WA_NODE TO IT_NODE.
LOOP AT IT_MARA INTO WA_MARA.
CLEAR WA_NODE.
WA_NODE-TLEVEL = 2. "Node Level 2
"Material Number
WA_NODE-NAME = WA_MARA-MATNR.
WA_NODE-NLENGTH = 18.
WA_NODE-COLOR = C_COL_MATNR.

"Material Type
WA_NODE-TEXT1 = WA_MARA-MTART.
WA_NODE-TLENGTH1 = 4.
WA_NODE-TCOLOR1 = C_COL_FIELD.

"Industry Sector
WA_NODE-TEXT2 = WA_MARA-MBRSH.
WA_NODE-TLENGTH2 = 1.
WA_NODE-TCOLOR2 = C_COL_FIELD.

"Material Group
WA_NODE-TEXT3 = WA_MARA-MATKL.
WA_NODE-TLENGTH3 = 4.
WA_NODE-TCOLOR3 = C_COL_FIELD.
"Unit of Measure
WA_NODE-TEXT4 = WA_MARA-MEINS.
WA_NODE-TLENGTH4 = 3.
WA_NODE-TCOLOR4 = C_COL_FIELD.
APPEND WA_NODE TO IT_NODE.
LOOP AT IT_MAKT INTO WA_MAKT WHERE MATNR = WA_MARA-MATNR.
CLEAR WA_NODE.
WA_NODE-TLEVEL = 3. "Node level 3
"Material Number
WA_NODE-NAME = WA_MAKT-MATNR.
WA_NODE-NLENGTH = 18.
WA_NODE-COLOR = C_COL_MAKTX.
"Language ISO Code
WA_NODE-TEXT = WA_MAKT-SPRAS.
WA_NODE-TLENGTH = 2.
WA_NODE-TCOLOR = C_COL_FIELD.
ABAP Reports

"Material Description
WA_NODE-TEXT1 = WA_MAKT-MAKTX.
WA_NODE-TLENGTH1 = 40.
WA_NODE-TCOLOR1 = C_COL_FIELD.
APPEND WA_NODE TO IT_NODE.
ENDLOOP.
ENDLOOP.
**Construct Tree
CALL FUNCTION 'RS_TREE_CONSTRUCT'
* EXPORTING
* INSERT_ID = '000000'
* RELATIONSHIP = ' '
* LOG =
TABLES
NODETAB = IT_NODE
EXCEPTIONS
TREE_FAILURE = 1
ID_NOT_FOUND = 2
WRONG_RELATIONSHIP = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
WRITE 'Error in Tree Construction'.
ENDIF.
***Display TREE
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
CALLBACK_PROGRAM = SY-REPID.

17. ALV Report with Structure in SAP ABAP

REPORT ZALV_STR.
TABLES: MARA.
DATA : IT_MARA TYPE TABLE OF MARA .

SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.

START-OF-SELECTION .
PERFORM GET_MARA_DATA . "Double click to create below form

END-OF-SELECTION .
PERFORM DISP_MARA_ALV . "Double click to create below form

*&---------------------------------------------------------------------
*& Form GET_MARA_DATA
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM GET_MARA_DATA .
SELECT * FROM MARA
INTO TABLE IT_MARA
WHERE MATNR IN S_MATNR
.
ENDFORM. " GET__MARA_DATA
*&---------------------------------------------------------------------
*& Form DISP_MARA_ALV
ABAP Reports

*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM DISP_MARA_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_STRUCTURE_NAME = 'MARA'
TABLES
T_OUTTAB = IT_MARA.

ENDFORM. " DISP_MARA_ALV

18. ALV Report with Field Catalog SAP ABAP

REPORT ZSAPN_ALV_FCAT.
TABLES : MARA.
TYPE-POOLS SLIS .

TYPES : BEGIN OF TY_MARA, "User defined internal table type


MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA .


DATA : WA_MARA TYPE TY_MARA .

DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV .


DATA : WA_FCAT LIKE LINE OF IT_FCAT .
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.

START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT.

END-OF-SELECTION .
PERFORM DISP_ALV .

*&---------------------------------------------------------------------
*& Form GET_DATA
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM GET_DATA .
SELECT MATNR MTART MBRSH MEINS FROM MARA
INTO TABLE IT_MARA
WHERE MATNR IN S_MATNR.
.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------
ABAP Reports

*& Form DISP_ALV


*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM DISP_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FCAT "PASS FIELD CATALOG TO ALV
TABLES
T_OUTTAB = IT_MARA.

ENDFORM. " DISP_ALV


*&---------------------------------------------------------------------
*& Form CREATE_FCAT
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
*
FORM CREATE_FCAT .
WA_FCAT-COL_POS = '1' .
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'MATERIALNO' .
WA_FCAT-KEY = 'X' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '2' .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'MATERIALTYPE' .
* WA_FCAT-NO_OUT = 'X' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '3' .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-REF_FIELDNAME = 'MBRSH' .
WA_FCAT-REF_TABNAME = 'MARA' .
* WA_FCAT-TABNAME = 'IT_MARA' .
* WA_FCAT-SELTEXT_M = 'INDSECTOR' .
* WA_FCAT-EDIT = 'X' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'MAT.UNITS' .
WA_FCAT-EMPHASIZE = 'C610'.
ABAP Reports

APPEND WA_FCAT TO IT_FCAT .


CLEAR WA_FCAT .

ENDFORM. " CREATE_FCAT

19. ALV Report with Field Catalog SAP ABAP using field catalog merge.

REPORT ZALV_WITH_FCAT_MERGE.

TYPE-POOLS SLIS .

DATA : BEGIN OF I_MARA OCCURS 0,


MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MBRSH LIKE MARA-MBRSH,
MEINS LIKE MARA-MEINS,
END OF I_MARA.

DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .


DATA : WA_FCAT LIKE LINE OF I_FCAT .

START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT_MERGE .

END-OF-SELECTION .
PERFORM DISP_ALV .

*&---------------------------------------------------------------------
*& Form GET_DATA
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
*
FORM GET_DATA .
SELECT * FROM MARA
INTO CORRESPONDING FIELDS OF TABLE I_MARA
.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------
*
*& Form DISP_ALV
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM DISP_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.
ABAP Reports

ENDFORM. " DISP_ALV


*&---------------------------------------------------------------------
*& Form CREATE_FCAT_MERGE
*&---------------------------------------------------------------------
* text
*----------------------------------------------------------------------
*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------
FORM CREATE_FCAT_MERGE .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'I_MARA'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = I_FCAT.
ENDFORM. " CREATE_FCAT_MERGE

20. ALV Report with layout SAP ABAP

REPORT ZSAPN_ALV_LAYOUT.
TYPE-POOLS : SLIS .
*DATA DECLARAATIONS
DATA : I_MARA TYPE TABLE OF MARA .
DATA : WA_MARA TYPE MARA .
*ALV DECLARATIONS
DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .
DATA : WA_FCAT TYPE SLIS_FIELDCAT_ALV .
DATA : V_POS TYPE I .
DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV .
PARAMETERS : P_MTART TYPE MARA-MTART.

START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT .
PERFORM CREATE_LAYOUT.
PERFORM DISPLAY_DATA .
END-OF-SELECTION .
FORM GET_DATA .

SELECT * FROM MARA


INTO TABLE I_MARA
UP TO 100 ROWS WHERE MTART = P_MTART .
ENDFORM. " GET_DATA
FORM DISPLAY_DATA .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = I_MARA.
ENDFORM. " DISPLAY_DATA
FORM DISPLAY_DATA_LIST .
ABAP Reports

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'


EXPORTING
I_STRUCTURE_NAME = 'MARA'
TABLES
T_OUTTAB = I_MARA.
IF SY-SUBRC NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_DATA_LIST

FORM CREATE_FCAT .
V_POS = 1 .
WA_FCAT-COL_POS = V_POS.
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-SELTEXT_M = 'Material.NO' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-SELTEXT_M = 'Material.Type' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-SELTEXT_M = 'Ind.Sector' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MATKL' .
WA_FCAT-SELTEXT_M = 'Mat.Grp' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-SELTEXT_M = 'Units' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

ENDFORM. " CREATE_FCAT


FORM CREATE_LAYOUT .
WA_LAYOUT-ZEBRA = 'X' .
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
WA_LAYOUT-EDIT = 'X' .
WA_LAYOUT-NO_VLINE = 'X' .
WA_LAYOUT-NO_HLINE = 'X' .

ENDFORM. " CREATE_LAYOUT


ABAP Reports

21. ALV with totals and sub totals in SAP ABAP

REPORT ZALV_WITH_TOTALS_SUBTOT.
TYPE-POOLS SLIS .
tables : vbap.
TYPES : BEGIN OF TY_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
NETWR TYPE VBAP-NETWR,
END OF TY_VBAP.
DATA : I_VBAP TYPE TABLE OF TY_VBAP .
DATA : WA_VBAP TYPE TY_VBAP .

DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .


DATA : WA_FCAT LIKE LINE OF I_FCAT .
DATA : I_SORT TYPE SLIS_T_SORTINFO_ALV .
DATA : WA_SORT LIKE LINE OF I_SORT .
select-options : s_vbeln for vbap-vbeln.
START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT.
PERFORM CALC_SUBTOT.

END-OF-SELECTION .
PERFORM DISP_ALV .
FORM GET_DATA .
SELECT VBELN POSNR MATNR NETWR FROM VBAP
INTO TABLE I_VBAP where vbeln in s_vbeln
.
ENDFORM. " GET_DATA
FORM DISP_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
IT_FIELDCAT = I_FCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = I_SORT
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
ABAP Reports

* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = I_VBAP
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. " DISP_ALV


FORM CREATE_FCAT .
WA_FCAT-COL_POS = '1' .
WA_FCAT-FIELDNAME = 'VBELN' .
WA_FCAT-TABNAME = 'I_VBAP' .
WA_FCAT-SELTEXT_M = 'SDNO' .
WA_FCAT-KEY = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '2' .
WA_FCAT-FIELDNAME = 'POSNR' .
WA_FCAT-TABNAME = 'I_VBAP' .
WA_FCAT-SELTEXT_M = 'ITEMNO' .
* WA_FCAT-NO_OUT = 'X' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '3' .
WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-TABNAME = 'I_VBAP' .
WA_FCAT-SELTEXT_M = 'MATERIALNO' .
* WA_FCAT-EDIT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'NETWR' .
ABAP Reports

WA_FCAT-TABNAME = 'I_VBAP' .
WA_FCAT-SELTEXT_M = 'NETPRICE' .
WA_FCAT-EMPHASIZE = 'C610'.
WA_FCAT-DO_SUM = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

ENDFORM. " CREATE_FCAT


FORM CALC_SUBTOT .
WA_SORT-FIELDNAME = 'VBELN '.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X '.
APPEND WA_SORT TO I_SORT .
ENDFORM. " CALC_SUBTOT

22. Using Top of page and end of list IN ALV reports

REPORT ZALV_MATERIAL_TOP_OF_PAGE.
TYPE-POOLS : SLIS .
*DATA DECLARAATIONS
DATA : I_MARA TYPE TABLE OF MARA .
DATA : WA_MARA TYPE MARA .
*ALV DECLARATIONS
DATA : I_FCAT TYPE SLIS_T_FIELDCAT_ALV .
DATA : WA_FCAT TYPE SLIS_FIELDCAT_ALV .
DATA : V_POS TYPE I .
DATA : I_EVENTS TYPE SLIS_T_EVENT .
DATA : WA_EVENTS LIKE LINE OF I_EVENTS .
DATA : I_HEADING TYPE SLIS_T_LISTHEADER .
DATA : WA_HEADING LIKE LINE OF I_HEADING .

START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT .
PERFORM GET_EVENTS .
PERFORM DISPLAY_DATA .

END-OF-SELECTION .

FORM GET_DATA .
SELECT * FROM MARA
INTO TABLE I_MARA
UP TO 100 ROWS .
ENDFORM. " GET_DATA
FORM DISPLAY_DATA .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = I_FCAT
IT_EVENTS = I_EVENTS
TABLES
T_OUTTAB = I_MARA.
ENDFORM. " DISPLAY_DATA

FORM CREATE_FCAT .
V_POS = 1 .
WA_FCAT-COL_POS = V_POS.
ABAP Reports

WA_FCAT-FIELDNAME = 'MATNR' .
WA_FCAT-SELTEXT_M = 'Material.NO' .
WA_FCAT-HOTSPOT = 'X' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-SELTEXT_M = 'Material.Type' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-SELTEXT_M = 'Ind.Sector' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MATKL' .
WA_FCAT-SELTEXT_M = 'Mat.Grp' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

V_POS = V_POS 1.
WA_FCAT-COL_POS = V_POS .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-SELTEXT_M = 'Units' .
APPEND WA_FCAT TO I_FCAT .
CLEAR WA_FCAT .

ENDFORM. " CREATE_FCAT


FORM GET_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
* EXPORTING
* I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = I_EVENTS .

READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'TOP_OF_PAGE' .


WA_EVENTS-FORM = 'FORM_TOP_OF_PAGE' .
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX .

***********END OF LIST
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'END_OF_LIST' .
WA_EVENTS-FORM = 'FORM_END_OF_LIST' .
MODIFY I_EVENTS FROM WA_EVENTS INDEX SY-TABIX .
ENDFORM. " GET_EVENTS

FORM FORM_TOP_OF_PAGE .
WA_HEADING-TYP = 'H' .
* WA_HEADING-KEY = 'H' .
WA_HEADING-INFO = 'MATERIAL MASTER REPORT' .
APPEND WA_HEADING TO I_HEADING .
ABAP Reports

WA_HEADING-TYP = 'S' .
WA_HEADING-KEY = 'USERNAME' .
WA_HEADING-INFO = SY-UNAME .
APPEND WA_HEADING TO I_HEADING .

WA_HEADING-TYP = 'A' .
WA_HEADING-KEY = 'DATE' .
WA_HEADING-INFO = SY-DATUM .
APPEND WA_HEADING TO I_HEADING .

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
IT_LIST_COMMENTARY = I_HEADING
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.

ENDFORM . "FORM_TOP_OF_PAGE

FORM FORM_END_OF_LIST .
REFRESH I_HEADING .
CLEAR WA_HEADING .

WA_HEADING-TYP = 'S' .
WA_HEADING-INFO = 'IBM INDIA PVT.LTD' .
APPEND WA_HEADING TO I_HEADING .

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
IT_LIST_COMMENTARY = I_HEADING
I_END_OF_LIST_GRID = 'X'
.
ENDFORM . "FORM_END_OF_LIST

23. Dynamic ALV to display SE11 table data

REPORT ZSAN_RFCTEST.
DATA : IT_FCAT TYPE LVC_T_FCAT.
PARAMETERS: P_TABLE TYPE DD02L-TABNAME.
DATA : WA_TABLE TYPE DD02L.

AT SELECTION-SCREEN.
IF P_TABLE IS NOT INITIAL.
SELECT SINGLE * FROM DD02L INTO WA_TABLE WHERE TABNAME = P_TABLE
AND TABCLASS = 'TRANSP'.
ELSE.
MESSAGE 'Please enter a table' TYPE 'E'.
STOP.
ENDIF.
IF WA_TABLE IS INITIAL.
MESSAGE 'Table Dosent exit or is not transparent table' TYPE 'E'.
STOP.
ENDIF.

START-OF-SELECTION.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
ABAP Reports

I_STRUCTURE_NAME = P_TABLE
CHANGING
CT_FIELDCAT = IT_FCAT.

DATA : FS_TAB TYPE REF TO DATA.


CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
* I_STYLE_TABLE =
IT_FIELDCATALOG = IT_FCAT
* I_LENGTH_IN_BYTE =
IMPORTING
EP_TABLE = FS_TAB.

FIELD-SYMBOLS: <FS_TAB> TYPE STANDARD TABLE.


ASSIGN FS_TAB->* TO <FS_TAB>.
*data : it_tab type TABLE OF p_table.
SELECT * FROM (P_TABLE) INTO CORRESPONDING FIELDS OF TABLE <FS_TAB>
UP TO 50 ROWS.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = P_TABLE
TABLES
T_OUTTAB = <FS_TAB>.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

24. ALV Blocked List Display

REPORT ZSAPN_ALV_BLOCKEDLIST.
TYPES: BEGIN OF TY_MARA, "user defined type for mara
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MATKL TYPE MARA-MATKL,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.
DATA : IT_MARA TYPE TABLE OF TY_MARA, "mara internal table
WA_MARA TYPE TY_MARA. "mara work area
DATA : T_FCAT TYPE SLIS_T_FIELDCAT_ALV. "field catalog for MARA table
DATA : W_FCAT LIKE LINE OF T_FCAT.

TYPES: BEGIN OF TY_MAKT, "user defined type for MAKT


MATNR TYPE MAKT-MATNR,
SPRAS TYPE MAKT-SPRAS,
MAKTX TYPE MAKT-MAKTX,
END OF TY_MAKT.
DATA : IT_MAKT TYPE TABLE OF TY_MAKT, "makt internal table
WA_MAKT TYPE TY_MAKT.
DATA : T_FCAT_MAKT TYPE SLIS_T_FIELDCAT_ALV. "makt field catalog
DATA : W_FCAT_MAKT LIKE LINE OF T_FCAT_MAKT.
PARAMETERS : P_MTART TYPE MARA-MTART. "material type input

START-OF-SELECTION.

SELECT MATNR
MTART
MBRSH
ABAP Reports

MATKL
MEINS FROM MARA "get MARA data
INTO TABLE IT_MARA UP TO 10 ROWS WHERE MTART = P_MTART.
IF NOT IT_MARA IS INITIAL .
SELECT MATNR
SPRAS
MAKTX FROM MAKT INTO TABLE IT_MAKT "get makt data
FOR ALL ENTRIES IN IT_MARA WHERE MATNR = IT_MARA-MATNR.
ENDIF.
***build fcat for MARA
W_FCAT-COL_POS = '1'. "coloum position
W_FCAT-FIELDNAME = 'MATNR'. "column name
W_FCAT-TABNAME = 'IT_MARA'. "table
W_FCAT-REF_TABNAME = 'MARA'. "table
W_FCAT-REF_FIELDNAME = 'MATNR'. "referance field, it will show
descriptions automatically
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.

W_FCAT-COL_POS = '2'.
W_FCAT-FIELDNAME = 'MTART'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MTART'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.

W_FCAT-COL_POS = '3'.
W_FCAT-FIELDNAME = 'MBRSH'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MBRSH'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.

W_FCAT-COL_POS = '4'.
W_FCAT-FIELDNAME = 'MATKL'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MATKL'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.

W_FCAT-COL_POS = '5'.
W_FCAT-FIELDNAME = 'MEINS'.
W_FCAT-TABNAME = 'IT_MARA'.
W_FCAT-REF_TABNAME = 'MARA'.
W_FCAT-REF_FIELDNAME = 'MEINS'.
APPEND W_FCAT TO T_FCAT.
CLEAR W_FCAT.

***build fcat for MAKT


W_FCAT_MAKT-COL_POS = '1'.
W_FCAT_MAKT-FIELDNAME = 'MATNR'.
W_FCAT_MAKT-TABNAME = 'IT_MAKT'.
W_FCAT_MAKT-REF_TABNAME = 'MAKT'.
W_FCAT_MAKT-REF_FIELDNAME = 'MATNR'.
APPEND W_FCAT_MAKT TO T_FCAT_MAKT.
ABAP Reports

CLEAR W_FCAT_MAKT.
W_FCAT_MAKT-COL_POS = '2'.
W_FCAT_MAKT-FIELDNAME = 'SPRAS'.
W_FCAT_MAKT-TABNAME = 'IT_MAKT'.
W_FCAT_MAKT-REF_TABNAME = 'MAKT'.
W_FCAT_MAKT-REF_FIELDNAME = 'SPRAS'.
APPEND W_FCAT_MAKT TO T_FCAT_MAKT.
CLEAR W_FCAT_MAKT.
W_FCAT_MAKT-COL_POS = '3'.
W_FCAT_MAKT-FIELDNAME = 'MAKTX'.
W_FCAT_MAKT-TABNAME = 'IT_MAKT'.
W_FCAT_MAKT-REF_TABNAME = 'MAKT'.
W_FCAT_MAKT-REF_FIELDNAME = 'MAKTX'.
APPEND W_FCAT_MAKT TO T_FCAT_MAKT.
CLEAR W_FCAT_MAKT.
* * init
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT' "initialize Block List ALV
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID.

DATA S_EVENTS TYPE SLIS_T_EVENT.


DATA S_LAYOUT TYPE SLIS_LAYOUT_ALV.
S_LAYOUT-ZEBRA = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' "append ALV lists
EXPORTING
IS_LAYOUT = S_LAYOUT "set layout
IT_FIELDCAT = T_FCAT "set field catalog
I_TABNAME = 'IT_MARA' "table
IT_EVENTS = S_EVENTS "events
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARA "out put table
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' "append ALV lists


EXPORTING
IS_LAYOUT = S_LAYOUT "set layout
IT_FIELDCAT = T_FCAT_MAKT "set field catalog
I_TABNAME = 'IT_MAKT' "table
IT_EVENTS = S_EVENTS "events
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MAKT "out put table
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
ABAP Reports

* Implement suitable error handling here


ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY' . "display blocked list

25. Hide ALV toolbar buttons using ALV Exclude

REPORT ZSAPN_ALV_FUNCTIONS.
DATA: IT_MARA TYPE TABLE OF MARA,
WA_MARA TYPE MARA.
DATA : FUN TYPE TABLE OF RSEUL_FUN.
DATA : WA_FUN LIKE LINE OF FUN.
DATA : IT_EXCLUDE TYPE SLIS_T_EXTAB,
WA_EXCLUDE TYPE SLIS_EXTAB.

START-OF-SELECTION.
SELECT * FROM MARA INTO TABLE IT_MARA UP TO 50 ROWS.

CALL FUNCTION 'RS_CUA_GET_STATUS_FUNCTIONS'


EXPORTING
LANGUAGE = 'E'
PROGRAM = 'SAPLKKBL'
STATUS = 'STANDARD_FULLSCREEN'
TABLES
FUNCTIONS = FUN.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

*&---------------------------------------------------------------------
* FOR EXCLUDING STANDARD BUTTONS FROM ALV TOOLBAR
*&---------------------------------------------------------------------
LOOP AT FUN INTO WA_FUN. "loop through all functions
IF WA_FUN-FCODE EQ '&F03' OR WA_FUN-FCODE EQ '&F15' OR WA_FUN-FCODE
EQ '&F12'. "don`t add back, exit, stop functions

ELSE.
WA_EXCLUDE-FCODE = WA_FUN-FCODE. "add all remaining
APPEND WA_EXCLUDE TO IT_EXCLUDE.
CLEAR WA_EXCLUDE.
ENDIF.
ENDLOOP.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
* I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_STRUCTURE_NAME = 'MARA'
IT_EXCLUDING = IT_EXCLUDE "exclude functions
TABLES
T_OUTTAB = IT_MARA. "MARA table data
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

26. Interactive Report ALV

REPORT ZSAPN_ALV_INTERACTIVE.
TYPE-POOLS SLIS .
ABAP Reports

TYPES : BEGIN OF TY_MARA, "User defined internal table type


MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA ."internal table


DATA : WA_MARA TYPE TY_MARA . "work area

DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV . "field catalog table


DATA : WA_FCAT LIKE LINE OF IT_FCAT . "field catalog work area
PARAMETERS : P_MTART TYPE MARA-MTART. "material type input

START-OF-SELECTION.
**get table data
SELECT MATNR MTART MBRSH MEINS FROM MARA "get data from MARA
INTO TABLE IT_MARA UP TO 50 ROWS
WHERE MTART = P_MTART.
*** generate field catalogue
WA_FCAT-COL_POS = '1' . "column position
WA_FCAT-FIELDNAME = 'MATNR' . "column name
WA_FCAT-TABNAME = 'IT_MARA' . "table
WA_FCAT-SELTEXT_M = 'Material' . "Column label
WA_FCAT-KEY = 'X' . "is a key field
WA_FCAT-HOTSPOT = 'X' . "Set hotspot for matnr
APPEND WA_FCAT TO IT_FCAT . "append to fcat
CLEAR WA_FCAT .
WA_FCAT-COL_POS = '2' .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'Industry Sec' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '3' .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'Material Type' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'Base.Unit' .
WA_FCAT-REF_TABNAME = 'MARA' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .
**display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "user command form
IT_FIELDCAT = IT_FCAT "PASS FIELD CATALOG TO ALV
TABLES
T_OUTTAB = IT_MARA. "output table
ABAP Reports

**for to handle user command


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'. "standard Function code for doubel click
READ TABLE IT_MARA INTO WA_MARA INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'MAT' FIELD WA_MARA-MATNR. "set parameter id
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. "call
transaction
ENDIF.
ENDCASE.
ENDFORM. "user_command

27. Download ALV to PDF in SAP ABAP

REPORT ZSAPN_ALV2PDF_MARA.
TYPE-POOLS SLIS .
TYPES : BEGIN OF TY_MARA, "User defined internal table type
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MBRSH TYPE MARA-MBRSH,
MEINS TYPE MARA-MEINS,
END OF TY_MARA.

DATA : IT_MARA TYPE TABLE OF TY_MARA ."internal table


DATA : WA_MARA TYPE TY_MARA . "work area

DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV . "field catalog table


DATA : WA_FCAT LIKE LINE OF IT_FCAT . "field catalog work area
TYPES: BEGIN OF TY_TSP01,
RQIDENT TYPE TSP01-RQIDENT, " spool number
RQ2NAME TYPE TSP01-RQ2NAME, " Spool request: Suffix 2
RQCRETIME TYPE TSP01-RQCRETIME, " User name
END OF TY_TSP01.
DATA: LV_JOBCNT TYPE TBTCJOB-JOBCOUNT, " job number
LV_JOBNAME TYPE TBTCJOB-JOBNAME. " job name
DATA: LV_LEN TYPE I,
LS_PARAM TYPE RSPARAMS, " selection work area
LS_TSP01 TYPE TY_TSP01, " Spool Requests work area
LT_TSP01 TYPE STANDARD TABLE OF TY_TSP01, " Spool Requests internal
table
LT_PARAM TYPE RSPARAMS_TT. " Selection table
DATA: LV_RQ2NAME TYPE TSP01-RQ2NAME. " Spool request
DATA: LV_TMP(14) TYPE C, " temp
LV_STRING TYPE STRING, " store program name
LV_TEMP TYPE TSP01-RQ2NAME, " Spool request
LV_SPOOL TYPE TSP01-RQIDENT. " spool number
DATA: LV_JOB TYPE TBTCV-FIN. " Job status
DATA : LV_RQDEST TYPE TSP01-RQDEST VALUE 'LP01',
LV_LINSZ TYPE SYLINSZ VALUE '9999999'.
*selection Screen
PARAMETERS : P_MTART TYPE MARA-MTART. "material type input

START-OF-SELECTION.
**get table data
SELECT MATNR MTART MBRSH MEINS FROM MARA
INTO TABLE IT_MARA UP TO 50 ROWS
ABAP Reports

WHERE MTART = P_MTART.


*** generate field catalogue
WA_FCAT-COL_POS = '1' . "column position
WA_FCAT-FIELDNAME = 'MATNR' . "column name
WA_FCAT-TABNAME = 'IT_MARA' . "table
WA_FCAT-SELTEXT_M = 'Material' . "Column lable
WA_FCAT-KEY = 'X' . "is a key field
APPEND WA_FCAT TO IT_FCAT . "append to fcat
CLEAR WA_FCAT .
WA_FCAT-COL_POS = '2' .
WA_FCAT-FIELDNAME = 'MBRSH' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'Industry Sec' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '3' .
WA_FCAT-FIELDNAME = 'MTART' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'Material Type' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .

WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'MEINS' .
WA_FCAT-TABNAME = 'IT_MARA' .
WA_FCAT-SELTEXT_M = 'Base.Unit' .
WA_FCAT-REF_TABNAME = 'MARA' .
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .
**display ALV
DATA: ALV_PRINT TYPE SLIS_PRINT_ALV.
ALV_PRINT-NO_PRINT_LISTINFOS = 'X'. "avoid process list on SPOOL
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'FORM_MENU' "GU status form
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FCAT "PASS FIELD CATALOG TO ALV
IS_PRINT = ALV_PRINT "to set spool options
TABLES
T_OUTTAB = IT_MARA.

FORM FORM_MENU USING RT_EXTAB TYPE SLIS_T_EXTAB.


*SET PF STATUS to ALV
SET PF-STATUS 'MENU'. "GUI status...double click to create
ENDFORM. " SET_PF_STATUS

**for to handle user command


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN 'EPDF'. "Function code for export which we created in MENU
**submit the same program in background and store

* ********* Derive job counter


LV_JOBNAME = 'ZALV2PDF'. "Background job name
CALL FUNCTION 'JOB_OPEN' "open a job
ABAP Reports

EXPORTING
JOBNAME = LV_JOBNAME
IMPORTING
JOBCOUNT = LV_JOBCNT
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4.
IF SY-SUBRC EQ 0.
SUBMIT (SY-REPID) "submit the same program
WITH P_MTART = P_MTART
TO SAP-SPOOL DESTINATION LV_RQDEST
LINE-SIZE LV_LINSZ
IMMEDIATELY 'X'
KEEP IN SPOOL 'X'
USER SY-UNAME VIA JOB LV_JOBNAME NUMBER LV_JOBCNT
WITHOUT SPOOL DYNPRO
WITH SELECTION-TABLE LT_PARAM
AND RETURN.

CALL FUNCTION 'JOB_CLOSE' "job close


EXPORTING
JOBCOUNT = LV_JOBCNT
JOBNAME = LV_JOBNAME
STRTIMMED = 'X'
EXCEPTIONS
CANT_START_IMMEDIATE = 1
INVALID_STARTDATE = 2
JOBNAME_MISSING = 3
JOB_CLOSE_FAILED = 4
JOB_NOSTEPS = 5
JOB_NOTEX = 6
LOCK_FAILED = 7
INVALID_TARGET = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
RAISE JOB_CANNOT_BE_CLOSED. " Raise
exception
ENDIF.
ELSE.
RAISE JOB_CANNOT_BE_SUBMITTED.
ENDIF.
*********** confirm job status if finished

DO 120 TIMES.
CALL FUNCTION 'BDL_READ_JOB_STATUS' "get job status
EXPORTING
JOBNAME = LV_JOBNAME
JOBNUMBER = LV_JOBCNT
IMPORTING
JOBSTATUS = LV_JOB
EXCEPTIONS
JOB_NOT_FOUND = 1
OTHERS = 2.
IF LV_JOB NE 'F'. "job finished
WAIT UP TO 1 SECONDS.
CONTINUE.
ABAP Reports

ELSE.
EXIT.
ENDIF.
ENDDO.
**calculate report name in Spool table
IF LV_JOB EQ 'F'. "job finished
LV_LEN = STRLEN( SY-REPID ) .
IF LV_LEN >= 9 .
CONCATENATE SY-REPID+0(9)
SY-UNAME+0(3) INTO LV_RQ2NAME .
ELSE.
LV_LEN = 9 - LV_LEN.
DO LV_LEN TIMES .
CONCATENATE LV_TEMP '_' INTO LV_TEMP .
ENDDO.
CONCATENATE SY-REPID LV_TEMP
SY-UNAME INTO LV_RQ2NAME .
ENDIF.

*Get spool request from SPOOL table TSP01


REFRESH LT_TSP01.
SELECT RQIDENT RQ2NAME RQCRETIME FROM TSP01 INTO TABLE LT_TSP01
WHERE RQ2NAME = LV_RQ2NAME AND RQOWNER = SY-UNAME .
*sort table to find latest spool no
SORT LT_TSP01 BY RQCRETIME DESCENDING .
*read table to find latest spool no
CLEAR LS_TSP01.
READ TABLE LT_TSP01 INTO LS_TSP01 INDEX 1.
*get user desktop
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_DESKTOP_DIRECTORY
CHANGING
DESKTOP_DIRECTORY = LV_STRING
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL METHOD CL_GUI_CFW=>UPDATE_VIEW.
CONCATENATE LV_STRING SY-UZEIT INTO LV_STRING.
REFRESH LT_PARAM.
*Prepare selection table for PDF download
LS_PARAM-SELNAME = 'SPOOLNO'.
LS_PARAM-SIGN = 'I'.
LS_PARAM-OPTION = 'EQ'.
LS_PARAM-LOW = LS_TSP01-RQIDENT.
LS_PARAM-HIGH = ''.
APPEND LS_PARAM TO LT_PARAM.

LS_PARAM-SELNAME = 'P_FILE'.
LS_PARAM-SIGN = 'I'.
LS_PARAM-OPTION = 'EQ'.
LS_PARAM-LOW = LV_STRING.
LS_PARAM-HIGH = ''.
APPEND LS_PARAM TO LT_PARAM.
* Submit to PDF converted and download
ABAP Reports

SUBMIT RSTXPDFT4 WITH SELECTION-TABLE LT_PARAM


AND RETURN.
IF SY-SUBRC <> 0.

MESSAGE 'PDF convert not possible' TYPE 'I'.


ENDIF.
ELSE.
MESSAGE 'PDF Can not be downloaded, you have selected huge
data. Reduce data and try again' TYPE 'I'.
ENDIF.
ENDCASE.
ENDFORM. "user command

28. ALV Popup with checkbox for input help

REPORT ZSAPN_ALV_POPUP_HELP.
TYPE-POOLS: SLIS.
TABLES: T134.
TYPES: BEGIN OF TY_T134,
CHECK TYPE CHAR1,
MTART TYPE T134-MTART,
END OF TY_T134.
DATA : IT_T134 TYPE TABLE OF TY_T134,
WA_T134 TYPE TY_T134.
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FCAT.

DATA: IT_MARA TYPE TABLE OF MARA,


WA_MARA TYPE MARA.

SELECT-OPTIONS: S_MTART FOR T134-MTART NO INTERVALS.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_MTART-LOW.


WA_FCAT-COL_POS = 1.
WA_FCAT-FIELDNAME = 'CHECK'.
WA_FCAT-SELTEXT_M = 'Select'.
WA_FCAT-TABNAME = 'IT_T134'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 2.
WA_FCAT-FIELDNAME = 'MTART'.
WA_FCAT-SELTEXT_M = 'Material Type'.
WA_FCAT-TABNAME = 'IT_T134'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
SELECT MTART FROM T134 INTO CORRESPONDING FIELDS OF TABLE IT_T134.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'Select Material Type'
I_CHECKBOX_FIELDNAME = 'CHECK'
I_TABNAME = 'IT_T134'
IT_FIELDCAT = IT_FCAT
I_CALLBACK_PROGRAM = SY-REPID
TABLES
T_OUTTAB = IT_T134
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
ABAP Reports

.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT IT_T134 INTO WA_T134 WHERE CHECK = 'X'.
S_MTART-LOW = WA_T134-MTART.
S_MTART-OPTION = 'EQ'.
S_MTART-SIGN = 'I'.
APPEND S_MTART.
ENDLOOP.

START-OF-SELECTION.
SELECT * FROM MARA INTO TABLE IT_MARA UP TO 50 ROWS
WHERE MTART IN S_MTART .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_STRUCTURE_NAME = 'MARA'
TABLES
T_OUTTAB = IT_MARA
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

29.

You might also like