λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

ABAP Concept (πŸ“κ°œλ…)/Advanced

Function Module νŒŒλΌλ―Έν„° μ’…λ₯˜μ™€ μΈν„°νŽ˜μ΄μŠ€ 방식

ABAP κ°œλ°œμ„ ν•˜λ‹€ 보면 λ°˜λ“œμ‹œ μ ‘ν•˜κ²Œ λ˜λŠ” Function Module (ν•¨μˆ˜ λͺ¨λ“ˆ)의 μ€‘μš”ν•œ κ°œλ… 쀑 ν•˜λ‚˜κ°€ λ°”λ‘œ Parameter Interface (νŒŒλΌλ―Έν„° μΈν„°νŽ˜μ΄μŠ€)이닀.

이번 ν¬μŠ€νŒ…μ—μ„œλŠ” ABAP ν•¨μˆ˜ λͺ¨λ“ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” λ‹€μ–‘ν•œ νŒŒλΌλ―Έν„° νƒ€μž…( IMPORTING, EXPORTING, CHANGING, TABLES )의 차이점과 νŠΉμ§•, μ‚¬μš© μ‹œ β—μ£Όμ˜μ‚¬ν•­μ„ μ„€λͺ…ν•΄ 보도둝 ν•˜κ² λ‹€. μ‹€λ¬΄μ—μ„œλŠ” νŒŒλΌλ―Έν„°λ₯Ό 잘λͺ» μ΄ν•΄ν•΄μ„œ 잘λͺ»λœ 값이 λ‚˜μ˜€κ±°λ‚˜ 잘λͺ» μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ μžˆμœΌλ‹ˆ μ£Όμ˜μ‚¬ν•­μ„ μœ μ‹¬νžˆ 보도둝 ν•˜μž.

 

πŸ“Œ Function Module (ν•¨μˆ˜ λͺ¨λ“ˆ)μ΄λž€?
ν•¨μˆ˜ λͺ¨λ“ˆμ€ 곡톡 κΈ°λŠ₯을 μΊ‘μŠν™”ν•˜μ—¬ μž¬μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ§„ ABAP의 κΈ°λŠ₯이자 ABAPμ—μ„œ λ‘œμ§μ„ λͺ¨λ“ˆν™”(Modulization) ν•˜λŠ” 방법 쀑 κ°€μž₯ 많이 μ‚¬μš©λ˜κ³  μžˆκΈ°λ„ ν•˜λ‹€. SAP ν‘œμ€€μ—μ„œλ„ κ΄‘λ²”μœ„ν•˜κ²Œ μ‚¬μš©λ˜κ³  있으며, 타 μ‹œμŠ€ν…œκ³Όμ˜ RFC(Remote Function Call)λ₯Ό ν†΅ν•œ μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„μ‹œμ—λ„ 많이 μ‚¬μš©λœλ‹€. 

πŸ”— 2022.06.26 - [ABAP Concept (πŸ“κ°œλ…)/Advanced] - |ABAPκ°œλ…μ •λ¦¬| Function ꡬ쑰

 

|ABAPκ°œλ…μ •λ¦¬| Function Module (ν•¨μˆ˜) ꡬ쑰

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” λŒ€λΆ€λΆ„ Function μ΄λž€ 것이 μ‘΄μž¬ν•˜λ©°, 자주 μ‚¬μš©λ˜λŠ” λ‘œμ§μ„ λͺ¨λ“ˆν™” ν•˜λŠ” λ°©λ²•μœΌλ‘œ 많이 μ‚¬μš©λœλ‹€. 일반적으둜 μ•Œκ³  μžˆλŠ” Fucntion이 ABAP μ—μ„œλŠ” μ–΄λ–€ ꡬ쑰둜 λ˜μ–΄ μžˆλŠ”μ§€ 이

twossun.tistory.com

 


듀어가기에 μ•žμ„œ,

ν•¨μˆ˜μ˜ ꡬ쑰와 Pass by Value와 Pass by Reference κ°œλ…μ€ 미리 μ•Œμ•„λ‘λ„λ‘ ν•˜μž.

 

πŸ”— 2025.04.02 - [ABAP Concept (πŸ“κ°œλ…)/Advanced] - Parameter 전달 방식 Pass by Value 와 Pass by Reference

 

Parameter 전달 방식 Pass by Value 와 Pass by Reference

ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€ 보면 μ„œλΈŒλ£¨ν‹΄μ΄λ‚˜ ν•¨μˆ˜ λ˜λŠ” 클래슀의 λ©”μ†Œλ“œμ— λ³€μˆ˜λ₯Ό 전달할 일이 λ§Žλ‹€. μ΄λ•Œ 전달 방식에 따라 λ„˜κ²¨μ§€λŠ” λ³€μˆ˜μ˜ λ³€κ²½ μ—¬λΆ€κ°€ λ‹€λ₯΄κ²Œ μž‘λ™ν•˜λŠ”λ° 이 두 κ°€μ§€ λ°©μ‹μœΌλ‘œ μ „

twossun.tistory.com

 

 

πŸ“Œ ν•¨μˆ˜ λͺ¨λ“ˆ νŒŒλΌλ―Έν„° μ’…λ₯˜

ν•¨μˆ˜ λͺ¨λ“ˆμ€ 외뢀와 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•΄ μΈν„°νŽ˜μ΄μŠ€ νŒŒλΌλ―Έν„°λ₯Ό μ‚¬μš©ν•˜λŠ”λ° μ•„λž˜ λ„€ κ°€μ§€ νŒŒλΌλ―Έν„° μœ ν˜•μ΄ μ‘΄μž¬ν•œλ‹€.

기본적으둜 ν•΄λ‹Ή νŒŒλΌλ―Έν„°λŠ” Pass by Reference ν˜•νƒœλ‘œ μž‘λ™ν•˜λ©°, Pass by ValueλŠ” μ²΄ν¬λ°•μŠ€λ₯Ό 톡해 선택가λŠ₯ν•˜λ‹€. ( TABLESνŒŒλΌλ―Έν„°λŠ” μ˜ˆμ™Έ )  

< Function Moduleμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” νŒŒλΌλ―Έν„° >

1. IMPORTING – μž…λ ₯(Input) μ „μš© νŒŒλΌλ―Έν„°

  • μš©λ„: μ™ΈλΆ€μ—μ„œ ν•¨μˆ˜ λͺ¨λ“ˆλ‘œ 데이터λ₯Ό 전달할 λ•Œ μ‚¬μš©
  • νŠΉμ§•: ν•„μˆ˜ μž…λ ₯κ°’ λ˜λŠ” μ„ νƒκ°’μœΌλ‘œ μ„€μ • κ°€λŠ₯
⚠️주의: IMPORTING νŒŒλΌλ―Έν„°λŠ” 기본적으둜 Pass by Reference(참쑰둜 전달)이며, 값을 λ°”κΎΈμ§€ μ•ŠλŠ” 것이 원칙이닀.(ν•¨μˆ˜ λ‚΄μ—μ„œ λ³€κ²½ μ‹œ Syntax error λ°œμƒ)  Pass by Value(κ°’μœΌλ‘œ 전달) μ‹œμ—λŠ” 값을 λ°”κΏ€ μˆ˜λŠ” μžˆμ§€λ§Œ, μš©λ„λŠ” ν•¨μˆ˜μ—μ„œ μ‚¬μš©μ˜ λͺ©μ μ΄λ―€λ‘œ λ³€κ²½λœ 값을 λ‹€μ‹œ μ „λ‹¬ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. 마치 Subroutine의 "USING VALUE( νŒŒλΌλ―Έν„°λͺ… )"와 λ™μΌν•œ 효과λ₯Ό κ°–λŠ”λ‹€.

 

2. EXPORTING – 좜λ ₯(Output) μ „μš© νŒŒλΌλ―Έν„°

  • μš©λ„: ν•¨μˆ˜ μ‹€ν–‰ ν›„ μ™ΈλΆ€λ‘œ κ²°κ³Όλ₯Ό 전달
  • νŠΉμ§•: ν˜ΈμΆœν•  λ•Œ νŒŒλΌλ―Έν„°λ₯Ό λ„˜κΈ°μ§€ μ•Šμ•„λ„ 됨
⚠️⚠️주의: EXPORTING νŒŒλΌλ―Έν„°λ₯Ό Pass by Reference(참쑰둜 전달)둜 μ‚¬μš© μ‹œ, ν•¨μˆ˜ 호좜 μ‹œ 값이 μžλ™μœΌλ‘œ μ΄ˆκΈ°ν™”λ˜μ§€ μ•ŠμœΌλ―€λ‘œ 호좜 μ „ λ˜λŠ” λ‚΄λΆ€ μ‹œμž‘ μ‹œμ μ— λ°˜λ“œμ‹œ 값을 μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•œλ‹€. 

예λ₯Ό λ“€μ–΄:
ν•¨μˆ˜ 호좜 μ‹œ Pass by Reference둜 EXPORTING νŒŒλΌλ―Έν„° μ‚¬μš© μ‹œ 이전에 μ‚¬μš©ν•˜λ˜ 값이 λ‚¨μ•„μžˆλŠ” 경우, κ·Έ 값을 κ·ΈλŒ€λ‘œ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— κ²°κ³Όκ°€ 잘λͺ»λœ κ°’μœΌλ‘œ λ‚˜μ˜¬ 수 μžˆλ‹€. 

Pass by Value(κ°’μœΌλ‘œ 전달)인 κ²½μš°λŠ” 무쑰건 μ΄ˆκΈ°ν™”λœ κ°’μœΌλ‘œ μ‹œμž‘ν•œλ‹€. λ”°λΌμ„œ EXPORTING νŒŒλΌλ―Έν„° μ‚¬μš© μ‹œ Pass by Valueλ₯Ό 무쑰건 찍고 μ‹œμž‘ν•˜λŠ” 것도 였λ₯˜λ₯Ό λ°©μ§€ν•˜λŠ” 방법일 수 μžˆκ² λ‹€. 

 

3. CHANGING – μž…, 좜λ ₯ (Input & Output) νŒŒλΌλ―Έν„°

  • μš©λ„: 호좜 μ‹œ 값을 μ „λ‹¬ν•˜κ³ , μ‹€ν–‰ 결과둜 λ³€κ²½λœ 값을 λ‹€μ‹œ λ°›μŒ
  • νŠΉμ§•: ν•„μˆ˜ μž…λ ₯κ°’ λ˜λŠ” μ„ νƒκ°’μœΌλ‘œ μ„€μ • κ°€λŠ₯
  • μ‹€λ¬΄μ—μ„œλŠ” μ£ΌλŠ” κ°’κ³Ό λ°›λŠ” 값을 λͺ…ν™•νžˆ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ CHANGING νŒŒλΌλ―Έν„°λ³΄λ‹€λŠ” IMPORTING/EXPORTING νŒŒλΌλ―Έν„°λ‘œ λ‚˜λˆ„μ–΄ μ‚¬μš©ν•¨
⚠️ 주의: CHANGING νŒŒλΌλ―Έν„°λŠ” ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œλ„ λ³€κ²½λœ 값을 확인해야 ν•  λ•Œ μ‚¬μš©λœλ‹€.

 

4. TABLES – μΈν„°λ„ ν…Œμ΄λΈ” μ „μš© μž…, 좜λ ₯ (Input & Output) νŒŒλΌλ―Έν„°

  • μš©λ„ : 인터널 ν…Œμ΄λΈ”μ„ νŒŒλΌλ―Έν„°λ‘œ λ„˜κΈ°κ³  λ‹€μ‹œ κ²°κ³Όλ₯Ό λŒλ €λ°›μ„ λ•Œ μ‚¬μš©
  • νŠΉμ§• : 전달 방식은 λ°˜λ“œμ‹œ Pass by Reference (μ°Έμ‘° 전달)만 κ°€λŠ₯
  • πŸ’‘ν—€λ” 라인(Header Line)이 μ‘΄μž¬ν•˜λŠ” μΈν„°λ„ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜λŠ” ꡬ쑰둜 λ§Œμ•½, 헀더라인이 μ—†λŠ” 인터널 ν…Œμ΄λΈ”μ„ 받아도 ν•¨μˆ˜ λ‚΄λΆ€μ μœΌλ‘œ μžλ™μœΌλ‘œ 생성됨 
  • ν˜„μž¬λŠ” 더 이상 ꢌμž₯λ˜μ§€ μ•ŠμŒ (Obsolete)
⚠️ μ£Όμ˜: SAPμ—μ„œλŠ” TABLES λŒ€μ‹  CHANGING νŒŒλΌλ―Έν„°λ₯Ό μ‚¬μš©ν•˜μ—¬ 인터널 ν…Œμ΄λΈ”μ„ λ„˜κΈ°λŠ” 것을 ꢌμž₯ν•œλ‹€. λ¬Όλ‘  IMPORTING/EXPORTING νŒŒλΌλ―Έν„°λ‘œλ„ 인터널 ν…Œμ΄λΈ”μ„ 주고받을 수 μžˆλ‹€.