[SAP] ALV (1) ๊ธฐ๋ณธ ๊ฐ๋ / ๊ฐ์ฒด์งํฅ ALV(CL_GUI_ALV_GRID)๋ก ํ๋ฉด ๊ตฌ์ฑํ๊ธฐ
SAP ํ๋ฉด ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด, ๋จ์ํ WRITE ์ถ๋ ฅ๋ง์ผ๋ก๋ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ช ํํ ๋ณด์ฌ์ฃผ๊ธฐ ์ด๋ ค์ธ ๋๊ฐ ๋ง์ต๋๋ค. ์ด๋ด ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋๊ตฌ๊ฐ ๋ฐ๋ก ALV (ABAP List Viewer)์ ๋๋ค. ALV๋ ๋ฐ์ดํฐ๋ฅผ ํ ํํ๋ก ๊น๋ํ๊ฒ ํํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ, ์ ๋ ฌ, ํํฐ๋ง, ํฉ๊ณ, ๊ทธ๋ฃนํ, ์์ ๋ค์ด๋ก๋ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ์ฌ ์ฌ์ฉ์ ์นํ์ ์ธ SAP ํ๋ฉด์ ๊ตฌ์ฑํ๋ ํต์ฌ ์์๋ก ์๋ฆฌ ์ก๊ณ ์์ต๋๋ค.
SAP์์ ALV๋ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์์ง๋ง, ๊ทธ์ค์์๋ ๊ฐ์ฅ ์ค๋ฌด์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ์์ CL_GUI_ALV_GRID๋ฅผ ์ด์ฉํ ๊ฐ์ฒด์งํฅ ALV์ ๋๋ค. ์ด ๋ฐฉ์์ ํ๋ฉด ์์ ์ปจํธ๋กค ๋ฐ์ค๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์ ๊ทธ๋ฆฌ๋(Grid)๋ฅผ ์ง์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์กฐ์ ์ผ๋ก ๋ช ํํ๋ฉฐ ์ฌ์ฌ์ฉ์ฑ๋ ๋์ ํ์ค ํธ๋์ญ์ ์์๋ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ALV์ ํต์ฌ ๊ตฌ์กฐ๋ฅผ “๋ฐ์ค ์์ ๋ฐ์ค” ๊ฐ๋ ์ผ๋ก ํ๋์ฉ ์์๊ฐ๋ฉฐ, CL_GUI_ALV_GRID ๊ธฐ๋ฐ์ ALV๋ฅผ SAP ํ๋ฉด์ ์ถ๋ ฅํ๋ ์ ๊ณผ์ ์ ํจ๊ป ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
โ ALV๋?
ALV (ABAP List Viewer)๋ SAP์์ ๋ฐ์ดํฐ๋ฅผ ํ ํํ๋ก ์๊ฐ์ ์ผ๋ก ํํํ ์ ์๋๋ก ์ ๊ณตํ๋ ๊ฐ๋ ฅํ UI ๋๊ตฌ์
๋๋ค.
ํนํ SAP GUI ํ๊ฒฝ์์๋ ๋จ์ํ ๋ฆฌ์คํธ ์ถ๋ ฅ๋ณด๋ค๋ ALV๋ฅผ ํตํด ์ ๋ ฌ, ํํฐ, ์ปฌ๋ผ ์กฐ์ , ์์
๋ค์ด๋ก๋ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ ์ ์์ต๋๋ค.
โ ALV ์ฌ์ฉ ์ด์
- ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ ํํ๋ก ๋ณด๊ธฐ ์ข๊ฒ ๋ณด์ฌ์ค
- ์ปฌ๋ผ ์ ๋ ฌ, ํํฐ, ํฉ๊ณ, ๊ทธ๋ฃนํ ๋ฑ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ ๊ณต
- ์ฌ์ฉ์ ๊ฒฝํ ํฅ์ (์์ ๋ค์ด๋ก๋, ์ปฌ๋ผ ๋๋น ์กฐ์ ๋ฑ)
- ํ์ค SAP ํธ๋์ญ์ ๋๋ถ๋ถ์ด ALV๋ฅผ ํ์ฉ
- ํ๋ฉด ๊ฐ๋ฐ ์ ์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ถ๋ ฅ ๋ฐฉ์
๐งฉ ALV์ ์ฃผ์ ๊ตฌํ ๋ฐฉ์
๋ฐฉ์ | ์ค๋ช |
REUSE_ALV_LIST_DISPLAY | Function Module ๊ธฐ๋ฐ ALV, ๊ตฌ์กฐ๋ ๋จ์ํ๋ ์ ์ฐ์ฑ ๋ฎ์ |
CL_GUI_ALV_GRID | ๊ฐ์ฒด์งํฅ ALV. ์ปจํธ๋กค์ ์ด์ฉํด ๋ค์ด์ผ๋ก๊ทธ ํ๋ฉด์ ์ฝ์ ๊ฐ๋ฅ |
SALV Model | ์ต์ SAP ๊ถ์ฅ ๋ฐฉ์. ALV ๊ธฐ๋ฅ์ ๋ ๊ฐํธํ๊ฒ ๊ตฌํ ๊ฐ๋ฅ |
์ด๋ฒ ํฌ์คํ ์์๋ CL_GUI_ALV_GRID ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ, Custom Container๋ฅผ ํตํด ALV๋ฅผ ๋ค์ด์ผ๋ก๊ทธ ํ๋ฉด์ ์ง์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
๐ฏ CL_GUI_ALV_GRID ๋ฐฉ์
SAP์์๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฆฌ๋ ํํ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ALV (ABAP List Viewer)๋ฅผ ์์ฃผ ์ฌ์ฉํฉ๋๋ค.
๊ทธ์ค์์๋ CL_GUI_ALV_GRID๋ฅผ ํ์ฉํ ๋ฐฉ์์ ๊ฐ์ฒด์งํฅ ๊ธฐ๋ฐ์ ์ปจํธ๋กค ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉฐ, ๋ค์ด์ผ๋ก๊ทธ ํ๋ฉด(Screen) ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ธฐ ์ข๊ฒ ์ถ๋ ฅํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค.
๐ ALV ํ๋ฉด ๊ตฌ์ฑ 3๋จ๊ณ
๋จ๊ณ | ๊ตฌ์ฑ์์ | ์ค๋ช |
1๏ธโฃ | Control Area | ํ๋ฉด์ ๋ณด์ผ ๋ฐ์ค (Container)๋ฅผ ๊ตฌ์ฑ |
2๏ธโฃ | Container Control | ๊ทธ ๋ฐ์ค ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๊ทธ๋ฆ ์์ฑ |
3๏ธโฃ | SAPEnjoy Control | ์ค์ ALV ๋ฐ์ดํฐ๋ฅผ ๋ฟ๋ฆด Grid ๊ฐ์ฒด ์ฐ๊ฒฐ |
1๏ธโฃ Control Area ๋ง๋ค๊ธฐ – ํ๋ฉด ๊ตฌ์กฐ ์ค๋น
โถ REPORT ํ๋ก๊ทธ๋จ ์์ฑ
โ Report ํ๋ก๊ทธ๋จ์์๋ TOP Include๋ฅผ ์์ฑํด์ ๋ณ์๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
โถ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ - SPFLI ๋ฐ์ดํฐ ์กฐํ
XXXXXTOP
REPORT ZALV_BASIC1_07.
" Selection Screen 1000
PARAMETERS PA_CAR TYPE SCARR-CARRID.
" ๋ฐ์ดํฐ ๊ฐ์ง๊ณ ์ค๊ธฐ - ALV๋ ๋ฆฌ์คํธ ์ ๋ณด
" Connection List - IT
DATA GT_CONN TYPE TABLE OF SDYN_CONN. " IT
DATA GS_CONN LIKE LINE OF GT_CONN. " GW
๐ ํ๋ฉด 1000์ Selection Screen์ด ์๋ ์์ฑ๋๋ฏ๋ก ์์ ํ์ง ์์ต๋๋ค.
START-OF-SELECTION.
SELECT *
FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE GT_CONN
WHERE CARRID = PA_CAR.
โถ ํ๋ฉด์ ALV ๋์ฐ๊ธฐ – CALL SCREEN
SCREEN 100
ํ๋ฉด ์ค์ - CALL SCREEN
START-OF-SELECTION.
SELECT *
FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE GT_CONN
WHERE CARRID = PA_CAR.
CALL SCREEN 0100. " ํ๋ฉด ๋์ฐ๊ธฐ
โ SCREEN 100์ ํตํด ALV ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ๊ณต๊ฐ์ ๋ง๋ญ๋๋ค.
โถ ํ๋ฉด ๊ตฌ์ฑ PBO - SET PF-STATUS / TITLEBAR
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'S100'. "BACK ๋ฒํผ ์ค์
SET TITLEBAR 'T100'. "ํ์ดํ๋ฐ
ENDMODULE.
โถ ํ๋ฉด ๊ตฌ์ฑ ๋ก์ง PAI
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
MODULE user_command_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
โถCustom Control ๋ฐฐ์น (Layout)
ํ๋ฉด์ Custom Control์ ๋ฐฐ์นํ๊ณ , ์ด๋ฆ์ MY_CON์ผ๋ก ์ค์ ํฉ๋๋ค.
โ๏ธ Customer Control - Name ์ค์
2๏ธโฃ Container Control ๋ง๋ค๊ธฐ – ๋ฐ์ค ์์ ๋ฐ์ค (์์ MY_CON ์ ๋ฐ์ค)
โถ ๋ณ์ ์ค์
XXXXXTOP
" ALV ๊ด๋ จํ ๋ณ์
DATA GO_CON TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
โ TYPE REF TO <ํด๋์ค>
โถ Control Area์ ๊ด๋ จ์ฑ์๊ฒ PBO ๋ก์ง ์ค๊ณ (PATTEN ์ฌ์ฉ)
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE INIT_CONTROL.
MODULE init_control OUTPUT.
CREATE OBJECT go_con
EXPORTING
container_name = 'MY_CON'.
ENDMODULE.
3๏ธโฃ ALV Grid ์์ฑ – SAPEnjoy Control (๋ฐ์ค์์ ๊ทธ๋ฆฌ๋ ๊ฐ์ฒด ์์ฑ)
โถ ๋ณ์ ์ค์
XXXXXTOP
DATA GO_ALV TYPE REF TO CL_GUI_ALV_GRID.
โ TYPE REF TO <ํด๋์ค>
โถContainer Control ์ ๊ด๋ จ์ฑ์๊ฒ PBO ๋ก์ง ์ค๊ณ (PATTEN ์ฌ์ฉ)
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE INIT_CONTROL.
CREATE OBJECT go_alv
EXPORTING
i_parent = go_con.
4๏ธโฃ ALV ๋ฐ์ดํฐ ์ถ๋ ฅ set_table_for_first_display
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE INIT_CONTROL.
MODULE DISPLAY_CONTROL.
MODULE display_control OUTPUT.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = gt_conn.
ENDMODULE.
๐งฉ TIP. ํ๋ฉด BACK ์ ๊ฐ์ฒด ์ค๋ณต ์์ฑ ๋ฐฉ์ง
ALV ์ถ๋ ฅ ํ๋ฉด(100๋ฒ)์์ BACK์ ๋๋ ๋ค๊ฐ ๋ค์ ๋ค์ด์ค๋ฉด, init_control์ด ๋ค์ ํธ์ถ๋์ด ์ปจํ ์ด๋์ ALV ๊ฐ์ฒด๊ฐ ์ค๋ณต ์์ฑ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด, GO_CON IS INITIAL ์กฐ๊ฑด์ ์ถ๊ฐํ์ฌ ๊ฐ์ฒด๊ฐ ์์ ๋๋ง ์์ฑ๋๋๋ก ํด์ผ ํฉ๋๋ค.
MODULE init_control OUTPUT.
IF GO_CON IS INITIAL. " ์ถ๊ฐ
" ๊ธฐ์กด init_control ๋ชจ๋ "
CREATE OBJECT go_con
EXPORTING
container_name = 'MY_CON'.
CREATE OBJECT go_alv
EXPORTING
i_parent = go_con.
" display_control ๋ชจ๋ ์ฎ๊ธด ๊ฒ "
GS_LAYOUT-CWIDTH_OPT ='X'.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
is_layout = GS_LAYOUT
CHANGING
it_outtab = gt_conn.
ENDIF. " ์ถ๊ฐ
ENDMODULE.
โ SET_TABLE_FOR_FIRST_DISPLAY๋ ALV๊ฐ ์ฒ์ ๊ทธ๋ ค์ง ๋ ํ ๋ฒ๋ง ํธ์ถํด์ผ ํ๋ฉฐ, ์ฌ์คํ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๊ฐ์ฒด ์กด์ฌ ์ฌ๋ถ ์ฒดํฌ๋ ํ์์ ๋๋ค.
โญ ALV ์์ฑ ๊ตฌ์กฐ ์ ๋ฆฌ
- ALV๋ฅผ ์ฌ์ฉํ ๋๋ ๋ณดํต 1000๋ฒ Selection ํ๋ฉด → 100๋ฒ ALV ์ถ๋ ฅ ํ๋ฉด ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ALV๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์ ์ปจํ ์ด๋ ๊ฐ์ฒด์ ALV ๊ทธ๋ฆฌ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ฉฐ, ํ๋ฉด ๋ณต๊ท ์ ์ค๋ณต ์์ฑ๋์ง ์๋๋ก ๋ฐ๋์ IS INITIAL ์ฒดํฌ๋ฅผ ๋ฃ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
5๏ธโฃ ์ต์ข ALV ๋ฐ์ดํฐ ์ถ๋ ฅ ํ์ธํ๊ธฐ
*๏ธโฃ ์ปฌ๋ผ ์๋ ๋๋น ๋ง์ถค ์ค์
XXXXXTOP
DATA GS_LAYOUT TYPE LVC_s_LAYO.
XXXXXO01 (PBO)
MODULE display_control OUTPUT.
GS_LAYOUT-CWIDTH_OPT ='X'. " ์ด ์ค ์ถ๊ฐ "
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
is_layout = GS_LAYOUT " ์ด ์ค ์ถ๊ฐ "
CHANGING
it_outtab = gt_conn.
ENDMODULE.
โ๏ธ ์ค ๋ง์ถค ์ต์ข ํ์ธํด๋ณด๊ธฐ