๊ด€๋ฆฌ ๋ฉ”๋‰ด

CS Studentโ€™s SAP&Tech Journey๐Ÿ’ซ

[SAP] ALV (4) ์‹œ๊ฐ์  ์ œ์–ด ๊ธฐ๋Šฅ - ์‹ ํ˜ธ๋“ฑ, ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, FREE ํ•จ์ˆ˜ / ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง ๋ณธ๋ฌธ

SAP/ALV

[SAP] ALV (4) ์‹œ๊ฐ์  ์ œ์–ด ๊ธฐ๋Šฅ - ์‹ ํ˜ธ๋“ฑ, ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, FREE ํ•จ์ˆ˜ / ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง

์ธํฌ๋งˆํ‹ฑ 2025. 3. 28. 15:42

SAP์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ง๊ด€์ ์œผ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ALV์˜ ๋‹ค์–‘ํ•œ ์‹œ๊ฐ์  ์ œ์–ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์‹ ํ˜ธ๋“ฑ์ปฌ๋Ÿฌ ๊ฐ•์กฐ์ฒดํฌ๋ฐ•์Šค ์•„์ด์ฝ˜ ์ถœ๋ ฅ, ๊ทธ๋ฆฌ๊ณ  ํ•„๋“œ ์นดํƒˆ๋กœ๊ทธ ์กฐ์ž‘์„ ํ†ตํ•ด ALV๋ฅผ ๋” ํ’๋ถ€ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 


 

โœ… ALV ๊ฐ์ฒด ์ œ๊ฑฐ - FREE ํ•จ์ˆ˜

ALV์™€ Container ๊ฐ์ฒด๋Š” ํ™”๋ฉด์„ ๋‚˜๊ฐ€๊ธฐ ์ „ ๋ฐ˜๋“œ์‹œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด BACKํ•  ๋•Œ๋งˆ๋‹ค ALV ๊ฐ์ฒด๊ฐ€ ์ค‘๋ณต ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

โ–ถ XXXXXI01 (PAI)  

PATTERN ์‚ฌ์šฉํ•˜์—ฌ FREE ํ•จ์ˆ˜ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

ALV
Container

WHEN 'BACK'.
        " 100๋ฒˆ ํ™”๋ฉด์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด ํŒŒ๊ดดํ•˜๊ณ  ๋– ๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
        " ALV, Container ๋‘๊ฐœ์˜ ๊ฐ์ฒด ํŒŒ๊ดดํ•ด์•ผํ•œ๋‹ค.
        " ํŒŒ๊ดด ์ˆœ์„œ : ALV -> Container

        CALL METHOD go_alv->free. " ALV " 
        CALL METHOD go_con->free. " Container "

        LEAVE TO SCREEN 0.

 

 

โœ… ALV Layout ์˜ต์…˜ ์„ค์ •

โ–ถ XXXXXO01(PBO)

GS_LAYOUT-CWIDTH_OPT = 'X'.             " ์ค„ ๋งž์ถค
GS_LAYOUT-ZEBRA = 'X'.                  " ์–ผ๋ฃฉ๋ง ํŒจํ„ด
GS_LAYOUT-GRID_TITLE = 'Flight Connections'.
GS_LAYOUT-TOTALS_BEF = 'X'.             " ํ•ฉ๊ณ„ ์œ„์— ์ถœ๋ ฅ
GS_LAYOUT-SEL_MODE = 'A'.               " ๋ผ์ธ ์„ ํƒ ๋ชจ๋“œ (A, D: ๊ฐ€๋Šฅ)

 

โ–ถ  ํ™•์ธ

 

 

โœ… ์‹ ํ˜ธ๋“ฑ (Threshold) ์„ค์ •

์กฐ๊ฑด๋ณ„ ์ƒ‰์ƒ ์‹œ๊ฐํ™” 1: ๋นจ๊ฐ„์ƒ‰, 2: ์ฃผํ™ฉ์ƒ‰, 3: ์ดˆ๋ก์ƒ‰์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

โ–ถ TOP

TYPES: BEGIN OF GTY_CONN.
  INCLUDE TYPE SDYN_CONN.
  TYPES LIGHT TYPE C LENGTH 1.
TYPES: END OF GTY_CONN.

DATA GT_CONN TYPE TABLE OF GTY_CONN. "์‹ ํ˜ธ๋“ฑ์„ ์œ„ํ•œ ์ปฌ๋Ÿผ 1๊ฐœ ์ถ”๊ฐ€

์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

 

โ–ถ LOOP ๋‚ด ์กฐ๊ฑด ์„ค์ •

LOOP AT GT_CONN INTO GS_CONN.
  IF GS_CONN-distance > 6000.
    GS_CONN-light = 1.
  ELSEIF GS_CONN-distance > 3000.
    GS_CONN-light = 2.
  ELSE.
    GS_CONN-light = 3.
  ENDIF.
  
  MODIFY GT_CONN FROM GS_CONN TRANSPORTING light.
ENDLOOP.

 

 

โ–ถ XXXXXO01(PBO) : Layout ์„ค์ •

์‹ ๊ทœ๋กœ ์ถ”๊ฐ€ํ•œ ์‹ ํ˜ธ๋“ฑ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ALV์—๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GS_LAYOUT-excp_fname = 'LIGHT'.
GS_LAYOUT-excp_led = 'X'.   " 1๊ตฌ ์‹ ํ˜ธ๋“ฑ

 

โ–ถ  ํ™•์ธ

 

 

โœ… ํŠน์ • ๋ผ์ธ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ

๋…ธ๋ž€์ƒ‰ ๊ฐ•์กฐ: ์ „์„ธ๊ธฐ(Charter fit)์ธ ๊ฒฝ์šฐ ์ปฌ๋Ÿฌ ๋ถ€์—ฌ

โ–ถ TOP

TYPES LCOLOR TYPE C LENGTH 4.

 

โ–ถ XXXXXO01(PBO) : Layout ์„ค์ •

์‹ ๊ทœ๋กœ ์ถ”๊ฐ€ํ•œ ๋ผ์ธ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ALV์—๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

GS_LAYOUT-info_fname = 'LCOLOR'.

 

โ–ถ LOOP ๋‚ด ์กฐ๊ฑด ์„ค์ •

LOOP AT gt_conn INTO gs_conn.
    IF gs_conn-distance > 6000.
      gs_conn-light = 1.
    ELSEIF gs_conn-distance > 3000.
      gs_conn-light = 2.
    ELSE.
      gs_conn-light = 3.
    ENDIF.

    " ์ „์„ธ๊ธฐ(Charter Flight)์ธ ๊ฒฝ์šฐ ๋…ธ๋ž€์ƒ‰์œผ๋กœ ์ถœ๋ ฅํ•˜๊ธฐ
    IF gs_conn-fltype = 'X'.
      gs_conn-lcolor = 'C300'.
    ENDIF.
    
    MODIFY gt_conn FROM gs_conn
     TRANSPORTING light lcolor. 
    
ENDLOOP.

 

โ–ถ  ํ™•์ธ

 

 

โœ… ALV ๊ธฐ๋ณธ ๋ฒ„ํŠผ ์ˆจ๊ธฐ๊ธฐ (ํˆด๋ฐ” ์ œ์–ด)

โ–ถ TOP

DATA GT_EXCLUDED TYPE ui_functions.

 

โ–ถ XXXXXO01(PBO) : Layout ์„ค์ •

ํˆด๋ฐ”์—์„œ ์ˆจ๊ธธ ๋ฒ„ํŠผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ฆฐํŠธ ๋ฒ„ํŠผ์„ ์ˆจ๊ฒจ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

APPEND CL_GUI_ALV_GRID=>MC_FC_PRINT TO GT_EXCLUDED.

 

โ–ถ  SET_TABLE_FOR_FIRST_DISPLAY ์—ฐ๊ฒฐ

MODULE init_control OUTPUT.

    CALL METHOD go_alv->set_table_for_first_display
      EXPORTING
        i_structure_name = 'SDYN_CONN'
        is_variant       = GS_VARIANT
        i_save           = GV_SAVE
        is_layout        = GS_LAYOUT
        it_toolbar_excluding          = GT_EXCLUDED " ์ถ”๊ฐ€ "
      CHANGING
        it_outtab = gt_conn.

ENDMODULE.

 

โ–ถ  ํ”„๋ฆฐํŠธ ๋ฒ„ํŠผ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ ํ™•์ธ

 

๐Ÿ“Œ Perform ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง ํ•˜๊ธฐ

โœ”๏ธ ๊ธฐ์กด ์ฝ”๋“œ

โ–ถ XXXXXO01(PBO) 

MODULE init_control OUTPUT.
  IF GO_CON IS INITIAL.
    " Layout ์„ค์ •
    GS_LAYOUT-CWIDTH_OPT ='X'. " ์ค„ ๋งž์ถค
    GS_LAYOUT-ZEBRA = 'X'. " ์–ผ๋ฃฉ๋ง ๋ ˆ์ด์•„์›ƒ ์ง€์›
    GS_LAYOUT-GRID_TITLE = 'Flight Connections'. "AVL ํƒ€์ดํ‹€
    GS_LAYOUT-TOTALS_BEF = 'X'.
    GS_LAYOUT-SEL_MODE = 'A'.
    GS_LAYOUT-info_fname = 'LCOLOR'.

    GS_VARIANT-report = SY-CPROG. " 'ZALV_BASIC_07'
    GS_VARIANT-variant = PA_LAY. " ํ™”๋ฉด์—์„œ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’
    GV_SAVE = 'A'. "์ผ๋‹จ A๋กœ ๊ณ ์ •

    GS_LAYOUT-excp_fname = 'LIGHT'.
    GS_LAYOUT-excp_led = 'X'.   " 1๊ตฌ ์‹ ํ˜ธ๋“ฑ

    APPEND CL_GUI_ALV_GRID=>MC_FC_PRINT TO GT_EXCLUDED.


    " ๊ธฐ์กด 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 = 'SDYN_CONN'
        is_variant       = GS_VARIANT
        i_save           = GV_SAVE
        is_layout        = GS_LAYOUT
        it_toolbar_excluding          = GT_EXCLUDED
      CHANGING
        it_outtab = gt_conn.



  ENDIF. " ์ถ”๊ฐ€ "
ENDMODULE.

 

โœ”๏ธ ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง

โ–ถ XXXXXO01(PBO) 

MODULE init_control OUTPUT.
  IF GO_CON IS INITIAL.

  " 1. ๊ฐ์ฒด 2๊ฐœ ์ƒ์„ฑํ•œ๋‹ค.
    PERFORM INIT_CONTROL.
  " 2. ALV ์ œ์–ดํ•œ๋‹ค.
    PERFORM SET_ALV.
  " 3. ALV ์ถœ๋ ฅํ•œ๋‹ค.
    PERFORM DISPLAY_ALV.
    
  ENDIF.
ENDMODULE.

 

โ–ถ FORM init_control : ๊ฐ์ฒด ALV, Container ์ƒ์„ฑ ์—ญํ• 

FORM init_control .
  CREATE OBJECT go_con
    EXPORTING
      container_name = 'MY_CON'.

  CREATE OBJECT go_alv
  EXPORTING
    i_parent = go_con.
ENDFORM.

 

โ–ถ FORM set_alv : ALV ์ œ์–ด ์—ญํ• 

FORM set_alv .
  GS_LAYOUT-CWIDTH_OPT ='X'.
  GS_LAYOUT-ZEBRA = 'X'. " ์–ผ๋ฃฉ๋ง ๋ ˆ์ด์•„์›ƒ ์ง€์›
  GS_LAYOUT-GRID_TITLE = 'Flight Connections'. "AVL ํƒ€์ดํ‹€
  GS_LAYOUT-TOTALS_BEF = 'X'.
  GS_LAYOUT-SEL_MODE = 'A'.

  GS_VARIANT-report = SY-CPROG. " 'ZALV_BASIC_07'
  GS_VARIANT-variant = PA_LAY. " ํ™”๋ฉด์—์„œ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’

  GV_SAVE = 'A'. "์ผ๋‹จ A๋กœ ๊ณ ์ •


  " ์‹ ๊ทœ๋กœ ์ถ”๊ฐ€ํ•œ ์‹ ํ˜ธ๋“ฑ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ALV์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ
  GS_LAYOUT-excp_fname = 'LIGHT'.
  GS_LAYOUT-excp_led = 'X'. "1๊ตฌ ์‹ ํ˜ธ๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝ.


  " ์‹ ๊ทœ๋กœ ์ถ”๊ฐ€ํ•œ ๋ผ์ธ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ALV์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ
  GS_LAYOUT-info_fname = 'LCOLOR'.

  " ํˆด๋ฐ”์—์„œ ์ˆจ๊ธธ ๋ฒ„ํŠผ ์ถ”๊ฐ€ํ•˜๊ธฐ.
  APPEND CL_GUI_ALV_GRID=>MC_FC_PRINT TO GT_EXCLUDED.

ENDFORM.

 

โ–ถ FORM display_alv : ALV ์ถœ๋ ฅ ์—ญํ• 

FORM display_alv .
    GS_LAYOUT-CWIDTH_OPT ='X'.
    CALL METHOD go_alv->set_table_for_first_display
      EXPORTING
        i_structure_name = 'SDYN_CONN'
        is_variant       = GS_VARIANT
        i_save           = GV_SAVE
        is_layout        = GS_LAYOUT
        it_toolbar_excluding          = GT_EXCLUDED
      CHANGING
        it_outtab = gt_conn.
ENDFORM.