SAP/ALV

[SAP] ALV (1) ๊ธฐ๋ณธ ๊ฐœ๋… / ๊ฐ์ฒด์ง€ํ–ฅ ALV(CL_GUI_ALV_GRID)๋กœ ํ™”๋ฉด ๊ตฌ์„ฑํ•˜๊ธฐ

์ธํฌ๋งˆํ‹ฑ 2025. 3. 21. 21:48

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.

 

โœ”๏ธ ์ค„ ๋งž์ถค ์ตœ์ข… ํ™•์ธํ•ด๋ณด๊ธฐ