SAP 운영을 하다 보면 한 시스템(또는 클라이언트) 의 CBO 테이블 데이터를 다른 시스템(클라이언트) 으로 옮겨야 하는 상황이 자주 발생합니다. 신규 시스템 오픈 시 마스터 데이터 이관, 운영기 데이터를 개발기로 복제, S/4HANA 전환, 또는 분기마다 운영자 마스터 갱신 같은 케이스가 대표적입니다.
테이블 구조(R3TR TABL) 는 일반 트랜스포트로 자연스럽게 이관되지만, 데이터(R3TR TABU) 이관은 별도 절차 가 필요합니다. 잘못 선택하면 데이터 정합성이 깨지거나, 운영기 이관 후 사용자에게 보이지 않거나, 보안 권한이 우회되는 사고가 납니다.
이 글은 CBO 테이블의 시스템 간 데이터 이관 방법 5가지(TR(TABU) · SCC1 · Excel UP/Download · Custom Z 프로그램 · LSMW/RFC) 의 차이와 선택 기준, 그리고 실무에서 자주 만나는 함정을 정리한 메모입니다.
핵심 — 데이터 이관 5가지 방법 비교
먼저 상황별 최적 방법을 한눈에 정리합니다. 데이터 량과 검토 필요 여부에 따라 선택이 달라집니다.
| 방법 | 동작 | 적합한 상황 |
|---|---|---|
| 1. TR (TABU) | 트랜스포트 요청에 데이터까지 함께 묶어 이관 | 소~중량 운영자 마스터 · DEV → QAS → PRD 표준 흐름 |
| 2. SCC1 | 같은 시스템의 다른 클라이언트로 TR 적용 | DEV 100 → DEV 200 같은 동일 시스템 내 클라이언트 복사 |
| 3. Excel UP/Download | SE16N · Z 프로그램으로 엑셀 파일 추출 후 다른 시스템에 업로드 | 중량 · 사용자가 직접 검토 후 변경 필요 |
| 4. Custom Z 프로그램 | GUI_DOWNLOAD/GUI_UPLOAD 또는 Application Server 파일 |
대용량 · 반복 작업 · 비즈니스 변환 로직 필요 |
| 5. LSMW / RFC | LSMW(엑셀 → SM30 자동 입력) 또는 RFC 직접 호출 | 표준 화면 통해 입력 필요(검증 거치고 싶을 때) · 실시간 동기화 |
1단계 — TR(TABU) 방식: 트랜스포트에 데이터 함께 묶기
가장 표준적이고 안전한 방법입니다. 트랜스포트 요청(SE10 · SE09) 안에 테이블 데이터를 R3TR TABU 형태로 등록해서 STMS 로 이관합니다.
SE10 → Create Request → Workbench 또는 Customizing
→ Request 번호 받기 (예: DEVK900123)
→ Object List 에 수기 추가:
PgmID Object Object Name
R3TR TABU ZTXX0123
→ 더블클릭 → Key 입력 (전체 or 키 범위 지정)
* (전체 행)
100* (MANDT=100 인 모든 행)
1000A* (회사코드 1000 + 자재 A로 시작)
→ 저장 → Release → STMS 로 이관

TR 종류 차이
| PgmID Object | 의미 | 사용 시점 |
|---|---|---|
R3TR TABL |
테이블 구조 정의 (DDIC) | 신규 테이블 생성 · 필드 추가 시 |
R3TR TABU |
테이블 데이터(행) | 운영자 마스터 이관 · 기준 정보 동기화 |
자동 vs 수동 TR 등록
| 방식 | 조건 / 설정 |
|---|---|
| 자동 (SM30 사용 시) | 테이블의 Delivery Class 가 C(Customizing) 또는 G · 유지보수뷰 설정 시 트랜스포트 옵션 켜져 있으면 SM30 입력값이 자동으로 TR 에 묶임 |
| 수동 (SE09 직접) | Delivery Class 가 A(Application) 인 테이블 또는 자동 등록 안 되는 경우 · SE09 에서 직접 R3TR TABU 추가 |
2단계 — SCC1: 같은 시스템 클라이언트 간 복사
같은 SAP 시스템의 다른 클라이언트(예: DEV 100 → DEV 200) 로 데이터를 옮길 때 사용합니다. 별도 STMS 이관 없이 클라이언트 간 TR 적용 으로 동작합니다.
대상 클라이언트(예: DEV 200) 에 로그인
→ SCC1 진입
→ Source Client : 100 (데이터를 가져올 클라이언트)
→ Transport Request : DEVK900123 (적용할 TR 번호)
→ Including tasks/sub-tasks ☑
→ Including client-specific Customizing ☑
→ Execute (Test Run 권장 — 먼저 시뮬레이션)

SCC1 vs STMS 차이
| 항목 | SCC1 | STMS |
|---|---|---|
| 이관 범위 | 같은 시스템의 다른 클라이언트 | 다른 시스템(DEV → QAS → PRD) |
| 실행 위치 | 대상 클라이언트에서 | 대상 시스템 STMS Import Queue 에서 |
| TR Release 필요 | 불필요 (수정 가능 상태 TR 도 OK) | 필수 (Release 된 TR 만 이관) |
3단계 — Excel UP/Download: 사용자가 검토하며 이관
데이터를 한 번 검토하고 일부 수정해서 이관해야 하는 경우 가장 흔히 쓰는 방법입니다. SE16(또는 SE16N) 의 표준 다운로드 + SM30 의 업로드 메뉴, 또는 LSMW · 자체 Z 프로그램을 활용합니다.
Download 절차
SE16 → 테이블명 ZTXX0123 → Execute
→ 데이터 조회 결과 화면
→ List → Save → Local File → Spreadsheet (XLSX)
→ 파일 저장
Upload 절차 (두 가지)
방법 A — SM30 (자동 유지보수뷰 사용 시)
SM30 → ZTXX0123 → Maintain
→ 메뉴: Table View → Upload (있는 경우)
방법 B — LSMW 또는 Custom Z 프로그램
엑셀 파일 → LSMW Recording → 자동 등록 (별도 글: "LSMW 사용법 — 14단계 대량 이관")
또는 Custom Z 프로그램으로 GUI_UPLOAD + INSERT/MODIFY
엑셀 방식의 장점은 데이터를 사람이 직접 검토하고 일부 수정 후 이관 할 수 있다는 점입니다. 다만 트랜스포트 추적이 안 되므로 운영기 변경 이력 관리에 불리합니다.
4단계 — Custom Z 프로그램: 가장 유연
대용량이거나 비즈니스 변환 로직이 필요하면 자체 Z 프로그램이 가장 안전합니다. 보통 두 가지 패턴이 있습니다.
패턴 A — Application Server 파일 경유
1. DEV 시스템에서 Z_DOWNLOAD 프로그램 실행
→ 테이블 데이터를 AL11 의 응용 서버 파일로 저장
예: /usr/sap/trans/data/ZTXX0123.csv
2. 베이시스에서 PRD 응용 서버로 파일 복사 (SCP / FTP)
3. PRD 시스템에서 Z_UPLOAD 프로그램 실행
→ 응용 서버 파일 읽어서 INSERT/MODIFY
패턴 B — GUI Download/Upload (PC 경유)
1. DEV → Z_DOWNLOAD → GUI_DOWNLOAD 로 PC 파일 저장
2. PC 파일을 PRD 사용자에게 전달
3. PRD → Z_UPLOAD → GUI_UPLOAD 로 읽어서 INSERT/MODIFY
PC 경유는 간편하지만 수십 MB 이상의 대용량에서는 응용 서버 경유 방식 이 권장됩니다. 네트워크 부하와 PC 메모리 한계 때문입니다.
5단계 — LSMW · RFC · 표준 인터페이스 (간단 소개)
특수 상황에서 사용하는 보조 방법입니다.
| 방법 | 언제 사용 |
|---|---|
| LSMW | 엑셀 파일을 표준 SM30 화면에 자동 입력해 검증까지 한 번에 — 표준 화면 권한·검증을 그대로 활용 (별도 글: LSMW 사용법 — 14단계 대량 이관) |
| RFC (실시간 송수신) | 상시 동기화가 필요한 경우 · 양방향 인터페이스 구성 (별도 글: RFC vs DB LINK — 시스템 연동 방식 차이) |
| IDoc / ALE | SAP 간 분산 시스템 · 정기 배치 송수신 |
| R3trans · DB-level Export | 베이시스 도구 · 시스템 마이그레이션 같은 대규모 이관 시 |
흔히 빠뜨리는 함정
TABL 만 이관하고 TABU 누락
테이블 구조(R3TR TABL) 만 이관하고 데이터(R3TR TABU) 를 빼놓으면 운영기에는 빈 테이블이 가게 됩니다. 신규 운영자 마스터 테이블은 두 가지를 같은 TR 에 묶거나, 별도 TR 로 함께 Release 합니다.
Delivery Class 가 A 인데 자동 TR 등록 기대
Delivery Class 가 A(Application) 인 테이블은 SM30 입력해도 자동으로 TR 에 안 묶입니다. C(Customizing) 로 정의된 운영자 마스터만 자동 등록 대상입니다.
TR Key 범위 지정 실수
*(전체) 로 등록하면 운영기의 기존 데이터까지 삭제·덮어쓰기 될 수 있습니다. 특정 키 범위(100* 등) 로 제한하거나 사전에 운영기 백업을 권장합니다.
Cluster Table 이관 차이
표준 cluster table(BSEG 등) 은 일반 TABU 로 이관 안 됩니다. 다행히 CBO 테이블은 거의 transparent 라 이슈가 적지만, 클러스터/풀 테이블을 다룬다면 R3trans 같은 베이시스 도구가 필요합니다.
SCC1 시 Source Client 누락
SCC1 은 반드시 대상(받을) 클라이언트에 로그인 한 상태에서 실행하고, Source Client 에 데이터를 갖고 있는 클라이언트를 지정합니다. 반대로 실행하면 대상의 데이터가 source 로 이동(또는 누락) 합니다.
Excel Upload 시 인코딩/포맷 문제
UTF-8 / ANSI 인코딩 차이로 한글이 깨지거나, 날짜 포맷(YYYYMMDD vs DD.MM.YYYY) 이 자동 변환돼 잘못 들어가는 경우가 흔합니다. 파일을 메모장으로 열어 인코딩 확인, 엑셀 셀 서식을 텍스트로 강제 후 다시 저장하는 패턴이 안전합니다.
Custom Z 프로그램에서 COMMIT WORK 누락
INSERT · MODIFY 후 COMMIT WORK 가 빠지면 DB 반영이 안 됩니다. 또는 너무 자주 COMMIT 하면 성능이 떨어지므로, 보통 1,000 ~ 5,000 행 단위로 묶어 COMMIT 하는 것이 일반적입니다.
운영기 변경 이력 관리 누락
엑셀 업로드·Z 프로그램 직접 INSERT 는 트랜스포트 추적이 안 됩니다. 운영기에서 누가·언제·무엇을 변경했는지 추적하려면 SE13 의 Log Data Changes 또는 별도 변경이력 테이블이 필요합니다.
MANDT 컬럼 처리
CBO 테이블의 첫 번째 키가 MANDT 라면 이관 시 대상 시스템의 클라이언트 번호로 자동 변환되어야 합니다. Z 프로그램에서 sy-mandt 를 항상 사용하고, 엑셀 다운로드 시에는 MANDT 컬럼을 굳이 포함시킬 필요 없습니다.
전체 코드 — 복사용 통합본
Z 테이블 데이터를 응용 서버 CSV 로 다운로드하고, 다른 시스템에서 그 CSV 를 읽어 INSERT/MODIFY 하는 표준 Z 프로그램 한 쌍입니다. SE38 에 그대로 붙여 실행 가능합니다.
REPORT z_ztxx0123_export.
* ★ Z 테이블 데이터 → 응용 서버 CSV 다운로드 (Source 시스템에서)
PARAMETERS: p_file TYPE string
DEFAULT '/usr/sap/trans/data/ZTXX0123.csv'.
DATA: lt_data TYPE STANDARD TABLE OF ztxx0123.
SELECT * FROM ztxx0123
INTO TABLE @lt_data.
" 1) 응용 서버 파일 OPEN (UTF-8)
OPEN DATASET p_file FOR OUTPUT IN TEXT MODE
ENCODING UTF-8
WITH BYTE-ORDER MARK.
IF sy-subrc <> 0.
WRITE: / '파일 열기 실패:', p_file.
RETURN.
ENDIF.
" 2) 헤더 작성
TRANSFER 'DOCID;APPSTA;INITIATOR;INIDAT;...' TO p_file.
" 3) 데이터 라인별 작성 (필드 구분자 = 세미콜론)
DATA: lv_line TYPE string.
LOOP AT lt_data INTO DATA(ls).
lv_line = |{ ls-docid };{ ls-appsta };{ ls-initiator };{ ls-inidat }|.
TRANSFER lv_line TO p_file.
ENDLOOP.
CLOSE DATASET p_file.
WRITE: / '다운로드 완료:', p_file,
/ '건수:', lines( lt_data ).
REPORT z_ztxx0123_import.
* ★ 응용 서버 CSV → Z 테이블 INSERT/MODIFY (Target 시스템에서)
PARAMETERS: p_file TYPE string
DEFAULT '/usr/sap/trans/data/ZTXX0123.csv',
p_mode RADIOBUTTON GROUP m1 DEFAULT 'X', " MODIFY (Upsert)
p_ins RADIOBUTTON GROUP m1. " INSERT (신규만)
DATA: lv_line TYPE string,
ls_row TYPE ztxx0123,
lt_data TYPE STANDARD TABLE OF ztxx0123,
lv_cnt TYPE i.
" 1) 응용 서버 파일 OPEN
OPEN DATASET p_file FOR INPUT IN TEXT MODE
ENCODING UTF-8
SKIPPING BYTE-ORDER MARK.
IF sy-subrc <> 0.
WRITE: / '파일 열기 실패:', p_file.
RETURN.
ENDIF.
" 2) 헤더 줄 스킵
READ DATASET p_file INTO lv_line.
" 3) 라인별 읽어서 구조에 매핑
DO.
READ DATASET p_file INTO lv_line.
IF sy-subrc <> 0. EXIT. ENDIF.
SPLIT lv_line AT ';' INTO ls_row-docid
ls_row-appsta
ls_row-initiator
ls_row-inidat.
ls_row-mandt = sy-mandt. " ★ 대상 시스템 클라이언트로 자동
APPEND ls_row TO lt_data.
" 4) 1000행마다 묶어 COMMIT
IF lines( lt_data ) >= 1000.
IF p_mode = 'X'.
MODIFY ztxx0123 FROM TABLE lt_data.
ELSE.
INSERT ztxx0123 FROM TABLE lt_data.
ENDIF.
COMMIT WORK.
ADD lines( lt_data ) TO lv_cnt.
CLEAR lt_data.
ENDIF.
ENDDO.
" 5) 남은 데이터 처리
IF lines( lt_data ) > 0.
IF p_mode = 'X'.
MODIFY ztxx0123 FROM TABLE lt_data.
ELSE.
INSERT ztxx0123 FROM TABLE lt_data.
ENDIF.
COMMIT WORK.
ADD lines( lt_data ) TO lv_cnt.
ENDIF.
CLOSE DATASET p_file.
WRITE: / '업로드 완료. 처리 건수:', lv_cnt.
요약
| 단계 | 방법 | 핵심 |
|---|---|---|
| 1 | TR (TABU) | SE09/SE10 → R3TR TABU 추가 → STMS 이관 |
| 2 | SCC1 | 같은 시스템 다른 클라이언트 — Source Client + TR 번호 |
| 3 | Excel UP/Download | SE16N 다운로드 + SM30 / LSMW / Z 프로그램 업로드 |
| 4 | Custom Z 프로그램 | 응용 서버 파일 또는 GUI Download/Upload + INSERT/MODIFY |
| 5 | LSMW · RFC · IDoc | 특수 상황 — 표준 검증 활용 · 실시간 동기화 · 분산 시스템 |
CBO 테이블의 시스템 간 데이터 이관은 데이터 량 · 검토 필요성 · 트랜스포트 추적 여부 세 가지로 방법이 결정됩니다. 작은 운영자 마스터는 TR(TABU) 로 안전하게 STMS 흐름을 타고, 같은 시스템 내 클라이언트 간이면 SCC1, 중량 데이터에 검토가 필요하면 엑셀, 대용량이거나 비즈니스 변환이 필요하면 Custom Z 프로그램이 적합합니다. 어느 방법을 선택하든 운영기 백업 → 테스트 클라이언트에서 검증 → 운영기 적용 순서를 지키고, MANDT 처리·Delivery Class·트랜스포트 추적 가능 여부를 사전 확인하는 것이 안전합니다.
Disclaimer — 이 포스트는 실무 정리 노트를 바탕으로 AI 보조로 정리되었습니다.
SE09 · SE10 · STMS · SCC1 · SE16N · AL11 트랜잭션과 R3TR TABL · R3TR TABU 트랜스포트 객체 유형은 SAP NetWeaver 표준 기능으로 시스템 버전 의존 없이 동작합니다. OPEN DATASET · GUI_DOWNLOAD · GUI_UPLOAD ABAP 명령은 표준 기능이며, 응용 서버 파일 경로(/usr/sap/trans/data) 와 권한은 시스템·OS · 베이시스 정책에 따라 다르므로 사전에 확인이 필요합니다. 운영기 데이터 이관 시에는 베이시스 협의·사전 백업·테스트 클라이언트 검증을 권장하며, 운영기 라이브 데이터에 직접 영향을 줄 수 있으므로 트랜스포트 추적이 어려운 직접 INSERT 방식보다는 TR 기반 이관이 정합성 관점에서 더 안전합니다.