REPORT z15_23.
DATA : BEGIN OF gt_empcert OCCURS 0.
INCLUDE STRUCTURE zempcert.
DATA : count TYPE p LENGTH 3, " 자격증 개수 필드 추가
chk TYPE c,
cellbtn TYPE lvc_t_styl.
DATA : END OF gt_empcert.
DATA : BEGIN OF gt_empcert_cnt OCCURS 0,
empcd TYPE zempcert-empcd,
count TYPE p LENGTH 3. " 자격증 개수 필드 추가
DATA : END OF gt_empcert_cnt.
DATA : con1_ref TYPE REF TO cl_gui_custom_container.
DATA : g_grid TYPE REF TO cl_gui_alv_grid.
DATA : gs_variant TYPE disvariant.
DATA : gs_layout TYPE lvc_s_layo.
DATA : gt_toolbar TYPE ui_functions.
DATA : gt_sort TYPE lvc_t_sort.
DATA : gt_fieldcat TYPE lvc_t_fcat.
DATA : ok_code TYPE sy-ucomm.
TYPE-POOLS: icon.
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS : handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
METHODS : handle_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
METHODS : handle_button_click "5번 이벤트 메서드 정의
FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING es_col_id es_row_no.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
ls_toolbar-butn_type = 3.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
ls_toolbar-function = 'RESH'.
ls_toolbar-icon = icon_refresh.
ls_toolbar-quickinfo = 'Refresh'.
ls_toolbar-text = ' '.
ls_toolbar-disabled = ' '.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
METHOD handle_command.
DATA : l_scroll TYPE lvc_s_stbl.
CASE e_ucomm.
WHEN 'RESH'.
SELECT empcd, certid, cnum, COUNT( certid ) AS count
FROM zempcert
GROUP BY empcd, certid, cnum
INTO CORRESPONDING FIELDS OF TABLE @gt_empcert.
l_scroll-row = 'X'.
l_scroll-col = 'X'.
CALL METHOD g_grid->refresh_table_display
EXPORTING
i_soft_refresh = ''
is_stable = l_scroll.
ENDCASE.
ENDMETHOD. "handle_command
METHOD handle_button_click. "6번 이벤트 메서드 구현
CLEAR gt_empcert.
READ TABLE gt_empcert INDEX es_row_no-row_id INTO gt_empcert.
IF sy-subrc EQ 0.
MESSAGE gt_empcert-empcd TYPE 'I'.
ENDIF.
ENDMETHOD. "handle_button_click
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
PARAMETERS: p_vari LIKE disvariant-variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
gs_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = gs_variant
i_save = 'A'
IMPORTING
es_variant = gs_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
p_vari = gs_variant-variant.
ENDIF.
START-OF-SELECTION.
SELECT empcd, certid, cnum
FROM zempcert
INTO CORRESPONDING FIELDS OF TABLE @gt_empcert.
IF sy-subrc EQ 0.
SORT gt_empcert BY empcd cnum.
ENDIF.
SELECT empcd, COUNT( certid ) AS count
FROM zempcert
GROUP BY empcd
INTO TABLE @gt_empcert_cnt.
LOOP AT gt_empcert. "자격증에 따라 신호등 색의 변화
READ TABLE gt_empcert_cnt WITH KEY empcd = gt_empcert-empcd
TRANSPORTING count.
CHECK sy-subrc EQ 0.
IF gt_empcert_cnt-count >= 3. " Green.
* gt_empcert-linecolor = 'C500'.
ELSEIF gt_empcert_cnt-count = 2. " Yellow.
* gt_empcert-linecolor = 'C300'.
ELSEIF gt_empcert_cnt-count = 1. " Blue.
* gt_empcert-linecolor = 'C100'.
ENDIF.
gt_empcert-count = gt_empcert_cnt-count.
gt_empcert-chk = ' '.
MODIFY gt_empcert.
ENDLOOP.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module INIT_CON OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE init_con OUTPUT.
IF con1_ref IS INITIAL.
CREATE OBJECT con1_ref
EXPORTING
container_name = 'CON1'.
CREATE OBJECT g_grid
EXPORTING
i_parent = con1_ref.
ENDIF.
gs_variant-report = sy-repid.
gs_variant-username = sy-uname.
PERFORM setting_layout CHANGING gs_layout.
PERFORM setting_toolbar.
PERFORM setting_sort.
PERFORM getting_catalog.
PERFORM setting_catalog.
PERFORM setting_cell.
DATA : event_receiver TYPE REF TO lcl_event_receiver.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_toolbar FOR g_grid.
SET HANDLER event_receiver->handle_button_click FOR g_grid.
" 버튼 클릭의 이벤트 등록 FOR g_grid.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
* i_structure_name = 'ZEMPCERT'
is_variant = gs_variant
i_save = 'A'
i_default = ''
is_layout = gs_layout
it_toolbar_excluding = gt_toolbar
CHANGING
it_outtab = gt_empcert[]
it_fieldcatalog = gt_fieldcat
it_sort = gt_sort.
ENDMODULE. " INIT_CON OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
IF ok_code = 'BACK'.
DATA: l_row TYPE i,
l_value TYPE c,
l_col TYPE i,
ls_row TYPE lvc_s_row,
ls_col TYPE lvc_s_col,
ls_roid TYPE lvc_s_roid.
CALL METHOD g_grid->get_current_cell
IMPORTING
e_row = l_row
e_value = l_value
e_col = l_col
es_row_id = ls_row
es_col_id = ls_col
es_row_no = ls_roid.
LEAVE PROGRAM.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '100_STATUS'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Form SETTING_LAYOUT
*&---------------------------------------------------------------------*
FORM setting_layout CHANGING p_layout TYPE lvc_s_layo.
* p_layout-cwidth_opt = 'X'. "칼럼 길이 자동조절
p_layout-grid_title = 'Pushbutton Test'. "타이틀 바
p_layout-sel_mode = 'B'. "선택모드 : 멀티 선택 가능
p_layout-zebra = 'X'. "Sripe 속성 지정
p_layout-stylefname = 'CELLBTN'. "STYLEFNAME 필드 설정
ENDFORM. " setting_layout
*&---------------------------------------------------------------------*
*& Form SETTING_TOOLBAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM setting_toolbar .
DATA: l_exclude TYPE ui_func.
l_exclude = cl_gui_alv_grid=>mc_fc_save_variant.
APPEND l_exclude TO gt_toolbar.
l_exclude = cl_gui_alv_grid=>mc_fc_maintain_variant.
APPEND l_exclude TO gt_toolbar.
ENDFORM. " SETTING_TOOLBAR
*&---------------------------------------------------------------------*
*& Form SETTING_SORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM setting_sort .
DATA : ls_sort TYPE lvc_s_sort.
ls_sort-spos = '1'.
ls_sort-fieldname = 'EMPCD'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO gt_sort.
ENDFORM. " SETTING_SORT
*&---------------------------------------------------------------------*
*& Form SETTING_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM setting_catalog .
FIELD-SYMBOLS: <ls_fcat> TYPE lvc_s_fcat.
LOOP AT gt_fieldcat ASSIGNING <ls_fcat>.
IF <ls_fcat>-fieldname EQ 'MANDT'
OR <ls_fcat>-fieldname EQ 'LIGHT'.
<ls_fcat>-tech = 'X'.
ENDIF.
IF <ls_fcat>-fieldname EQ 'COUNT'.
<ls_fcat>-coltext = '자격증 개수'.
ENDIF.
ENDLOOP.
ENDFORM. " SETTING_CATALOG
*&---------------------------------------------------------------------*
*& Form GETTING_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM getting_catalog .
DATA : lt_fieldcat TYPE kkblo_t_fieldcat.
CALL FUNCTION 'K_KKB_FIELDCAT_MERGE'
EXPORTING
i_callback_program = sy-repid
i_tabname = 'GT_EMPCERT'
i_inclname = sy-repid
CHANGING
ct_fieldcat = lt_fieldcat[].
IF sy-subrc EQ 0.
CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO'
EXPORTING
it_fieldcat_kkblo = lt_fieldcat[]
IMPORTING
et_fieldcat_lvc = gt_fieldcat[].
ENDIF.
ENDFORM. " GETTING_CATALOG
*&---------------------------------------------------------------------*
*& Form setting_cell
*&---------------------------------------------------------------------*
FORM setting_cell .
DATA : lt_cellbtn TYPE lvc_t_styl,
ls_cellbtn TYPE lvc_s_styl,
ls_fieldcat TYPE lvc_s_fcat,
l_mode TYPE raw4,
index TYPE i.
* Display cell as PUSHBUTTON
CLEAR index.
LOOP AT gt_empcert.
index = index + 1.
CLEAR: lt_cellbtn[], ls_cellbtn.
LOOP AT gt_fieldcat INTO ls_fieldcat.
ls_cellbtn-fieldname = ls_fieldcat-fieldname.
IF ls_cellbtn-fieldname EQ 'CHK'. "3번 푸쉬버튼 처리 : chk필드를
"푸쉬버튼으로 조회할 수 있도록 설정
ls_cellbtn-fieldname = 'CHK'.
ls_cellbtn-style = cl_gui_alv_grid=>mc_style_button.
ENDIF.
INSERT ls_cellbtn INTO TABLE lt_cellbtn.
ENDLOOP.
INSERT LINES OF lt_cellbtn INTO TABLE gt_empcert-cellbtn.
MODIFY gt_empcert INDEX index.
CLEAR gt_empcert.
ENDLOOP.
ENDFORM. " SETTING_CELL
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
463 | INCLUDE Z17_04_0100_PBOO01 | 가능 | 2025.09.22 | 0 |
462 | REPORT Z17_04 | 가능 | 2025.09.22 | 1 |
461 | REPORT Z17_03 | 가능 | 2025.09.22 | 0 |
460 | REPORT Z17_02 | 가능 | 2025.09.22 | 0 |
459 | REPORT Z17_01 | 가능 | 2025.09.22 | 0 |
458 | REPORT Z16_09 | 가능 | 2025.09.22 | 1 |
457 | REPORT Z16_08 | 가능 | 2025.09.22 | 0 |
456 | REPORT Z16_07 | 가능 | 2025.09.22 | 0 |
455 | REPORT Z16_06 | 가능 | 2025.09.22 | 0 |
454 | REPORT Z16_05 | 가능 | 2025.09.22 | 0 |
453 | REPORT Z16_04 | 가능 | 2025.09.22 | 1 |
452 | REPORT Z16_03 | 가능 | 2025.09.22 | 0 |
451 | REPORT z16_02 | 가능 | 2025.09.22 | 0 |
450 | REPORT z16_01 | 가능 | 2025.09.22 | 0 |
449 | REPORT Z15_28 | 가능 | 2025.09.22 | 1 |
448 | REPORT Z15_27 | 가능 | 2025.09.22 | 0 |
447 | REPORT Z15_26 | 가능 | 2025.09.22 | 0 |
446 | REPORT Z15_25 | 가능 | 2025.09.22 | 0 |
445 | REPORT Z15_24 | 가능 | 2025.09.22 | 0 |
» | REPORT Z15_23 | 가능 | 2025.09.22 | 0 |