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

CS Student’s SAP&Tech Journey๐Ÿ’ซ

[SAP] ๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ Function Modules (2) Function Module ์„ ์–ธ ๋ฐ ์ƒ์„ฑํ•˜๊ธฐ ๋ณธ๋ฌธ

SAP/๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ Function Modules

[SAP] ๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ Function Modules (2) Function Module ์„ ์–ธ ๋ฐ ์ƒ์„ฑํ•˜๊ธฐ

์ธํฌ๋งˆํ‹ฑ 2025. 2. 5. 22:45

SAP ABAP์„ ๋‹ค๋ฃจ๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์„ ๋•Œ, Function Module(FM)์„ ํ™œ์šฉํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Function Module์€ ์ „์—ญ์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋กœ, ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๊ณ , ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ABAP Function Module์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ํ™œ์šฉ ์˜ˆ์ œ๊นŒ์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Function Modules ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํฌ์ŠคํŒ… ๋ณด๋Ÿฌ๊ฐ€๊ธฐ โฌ‡๏ธ

 

ABAP ํ”„๋กœ๊ทธ๋ž˜๋ฐ: Function Modules ํ•จ์ˆ˜, Call Function ์‚ฌ์šฉํ•˜๊ธฐ, SE37 ํ•จ์ˆ˜ ๊ฒ€์ƒ‰ํ•˜๊ธฐ

ABAP์—์„œ Function Module์€ ๋ชจ๋“ˆํ™”๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Function Group๊ณผ Function Modules์˜ ๊ด€๊ณ„, SE37์„ ํ™œ์šฉํ•œ ํ•จ์ˆ˜ ๊ฒ€์ƒ‰ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฐฉ

informatik.tistory.com

 

 


 

1. Function Module์ด๋ž€?

Function Module(FM)์€ SAP ์‹œ์Šคํ…œ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋Š” ๋ชจ๋“ˆํ™”๋œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

  • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ: ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ฐ€๋Šฅ: Import, Export, Changing, Exception์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›๊ธฐ ๊ฐ€๋Šฅ
  • ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ์šฉ์ด: SE37, SE80์—์„œ ์ƒ์„ฑ ๋ฐ ๋””๋ฒ„๊น… ๊ฐ€๋Šฅ

SAP์˜ ํ‘œ์ค€ ๊ธฐ๋Šฅ(์˜ˆ: BAPI_USER_GET_DETAIL)๋„ Function Module๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๋„ ์ง์ ‘ Custom Function Module์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. Function Module ๋งŒ๋“ค๊ธฐ

1๏ธโƒฃ Function Group ์ƒ์„ฑ

Function Module์„ ๋งŒ๋“ค๊ธฐ ์ „์—, Function Group์„ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Function Group์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Function Module์„ ํฌํ•จํ•˜๋Š” ๊ทธ๋ฃน์œผ๋กœ, ํ•˜๋‚˜์˜ ๊ทธ๋ฃน ๋‚ด์—์„œ๋Š” ์ค‘๋ณต๋œ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿ“ Function Group ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  1. SE80(Object Navigator) ์‹คํ–‰
  2. Function Group ์„ ํƒ ํ›„ ์ƒˆ๋กœ์šด Function Group ์ƒ์„ฑ
  3. Function Group ํ™œ์„ฑํ™” (Activate)

 

2๏ธโƒฃ Function Module ์ƒ์„ฑ

Function Group์„ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ์ด์ œ Function Module์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  1. SE80์—์„œ Function Group์„ ์„ ํƒ
  2. "Function Modules" ํด๋”์—์„œ ์ƒˆ๋กœ์šด Function Module ์ƒ์„ฑ (Warning ๋ฉ”์„ธ์ง€ ์›๋ž˜ ๋œธ)
  3. Import, Export, Exception ๋“ฑ์˜ ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •
  4. Function Module ๋‚ด๋ถ€ ๋กœ์ง ์ž‘์„ฑ
  5. ํ™œ์„ฑํ™”(Activate) ํ›„ ํ…Œ์ŠคํŠธ ์‹คํ–‰

 

3๏ธโƒฃ Function Module ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ

1) Import Parameters (์ž…๋ ฅ๊ฐ’)

  • Function Module์ด ํ˜ธ์ถœ๋  ๋•Œ ํ•„์š”ํ•œ ์ž…๋ ฅ๊ฐ’

2) Export Parameters (์ถœ๋ ฅ๊ฐ’)

  • Function Module์ด ์‹คํ–‰๋œ ํ›„ ๋ฐ˜ํ™˜ํ•  ๊ฐ’

3) Changing Parameters (์ž…์ถœ๋ ฅ ๊ฐ’)

  • ํ•จ์ˆ˜ ์‹คํ–‰ ์ค‘ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’ (์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)

4) Exceptions (์˜ˆ์™ธ ์ฒ˜๋ฆฌ)

  • ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ฒ˜๋ฆฌํ•  ์˜ˆ์™ธ ์ƒํ™ฉ

 

3. Function Module ์˜ˆ์ œ (๊ณ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐ)

๐Ÿ“Œ ZCALCULATOR_07์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์น™์—ฐ์‚ฐ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

1๏ธโƒฃ Function Module ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •

  • Import: I_ARG1, I_ARG2 (์ž…๋ ฅ ์ˆซ์ž), I_OPERATOR (์—ฐ์‚ฐ์ž)
  • Export: E_RESULT (๊ฒฐ๊ณผ)
  • Exception:
    • DIVIDE_BY_ZERO → 0์œผ๋กœ ๋‚˜๋ˆ„๋ ค ํ•  ๋•Œ
    • OPERATOR_INVALID → ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์—ฐ์‚ฐ์ž๊ฐ€ ์ž…๋ ฅ๋  ๋•Œ

Import ์„ค์ •

 

Export ์„ค์ •

 

Exceptions ์„ค์ •

 

2๏ธโƒฃ Function Module ์†Œ์Šค์ฝ”๋“œ ์ƒ์„ฑ

CASE i_operator.
  WHEN '+'.
    E_RESULT = I_ARG1 + I_ARG2.
  WHEN '-'.
    E_RESULT = I_ARG1 - I_ARG2.
  WHEN '*'.
    E_RESULT = I_ARG1 * I_ARG2.
  WHEN '/'.
    IF I_ARG2 = 0.
      RAISE divide_by_zero.
    ENDIF.
    E_RESULT = I_ARG1 / I_ARG2.
  WHEN OTHERS. "์˜ˆ์™ธ
    RAISE operator_invaild.
ENDCASE.

 

๐ŸŽฏ Function Module ํ™œ์„ฑํ™” ์˜ค๋ฅ˜

The master program of the function "ZCALCULATOR1_07" does not begin with "FUNCTION-POOL".
  1. Function Group์„ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. Function Group ๋‚ด๋ถ€์—์„œ FUNCTION MODULE์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. FUNCTION MODULE์„ ์‹คํ–‰ํ•  ๋•Œ, Function Group์ด ๋จผ์ € ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

3๏ธโƒฃ Function Module ํ˜ธ์ถœ ์ฝ”๋“œ (ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ)

PARAMETERS gv_num1 TYPE bc400_act.
PARAMETERS gv_num2 TYPE bc400_act.
PARAMETERS gv_oper TYPE char01.
DATA gv_result TYPE bc400_act.

CALL FUNCTION 'ZCALCULATOR2_07'
  EXPORTING
    i_num1           = gv_num1
    i_num2           = gv_num2
    i_operator       = gv_oper
  IMPORTING
    e_result         = gv_result
  EXCEPTIONS
    divide_by_zero   = 1
    operator_invaild = 2
    OTHERS           = 3.
CASE sy-subrc.
  WHEN 0.
    WRITE: '์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š”', gv_result, '์ž…๋‹ˆ๋‹ค'.
  WHEN 1.
    WRITE: '0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.', gv_num2.
  WHEN 2.
    WRITE: '์—ฐ์‚ฐ์ž๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.', gv_oper.
  WHEN 3.
    WRITE: '์•Œ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.'.

ENDCASE.

 

๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ™”๋ฉด

 

SAP ์‹œ์Šคํ…œ์—์„œ Function Module์„ ํ™œ์šฉํ•˜๋ฉด, ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ ์—†์ด ์†์‰ฝ๊ฒŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.