๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง‘‍๐Ÿ’ผ SAP/ABAP

[SAP ABAP] CHAR ํƒ€์ž… ์ž๋ฆฌ์ˆ˜ ์—ฐ์‚ฐ

by Jay Din 2026. 7. 24.
728x90
๋ฐ˜์‘ํ˜•

SAP ABAP ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด CHAR ํƒ€์ž… ํ•„๋“œ ๊ฐ„์˜ ์ž๋ฆฌ์ˆ˜ ์ฐจ์ด๋กœ ์ธํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ CONCATENATE์™€ SELECT INTO ๊ตฌ๋ฌธ์—์„œ CHAR ํ•„๋“œ์˜ ๊ณต๋ฐฑ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ž˜๋ฆผ, ๊ณต๋ฐฑ ํฌํ•จ ๋“ฑ ์˜ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

1. ABAP CHAR ํƒ€์ž… ๊ธฐ๋ณธ ๊ทœ์น™

ABAP์—์„œ CHAR ํƒ€์ž… ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋œ ๊ธธ์ด๋งŒํผ ๊ณ ์ • ๊ธธ์ด๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์‹ค์ œ ๊ฐ’์ด ์„ ์–ธ ๊ธธ์ด๋ณด๋‹ค ์งง์„ ๊ฒฝ์šฐ ๋’ค์ชฝ์ด ๊ณต๋ฐฑ(Space)์œผ๋กœ ์ž๋™ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

DATA: lv_name(10) TYPE C.
lv_name = 'SAP'.

" ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ์ƒํƒœ
" lv_name = 'SAP       '
"            ↑↑↑↑↑↑↑↑↑↑
"            3์ž๋ฆฌ + ๊ณต๋ฐฑ 7์ž๋ฆฌ = 10์ž๋ฆฌ

 

2. CONCATENATE์˜ ์ž๋ฆฌ์ˆ˜ ์—ฐ์‚ฐ

2-1) CONCATENATE ๊ธฐ๋ณธ ์ž‘๋™ ์›๋ฆฌ

CONCATENATE ๊ตฌ๋ฌธ์˜ ํ•ต์‹ฌ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ ์†Œ์Šค ํ•„๋“œ์˜ ๋’ค์ชฝ ๊ณต๋ฐฑ(Trailing Spaces)์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•œ ๋’ค ๊ฒฐํ•ฉํ•œ๋‹ค.

 

2-2) ์‹ค๋ฌด ์˜ˆ์ œ

DATA: lv_projno LIKE zpst0630-pspid,   " CHAR 24
      lv_matnr(16) TYPE C.              " CHAR 16

lv_projno = '2145'.
CONCATENATE lv_projno '-' '123456789' INTO lv_matnr.

WRITE: lv_matnr.

 

์‹คํ–‰ ๊ฒฐ๊ณผ

2145-123456789

 

2-3) ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ๋ถ„์„

[STEP 1] ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’ ๋Œ€์ž…

lv_projno (CHAR 24) = '2145'

์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ:
lv_projno = '2145                    '
             ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
             4์ž๋ฆฌ ๊ฐ’ + ๊ณต๋ฐฑ 20์ž๋ฆฌ = ์ด 24์ž๋ฆฌ

lv_projno๋Š” CHAR 24๋กœ ์„ ์–ธ๋˜์—ˆ์œผ๋ฏ€๋กœ '2145' ๋’ค์— ๊ณต๋ฐฑ 20์ž๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค.

 

[STEP 2] CONCATENATE ์‹คํ–‰ - ๊ณต๋ฐฑ ์ œ๊ฑฐ ํ›„ ๊ฒฐํ•ฉ

์†Œ์Šค 1: lv_projno = '2145                    '  → ๊ณต๋ฐฑ ์ œ๊ฑฐ → '2145'
์†Œ์Šค 2: '-'                                     → ๊ทธ๋Œ€๋กœ     → '-'
์†Œ์Šค 3: '123456789'                             → ๊ทธ๋Œ€๋กœ     → '123456789'

๊ฒฐํ•ฉ ๊ฒฐ๊ณผ: '2145' + '-' + '123456789' = '2145-123456789' (14์ž๋ฆฌ)

๋งŒ์•ฝ ๊ณต๋ฐฑ ์ œ๊ฑฐ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด '2145' + ๊ณต๋ฐฑ 20์ž๋ฆฌ + '-' + '123456789'๋กœ ๊ฒฐํ•ฉ๋˜์–ด ์ด 34์ž๋ฆฌ๊ฐ€ ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ CONCATENATE๋Š” ๊ฐ ์†Œ์Šค ํ•„๋“œ์˜ ๋’ค์ชฝ ๊ณต๋ฐฑ์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ๊ฐ’๋งŒ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

 

[STEP 3] ๊ฒฐ๊ณผ๋ฅผ lv_matnr์— ์ €์žฅ

๊ฒฐํ•ฉ ๊ฒฐ๊ณผ: '2145-123456789' = 14์ž๋ฆฌ
lv_matnr:  CHAR 16

14์ž๋ฆฌ → 16์ž๋ฆฌ ๋ณ€์ˆ˜์— ์ €์žฅ
= '2145-123456789  '
   ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
   14์ž๋ฆฌ + ๊ณต๋ฐฑ 2์ž๋ฆฌ = 16์ž๋ฆฌ → ์ •์ƒ ์ €์žฅ

 

2-4) ๊ฒฐํ•ฉ ๊ฒฐ๊ณผ๊ฐ€ ํƒ€๊ฒŸ ๋ณ€์ˆ˜๋ณด๋‹ค ๊ธธ ๊ฒฝ์šฐ

DATA: lv_result(10) TYPE C.  " CHAR 10

CONCATENATE 'ABCDE' '-' '123456789' INTO lv_result.

" ๊ฒฐํ•ฉ ๊ฒฐ๊ณผ: 'ABCDE-123456789' = 15์ž๋ฆฌ
" lv_result(10)์—๋Š” 10์ž๋ฆฌ๋งŒ ์ €์žฅ
" lv_result = 'ABCDE-1234'  ← ๋’ค 5์ž๋ฆฌ ์ž˜๋ฆผ!
" sy-subrc = 2 (์ž˜๋ฆผ ๋ฐœ์ƒ)

์ด ๊ฒฝ์šฐ ABAP์€ sy-subrc๋ฅผ 2๋กœ ์„ค์ •ํ•˜์—ฌ ์ž˜๋ฆผ์ด ๋ฐœ์ƒํ–ˆ์Œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

์‹ค๋ฌด์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ํƒ€๊ฒŸ ๋ณ€์ˆ˜์˜ ๊ธธ์ด๋ฅผ ์ถฉ๋ถ„ํžˆ ํ™•๋ณดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

2-5) RESPECTING BLANKS ์˜ต์…˜

๊ณต๋ฐฑ์„ ์œ ์ง€ํ•œ ์ฑ„ ๊ฒฐํ•ฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด RESPECTING BLANKS ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

DATA: lv_projno(24) TYPE C VALUE '2145'.
DATA: lv_result(40) TYPE C.

" ๊ณต๋ฐฑ ์ œ๊ฑฐ (๊ธฐ๋ณธ ๋™์ž‘)
CONCATENATE lv_projno '-' '123' INTO lv_result.
" ๊ฒฐ๊ณผ: '2145-123'

" ๊ณต๋ฐฑ ์œ ์ง€
CONCATENATE lv_projno '-' '123' INTO lv_result RESPECTING BLANKS.
" ๊ฒฐ๊ณผ: '2145                    -123'
"        → lv_projno์˜ ๊ณต๋ฐฑ 20์ž๋ฆฌ๊ฐ€ ๊ทธ๋Œ€๋กœ ํฌํ•จ๋จ

RESPECTING BLANKS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด CHAR 24 ์ „์ฒด๊ฐ€ ๊ฒฐํ•ฉ์— ํฌํ•จ๋˜๋ฏ€๋กœ ๊ฒฐ๊ณผ ๊ธธ์ด๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ ๋™์ž‘(๊ณต๋ฐฑ ์ œ๊ฑฐ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

 

3. ์ฟผ๋ฆฌ์˜ ์ž๋ฆฌ์ˆ˜ ์—ฐ์‚ฐ

3-1) SELECT INTO ๊ธฐ๋ณธ ์ž‘๋™ ์›๋ฆฌ 

SELECT INTO๋Š” DB ํ•„๋“œ ๊ฐ’์„ ABAP ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ ์ž๋ฆฌ์ˆ˜ ์—ฐ์‚ฐ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์†Œ์Šค(DB ํ•„๋“œ)๋ณด๋‹ค ํƒ€๊ฒŸ(ABAP ๋ณ€์ˆ˜)์ด ํฌ๋ฉด ๋’ค์ชฝ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์šฐ๊ณ , ํƒ€๊ฒŸ์ด ์ž‘์œผ๋ฉด ๋’ค์—์„œ ์ž˜๋ฆฐ๋‹ค.

 

3-2) WHERE ์กฐ๊ฑด ๋น„๊ต ๊ทœ์น™

CHAR ํƒ€์ž… ๋น„๊ต ์‹œ ๋’ค์ชฝ ๊ณต๋ฐฑ์„ ๋ฌด์‹œํ•˜๊ณ  ์‹ค์ œ ๊ฐ’๋งŒ ๋น„๊ตํ•œ๋‹ค.

 

3-3) ์‹ค๋ฌด ์˜ˆ์ œ

DATA: lv_projno LIKE zpst0630-pspid,   " CHAR 24
      lv_posid(16) TYPE C.              " CHAR 16

lv_projno = '2514'.

SELECT SINGLE posid
  INTO lv_posid
  FROM ztable123
  WHERE zzpjtno = lv_projno.

WRITE: lv_posid.

ํ…Œ์ด๋ธ” ํ•„๋“œ ํƒ€์ž…:

  • ztable123-pspid: CHAR 24
  • ztable123 -posid: CHAR 6

์‹คํ–‰ ๊ฒฐ๊ณผ

ABC123 (์ •์ƒ ์ถœ๋ ฅ)

 

3-4) ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ๋ถ„์„

[STEP 1] ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’ ๋Œ€์ž…

lv_projno (CHAR 24) = '2514'

์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ:
lv_projno = '2514                    '
             ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
             4์ž๋ฆฌ ๊ฐ’ + ๊ณต๋ฐฑ 20์ž๋ฆฌ = ์ด 24์ž๋ฆฌ
 

[STEP 2] WHERE ์กฐ๊ฑด ๋น„๊ต — ๊ณต๋ฐฑ ๋ฌด์‹œ ๋น„๊ต

DB ํ•„๋“œ zzpjtno = '2514'
lv_projno       = '2514                    '

CHAR ํƒ€์ž… ๋น„๊ต ์‹œ ๋’ค์ชฝ ๊ณต๋ฐฑ์€ ๋ฌด์‹œ๋จ
→ '2514' = '2514' → ์ผ์น˜! โœ…

ABAP์˜ CHAR ๋น„๊ต ๊ทœ์น™์— ๋”ฐ๋ผ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๋‘ CHAR ํ•„๋“œ๋ฅผ ๋น„๊ตํ•  ๋•Œ ์งง์€ ์ชฝ์— ๊ณต๋ฐฑ์„ ์ฑ„์šด ๋’ค ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋’ค์ชฝ ๊ณต๋ฐฑ์€ ๋ฌด์‹œ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๊ทœ์น™ ๋•๋ถ„์— lv_porjno๊ฐ€ CHAR 24๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์–ด๋„ WHERE ์กฐ๊ฑด์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

 

[STEP 3] SELECT INTO — ์ž‘์€ ๊ฐ’์„ ํฐ ๋ณ€์ˆ˜์— ๋Œ€์ž…

DB ํ•„๋“œ posid (CHAR 6)  = 'ABC123'
ํƒ€๊ฒŸ lv_posid (CHAR 16)

์†Œ์Šค(6์ž๋ฆฌ) → ํƒ€๊ฒŸ(16์ž๋ฆฌ) ๋Œ€์ž…:
lv_posid = 'ABC123          '
            ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
            6์ž๋ฆฌ ๊ฐ’ + ๊ณต๋ฐฑ 10์ž๋ฆฌ = 16์ž๋ฆฌ

→ ๋ฐ์ดํ„ฐ ์†์‹ค ์—†์ด ์ •์ƒ ์ €์žฅ โœ…

 

3-5) ๋Œ€์ž… ๋ฐฉํ–ฅ ๋ณ„ ๋™์ž‘ ๋น„๊ต

[์ผ€์ด์Šค 1] ์†Œ์Šค < ํƒ€๊ฒŸ (์ž‘์€ → ํฐ) — ์•ˆ์ „

" DB ํ•„๋“œ: CHAR 6,  ๋ณ€์ˆ˜: CHAR 16
DATA: lv_posid(16) TYPE C.
SELECT SINGLE posid INTO lv_posid FROM ztable WHERE ...

" posid = 'ABC123' (6์ž๋ฆฌ)
" lv_posid = 'ABC123          ' (๋’ค ๊ณต๋ฐฑ ์ฑ„์›€, 16์ž๋ฆฌ)
" → ๋ฐ์ดํ„ฐ ์†์‹ค ์—†์Œ โœ…

 

[์ผ€์ด์Šค 2] ์†Œ์Šค = ํƒ€๊ฒŸ (๊ฐ™์€ ํฌ๊ธฐ) — ์•ˆ์ „

" DB ํ•„๋“œ: CHAR 6,  ๋ณ€์ˆ˜: CHAR 6
DATA: lv_posid(6) TYPE C.
SELECT SINGLE posid INTO lv_posid FROM ztable WHERE ...

" posid = 'ABC123' (6์ž๋ฆฌ)
" lv_posid = 'ABC123' (๊ทธ๋Œ€๋กœ ๋Œ€์ž…, 6์ž๋ฆฌ)
" → ๋ฐ์ดํ„ฐ ์†์‹ค ์—†์Œ โœ…
 
 

[์ผ€์ด์Šค 3] ์†Œ์Šค > ํƒ€๊ฒŸ (ํฐ → ์ž‘์€) — ์ฃผ์˜!

" DB ํ•„๋“œ: CHAR 6,  ๋ณ€์ˆ˜: CHAR 4
DATA: lv_posid(4) TYPE C.
SELECT SINGLE posid INTO lv_posid FROM ztable WHERE ...

" posid = 'ABC123' (6์ž๋ฆฌ)
" lv_posid = 'ABC1' (๋’ค 2์ž๋ฆฌ ์ž˜๋ฆผ!)
" → ๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐœ์ƒ โš ๏ธ

 

728x90
๋ฐ˜์‘ํ˜•