SAP ABAP
ABAP ๊ธฐ๋ณธ๋ฌธ๋ฒ
์ ํธ๋
2025. 3. 29. 16:48
๐น ABAP ๊ธฐ๋ณธ ๋ฌธ๋ฒ
ABAP์ SQL๊ณผ ๋น์ทํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ์๊ณ , ๋ช ๋ น์ด๋ ๋๋ถ๋ถ ๋ฌธ์ฅ ๋์ ์ (.)์ ๋ถ์ฌ์ผ ํด.
1๏ธโฃ ๋ฐ์ดํฐ ์ ์ธ (DATA)
๋ณ์๋ฅผ ์ ์ธํ ๋ DATA ํค์๋๋ฅผ ์ฌ์ฉํด.
DATA: lv_text TYPE string,
lv_number TYPE i. " ์ ์ํ (Integer)
๐ ์๋ฃํ ์์
- C → ๋ฌธ์ (ex: TYPE C LENGTH 10)
- I → ์ ์
- F → ๋ถ๋์์์
- D → ๋ ์ง (YYYYMMDD ํ์)
- T → ์๊ฐ (HHMMSS ํ์)
- STRING → ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด
2๏ธโฃ ์กฐ๊ฑด๋ฌธ (IF, CASE)
IF lv_number > 10.
WRITE: '10๋ณด๋ค ํฝ๋๋ค'.
ELSEIF lv_number = 10.
WRITE: '10์
๋๋ค'.
ELSE.
WRITE: '10๋ณด๋ค ์์ต๋๋ค'.
ENDIF.
CASE lv_number.
WHEN 1.
WRITE: 'ํ๋'.
WHEN 2.
WRITE: '๋'.
WHEN OTHERS.
WRITE: '๊ธฐํ'.
ENDCASE.
3๏ธโฃ ๋ฐ๋ณต๋ฌธ (LOOP, WHILE, DO)
DO 5 TIMES.
WRITE: '๋ฐ๋ณต'.
ENDDO.
WHILE lv_number < 5.
WRITE: lv_number.
lv_number = lv_number + 1.
ENDWHILE.
LOOP AT lt_table INTO wa_table.
WRITE: wa_table-fieldname.
ENDLOOP.
4๏ธโฃ ๋ด์ฅ SQL (SELECT)
SAP ์์คํ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ SQL๊ณผ ์ ์ฌํ SELECT ๋ฌธ์ ์ฌ์ฉํด.
SELECT * FROM mara INTO TABLE lt_mara WHERE matnr = '1000'.
- mara → SAP์ ์์ฌ ํ ์ด๋ธ
- INTO TABLE lt_mara → ๋ด๋ถ ํ ์ด๋ธ(lt_mara)์ ๊ฒฐ๊ณผ ์ ์ฅ
5๏ธโฃ ๋ด๋ถ ํ ์ด๋ธ (Internal Table)
ABAP์์๋ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋ด๋ถ ํ ์ด๋ธ์ ์ฌ์ฉํด.
DATA: lt_table TYPE TABLE OF mara, " ๋ด๋ถ ํ
์ด๋ธ ์ ์ธ
wa_table TYPE mara. " ์์
์์ญ ์ ์ธ
SELECT * FROM mara INTO TABLE lt_table UP TO 10 ROWS. " 10๊ฐ ํ ์กฐํ
LOOP AT lt_table INTO wa_table.
WRITE: wa_table-matnr, wa_table-mtart.
ENDLOOP.
6๏ธโฃ ์๋ธ๋ฃจํด๊ณผ ํจ์
๐ ์๋ธ๋ฃจํด (FORM / ENDFORM)
FORM my_subroutine USING p_input TYPE i.
WRITE: '์
๋ ฅ ๊ฐ:', p_input.
ENDFORM.
START-OF-SELECTION.
PERFORM my_subroutine USING 100.
๐ ํจ์ ๋ชจ๋ (Function Module)
CALL FUNCTION 'BAPI_MATERIAL_GETLIST'
EXPORTING
MATERIAL = '1000'
IMPORTING
RETURN = lv_return.
๐ฅ ์ ๋ฆฌ
- DATA๋ก ๋ณ์ ์ ์ธ
- IF, CASE ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ
- LOOP, WHILE, DO ๋ฐ๋ณต๋ฌธ ํ์ฉ
- SELECT๋ก ๋ฐ์ดํฐ ์กฐํ
- ๋ด๋ถ ํ ์ด๋ธ์ ์ฌ์ฉํด ๋๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ์๋ธ๋ฃจํด(FORM)๊ณผ ํจ์(CALL FUNCTION)๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
์ด ์ ๋๋ฉด ABAP ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๊ฐ๋ ์ ์ก์ ์ ์์ด! ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๋ฉด ์ค์ ์์ ๋ ์๋ ค์ค๊ฒ. ๐