ALV๋ฅผ ๊ตฌํํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ
- ํจ์๋ฅผ ์ด์ฉ
- GRID ์ปจํธ๋กค์ ์ด์ฉ
๋ด๋ถ์ ์ผ๋ก๋ ๋ ๋ฐฉ๋ฒ์ด ์ ์ฌํ ๊ตฌ์กฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๋๋ค.
๊ฐ๋ฐ๋ ์์
Function ALV ๐ GRID ALV ๐ SALV
ALV GRID ์ปจํธ๋กค
- ํ๋ฉด์ ๋ณด์ด๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ alvํ๋ฉด์ ์์ฑ์ ์ฌ์ ์ํ๊ณ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ์๋๋ ALV GRID ์ปจํธ๋กค์ ๋ง๋๋ ์ฝ๋์ ๋๋ค.
DATA: gv_grid TYEP REF TO cl_gui_alv_grid.
CREATE OBJECT gv_grid.
ํ๋์นดํ๋ก๊ทธ
- ALV ํ๋ฉด์ ๋ณด์ด๊ฒ ๋๋ ํ๋๋ค์ ์ ๋ณด๋ฅผ ๋ด๋ ํ ์ด๋ธ์ ๋๋ค.
- LVC_T_FCAT ํ์ ์ ํ ์ด๋ธ์ ๋๋ค. ( ํ๋์ ํ์ , ์์ฑ, ๊ธธ์ด ๋ฑ )
SAP ์ปจํ ์ด๋ ์ปจํธ๋กค
- Screen ๊ณผ ALV GRID๋ฅผ ์ฐ๊ฒฐํ๋ ์ฐ๊ฒฐ๊ณ ๋ฆฌ ์ญํ ์ ํ๋ ์ปจํธ๋กค ์ ๋๋ค.
- SAP Custom Container, SAP Dialog Box Container, SAP Docking Container, SAP Splitter Container, SAP Easy Splitter Container ๊ฐ ์์ต๋๋ค.
SAP Docking Container : ํ๋ก๊ทธ๋จ, ์คํฌ๋ฆฐ, ์ปจํ ์ด๋์ ํฌ๊ธฐ๋ฅผ ์คํฌ๋ฆฝํธ์์ ์ค์ ํ์ฌ ๋์ ์ผ๋ก ํธ์ถํ ์ ์์
ALV ๋ฉ์๋
1. set_table_for_first_display ๋ฉ์๋
- ์์ํ ํ ์ด๋ธ์ด ALV GRID ์ ๋ณด์ด๊ฒ ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ตฌ ์ค์ํ ๋ฉ์๋ ์ ๋๋ค.
- ์ฝ๋
call method < ref.var. to CL_GUI_ALV_GRID>
->set_table_for_first_display
exporting
i_structure_name = < string of type DD02L-TABNAME >
is_variant = < structure of type DISVARIANT >
i_save = < var. of TYPE CHAR01 >
i_default = < var. of TYPE CHAR01 >
is_layout = < structure of type LVC_S_LAYO >
is_print = < structure of type LVC_S_PRNT >
it_special_groups = < internal table of type LVC_T_SGRP >
it_toolbar_excluding = < internal table of type UI_FUNCTIONS >
changing
it_outtab = < internal table >
it_fieldcatalog = < internal table of type LVC_T_FCAT >
it_sort = < internal table of type LVC_T_SORT >
it_filter = < internal table of type LVC_T_FILT >
- i_structure_name ํ๋ผ๋ฏธํฐ
abap dictionary ๊ตฌ์กฐ์ฒด ์ด๋ฆ์ ๋๊ฒจ์ฃผ๋ ํ๋ผ๋ฏธํฐ์ ๋๋ค.
i_structure_name ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํ๊ฒ ๋๋ฉด ํ๋์นดํ๋ก๊ทธ๋ฅผ ๋ฐ๋ก ๊ตฌ์ฑํ ํ์๊ฐ ์์ต๋๋ค.
- is_variant ํ๋ผ๋ฏธํฐ
alv ๋ฆฌ์คํธ์ ๋ณํ(variant)๋ฅผ ์ ์ฅํ์ฌ ๋ค์ ์กฐํ์์๋ ๊ฐ์ ํฌ๋งท์ผ๋ก ์กฐํ๋ ์ ์๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๋ณํ์ด๋ ํ๋์ ์์๋ฅผ ๋ณ๊ฒฝ, ์ ๋ ฌํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์ ์ ๋งํฉ๋๋ค.
์ด๋ฅผ ์ํด์ ALV ๋ ์ด์์์ ์์ฑ์ ์ง์ ํ๋ ๊ณผ์ ์ด ์ ํ๋์ด์ผ ํฉ๋๋ค.
- i_save ํ๋ผ๋ฏธํฐ
alv ๋ ์ด์์์ ๋ณ๊ฒฝํ์์ ๋ ์ฌ์ฉ์๋ณ๋ก ์ ์ฅํ ๊ฒ์ธ์ง, ํ๋ก๊ทธ๋จ ๊ธฐ๋ณธ ์ธํ ์ผ๋ก ์ ์ฅํ ๊ฒ์ธ์ง๋ฅผ ์ง์ ํฉ๋๋ค.
- is_layout ํ๋ผ๋ฏธํฐ
alv grid ์ปจํธ๋กค์ ํ๋ฉด ์์ฑ์ ์ ์ํฉ๋๋ค
lvc_s_layo ํ์ ์ ๊ตฌ์กฐ์ฒด ์ ๋๋ค. ( ์๋ ์ฌ์ง์ se11๋ก lvc_s_layo๋ฅผ ์กฐํํ ํ๋ฉด )
LVC_S_LAYO์ ์์ฑ
- CTAB_FNAME : ํ๋ ์ ์ ์์์ ์ง์
- CWIDTH_OPT : ์ปฌ๋ผ ๊ธธ์ด๋ฅผ ์ง์
- DETAILINIT : ์์ธ ํ๋ฉด์์ ๊ธฐ๋ณธ ๊ฐ์ ๋ณด์ฌ์ค ๊ฒ์ธ์ง ๊ฒฐ์
- DETAILTITL : ์์ธ ํ๋ฉด์ ํ์ดํ ๋ฐ๋ฅผ ๋ณด์ฌ์ค
- EXCP_CONDS : ์์ธ ์ฌํญ์ ํ๋ Sub Total์ ๋ณด์ฌ์ค
- EXCP_FNAME : ์์ธ ์ฌํญ ํ๋๋ฅผ ์ง์
- EXCP_LED : ์์ ์ฌํญ ํ๋๋ฅผ LED๋ก ๋ณด์ฌ์ค
- EXCP_ROLLN : ์์ธ ์ฌํญ ํ๋์ ๋ํ ๋์๋ง์ ํ์
- GRID_TITLE : ํ์ดํ ๋ฐ์ ๋ด์ญ์ ์ง์
- INFO_FNAME : ๋ผ์ธ์ ์์์ ์ง์
- KEYHOT : HOTSPOT์ผ๋ก ์ง์ ํ Key ํ๋๋ฅผ ์ง์
- NO_HEADERS : ์ปฌ๋ผ ํค๋๊ฐ ๋ณด์ด์ง ์๋๋ค.
- NO_ROWMARK : GRID ๋ผ์ธ์ ์ ํํ ์ ์๋ ๋ฒํผ์ ์์ค๋ค. SEL_MODE = 'D' ์ด๋ฉด ๋ผ์ธ ๋ฒํผ์ ์์ฐ, SLE_MODE = 'A' ์ด๋ฉด ์ปฌ๋ผ/๋ผ์ธ ๋ฒํผ์ ์์ฐ
- NO_VGRIDLN : GRID์ ์์ง์ ์ ๋ณด์ด์ง ์๋๋ค
- NUMC_TOTAL : NUMC ํ๋์ ํฉ๊ณ ๊ธ์ก์ ๋ณด์ฌ์ค๋ค
- S_DRAGDROP : Drag & Drop ์ปจํธ๋กค์ ์ธํ (๋ผ์ธ์ ๋ณต์ฌ, ์ด๋ ๋ฑ)
- SEL_MODE : Selection mode๋ฅผ ์ธํ ( A, B, C, D, SPACE )
- TOTALS_BEF : ํฉ๊ณ ๊ธ์ก์ ๋งจ ์์ ๋ผ์ธ์ ๋ณด์ฌ์ค
- ZEBRA : ๋ผ์ธ ๋จ์๋ณ๋ก ์ค๋ฌด๋ฌ(Stripped) ํจํด์ ์ธํ
- it_outtab
์กฐํ๋ ๋ฐ์ดํฐ์ ์์ํ ํ ์ด๋ธ์ ์ ์
- it_sort
alv ์คํ ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ์กฐํ๋๋๋ก ์ค์
subtot ์ต์ ์ ์ ๋ ฌ ํ๋ ๊ธฐ์ค์ผ๋ก ํฉ๊ณ ๊ธ์ก๊ณผ ์ ์ฒด ํฉ๊ณ ๊ธ์ก์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ์ธํ
2. get_current_cell ๋ฉ์๋
ALV GRID ์ปจํธ๋กค์ ์ปค์๊ฐ ๋์ธ ์์น์ ๊ฐ๊ณผ ์์ฑ๋ค์ ๋ฐํ
- ํ๋ผ๋ฏธํฐ
E_ROW : ALV GRID ์ปจํธ๋กค์ ํ์ฌ ๋ผ์ธ ์ธ๋ฑ์ค
E_VALUE : ALV GRID ์ปจํธ๋กค์ ํ์ฌ ์ ์ ๊ฐ
E_COL : ALV GRID ์ปจํธ๋กค์ ํ์ฌ ์นผ๋ผ ์ด๋ฆ
ES_ROW_ID : ์์ํ ํ ์ด๋ธ์ ํ์ฌ ๋ผ์ธ ํ์ ๊ณผ ์ธ๋ฑ์ค์ ๋ํ structure
ES_COL_ID : ์์ํ ํ ์ด๋ธ์ ํ์ฌ ์ปฌ๋ผ๊ณผ ํ๋๋ช ์ ๋ํ structure
3. get_fronted_layout ๋ฉ์๋
ํ์ฌ ์ค์ ๋ ALV GRID์ ๋ ์ด์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ด
4. get_selected_cells ๋ฉ์๋
ํ์ฌ ์ ํ๋ ๋ณต์์ ์ ์ ๋ณด๋ฅผ LVC_T_CELL ํ์ ์ ํ ์ด๋ธ๋ก ๋ฐํ
5. get_selected_columns
์ ํ๋ ์นผ๋ผ๋ค์ ์ ๋ณด๋ฅผ LVC_T_COL ํ์ ์ ํ ์ด๋ธ๋ก ๋ฐํ
6. get_selected_rows
์ ํ๋ ๋ฉํฐ ๋ผ์ธ์ ์ ๋ณด๋ฅผ LVC_T_ROW ํ์ ์ ํ ์ด๋ธ๋ก ๋ฐํ
7. refresh_table_display
์ด๋ฏธ ํ๋ฉด์ ์กฐํ๋ ALV์ ์์ํ ํ ์ด๋ธ์ ๋ค์ ์กฐํํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
ํ๋ผ๋ฏธํฐ
is_stable : ๋ผ์ธ๊ณผ ์นผ๋ผ ์์น๋ฅผ ๊ธฐ์ตํ์ฌ ์ฌ์กฐํํ๊ณ ์ด์ ์ ์์น์ ํ๋ฉด์ ๋ณด์ด๊ฒ ํจ
i_soft_refresh : sort, filter, sum ๋ฑ ํ alv grid์ ๋ ์ด์์ ์ธํ ์ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ refresh๋ฅผ ์คํ
ALV ์ด๋ฒคํธ
1. ์ด๋ฒคํธ ์ ์ธ
CL_GUI_ALV_GRID ์ ๋ค์ํ ์ด๋ฒคํธ๊ฐ ์ ์ธ๋์ด ์๋ค.
2. ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฉ์๋ ์ ์
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS :
handle_double_click
FOR EVENT double_click
OF CL_GUI_ALV_GRID
importing e_row e_column.
ENDCLASS.
3. ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฉ์๋๋ฅผ ๋ฑ๋ก
DATA : event_receiver TYPE REF TO lcl_event_receiver.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_double_click FOR g_grid.
4. ์ด๋ฒคํธ ํธ์ถ
cl_gui_alv_grid์ ํ๋ฉด์ ๋๋ธํด๋ฆญ ํ๋ฉด RAISE_EVENT๋ผ๋ ๋ฉ์๋๊ฐ ์คํ๋๊ณ 'USER_COMMAND' ์ ํด๋นํ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
Toolbar ์ด๋ฒคํธ
Toolbar ์ด๋ฒคํธ๋ ALV GRID์ ๋จ์ํ ์์ด์ฝ๋ง ์ถ๊ฐํ๋ ๊ฒ ์ ๋๋ค.
์์ด์ฝ์ ํด๋ฆญํ์ ๋์ ๋์์ user_command ์ด๋ฒคํธ์์ ์ํํฉ๋๋ค.
user_command ์ด๋ฒคํธ
Toolbar ์ด๋ฒคํธ์์ ์ถ๊ฐ๋ ์์ด์ฝ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์ด๋ฒคํธ.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS : handle_command
FOR EVENT user_command OF CL_GUI_ALV_GRID
IMPORTING e_ucomm.
ENDCLASS.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_command.
DATA: l_scroll TYPE lvc_s_stbl.
CASE e_ucomm.
WHEN 'REFRESH'.
...
ENDCASE.
ENDMETHOD.
ENDCLASS.
๊ตฌ์กฐ์ฒด์ ํ๋ ์นดํ๋ก๊ทธ ๋ ๊ฐ์ง๋ฅผ ํผํฉํด์ ์ฌ์ฉ
๊ตฌ์กฐ์ฒด์ ํ๋์นดํ๋ก๊ทธ์ ๊ฐ์ ํ๋๊ฐ ์กด์ฌํ๊ฒ ๋๋ฉด ํ๋ ์นดํ๋ก๊ทธ๊ฐ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
ํ๋์นดํ๋ก๊ทธ๋ก ๋ ์ง ํฌ๋ฉง ๋ณ๊ฒฝํ๊ธฐ (edit_mask)
FIELD-SYMBOLS : <ls_fcat> TYPE lvc_s_fcat.
LOOP AT gt_fieldcat ASSIGNING <ls_fcat>.
IF <ls_fcat>-fieldname EQ 'FLDATE'.
<ls_fcat>-edit_mask = '____/__/__'.
ENDIF.
ENDLOOP.
๋ ์ง '2011-01-12' ๊ฐ '2011/01/12'์ ๊ฐ์ ํฌ๋ฉง์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
LVC_T_STYL ํ๋๋ก ์ ์ Pushbutton ๋ง๋ค๊ธฐ
1. ์ธํฐ๋ ํ ์ด๋ธ์ LVC_T_STYL ํ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
DATA: BEGIN OF GT_OUTTAB OCCURS 0.
INCLUDE STRUCTURE sflight.
DATA: chk TYPE c.
DATA: cellbtn TYPE LVC_T_STYL.
DATA: END OF GT_OUTTAB.
2. ๋ ์ด์์์ stylefname์ ์ง์ ํฉ๋๋ค.
FORM setting_layout CHANGING p_layout TYPE lvc_s_layo.
p_layout-stylefname = 'CELLBTN'.
ENDFORM.
3. CHKํ๋๋ฅผ Pushbutton์ผ๋ก ๋ง๋ญ๋๋ค.
FORM setting_cell.
DATA: lt_cellbtn TYPE lvc_t_styl,
ls_cellbtn TYPE lvc_s_styl,
ls_fieldcat TYPE lvc_s_fcat.
LOOP AT gt_sflight.
CLEAR: lt_cellbtn[], ls_cellbtn.
LOOP AT gt_fieldcat INTO ls_fieldcat.
IF ls_fieldcat-fieldname EQ 'CHK'.
ls_cellbtn-fieldname = 'CHK'.
ls_cellbtn-style = cl_gui_alv_grid=>mc_style_button.
INSERT ls_cellbtn INTO TABLE lt_cellbtn.
EXIT.
ENDIF.
ENDLOOP.
gt_sflight-cellbtn = lt_cellbtn.
ENDLOOP.
ENDFORM.
register_edit_event
์ฌ์ฉ์๊ฐ ALV ํ๋ฉด์์ ๊ฐ์ ๋ณ๊ฒฝํ๊ฑฐ๋ Enter๋ฅผ ์ ๋ ฅํ ๊ฒฝ์ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํฌ ๋ ์ฌ์ฉํ๋ ํจ์
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
'๐SAP:ABAP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
OPEN SQL (0) | 2024.12.03 |
---|---|
ํ๋ ์ฌ๋ณผ(Field Symbol) (0) | 2024.12.02 |