Application Development 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: 

Traffic Signals in ALV Without using oops only for normal Grid Display.

Former Member
0 Kudos
223

Hi Experts ,

I need to add traffic signals into my normal ALV Grid program without using oops concepts.

Please any one send me full code or provide me one program code without using oops concept for normal ALV Grid .

I searched in many forums but i found most of the programs wriiten using oops concept with ALV's but here my requirement without using oops concept and only normal reuse_alv_grid_display.

Thanks in Advance.

Venky.

5 REPLIES 5

former_member188685
Active Contributor
0 Kudos
189

have a field inside ur internal table.

populate the values conditionally (1, 2, 3 for different color lights).

mention tjhe field name in the layout.

X_LAYOUT-LIGHTS_FIELDNAME = 'LIGHTS'. "this is the field in step1

Former Member
0 Kudos
189

You can check the below sample code.Traffic light is implemented in it.

REPORT ztest NO STANDARD PAGE HEADING

LINE-SIZE 255 MESSAGE-ID zlqm.

TYPE-POOLS : slis,icon.

TABLES :qals,qave.

INCLUDE : zlqmr002_top, "Global Data Declaration

zlqmr002_selection_screen, "Selection Screen Inputs

zlqmr002_subroutine. "Subroutines

*----


  • INITIALIZATION

*----


INITIALIZATION.

PERFORM variant_init.

*----


  • AT SELECTION-SCREEN

*----


AT SELECTION-SCREEN.

  • Check for Variant existance

PERFORM pai_of_selection_screen.

*Validation for Material

AT SELECTION-SCREEN ON s_matnr.

IF NOT s_matnr IS INITIAL.

SELECT SINGLE matnr

INTO g_matnr

FROM mara

WHERE matnr IN s_matnr.

IF sy-subrc <> 0.

SET CURSOR FIELD 'S_MATNR'.

MESSAGE e000 WITH text-003.

ENDIF.

ENDIF.

*Validation for Plant

AT SELECTION-SCREEN ON s_werk.

IF NOT s_werk IS INITIAL.

SELECT SINGLE werks

INTO g_werk

FROM t001w

WHERE werks IN s_werk.

IF sy-subrc <> 0.

SET CURSOR FIELD 'S_WERK'.

MESSAGE e000 WITH text-004.

ENDIF.

ENDIF.

*Validation for Inspection Type

AT SELECTION-SCREEN ON s_art.

IF NOT s_art IS INITIAL.

SELECT SINGLE art

INTO g_art

FROM tq30

WHERE art IN s_art.

IF sy-subrc <> 0.

SET CURSOR FIELD 'S_ART'.

MESSAGE e000 WITH text-005.

ENDIF.

ENDIF.

*Validation for Code group

AT SELECTION-SCREEN ON s_vcdgrp.

IF NOT s_vcdgrp IS INITIAL.

SELECT SINGLE codegruppe

INTO g_vcdgrp

FROM qpgr

WHERE codegruppe IN s_vcdgrp.

IF sy-subrc <> 0.

SET CURSOR FIELD 'S_VCDGRP'.

MESSAGE e000 WITH text-006.

ENDIF.

ENDIF.

*Validation for Code

AT SELECTION-SCREEN ON s_vcode.

IF NOT s_vcode IS INITIAL.

SELECT SINGLE code

INTO g_vcode

FROM qpcd

WHERE code IN s_vcode.

IF sy-subrc <> 0.

SET CURSOR FIELD 'S_VCODE'.

MESSAGE e000 WITH text-007.

ENDIF.

ENDIF.

  • Process on value request

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM f4_for_variant.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vcdgrp-low.

PERFORM get_codegroup.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vcdgrp-high.

PERFORM get_codegroup.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vcode-low.

PERFORM get_code.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vcode-high.

PERFORM get_code.

*----


  • START-OF-SELECTION.

*----


START-OF-SELECTION.

**Selecting data form Database tables

PERFORM select_data TABLES i_out i_out1.

*----


  • END-OF-SELECTION

*----


END-OF-SELECTION.

**Generate ALV

PERFORM generate_alv.

*----


  • DATA TYPES

*----


TYPES : BEGIN OF t_qals,

matnr TYPE qals-matnr, "Material

werk TYPE qals-werk, "Plant

mengeneinh TYPE qals-mengeneinh, "UOM

lmenge01 TYPE qals-lmenge01, "Unrestricted qty

lmenge02 TYPE qals-lmenge02, "Scrap qty

lmenge03 TYPE qals-lmenge03, "Sample qty

lmenge04 TYPE qals-lmenge04, "Blocked qty

lmenge05 TYPE qals-lmenge05, "Retain qty

lmenge06 TYPE qals-lmenge06, "Othermat qty

lmenge07 TYPE qals-lmenge07, "RTV qty

lmenge08 TYPE qals-lmenge08, "Exp.scrap qty

prueflos TYPE qals-prueflos, "Inspection lot

art TYPE qals-art, "Inspection type

charg TYPE qals-charg, "Batch

vcode TYPE qave-vcode, "Usage decision

vdatum TYPE qave-vdatum, "Date

qmnum TYPE qmel-qmnum, "Notification

END OF t_qals.

TYPES : BEGIN OF t_out,

icon TYPE icon-id, "Status

matnr TYPE qals-matnr, "Material

werk TYPE qals-werk, "Plant

mengeneinh TYPE qals-mengeneinh, "UOM

vcode TYPE qave-vcode, "Usage decision

mncod(30) TYPE c, "Disposition

lmenge01 TYPE qals-lmenge01, "Unrestricted qty

lmenge02 TYPE qals-lmenge02, "Scrap qty

lmenge03 TYPE qals-lmenge03, "Sample qty

lmenge04 TYPE qals-lmenge04, "Blocked qty

lmenge05 TYPE qals-lmenge05, "Retain qty

lmenge06 TYPE qals-lmenge06, "Othermat qty

lmenge07 TYPE qals-lmenge07, "RTV qty

lmenge08 TYPE qals-lmenge08, "Exp.scrap qty

prueflos TYPE qals-prueflos, "Inspection lot

art TYPE qals-art, "Inspection type

qmnum TYPE qmel-qmnum, "Notification

vdatum TYPE qave-vdatum, "Date

charg TYPE qals-charg, "Batch

END OF t_out.

TYPES : BEGIN OF t_qmsm,

qmnum TYPE qmsm-qmnum,

manum TYPE qmsm-manum,

mncod TYPE qmsm-mncod,

END OF t_qmsm.

TYPES: BEGIN OF t_disp,

qmnum TYPE qmsm-qmnum,

mncod(30) TYPE c,

END OF t_disp.

TYPES: BEGIN OF t_codegrp,

katalogart TYPE qpgt-katalogart,

codegruppe TYPE qpgt-codegruppe,

kurztext TYPE qpgt-kurztext,

END OF t_codegrp.

TYPES: BEGIN OF t_code,

katalogart TYPE qpct-katalogart,

codegruppe TYPE qpct-codegruppe,

code TYPE qpct-code,

version TYPE qpct-version,

kurztext TYPE qpct-kurztext,

END OF t_code.

*----


  • INTERNAL TABLES

*----


DATA: i_qals TYPE TABLE OF t_qals,

wa_qals LIKE LINE OF i_qals,

i_qmsm TYPE TABLE OF t_qmsm,

wa_qmsm TYPE t_qmsm,

i_disp TYPE TABLE OF t_disp,

wa_disp LIKE LINE OF i_disp,

i_out TYPE TABLE OF t_out,

wa_out TYPE t_out,

i_out1 TYPE TABLE OF t_out,

wa_out1 TYPE t_out,

i_codegrp TYPE TABLE OF t_codegrp,

i_code TYPE TABLE OF t_code,

i_qmsm_tmp TYPE TABLE OF t_qmsm.

DATA: i_fieldcat TYPE slis_t_fieldcat_alv,

i_layout TYPE slis_layout_alv,

g_repid TYPE sy-repid,

wa_fieldcat TYPE slis_fieldcat_alv.

*----


  • Global Variables

*----


DATA : g_matnr TYPE matnr,

g_werk TYPE werks,

g_art TYPE qpart,

g_vcdgrp TYPE qvgruppe,

g_vcode TYPE qvcode,

g_red TYPE c,

g_yellow TYPE c,

g_table(6) TYPE c,

g_save(1) TYPE c,

g_exit(1) TYPE c,

g_report TYPE sy-repid,

g_var TYPE disvariant,

g_variant TYPE disvariant.

*----


  • Constants

*----


CONSTANTS: c_green TYPE icon-id VALUE '@08@',

c_yellow TYPE icon-id VALUE '@09@',

c_red TYPE icon-id VALUE '@0A@'.

  • SELECTION SCREEN

*----


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_matnr FOR qals-matnr, "Material Number

s_werk FOR qals-werk, "Plant

s_art FOR qals-art, "Inspection Type

s_vcdgrp FOR qave-vcodegrp, "Usage Decision Code Group

s_vcode FOR qave-vcode, "Usage Decision Code

s_vdatum FOR qave-vdatum. "Usage Decision Code Date

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

PARAMETERS: p_all RADIOBUTTON GROUP g1 DEFAULT 'X',

p_excp RADIOBUTTON GROUP g1.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-009.

"Variant Selection

PARAMETERS: p_vari TYPE disvariant-variant.

SELECTION-SCREEN END OF BLOCK b3.

&----


*& Form select_data

&----


  • Select Inspection Details

----


FORM select_data TABLES p_out STRUCTURE wa_out

p_out1 STRUCTURE wa_out.

DATA:l_mncod(30) TYPE c.

REFRESH : i_qals,i_qmsm,i_qmsm_tmp,i_disp,p_out.

SELECT qalsmatnr qalswerk qals~mengeneinh

qalslmenge01 qalslmenge02 qals~lmenge03

qalslmenge04 qalslmenge05 qals~lmenge06

qalslmenge07 qalslmenge08 qals~prueflos

qalsart qalscharg qave~vcode

qavevdatum qmelqmnum

INTO CORRESPONDING FIELDS OF TABLE i_qals

FROM qals

INNER JOIN qave

ON qalsprueflos = qaveprueflos

INNER JOIN qmel

ON qalsprueflos = qmelprueflos

WHERE qals~matnr IN s_matnr

AND qals~werk IN s_werk

AND qals~art IN s_art

AND qals~stat34 EQ 'X'

AND qave~vcodegrp IN s_vcdgrp

AND qave~vcode IN s_vcode

AND qave~vdatum IN s_vdatum.

IF sy-subrc NE 0.

MESSAGE i000 WITH text-008.

ENDIF.

IF NOT i_qals IS INITIAL.

SELECT qmnum manum mncod INTO TABLE i_qmsm

FROM qmsm

FOR ALL ENTRIES IN i_qals

WHERE qmnum EQ i_qals-qmnum

AND mngrp LIKE 'Q_D%'

AND kzloesch NE 'X'.

ENDIF.

***Concatenation of Disposition Codes

IF NOT i_qmsm IS INITIAL.

i_qmsm_tmp = i_qmsm.

SORT i_qmsm_tmp BY qmnum mncod.

DELETE ADJACENT DUPLICATES FROM i_qmsm_tmp COMPARING qmnum mncod+0(2).

CLEAR wa_qmsm.

LOOP AT i_qmsm_tmp INTO wa_qmsm.

MOVE wa_qmsm-qmnum TO wa_disp-qmnum.

CONCATENATE l_mncod wa_qmsm-mncod+0(2) INTO l_mncod SEPARATED BY space.

AT END OF qmnum.

SHIFT l_mncod LEFT DELETING LEADING space.

MOVE l_mncod TO wa_disp-mncod.

APPEND wa_disp TO i_disp.

CLEAR:wa_disp,l_mncod.

ENDAT.

ENDLOOP.

ENDIF.

***Transfer of data to the output table

LOOP AT i_qals INTO wa_qals.

MOVE-CORRESPONDING wa_qals TO wa_out.

CLEAR wa_disp.

READ TABLE i_disp INTO wa_disp

WITH KEY qmnum = wa_qals-qmnum.

IF sy-subrc EQ 0.

MOVE wa_disp-mncod TO wa_out-mncod.

ENDIF.

PERFORM check_quantity USING wa_qals.

CLEAR wa_qmsm.

LOOP AT i_qmsm INTO wa_qmsm

WHERE qmnum EQ wa_qals-qmnum.

PERFORM check_group USING wa_qals

wa_qmsm.

CLEAR wa_qmsm.

ENDLOOP.

IF g_red NE 'X'.

CLEAR wa_qmsm.

LOOP AT i_qmsm INTO wa_qmsm WHERE qmnum = wa_qals-qmnum

AND mncod0(2) NE wa_qals-vcode0(2).

g_yellow = 'X'.

ENDLOOP.

ENDIF.

IF g_yellow EQ 'X'.

MOVE c_yellow TO wa_out-icon.

ELSEIF g_red EQ 'X'.

MOVE c_red TO wa_out-icon.

ELSE.

MOVE c_green TO wa_out-icon.

ENDIF.

APPEND wa_out TO p_out.

CLEAR:wa_qals,wa_out,g_red,g_yellow.

ENDLOOP.

***IF only exceptions are need to be displayed

IF p_excp EQ 'X'.

CLEAR wa_out.

LOOP AT p_out INTO wa_out WHERE icon EQ c_red.

APPEND wa_out TO p_out1.

ENDLOOP.

ENDIF.

ENDFORM. " select_data

&----


*& Form populate_fieldcat

&----


  • Populate the Fieldcat Table

----


FORM populate_fieldcat USING p_table TYPE c.

**status

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'ICON'.

wa_fieldcat-seltext_l = text-010.

wa_fieldcat-outputlen = 15.

wa_fieldcat-icon = 'X'.

APPEND wa_fieldcat TO i_fieldcat.

**Material

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-seltext_l = text-011.

wa_fieldcat-outputlen = 15.

APPEND wa_fieldcat TO i_fieldcat.

**Plant

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'WERK'.

wa_fieldcat-seltext_l = text-012.

wa_fieldcat-outputlen = 7.

APPEND wa_fieldcat TO i_fieldcat.

**Usage Decision

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'VCODE'.

wa_fieldcat-seltext_l = text-013.

wa_fieldcat-outputlen = 15.

APPEND wa_fieldcat TO i_fieldcat.

**Dispositions

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'MNCOD'.

wa_fieldcat-seltext_l = text-014.

wa_fieldcat-outputlen = 18.

APPEND wa_fieldcat TO i_fieldcat.

**UOM

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'MENGENEINH'.

wa_fieldcat-seltext_l = text-015.

wa_fieldcat-outputlen = 18.

APPEND wa_fieldcat TO i_fieldcat.

**Unrestricted Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE01'.

wa_fieldcat-seltext_l = text-016.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Scrap Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE02'.

wa_fieldcat-seltext_l = text-017.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Sample Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE03'.

wa_fieldcat-seltext_l = text-018.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Blocked Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE04'.

wa_fieldcat-seltext_l = text-019.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Retain Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE05'.

wa_fieldcat-seltext_l = text-020.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Other Mat Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE06'.

wa_fieldcat-seltext_l = text-021.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**RTV Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE07'.

wa_fieldcat-seltext_l = text-022.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Exp. Scrap Quantity

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'LMENGE08'.

wa_fieldcat-seltext_l = text-023.

wa_fieldcat-qfieldname = 'MENGENEINH'.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Inspection Lot

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'PRUEFLOS'.

wa_fieldcat-seltext_l = text-024.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Inspection Type

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'ART'.

wa_fieldcat-seltext_l = text-025.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Notification

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'QMNUM'.

wa_fieldcat-seltext_l = text-026.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Date

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'VDATUM'.

wa_fieldcat-seltext_l = text-027.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

**Batch

CLEAR wa_fieldcat.

wa_fieldcat-tabname = p_table.

wa_fieldcat-fieldname = 'CHARG'.

wa_fieldcat-seltext_l = text-028.

wa_fieldcat-outputlen = 20.

APPEND wa_fieldcat TO i_fieldcat.

ENDFORM. " populate_fieldcat

&----


*& Form check_quantity

&----


  • To Check the Quantity

----


FORM check_quantity USING p_qals TYPE t_qals.

IF wa_qals-lmenge01 GT 0.

LOOP AT i_disp TRANSPORTING NO FIELDS

WHERE qmnum EQ wa_qals-qmnum

AND ( mncod CP 'UI'

OR mncod CP 'SR'

OR mncod CP 'ND' ).

ENDLOOP.

IF sy-subrc NE 0.

g_red = 'X'.

ENDIF.

ENDIF.

IF wa_qals-lmenge02 GT 0 AND g_red NE 'X'.

LOOP AT i_disp TRANSPORTING NO FIELDS

WHERE qmnum EQ wa_qals-qmnum

AND ( mncod CP 'SC'

OR mncod CP 'SR' ).

ENDLOOP.

IF sy-subrc NE 0.

g_red = 'X'.

ENDIF.

ENDIF.

IF wa_qals-lmenge04 GT 0 AND g_red NE 'X'.

LOOP AT i_disp TRANSPORTING NO FIELDS

WHERE qmnum EQ wa_qals-qmnum

AND ( mncod CP 'RW'

OR mncod CP 'RD' ).

ENDLOOP.

IF sy-subrc NE 0.

g_red = 'X'.

ENDIF.

ENDIF.

IF wa_qals-lmenge05 GT 0 AND g_red NE 'X'.

LOOP AT i_disp TRANSPORTING NO FIELDS

WHERE qmnum EQ wa_qals-qmnum

AND mncod CP 'R1'.

ENDLOOP.

IF sy-subrc NE 0.

g_red = 'X'.

ENDIF.

ENDIF.

IF wa_qals-lmenge06 GT 0 AND g_red NE 'X'.

LOOP AT i_disp TRANSPORTING NO FIELDS

WHERE qmnum EQ wa_qals-qmnum

AND mncod CP 'RD'.

ENDLOOP.

IF sy-subrc NE 0.

g_red = 'X'.

ENDIF.

ENDIF.

IF wa_qals-lmenge07 GT 0 AND g_red NE 'X'.

LOOP AT i_disp TRANSPORTING NO FIELDS

WHERE qmnum EQ wa_qals-qmnum

AND mncod CP 'RV'.

ENDLOOP.

IF sy-subrc NE 0.

g_red = 'X'.

ENDIF.

ENDIF.

IF wa_qals-lmenge08 GT 0 AND g_red NE 'X'.

LOOP AT i_disp TRANSPORTING NO FIELDS

WHERE qmnum EQ wa_qals-qmnum

AND ( mncod CP 'SC'

OR mncod CP 'SE' ).

ENDLOOP.

IF sy-subrc NE 0.

g_red = 'X'.

ENDIF.

ENDIF.

ENDFORM. " check_quantity

&----


*& Form check_group

&----


  • To check the Disposition Code

----


FORM check_group USING p_qals TYPE t_qals

p_qmsm TYPE t_qmsm.

IF p_qmsm-mncod+0(2) EQ 'UI' AND

NOT p_qals-lmenge01 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'RW' AND

NOT p_qals-lmenge04 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'SC' AND

NOT p_qals-lmenge02 GT 0 AND

NOT p_qals-lmenge08 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'SE' AND

NOT p_qals-lmenge08 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'RV' AND

NOT p_qals-lmenge07 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'SR' AND

NOT p_qals-lmenge01 GT 0 AND

NOT p_qals-lmenge02 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'ND' AND

NOT p_qals-lmenge01 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'R1' AND

NOT p_qals-lmenge05 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

IF p_qmsm-mncod+0(2) EQ 'RD' AND

NOT p_qals-lmenge04 GT 0 AND

NOT p_qals-lmenge06 GT 0.

g_red = 'X'.

EXIT.

ENDIF.

ENDFORM. " check_group

&----


*& Form call_alv

&----


  • Call ALV Grid Display

----


FORM call_alv TABLES p_out STRUCTURE wa_out.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = g_repid

i_callback_pf_status_set = 'PF_STATUS_SET'

i_callback_user_command = 'USER_COMMAND'

is_layout = i_layout

it_fieldcat = i_fieldcat[]

TABLES

t_outtab = p_out

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_alv

&----


*& Form generate_alv

&----


  • Build ALV

----


FORM generate_alv .

IF NOT i_out IS INITIAL OR

NOT i_out1 IS INITIAL.

g_repid = sy-repid.

IF p_excp EQ 'X'.

MOVE 'I_OUT1' TO g_table.

ELSEIF p_all EQ 'X'.

MOVE 'I_OUT' TO g_table.

ENDIF.

PERFORM populate_fieldcat USING g_table.

i_layout-zebra = 'X'.

i_layout-colwidth_optimize = 'X'.

IF p_excp = 'X'.

PERFORM call_alv TABLES i_out1.

ELSEIF p_all = 'X'.

PERFORM call_alv TABLES i_out.

ENDIF.

ENDIF.

ENDFORM. " generate_alv

&----


*& Form PF_STATUS_SET

&----


  • Setting PF Status

----


FORM pf_status_set USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STATUS1' .

ENDFORM. "PF_STATUS_SET

&----


*& Form USER_COMMAND

&----


  • User Command Processing

----


FORM user_command USING r_ucomm TYPE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN 'UDG'.

IF p_all EQ 'X'.

CLEAR wa_out.

READ TABLE i_out INTO wa_out INDEX rs_selfield-tabindex.

SET PARAMETER ID 'QLS' FIELD wa_out-prueflos.

ELSEIF p_excp EQ 'X'.

CLEAR wa_out1.

READ TABLE i_out1 INTO wa_out1 INDEX rs_selfield-tabindex.

SET PARAMETER ID 'QLS' FIELD wa_out1-prueflos.

ENDIF.

CALL TRANSACTION 'QA13' AND SKIP FIRST SCREEN.

WHEN 'QNF'.

IF p_all EQ 'X'.

CLEAR wa_out.

READ TABLE i_out INTO wa_out INDEX rs_selfield-tabindex.

SET PARAMETER ID 'IQM' FIELD wa_out-qmnum.

ELSEIF p_excp EQ 'X'.

CLEAR wa_out1.

READ TABLE i_out1 INTO wa_out1 INDEX rs_selfield-tabindex.

SET PARAMETER ID 'IQM' FIELD wa_out1-qmnum.

ENDIF.

CALL TRANSACTION 'QM03' AND SKIP FIRST SCREEN.

ENDCASE.

ENDFORM. "USER_COMMAND

&----


*& Form variant_init

&----


  • Initialize variant

----


FORM variant_init .

  • Set Options: save variants userspecific or general

g_save = 'A'.

g_report = sy-repid.

g_var-report = g_report.

  • Get default variant

g_variant = g_var.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = g_save

CHANGING

cs_variant = g_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

p_vari = g_variant-variant.

ENDIF.

ENDFORM. " variant_init

&----


*& Form f4_for_variant

&----


  • F4 help for variant

----


FORM f4_for_variant .

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = g_var

i_save = g_save

IMPORTING

e_exit = g_exit

es_variant = g_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF g_exit = space.

p_vari = g_variant-variant.

ENDIF.

ENDIF.

ENDFORM. " f4_for_variant

&----


*& Form pai_of_selection_screen

&----


  • Check existence of Variant

----


FORM pai_of_selection_screen .

IF NOT p_vari IS INITIAL.

MOVE g_var TO g_variant.

MOVE p_vari TO g_variant-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = g_save

CHANGING

cs_variant = g_variant.

g_var = g_variant.

ELSE.

PERFORM variant_init.

ENDIF.

ENDFORM. " pai_of_selection_screen

&----


*& Form get_codegroup

&----


  • Get F4 help for Code Group

----


FORM get_codegroup .

DATA: i_return TYPE TABLE OF ddshretval.

SELECT katalogart codegruppe kurztext FROM qpgt

INTO TABLE i_codegrp

WHERE katalogart EQ '3'

AND sprache EQ sy-langu.

IF sy-subrc EQ 0.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = ' '

retfield = 'CODEGRUPPE'

dynpprog = sy-repid

dynpnr = sy-dynnr

dynprofield = 'S_VCDGRP'

value_org = 'S'

TABLES

value_tab = i_codegrp[]

return_tab = i_return[]

EXCEPTIONS

parameter_error = 1

no_values_found = 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.

ENDIF.

ENDFORM. " get_codegroup

&----


*& Form get_code

&----


  • Get F4 help for Code

----


FORM get_code .

DATA: l_field TYPE rsscr-name VALUE 'S_VCDGRP',

l_field_kind TYPE rsscr-kind VALUE 'S',

li_par_values TYPE TABLE OF rsparams,

la_par_values TYPE rsparams,

r_cdgrp TYPE RANGE OF qpct-codegruppe,

la_cdgrp LIKE LINE OF r_cdgrp.

**Get the values entered in the selection screen

PERFORM f4_get_related_values IN PROGRAM rsdbspf4

TABLES li_par_values

USING l_field l_field_kind.

IF NOT li_par_values IS INITIAL.

CLEAR:la_cdgrp,la_par_values.

LOOP AT li_par_values INTO la_par_values.

MOVE-CORRESPONDING la_par_values TO la_cdgrp.

IF la_cdgrp-option IS INITIAL.

MOVE 'EQ' TO la_cdgrp-option.

ENDIF.

APPEND la_cdgrp TO r_cdgrp.

CLEAR la_cdgrp.

ENDLOOP.

ENDIF.

SELECT katalogart codegruppe

code version

kurztext FROM qpct

INTO TABLE i_code

WHERE katalogart EQ '3'

AND codegruppe IN r_cdgrp

AND sprache EQ sy-langu.

IF sy-subrc EQ 0.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = ' '

retfield = 'CODE'

dynpprog = sy-repid

dynpnr = sy-dynnr

dynprofield = 'S_VCODE'

value_org = 'S'

TABLES

value_tab = i_code[]

  • return_tab =

EXCEPTIONS

parameter_error = 1

no_values_found = 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.

ENDIF.

ENDFORM. " get_code

Former Member
0 Kudos
189

Hi

Use type pools icon or use tables icon

Delcare field of icon name and assign the colours

ICON_GREEN_LIGHT

ICON_YELLOW_LIGHT

ICON_RED_LIGHT

assign this for the buttons and pass the same to field catalog

Regards

Shiva

former_member200338
Active Contributor
0 Kudos
189

Hi,

in your final internal table, declare a field say LIGHT of type C.

assign values this field (1, 2, 3) while building internal table.

in your field layout, set following option

gs_layout-lights_fieldname = 'LIGHT' .

gs_layout-lights_tabname = 'GT_OUTPUT' .

pass this layout to the ALV grid.

see

http://www.geocities.com/mpioud/Abap_programs.html

for more help

Regards,

Niyaz

Former Member
0 Kudos
189

Hi Venkat,

The following code will meet your requirement,have a look.

Displaying the Lights in ALV Grid

TYPE-POOLS: SLIS, ICON.

DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: BEGIN OF IMARA OCCURS 0,

LIGHT(4) TYPE C,

MATNR TYPE MARA-MATNR,

MTART TYPE MARA-MTART,

MAKTX TYPE MAKT-MAKTX,

COLOR_LINE(4) TYPE C,

TCOLOR TYPE SLIS_T_SPECIALCOL_ALV, "cell

END OF IMARA.

DATA: XCOLOR TYPE SLIS_SPECIALCOL_ALV.

START-OF-SELECTION.

PERFORM GET_DATA.

PERFORM WRITE_REPORT.

FORM GET_DATA.

WRITE ICON_GREEN_LIGHT AS ICON TO IMARA-LIGHT.

IMARA-MATNR = 'ABC'.

IMARA-MTART = 'ZCFG'.

IMARA-MAKTX = 'This is description for ABC'.

APPEND IMARA.

WRITE ICON_YELLOW_LIGHT AS ICON TO IMARA-LIGHT.

IMARA-MATNR = 'DEF'.

IMARA-MTART = 'ZCFG'.

IMARA-MAKTX = 'This is description for DEF'.

APPEND IMARA.

WRITE ICON_RED_LIGHT AS ICON TO IMARA-LIGHT.

IMARA-MATNR = 'GHI'.

IMARA-MTART = 'ZCFG'.

IMARA-MAKTX = 'This is description for GHI'.

APPEND IMARA.

LOOP AT IMARA.

IF SY-TABIX = 1.

IMARA-COLOR_LINE = 'C410'. " color line

ENDIF.

IF SY-TABIX = 2. " color CELL

CLEAR XCOLOR.

XCOLOR-FIELDNAME = 'MTART'.

XCOLOR-COLOR-COL = '3'.

XCOLOR-COLOR-INT = '1'. " Intensified on/off

XCOLOR-COLOR-INV = '0'.

APPEND XCOLOR TO IMARA-TCOLOR.

ENDIF.

MODIFY IMARA.

ENDLOOP.

ENDFORM. "get_data

FORM WRITE_REPORT.

DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.

LAYOUT-COLTAB_FIELDNAME = 'TCOLOR'.

LAYOUT-INFO_FIELDNAME = 'COLOR_LINE'.

PERFORM BUILD_FIELD_CATALOG.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FIELDCAT

TABLES

T_OUTTAB = IMARA.

ENDFORM. "write_report

FORM BUILD_FIELD_CATALOG.

DATA: FC_TMP TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

CLEAR: FIELDCAT. REFRESH: FIELDCAT.

CLEAR: FC_TMP.

FC_TMP-REPTEXT_DDIC = 'Status'.

FC_TMP-FIELDNAME = 'LIGHT'.

FC_TMP-TABNAME = 'IMARA'.

FC_TMP-OUTPUTLEN = '4'.

FC_TMP-ICON = 'X'.

APPEND FC_TMP TO FIELDCAT.

CLEAR: FC_TMP.

FC_TMP-REPTEXT_DDIC = 'Material Number'.

FC_TMP-FIELDNAME = 'MATNR'.

FC_TMP-TABNAME = 'IMARA'.

FC_TMP-OUTPUTLEN = '18'.

APPEND FC_TMP TO FIELDCAT.

CLEAR: FC_TMP.

FC_TMP-REPTEXT_DDIC = 'Material Type'.

FC_TMP-FIELDNAME = 'MTART'.

FC_TMP-TABNAME = 'IMARA'.

FC_TMP-OUTPUTLEN = '10'.

APPEND FC_TMP TO FIELDCAT.

CLEAR: FC_TMP.

FC_TMP-REPTEXT_DDIC = 'Material'.

FC_TMP-FIELDNAME = 'MAKTX'.

FC_TMP-TABNAME = 'IMARA'.

FC_TMP-OUTPUTLEN = '40'.

APPEND FC_TMP TO FIELDCAT.

ENDFORM. "build_field_catalog

Regards,

Chandu.