2007 May 10 4:01 PM
I want to display the table data in an ALV grid control. However I don't have the necessary info to use the ALV grids.
To get rid of the start fear, is there anyone that can help me to use ALV grids easily?
Thanks in advance.
Deniz.
I want to display the table data in an ALV grid control. However I don't have the necessary info to use the ALV grids.
To get rid of the start fear, is there anyone that can help me to use ALV grids easily?
Thanks in advance.
Deniz.
2007 May 10 4:03 PM
2007 May 10 4:09 PM
Simple ALV report
http://www.sapgenie.com/abap/controls/alvgrid.htm
http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
ALV
1. Please give me general info on ALV.
http://www.sapfans.com/forums/viewtopic.php?t=58286
http://www.sapfans.com/forums/viewtopic.php?t=76490
http://www.sapfans.com/forums/viewtopic.php?t=20591
http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
2. How do I program double click in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=11601
http://www.sapfans.com/forums/viewtopic.php?t=23010
3. How do I add subtotals (I have problem to add them)...
http://www.sapfans.com/forums/viewtopic.php?t=20386
http://www.sapfans.com/forums/viewtopic.php?t=85191
http://www.sapfans.com/forums/viewtopic.php?t=88401
http://www.sapfans.com/forums/viewtopic.php?t=17335
4. How to add list heading like top-of-page in ABAP lists?
http://www.sapfans.com/forums/viewtopic.php?t=58775
http://www.sapfans.com/forums/viewtopic.php?t=60550
http://www.sapfans.com/forums/viewtopic.php?t=16629
5. How to print page number / total number of pages X/XX in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
http://www.sapfans.com/forums/viewtopic.php?t=64320
http://www.sapfans.com/forums/viewtopic.php?t=44477
7. How can I set the cell color in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=52107
8. How do I print a logo/graphics in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=81149
http://www.sapfans.com/forums/viewtopic.php?t=35498
http://www.sapfans.com/forums/viewtopic.php?t=5013
9. How do I create and use input-enabled fields in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=84933
http://www.sapfans.com/forums/viewtopic.php?t=69878
10. How can I use ALV for reports that are going to be run in background?
http://www.sapfans.com/forums/viewtopic.php?t=83243
http://www.sapfans.com/forums/viewtopic.php?t=19224
11. How can I display an icon in ALV? (Common requirement is traffic light icon).
http://www.sapfans.com/forums/viewtopic.php?t=79424
http://www.sapfans.com/forums/viewtopic.php?t=24512
12. How can I display a checkbox in ALV?
http://www.sapfans.com/forums/viewtopic.php?t=88376
http://www.sapfans.com/forums/viewtopic.php?t=40968
http://www.sapfans.com/forums/viewtopic.php?t=6919
Go thru these programs they may help u to try on some hands on
ALV Demo program
BCALV_DEMO_HTML
BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode
BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode
BCALV_GRID_DEMO Simple ALV Control Call Demo Program
BCALV_TREE_DEMO Demo for ALV tree control
BCALV_TREE_SIMPLE_DEMO
BC_ALV_DEMO_HTML_D0100
2007 May 10 4:15 PM
Hi Deniz,
please see the following code wheather it is useful.
*-------------------------------------------------------------------
* INITIALIZATION
*-------------------------------------------------------------------
INITIALIZATION.
*-------------------------------------------------------------------
* AT SELECTION SCREEN
*-------------------------------------------------------------------
AT SELECTION-SCREEN .
PERFORM VALIDATE_SCREEN.
*-------------------------------------------------------------------
* START OF SELECTION
*-------------------------------------------------------------------
START-OF-SELECTION.
*--Clear All the Internal tables to be used
CLEAR : IT_MLGT ,
IT_MLGT[] .
*--Getting the data from MLGT table
PERFORM GET_DATA.
* Fetch the material master and UOM conversion data
PERFORM GET_UOM_DATA.
* Convert MLGT data from EACH to CASES
PERFORM CONVERT_TO_CASES.
*-------------------------------------------------------------------
* END OF SELECTION
*-------------------------------------------------------------------
END-OF-SELECTION.
IF IT_MLGT[] IS INITIAL.
*--No Records found .
MESSAGE I000 WITH
'No Records found for the given Selection Criteria'(006).
ELSE.
*--DO ALV Process
V_REPID = SY-REPID.
PERFORM SORT_FIELDS.
PERFORM SET_EVENTS.
PERFORM MODIFY_FIELDCAT.
PERFORM SET_LAYOUT.
PERFORM LIST_DISPLAY.
ENDIF.
*&------------------------------------------------------------------
*& Form SORT_FIELDS
*&------------------------------------------------------------------
* text : Sort the output fields
*-------------------------------------------------------------------
FORM SORT_FIELDS .
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'LGNUM'.
WA_SORT-SPOS = '1'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'LGTYP'.
WA_SORT-SPOS = '2'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'LGPLA'.
WA_SORT-SPOS = '3'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'MATNR'.
WA_SORT-SPOS = '4'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
ENDFORM. " SORT_FIELDS
*&------------------------------------------------------------------
*& Form MODIFY_FIELDCAT
*&------------------------------------------------------------------
* text : Heading for the Output
*-------------------------------------------------------------------
FORM MODIFY_FIELDCAT .
IT_FIELDCAT-COL_POS = '1'.
IT_FIELDCAT-FIELDNAME = 'LGNUM'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '13'.
IT_FIELDCAT-SELTEXT_L = 'Warehouse #'(007).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '2'.
IT_FIELDCAT-FIELDNAME = 'LGTYP'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '13'.
IT_FIELDCAT-SELTEXT_L = 'Storage Type'(008).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '3'.
IT_FIELDCAT-FIELDNAME = 'LGPLA'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '18'.
IT_FIELDCAT-SELTEXT_L = 'Storage Bin'(009).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '4'.
IT_FIELDCAT-FIELDNAME = 'MATNR'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '18'.
IT_FIELDCAT-SELTEXT_L = 'Material #'(010).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '5'.
IT_FIELDCAT-FIELDNAME = 'LPMIN'.
IT_FIELDCAT-OUTPUTLEN = '18'.
IT_FIELDCAT-SELTEXT_L = 'Min Quantity'(011).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '6'.
IT_FIELDCAT-FIELDNAME = 'LPMAX'.
IT_FIELDCAT-OUTPUTLEN = '18'.
IT_FIELDCAT-SELTEXT_L = 'Max Quantity'(012).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '7'.
IT_FIELDCAT-FIELDNAME = 'MAMNG'.
IT_FIELDCAT-OUTPUTLEN = '18'.
IT_FIELDCAT-SELTEXT_L = 'Max Pick Quantity'(013).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '8'.
IT_FIELDCAT-FIELDNAME = 'MEINS'.
IT_FIELDCAT-OUTPUTLEN = '6'.
IT_FIELDCAT-SELTEXT_L = 'UOM'(014).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
ENDFORM. " MODIFY_FIELDCAT
*&------------------------------------------------------------------
*& Form LIST_DISPLAY
*&------------------------------------------------------------------
* text : List to display
*-------------------------------------------------------------------
FORM LIST_DISPLAY .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT[]
IT_SORT = IT_SORT[]
IT_EVENTS = IT_EVENTS[]
TABLES
T_OUTTAB = IT_MLGT[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " LIST_DISPLAY
*&------------------------------------------------------------------
*& Form SET_EVENTS
*&------------------------------------------------------------------
* text : Assign form names to the Events
*-------------------------------------------------------------------
FORM SET_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IT_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*--Text To be displayed at TOP OF LIST
CLEAR WA_EVENT.
READ TABLE IT_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_LIST'.
WA_EVENT-FORM = 'HEADER'.
MODIFY IT_EVENTS FROM WA_EVENT INDEX SY-TABIX.
*--Text To be displayed at END OF LIST
CLEAR WA_EVENT.
READ TABLE IT_EVENTS INTO WA_EVENT WITH KEY NAME = 'END_OF_LIST'.
WA_EVENT-FORM = 'FOOTER'.
MODIFY IT_EVENTS FROM WA_EVENT INDEX SY-TABIX.
ENDFORM. " SET_EVENTS
*&------------------------------------------------------------------
*& Form HEADER
*&------------------------------------------------------------------
* text : Text to be displyed at the TOP OF LIST
*-------------------------------------------------------------------
FORM HEADER .
*-- standard top of page
* PERFORM STD_TOP_OF_PAGE CHANGING SY-TITLE.
ENDFORM. " HEADER
*&------------------------------------------------------------------
*& Form FOOTER
*&------------------------------------------------------------------
* text :Text to be displyed at the END OF LIST
*-------------------------------------------------------------------
FORM FOOTER .
*-- Standard end of report
* PERFORM STD_END_OF_REPORT.
ENDFORM. " FOOTER
*&------------------------------------------------------------------
*& Form GET_DATA
*&------------------------------------------------------------------
* text : Getting the data from MLGT table
*-------------------------------------------------------------------
FORM GET_DATA.
* Both the select statements are changed for fixed bin
IF S_MATNR[] IS INITIAL.
SELECT LGNUM
LGTYP
LGPLA
MATNR
LPMIN
LPMAX
MAMNG
INTO TABLE IT_MLGT
FROM MLGT
WHERE LGNUM = P_LGNUM
AND LGTYP IN S_LGTYP
AND LGPLA IN S_LGPLA.
* AND LVORM <> 'X'
* AND LGPLA NE ''. " D01K939896
ELSE.
SELECT LGNUM
LGTYP
LGPLA
MATNR
LPMIN
LPMAX
MAMNG
INTO TABLE IT_MLGT
FROM MLGT
WHERE MATNR IN S_MATNR
AND LGNUM = P_LGNUM
AND LGTYP IN S_LGTYP
AND LGPLA IN S_LGPLA
AND LVORM <> 'X'
AND LGPLA NE ''. " D01K939896
ENDIF.
ENDFORM. " GET_DATA
*&------------------------------------------------------------------
*& Form SET_LAYOUT
*&------------------------------------------------------------------
* text : Set Layout
*-------------------------------------------------------------------
FORM SET_LAYOUT.
WA_LAYOUT-F2CODE = '&ETA'(005).
WA_LAYOUT-DETAIL_POPUP = 'X'.
ENDFORM. " SET_LAYOUT
*&------------------------------------------------------------------
*& Form VALIDATE_SCREEN
*&------------------------------------------------------------------
* text : Validate the Selection Screen
*-------------------------------------------------------------------
FORM VALIDATE_SCREEN.
*--Validating Warehouse Number
CLEAR T300.
SELECT LGNUM
INTO T300-LGNUM
UP TO 1 ROWS
FROM T300
WHERE LGNUM = P_LGNUM.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'Invalid Warehouse Number'(001).
ENDIF.
*--Validating Storage Type.
CLEAR T301.
SELECT LGNUM
LGTYP
INTO (T301-LGNUM , T301-LGTYP )
FROM T301
UP TO 1 ROWS
WHERE LGNUM = P_LGNUM
AND LGTYP IN S_LGTYP.
ENDSELECT.
IF T301-LGTYP IS INITIAL.
MESSAGE E000 WITH 'Invalid Warehouse/Storage Type combination'(002).
ENDIF.
*--Validating Storage Bin
CLEAR LAGP.
IF NOT S_LGPLA[] IS INITIAL.
SELECT LGNUM
LGTYP
LGPLA
INTO (LAGP-LGNUM , LAGP-LGTYP , LAGP-LGPLA )
FROM LAGP
UP TO 1 ROWS
WHERE LGNUM = P_LGNUM
AND LGTYP IN S_LGTYP
AND LGPLA IN S_LGPLA.
ENDSELECT.
IF LAGP-LGPLA IS INITIAL.
MESSAGE E000 WITH
'Invalid Whse No/Storage Type/Bin combination'(003).
ENDIF.
ENDIF.
*--Validating Material Numbers
CLEAR MARA.
IF NOT S_MATNR[] IS INITIAL.
SELECT MATNR
INTO MLGT-MATNR
FROM MLGT
UP TO 1 ROWS
WHERE MATNR IN S_MATNR
AND LGNUM = P_LGNUM
AND LGTYP IN S_LGTYP
AND LGPLA IN S_LGPLA.
ENDSELECT.
IF MLGT-MATNR IS INITIAL.
MESSAGE E000 WITH 'Invalid Material Number'(004).
ENDIF.
ENDIF.
ENDFORM. " VALIDATE_SCREEN
*&------------------------------------------------------------------
*& Form get_uom_data
*&------------------------------------------------------------------
* text
*-------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*-------------------------------------------------------------------
FORM GET_UOM_DATA.
IF NOT IT_MLGT[] IS INITIAL.
SELECT MATNR MEINS
INTO TABLE IT_MARA
FROM MARA
FOR ALL ENTRIES IN IT_MLGT
WHERE MATNR = IT_MLGT-MATNR.
SELECT MATNR MEINH UMREZ UMREN
INTO TABLE IT_MARM
FROM MARM
FOR ALL ENTRIES IN IT_MARA
WHERE MATNR = IT_MARA-MATNR
AND MEINH = C_CAS.
ENDIF.
ENDFORM. " get_uom_data
*&------------------------------------------------------------------
*& Form convert_to_cases
*&------------------------------------------------------------------
* text
*-------------------------------------------------------------------
* --> p1 text
* <-- p2 text
*-------------------------------------------------------------------
FORM CONVERT_TO_CASES.
SORT IT_MLGT.
LOOP AT IT_MLGT.
V_TABIX = SY-TABIX.
CLEAR: IT_MARA,
IT_MARM.
READ TABLE IT_MARA WITH KEY MATNR = IT_MLGT-MATNR.
READ TABLE IT_MARM WITH KEY MATNR = IT_MLGT-MATNR.
IF NOT IT_MARM-UMREZ IS INITIAL.
IT_MLGT-LPMIN = ( IT_MLGT-LPMIN * IT_MARM-UMREN ) / IT_MARM-UMREZ.
IT_MLGT-LPMAX = ( IT_MLGT-LPMAX * IT_MARM-UMREN ) / IT_MARM-UMREZ.
IT_MLGT-MAMNG = ( IT_MLGT-MAMNG * IT_MARM-UMREN ) / IT_MARM-UMREZ.
IT_MLGT-MEINS = 'CASES'.
ELSE.
IT_MLGT-MEINS = 'EACH'.
ENDIF.
MODIFY IT_MLGT INDEX V_TABIX.
ENDLOOP.
ENDFORM. " convert_to_casesThanks,
Suma.
2007 May 10 4:17 PM
Hi Deniz,
Use ALV grid function module instead of ALV list FM. It is almost same.
REUSE_ALV_GRID_DISPLAY
Thanks,
Suma.
2007 May 11 5:53 AM
hi,
check the example
REPORT ZSR_ALV_GRID.
&----
*& declaratin of table *
*& *
&----
TABLES : lfa1.
&----
declaraing selectoptions *
&----
SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr.
&----
declaraing internal table *
&----
DATA : BEGIN OF itab OCCURS 0,
lifnr LIKE lfa1-lifnr,
land1 LIKE lfa1-land1,
name1 LIKE lfa1-name1,
END OF itab.
&----
declaraing TYPEPOLL SLIS *
&----
TYPE-POOLS : slis.
DATA : b_lfa1 TYPE slis_t_fieldcat_alv,
w_lfa1 TYPE slis_fieldcat_alv.
&----
CALLING SUBROUTINE FOR DISPLAYING COLUM HEADINGS
&----
PERFORM GET_VAL.
START-OF-SELECTION.
&----
retrieving data from lfa1*
&----
SELECT lifnr
land1
name1
FROM lfa1
INTO TABLE itab
WHERE lifnr IN s_lifnr.
*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
*EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME =
I_STRUCTURE_NAME = 'LFA1'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = B_LFA1
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
*IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
&----
calling fn modlue alv_grid_display
&----
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 = 'lfa1'
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = b_lfa1
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
&----
*& Form GET_VAL
&----
FORM get_val .
w_lfa1-fieldname = 'LIFNR'.
w_lfa1-ref_tabname = 'LFA1'.
w_lfa1-ref_fieldname = 'LIFNR' .
APPEND w_lfa1 TO b_lfa1.
w_lfa1-fieldname = 'LAND1'.
w_lfa1-ref_tabname = 'LFA1'.
w_lfa1-ref_fieldname = 'LAND1' .
APPEND w_lfa1 TO b_lfa1.
w_lfa1-fieldname = 'NAME1'.
w_lfa1-ref_tabname = 'LFA1'.
w_lfa1-ref_fieldname = 'NAME1' .
APPEND w_lfa1 TO b_lfa1.
ENDFORM. " GET_VAL
2007 May 14 11:49 AM
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid.htm
<u><b>Dont forget to reward if uesful</b></u>
Regards,
Sudheer