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

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

[SAP] ๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ Function Modules (1) Function Modules์ด๋ž€? / CALL FUNCTION ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ•˜๊ธฐ ๋ณธ๋ฌธ

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

[SAP] ๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ Function Modules (1) Function Modules์ด๋ž€? / CALL FUNCTION ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ•˜๊ธฐ

์ธํฌ๋งˆํ‹ฑ 2025. 1. 31. 19:19

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

 

 

๋กœ์ปฌ ๋ชจ๋“ˆ๊ณผ ๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•œ ํฌ์ŠคํŒ… ๋ณด๋Ÿฌ๊ฐ€๊ธฐ โฌ‡๏ธ

 

[ABAP] ๋กœ์ปฌ ๋ชจ๋“ˆ - ์„œ๋ธŒ๋ฃจํ‹ด(Subroutine)

ABAP์—์„œ๋Š” ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆํ™”๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Local Module vs Global Module ์ฐจ์ด, FORM์„ ํ™œ์šฉํ•œ ์„œ๋ธŒ๋ฃจํ‹ด ์ •์˜ ๋ฐ ํ˜ธ์ถœ, ๊ทธ๋ฆฌ๊ณ  Call by Value vs Call by

informatik.tistory.com

 

 


 

๐ŸŽฏ Function Group๊ณผ Function Modules์˜ ๊ด€๊ณ„

Function Group (1) : Function Module (N) ๊ด€๊ณ„ 

1. Function Group

  • Function Module์˜ ์ƒ์œ„ ๊ฐœ๋…์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Function Module์„ ํฌํ•จํ•˜๋Š” ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ ์ฝ”๋“œ SE80์„ ํ†ตํ•ด ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. Function Module

  • Function Group ๋‚ด์— ์†ํ•˜๋Š” ๊ฐœ๋ณ„ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • Function Module์€ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๊ธ€๋กœ๋ฒŒ ๋ชจ๋“ˆ์ด๋ฏ€๋กœ, ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค(Interface)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ฃผ๊ณ ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • CALL FUNCTION์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ Function Module 

1. SE37์—์„œ Function Module์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์˜๋ฏธ

์œ ํ˜• ์˜๋ฏธ
IMPORT ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” ๊ฐ’ (์™ธ๋ถ€์—์„œ ๊ฐ’ ์ „๋‹ฌ)
EXPORT ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’ (๊ฒฐ๊ณผ๊ฐ’)
CHANGING ์™ธ๋ถ€์—์„œ ์ „๋‹ฌํ•œ ๊ฐ’์ด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋ณ€๊ฒฝ๋˜๋ฉฐ ์›๋ณธ์—๋„ ๋ฐ˜์˜๋จ
EXCEPTIONS ํ•จ์ˆ˜ ์‹คํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•  ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

 

2. Function Module ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐ ์˜ˆ์™ธ ๊ฐ’ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

 * Function Module ํ•จ์ˆ˜ ํ˜ธ์ถœ

CALL FUNCTION 'BC400_MOS_POWER'
  EXPORTING
    iv_base                     = ์ž…๋ ฅ ๋ฐ›์„ ๊ฐ’
    iv_power                    = ์ž…๋ ฅ ๋ฐ›์„ ๊ฐ’
  IMPORTING
    ev_result                   = ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ ์ถœ๋ ฅํ•˜๋Š” ๊ฐ’
  EXCEPTIONS
    power_value_too_high        = 1
    result_value_too_high       = 2
    others                      = 3.
    
 * ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ ์ถœ๋ ฅํ•˜๊ธฐ
CASE sy-subrc.
  WHEN 0. "์„ฑ๊ณต
    WRITE: 'POWER๊ฐ’: ', ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ ์ถœ๋ ฅํ•˜๋Š” ๊ฐ’.
  WHEN 1. "POWER_VALUE_TOO_HIGH ๋ฐœ์ƒ
    WRITE: '๊ฐ’ ์ดˆ๊ณผ:', iv_power์— ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’.
  WHEN 2. "RESULT_VALUE_TOO_HIGH ๋ฐœ์ƒ
    WRITE: '๊ฒฐ๊ณผ๊ฐ’ ์ดˆ๊ณผ.'.
  WHEN 3. "OTHERS - ์•Œ ์ˆ˜ ์—†๋Š” ์˜ˆ์™ธ
    WRITE: '์•Œ ์ˆ˜ ์—†๋Š” ์˜ˆ์™ธ ๋ฐœ์ƒ.'.
ENDCASE.

 

๐Ÿ“Œ SE37์„ ํ™œ์šฉํ•œ ํ•จ์ˆ˜ ๊ฒ€์ƒ‰ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•

SAP์—์„œ๋Š” SE37 ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ Function Module์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. SE37์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜ ๊ฒ€์ƒ‰ํ•˜๊ธฐ

  1. ํŠธ๋žœ์žญ์…˜ ์ฝ”๋“œ SE37 ์‹คํ–‰
  2. ๊ฒ€์ƒ‰์ฐฝ์— ํ•จ์ˆ˜ ์ด๋ฆ„ ์ž…๋ ฅ (์˜ˆ: BC400_MOS_POWER)
  3. "Display" ๋ฒ„ํŠผ ํด๋ฆญํ•˜์—ฌ ํ•จ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ์ฝ”๋“œ ํ™•์ธ

2. SE37์—์„œ ํ•จ์ˆ˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

  1. SE37 ์‹คํ–‰ ํ›„ ํ•จ์ˆ˜๋ช…์„ ์ž…๋ ฅ
  2. "Test/Execute (F8)" ๋ฒ„ํŠผ ํด๋ฆญ
  3. IMPORT, EXPORT, CHANGING, EXCEPTIONS ํ•„๋“œ์— ๊ฐ’ ์ž…๋ ฅ ํ›„ ์‹คํ–‰
  4. ๊ฒฐ๊ณผ ๋ฐ ์˜ˆ์™ธ ํ™•์ธ

 

Import : ์ž…๋ ฅ ๋ฐ›๋Š” ๊ฐ’

  • IV_BASE์™€ IV_POWER ๋ชจ๋‘ PASS BY VALUE ์„ ํƒ ์•ˆ๋˜์–ด ์žˆ๊ธฐ์— Call By Reference ์ž…๋‹ˆ๋‹ค.
  • IV_BASE๋Š” ํ•„์ˆ˜ ๊ฐ’์ด๋ฉฐ ๋””ํดํŠธ ๊ฐ’์€ ์—†๊ณ , IV_POWER๋Š” ์˜ต์…˜ ๊ฐ’์ด๋ฉฐ ๋””ํดํŠธ ๊ฐ’์€ 2 ์ž…๋‹ˆ๋‹ค.

Export: ์ถœ๋ ฅํ•˜๋Š” ๊ฐ’
Exceptions: ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

 

 

โœ… CALL FUNCTION์„ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ˆ์ œ (BC400_MOS_POWER)

์•„๋ž˜ ์˜ˆ์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ base ๊ฐ’๊ณผ power ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ณฑ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

PARAMETERS gv_base TYPE BC400_COMPUTE_BASE.
PARAMETERS gv_power TYPE C400_COMPUTE_POWE.

DATA gv_result TYPE BC400_COMPUTE_RESULT.


CALL FUNCTION 'BC400_MOS_POWER'
  EXPORTING
    iv_base                     = gv_base
   IV_POWER                    = gv_power
 IMPORTING
   EV_RESULT                   = gv_result
 EXCEPTIONS
   POWER_VALUE_TOO_HIGH        = 1
   RESULT_VALUE_TOO_HIGH       = 2
   OTHERS                      = 3
          .

CASE sy-subrc.
  WHEN 0.
    WRITE: '์„ฑ๊ณต', gv_result.
  WHEN 1.
    WRITE: '๊ฐ’ ์ดˆ๊ณผ', gv_power.
  WHEN 2.
    WRITE: '๊ฒฐ๊ณผ ๊ฐ’ ์ดˆ๊ณผ'.
  WHEN 3. 
    WRITE: '์•Œ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜'.
ENDCASE.