엑셀 데이터를 SAP로 업로드하기 - 두 가지 함수 모듈 비교

엑셀 데이터를 SAP로 업로드하기 배너

엑셀 업로드, 어떤 함수를 쓸까

현업에서 마스터 데이터나 대량 트랜잭션을 처리할 때, 엑셀 파일을 SAP 내부 테이블로 읽어들이는 작업은 빠지지 않습니다. 대표적으로 두 가지 함수 모듈이 쓰이는데, 각각 장단점이 뚜렷해서 상황에 맞게 골라야 합니다.

  • TEXT_CONVERT_XLS_TO_SAP
  • ALSM_EXCEL_TO_INTERNAL_TABLE

TEXT_CONVERT_XLS_TO_SAP

업로드할 행 수에 제한이 없는 것이 가장 큰 장점입니다. 대량 건을 한 번에 읽어야 할 때 유용합니다.

1TYPES: BEGIN OF t_matnr_char,
2         matnr TYPE matnr,
3         atnam TYPE atnam,
4         atwrt TYPE atwrt,
5       END OF t_matnr_char.
6
7DATA: gt_matnr_char TYPE STANDARD TABLE OF t_matnr_char,
8      lt_raw        TYPE truxs_t_text_data,
9      pa_file       TYPE rlgrap-filename.
10
11pa_file = 'C:\Users\example\upload.xlsx'.   " (예시) 경로
12
13CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
14  EXPORTING
15    i_line_header        = 'X'              " 첫 행을 헤더로 처리
16    i_tab_raw_data       = lt_raw
17    i_filename           = pa_file
18  TABLES
19    i_tab_converted_data = gt_matnr_char
20  EXCEPTIONS
21    conversion_failed    = 1
22    OTHERS               = 2.
23
24IF sy-subrc <> 0.
25  " 변환 실패 처리
26ENDIF.
한글 깨짐 주의

행 수 제한이 없는 대신, 한글이 깨지는 현상이 보고됩니다. 다만 환경에 따라 멀쩡할 때도 있어, 도입 전 실제 데이터로 인코딩을 꼭 테스트해 보는 것이 안전합니다.

함수가 정상 실행되면 엑셀의 각 행이 아래처럼 내부 테이블로 들어옵니다.

엑셀 업로드 결과 내부 테이블 예시

업로드된 행이 구조체 필드로 매핑된 모습. (자재코드·값은 익명 예시)

ALSM_EXCEL_TO_INTERNAL_TABLE

읽어올 시작/종료 행과 열을 지정할 수 있어 직관적입니다.

1DATA: lt_xls     TYPE STANDARD TABLE OF alsmex_tabline,
2      i_begin_row TYPE i,
3      i_end_row   TYPE i.
4
5i_begin_row = 1.
6i_end_row   = 5000.
7
8CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
9  EXPORTING
10    filename                = pa_file
11    i_begin_col             = 1
12    i_begin_row             = i_begin_row
13    i_end_col               = 100
14    i_end_row               = i_end_row
15  TABLES
16    intern                  = lt_xls
17  EXCEPTIONS
18    inconsistent_parameters = 1
19    upload_ole              = 2
20    OTHERS                  = 3.

이 함수는 결과가 행/열/값 형태(alsmex_tabline)로 떨어지므로, 이후 원하는 구조체로 매핑하는 후처리가 필요합니다.

행 수 제한과 성능
  • 읽어올 수 있는 행 수에 제한이 있습니다.
  • 대량 건을 실행하면 클립보드 저장 관련 문제가 발생할 수 있고, 내부적으로 엑셀이 백그라운드에서 자동 실행되면서 느려지는 이슈가 있습니다. :::

두 함수 비교

TEXT_CONVERT_XLS_TO_SAP
  • ✅ 행 수 제한 없음 (대량에 유리)
  • ✅ 헤더 행 자동 처리 옵션
  • ⚠️ 한글 깨짐 가능 (환경 따라 다름)
ALSM_EXCEL_TO_INTERNAL_TABLE
  • ✅ 시작/종료 행·열 지정 직관적
  • ⚠️ 행 수 제한 있음
  • ⚠️ 대량 시 클립보드 문제·백그라운드 엑셀로 느려짐

요약하면 — 대량이면 TEXT_CONVERT_XLS_TO_SAP(인코딩만 확인), 소량을 범위 지정해 깔끔하게 읽으려면 ALSM_EXCEL_TO_INTERNAL_TABLE 이 무난합니다.

참고: 코딩 블록이 걸려 있으면 LSMW/BDC가 막힌다

엑셀 업로드를 LSMW나 BDC(레코딩)로 처리하려다 막히는 경우가 있습니다. 표준 트랜잭션에 코딩 블록(Coding Block)이 추가되어 있으면, 자동화(레코딩)를 막기 위한 목적으로 동작하여 LSMW/BDC 레코딩 자체가 되지 않을 수 있습니다.

이럴 때는 위에서 소개한 함수 모듈로 데이터를 읽어 BAPI나 표준 트랜잭션 로직을 직접 호출하는 방식으로 우회하는 것을 고려합니다.

:::info 코딩 블록 추가 여부와 동작은 시스템 설정·릴리스(S/4HANA 등)에 따라 다를 수 있으니, 실제 시스템에서 확인하세요.

Disclaimer — 이 포스트는 AI(Claude)를 활용하여 작성된 초안을 바탕으로 검수 및 보완하여 작성되었습니다. 내용 중 오류나 오타가 있다면 댓글로 알려주시면 감사하겠습니다.