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 ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ๊ฐœ๋…์€ ์žก์„ ์ˆ˜ ์žˆ์–ด! ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•˜๋ฉด ์‹ค์ „ ์˜ˆ์ œ๋„ ์•Œ๋ ค์ค„๊ฒŒ. ๐Ÿ˜ƒ