12 ALV Reports
12 ALV Reports
12 ALV Reports
ALV report consists of some per-defined options like sort, filters, sum, downloading, print,
changing layout structure and many more.
The below are the list of Function Modules we use to display ALV reports in
different formats.
REUSE_ALV_GRID_DISPLAY. "Display ALV grid format
REUSE_ALV_LIST_DISPLAY. "Display ALV List format
REUSE_ALV_COMMENTARY_WRITE. "Display Top of page, logo etc
REUSE_ALV_FIELDCATELOGUE_MERGE. "Used to generate field catelogue
REUSE_ALV_EVENTS_GET. "Use events in ALV
REUSE_ALV_HEIRARCHY_LIST_DISPLAY. "ALV Hierarchy display
REUSE_ALV_BLOCKED_LIST_DISPLAY. "Display blocked list
ZALV_STR
*&
*&---------------------------------------------------------------------*
REPORT
ZALV_STR.
TABLES: MARA.
DATA : IT_MARA TYPE TABLE OF MARA .
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
*&---------------------------------------------------------------------*
*
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
ENDFORM.
= IT_MARA.
" DISP_MARA_ALV
Field Catalog
Field catalog is an internal table which is used to pass list of fields to display in ALV report, we
can set different properties to fields which are going to display in ALV.
Type Group
It is a data dictionary objects which contains all the reusable user-defined types.
Example for a type group is SLIS, which contains all the user-defined types for developing ALV
reports.
TYPE-POOLS is a keyword which is used to assign the type-group to a ALV report .
Syntax :
TYPE-POOLS SLIS . "TO USE FIELD CATALOG WE HAVE TO INCLUDE SLIS TYPE-POOLS
DATA :
DATA :
TYPE SLIS_FIELDCAT_ALV
Useful resourse Using append in SAP ABAP and also Using Clear in SAP ABAP
Requirement: Develop a ALV report to display Material no(MATNR), Material type(MTART), Industry
Sector(MBRSH) and Basic Unit Of measure(MEINS) for a range of material input (Select-Options).
To develop above report we have to use field catalog (because we have to display four fields
only from MARA) and we have to pass foeld catalog parameter to Function
Module REUSE_ALV_GIRD_DISPLAY.
REPORT ZSAPN_ALV_FCAT.
TABLES : MARA.
TYPE-POOLS SLIS .
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
*&---------------------------------------------------------------------*
*&
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
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'.
APPEND WA_FCAT TO IT_FCAT .
CLEAR WA_FCAT .
ENDFORM.
" CREATE_FCAT
Field Catalog can be generated in two ways one is manual with field catalog
internal table and another one is with automatic field catalog generation...like
below one but this one uses old syntax, this one is obsolete and is not
recommended.
*&---------------------------------------------------------------------*
*& Report
ZALV_WITH_FCAT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
ZALV_WITH_FCAT_MERGE.
TYPE-POOLS SLIS .
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.
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
ENDFORM.
= I_FCAT.
" CREATE_FCAT_MERGE
Layout:
Layout is a structure which is used to decorate or embellish the out put of ALV Report.
Requirement: Display list of materials for a material type, with all fields of out put are editable, no
horizontal and vertical lines and hotspot on material no.
Input Screen
Out put Screen (all rows are editable and hotspot on material no)
Please follow previous lesson steps to create a fieldcatlog in ALV, in addition to that we will be
adding additional properties hotspot, editable to out put fields using layout options.
The below is the code to add layout to ALV.
DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV .
WA_LAYOUT-ZEBRA = 'X' .
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X' .
WA_LAYOUT-EDIT = 'X' .
WA_LAYOUT-NO_VLINE = 'X' .
WA_LAYOUT-NO_HLINE = 'X' .
ZSAPN_ALV_LAYOUT.
TYPE-POOLS : SLIS .
*DATA DECLARAATIONS
DATA : I_MARA TYPE TABLE OF MARA .
DATA : WA_MARA TYPE MARA .
*ALV DECLARATIONS
START-OF-SELECTION .
PERFORM GET_DATA .
PERFORM CREATE_FCAT .
PERFORM CREATE_LAYOUT.
PERFORM DISPLAY_DATA .
END-OF-SELECTION .
FORM GET_DATA .
" GET_DATA
FORM DISPLAY_DATA .
= WA_LAYOUT
IT_FIELDCAT
= I_FCAT
TABLES
T_OUTTAB
= I_MARA.
ENDFORM.
" DISPLAY_DATA
FORM DISPLAY_DATA_LIST .
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
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
Layout:
Layout is a structure which is used to decorate or embellish the out put of ALV Report.
Requirement: Display list of sales order for sales order range with totals and subtotals of price
Input screen
Please follow previous lesson steps to create a fieldcatlog in ALV, in addition to that we will be
adding additional properties hotspot, editable to out put fields using layout options.
The below code is used to display totals and subtotals in ALV.
DATA : I_SORT TYPE SLIS_T_SORTINFO_ALV .
DATA : WA_SORT LIKE LINE OF I_SORT .
WA_SORT-FIELDNAME = 'VBELN '.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X '.
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 .
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
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
*
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' .
WA_FCAT-COL_POS = '4' .
WA_FCAT-FIELDNAME = 'NETWR' .
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
ALV
Finally export the events into internal table to the REUSE_ALV_GRID_DISPLAY.
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
" GET_DATA
FORM DISPLAY_DATA .
= 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.
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 .
***********END OF LIST
READ TABLE I_EVENTS INTO WA_EVENTS WITH KEY NAME = 'END_OF_LIST' .
WA_EVENTS-FORM = 'FORM_END_OF_LIST' .
MODIFY
ENDFORM.
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 .
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 .
= 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 .
= I_HEADING
= 'X'
.
ENDFORM .
"FORM_END_OF_LIST
START-OF-SELECTION.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' "create field catalog
EXPORTING
I_STRUCTURE_NAME = P_TABLE
CHANGING
CT_FIELDCAT
= IT_FCAT.
EXPORTING
*
I_STYLE_TABLE
IT_FIELDCATALOG = IT_FCAT
*
I_LENGTH_IN_BYTE
IMPORTING
EP_TABLE
= FS_TAB.
UP TO 50 ROWS. "get
Step4:Display ALV
Display data in ALV using field catalog and table.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = P_TABLE
TABLES
T_OUTTAB
= .
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
I_STRUCTURE_NAME = P_TABLE
CHANGING
CT_FIELDCAT
= IT_FCAT.
I_STYLE_TABLE
IT_FIELDCATALOG = IT_FCAT
*
I_LENGTH_IN_BYTE
IMPORTING
EP_TABLE
FIELD-SYMBOLS:
= FS_TAB.
ASSIGN FS_TAB->* TO .
*data : it_tab type TABLE OF p_table.
SELECT * FROM (P_TABLE) INTO CORRESPONDING FIELDS OF TABLE
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = P_TABLE
TABLES
T_OUTTAB
= .
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
UP TO 50 ROWS.
REUSE_ALV_BLOCK_LIST_INIT
REUSE_ALV_BLOCK_LIST_APPEND
REUSE_ALV_BLOCK_LIST_DISPLAY
W_FCAT-FIELDNAME
W_FCAT-TABNAME
= 'IT_MARA'. "table
W_FCAT-REF_TABNAME
= 'MARA'. "table
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.
= '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.
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.
= 'IT_MARA' "table
IT_EVENTS
= S_EVENTS "events
IT_SORT
I_TEXT
= ' '
TABLES
T_OUTTAB
*
EXCEPTIONS
PROGRAM_ERROR
= 1
MAXIMUM_OF_APPENDS_REACHED
= 2
OTHERS
= 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
**add MAKT list
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' "append ALV lists
EXPORTING
IS_LAYOUT
= 'IT_MAKT' "table
IT_EVENTS
= S_EVENTS "events
IT_SORT
I_TEXT
= ' '
TABLES
T_OUTTAB
*
EXCEPTIONS
PROGRAM_ERROR
= 1
MAXIMUM_OF_APPENDS_REACHED
= 2
OTHERS
= 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
START-OF-SELECTION.
SELECT MATNR
MTART
MBRSH
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
W_FCAT-FIELDNAME
W_FCAT-TABNAME
= 'IT_MARA'. "table
W_FCAT-REF_TABNAME
= 'MARA'. "table
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.
= '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.
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.
EXPORTING
IS_LAYOUT
= 'IT_MARA' "table
IT_EVENTS
= S_EVENTS "events
IT_SORT
I_TEXT
= ' '
TABLES
T_OUTTAB
*
EXCEPTIONS
PROGRAM_ERROR
= 1
MAXIMUM_OF_APPENDS_REACHED
= 2
OTHERS
= 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
= 'IT_MAKT' "table
IT_EVENTS
= S_EVENTS "events
IT_SORT
I_TEXT
= ' '
TABLES
T_OUTTAB
*
EXCEPTIONS
PROGRAM_ERROR
= 1
MAXIMUM_OF_APPENDS_REACHED
= 2
OTHERS
= 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
= 'E'
PROGRAM
= 'SAPLKKBL'
STATUS
= 'STANDARD_FULLSCREEN'
TABLES
FUNCTIONS = FUN.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ELSE.
WA_EXCLUDE-FCODE = WA_FUN-FCODE. "add all remaining
APPEND WA_EXCLUDE TO IT_EXCLUDE.
CLEAR WA_EXCLUDE.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
SELECT * FROM MARA INTO TABLE IT_MARA UP TO 50 ROWS.
= 'E'
PROGRAM
= 'SAPLKKBL'
STATUS
= 'STANDARD_FULLSCREEN'
TABLES
FUNCTIONS = FUN.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*&---------------------------------------------------------------------*
*
*&---------------------------------------------------------------------*
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.
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_STRUCTURE_NAME = 'MARA'
IT_EXCLUDING
TABLES
T_OUTTAB
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
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 .
= SY-REPID
T_OUTTAB
"user_command
REPORT ZSAPN_ALV_INTERACTIVE.
TYPE-POOLS SLIS .
TYPES : BEGIN OF TY_MARA,
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
TABLES
T_OUTTAB
"user_command
START-OF-SELECTION.
**get table data
SELECT MATNR MTART MBRSH MEINS FROM MARA
INTO TABLE IT_MARA UP TO 50 ROWS
WHERE MTART = P_MTART.
*** generate field catalogue
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
TABLES
T_OUTTAB
= IT_MARA.
" SET_PF_STATUS
Expand application toolbar, provide name as EPDF, enter a popup will open just press enter.
Expand function keys and add standard toolbar buttons like below.
Step3: Submit the program, store output in spool and generate PDF.
Implement the logic to submit the program and download data into PDF. The below code has lot
of steps, please try to understand based on comments provided.
**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
TYPES: BEGIN OF TY_TSP01,
RQIDENT
TYPE TSP01-RQIDENT,
END OF TY_TSP01.
DATA: LV_JOBCNT TYPE TBTCJOB-JOBCOUNT,
LV_JOBNAME TYPE TBTCJOB-JOBNAME.
= LV_JOBNAME
IMPORTING
JOBCOUNT
EXCEPTIONS
= LV_JOBCNT
CANT_CREATE_JOB
= 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING
= 3
OTHERS
= 4.
IF SY-SUBRC EQ 0.
DATA : LV_RQDEST TYPE TSP01-RQDEST VALUE 'LP01',
LV_LINSZ TYPE SYLINSZ VALUE '9999999'.
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.
= 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.
ENDIF.
ELSE.
RAISE JOB_CANNOT_BE_SUBMITTED.
ENDIF.
*********** confirm job status if finished
DATA: LV_JOB
TYPE TBTCV-FIN.
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.
DO LV_LEN TIMES .
CONCATENATE LV_TEMP '_' INTO LV_TEMP .
ENDDO.
CONCATENATE SY-REPID LV_TEMP
SY-UNAME INTO LV_RQ2NAME .
ENDIF.
= 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 TEXT-001 INTO LV_STRING.
= 'I'.
LS_PARAM-OPTION
= 'EQ'.
LS_PARAM-LOW
= LS_TSP01-RQIDENT.
LS_PARAM-HIGH
= ''.
LS_PARAM-SELNAME = 'P_FILE'.
LS_PARAM-SIGN
= 'I'.
LS_PARAM-OPTION
= 'EQ'.
LS_PARAM-LOW
= LV_STRING.
LS_PARAM-HIGH
= ''.
MESSAGE
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
TYPE TSP01-RQIDENT,
END OF TY_TSP01.
DATA: LV_JOBCNT TYPE TBTCJOB-JOBCOUNT,
LV_JOBNAME TYPE TBTCJOB-JOBNAME.
LT_TSP01 TYPE STANDARD TABLE OF TY_TSP01, " Spool Requests internal table
LT_PARAM TYPE RSPARAMS_TT.
DATA:
DATA: LV_JOB
TYPE TBTCV-FIN.
START-OF-SELECTION.
**get table data
SELECT MATNR MTART MBRSH MEINS 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 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
= 'USER_COMMAND'
IT_FIELDCAT
IS_PRINT
TABLES
T_OUTTAB
= IT_MARA.
" SET_PF_STATUS
= 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.
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.
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.
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.
= 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
= ''.
LS_PARAM-SELNAME = 'P_FILE'.
LS_PARAM-SIGN
= 'I'.
LS_PARAM-OPTION
= 'EQ'.
LS_PARAM-LOW
= LV_STRING.
LS_PARAM-HIGH
= ''.
MESSAGE
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
Requirement: Develop an ABAP report to display list of materials for a material type (input) with ALV
report(with check-box) as input help for material type.
Requirement analysis: To provide ALV as input help, we need to use function
module REUSE_ALV_POPUP_TO_SELECT under event AT SELECTION-SCREEN ON VALUE-REQUEST , for
this requirement we need to provide check box in popup ALV, we need to create field catalog .
Step1: Call ALV popup function module under value request event
Call REUSE_ALV_POPUP_TO_SELECT function module under event SELECTION-SCREEN ON VALUEREQUEST .
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.
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
.
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.
= 'MARA'
TABLES
T_OUTTAB
= IT_MARA
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
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
.
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 .
= 'MARA'
TABLES
T_OUTTAB
= IT_MARA
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.