ABAP Concept (๐Ÿ“๊ฐœ๋…)/Advanced

|ABAP๊ฐœ๋…์ •๋ฆฌ| Function ๊ตฌ์กฐ

two_ssun 2022. 7. 12. 00:03

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ Function ์ด๋ž€ ๊ฒƒ์ด ์กด์žฌํ•˜๋ฉฐ, ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋กœ์ง์„ ๋ชจ๋“ˆํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š” Fucntion์ด ABAP ์—์„œ๋Š” ์–ด๋–ค ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋Š”์ง€ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. 

( ๊ธฐ๋ณธ์ ์ธ ํŽ‘์…˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช… ๋ฐ RFC(I/F), Update Module ๊ด€๋ จ ๋‚ด์šฉ์€ ์ƒ๋žตํ•˜์˜€๋‹ค. )

 


ABAP์—์„œ๋„ ์†Œ์Šค๋ฅผ ๋ชจ๋“ˆํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ์กด์žฌํ•˜๋ฉฐ, ๊ทธ ์ค‘ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ Function์ผ ๊ฒƒ์ด๋‹ค. ABAP์—์„œ Function์€ Function Module์ด๋ผ ํ•˜๋ฉฐ, Function Group์ด๋ž€ ์ƒ์œ„ ํ•ญ๋ชฉ์— ์ข…์†๋˜์–ด ์žˆ๋‹ค. ์ฆ‰, Function Group์„ ๋จผ์ € ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ํ•˜์œ„ ๋ ˆ๋ฒจ์— Function Module์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ Function Group ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Function Module์ด ์กด์žฌ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค. 

 

Function Group์—์„œ๋Š” Type-1 ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™์ผํ•˜๊ฒŒ ์ „์—ญ๋ณ€์ˆ˜, Subroutine, Screen, Text Symbol ๋“ฑ์„ ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•˜๋ฉฐ, ์ด๋ ‡๊ฒŒ ์„ ์–ธ๋œ ๊ฒƒ๋“ค์€ ๋™์ผํ•œ Function Group ๋ฐ‘์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Function Module์—์„œ ์‚ฌ์šฉ(ํ˜ธ์ถœ)์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

< Function Group ๋‚ด Include Program ๊ตฌ์กฐ >
< Function Group Main Program >

์˜ˆ์ œ์ฒ˜๋Ÿผ Function Group( "YYFG_CM01" )์„ ์ƒ์„ฑํ•˜๋ฉด ํ•˜๋‚˜์˜ Main Program๊ณผ 2๊ฐœ์˜ Include Program์ด ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

System-defined Include Program
"SAPL"  +  Function Group๋ช…
: Function Group Main Program ( FunctionPool )
"L"  +  Function Group๋ช…  +  "TOP"
: ๊ธ€๋กœ๋ฒŒ(์ „์—ญ)์œผ๋กœ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜(Data Object)๋ฅผ ์„ ์–ธํ•˜๋Š” Include Program

"L"  +  Function Group๋ช…  +  "UXX" : Function Module ์ƒ์„ฑ์‹œ ์ƒ์„ฑ๋˜๋Š” Include Program์ด ์„ ์–ธ๋˜๋Š” Include Program

๊ทธ ๋ฐ–์— ํ•˜๋‹จ์— ์ฃผ์„๋˜์–ด ์žˆ๋Š” Subprograms๊ณผ PBO/PAI Modules ๊ด€๋ จ Include Program์€ ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ, ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

User-defined Include Program
"L"  +  Function Group๋ช…  +  "F"  +  Sequence 2์ž๋ฆฌ
: Subroutine์„ ์ •์˜ํ•˜๋Š” Include Program

"L"  +  Function Group๋ช…  +  "O"  +  Sequence 2์ž๋ฆฌ : PBO Module์„ ์ •์˜ํ•˜๋Š” Include Program
"L"  +  Function Group๋ช…  +  "I"  +  Sequence 2์ž๋ฆฌ : PAI Module์„ ์ •์˜ํ•˜๋Š” Include Program 

 

< Global ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” "TOP" Include Program >

"L * TOP" Include Program์— ์„ ์–ธํ•œ ์ „์—ญ๋ณ€์ˆ˜๋Š” Function Group์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Function Module์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ํ•œ Default ๊ตฌ๋ฌธ์ธ "FUNCTION-POOL"์˜ Option ๊ฐ’์ธ "MESSAGE-ID"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Function Module์—์„œ ์‚ฌ์šฉํ•  Message ID๋„ Default๋กœ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

< Function Module์ด ์ƒ์„ฑ๋œ Function Group ๊ตฌ์กฐ >
< Function Module ์ƒ์„ฑ์‹œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ Include Program >

์œ„์™€ ๊ฐ™์ด Function Module๋„ ๊ฒฐ๊ตญ ํ•˜๋‚˜์˜ Include Program์ด๋ฉฐ, "L" + Function Group๋ช… + "U" + 2์ž๋ฆฌ Sequence ๋ฅผ ๊ฐ€์ง„ ์ด๋ฆ„์œผ๋กœ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค. ( ์˜ˆ์ œ์™€ ๊ฐ™์ด ์ƒ์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ "U01", "U02"๋กœ ์ƒ์„ฑ๋จ ) ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ Include Program์€ "L * UXX" Include Program์— ์ž๋™์œผ๋กœ ์„ ์–ธ๋˜๋ฉฐ, ๊ทธ ์„ ์–ธ๋œ ๊ตฌ๋ฌธ ๋ฐ‘์—๋Š” ์‹ค์ œ ์ƒ์„ฑ๋œ Function Module๋ช…์ด ์ฃผ์„์œผ๋กœ ํ‘œ๊ธฐ๋œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์ƒ๋‹จ์— ์ ํ˜€์žˆ๋Š” ์ฃผ์„์ฒ˜๋Ÿผ ์ง์ ‘ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€ํ•˜๋ฉฐ, Function Module ์ƒ์„ฑ์‹œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ Generate ๋˜๋Š” Include Program์ด๋‹ค.  

 

์ด๋ ‡๋“ฏ Function Module ํ•˜๋‚˜๊ฐ€ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹ˆ๋ผ, Function Group์˜ ํ•˜๋‚˜์˜ ์ปค๋‹ค๋ž€ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์— ์—ฌ๋Ÿฌ Function Module (Include Program)๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 


์ด์™€ ๊ฐ™์€ Function Group๊ณผ Function Module ๊ตฌ์กฐ๋กœ ์ธํ•ด ์‹ค๋ฌด์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜์‚ฌํ•ญ๋“ค์ด ์ข…์ข… ๋ฐœ์ƒํ•˜๋‹ˆ ์ฃผ์˜ํ•˜๋„๋ก ํ•˜์ž. 

 

Case #1. Function Module Syntax ์˜ค๋ฅ˜

์ฃผ๋กœ ABAP Dictionary Object (Table, Structure, Field..)๋ณ€๊ฒฝ์‹œ ๋ฐœ์ƒ๋˜๋Š” ๋ฌธ์ œ๋กœ, ์˜ˆ๋ฅผ ๋“ค์–ด Table Field์˜ ๋ณ€๊ฒฝ ๋˜๋Š” ์‚ญ์ œ์‹œ, ๊ทธ ์˜ํ–ฅ์œผ๋กœ ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ์‚ฌ์šฉ๋œ ๊ธฐ์กด ์†Œ์Šค์—์„œ Syntax ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ Syntax ์—๋Ÿฌ๊ฐ€ Function Module์—์„œ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด, ๊ฑฐ๊ธฐ์„œ ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ Function Module์ด ์†ํ•ด ์žˆ๋Š” Function Group์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Function Module์— ๋Œ€ํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ฒŒ ๋œ๋‹ค. ์•ž์„œ ๋งํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด Function Group์ด๋ž€, ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์— Function Module( Include Program )๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— Function Module์˜ ์—๋Ÿฌ๋Š” ๊ณง Function Group ์˜ ์—๋Ÿฌ์ด๊ธฐ๋„ ํ•˜๋‹ค. ๋งŒ์•ฝ Interface ๊ด€๋ จ Function Module์„ ๋ชจ์•„๋‘” Function Group ์ด์˜€๋‹ค๋ฉด ๊ทธ ์•ˆ์˜ ๋ชจ๋“  Interface๊ฐ€ ๋จนํ†ต์ด ๋˜๋Š” ๋”์ฐํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

Case #2. ์ „์—ญ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”(Clear) ๋ˆ„๋ฝ ์˜ค๋ฅ˜ 

๋™์ผํ•œ Function Group ๋‚ด์— Function Module๋“ค์ด ๋™์ผํ•œ ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๊ฐ™์€ Function Group์˜ Function Module "A" ์™€ "B" ๊ฐ€ ๋™์ผํ•œ ์ „์—ญ๋ณ€์ˆ˜ "G"๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ํ”„๋กœ๊ทธ๋žจ์—์„œ Function "A"๋ฅผ ๋จผ์ € ํ˜ธ์ถœ ํ›„ Function "B" ๋ฅผ ํ˜ธ์ถœ ํ–ˆ๋‹ค๋ฉด "B"์—์„œ๋Š” "A"์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ์ „์—ญ๋ณ€์ˆ˜ "G"์— ๋‚จ์•„์žˆ๋Š” ๊ฐ’์„ ๊ทธ๋Œ€๋กœ "B"์—์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ Function ์ดˆ๋ฐ˜์— ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ์“ฐ๋ ˆ๊ธฐ ๊ฐ’ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋˜์–ด ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๋กœ์ง์ ์œผ๋กœ Function Module ๋ผ๋ฆฌ ๊ฐ’์„ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ์‚ฌ์šฉ๋˜๋Š” ์ „์—ญ๋ณ€์ˆ˜๋ผ๋ฉด ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งž๋‹ค.