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

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.

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

Similar Messages

  • How to reduce the font size of the title of grid ALV without using OOPS

    Hello
    i have a title which i have displayed in a grid layout using this code
    DATA: GRID_TITLE TYPE LVC_TITLE.
    GRID_TITLE = 'FACTORY OVERHEAD '
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
      I_GRID_TITLE                      = GRID_TITLE.
    Now i would like to reduce the font size of the text which is displayed "'FACTORY OVERHEAD '.
    how do i do that,i am new to abap.
    Thanks

    Hi,
    Set the font size to your requirement
    Go this below code.
    CLASS ZCL_GUI_ALV_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID.
      PUBLIC SECTION.
        METHODS TITLE_SIZE.
      PRIVATE SECTION.
    ENDCLASS.                   
    Then use the above method in the Implementation part as .
    CLASS ZCL_GUI_ALV_GRID IMPLEMENTATION.
      METHOD TITLE_size.
        ME->SET_TITLE_SIZE( EXPORTING SIZE = 1
                            EXCEPTIONS ERROR = 1  ).
      ENDMETHOD.
    ENDCLASS.
    Now when your reference variable should be
    Data :GRID type ref to ZCL_GUI_ALV_GRID.
    and Create the Object as
    CREATE OBJECT GRID
               EXPORTING I_PARENT = G_CUSTOM_CONTAINER1.
    Before Calling Set_table_for_ first_display, Call the created method
    CALL METHOD GRID->TITLE_SIZE.

  • Help needed Displaying ALV  Secondary list without using oops concept

    Hi Experts
    Help needed Displaying ALV  Secondary list without using oops concept.
    its urgent
    regds
    rajasekhar

    hi chk this code
    ******************TABLES DECLARATION*****************
    TABLES : VBAP,MARA.
    *****************TYPE POOLS**************************
    TYPE-POOLS : SLIS.
    ****************INTERNAL TABLES**********************
    DATA : BEGIN OF IT_VBAP OCCURS 0,
    VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
    POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
    MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
    END OF IT_VBAP.
    ****************TEMPORARY VARIABLES******************
    DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
    DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE
    *****************FIELD CATALOG***********************
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    ****************LAYOUT*******************************
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    ***************VARIANT*******************************
    DATA : G_VARIANT LIKE DISVARIANT.
    ****************SAVE*********************************
    DATA : G_SAVE(1) TYPE C.
    *****************EVENTS******************************
    DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
           G_EVENTS TYPE SLIS_T_EVENT.
    ******************PF STATUS**************************
    DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.
    ******************USER COMMAND************************
    DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
           R_UCOMM LIKE SY-UCOMM.
    ****************SELECTION SCREEN************************
    SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
    ***************AT SELECTION SCREEN*********************
    AT SELECTION-SCREEN.
      PERFORM VALIDATE.
    **************START-OF-SELECTION**************************
    START-OF-SELECTION.
      PERFORM GET_DETAILS.
      PERFORM FIELDCAT.
      PERFORM LAYOUT.
      PERFORM VARIANT.
      PERFORM SAVE.
      PERFORM EVENTS.
      PERFORM ALV_DISPLAY.
    *********************FORMS*******************************************
    *&      Form  validate
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE .
      SELECT SINGLE VBELN
                    FROM VBAP
                    INTO V_VBELN
                    WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'enter valid vbeln'.
      ENDIF.
    ENDFORM.                    " validate
    *&      Form  get_details
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DETAILS .
      SELECT VBELN
             POSNR
             MATNR
             FROM VBAP
             INTO TABLE IT_VBAP
             WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no details found'.
      ENDIF.
    ENDFORM.                    " get_details
    *&      Form  fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT .
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'VBELN'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'POSNR'.
      WA_FIELDCAT-OUTPUTLEN = 6.
      WA_FIELDCAT-SELTEXT_L = 'ITEM'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-OUTPUTLEN = 18.
      WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    " fieldcat
    *&      Form  LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT .
      WA_LAYOUT-ZEBRA = 'X'.
    ENDFORM.                    " LAYOUT
    *&      Form  VARIANT
          text
    -->  p1        text
    <--  p2        text
    FORM VARIANT .
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = SY-REPID.
    ENDFORM.                    " VARIANT
    *&      Form  SAVE
          text
    -->  p1        text
    <--  p2        text
    FORM SAVE .
      CLEAR G_SAVE.
      G_SAVE = 'A'.
    ENDFORM.                    " SAVE
    *&      Form  EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM EVENTS .
      CLEAR XS_EVENTS.
      XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENTS-FORM = 'TOP_OF_PAGE'.
      APPEND XS_EVENTS TO G_EVENTS.
    ENDFORM.                    " EVENTS
    *&      Form  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      WRITE :/ ' INTELLI GROUP'.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  ALV_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM ALV_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = SY-REPID
         I_CALLBACK_PF_STATUS_SET       = PF_STATUS
         I_CALLBACK_USER_COMMAND        = USER_COMMAND
      I_STRUCTURE_NAME               =
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
         I_SAVE                         = G_SAVE
         IS_VARIANT                     = G_VARIANT
         IT_EVENTS                      = G_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
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB                       = IT_VBAP
       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.                    " ALV_DISPLAY
    *&      Form  SET_PF_STATUS
          text
    FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'Z50651_PFSTATUS' EXCLUDING EXTAB.
    ENDFORM.                    "SET_PF_STATUS
    *&      Form  SET_USER_COMMAND
          text
    FORM SET_USER_COMMAND USING R_UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN 'DC'.
          READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
          IF SY-SUBRC = 0.
            SELECT SINGLE MTART
                          FROM MARA
                          INTO V_MTART
                          WHERE MATNR = IT_VBAP-MATNR.
            IF SY-SUBRC <> 0.
       MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
            ELSE.
              WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
              WRITE :/ 'MATERIAL TYPE :' , V_MTART.
            ENDIF.
          ENDIF.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE TO SCREEN 0.
        WHEN 'CLOSE'.
          CALL TRANSACTION 'SE38'.
      ENDCASE.
    REPORT  Z_ALV_INTERACTIVE  MESSAGE-ID ZMSG_50651
                                    LINE-SIZE 100
                                    LINE-COUNT 60
                                    NO STANDARD PAGE HEADING.
    ******************TABLES DECLARATION*****************
    TABLES : VBAP,MARA.
    *****************TYPE POOLS**************************
    TYPE-POOLS : SLIS.
    ****************INTERNAL TABLES**********************
    DATA : BEGIN OF IT_VBAP OCCURS 0,
    VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
    POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
    MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
    END OF IT_VBAP.
    ****************TEMPORARY VARIABLES******************
    DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
    DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE
    *****************FIELD CATALOG***********************
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    ****************LAYOUT*******************************
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    ***************VARIANT*******************************
    DATA : G_VARIANT LIKE DISVARIANT.
    ****************SAVE*********************************
    DATA : G_SAVE(1) TYPE C.
    *****************EVENTS******************************
    DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
           G_EVENTS TYPE SLIS_T_EVENT.
    ******************PF STATUS**************************
    DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.
    ******************USER COMMAND************************
    DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
           R_UCOMM LIKE SY-UCOMM.
    ****************SELECTION SCREEN************************
    SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
    ***************AT SELECTION SCREEN*********************
    AT SELECTION-SCREEN.
      PERFORM VALIDATE.
    **************START-OF-SELECTION**************************
    START-OF-SELECTION.
      PERFORM GET_DETAILS.
      PERFORM FIELDCAT.
      PERFORM LAYOUT.
      PERFORM VARIANT.
      PERFORM SAVE.
      PERFORM EVENTS.
      PERFORM ALV_DISPLAY.
    *********************FORMS*******************************************
    *&      Form  validate
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE .
      SELECT SINGLE VBELN
                    FROM VBAP
                    INTO V_VBELN
                    WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'enter valid vbeln'.
      ENDIF.
    ENDFORM.                    " validate
    *&      Form  get_details
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DETAILS .
      SELECT VBELN
             POSNR
             MATNR
             FROM VBAP
             INTO TABLE IT_VBAP
             WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no details found'.
      ENDIF.
    ENDFORM.                    " get_details
    *&      Form  fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT .
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'VBELN'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'POSNR'.
      WA_FIELDCAT-OUTPUTLEN = 6.
      WA_FIELDCAT-SELTEXT_L = 'ITEM'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-OUTPUTLEN = 18.
      WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    " fieldcat
    *&      Form  LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT .
      WA_LAYOUT-ZEBRA = 'X'.
    ENDFORM.                    " LAYOUT
    *&      Form  VARIANT
          text
    -->  p1        text
    <--  p2        text
    FORM VARIANT .
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = SY-REPID.
    ENDFORM.                    " VARIANT
    *&      Form  SAVE
          text
    -->  p1        text
    <--  p2        text
    FORM SAVE .
      CLEAR G_SAVE.
      G_SAVE = 'A'.
    ENDFORM.                    " SAVE
    *&      Form  EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM EVENTS .
      CLEAR XS_EVENTS.
      XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENTS-FORM = 'TOP_OF_PAGE'.
      APPEND XS_EVENTS TO G_EVENTS.
    ENDFORM.                    " EVENTS
    *&      Form  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      WRITE :/ ' INTELLI GROUP'.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  ALV_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM ALV_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET         = PF_STATUS
         I_CALLBACK_USER_COMMAND        = USER_COMMAND
      I_STRUCTURE_NAME               =
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
         I_SAVE                         = G_SAVE
        IS_VARIANT                      = G_VARIANT
         IT_EVENTS                      = G_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
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB                       = IT_VBAP
       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.                    " ALV_DISPLAY
    *&      Form  SET_PF_STATUS
          text
    FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'STANDARD' EXCLUDING EXTAB.
    ENDFORM.                    "SET_PF_STATUS
    *&      Form  SET_USER_COMMAND
          text
    FORM SET_USER_COMMAND USING R_UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN 'DC'.
          READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
          IF SY-SUBRC = 0.
            SELECT SINGLE MTART
                          FROM MARA
                          INTO V_MTART
                          WHERE MATNR = IT_VBAP-MATNR.
            IF SY-SUBRC <> 0.
       MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
            ELSE.
              WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
              WRITE :/ 'MATERIAL TYPE :' , V_MTART.
      SUBMIT SLIS_DUMMY WITH P_MATNR EQ IT_VBAP-MATNR
                        WITH P_MTART EQ V_MTART.
            ENDIF.
          ENDIF.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE TO SCREEN 0.
        WHEN 'CLOSE'.
          CALL TRANSACTION 'SE38'.
      ENDCASE.
    plz reward if useful

  • Alv report using oops ABAP

    hi friendz,
    can any one of u give an example, how to build alv report using oops abap ?
    thanks in advance.
    points for sure
    regards,
    Vijaya

    Hi Vijaya,
    I hope the following code upto your requirement.
    *& Report  ZMAT_ALV_GRID                                               *
    REPORT  ZCL_CLASS1.
    TYPES: BEGIN OF T_MARA,
             MATNR TYPE MARA-MATNR,
             MAKTX TYPE MAKT-MAKTX,
             WERKS TYPE MARD-WERKS,
             LGORT TYPE MARD-LGORT,
             LABST TYPE MARD-LABST,
           END OF T_MARA.
    *DATA: IT_MARA TYPE STANDARD TABLE OF T_MARA.
    DATA: IT_MARA TYPE T_MARA OCCURS 0.
    DATA: O_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          O_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: X_FLDCAT TYPE LVC_S_FCAT.
    DATA: IT_FLDCAT TYPE LVC_T_FCAT.
    DATA: I_LAYOUT TYPE LVC_S_LAYO.
    DATA: X_SORT TYPE LVC_S_SORT.
    DATA: I_SORT TYPE LVC_T_SORT.
    TABLES: MARA.
    SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
    PARAMETERS: P_CHK AS CHECKBOX.
    START-OF-SELECTION.
      PERFORM GET_DATA.
      PERFORM GENERATE_FLDCAT.
      PERFORM GENERATE_LAYOUT.
      PERFORM DO_SORT.
      SET SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
       SET PF-STATUS 'MAIN'.
    SET TITLEBAR 'xxx'.
       PERFORM BUILD_ALV.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE PROGRAM.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  BUILD_ALV
          text
    FORM BUILD_ALV .
    CREATE OBJECT O_CONT
       EXPORTING
          CONTAINER_NAME              = 'MAT_CONTAINER'
       EXCEPTIONS
         CNTL_ERROR                  = 1
         CNTL_SYSTEM_ERROR           = 2
         CREATE_ERROR                = 3
         LIFETIME_ERROR              = 4
         LIFETIME_DYNPRO_DYNPRO_LINK = 5
         others                      = 6.
         CREATE OBJECT O_GRID
           EXPORTING
              I_PARENT          = O_CONT
           EXCEPTIONS
             ERROR_CNTL_CREATE = 1
             ERROR_CNTL_INIT   = 2
             ERROR_CNTL_LINK   = 3
             ERROR_DP_CREATE   = 4
             others            = 5.
    CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY
       EXPORTING
       I_BUFFER_ACTIVE               =
       I_BYPASSING_BUFFER            =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              =
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = ' '
         IS_LAYOUT                     = I_LAYOUT
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
       IT_TOOLBAR_EXCLUDING          =
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
       CHANGING
         IT_OUTTAB                     = IT_MARA
         IT_FIELDCATALOG               = IT_FLDCAT[]
         IT_SORT                       = I_SORT
       IT_FILTER                     =
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION = 1
        PROGRAM_ERROR                 = 2
        TOO_MANY_LINES                = 3
        others                        = 4.
    ENDFORM.                    " BUILD_ALV
    *&      Form  GET_DATA
          text
    FORM GET_DATA .
    SELECT A~MATNR
          B~MAKTX
          C~WERKS
          C~LGORT
          C~LABST
    INTO TABLE IT_MARA
    FROM MARA AS A
    INNER JOIN MAKT AS B
    ON BMATNR = AMATNR
    INNER JOIN MARD AS C
    ON CMATNR = AMATNR
    WHERE A~MATNR IN S_MATNR
    AND   B~SPRAS = SY-LANGU.
    ENDFORM.                    " GET_DATA
    *&      Form  GENERATE_FLDCAT
          text
    FORM GENERATE_FLDCAT .
    *CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
      I_BUFFER_ACTIVE              =
       I_STRUCTURE_NAME             = 'ZSMARA'
      I_CLIENT_NEVER_DISPLAY       = 'X'
      I_BYPASSING_BUFFER           =
      I_INTERNAL_TABNAME           = ' '
    CHANGING
       CT_FIELDCAT                  = IT_FLDCAT
    EXCEPTIONS
      INCONSISTENT_INTERFACE       = 1
      PROGRAM_ERROR                = 2
      OTHERS                       = 3.
    X_FLDCAT-COL_POS = 1.
    X_FLDCAT-FIELDNAME = 'MATNR'.
    X_FLDCAT-OUTPUTLEN = '18'.
    X_FLDCAT-REPTEXT = 'Material No'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 2.
    X_FLDCAT-FIELDNAME = 'MAKTX'.
    X_FLDCAT-OUTPUTLEN = '48'.
    X_FLDCAT-REPTEXT = 'Material Desc'.
    X_FLDCAT-TOOLTIP = 'Material Desc'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 3.
    X_FLDCAT-FIELDNAME = 'WERKS'.
    X_FLDCAT-OUTPUTLEN = '5'.
    X_FLDCAT-REPTEXT = 'Plant'.
    X_FLDCAT-TOOLTIP = 'Plant'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 4.
    X_FLDCAT-FIELDNAME = 'LGORT'.
    X_FLDCAT-OUTPUTLEN = '5'.
    X_FLDCAT-REPTEXT = 'S.Loc'.
    X_FLDCAT-TOOLTIP = 'S.Loc'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 5.
    X_FLDCAT-FIELDNAME = 'LABST'.
    X_FLDCAT-OUTPUTLEN = '20'.
    X_FLDCAT-REPTEXT = 'Quantity'.
    X_FLDCAT-TOOLTIP = 'Quantity'.
    X_FLDCAT-DO_SUM = 'X'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    ENDFORM.                    " GENERATE_FLDCAT
    *&      Form  GENERATE_LAYOUT
          text
    FORM GENERATE_LAYOUT .
      I_LAYOUT-ZEBRA = 'X'.
      I_LAYOUT-FRONTEND = 'X'.
      I_LAYOUT-GRID_TITLE = 'ALV GRID USING OOPS'.
      I_LAYOUT-NUMC_TOTAL = 'X'.
    ENDFORM.                    " GENERATE_LAYOUT
    *&      Form  DO_SORT
          text
    FORM DO_SORT .
    X_SORT-FIELDNAME = 'MATNR'.
    X_SORT-UP = 'X'.
    X_SORT-SUBTOT = 'X'.
    IF P_CHK = 'X'.
       X_SORT-EXPA = SPACE.
    ELSE.
       X_SORT-EXPA = 'X'.
    ENDIF.
    APPEND X_SORT TO I_SORT.
    ENDFORM.                    " DO_SORT
    inorder to execute this code perfectly, do the following things.
    1. Create a Graphical Screen 100.
    2. Place a Custom Control on that screen and give name as MAT_CONTAINER.
    3. activate the screen.
    and execute the program.
      if this suits requirement award points.
    satish

  • Traffic Signals in ALV

    Hi ,
      Can any one please tell me how to implement traffic signals in ALV.
    Regards
    Arun

    Traffic Signals - Nice term.
    This is the program, you should be looking for :
    <b>BCALV_GRID_04</b>
    In brief, this is what the program does,
    a) Have an additional field in the internal table
    b) Mark it as the exception field in the layout
    c) This additional field should have values, 1, 2 or 3
    Regards,
    Subramanian V.

  • Alv output using oops for numc field

    Hi,
    iam displaying alv output using oops.
    one of output field data type numc and length 4.
    in field catalog  i set lzero = 'X'.
    now data is coming with leading zero. if data contains 0000  i want blank value in report output.
    i tried with no_zero = 'X'  blank values are display but leading zero are not display for other values.
    how can i change the code.
    Regards,
    Suresh.

    You will have to use data type char in your case.
    regards,
    Advait

  • ALV report using OOPS concept.

    Hi,
    Please help me in writing ALV report using OOPS concept as i have never used this concept before.Please post a clear picture for this.
    Thanks in advance.

    Hi
    Refer this code:
    REPORT zcls_alv_oops MESSAGE-ID z1.
    TABLES : mara.
    Types Declaration..\
    TYPES :
    BEGIN OF t_mara,
    matnr TYPE matnr,
    mtart TYPE mtart,
    maktx TYPE maktx,
    END OF t_mara,
    BEGIN OF t_marc,
    matnr TYPE matnr,
    werks TYPE werks_d,
    mtart TYPE mtart,
    maktx TYPE maktx,
    END OF t_marc.
    Internal Tables Declaration..\
    DATA :
    i_mara TYPE TABLE OF t_mara,
    i_marc TYPE TABLE OF t_marc,
    i_fcat1 TYPE lvc_t_fcat,
    i_fcat2 TYPE lvc_t_fcat.
    Constants Declaration..\
    CONSTANTS :
    c_cont1 TYPE scrfname VALUE 'CONT1',
    c_cont2 TYPE scrfname VALUE 'CONT2'.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
    SELECT-OPTIONS:
    s_matnr FOR mara-matnr NO INTERVALS.
    SELECTION-SCREEN SKIP 1.
    PARAMETERS :
    p_hotspt RADIOBUTTON GROUP r1 DEFAULT 'X',
    p_bttn RADIOBUTTON GROUP r1.
    SELECTION-SCREEN END OF BLOCK b1.
    \* Class forward referncing.
    CLASS lcl_rcvr_class DEFINITION DEFERRED.
    \* Pointers Declaration..
    DATA :
    lp_rcvr TYPE REF TO lcl_rcvr_class,
    lp_cont1 TYPE REF TO cl_gui_custom_container,
    lp_cont2 TYPE REF TO cl_gui_custom_container,
    lp_grid1 TYPE REF TO cl_gui_alv_grid,
    lp_grid2 TYPE REF TO cl_gui_alv_grid.
    \* Local Class Definiton.
    CLASS lcl_rcvr_class DEFINITION.
    PUBLIC SECTION.
    METHODS :
    hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
    IMPORTING e_row_id e_column_id es_row_no,
    handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
    IMPORTING e_row e_column.
    ENDCLASS.
    \* Local Class Implementation.
    CLASS lcl_rcvr_class IMPLEMENTATION.
    METHOD hotspot_click.
    DATA :
    wa_mara TYPE t_mara,
    wa_marc TYPE t_marc.
    DATA :
    l_index TYPE sy-tabix.
    READ TABLE i_mara INTO wa_mara INDEX e_row_id-index.
    IF sy-subrc EQ 0.
    REFRESH i_marc.
    SELECT matnr
    werks
    INTO TABLE i_marc
    FROM marc
    WHERE matnr EQ wa_mara-matnr.
    IF sy-subrc EQ 0.
    LOOP AT i_marc INTO wa_marc.
    l_index = sy-tabix.
    wa_marc-mtart = wa_mara-mtart.
    wa_marc-maktx = wa_mara-maktx.
    MODIFY i_marc FROM wa_marc INDEX l_index
    TRANSPORTING mtart maktx.
    ENDLOOP.
    CALL SCREEN 200.
    ELSE.
    MESSAGE e121 WITH text-005 wa_mara-matnr.
    ENDIF.
    ENDIF.
    ENDMETHOD.
    METHOD handle_double_click.
    DATA :
    wa_mara TYPE t_mara,
    wa_marc TYPE t_marc.
    DATA :
    l_index TYPE sy-tabix.
    READ TABLE i_mara INTO wa_mara INDEX e_row-index.
    IF sy-subrc EQ 0.
    REFRESH i_marc.
    SELECT matnr
    werks
    INTO TABLE i_marc
    FROM marc
    WHERE matnr EQ wa_mara-matnr.
    IF sy-subrc EQ 0.
    LOOP AT i_marc INTO wa_marc.
    l_index = sy-tabix.
    wa_marc-mtart = wa_mara-mtart.
    wa_marc-maktx = wa_mara-maktx.
    MODIFY i_marc FROM wa_marc INDEX l_index
    TRANSPORTING mtart maktx.
    ENDLOOP.
    CALL SCREEN 200.
    ELSE.
    MESSAGE e121 WITH text-005 wa_mara-matnr.
    ENDIF.
    ENDIF.
    ENDMETHOD.
    ENDCLASS.
    \* Start of Selection
    START-OF-SELECTION.
    \* Extract the Material Master data for the Input Material.
    SELECT a~matnr
    a~mtart
    b~maktx
    INTO TABLE i_mara
    FROM mara AS a
    INNER JOIN makt AS b
    ON a~matnr EQ b~matnr
    WHERE a~matnr IN s_matnr
    AND b~spras EQ sy-langu.
    END-OF-SELECTION.
    IF NOT i_mara\[\] IS INITIAL.
    \* Call Screen to display the Material Master data.
    CALL SCREEN 100.
    ELSE.
    MESSAGE s121 WITH text-006.
    ENDIF.
    \*& Module DISP_GRID OUTPUT
    \* text
    MODULE disp_grid OUTPUT.
    \* Build the Field catelog for Material Master data.
    PERFORM build_fcat.
    \* Display the Material Master data using ALV.
    PERFORM disp_alv.
    ENDMODULE. " DISP_GRID OUTPUT
    \*& Module USER_COMMAND_0100 INPUT
    \* text
    MODULE user_command_0100 INPUT.
    \*when exit or cancel is clicked program has to come out
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    LEAVE PROGRAM.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_0100 INPUT
    \*& Form build_fcat
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM build_fcat.
    DATA : ws_fcat TYPE lvc_s_fcat.
    ws_fcat-fieldname = 'MATNR'.
    ws_fcat-scrtext_m = text-001.
    ws_fcat-tabname = 'I_MARA'.
    IF p_hotspt EQ 'X'.
    ws_fcat-hotspot = 'X'.
    ENDIF.
    APPEND ws_fcat TO i_fcat1.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MTART'.
    ws_fcat-scrtext_m = text-002.
    ws_fcat-tabname = 'I_MARA'.
    APPEND ws_fcat TO i_fcat1.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MAKTX'.
    ws_fcat-scrtext_m = text-003.
    ws_fcat-tabname = 'I_MARA'.
    APPEND ws_fcat TO i_fcat1.
    CLEAR ws_fcat.
    ENDFORM. " build_fcat
    \*& Form disp_alv
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM disp_alv.
    IF lp_cont1 IS INITIAL.
    \* Create the Container Object of Material Master.
    CREATE OBJECT lp_cont1
    EXPORTING
    container_name = c_cont1
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6 .
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Create the Object for Grid of Material Master.
    CREATE OBJECT lp_grid1
    EXPORTING
    i_parent = lp_cont1
    EXCEPTIONS
    error_cntl_create = 1
    error_cntl_init = 2
    error_cntl_link = 3
    error_dp_create = 4
    others = 5.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Dipslay Material Master data by calling method.
    CALL METHOD lp_grid1->set_table_for_first_display
    CHANGING
    it_outtab = i_mara
    it_fieldcatalog = i_fcat1
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Set Handler for the Hot Spot Event.
    CREATE OBJECT lp_rcvr.
    IF p_hotspt EQ 'X'.
    SET HANDLER lp_rcvr->hotspot_click FOR lp_grid1.
    ELSE.
    SET HANDLER lp_rcvr->handle_double_click FOR lp_grid1.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDFORM. " disp_alv
    \*& Module STATUS_0100 OUTPUT
    \* text
    MODULE status_0100 OUTPUT.
    SET PF-STATUS 'MAIN_STAT'.
    SET TITLEBAR 'T_100'.
    ENDMODULE. " STATUS_0100 OUTPUT
    \*& Module STATUS_0200 OUTPUT
    \* text
    MODULE status_0200 OUTPUT.
    SET PF-STATUS 'PLANT_STAT'.
    SET TITLEBAR 'T_200'.
    ENDMODULE. " STATUS_0200 OUTPUT
    \*& Module DISP_GRID_plant OUTPUT
    \* text
    MODULE disp_grid_plant OUTPUT.
    \* Build the Field catelog for Material Plant data.
    PERFORM build_fcat_plant.
    \* Display the Material Master Plant data using ALV.
    PERFORM disp_alv_plant.
    ENDMODULE. " DISP_GRID_plant OUTPUT
    \*& Module USER_COMMAND_0200 INPUT
    \* text
    MODULE user_command_0200 INPUT.
    \*when exit or cancel is clicked program has to come out
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    LEAVE PROGRAM.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_0200 INPUT
    \*& Form build_fcat_plant
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM build_fcat_plant.
    DATA : ws_fcat TYPE lvc_s_fcat.
    ws_fcat-fieldname = 'MATNR'.
    ws_fcat-scrtext_m = text-001.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'WERKS'.
    ws_fcat-scrtext_m = text-004.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MTART'.
    ws_fcat-scrtext_m = text-002.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MAKTX'.
    ws_fcat-scrtext_m = text-003.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ENDFORM. " build_fcat_plant
    \*& Form disp_alv_plant
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM disp_alv_plant.
    IF lp_cont2 IS INITIAL.
    \* Create the Container Object of Material Plant data.
    CREATE OBJECT lp_cont2
    EXPORTING
    container_name = c_cont2
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Create the Object for Grid of Material Plant data.
    CREATE OBJECT lp_grid2
    EXPORTING
    i_parent = lp_cont2
    EXCEPTIONS
    error_cntl_create = 1
    error_cntl_init = 2
    error_cntl_link = 3
    error_dp_create = 4
    others = 5.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Dipslay Material Plant data by calling method.
    CALL METHOD lp_grid2->set_table_for_first_display
    CHANGING
    it_outtab = i_marc
    it_fieldcatalog = i_fcat2
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    ENDIF.
    ENDIF.
    ELSE.
    \* Call method 'REFRESH_TABLE_DISPLAY' to refresh the grid data.
    CALL METHOD lp_grid2->refresh_table_display.
    ENDIF.
    ENDFORM. " disp_alv_plant
    Thanks
    Vasudha

  • Attaining Hot spot in ALV Tree Using OOPS concept

    Hi All,
    In our requirement we are displaying the data in ALV Tree Using OOPS.
    We need to achieve hot spot on one of the header field.
    I am using  Class 'CL_GUI_ALV_TREE'
    Ex:
    CreditAccnt/ Company codes            DSO    DDSO
    26                                                   15        15
       8000                                              5          5
       8545                                             10        10
    In the above example for every credit accnt in header we r displaying the values ( DSO ,DDSO) for all company codes.
    Now we require hot spot on Credit Accnt 26. Such that when user clicks on the credit accnt it should navigate to another transaction.
    NOTE: we havent build any field catalogue for field CreditAccnt/ Company codes .

    Hi,
    You can refer to the tutorial -
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/abap/an%20easy%20reference%20for%20alv%20grid%20control.pdf
    Or try using the code below-
    CLASS lcl_event_receiver DEFINITION
    CLASS lcl_event_receiver DEFINITION.
    PUBLIC SECTION.
    CLASS-METHODS:
    Hot Spot Click
    handle_hotspot
    FOR EVENT hotspot_click OF cl_gui_alv_grid
    IMPORTING e_row_id
    e_column_id
    es_row_no,
    ENDCLASS.
    Implementation
    *& Method handle_hotspot
    This method is called when the user clicks on a hotspot to drill down.
    The following types are exported from the ALV
    LVC_S_ROW
    LVC_S_COL
    LVC_S_ROID
    METHOD handle_hotspot.
    The hotspot processing coded in the form below.
    PERFORM f9802_handle_hotspot USING e_row_id
    e_column_id
    es_row_no.
    ENDMETHOD.
    *& Form f9802_handle_hotspot
    This form is called when the user clicks on a hotspot on the ALV grid
    The parameters are of type
    -->P_E_ROW text
    -->P_E_COL text
    -->P_E_ROID text
    FORM f9802_handle_hotspot USING p_row
    p_col
    p_roid.
    DATA: lw_output LIKE LINE OF i_output.
    READ TABLE i_output INDEX p_row INTO lw_output.
    SET PARAMETER ID 'MAT' FIELD lw_output-matnr.
    CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.
    ENDFORM. " f9802_handle_hotspot
    FORM f9300_modify_field_cat TABLES p_fieldcat STRUCTURE lvc_s_fcat.
    Field-symbols: <lfs_fieldcat> TYPE lvc_s_fcat.
    LOOP AT p_fieldcat ASSIGNING <lfs_fieldcat>.
    CASE <lfs_fieldcat>-fieldname.
    WHEN 'MATNR'.
    <lfs_fieldcat>-hotspot = c_x.
    <lfs_fieldcat>-key = c_x.
    WHEN OTHERS.
    ENDCASE.
    ENDLOOP.
    ENDFORM.
    In PBO,
    module STATUS_9001 output.
    Set handlers for events
    SET HANDLER o_eventreceiver->handle_hotspot FOR o_Alvgrid.
    ENDMODULE.
    Hope this helps

  • How to delimit leading zero in vendor number in OO ABAP ALV without using conversion routine

    Hi,
    How to delimit leading zero in OO ABAP ALV without using conversion routine, because I have many fields like vendor, customer, material number etc..
    How to address this leading zero.
    I appreciate your quick response.
    Regards,
    Nalini S.

    Hi Nalini,
    Delimiting leading zeros in fields has to be done via conversion routines, as suggested by Vadamalai you need to pass on the conversion routine name in you field catalog variable.
    Now as to which object oriented approach are you using to have your table contents display in ALV as it matters  -
    Using FACTORY method of CL_SALV_TABLE class, or
    Using SET_TABLE_FOR_FIRST_DISPLAY method of CL_GUI_ALV_GRID class.
    Using FACTORY method of CL_SALV_TABLE will do your own work, no need to apply any conversion routines or set long/medium/short text for columns as we do in field catalogs!
    Cheers,
    Varun

  • Capture IP without using X-Forwarded For

                      Hello Friends,
    We are running a web-application that has a login on the very first page.
    We want to capture the real IP addresses of all the customers that visit our application.
    We have Cisco layer 3 Load balancer configured in a shared mode with Natting.
    We are running IBM http server over Apache. 
    We proposed using "X-Forwarded For" header to capture client IP but were not allowed due to known vulneabilities associated with X-Forwarded for.
    We want to capture client IPs for "http" and "https" without using "X-Fwd for".
    Can someone kindly suggest if there is any alternate to it?
    If yes then how to implement it?

    Hi Vivek, adding X forwarded method.to load balance policy. So that source ip address is added to HTTP header, is the only method. Unless the application itself does not request source ip add in the header. Which can be passed through the load balancer.
    Sent from Cisco Technical Support Android App

  • HT3986 I have a pc that is one year old and the hard drive is crashing we use it only for quick books to run our small business I would like to buy amac and install the OS  forom the pc to the apple product i will not use the pc after can i use the OS off

    I have a pc that is one year old and the hard drive is crashing we use it only for quick books to run our small business I would like to buy a macmini and install the OS  from the pc to the apple product i will not use the pc after, can i use the OS off the pc or do I have to purchase another?

    I think you can get Windows 7 for around $99. Install the 64bit version as the 32bit version will not be able to use all your new computer's ram if you have more than about 3.5gb.
    Back up your quick books data now before the old hard drive dies. You can copy your data over to your new installation of Windows and quick books.
    By the way, there is quick books for Mac http://quickbooks.intuit.com/mac/?sc=BNR-000-COR-quickbooks&priorityCode=4902000 000&cid=ppc_google_QB-Intuit-Core-Brand-Mac_quick-books-for-mac_exact&site=&ad_i d=9347918288&raw_keyword=quick%20books%20for%20mac
    So you may not need to install Windows at all.

  • I bought an ipod in 2006 and used it only for a few days, and i lost it when it fell two times from my hand and it wasn`t working, help me regarding this.

    i bought an ipod in 2006 and used it only for a few days, and i lost it when it fell two times from my hand and it wasn`t working, help me regarding this.
    REGARDS
    RISHABH AULIYA

    Apple - Support - iPod - Repair pricing - http://www.apple.com/support/ipod/service/prices/
    ipod repair options - https://discussions.apple.com/thread/3900047 and https://discussions.apple.com/message/18867033
    Service Answer Center - iPod - http://support.apple.com/kb/index?page=servicefaq&geo=US&product=ipod  <-- enter correct country once on page.

  • How to  Use page parameter for 2 grids

    Hi All,
    I have 2 grids for 2 different DB's in a report.In this page view have business dim, user able to choose the
    business.So i'm using 2 prompts for 2 grids in business dim at page view.but user wants only once he gave the
    input.How to pass one grid page parameters to another grid?
    Plzzzz give any suggestions on this................
    Thanks

    Instead of using prompts and the page, you can put the selectable dimension onto the POV of both grids and set it to current user pov on both grids.
    This way it will work, but the drawback is that you cannot make user select multiple members for that dimension, which is possible with prompts.
    hope this helps
    Bulent

  • Disbable button on alv report using oops

    Hi all,
    I have a button to toll bar of alv grid using oops
    based on that when the user clicks on that some action is performed and list is displayed again
    now when the list is diaplyed i need the button that i added to be disabled so that the user cannot click it agin
    i have everything i don't know how to disable the button.
    USING THIS STATMENT  move 'X' to ls_toolbar-disabled WE CAN DISABLE BUT I DON'T WHERE TO PASS IT..
    LOCAL CLASSES: Definition
    *===============================================================
    class lcl_event_receiver: local class to
                            define and handle own functions.
    Definition:
    ~~~~~~~~~~~
    class lcl_event_receiver definition.
      public section.
        methods:
        handle_toolbar
            for event toolbar of cl_gui_alv_grid
                importing e_object e_interactive,
        handle_user_command
            for event user_command of cl_gui_alv_grid
                importing e_ucomm.
      private section.
    endclass.
    lcl_event_receiver (Definition)
    *===============================================================
    LOCAL CLASSES: Implementation
    *===============================================================
    class lcl_event_receiver (Implementation)
    class lcl_event_receiver implementation.
      method handle_toolbar.
    append a separator to normal toolbar
        clear ls_toolbar.
        move 3 to ls_toolbar-butn_type.
        append ls_toolbar to e_object->mt_toolbar.
    append an icon to show booking table
        clear ls_toolbar.
        move 'ADD' to ls_toolbar-function.
        move icon_employee to ls_toolbar-icon.
        move 'Show Bookings'(111) to ls_toolbar-quickinfo.
        move 'Add Material'(112) to ls_toolbar-text.
        move '' to ls_toolbar-disabled.
        append ls_toolbar to e_object->mt_toolbar.
      endmethod.
      method handle_user_command.
        case e_ucomm.
          when 'ADD'.
            call method g_grid->get_selected_rows
                     importing et_index_rows = lt_rows.
            call method cl_gui_cfw=>flush.
            if sy-subrc ne 0.
    add your handling, for example
             call function 'POPUP_TO_INFORM'
                  exporting
                       titel = g_repid
                       txt2  = sy-subrc
                       txt1  = 'Error in Flush'(500).
            else.
    *tHIS IS THE PART IAM HAVING PROBLEM WITH
    *class lcl_event_receiver implementation.
    method handle_toolbar.
    *clear : ls_toolbar.
    loop at e_object->mt_toolbar into ls_toolbar WHERE FUNCTION = 'ADD'.
    DELETE e_object->mt_toolbar FROM ls_toolbar.
    move ' ' to ls_toolbar-disabled.
    append ls_toolbar to e_object->mt_toolbar.
    endloop.
    *ENDMETHOD.
    *ENDCLASS.
    ***tHIS IS THE PART
      call method g_grid->refresh_table_display.
            endif.
        endcase.
      endmethod.
    Thanks in advance

    Hi
    hI ALL,
    MY QUESTION IS WHEN method handle_toolbaR WOULD BE TRIGERRED
    first time i have the button enabled and when i press the button its get disabled.This is what i need
    But iam trying to understand how this is working
    Let me know whether iam right or not
    when this piece of code would be triggered
    method handle_toolbar.
        clear ls_toolbar.
        move 3 to ls_toolbar-butn_type.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 'ADD' to ls_toolbar-function.
        move icon_employee to ls_toolbar-icon.
        move 'Show Bookings'(111) to ls_toolbar-quickinfo.
        move 'Add Material'(112) to ls_toolbar-text.
        move ' ' to ls_toolbar-disabled.
        append ls_toolbar to e_object->mt_toolbar.
        IF FLAG = 'X'.
        LOOP AT e_object->mt_toolbar INTO ls_toolbar.
       if ls_toolbar-function = 'ADD'.
       ls_toolbar-disabled = 'X'.
       MODIFY e_object->mt_toolbar FROM ls_toolbar.
       endif.
       ENDLOOP.
        ENDIF.
    1 ) would this be triggered
    when i call this  call method g_grid->refresh_table_display.
    2)or
    call method g_grid->set_toolbar_interactive
    This is my piece of code
    class lcl_event_receiver definition.
      public section.
        methods:
        handle_toolbar
            for event toolbar of cl_gui_alv_grid
                importing e_object e_interactive,
        handle_user_command
            for event user_command of cl_gui_alv_grid
                importing e_ucomm.
      private section.
    endclass.
    class lcl_event_receiver implementation.
      method handle_toolbar.
        clear ls_toolbar.
        move 3 to ls_toolbar-butn_type.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 'ADD' to ls_toolbar-function.
        move icon_employee to ls_toolbar-icon.
        move 'Show Bookings'(111) to ls_toolbar-quickinfo.
        move 'Add Material'(112) to ls_toolbar-text.
        move ' ' to ls_toolbar-disabled.
        append ls_toolbar to e_object->mt_toolbar.
        IF FLAG = 'X'.
        LOOP AT e_object->mt_toolbar INTO ls_toolbar.
       if ls_toolbar-function = 'ADD'.
       ls_toolbar-disabled = 'X'.
       MODIFY e_object->mt_toolbar FROM ls_toolbar.
       endif.
       ENDLOOP.
        ENDIF.
      endmethod.
      method handle_user_command.
        case e_ucomm.
          when 'ADD'.
            call method g_grid->get_selected_rows
                     importing et_index_rows = lt_rows.
            call method cl_gui_cfw=>flush.
            if sy-subrc ne 0.
            else.
        perform test.
      call method g_grid->refresh_table_display.
           endif.
        endcase.
      endmethod.                           "handle_user_command
    odule status_0100 output.
    SET PF-STATUS 'STATUS'.
      set pf-status 'MAIN100'.
      set titlebar 'HEADER_CHECK'.
    if g_custom_container is initial.
        create object g_custom_container
                 exporting container_name = g_container.
        create object g_grid
                   exporting i_parent = g_custom_container.
    call function 'LVC_FIELDCATALOG_MERGE'
    exporting
    i_structure_name = 'ZTEST'
    changing
    ct_fieldcat = fieldcat
    exceptions
    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.
    g_layout-sel_mode = 'A'.              " TO GET SELECTION BOX
    call method g_grid->set_table_for_first_display
    exporting
       I_BYPASSING_BUFFER            =
       I_BUFFER_ACTIVE               =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              =
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = 'X'
         is_layout                     = g_layout
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
        it_toolbar_excluding          = pt_exclude
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
      changing
        it_outtab                     =  i_zTEST
        it_fieldcatalog               = fieldcat
       IT_SORT                       =
       IT_FILTER                     =
      exceptions
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        others                        = 4
    create object event_receiver.
        set handler event_receiver->handle_user_command for g_grid.
        set handler event_receiver->handle_toolbar for g_grid.
      call method g_grid->set_toolbar_interactive.
      endif.                               "IF grid1 IS INITIAL
      call method cl_gui_control=>set_focus exporting control = g_grid.
    endmodule.                 " STATUS_0100  OUTPUT
    Thanks
    Suchitra

  • Problem in displaying data using ALV interactive using OOPS

    Hi friends,
    I have created one interactive report using oops..
      on my selection screen i have a select-option  TABNAME for DD02L table with no intervals option.
    ie : i enter table names in that field..
    for example i enter VBAP
                                   MARA,
                                   MARC.       etc
    when i execute i get a basic list which gives some details about the tables.
    now on my basic list when i double click on any row then ie : say if i click on 2nd row , in the back ground based on the index on which i have click iam reading that particular row from the table and from that using the table name iam displaying the all the fields of the table in the ist secondary list....
    Till now its working fine but once when i go back to the back to the basic list and when i click another row... here even if click another row its displaying the same fields of the table which was ist click.
    ie : say ist time i have clicked mara then later vbap.....But its displaying me the mara details instead it should display vbap details...
    I have used refresh_table_display method also.... But its not working fine...
    How can i correct it...
    Regards,
    Kumar.

    Hello Kumar
    I can only guess that you call the second screen (perhaps '0200') within the event handler method for event DOUBLE_CLICK. This is not really a good idea. Instead use a simple trick to overcome this refreshing problem:
    METHOD handle_double_click.
    " Save the row perhaps in a static attribute of your event handler method, e.g.
    .  lcl_eventhandler=>ms_row = e_row.  " ms_row defined as static attribute of event handler class
    " Trigger PAI with a defined ok-code:
      CALL METHOD cl_gui_cfw=>set_new_ok_code
        EXPORTING
         ok_code = 'DETAIL_LIST'.
    ENDMETHOD.
    This method call triggers PAI of your screen which otherwise does not occur after an event has been raised.
    MODULE user_command_0100 PAI.
      CASE gd_okcode.
        WHEN 'DETAIL_LIST'.
           perform DISPLAY_DETAIL_LIST.  " and call screen '0200'
        WHEN OTHERS.
      ENDCASE.
    ENDMODULE.
    The next time you make a double click a new row/index is filled into the static attribute. By triggering PAI (followed by PBO) you ensure a flushing (= refreshing) before the secondary list is displayed.
    Regards
      Uwe

Maybe you are looking for