SAP 시스템에 수백~수만 건의 마스터 데이터를 한 번에 올려야 하는 상황 은 신규 시스템 오픈, 자재 일괄 등록, 대량 입고 취소·재처리, 거래처 일괄 변경 등에서 자주 발생합니다. 매번 화면을 손으로 두드리기는 현실적으로 불가능합니다.
이럴 때 쓰는 SAP 표준 도구가 LSMW(Legacy System Migration Workbench) 입니다. 트랜잭션 LSMW 한 번이면 엑셀 같은 외부 데이터 파일을 SAP 화면에 자동으로 흘려넣어 대량 처리해 줍니다. ABAP 코드를 한 줄도 짜지 않아도 되는 게 가장 큰 강점입니다.
이 글은 LSMW 의 14단계 표준 절차, 4가지 입력 방식의 차이, 실무에서 가장 많이 쓰는 Batch Input Recording 방식의 사용법, 그리고 S/4HANA 환경에서의 대안인 Migration Cockpit 비교까지 정리한 메모입니다.
핵심 — LSMW 는 14단계 마법사로 외부 데이터를 SAP 화면에 자동 입력하는 도구
LSMW 의 본질은 "외부 파일(주로 엑셀·CSV) 의 각 행을 SAP 표준 화면에 한 번씩 자동으로 입력해 주는 자동화 도구" 입니다. 사용자가 ME21N(구매오더 생성) 화면을 100번 직접 클릭할 일을, 100행짜리 엑셀과 LSMW 프로젝트 하나로 끝낼 수 있습니다.
| 항목 | 내용 |
|---|---|
| T-Code | LSMW |
| 주 용도 | 대량 마스터 / 트랜잭션 데이터 SAP 입력 · 정기 데이터 보정 작업 |
| 입력 데이터 | 엑셀(XLSX) · CSV · 고정폭 텍스트 등 외부 파일 |
| 코딩 필요 | 기본은 No-code (필드 매핑·변환 규칙은 폼 입력). 복잡한 변환은 ABAP 한 줄짜리 식 또는 폼 루틴 추가 |
| SAP 버전 지원 | ECC : 정식 지원 · S/4HANA : 사용 가능하지만 deprecated, LTMC / LTMOM(Migration Cockpit) 권장 |
| 프로젝트 구조 | Project → Subproject → Object 3계층 (예: ZMM_MASTER → ZLIFNR → ZLIFNR_CREATE) |
LSMW 의 4가지 입력 방식 중 무엇을 쓸지 먼저 결정해야 합니다.
| 방식 | 설명 | 선택 기준 |
|---|---|---|
| Standard Batch / Direct Input | SAP 가 미리 만든 표준 입력 프로그램 사용 (예: RMDATIND 자재 마스터) |
표준 오브젝트(자재·고객·거래처 등) 대량 등록 · 가장 빠름 |
| Batch Input Recording | SHDB 로 화면 조작을 녹화해 그대로 재생 |
실무 가장 흔함 · CBO 화면 · 표준에 직접 지원 없는 케이스 |
| BAPI | 표준 BAPI 함수 호출로 처리 | 대량 빠른 처리 + 표준 BAPI 가 존재할 때 (예: BAPI_MATERIAL_SAVEDATA) |
| IDoc | IDoc 파일을 통한 ALE / EDI 인터페이스 활용 | 시스템 간 인터페이스 통합 시 |
대부분의 실무 케이스는 Batch Input Recording 으로 해결합니다. 이 글의 단계별 설명도 Recording 방식을 기준으로 진행합니다.
1단계 — 프로젝트 / 서브프로젝트 / 오브젝트 생성
LSMW 작업은 Project → Subproject → Object 3계층 단위로 관리됩니다. 같은 Project 안에 여러 데이터 유형(자재·거래처·구매오더) 의 작업을 모아둘 수 있습니다.
LSMW → 진입
Project : ZMM_MIGRATION (없으면 Create)
Subproject : ZVENDOR (없으면 Create)
Object : ZLIFNR_CREATE (없으면 Create)
→ Execute

오브젝트가 결정되면 14단계 메뉴 화면으로 들어갑니다. 단계는 항상 1번부터 순서대로 진행하며, 앞 단계가 완료돼야 다음 단계가 열립니다.

2단계 — 14단계 표준 절차 한눈에
LSMW 의 모든 작업은 다음 14단계로 표준화돼 있습니다. 한 번 익혀두면 자재든 거래처든 구매오더든 절차가 동일합니다.
| 단계 | 메뉴 이름 | 하는 일 |
|---|---|---|
| 1 | Maintain Object Attributes | 입력 방식 선택 (Standard · Recording · BAPI · IDoc) + Recording 이름 지정 |
| 2 | Maintain Source Structures | 엑셀 파일의 시트 / 데이터 그룹 정의 (헤더·아이템 등) |
| 3 | Maintain Source Fields | 엑셀의 각 컬럼 정의 — 이름·타입·길이 |
| 4 | Maintain Structure Relations | 엑셀 구조와 SAP 입력 구조의 연결 관계 설정 |
| 5 | Maintain Field Mapping | 가장 중요한 단계 — 엑셀 컬럼을 SAP 필드에 1:1 매핑 + 변환 규칙 |
| 6 | Maintain Fixed Values, Translations, User-Defined Routines | 고정값·코드 변환표·사용자 정의 폼 루틴 (옵션 — 필요시만) |
| 7 | Specify Files | 엑셀 파일 경로 지정 (Frontend: 로컬 / Application Server: 서버) |
| 8 | Assign Files | 파일을 Source Structure 에 연결 |
| 9 | Read Data | 파일을 LSMW 내부로 읽기 |
| 10 | Display Read Data | 읽은 데이터 검토 (잘 읽혔는지 확인) |
| 11 | Convert Data | 필드 매핑·변환 규칙 적용해 SAP 입력 형태로 변환 |
| 12 | Display Converted Data | 변환된 데이터 검토 |
| 13 | Import Data (Run BDC / BAPI) | 실제 SAP 화면에 입력 실행 — Batch Input 세션 생성 후 SM35 로 실행 |
| 14 | Display Logs | 실행 결과 로그 확인 — 성공·실패 건수 / 에러 메시지 |
처음 한 번 만들어 두면 같은 오브젝트로 같은 엑셀 형식의 데이터를 반복 처리할 때는 단계 7~14 만 빠르게 돌리면 됩니다.
3단계 — Batch Input Recording 생성 (SHDB 연계)
Recording 방식의 핵심은 "SAP 화면에서 1건을 사람이 직접 클릭·입력해 두면, 그 행동을 그대로 녹화해서 매번 재생" 한다는 것입니다. SHDB 트랜잭션이 그 녹화 기능을 담당합니다.
SHDB → New Recording → 이름 ZREC_ME21N
→ 시작 트랜잭션 : ME21N (구매오더 생성 예시)
→ SAP 가 ME21N 화면을 띄움
→ 거래처·자재·수량 등 1건을 끝까지 입력 + 저장
→ 녹화 종료 → 저장

녹화가 끝나면 LSMW 1단계에서 이 Recording 이름(ZREC_ME21N) 을 지정합니다. LSMW 가 녹화된 화면 흐름을 그대로 따라가며 엑셀의 각 행 데이터를 화면에 자동 입력하게 됩니다.
4단계 — 필드 매핑과 파일 실행 (단계 5 · 7 · 13 핵심)
가장 작업 시간이 많이 드는 부분이 단계 5 (Field Mapping) 입니다. SAP 가 자동으로 매핑 후보를 제시하지만, 엑셀 컬럼 이름과 SAP 필드 이름이 다르면 수동으로 연결해야 합니다.
LSMW → 5. Maintain Field Mapping → Execute
→ 좌측: SAP 필드 (BSART · LIFNR · MATNR · MENGE · WERKS 등)
→ 우측: 엑셀 컬럼 (DOC_TYPE · VENDOR · MATERIAL · QTY · PLANT)
→ 각 SAP 필드 더블클릭 → Assign Source Field
→ 변환 규칙 필요시 Rule (Transfer · Constant · Move · Translation · ABAP)

필수 매핑 후 단계 7 에서 엑셀 파일 위치를 지정합니다.
LSMW → 7. Specify Files → Execute
Frontend file : C:\temp\PO_MIGRATION.xlsx (또는 .txt / .csv)
Delimiter : Tab / Semicolon / Comma (CSV 일 때)
Field names : "Field names at start of file" 체크 (헤더가 있을 때)
마지막 단계 13 에서 Batch Input 세션을 생성합니다.
LSMW → 13. Import Data → Execute
→ Session Name : ZSES_PO_001
→ Keep session? : ☑ (실패 시 재실행을 위해 유지)
→ 세션 생성 완료
SM35 → 세션 이름 선택 → Process → Foreground / Display Errors Only / Background 중 선택

처음에는 Display Errors Only 또는 Foreground(눈으로 확인) 로 1~2 건 테스트 후, 결과 확인되면 Background 로 전체를 돌리는 패턴이 안전합니다.
5단계 — LSMW vs Migration Cockpit (S/4HANA 환경)
S/4HANA 부터는 LSMW 가 deprecated 되었고, SAP 가 Migration Cockpit 을 신규 표준으로 밀고 있습니다. 두 도구의 사용 결정은 시스템 버전에 따라 달라집니다.
| 항목 | LSMW | Migration Cockpit (LTMC / LTMOM) |
|---|---|---|
| T-Code | LSMW |
LTMC(실행) · LTMOM(오브젝트 모델링) |
| 지원 SAP 버전 | ECC 정식 · S/4HANA 호환만 (deprecated) | S/4HANA 정식 (1610+) · ECC 미지원 |
| 입력 방식 | Standard · Recording · BAPI · IDoc | 사전 정의된 Migration Object (Material · Customer · Vendor 등) |
| UI | SAP GUI 14단계 라디오 메뉴 | Fiori 웹 UI · 직관적 위저드 |
| CBO 화면 지원 | Recording 으로 자유롭게 처리 | 표준 오브젝트만 — CBO 는 Custom Object 추가 작업 필요 |
| 실무 추천 | ECC 환경 · CBO 화면 입력 · 한 번성 작업 | S/4HANA 환경 · 표준 마스터 이관 · 신규 시스템 오픈 |
회사가 ECC 6.0 을 운영 중이라면 LSMW 가 여전히 1순위 도구입니다. S/4HANA 로 이미 전환된 환경이라면 Migration Cockpit 을 우선 검토하고, 표준 오브젝트로 커버 안 되는 부분만 LSMW Recording 으로 보완하는 패턴이 일반적입니다.
흔히 빠뜨리는 함정
엑셀 1행에 헤더가 있는데 단계 7에서 체크 누락
엑셀의 첫 행이 컬럼 이름이라면 단계 7 에서 Field names at start of file 체크가 필수입니다. 누락 시 첫 행이 데이터로 인식되어 헤더 이름이 실제 SAP 필드에 입력됩니다.
Recording 중 메시지창 뜨면 녹화에 박힘
녹화 도중 "정보 메시지", "경고 메시지" 등 팝업이 뜬 채로 진행하면 그 팝업까지 녹화되어 매 행마다 재현됩니다. 깨끗한 환경에서 녹화하거나, 녹화 후 메시지 처리 코드를 추가 분기해야 합니다.
Frontend vs Application Server 파일 위치 혼동
단계 7 에서 Frontend(개인 PC) 와 Application Server(SAP 서버 디렉토리) 를 혼동해 경로 못 찾는 경우. 대량 / 백그라운드 실행 시 반드시 Application Server 에 업로드 후 사용합니다 (AL11 로 서버 디렉토리 확인).
Background 실행 시 권한 누락
SM35 에서 Background 로 실행하면 BTC 작업 권한이 필요합니다. 권한 부족 시 세션이 멈추므로 사전에 베이시스에 확인합니다.
단계 13 실행 전 단계 11(Convert) 미수행
단계 11 Convert Data 를 건너뛰고 단계 13 으로 가면 변환되지 않은 원본 데이터로 세션이 생성됩니다. 항상 9 → 10 → 11 → 12 → 13 순서로 진행하고, 단계 12 에서 변환 결과를 눈으로 한 번 확인합니다.
필드 매핑에서 같은 이름 자동 매핑 맹신
SAP 가 자동으로 매핑 후보를 제시하지만, 같은 이름이라도 의미가 다른 경우 가 있습니다 (예: DATE 가 발주일인지 납기일인지). 매핑 화면에서 각 필드 매핑 결과를 한 번 더 검토합니다.
한 번 만든 LSMW 프로젝트의 트랜스포트 관리
LSMW 프로젝트는 클라이언트별 데이터입니다. 운영기에 배포하려면 Extras → Export Project 로 트랜스포트 요청을 생성하거나, 프로젝트를 직접 다시 만드는 방식 중 정책에 맞게 선택합니다.
에러 세션 무한 누적
여러 번 실행하면 SM35 에 실패한 세션이 계속 쌓입니다. 주기적으로 SM35 → 세션 선택 → Delete 로 정리합니다.
전체 코드 — 복사용 통합본 (선택 사항)
LSMW 자체는 No-code 도구라 ABAP 코드 본문이 필요한 글은 아닙니다. 다만 단계 5 (Field Mapping) 에서 변환 규칙으로 ABAP 식을 넣을 때 자주 쓰는 패턴 한 줄짜리 예시를 정리해 둡니다.
* 1) 고정값 대입 — 모든 행을 같은 회사코드로
EKKO-BUKRS = '1000'.
* 2) 조건부 값 — 자재 prefix 에 따라 다른 플랜트
IF SOURCE_FIELDS-MATERIAL CP 'A*'.
EKPO-WERKS = '0001'.
ELSEIF SOURCE_FIELDS-MATERIAL CP 'B*'.
EKPO-WERKS = '0002'.
ELSE.
EKPO-WERKS = '9999'.
ENDIF.
* 3) Alpha conversion (선행 0 추가) — 거래처 번호
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = SOURCE_FIELDS-VENDOR
IMPORTING
output = EKKO-LIFNR.
* 4) 날짜 포맷 변환 — '20260518' → '2026-05-18' (역방향은 그대로 사용)
DATA(lv_in) = SOURCE_FIELDS-DOC_DATE.
EKKO-BEDAT = lv_in.
* 5) 텍스트 대문자 변환
TRANSLATE SOURCE_FIELDS-TEXT TO UPPER CASE.
EKKO-IHREZ = SOURCE_FIELDS-TEXT.
이러한 ABAP 식은 LSMW 의 Rule → ABAP 옵션으로 필드별로 넣을 수 있으며, 복잡한 변환은 단계 6 의 사용자 정의 폼 루틴(FORM) 으로 분리합니다.
요약
| 단계 | 작업 | 핵심 |
|---|---|---|
| 1 | 입력 방식 결정 | Standard · Recording · BAPI · IDoc 중 선택 — Recording 이 가장 흔함 |
| 2 | 14단계 절차 | 1~6(설계) → 7~8(파일) → 9~12(읽기·변환·검토) → 13~14(실행·로그) |
| 3 | Recording 생성 | SHDB 로 1건 화면 녹화 → LSMW 1단계에서 지정 |
| 4 | 핵심 매핑·실행 | 단계 5(매핑) · 7(파일) · 13(SM35 세션 생성) 3개가 작업 시간의 80% |
| 5 | 버전별 선택 | ECC : LSMW · S/4HANA : LTMC(Migration Cockpit) 우선 |
LSMW 는 대량 데이터 이관을 ABAP 코딩 없이 처리할 수 있는 SAP 표준 도구로, 14단계 마법사 형태로 표준화돼 있어 한 번 익혀두면 자재·거래처·구매오더 등 어떤 대상이든 같은 패턴으로 작업할 수 있습니다. 실무에서 가장 흔히 쓰는 입력 방식은 Batch Input Recording 으로, SHDB 녹화 → LSMW 매핑 → SM35 실행의 3단계로 정형화됩니다. S/4HANA 환경이라면 Migration Cockpit(LTMC · LTMOM) 이 신규 표준이지만, CBO 화면 처리나 ECC 환경에서는 LSMW 가 여전히 1순위 선택지입니다.
Disclaimer — 이 포스트는 실무 정리 노트를 바탕으로 AI 보조로 정리되었습니다.
LSMW · SHDB · SM35 · AL11 트랜잭션과 LTMC · LTMOM Migration Cockpit 은 SAP NetWeaver / S/4HANA 표준 기능으로 별도 라이선스 없이 사용 가능합니다. LSMW 는 ECC 환경에서는 정식 지원되지만 S/4HANA 에서는 deprecated 상태로, SAP 의 권장 경로는 Migration Cockpit 사용입니다. 다만 S/4HANA on-premise 일부 버전에서는 LSMW 가 여전히 작동하며, 운영 정책과 시스템 버전에 따라 사용 가능 여부를 사전에 확인하시기 바랍니다. 대량 데이터 처리 시 운영 시간대를 피하고, 배치 작업 권한(BTC) 과 트랜잭션 별 권한 오브젝트를 사전에 베이시스에 확인하는 절차를 권장합니다.