Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV

Former Member
0 Likes
744

Hi,

I have create a hierarchical ALV using OO-ABAP. In thi s i need to display status/traffic lights for each record in the list.

Pls help how to achieve this

Thanks

6 REPLIES 6
Read only

Former Member
0 Likes
711

Hi

Defining GUI Elements in the Toolbar

Process Flow

1. Define an event handler method for event TOOLBAR.

2. Declare a structure for defining a toolbar element:

data: ls_toolbar TYPE stb_button.

3. For a pushbutton, for example, you would fill the following fields:

CLEAR ls_toolbar. MOVE 0 TO ls_toolbar-butn_type. MOVE 'BOOKINGS' TO ls_toolbar-function. MOVE icon_employee TO ls_toolbar-icon. MOVE 'Show Bookings'(111) TO ls_toolbar-quickinfo. MOVE SPACE TO ls_toolbar-disabled.

In the butn_type field, you specify the type of the GUI element for the ALV Grid Control. For possible values, see the value range of domain TB_BTYPE.

4. Use event parameter E_OBJECT to append the new definition to table mt_toolbar:

APPEND ls_toolbar TO e_object->mt_toolbar.

5. If you want to define additional elements, go back to step 3.

6. Call method set_toolbar_interactive [Page 103], if you want to rebuild the toolbar.

Result

In the event handler method of event USER_COMMAND, you can query the function code you specified in field function to implement the associated function.

Regards

Preeti

<i><b>

*Reward if useful</b></i>

Read only

0 Likes
711

Hi,

I'm looking for traffic lights to be displayed for each record in the ALV list.

Like the color should be Red,Yello,Green to indicate status of each record.

I'm using cl_gui_alv_tree for creating Hierachical list.

Pls help

Read only

0 Likes
711

Hi,

Check the following program:

<b>BCALV_GRID_04</b> Illustrates the use of exceptions (lights or leds). According to the values of SFLIGHT-SEATSOCC, the lights are set to 1 (red), 2 (yellow) or 3 (green).

Hope this helps.

Reward if helpful.

Regards,

Sipra

Read only

0 Likes
711

Thanks for reply. I'm not using the GRid

I'm using cl_gui_alv_tree for creating Hierachical list.

Read only

0 Likes
711

Hi

Check this sample report

 ***********************************************************************
********** D A T A D E C L A R A T I O N ****************************
***********************************************************************

* Tables
tables :zpwvbap,
mara,
marc,
makt,
vbap,
zshift,
marm,
lqua.

TYPE-POOLS: SLIS.


* Internal Table for Sales order

data : begin of i_vbap occurs 0,
matnr like zpwvbap-matnr," Material #
ZZCUTOFF like zpwvbak-ZZCUTOFF," Cutoff Time
vlpla like zpwvbap-vlpla,
kwmeng like zpwvbap-kwmeng," Quantity
vrkme like zpwvbap-vrkme, " Sales Unit
meins like zpwvbap-meins, " Unit of measure
end of i_vbap.

* Internal Table for final Processing
data : begin of i_final occurs 0,
date(8) type c,
matnr like zpwvbap-matnr," Material #
zzshift like zshift-zzshift, " Wave Drop
maktx like makt-maktx," Desc
lgpla like lagp-lgpla, " Pick Bin
pverme like lqua-verme," Stock at Pick Bin
prverme like lqua-verme," Stock at Prod Bin
kwmeng like zpwvbap-kwmeng," Requiremnet from Wave Drop
vrkme like zpwvbap-vrkme, " Sales Unit
* meins like zpwvbap-meins," Unit of measure
end of i_final.

* Internal Table for Output
data : begin of i_output occurs 0,
field type c, " Traffic Lights 
zzshift like zshift-zzshift, " Wave Drop
matnr like zpwvbap-matnr," Material #
maktx like makt-maktx," Desc
lgpla like lagp-lgpla, " Pick Bin
pverme like lqua-verme," Stock at Pick Bin
prverme like lqua-verme," Stock at Prod Bin
kwmeng like zpwvbap-kwmeng," Requiremnet from Wave Drop
vrkme like zpwvbap-vrkme," Sales Unit
* meins like zpwvbap-meins," Unit of measure
diff like zpwvbap-kwmeng, " Diffrence
end of i_output.

* Work Area for Final Internal Table
data wa_final like i_final.

data : w_zzcutoff(12) TYPE c,
v_date type sy-datum,
v_time(4) type c,
v_fldate(12) type c,
v_fhdate(12) type c,
v_pverme like lqua-verme,
v_prverme like lqua-verme,
v_diff like zpwvbap-kwmeng.

* Variables for new check box
data : v_nverme like lqua-verme.

* Internal Table for Pick Bin
data : begin of i_verme occurs 0,
verme like lqua-verme,
end of i_verme.

* Internal table for Prod Bin
data : begin of i_pverme occurs 0,
verme like lqua-verme,
end of i_pverme.

* Variables for ALV

DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
FIELDCAT_LN LIKE LINE OF FIELDCAT,
SORTCAT TYPE SLIS_T_SORTINFO_ALV,
SORTCAT_LN LIKE LINE OF SORTCAT,
EVENTCAT TYPE SLIS_T_EVENT,
EVENTCAT_LN LIKE LINE OF EVENTCAT,
LAYOUT TYPE SLIS_LAYOUT_ALV,
C_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.


DATA: COL_POS TYPE I,
P_LIGNAM TYPE SLIS_FIELDNAME VALUE 'FIELD'.

DATA : V_REPID LIKE SY-REPID,
flag type c.
************************************************************************
************** S E L E C T I O N - S C R E E N *************************
************************************************************************

selection-screen : begin of block blk with frame title text-001.
parameter : p_plant like marc-werks obligatory default '1000'.
select-options : s_date for sy-datum obligatory ,
s_shift for zshift-zzshift,
s_matnr for mara-matnr,
s_dept for zpwvbap-zzdept,
s_pdept for marc-ZZPRODDEPT.
selection-screen: end of block blk.

parameters : p_check as checkbox ."default 'X'.

ranges r_cutoff for w_zzcutoff.


************************************************************************
*************** I N I T I A L I Z A T I O N ****************************
************************************************************************
initialization.

V_REPID = SY-REPID.

s_date-low = sy-datum + 1.
append s_date.


************************************************************************
*********** S T A R T - O F - S E L E C T I O N ***********************
************************************************************************
start-of-selection.

* Get the Shift Data.
PERFORM GET_SHIFT_DETAILS.

* Get the data from ZPWVBAP Table
PERFORM GET_DATA_VBAP.


***********************************************************************
**************** E N D - O F - S E L E C T I O N **********************
***********************************************************************
end-of-selection.
if not i_output[] is initial.
sort i_output by field zzshift matnr.
* Reset the all Fiedcatlog.
PERFORM RESETVALUES.

* Traffic Lights
PERFORM BUILD_LAYOUT.

* Fill the fieldcatlog values
PERFORM FILL_FIELDCATLOG.


* Call the List Function module
PERFORM CALL_lIST.
endif.

*&---------------------------------------------------------------------*
*& Form GET_SHIFT_DETAILS
*&---------------------------------------------------------------------*
* Get the Cutoff Time.
*----------------------------------------------------------------------*
FORM GET_SHIFT_DETAILS.

clear : v_fldate,
v_fhdate.

if not s_shift-low is initial.
clear: v_time,
v_date.

if s_shift-low = '1'.
v_time = '2000'.
elseif s_shift-low = '2'.
v_time = '2300'.
endif.

v_date = s_date-low - 1.
concatenate v_date v_time into v_fldate.

endif.

if not s_shift-high is initial.
clear : v_date,
v_time.

if s_shift-high = '1'.
v_time = '2000'.
elseif s_shift-high = '2'.
v_time = '2300'.
endif.
if not s_date-high is initial.
v_date = s_date-high - 1.
else.
v_date = s_date-low - 1.
endif.

concatenate v_date v_time into v_fhdate.
endif.


if not v_fhdate is initial.
r_cutoff-low = v_fldate.
r_cutoff-high = v_fhdate.
r_cutoff-sign = 'I'.
r_cutoff-option = 'BT'.
append r_cutoff.
endif.


ENDFORM. " GET_SHIFT_DETAILS
*&---------------------------------------------------------------------*
*& Form GET_DATA_VBAP
*&---------------------------------------------------------------------*
* Get the data from ZPWVBAP Table
*----------------------------------------------------------------------*
FORM GET_DATA_VBAP.

* Get the data from ZPWVBAP and ZPWVBAK Table

if not v_fhdate is initial.
select matnr ZZCUTOFF vlpla sum( kwmeng ) vrkme meins
into table i_vbap
from zpwvbap as a inner join zpwvbak as b on
a~vbeln = b~vbeln
where a~werks = p_plant
and a~matnr in s_matnr
and b~vdatu in s_date
and a~zzdept in s_dept
and b~zzcutoff in r_cutoff
group by matnr zzcutoff vlpla vrkme meins.

elseif not v_fldate is initial.

select matnr ZZCUTOFF vlpla sum( kwmeng ) vrkme meins
into table i_vbap
from zpwvbap as a inner join zpwvbak as b on
a~vbeln = b~vbeln
where a~werks = p_plant
and a~matnr in s_matnr
and b~vdatu in s_date
and a~zzdept in s_dept
and b~zzcutoff = v_fldate
group by matnr zzcutoff vlpla vrkme meins.

else.

select matnr ZZCUTOFF vlpla sum( kwmeng ) vrkme meins
into table i_vbap
from zpwvbap as a inner join zpwvbak as b on
a~vbeln = b~vbeln
where a~werks = p_plant
and a~matnr in s_matnr
and b~vdatu in s_date
and a~zzdept in s_dept
and b~zzcutoff in r_cutoff
group by matnr zzcutoff vlpla vrkme meins .

endif.


if sy-subrc ne 0.
message i000(zwave) with 'No data found for given selection'.
stop.
endif.


sort i_vbap by zzcutoff matnr.


loop at i_vbap.

clear : v_pverme,
v_prverme.

* Compare the data with pick method
select single zzpick from marc into marc-zzpick
where matnr = i_vbap-matnr
and werks = p_plant
and zzpick = '01'.

if sy-subrc ne 0.
continue.
endif.


* Compare the data from MARC Table with Production Department
select single zzPRODdept from marc into marc-zzPRODdept
where matnr = i_vbap-matnr
and werks = p_plant
and zzPRODdept in s_pdept.

if sy-subrc ne 0.
continue.
endif.

* Get the Material Description from MAKT Table

Select single maktx from makt into makt-maktx
where matnr = i_vbap-matnr
and spras = 'E'.
if sy-subrc eq 0.

i_final-maktx = makt-maktx.
endif.


* Get the Pick Bin

i_final-lgpla = i_vbap-vlpla.

refresh i_verme.
clear i_verme.

* Get the stock at Pick bin
select verme from lqua into table i_verme
where lgpla = i_vbap-vlpla
and matnr = i_vbap-matnr
and LGNUM = '100'.

if sy-subrc eq 0.
loop at i_verme.
v_pverme = v_pverme + i_verme-verme.
endloop.

if sy-subrc eq 0.
i_final-pverme = v_pverme.
endif.
endif.

refresh i_pverme.
clear i_pverme.

* Get the stock at Production bin
select verme from lqua into table i_pverme
where matnr = i_vbap-matnr
and LGNUM = '100'
and ( lgpla = '9595959595' or
lgpla = '2222222222' or
lgpla = '5555555555' or
lgpla = '3232323232' or
lgpla = '8080808080' or
lgpla = '4040404040' or
lgpla = '9090909090' ).

if sy-subrc eq 0.
loop at i_pverme.
v_prverme = v_prverme + i_pverme-verme.
endloop.

if sy-subrc eq 0.
i_final-prverme = v_prverme.
endif.

endif.


* Compare the unit of measure and sales unit
if i_vbap-vrkme ne i_vbap-meins.

* Get the data from MARM Table ( Unit of measure )

select single * from marm into marm
where matnr = i_vbap-matnr
and meinh = i_vbap-vrkme.

if sy-subrc eq 0.
i_final-pverme = ( i_final-pverme * marm-umren ) / marm-umrez.
endif.

endif.

* Material #
i_final-matnr = i_vbap-matnr.

* Quantity from ZPWVBAP
i_final-kwmeng = i_vbap-kwmeng.

* Unit of Measure
* i_final-meins = i_vbap-meins.

* Sales Unit
i_final-vrkme = i_vbap-vrkme.

* Wave Drop
if i_vbap-ZZCUTOFF+8(4) = '2000' .
i_final-zzshift = '1'.
endif.

if i_vbap-zzcutoff+8(4) = '2300'.
i_final-zzshift = '2'.
endif.

i_final-date = i_vbap-zzcutoff+0(8).

append i_final.
clear : i_final,
i_vbap.

**Difference
*
* i_output-diff = i_output-pverme - i_vbap-kwmeng.
*
** Traffic Lights Depends on value
* if i_output-pverme > i_output-kwmeng.
* i_output-field = '3'.
* elseif i_output-pverme < i_output-kwmeng.
* i_output-field = '1'.
* elseif i_output-pverme = i_output-kwmeng.
* i_output-field = '2'.
* endif.
*
* append i_output.
* clear : i_output,
* i_vbap.

endloop.

refresh i_vbap.
sort i_final by date matnr zzshift.

* Processing the internal table to get same material with pick quantity
* deduction even it for 2nd shift

loop at i_final.

* Move the data into work area in order remove #
move i_final to wa_final.
clear : flag.

at new matnr.


move : wa_final-matnr to i_output-matnr," Material #
wa_final-maktx to i_output-maktx," Desc
wa_final-lgpla to i_output-lgpla," Pick Bin
wa_final-kwmeng to i_output-kwmeng," Order qty
wa_final-zzshift to i_output-zzshift," Shift
wa_final-pverme to i_output-pverme, " Pick bin qty
wa_final-vrkme to i_output-vrkme," Sales Unit
wa_final-prverme to i_output-prverme. " Prod Bin Qty


* Difference
i_output-diff = i_output-pverme - i_output-kwmeng.

* New logic for Only HMR Department
if p_check = 'X'.

if i_output-pverme < i_output-kwmeng.

v_nverme = i_output-pverme + i_output-prverme.

if v_nverme > i_output-kwmeng.

if i_output-pverme < i_output-kwmeng.
i_output-field = '2'.
else.
* Traffic Lights Depends on value
i_output-field = '3'.
endif.

elseif v_nverme < i_output-kwmeng.
i_output-field = '1'.


elseif v_nverme = i_output-kwmeng.
i_output-field = '2'.
endif.
elseif i_output-pverme > i_output-kwmeng.
i_output-field = '3'.
elseif i_output-pverme = i_output-kwmeng.
i_output-field = '3'.

endif.

else.
* Traffic Lights Depends on value
if i_output-pverme > i_output-kwmeng.
i_output-field = '3'.
elseif i_output-pverme < i_output-kwmeng.
i_output-field = '1'.
elseif i_output-pverme = i_output-kwmeng.
i_output-field = '2'.
endif.
endif.

move i_output-diff to v_diff.
flag = 'X'.
endat.
if flag ne 'X'.
move : wa_final-matnr to i_output-matnr," Material #
wa_final-maktx to i_output-maktx," Desc
wa_final-lgpla to i_output-lgpla," Pick Bin
wa_final-kwmeng to i_output-kwmeng," Order qty
wa_final-zzshift to i_output-zzshift," Shift
wa_final-vrkme to i_output-vrkme," Sales Unit
wa_final-prverme to i_output-prverme. " Prod Bin Qty


* Move Diffrence value
move v_diff to i_output-pverme.
clear: v_diff.

* New logic for Only HMR Department
* New logic for Only HMR Department
if p_check = 'X'.

if i_output-pverme < i_output-kwmeng.

v_nverme = i_output-pverme + i_output-prverme.

if v_nverme > i_output-kwmeng.
if i_output-pverme < i_output-kwmeng.
i_output-field = '2'.
else.
* Traffic Lights Depends on value
i_output-field = '3'.
endif.

* Traffic Lights Depends on value
* i_output-field = '3'.

elseif v_nverme < i_output-kwmeng.
i_output-field = '1'.


elseif v_nverme = i_output-kwmeng.
i_output-field = '2'.
endif.
elseif i_output-pverme > i_output-kwmeng.

i_output-field = '3'.
elseif i_output-pverme = i_output-kwmeng.
i_output-field = '3'.

endif.
i_output-diff = i_output-pverme - i_output-kwmeng.
else.
* Difference
i_output-diff = i_output-pverme - i_output-kwmeng.

* Traffic Lights Depends on value
if i_output-pverme > i_output-kwmeng.
i_output-field = '3'.
elseif i_output-pverme < i_output-kwmeng.
i_output-field = '1'.
elseif i_output-pverme = i_output-kwmeng.
i_output-field = '2'.
endif.


endif.

endif.




append i_output.
clear : i_output,
wa_final,
i_final,
v_nverme.
endloop.

sort i_output by field zzshift matnr.

ENDFORM. " GET_DATA_VBAP
*&---------------------------------------------------------------------*
*& Form RESETVALUES
*&---------------------------------------------------------------------*
* Reset the all fieldcatlogs
*----------------------------------------------------------------------*
FORM RESETVALUES.

FIELDCAT_LN-KEY = SPACE.
FIELDCAT_LN-DO_SUM = SPACE.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = SPACE.
FIELDCAT_LN-OUTPUTLEN = '0'.
CLEAR: fieldcat_ln-seltext_l, fieldcat_ln-seltext_m,
fieldcat_ln-seltext_s, fieldcat_ln-reptext_ddic.


ENDFORM. " RESETVALUES
*&---------------------------------------------------------------------*
*& Form FILL_FIELDCATLOG
*&---------------------------------------------------------------------*
* Fill the Fieldcatlog values
*----------------------------------------------------------------------*
FORM FILL_FIELDCATLOG.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

* Trafiic Light
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'FIELD'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 7.
LS_FIELDCAT-col_pos = '1'.
ls_fieldcat-seltext_L = 'Lights'.
ls_fieldcat-seltext_s = 'Lights'.
ls_fieldcat-seltext_m = 'Lights'.
APPEND LS_FIELDCAT TO FIELDCAT.

* Wave Drop
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ZZSHIFT'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 9.
LS_FIELDCAT-col_pos = '2'.
ls_fieldcat-seltext_L = 'Wave Drop'.
APPEND LS_FIELDCAT TO FIELDCAT.

* Material
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'MATNR'.
LS_FIELDCAT-ref_fieldname = 'MATNR'.
LS_FIELDCAT-ref_tabname = 'MARA'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 18.
LS_FIELDCAT-col_pos = '3'.
ls_fieldcat-seltext_L = 'Material'.
APPEND LS_FIELDCAT TO FIELDCAT.

* Description
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'MAKTX'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 40.
LS_FIELDCAT-col_pos = '4'.
ls_fieldcat-seltext_L = 'Description'.
APPEND LS_FIELDCAT TO FIELDCAT.

* Pick Bin
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'LGPLA'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-col_pos = '5'.
ls_fieldcat-seltext_L = 'Pick Bin'.
APPEND LS_FIELDCAT TO FIELDCAT.

* Trafiic Light
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PVERME'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 16.
LS_FIELDCAT-col_pos = '6'.
ls_fieldcat-seltext_L = 'Stock at Pick Bin'.
APPEND LS_FIELDCAT TO FIELDCAT.


* Stock at Prod Bin
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PRVERME'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 16.
LS_FIELDCAT-col_pos = '7'.
ls_fieldcat-seltext_L = 'Stock at Prod Bin'.
APPEND LS_FIELDCAT TO FIELDCAT.


* Req from wave drop
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'KWMENG'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 23.
LS_FIELDCAT-col_pos = '8'.
ls_fieldcat-seltext_L = 'Requirement from Wave Drop'.
APPEND LS_FIELDCAT TO FIELDCAT.


* Sales Unit
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'VRKME'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 12.
LS_FIELDCAT-col_pos = '9'.
ls_fieldcat-seltext_L = 'Sales Unit'.
APPEND LS_FIELDCAT TO FIELDCAT.



* Unit of Measure
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'MEINS'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 9.
LS_FIELDCAT-col_pos = '10'.
ls_fieldcat-seltext_L = 'UNIT'.
ls_fieldcat-no_out = 'X'.
APPEND LS_FIELDCAT TO FIELDCAT.



* Diffference
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'DIFF'.
LS_FIELDCAT-TABNAME = 'I_OUTPUT'.
LS_FIELDCAT-OUTPUTLEN = 12.
LS_FIELDCAT-col_pos = '11'.
ls_fieldcat-seltext_L = 'Difference'.
APPEND LS_FIELDCAT TO FIELDCAT.

ENDFORM. " FILL_FIELDCATLOG
*&---------------------------------------------------------------------*
*& Form CALL_lIST
*&---------------------------------------------------------------------*
* Use ALV Function module to display output
*----------------------------------------------------------------------*
FORM CALL_lIST.

* Top - of - Page
PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
* I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = g_user_command
I_CALLBACK_TOP_OF_PAGE = C_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 = LAYOUT
IT_FIELDCAT = FIELDCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_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
* IT_ALV_GRAPHICS =
* IT_ADD_FIELDCAT =
* IT_HYPERLINK =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IT_EXCEPT_QINFO =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = I_OUTPUT
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. " CALL_lIST
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT.

LAYOUT-GET_SELINFOS = 'X'.
*** Now we want a traffic light to say if the Truck is deleted
*** the variable p_lignam contains the name in IREPO which stores the
*** value for the traffic light
LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
layout-HEADER_TEXT = 'Lights'.
LAYOUT-LIGHTS_CONDENSE = 'X'.


ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_LIST_TOP_OF_PAGE[] text
*----------------------------------------------------------------------*
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE
SLIS_T_LISTHEADER.

data : v_day(2) type c,
v_mon(2) type c,
v_year(4) type c,
v_ldate(10) type c,
v_hdate(10) type c.

DATA: LS_LINE TYPE SLIS_LISTHEADER.
data: d_date like sy-datum.

clear : v_ldate,
v_hdate.

* Header Information.
* LIST HEADING LINE: TYPE H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
LS_LINE-INFO = 'Bin Replenishment report for HMR'.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

* STATUS LINE: TYPE S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = TEXT-003.
* LS_LINE-INFO = TEXT-003.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

* STATUS LINE: TYPE S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
* LS_LINE-KEY = TEXT-003.
* LS_LINE-INFO = TEXT-003.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

* Get the data ( s_date_low) into proper format.
v_year = s_date-low+0(4).
v_mon = s_date-low+4(2).
v_day = s_date-low+6(2).

concatenate v_mon '/' v_day '/' v_year into v_ldate.
clear : v_mon,
v_year,
v_day.

* Get the data ( s_date_high) into proper format.
v_year = s_date-high+0(4).
v_mon = s_date-high+4(2).
v_day = s_date-high+6(2).

concatenate v_mon '/' v_day '/' v_year into v_hdate.
clear : v_mon,
v_year,
v_day.


* Delivery date
if not s_date-low is initial .
if not s_date-high is initial.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Delivery date From:'.
LS_LINE-INFO = v_ldate.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Delivery date To :'.
LS_LINE-INFO = v_hdate.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

endif.
endif.

if not s_date-low is initial.
if s_date-high is initial.
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Delivery date :'.
LS_LINE-INFO = v_ldate.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
endif.
endif.


* Wave Drop
if not S_SHIFT-LOW is initial.
if not S_SHIFT-high is initial.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Wave Drop From :'.
LS_LINE-INFO = s_shift-low.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Wave Drop to :'.
LS_LINE-INFO = s_shift-high.
APPEND LS_LINE TO LT_TOP_OF_PAGE.


endif.
endif.

if not S_SHIFT-LOW is initial.
if S_SHIFT-high is initial.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Wave Drop :'.
LS_LINE-INFO = s_shift-low.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

* CLEAR LS_LINE.
* LS_LINE-TYP = 'S'.
* LS_LINE-KEY = 'Wave Drop to :'.
* LS_LINE-INFO = s_shift-high.
* APPEND LS_LINE TO LT_TOP_OF_PAGE.


endif.
endif.


* Department

if not s_dept-low is initial .
if not s_dept-high is initial.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Department From :'.
LS_LINE-INFO = s_dept-low.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Department to :'.
LS_LINE-INFO = s_dept-high.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

endif.
endif.

if not s_dept-low is initial .
if s_dept-high is initial.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Department :'.
LS_LINE-INFO = s_dept-low.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

endif.
endif.

* Production Department

if not S_PDEPT-LOW is initial.
if not S_PDEPT-high is initial.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Production Department From :'.
LS_LINE-INFO = S_PDEPT-LOW.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Production Department to :'.
LS_LINE-INFO = S_PDEPT-high.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

endif.
endif.


if not S_PDEPT-LOW is initial.
if S_PDEPT-high is initial.

CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Production Department :'.
LS_LINE-INFO = S_PDEPT-LOW.
APPEND LS_LINE TO LT_TOP_OF_PAGE.

endif.
endif.


ENDFORM. " COMMENT_BUILD


*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE
* I_LOGO =
* I_END_OF_LIST_GRID =
.

ENDFORM.

*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield. "#EC CALLED


CASE R_UCOMM.
WHEN '&IC1'.

read table i_output index rs_selfield-tabindex.

SET PARAMETER ID 'MAT' FIELD i_output-matnr.
SET PARAMETER ID 'WRK' FIELD p_plant.

if not i_output-matnr is initial.
call transaction 'MD04' and skip first screen.
endif.

ENDCASE.

ENDFORM.

the above code i mentioned 1,2 ,3 values ,1 will have green color,2 will have yellow color,3 will have red color.

Check this one too

*****************************************************************
* Use of colours in ALV grid (cell, line and column)            *
*****************************************************************
 
* Table
tables : mara.
 
* Type
types : begin of ty_mara,
          matnr         like mara-matnr,
          matkl         like mara-matkl,
          counter(4)    type n,
          free_text(15) type c,
          color_line(4) type c,           " Line color
          color_cell    type lvc_t_scol,  " Cell color
end of ty_mara.
 
* Structures
data  : wa_mara     type ty_mara,
        wa_fieldcat type lvc_s_fcat,
        is_layout   type lvc_s_layo,
        wa_color    type lvc_s_scol.
 
* Internal table
data : it_mara     type standard table of ty_mara,
       it_fieldcat type standard table of lvc_s_fcat,
       it_color    type table          of lvc_s_scol.
 
* Variables
data : okcode like sy-ucomm,
       w_alv_grid          type ref to cl_gui_alv_grid,
       w_docking_container type ref to cl_gui_docking_container.
 
 
parameters : p_column as checkbox,
             p_line   as checkbox,
             p_cell   as checkbox.
 
at selection-screen output.
 
  perform get_data.
  perform fill_catalog.
 
  if w_docking_container is initial.
    perform create_objects.
  endif.
 
*&--------------------------------------------------------------*
*&      Form  create_objects
*&--------------------------------------------------------------*
form create_objects.
 
  create object w_docking_container
    exporting
      ratio                       = 60
    exceptions
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      others                      = 6.
 
  create object w_alv_grid
    exporting
      i_parent          = w_docking_container.
 
* Field that identify color line in internal table
  move 'COLOR_LINE' to is_layout-info_fname.
 
* Field that identify cell color in inetrnal table
  move 'COLOR_CELL' to is_layout-ctab_fname.
 
  call method w_alv_grid->set_table_for_first_display
    exporting
      is_layout                     = is_layout
    changing
      it_outtab                     = it_mara
      it_fieldcatalog               = it_fieldcat
    exceptions
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      others                        = 4.
 
endform.
*&--------------------------------------------------------------*
*&      Form  get_data
*&--------------------------------------------------------------*
form get_data.
 
  select * from mara up to 5 rows.
    clear : wa_mara-color_line, wa_mara-color_cell.
 
    move-corresponding mara to wa_mara.
    add 1                   to wa_mara-counter.
    move 'Blabla'           to wa_mara-free_text.
 
    if wa_mara-counter = '0002'
    and p_line = 'X'.
* Color line
      move 'C410' to wa_mara-color_line.
    elseif wa_mara-counter = '0004'
    and p_cell = 'X'.
* Color cell
      move 'FREE_TEXT' to wa_color-fname.
      move '6'         to wa_color-color-col.
      move '1'         to wa_color-color-int.
      move '1'         to wa_color-color-inv.
      append wa_color to it_color.
      wa_mara-color_cell[] = it_color[].
    endif.
 
    append wa_mara to it_mara.
  endselect.
 
endform.
*&--------------------------------------------------------------*
*&      Form  fill_catalog
*&--------------------------------------------------------------*
form fill_catalog.
 
*****************************************************************
* Colour code :                                                 *
* Colour is a 4-char field where :                              *
*              - 1st char = C (color property)                  *
*              - 2nd char = color code (from 0 to 7)            *
*                                  0 = background color         *
*                                  1 = blue                     *
*                                  2 = gray                     *
*                                  3 = yellow                   *
*                                  4 = blue/gray                *
*                                  5 = green                    *
*                                  6 = red                      *
*                                  7 = orange                   *
*              - 3rd char = intensified (0=off, 1=on)           *
*              - 4th char = inverse display (0=off, 1=on)       *
*                                                               *
* Colour overwriting priority :                                 *
*   1. Line                                                     *
*   2. Cell                                                     *
*   3. Column                                                   *
*****************************************************************
  data : w_position type i value '1'.
 
  clear wa_fieldcat.
  move w_position to wa_fieldcat-col_pos.
  move 'MATNR'    to wa_fieldcat-fieldname.
  move 'MARA'     to wa_fieldcat-ref_table.
  move 'MATNR'    to wa_fieldcat-ref_field.
  append wa_fieldcat to it_fieldcat.
 
  add 1 to w_position.
 
  clear wa_fieldcat.
  move w_position to wa_fieldcat-col_pos.
  move 'MATKL'    to wa_fieldcat-fieldname.
  move 'MARA'     to wa_fieldcat-ref_table.
  move 'MATKL'    to wa_fieldcat-ref_field.
* Color column
  if p_column = 'X'.
    move 'C610'     to wa_fieldcat-emphasize.
  endif.
  append wa_fieldcat to it_fieldcat.
 
  add 1 to w_position.
 
  clear wa_fieldcat.
  move w_position to wa_fieldcat-col_pos.
  move 'COUNTER'  to wa_fieldcat-fieldname.
  move 'N'        to wa_fieldcat-inttype.
  move '4'        to wa_fieldcat-intlen.
  move 'Counter'  to wa_fieldcat-coltext.
  append wa_fieldcat to it_fieldcat.
 
  add 1 to w_position.
 
  clear wa_fieldcat.
  move w_position  to wa_fieldcat-col_pos.
  move 'FREE_TEXT' to wa_fieldcat-fieldname.
  move 'C'         to wa_fieldcat-inttype.
  move '20'        to wa_fieldcat-intlen.
  move 'Text'      to wa_fieldcat-coltext.
  append wa_fieldcat to it_fieldcat.
 
endform.
 


Check this links

http://www.allsapinfo.com/alvexamples.htm

http://www.sapfans.com/forums/viewtopic.php?t=94198

<b><u>This is good with screen shots also</u></b>

http://www.erpgenie.com/abap/controls/alvgrid.htm

Reward all helpfull answers

Regards

Pavan

Message was edited by:

Pavan praveen

Read only

0 Likes
711

Hi,

Check the program BCALV_GRID_04, it has nothing to do with the grid.

Just check how it's using it in the layout Line 127 & 225.

Hope this helps.

reward if helpful.

Regards,

Sipra