SAP Program/ALV

ALV Cell Style, Cell Color 개별 지정

유부사모 2017. 3. 30. 13:45

* Internal table 


DATABEGIN OF gs_result_100.
        INCLUDE STRUCTURE sflight.
DATAstats(4),
      check,
      ziso     LIKE t002-laiso,
      zdrop(10type c,
      
      cinfo      TYPE lvc_emphsz,
      cellstyl   TYPE lvc_t_styl,
      cellscol   TYPE lvc_t_scol.
DATAEND   OF gs_result_100,
gt_result_100 LIKE TABLE OF gs_result_100.



* ALV Layout setting


      gs_layout_1-info_fname 'CINFO'.
      gs_layout_1-stylefname 'CELLSTYL'.
      gs_layout_1-ctab_fname 'CELLSCOL'.



* Logic


  DATAls_scol TYPE lvc_s_scol,
        lt_scol TYPE lvc_t_scol,
        lt_styl TYPE lvc_t_styl,
        ls_styl TYPE lvc_s_styl,
        lw_idx  TYPE sy-tabix.



  LOOP AT gt_result_100 INTO gs_result_100.
    lw_idx sy-tabix.
    CLEARlt_scolls_scol,
           lt_stylls_styl.

    IF gs_result_100-price > p_price.
      ls_scol-fname 'PRICE'.
      ls_scol-color-col 6.
      ls_scol-color-int 1.
      APPEND ls_scol TO lt_scol.
    ENDIF.

    IF gs_result_100-currency 'USD'.
      ls_styl-fieldname 'CURRENCY'.
      ls_styl-style cl_gui_alv_grid=>mc_style_enabled.

      APPEND ls_styl TO lt_styl.
    ELSE.
      ls_styl-fieldname 'CURRENCY'.
      ls_styl-style cl_gui_alv_grid=>mc_style_disabled.

      APPEND ls_styl TO lt_styl.
    ENDIF.

    INSERT LINES OF lt_styl INTO TABLE gs_result_100-cellstyl.
    INSERT LINES OF lt_scol INTO TABLE gs_result_100-cellscol.

    MODIFY gt_result_100 FROM gs_result_100
                         INDEX lw_idx
                         TRANSPORTING cellscol cellstyl.
  ENDLOOP.