๊ด€๋ฆฌ ๋ฉ”๋‰ด

CS Student’s SAP&Tech Journey๐Ÿ’ซ

[SAP] SELECT SINGLE๊ณผ SELECT์˜ ์ฐจ์ด / ๋ณ€์ˆ˜ ์ ‘๋‘์‚ฌ ์ •์˜ํ•˜๊ธฐ ๋ณธ๋ฌธ

SAP/ABAP ๋ฌธ๋ฒ• | Open SQL

[SAP] SELECT SINGLE๊ณผ SELECT์˜ ์ฐจ์ด / ๋ณ€์ˆ˜ ์ ‘๋‘์‚ฌ ์ •์˜ํ•˜๊ธฐ

์ธํฌ๋งˆํ‹ฑ 2025. 1. 31. 01:46

ABAP์—์„œ๋Š” SELECT๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์—์„œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” SE11/SE16์„ ํ™œ์šฉํ•œ ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰SELECT SINGLE๊ณผ SELECT์˜ ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ  SCARR ํ…Œ์ด๋ธ”์„ ํ™œ์šฉํ•œ ํ•ญ๊ณต์‚ฌ ์ฝ”๋“œ ์กฐํšŒ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

 


 

๐ŸŸฉ SE11/SE16์„ ํ™œ์šฉํ•œ ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰ ๐Ÿš€

SAP์—์„œ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ, SE11๊ณผ SE16 ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. SE11 (ABAP Dictionary)

SE11์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ, ํ•„๋“œ, ๋„๋ฉ”์ธ, ๋ฐ์ดํ„ฐ ์š”์†Œ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŠธ๋žœ์žญ์…˜ ์ฝ”๋“œ SE11 ์‹คํ–‰
  2. ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์ž…๋ ฅ (์˜ˆ: SCARR)
  3. "Display" ๋ฒ„ํŠผ ํด๋ฆญ
  4. ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ฐ ํ•„๋“œ ํ™•์ธ

2. SE16 (Data Browser)

SE16์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŠธ๋žœ์žญ์…˜ ์ฝ”๋“œ SE16 ์‹คํ–‰
  2. ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์ž…๋ ฅ (์˜ˆ: SCUSTOM)
  3. ์—”ํ„ฐ ํ‚ค ์ž…๋ ฅ ํ›„ ํ•„ํ„ฐ ์กฐ๊ฑด ์„ค์ • ๊ฐ€๋Šฅ
  4. ์‹คํ–‰ ๋ฒ„ํŠผ ํด๋ฆญํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ™•์ธ

 

TABLE: SCARR

  • ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ์€ ์ด 5๊ฐœ์ž…๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ”์˜ KEY(ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์œ ๋‹ˆํฌํ•˜๊ฒŒ ๊ฒฐ์ •์ง“๋Š” ์†์„ฑ)์€ MANDT, CARRID์ด๋‚˜ MANDT๋Š” ๊ธฐ๋ณธ ์กฐ๊ฑด์ธ ํด๋ผ์ด์–ธํŠธ์ด๋ฏ€๋กœ CARRID๋ฅผ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” Contents - Number of Entries๋ฅผ ํ†ตํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ „์ฒด ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๋Š” Contents - ์‹คํ–‰๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ณ€์ˆ˜, ์ŠคํŠธ๋Ÿญ์ฒ˜, ํ…Œ์ด๋ธ”

 

๐ŸŸฉ SELECT SINGLE๊ณผ SELECT์˜ ์ฐจ์ด

1. SELECT SINGLE 

SELECT SINGLE ํ•„๋“œ ํ˜น์€ * INTO ๋‹ด์„ ๋ณ€์ˆ˜, ์ŠคํŠธ๋Ÿญ์ฒ˜ FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด

  • ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ•œ ๊ฐœ์˜ ํ–‰์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜ ๋˜๋Š” ๊ตฌ์กฐ(Structure)์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ INTO ๋’ค์—๋Š” ๋‹จ์ผ ๋ณ€์ˆ˜ ๋˜๋Š” ๊ตฌ์กฐ(structure)๊ฐ€ ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • SELECT SINGLE์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๋งŒ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด๋„ ์ฒซ ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
SELECT SINGLE ํ•„๋“œ1, ํ•„๋“œ2 
  INTO ๋ณ€์ˆ˜ ํ˜น์€ ์ŠคํŠธ๋Ÿญ์ฒ˜
  FROM ํ…Œ์ด๋ธ”๋ช…
  WHERE ์กฐ๊ฑด.
DATA: ls_scarr TYPE scarr.
SELECT SINGLE * FROM scarr INTO ls_scarr WHERE carrid = 'LH'.
WRITE: / 'ํ•ญ๊ณต์‚ฌ ์ด๋ฆ„:', ls_scarr-carrname.
WRITE: / 'URL:', ls_scarr-url.

 

2. SELECT  

  • SELECT... INTO TABLE์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ–‰์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • INTO ๋’ค์—๋Š” ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์ด ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
SELECT ํ•„๋“œ1, ํ•„๋“œ2 
  INTO TABLE itab
  FROM ํ…Œ์ด๋ธ”๋ช…
  WHERE ์กฐ๊ฑด.
DATA: lt_scarr TYPE TABLE OF scarr.
SELECT * FROM scarr INTO TABLE lt_scarr WHERE carrid = 'LH'.

IF sy-subrc = 0.
    WRITE: / '๋ฐ์ดํ„ฐ ์กฐํšŒ ์„ฑ๊ณต'.
ELSE.
    WRITE: '๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.'.
ENDIF.
  • ์œ„ ์ฝ”๋“œ๋Š” LH ํ•ญ๊ณต์‚ฌ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ lt_scarr ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • SELECT SINGLE๊ณผ ๋‹ฌ๋ฆฌ, ์กฐ๊ฑด์— ๋งž๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

 

3. SELECT... ENDSELECT

  • SELECT SINGLE์€ ๋‹จ์ผ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • SELECT... ENDSELECT๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
DATA: ls_scarr TYPE scarr.
SELECT * FROM scarr INTO ls_scarr WHERE carrid = 'LH'.
    WRITE: / ls_scarr-carrid, ls_scarr-carrname.
ENDSELECT.

 

 

 

๐ŸŸฉ SCARR์—์„œ ํ•ญ๊ณต์‚ฌ ์ฝ”๋“œ๋กœ ์ด๋ฆ„๊ณผ URL์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„

SCARR ํ…Œ์ด๋ธ”

PARAMETERS lv_cid TYPE S_CARR_ID. " DATA ELEMENTS์—์„œ ๊ฐ€์ ธ์˜จ DATA TYPE์ธ S_CARR_ID ์‚ฌ์šฉ(๊ธ€๋กœ๋ฒŒ ํƒ€์ž…)
DATA gs_scarr TYPE SCARR. " SCARR์™€ ๊ฐ™์€ ๊ตฌ์กฐ์ฒด gs_scarr ์ •์˜

SELECT SINGLE *
  FROM SCARR
  INTO gs_scarr
  WHERE carrid = lv_cid.

IF sy-subrc <> 0.
  WRITE: / 'sorry not found'.
ELSE.
  WRITE: 'ํ•ญ๊ณต์‚ฌ ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์€:', gs_scarr-carrname, gs_scarr-url.
ENDIF.

 

๐Ÿ“ŒABAP ๋ณ€์ˆ˜ ์„ ์–ธํ•  ๋•Œ ์ ‘๋‘์‚ฌ ์˜๋ฏธ

DATA: gv_total TYPE i,      " ์ „์—ญ ๋ณ€์ˆ˜ (Global Variable)
      lv_count TYPE i,      " ๋กœ์ปฌ ๋ณ€์ˆ˜ (Local Variable)
      pv_input TYPE string, " ์ž…๋ ฅ ํŒŒ๋ผ๋ฏธํ„ฐ (Parameter Variable)
      ev_result TYPE i,     " ๋ฐ˜ํ™˜๊ฐ’ (Export Variable)
      gs_order TYPE zorder, " ์ „์—ญ ๊ตฌ์กฐ์ฒด (Global Structure)
      is_order TYPE zorder, " ์ž…๋ ฅ ๊ตฌ์กฐ์ฒด (Input Structure)
      wa_order TYPE zorder, " ์›Œํฌ ์—์–ด๋ฆฌ์–ด (Work Area)
      it_orders TYPE TABLE OF zorder. " ๋‚ด๋ถ€ ํ…Œ์ด๋ธ” (Internal Table)