메뉴 건너뛰기

SAP 한국 커뮤니티

REPORT Z17_23

가능 2025.09.22 01:32 조회 수 : 2

REPORT z17_23.

INCLUDE <icon>.

TYPES: BEGIN OF g_type_itab.
         INCLUDE STRUCTURE zemplist.
TYPES :  count   TYPE p LENGTH 3, " 자격증 개수 필드 추가
         t_color TYPE lvc_t_scol,
       END OF g_type_itab.

DATA gt_itab  TYPE TABLE OF g_type_itab.
DATA gs_itab  TYPE g_type_itab.
DATA gr_table TYPE REF TO cl_salv_table.
DATA gr_columns TYPE REF TO cl_salv_columns_table.
DATA gr_column  TYPE REF TO cl_salv_column_table.

SELECT a~empcd, a~depcd, a~pstion, a~ename, a~email, a~tel, b~empcd,
       COUNT( b~certid ) AS count
  FROM zemplist AS a
  LEFT OUTER JOIN zempcert AS b ON b~empcd EQ a~empcd
  GROUP BY a~empcd, a~depcd, a~pstion, a~ename, a~email, a~tel, b~empcd
  INTO CORRESPONDING FIELDS OF TABLE @gt_itab.

FIELD-SYMBOLS: <ls_outtab> TYPE g_type_itab.
DATA : lt_color TYPE lvc_t_scol,
       ls_color TYPE lvc_s_scol.

LOOP AT gt_itab ASSIGNING <ls_outtab>.
  CLEAR : ls_color, lt_color.
  IF <ls_outtab>-count >= 2.
    ls_color-fname     = 'COUNT'.
    ls_color-color-col = col_positive.
    ls_color-color-int = 0.
    ls_color-color-inv = 0.
    APPEND ls_color TO lt_color.
  ELSEIF <ls_outtab>-count = 1.
    ls_color-fname     = 'COUNT'.
    ls_color-color-col = col_normal.
    ls_color-color-int = 0.
    ls_color-color-inv = 0.
    APPEND ls_color TO lt_color.
  ELSEIF <ls_outtab>-count = 0.
    ls_color-fname     = 'COUNT'.
    ls_color-color-col = col_negative.
    ls_color-color-int = 0.
    ls_color-color-inv = 0.
    APPEND ls_color TO lt_color.
  ENDIF.

  <ls_outtab>-t_color = lt_color.
ENDLOOP.

cl_salv_table=>factory(
  IMPORTING
    r_salv_table = gr_table
  CHANGING
    t_table      = gt_itab ).

gr_columns = gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( 'COUNT' ).
gr_column->set_short_text( '자격증 개수' ).

gr_columns = gr_table->get_columns( ).
gr_columns->set_color_column( 'T_COLOR' ).

gr_table->display( ).