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

Parameter ์ „๋‹ฌ ๋ฐฉ์‹ Pass by Value ์™€ Pass by Reference

two_ssun 2025. 4. 8. 08:59

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์„œ๋ธŒ๋ฃจํ‹ด์ด๋‚˜ ํ•จ์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ์— ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ผ์ด ๋งŽ๋‹ค. ์ด๋•Œ ์ „๋‹ฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋„˜๊ฒจ์ง€๋Š” ๋ณ€์ˆ˜์˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”๋ฐ ์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ์ง„๋‹ค. 

  • โœ… Pass by Value (๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ)
  • โœ… Pass by Reference (์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ)

โœ… Pass by Value๋ž€?

Pass by Value๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ธŒ๋ฃจํ‹ด์ด๋‚˜ ํ•จ์ˆ˜(๋ฉ”์„œ๋“œ)์— ๊ฐ’์„ ์ „๋‹ฌํ•  ๋•Œ ๋ณต์‚ฌ๋ณธ์„ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

์นœ๊ตฌ์—๊ฒŒ ์ค‘์š”ํ•œ ์„œ๋ฅ˜๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์ง€๋งŒ, ์žƒ์–ด๋ฒ„๋ฆด๊นŒ ๊ฑฑ์ •๋ผ์„œ ๋ณต์‚ฌ๋ณธ์„ ์คฌ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์นœ๊ตฌ๊ฐ€ ๋ณต์‚ฌ๋ณธ์— ๋‚™์„œ๋ฅผ ํ•˜๋“  ์ฐข๋“ , ์›๋ณธ ์„œ๋ฅ˜์—๋Š” ์ „ํ˜€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ๋ฐ”๋กœ ์ด๊ฒŒ Pass by Value์ด๋‹ค.

 

๐Ÿ“Œ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ 

  • ํ•ด๋‹น ๋ฃจํ‹ด์ด ํ˜ธ์ถœ๋  ๋•Œ, ์ „๋‹ฌ๋œ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅํ•จ.
  • ๋ฃจํ‹ด ๋‚ด๋ถ€๋Š” ๋ณต์‚ฌ๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ , ์›๋ณธ ๋ณ€์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€๋จ.
  • ๋ฃจํ‹ด์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ณต์‚ฌ๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•ด์ œ๋˜๊ณ , ์›๋ณธ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ.

๐Ÿ“Œ ์‚ฌ์šฉ ์‹œ์ 

  • Pass by Value๋Š” ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค. ํŠนํžˆ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜ ํ•ด๋‹น ๋ฃจํ‹ด ๋‚ด์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํ™œ์šฉ๋œ๋‹ค.

๐Ÿ“Œ ABAP์—์„œ Pass by Value ์‚ฌ์šฉ์ฒ˜

  • ์„œ๋ธŒ๋ฃจํ‹ด์˜ USING ํŒŒ๋ผ๋ฏธํ„ฐ์— "VALUE ( ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… )"  ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ
  • ์„œ๋ธŒ๋ฃจํ‹ด์˜ CHANGING ํŒŒ๋ผ๋ฏธํ„ฐ์— "VALUE ( ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… )" ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ 
  • ํ•จ์ˆ˜์˜ IMPORTING, EXPORTING, CHANGING ํŒŒ๋ผ๋ฏธํ„ฐ์— "Pass by Value" ๋ฅผ ์ฒดํฌํ–ˆ์„ ๊ฒฝ์šฐ 
  • ๋ฉ”์†Œ๋“œ์˜ IMPORTING, EXPORTING, CHANGING  ํŒŒ๋ผ๋ฏธํ„ฐ์— "Pass Value" ๋ฅผ ์ฒดํฌํ–ˆ์„ ๊ฒฝ์šฐ 
  • ๋ฉ”์†Œ๋“œ RETURN ํŒŒ๋ผ๋ฏธํ„ฐ
๐Ÿšจ์„œ๋ธŒ๋ฃจํ‹ด/ํ•จ์ˆ˜/๋ฉ”์†Œ๋“œ CHANGING ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์–‘๋ฐฉํ–ฅ Pass by Value๋กœ์จ, ๋ฃจํ‹ด ๋‚ด๋ถ€์—์„œ ๋ฐ›์€ ๊ฐ’์„ ๋‹ค์‹œ ์›๋ณธ ๋ณ€์ˆ˜์— ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. 

โœ… Pass by Reference๋ž€?

Pass by Reference๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋ณต์‚ฌ๋ณธ์ด ์•„๋‹Œ ์›๋ณธ ๊ทธ ์ž์ฒด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

์ด๋ฒˆ์—๋Š” ์นœ๊ตฌ์—๊ฒŒ ์„œ๋ฅ˜ ์›๋ณธ์„ ์คฌ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์นœ๊ตฌ๊ฐ€ ๋‚ด์šฉ์„ ์ง€์šฐ๊ฑฐ๋‚˜ ๋ฐ”๊พธ๋ฉด ์›๋ณธ๋„ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ Pass by Reference ์ด๋‹ค.

 

๐Ÿ“Œ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€์ 

  • ํ•ด๋‹น ๋ฃจํ‹ด์ด ํ˜ธ์ถœ๋  ๋•Œ, ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ(์ฐธ์กฐ๊ฐ’)์„ ์ „๋‹ฌํ•จ.
  • ๋ฃจํ‹ด ๋‚ด๋ถ€์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์›๋ž˜ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด.
  • ๋ฃจํ‹ด ์•ˆ์—์„œ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด ์›๋ณธ๋„ ํ•จ๊ป˜ ๋ฐ”๋€œ.

๐Ÿ“Œ ์‚ฌ์šฉ ์‹œ์ 

  • Pass by Reference๋Š” ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ํ•ด๋‹น ๋ฃจํ‹ด ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฃจํ‹ด ๋ฐ–์—์„œ๋„ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋งค์šฐ ์œ ์šฉํ•œ ๋ฐฉ์‹์ด๋‹ค.

๐Ÿ“Œ ABAP์—์„œ Pass by Reference ์‚ฌ์šฉ์ฒ˜

  • ์„œ๋ธŒ๋ฃจํ‹ด์˜ USING ํŒŒ๋ผ๋ฏธํ„ฐ ๋’ค์— "VALUE ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… )" ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 
  • ์„œ๋ธŒ๋ฃจํ‹ด์˜ CHANGING ํŒŒ๋ผ๋ฏธํ„ฐ ๋’ค์— "VALUE ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… )" ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 
  • ์„œ๋ธŒ๋ฃจํ‹ด์˜ TABLES ํŒŒ๋ผ๋ฏธํ„ฐ  
  • ํ•จ์ˆ˜์˜ IMPORTING, EXPORTING, CHANGING ํŒŒ๋ผ๋ฏธํ„ฐ์— "Pass by Value" ๋ฅผ ์ฒดํฌ์•ˆํ•œ ๊ฒฝ์šฐ (Default)
  • ํ•จ์ˆ˜์˜ TABLES ํŒŒ๋ผ๋ฏธํ„ฐ
  • ๋ฉ”์†Œ๋“œ์˜ IMPORTING, EXPORTING, CHANGING ํŒŒ๋ผ๋ฏธํ„ฐ ์— "Pass Value" ๋ฅผ ์ฒดํฌ์•ˆํ•œ ๊ฒฝ์šฐ (Default)

๐Ÿ” ์„œ๋ธŒ๋ฃจํ‹ด(PERFORM) ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜ธ์ถœ ์œ ํ˜•

< ์„œ๋ธŒ๋ฃจํ‹ด ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹ ์˜ˆ์ œ >

๐Ÿ” ํ•จ์ˆ˜(Function Module) ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜ธ์ถœ ์œ ํ˜•

๐Ÿ”— 2025.04.07 - [ABAP Concept (๐Ÿ“๊ฐœ๋…)/Advanced] - Function Module ํŒŒ๋ผ๋ฏธํ„ฐ ์ข…๋ฅ˜์™€ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐฉ์‹


๐Ÿšฉ ๊ฒฐ๋ก ์ ์œผ๋กœ...

๊ตฌ๋ถ„ ์‚ฌ์šฉ๋ชฉ์  ๋ฐ์ดํ„ฐ๋ณ€๊ฒฝ ์—ฌ๋ถ€  ๋ฉ”๋ชจ๋ฆฌ
Pass by Value ์›๋ณธ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ, ์•ˆ์ •์„ฑ ์œ ์ง€ ์›๋ณธ ๋ณ€๊ฒฝ โŒ  ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋ณต์‚ฌ
Pass by Reference ํšจ์œจ์„ฑ, ์›๋ณธ ๋ฐ์ดํ„ฐ ์ง์ ‘ ๋ณ€๊ฒฝ ์›๋ณธ ๋ณ€๊ฒฝ โœ…  ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ (์ฐธ์กฐ)

 

๐Ÿ’ก TABLES ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์™œ ํ•ญ์ƒ Pass by Reference์ธ๊ฐ€?

TABLES ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ABAP ์ดˆ๊ธฐ ์„ค๊ณ„ ์‹œ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•ด Pass by Reference ๋กœ๋งŒ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค. ์ธํ„ฐ๋„ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” Pass by Value ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ปค์ง€๊ณ  CPU ๋ถ€ํ•˜๋„ ์ปค์ง€๋ฏ€๋กœ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๊ณ  ์ž์› ๋‚ญ๋น„๊ฐ€ ํฌ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์„œ๋ธŒ๋ฃจํ‹ด์˜ TABLES ํŒŒ๋ผ๋ฏธํ„ฐ์— VALUE ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ์—๋„ "Pass by Value" ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋‹ค.