ABAP Implimentation (๐Ÿ› ๏ธ์‹ค๋ฌด)/ALV

| ALV | GET_SELECTED_ROWS ์„ ํƒ ๋ผ์ธ ์ถ”์ถœ (Feat. (Sub)Total ๋ผ์ธ)

two_ssun 2022. 6. 28. 07:55

 

Method "GET_SELECTED_ROW"๋Š” ALV๋ฅผ ์ œ์–ดํ•จ์— ์žˆ์–ด ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Method ์ค‘ ํ•˜๋‚˜๋กœ, ALV Report์—์„œ ALV Standard ์„ ํƒ ๋ฐ•์Šค๋ฅผ ์„ ํƒ ํ›„ ์„ ํƒ๋œ ๋ผ์ธ์˜ ์œ„์น˜ ์ •๋ณด(์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” Index)๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

 

๊ฐ€๋ณ๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” Method์ง€๋งŒ, ์ •ํ™•ํžˆ ๋ชจ๋ฅด๊ณ  ์ผ๋‹ค๊ฐ€๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ํ•œ๋ฒˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. 

 

์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. 

< Method "GET_SELECTED_ROWS" ํ˜ธ์ถœ ๊ตฌ๋ฌธ >
< Multi๋กœ ๋ผ์ธ์„ ์„ ํƒํ•œ ALV ํ™”๋ฉด >
< ALV ๋ผ์ธ ์„ ํƒ ํ›„ Method "GET_SELECTED_ROWS" Parameter์— ๋ฐ˜ํ™˜๋œ ๊ฐ’ >

Method "GET_SELECTED_ROW"์˜ Importing Parameter ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ณด๋ฉด "LT_ROW_NO"๋Š” Field "ROW_ID"์—, "LT_INDEX_ROWS"๋Š” Field "INDEX"์— ์„ ํƒ๋œ ๋ผ์ธ์˜ ์ •๋ณด( ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” Index )๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ทธ๋Ÿฐ ๋‹ค์Œ "LT_ROW_NO" ๋˜๋Š” "LT_INDEX_ROWS"์— ๋‹ด๊ธด ์ •๋ณด๋กœ "LOOP" ๋˜๋Š” "READ TABLE"๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ALV Output ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ์„ ํƒ ๋ผ์ธ์„ ์ฐพ์•„ ํ›„์† ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค. 

 


์ด๋ฒˆ์—๋Š” ์ผ๋ฐ˜ ALV Output Data๊ฐ€ ์•„๋‹Œ ALV์˜ Standard ๊ธฐ๋Šฅ์ธ Total๊ณผ Subtotal ๊ธฐ๋Šฅ์„ ํŠน์ • ํ•„๋“œ์— ํ™œ์„ฑํ™”์‹œํ‚จ ํ›„ ์ถ”๊ฐ€๋œ Total๋ผ์ธ๊ณผ Subtotal ๋ผ์ธ์„ ์„ ํƒํ•ด๋ณด์ž.

 

< ํ•„๋“œ "ID", "Plane Type" ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๊ณ„๋œ ALV ํ™”๋ฉด >

1๋ฒˆ์งธ ๋ผ์ธ - ALV ๊ธฐ์กด Output ๋ฐ์ดํ„ฐ 
2๋ฒˆ์งธ ๋ผ์ธ - ํ•„๋“œ ID(LH)์™€ Plane Type(A319)์˜ Occupied ์ค‘๊ฐ„ ํ•ฉ๊ณ„
3๋ฒˆ์งธ ๋ผ์ธ - ํ•„๋“œ ID(LH)์™€ Plane Type(A330-300)์˜ Occupied ์ค‘๊ฐ„ ํ•ฉ๊ณ„
4๋ฒˆ์งธ ๋ผ์ธ - ํ•„๋“œ ID(LH)์˜ Occupied ์ค‘๊ฐ„ ํ•ฉ๊ณ„
5๋ฒˆ์งธ ๋ผ์ธ - Occupied ์ดํ•ฉ๊ณ„

 

Method "GET_SELECTED_ROW"  Importing Parameter ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ณด๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธฐ์กด ALV Output Data( ์ฒซ ๋ฒˆ์งธ ๋ผ์ธ )์™€ ALV ํ•ฉ๊ณ„ ๊ธฐ๋Šฅ์— ์˜ํ•ด ์ƒ๊ธด Data( 2 ~ 5๋ฒˆ์งธ ๋ผ์ธ )์˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

< ํ•ฉ๊ณ„ ๋ผ์ธ ์„ ํƒ์‹œ Method "GET_SELECTED_ROWS" Parameter์— ๋ฐ˜ํ™˜๋œ ๊ฐ’ >

Method "GET_SELECTED_ROW"์˜ Parameter Field ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •๋ฆฌํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

< Method "GET_SELECTED_ROWS"์˜ Parameter ์„ค๋ช… >

 


๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋Œ€๋กœ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด, ์—๋Ÿฌ ์—†๋Š” ์™„๋ฒฝํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ๋˜๊ฒ ์ง€๋งŒ, ํ•ญ์ƒ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š”

๊ฐœ๋ฐœ์ž์˜ ์˜๋„์™€ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ธ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

๋งŒ์•ฝ ALV์˜ Total(Sub Total) ํ•ฉ๊ณ„ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์ถ”๊ฐ€๋กœ ์ƒ๊ธด ํ•ฉ๊ณ„ ๋ผ์ธ์„ ์‹ค์ˆ˜ ๋˜๋Š” ์–ด๋– ํ•œ(?) ์˜๋„๋กœ ์„ ํƒ์„ ํ•˜๊ณ  ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋˜์—ˆ์„๊นŒ?

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค๋ฉด ์•„๋งˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๊ฒƒ์ด๋‹ค. 

< Bad Example >

Case #1 ์€ Method "GET_SELECTED_ROW"์˜ Parameter "et_index_rows" ์‚ฌ์šฉ ์‹œํ•ฉ๊ณ„ ๋ผ์ธ์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ๋กœ,

Field "INDEX"์—๋Š” ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” "GT_TIAB"์˜ Index๊ฐ€ ์•„๋‹Œ ALV ํ•ฉ๊ณ„ ๋ผ์ธ๋“ค ์ค‘ ์—์„œ์˜ Index๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์˜ค๊ฒŒ ๋œ๋‹ค. 

 

Case #2๋Š” Method "GET_SELECTED_ROW"์˜ Parameter "et_row_no" ์‚ฌ์šฉ ์‹œ ํ•ฉ๊ณ„ ๋ผ์ธ ์„ ํƒํ•œ ๊ฒฝ์šฐ๋กœ,

Field "ROW_ID"์—๋Š” '๋งˆ์ด๋„ˆ์Šค(-)' ๋˜๋Š” '0'์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— "READ TABLE" ๊ตฌ๋ฌธ ๋’ค์— "SY-SUBRC = 0"์„ ์ฒดํฌํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์‹ค์ œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” "GT_ITAB"์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์€ Index ์ด๋ฏ€๋กœ ๋คํ”„๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์€ ์ข…๋ฃŒ๋œ๋‹ค. ( ํ•ด๋‹น ์‚ฌ๋ก€๋Š” "READ TABLE" ๊ตฌ๋ฌธ์—์„œ๋Š” 100% 'SY-SUBRC = 0'์ผ ๊ฑฐ๋ผ๊ณ  ํ™•์‹ ํ•˜๊ณ  ์ƒ๋žตํ•œ ๋“ฏํ•˜๋‹ค.)

 

2๊ฐ€์ง€ ์‚ฌ๋ก€๋Š” ์‹ค์ œ ๊ณ ๊ฐ์‚ฌ ์šด์˜์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ด๋ฏธ ๊ฐœ๋ฐœ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ข…์ข… ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ํ•ด๋‹น ๊ตฌ๋ฌธ๋“ค์€ ํ•ฉ๊ณ„ ๋ผ์ธ์„ ์„ ํƒํ•˜์ง€ ์•Š๋Š” ํ•œ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง„ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜๋„ ์ด๋Ÿฐ ์˜ˆ์™ธ ์ƒํ™ฉ์˜ ์˜ค๋ฅ˜๋ฅผ ์กฐ๊ธˆ์ด๋ผ๋„ ์ค„์ด๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์—…์ด๊ธฐ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ ์กฐ์‹ฌํ•  ํ•„์š”๋Š” ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค.

 

 

๊ฒฐ๋ก 

:  ALV ๋ผ์ธ ์„ ํƒ ์‹œ Method "GET_SELECTED_ROW"์— ๋ฐ˜ํ™˜๋œ ์ •๋ณด๋Š” Output Data์™€ (Sub) Total Data๊ฐ€ ๋‹ค๋ฅด๋‹ค.
:  Method "GET_SELECTED_ROW" ์‚ฌ์šฉ ์‹œ ALV ํ•ฉ๊ณ„ ๋ผ์ธ ์ •๋ณด๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด, Parameter "et_row_id"์˜ Field "ROW_ID"๋ฅผ ์‚ฌ์šฉํ•˜์ž. ( SY-SUBRC = '0' ์€ ๋ฐ˜๋“œ์‹œ ์ฒดํฌ )