πŸ§‘‍πŸ’Ό SAP/ABAP

[SAP ABAP] CALL FUNCTION μ΄λž€? (CALL FUNCTION 생성 방법, 예제 포함)

Jay Din 2024. 7. 19. 16:49
728x90
λ°˜μ‘ν˜•

CALL FUNCTION μ΄λž€?

` CALL FUNCTION ` 은 λ‹€λ₯Έ ν•¨μˆ˜ λͺ¨λ“ˆμ„ ν˜ΈμΆœν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” λͺ…λ Ήλ¬Έμž…λ‹ˆλ‹€.

ν•¨μˆ˜ λͺ¨λ“ˆμ€ SAP μ‹œμŠ€ν…œμ—μ„œ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ„λ‘ μ •μ˜λœ 독립적인 μ½”λ“œ λΈ”λ‘μž…λ‹ˆλ‹€.

이λ₯Ό 톡해 ABAP ν”„λ‘œκ·Έλž¨μ€ λ‹€λ₯Έ ν•¨μˆ˜ λͺ¨λ“ˆμ˜ κΈ°λŠ₯을 μž¬μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

CALL FUNCTION 기본 ꡬ쑰

CALL FUNCTION 'ν•¨μˆ˜ λͺ¨λ“ˆ 이름'
  EXPORTING
    νŒŒλΌλ―Έν„°1 = κ°’1
    νŒŒλΌλ―Έν„°2 = κ°’2
  IMPORTING
    κ²°κ³Ό νŒŒλΌλ―Έν„°1 = λ³€μˆ˜1
    κ²°κ³Ό νŒŒλΌλ―Έν„°2 = λ³€μˆ˜2
  TABLES
    λ‚΄λΆ€ ν…Œμ΄λΈ”1 = itab1
    λ‚΄λΆ€ ν…Œμ΄λΈ”2 = itab2
  CHANGING
    λ³€μˆ˜1 = λ³€μˆ˜1
    λ³€μˆ˜2 = λ³€μˆ˜2
  EXCEPTIONS
    μ˜ˆμ™Έ1 = 번호1
    μ˜ˆμ™Έ2 = 번호2.

 

  • FUNCTION_MODULE_NAME: ν˜ΈμΆœν•  ν•¨μˆ˜ λͺ¨λ“ˆμ˜ μ΄λ¦„μž…λ‹ˆλ‹€.
  • EXPORTING: ν˜ΈμΆœν•  ν•¨μˆ˜μ— μ „λ‹¬λ˜λŠ” λ§€κ°œλ³€μˆ˜(Parameter)듀을 μ •μ˜ν•©λ‹ˆλ‹€.
  • IMPORTING: 호좜된 ν•¨μˆ˜λ‘œλΆ€ν„° λ°˜ν™˜λ˜λŠ” κ²°κ³Όλ₯Ό 받을 λ³€μˆ˜λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
  • TABLES: 인터널 ν…Œμ΄λΈ”μ„ ν•¨μˆ˜ λͺ¨λ“ˆμ— μ „λ‹¬ν•˜κ±°λ‚˜ ν•¨μˆ˜ λͺ¨λ“ˆμ—μ„œ λ°˜ν™˜λœ ν…Œμ΄λΈ”μ„ μˆ˜μ‹ ν•˜λŠ” 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
  • CHANGING: ν•¨μˆ˜ λͺ¨λ“ˆμ— μ „λ‹¬λœ 값을 λ³€κ²½ν•  수 μžˆλŠ” νŒŒλΌλ―Έν„°λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€.
  • EXCEPTIONS: 호좜된 ν•¨μˆ˜κ°€ λ°œμƒμ‹œν‚€λŠ” μ˜ˆμ™Έ 상황에 λŒ€ν•œ 처리λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
  • OTHERS: ` EXCEPTIONS ` μ„Ήμ…˜μ—μ„œ μ •μ˜ν•œ μ˜ˆμ™Έ μ€‘μ—μ„œ λ‹€λ₯Έ λͺ¨λ“  μ˜ˆμ™Έμ— λŒ€ν•œ 처리λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.

 

CALL FUNCTION 예제

κ°„λ‹¨ν•œ 예제둜 λ§μ…ˆ Function Module을 λ§Œλ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

1. CALL FUNCTION ν•¨μˆ˜ λͺ¨λ“ˆ λ§Œλ“€κΈ°

λ¨Όμ € SAP GUIμ—μ„œ Function Module을 μƒμ„±ν•©λ‹ˆλ‹€.

se37 μ˜ˆμ‹œ ν™”λ©΄

  1. νŠΈλžœμž­μ…˜ μ½”λ“œ SE37 μ‹€ν–‰
  2. Function Module 이름 μž…λ ₯: Z_ADD_NUMBERS
  3. Create 클릭

 

Create Function Module μ˜ˆμ‹œ ν™”λ©΄

  1. Function Group μž…λ ₯: 예λ₯Όλ“€μ–΄,  ZFUNCTION_GROUP
  2. Short Text μž…λ ₯: Add two numbers

 

Import, Export λ§€κ°œλ³€μˆ˜ μ •μ˜
Exceptions μ •μ˜

  1. Import Parameters
    • I_NUM1: νƒ€μž… I (μ •μˆ˜ν˜•)
    • I_NUM2: νƒ€μž… I (μ •μˆ˜ν˜•)
  2. Export Parameters
    • E_SUM: νƒ€μž… I (μ •μˆ˜ν˜•)
  3. Exceptions
    1. INVALID_INPUT: μ˜ˆμ™Έμ²˜λ¦¬

Source code μ˜ˆμ‹œ

  1. ν•¨μˆ˜ λͺ¨λ“ˆ Z_ADD_NUMBERS κ°€ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  2. I_NUM1 λ˜λŠ” I_NUM2κ°€ 초기 κ°’(빈 κ°’)이면 INVALID_INPUT μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.
  3. ν•΄λ‹Ή ν•¨μˆ˜ λͺ¨λ“ˆμ€ Active ν•΄μ€λ‹ˆλ‹€.

 

2. Function Module 호좜 예제

이제 μƒμ„±ν•œ ν•¨μˆ˜ λͺ¨λ“ˆμ„ ν˜ΈμΆœν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κ² μŠ΅λ‹ˆλ‹€.

DATA: lv_num1 TYPE i,
      lv_num2 TYPE i,
      lv_sum  TYPE i.

lv_num1 = 5.
lv_num2 = 10.

CALL FUNCTION 'Z_ADD_NUMBERS'
  EXPORTING
    i_num1 = lv_num1
    i_num2 = lv_num2
  IMPORTING
    e_sum  = lv_sum
  EXCEPTIONS
    invalid_input = 1
    others = 2.

IF sy-subrc = 0.
  WRITE: / 'Answer:', lv_num1, '+', lv_num2, '=', lv_sum.
ELSEIF sy-subrc = 1.
  WRITE: / 'Error: Invalid input provided.'.
ELSE.
  WRITE: / 'Error occurred:', sy-subrc.
ENDIF.

 

3. μ‹€ν–‰ ν™”λ©΄

좜λ ₯ν™”λ©΄

  • ν•¨μˆ˜ λͺ¨λ“ˆ 호좜이 μ„±κ³΅ν•˜λ©΄ 두 숫자의 합을 좜λ ₯ν•©λ‹ˆλ‹€.

 

*lv_num1 = 5.		" μ£Όμ„μœΌλ‘œ lv_num1 λΉˆκ°’ 처리

μ˜ˆμ™Έμ²˜λ¦¬ ν™”λ©΄

  • lv_num1 을 μ£Όμ„μ²˜λ¦¬ν•˜λ©΄ μ˜ˆμ™Έμ²˜λ¦¬μ— 따라 μœ„μ™€ 같이 좜λ ₯λ©λ‹ˆλ‹€.

 

728x90
λ°˜μ‘ν˜•