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

[SAP ABAP] ์—‘์…€ ์—…๋กœ๋“œ ๋ฐ ์—‘์…€ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•

by Jay Din 2025. 4. 1.
728x90
๋ฐ˜์‘ํ˜•

SAP ์‹œ์Šคํ…œ์—์„œ ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ๋ณ€ํ™˜ํ•˜์—ฌ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ, ์ธํ„ฐํŽ˜์ด์Šค ์—ฐ๋™ ์‹œ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ABAP์„ ํ™œ์šฉํ•˜์—ฌ ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด๋ฅผ SAP ํ…Œ์ด๋ธ”์— ์—…๋กœ๋“œํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


 

1. ์—‘์…€ ๋ฐ์ดํ„ฐ โ†’ SAP์‹œ์Šคํ…œ

 

SAP์—์„œ๋Š” ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ž‘์—…์œผ๋กœ ์ž…๋ ฅํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ตฌ๋งค ์˜ค๋”, ์ถœ๊ณ  ๋ฐ์ดํ„ฐ, ๊ณ ๊ฐ ์ •๋ณด ๋“ฑ์„ ์—‘์…€์—์„œ ๊ด€๋ฆฌํ•˜๋‹ค๊ฐ€ SAP๋กœ ์ผ๊ด„ ์—…๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ, ABAP์„ ํ™œ์šฉํ•˜์—ฌ ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

2. ์—‘์…€ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ์—…๋กœ๋“œ ์ด์ 

  • ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ: ์ˆ˜๋ฐฑ~์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Œ
  • ์—…๋ฌด ํšจ์œจ์„ฑ ํ–ฅ์ƒ: ์ˆ˜์ž‘์—… ์ž…๋ ฅ์„ ์ค„์—ฌ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ ์ ˆ๊ฐ
  • ๋ฐ์ดํ„ฐ ์ •ํ™•์„ฑ ์ฆ๊ฐ€: ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์Œ
  • ์ž๋™ํ™” ๊ฐ€๋Šฅ: ๋ฐฐ์น˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์Šค์ผ€์ค„๋งํ•˜์—ฌ ์ •๊ธฐ์ ์ธ ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ ๊ฐ€๋Šฅ

 

3. ์ฝ”๋“œ ์„ค๋ช…

1) ํŒŒ์ผ ์„ ํƒ ํŒ์—… ์—ด๊ธฐ

์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•  ์—‘์…€ ํŒŒ์ผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋ก ํŒ์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

CALL FUNCTION 'F4_FILENAME'
  IMPORTING
    file_name = p_file.

 

2) ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”๋กœ ๋ณ€ํ™˜

์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ lt_excel_raw ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

 

3) ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜

๊ฐ ์ปฌ๋Ÿผ์„ SAP ํ…Œ์ด๋ธ” ํ•„๋“œ์— ๋งคํ•‘ํ•˜์—ฌ ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ lt_excel ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

LOOP AT lt_excel_raw INTO ls_raw.
  CASE ls_raw-col.
    WHEN 1. ls_excel-mandt  = ls_raw-value.
    WHEN 2. ls_excel-userid = ls_raw-value.
    WHEN 3.
      ls_excel-passwd = ls_raw-value.
      APPEND ls_excel TO lt_excel.
      CLEAR: ls_excel.
  ENDCASE.
ENDLOOP.

 

4. ์—‘์…€ ์—…๋กœ๋“œ ๋ฐ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋Š” ABAP  ์ „์ฒด ์ฝ”๋“œ

์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด SAP์—์„œ๋Š” ALSM_EXCEL_TO_INTERNAL_TABLE ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ํ•จ์ˆ˜๋Š” ์—‘์…€ ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ INTERNAL TABLE๋กœ ๋ณ€ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.

TABLES: alsmex_tabline, ztable.  " ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ๋ฐ CBOํ…Œ์ด๋ธ” ์„ ์–ธ

DATA: lt_excel_raw TYPE TABLE OF alsmex_tabline,  " ์—‘์…€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ธํ„ฐ๋„ํ…Œ์ด๋ธ”
      ls_raw       TYPE alsmex_tabline,           " ์—‘์…€ ์›๋ณธ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ๋ณ„ ํ–‰์„ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ
      lt_excel     TYPE TABLE OF ztable,          " ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ธํ„ฐ๋„ํ…Œ์ด๋ธ”
      ls_excel     TYPE ztable,                   " ๊ฐœ๋ณ„ ํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ตฌ์กฐ
      lv_file      TYPE rlgrap-filename,          " ์—…๋กœ๋“œํ•  ์—‘์…€ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜
      lv_value     TYPE string.                   " ๊ฐœ๋ณ„ ์…€ ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜

" ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์„ ์„ ํƒํ•˜๋„๋ก ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ ์–ธ
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY.

" ํŒŒ์ผ ์„ ํƒ ํŒ์—… (์ž๋™ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ ์‹คํ–‰)

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_file.   " ํŒŒ์ผ ์„ ํƒ ํ›„ ๊ฒฝ๋กœ๋ฅผ p_file ๋ณ€์ˆ˜์— ์ €์žฅ


START-OF-SELECTION.

  " ์„ ํƒํ•œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅ
  WRITE: / '์„ ํƒํ•œ ํŒŒ์ผ ๊ฒฝ๋กœ:', p_file.

  " Step 1: ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ์ธํ„ฐ๋„ํ…Œ์ด๋ธ”๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฝ๊ธฐ
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename    = p_file      " ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ํŒŒ์ผ ๊ฒฝ๋กœ
      i_begin_col = 1           " ์‹œ์ž‘ ์ปฌ๋Ÿผ (์ฒซ ๋ฒˆ์งธ ์ปฌ๋Ÿผ)
      i_begin_row = 2           " ๋ฐ์ดํ„ฐ๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ํ–‰ (๋‘ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์‹œ์ž‘)
      i_end_col   = 16          " ์ปฌ๋Ÿผ ๊ฐœ์ˆ˜ (ํ•„์š”์— ๋”ฐ๋ผ ์กฐ์ • ๊ฐ€๋Šฅ)
      i_end_row   = 1000        " ์ตœ๋Œ€ 1000๊ฐœ ํ–‰ ์ฝ๊ธฐ (ํ•„์š”์— ๋”ฐ๋ผ ์กฐ์ • ๊ฐ€๋Šฅ)
    TABLES
      intern      = lt_excel_raw " ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ธํ„ฐ๋„ํ…Œ์ด๋ธ”
    EXCEPTIONS
      OTHERS      = 1.      " ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  IF sy-subrc <> 0.
    WRITE: '์—‘์…€ ํŒŒ์ผ ์—…๋กœ๋“œ ์‹คํŒจ!'.
    EXIT.
  ENDIF.

  " Step 2: ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ ํ…Œ์ด๋ธ”(ztable) ๊ตฌ์กฐ๋กœ ๋งคํ•‘
  CLEAR: lt_excel.
  LOOP AT lt_excel_raw INTO ls_raw.
    " ์—‘์…€ ๋ฐ์ดํ„ฐ์˜ ์ปฌ๋Ÿผ ๋ฒˆํ˜ธ์— ๋”ฐ๋ผ ZTABLE์˜ ํ•„๋“œ์— ๋งคํ•‘
    CASE ls_raw-col.
      WHEN 1. ls_excel-mandt   = ls_raw-value.        " ์ฒซ ๋ฒˆ์งธ ์ปฌ๋Ÿผ โ†’ ํด๋ผ์ด์–ธํŠธ ์ •๋ณด
      WHEN 2. ls_excel-userid  = ls_raw-value.        " ๋‘ ๋ฒˆ์งธ ์ปฌ๋Ÿผ โ†’ ์‚ฌ์šฉ์ž ID
      WHEN 3.
        ls_excel-passwd  = ls_raw-value.               " ์„ธ ๋ฒˆ์งธ ์ปฌ๋Ÿผ โ†’ ํŒจ์Šค์›Œ๋“œ
        
        " ํ•œ ํ–‰์˜ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€
        APPEND ls_excel TO lt_excel.
        CLEAR: ls_excel.  " ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด ๊ตฌ์กฐ ์ดˆ๊ธฐํ™”

    ENDCASE.


  ENDLOOP.


  " Step 3: ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ (ํ…Œ์ŠคํŠธ์šฉ, ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ํ•„์š” ์‹œ ์ฃผ์„ ์ฒ˜๋ฆฌ)
  LOOP AT lt_excel INTO ls_excel.
    WRITE: / ls_excel.
  ENDLOOP.

 

 

728x90
๋ฐ˜์‘ํ˜•