์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- abap dictionary
- ์ด๋ถํ์
- ๊น์ด์ฐ์ ํ์
- t์ฝ๋
- ๋จ๋ฐฉํฅํ์
- ๋๋น์ฐ์ ํ์
- Export
- screen
- screen program
- modify
- qas
- ์๊ณ ๋ฆฌ์ฆ
- Import
- structure
- Function Module
- ์๋ฐฉํฅํ์
- select
- ์คํธ๋ญ์ฒ
- ์ค๋ฒ3
- ๋ชจ๋ํ
- ์ค๋ฒ2
- SAP
- ABAP
- call function
- PRD
- Internal Table
- tasknumber
- ๋ฐฑ์ค
- subscreen
- dev
- Today
- Total
CS Student’s SAP&Tech Journey๐ซ
[SAP] SELECT * / SELECT SINGLE ํ๋ / SELECT SINGLE * ์ด์ ๋ฆฌ ๋ณธ๋ฌธ
[SAP] SELECT * / SELECT SINGLE ํ๋ / SELECT SINGLE * ์ด์ ๋ฆฌ
์ธํฌ๋งํฑ 2025. 2. 8. 02:35SAP ABAP์์๋ Open SQL์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์์ต๋๋ค. ๋จ์ผ ํ ์กฐํ(SELECT SINGLE)๋ถํฐ ๋ค์ค ํ ์กฐํ(SELECT LOOP, ARRAY FETCH)๊น์ง ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ฉด ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ Open SQL์ ํ์ฉํ DB ์กฐํ ๋ฐฉ์๊ณผ ์ฑ๋ฅ ์ต์ ํ ๋ฐฉ๋ฒ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ธํฐ๋ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์ฝ๋ ๋ฐฉ๋ฒ์ ๊ด๋ จ๋ ํฌ์คํ ๋ณด๋ฌ๊ฐ๊ธฐ โฌ๏ธ
[ABAP] ์ธํฐ๋ ํ ์ด๋ธ(Internal Table) (3) ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ
SAP ABAP์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ธํฐ๋ ํ ์ด๋ธ(Internal Table, IT)์ ํ์์ ์ธ ๊ฐ๋ ์ ๋๋ค.์ธํฐ๋ ํ ์ด๋ธ์ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ ํ ์ด๋ธ๋ก, ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก
informatik.tistory.com
ABAP์์๋ Open SQL์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. Open SQL์ SAP ์์คํ ์ด ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์: Oracle, MySQL ๋ฑ)์ ์ฐ๊ฒฐ๋ ์ ์๋๋ก ๋์์ฃผ๋ฉฐ, ํน์ ๋ฐ์ดํฐ ์กฐํ ์ ์๋์ผ๋ก ๋ณํ๋์ด ์คํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋๋จธ๋ ๋ณต์กํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋ น์ด๋ฅผ ๋ชฐ๋ผ๋ ๊ฐ๋จํ SQL ๋ฌธ์ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์กฐํํ ์ ์์ต๋๋ค.
๐ ๋ค์ํ ๋ฐ์ดํฐ ์ทจ๋ ๋ฐฉ๋ฒ
- ํจ์๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ
- ํด๋์ค๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ
- BAPI (Business Application Programming Interface)
- Logical Database ํ์ฉ
ABAP์์๋ Open SQL์ ์ฌ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ, ๊ทธ์ค์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ๊ฐ SELECT ๋ฌธ์ ๋๋ค.
โญ SELECT * vs SELECT SINGLE ํ๋ vs SELECT SINGLE * ์ฐจ์ด์
๋น๊ต ํญ๋ชฉ | SELECT * | SELECT SINGLE ํ๋ | SELECT SINGLE * |
์กฐํ ๋์ | ํ ์ด๋ธ์ ๋ชจ๋ ์ปฌ๋ผ | ์ง์ ๋ ์ผ๋ถ ์ปฌ๋ผ๋ง ์กฐํ | ํ ์ด๋ธ์ ๋ชจ๋ ์ปฌ๋ผ |
์กฐํ ๊ฐ์ | ์ฌ๋ฌ ๊ฐ์ ํ์ ๊ฐ์ ธ์ฌ ์ ์์ | ์กฐ๊ฑด์ ๋ง๋ ์ฒซ ๋ฒ์งธ ํ์ ํน์ ํ๋๋ง ๊ฐ์ ธ์ด | ์กฐ๊ฑด์ ๋ง๋ ์ฒซ ๋ฒ์งธ ํ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ด |
์ฑ๋ฅ | ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์์ด ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ | ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๋ฏ๋ก ์ฑ๋ฅ์ด ์ข์ | SELECT *๋ณด๋ค๋ ๋ํ์ง๋ง, ํ๋๊ฐ ๋ง์ผ๋ฉด ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ |
์ฉ๋ | ์ฌ๋ฌ ๊ฐ์ ๋ ์ฝ๋๋ฅผ ๋ด๋ถ ํ ์ด๋ธ์ ์ ์ฅํ ๋ | ํน์ ํ ํ ํ์ ์ผ๋ถ ํ๋๋ง ํ์ํ ๋ | ํน์ ํ ํ ํ์ ๋ชจ๋ ์ปฌ๋ผ์ด ํ์ํ ๋ |
WHERE ์กฐ๊ฑด | ์์ด๋ ๊ฐ๋ฅ (๋ชจ๋ ํ์ ๊ฐ์ ธ์ด) | ๋ฐ๋์ ์์ด์ผ ํจ (์์ผ๋ฉด ์๋ฏธ ์์) | ๋ฐ๋์ ์์ด์ผ ํจ (์์ผ๋ฉด ์๋ฏธ ์์) |
1. ๋จ์ผ ๋ฐ์ดํฐ ์กฐํ (SELECT SINGLE)
โ๏ธ SELECT SINGLE ๋ฌธ์ ํน์ ํค ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๋๋ ๋ฐ์ดํฐ์์ ๋ถํ์ํ ๊ฒ์์ ๋ฐฉ์งํ๊ณ , ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
โ๏ธ SELECT SINGLE์ ๋จ์ผ ํ ์กฐํ๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ ํ ๋ฒ์ ์คํ์ผ๋ก ํ๊ฑด์ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ณ , ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๐ก ์์ 1: ํน์ ๊ณ ๊ฐ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์กฐํํ๊ธฐ
SELECT SINGLE *
FROM SCUSTOM
INTO gs_cust
WHERE ID = ‘113344’.
์ด ์ฝ๋๋ ์ฃผ๋ฏผ๋ฒํธ๊ฐ 113344์ธ ๊ณ ๊ฐ์ ๋ชจ๋ ํ๋ ์ ๋ณด๋ฅผ gs_cust ๊ตฌ์กฐ์ฒด์ ์ ์ฅํฉ๋๋ค. (์คํธ๋ญ์ฒ)
๐ก ์์ 2: ํน์ ๊ณ ๊ฐ์ ์ด๋ฆ๋ง ์กฐํํ๊ธฐ
SELECT SINGLE NAME
FROM SCUSTOM
INTO gv_name
WHERE ID = ‘113344’.
์ด ์ฝ๋๋ ์ฃผ๋ฏผ๋ฒํธ๊ฐ 113344์ธ ๊ณ ๊ฐ์ ์ด๋ฆ๋ฅผ gv_name ๋ณ์์ ์ ์ฅํฉ๋๋ค. (๋ณ์)
๐ก ์์ 3: ๊ณ ๊ฐ ID๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ณ ๊ฐ ํ๋ช ์ ์ด๋ฆ, ์ด๋ฉ์ผ, ์ ํ๋ฒํธ๋ฅผ ์กฐํํ๊ธฐ
๐ CORRESPONDING FIELDS๋ฅผ ํ์ฉํ๋ฉด ํ๋ ์์๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์์๋ ์๋ ๋งคํ์ด ์ด๋ฃจ์ด์ง๋๋ค.
* 1. ๋ฐ์ดํฐ(์ด๋ฆ, ์ด๋ฉ์ผ, ์ ํ๋ฒํธ) ๋ด์ ์คํธ๋ญ์ฒ ์์ฑํ๊ธฐ
TYPES: BEGIN OF ts_custinfo,
NAME TYPE S_CUSTNAME,
EMAIL TYPE S_EMAIL,
TELEPHONE TYPE S_PHONENO,
END OF ts_custinfo.
* 2. ์คํธ๋ญ์ฒ ์ ์ธํ๊ธฐ
DATA gs_custinfo TYPE ts_custinfo.
* 3. ID ์
๋ ฅ๋ฐ๊ธฐ
PARAMETERS iv_id TYPE S_CUSTNAME.
* 4. ์
๋ ฅ๋ฐ์ ID์ ํ
์ด๋ธ ID ์ผ์น ์กฐ๊ฑด
SELECT SINGLE NAME EMAIL TELEPHONE " ID๋ ํ๊ฑด ๋งค์นญ SINGLE ์ฌ์ฉ! "
FROM SCUSTOM
INTO CORRESPONDING FIELDS OF gs_custinfo
WHERE ID = iv_id.
* 5. ์คํธ๋ญ์ฒ์ ๋ด๊ธด ์ด๋ฆ, ์ด๋ฉ์ผ, ์ ํ๋ฒํธ ์ถ๋ ฅํ๊ธฐ
WRITE: / gs_custinfo-NAME, gs_custinfo-EMAIL, gs_custinfo-TELEPHONE.
2. ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ์กฐํ (SELECT LOOP vs ARRAY FETCH)
๋๋์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ธ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
1๏ธโฃ SELECT LOOP
ENDSELECT๋ฅผ ์ฌ์ฉํ์ฌ ํ ๊ฑด์ฉ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ๋๋ค.
๐ก ์์ : ํน์ ๊ตญ๊ฐ์ ์ํ ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ํ ์ค์ฉ ์ถ๋ ฅํ๊ธฐ
* 1. ๋ฐ์ดํฐ(์ด๋ฆ, ์ด๋ฉ์ผ, ์ ํ๋ฒํธ) ๋ด์ ์คํธ๋ญ์ฒ ์์ฑํ๊ธฐ
TYPES: BEGIN OF ts_custinfo,
NAME TYPE S_CUSTNAME,
EMAIL TYPE S_EMAIL,
TELEPHONE TYPE S_PHONENO,
END OF ts_custinfo.
* 2. ์คํธ๋ญ์ฒ ์ ์ธํ๊ธฐ
DATA gs_cust TYPE ts_custinfo.
* 3. ๋๋ผ ์
๋ ฅ๋ฐ๊ธฐ
PARAMETERS iv_conty TYPE S_COUNTRY.
* 4. ๋๋ผ๋ ์ฌ๋ฌ๊ฑด์ด๋ฏ๋ก SINGLE ์์ด, ์คํธ๋ญ์ฒ ๋จ์๋ก ํ๊ฑด์ฉ ๋ฐ๋ณตํ์ฌ ์ถ๋ ฅํ๊ธฐ
SELECT NAME EMAIL TELEPHONE
FROM SCUSTOM
INTO CORRESPONDING FIELDS OF gs_cust " ์คํธ๋ญ์ฒ๋กโญ "
WHERE COUNTRY = iv_conty.
WRITE: / gs_cust-name, gs_cust-email, gs_cust-telephone.
ENDSELECT.
๐ ENDSELECT๋ ์๋์ผ๋ก ๋ฃจํ๋ฅผ ๋๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์ค๋๋ก ํด์ค๋๋ค.
2๏ธโฃ SELECT * FROM ํ ์ด๋ธ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์
SELECT * FROM SCUSTOM
INTO gs_cust
WHERE COUNTRY = iv_conty.
WRITE: / gs_cust-name, gs_cust-email, gs_cust-telephone.
ENDSELECT.
โก๏ธ ๋ชจ๋ ํ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ด์ง๋ง, ENDSELECT ๋ฐฉ์์์๋ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ๋๋๋ก ํ์ํ ํ๋๋ง ๊ฐ์ ธ์ค๋ 1๏ธโฃ๋ฒ ๋ฐฉ์์ด ์ข์ ๋ฐฉ๋ฒ์
๋๋ค.
3๏ธโฃ Array Fetch (์ธํฐ๋ ํ ์ด๋ธ ํ์ฉ)
์ธํฐ๋ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ํ ๋ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ, ํ์ํ ๋ ๋ฃจํ๋ฅผ ๋๋ฉฐ ์ถ๋ ฅํ๋ ๋ฐฉ์์ ๋๋ค.
๐ก ์์ : ํน์ ๊ตญ๊ฐ ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ์ธํฐ๋ ํ ์ด๋ธ์ ์ ์ฅ ํ ์ถ๋ ฅ
TYPES: BEGIN OF ts_custinfo,
NAME TYPE S_CUSTNAME,
EMAIL TYPE S_EMAIL,
TELEPHONE TYPE S_PHONENO,
END OF ts_custinfo.
DATA gw_cust TYPE ts_custinfo.
DATA gt_cust TYPE STANDARD TABLE OF ts_custinfo
WITH NON-UNIQUE KEY email.
PARAMETERS iv_conty TYPE S_COUNTRY.
SELECT NAME EMAIL TELEPHONE
FROM SCUSTOM
INTO CORRESPONDING FIELDS OF TABLE gt_cust " ํ
์ด๋ธ๋กโญ "
WHERE COUNTRY = iv_conty.
SORT gt_cust BY name ASCENDING.
LOOP AT gt_cust INTO gw_cust.
WRITE: / sy-tabix, gw_cust-name, gw_cust-email, gw_cust-telephone.
ENDLOOP.
๐ SORT gt_cust BY name ASCENDING์ ์ถ๊ฐํ๋ฉด ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ์ ์์
๐ฏ ํท๊ฐ๋ฆฌ๋ ํฌ์ธํธ
- INTO๋ ํ ๊ฐ์ ํ์ ๊ตฌ์กฐ์ฒด์ ์ ์ฅํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ
- INTO TABLE์ ์ฌ๋ฌ ๊ฐ์ ํ์ ์ธํฐ๋ ํ ์ด๋ธ์ ์ ์ฅํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ
3. SQL ํ์ฉ (GROUP BY, HAVING, WHERE ์กฐ๊ฑด๋ฌธ ํ์ฉ)
โ ์ง๊ณ ํจ์์ ๊ทธ๋ฃนํ
SELECT carrid connid SUM(seataocc)
FROM SFLIGHTS
GROUP BY carrid connid.
โ HAVING์ ํ์ฉํ ํํฐ๋ง
SELECT carrid connid SUM(seataocc)
FROM SFLIGHTS
GROUP BY carrid connid
HAVING SUM(seataocc) > 100.
โ WHERE ์ ์ ๋ค์ํ ์กฐ๊ฑด ํ์ฉ
SELECT * FROM SPFLI
WHERE COUNTRYFR IN (‘DE’, ‘US’).
4. ๊ธฐํ SQL ๋ฌธ๋ฒ ๋ฐ ๋ฐ์ดํฐ ์กฐ์ (INSERT, APPEND ๋ฑ)
โ ๋ฐ์ดํฐ ์ฝ์
INSERT INTO TABLE_NAME VALUES (‘๊ฐ1’, ‘๊ฐ2’, ‘๊ฐ3’).
โ ๊ธฐ์กด ๋ฐ์ดํฐ ์ ์งํ๋ฉฐ ์ถ๊ฐ (APPEND)
APPENDING TABLE gt_cust.
โ ORDER BY ์ ๋ ฌ
SELECT * FROM SPFLI ORDER BY PRIMARY KEY.
'SAP > ABAP ๋ฌธ๋ฒ | Open SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SAP] OPEN SQL ๋ฐ์ดํฐ ์ฝ์ / ์์ / ์ญ์ / ํธ๋์ญ์ ์ฒ๋ฆฌ (0) | 2025.03.28 |
---|---|
[SAP] ์ง๊ณ ํจ์(Aggregate Function) - MIN, MAX, SUM, COUNT, GROUP BY, HAVING (0) | 2025.02.14 |
[SAP] SELECT SINGLE๊ณผ SELECT์ ์ฐจ์ด / ๋ณ์ ์ ๋์ฌ ์ ์ํ๊ธฐ (0) | 2025.01.31 |
[SAP] ์์คํ ๋ณ์ SY-XXXX ํ๋์ ์ ๋ฆฌํ๊ธฐ (0) | 2025.01.30 |
[SAP] ๋ฐ๋ณต๋ฌธ DO, WHILE (0) | 2025.01.30 |