SAP 시스템에서 개발한 프로그램이나 설정(Customizing)을 운영 서버로 옮길 때, 단순히 복사·붙여넣기를 할 수는 없습니다.
시스템의 무결성을 유지하며 안전하게 변경 사항을 배포하는 체계가 바로 CTS입니다.
그리고 T-CODE : STMS를 이용해서 배포를 진행합니다. 이에 대해서 자세히 알아봅시다.
1. CTS와 STMS, 무엇이 다른가요?
용어가 비슷해 헷갈릴 수 있지만, 역할은 명확히 구분됩니다.
- CTS (Change and Transport System): 변경 사항을 기록하고, 이를 다른 시스템으로 전달하는 전체적인 메커니즘과 도구 모음을 의미합니다.
- STMS (SAP Transport Management System): CTS를 화면에서 관리할 수 있게 해주는 관리 도구(Transaction)입니다. 시스템 Landscape 구성, 전송 경로 설정, Import 모니터링 등을 수행
2. SAP 시스템 Landscape와 배포 옵션
효율적인 배포를 위해서는 우리 회사의 시스템 구성(Landscape)에 맞는 전략이 필요합니다.
✅ 표준 3-Tier 전략 (가장 권장됨)
- DEV (Development): 개발 및 커스터마이징이 일어나는 곳.
- QAS (Quality Assurance): 운영 배포 전, 비즈니스 프로세스를 검증하는 곳.
- PRD (Production): 실제 비즈니스가 운영되는 실전 환경.
✅ 2-Tier 전략 (소규모 프로젝트)
- DEV -> PRD: 별도의 검증 서버 없이 바로 운영으로 넘깁니다. 비용은 저렴하지만, 오류 발생 시 운영 시스템에 치명적인 영향을 줄 수 있어 리스크가 큽니다.
✅ Multi-Track 배포 (대규모/고도화)
- 프로젝트용 개발 서버와 유지보수용 개발 서버를 분리하여 운영하는 방식입니다. 병렬 개발 후 나중에 소스를 병합(Merge)하는 고난도 운영 기술이 필요합니다.
🚀 STMS 주요 구성
1. Transport Route
- DEV → QAS → PRD 흐름 정의
- Delivery / Consolidation Route 존재
📌 실수 포인트
👉 잘못된 client / system으로 라우팅되면 배포 오류 발생
2. Import Queue
- 각 시스템에 들어갈 TR 대기 목록
- 순서 매우 중요 ⚠️
👉 순서 꼬이면:
- Activation error
- Object overwrite
- Dump 발생
⚙️ CTS 배포 옵션 (Import Options)
STMS → Import Transport Request → Options에서 설정
🔑 1. Execution Mode
✔ Import Synchronously (Sync)
- 현재 세션에서 완료까지 대기
- 운영 배포 기본
✔ Import Asynchronously (Async)
- 백그라운드 실행
- 대량 배포 시 사용
👉 핵심:
- 결과는 같지만 순서/안정성 영향 있음
🛠️ SAP STMS Import Options 상세 정리
1. 최종 Import 큐에서 전송요청 중단 (Leave Transport Request in Queue for Later Import)
- 의미: 전송 요청(TR)을 가져온 후에도 해당 항목을 임포트 큐에서 삭제하지 않고 남겨둡니다.
- 용도: 나중에 모든 요청을 한 번에 가져올 때(Import All) 올바른 순서로 다시 가져올 수 있도록 합니다. 특히 개별 요청을 미리 가져오는 '사전 가져오기' 상황에서 유용하며, 나중에 정기적으로 전체 요청을 가져올 때 오래된 객체가 최신 객체를 덮어쓰는 '오버슈터(Overshooter)' 문제를 방지할 수 있습니다.
- 의미: 이미 성공적으로 임포트가 완료된 TR이라도 다시 한번 임포트를 수행하도록 합니다.
- 용도: 변경된 설정을 다시 적용해야 하거나, 시스템 오류로 인해 일부 객체가 제대로 반영되지 않았을 때 문제를 해결하기 위해 사용합니다.
- 의미: 대상 시스템에 있는 객체가 '오리지널(Original)'인 경우에도 전송된 객체로 덮어씁니다.
- 용도: 대상 시스템의 객체가 원본이라 하더라도 개발 서버 등에서 수정된 최신 버전으로 강제 교체해야 할 때 사용합니다. 이 옵션을 선택하지 않으면 "Original object cannot be replaced"와 같은 에러가 발생할 수 있습니다.
- 의미: 대상 시스템에서 해당 객체가 수정(Repair) 중이거나 아직 수리 확인(Confirm)이 되지 않은 상태라도 임포트를 진행하여 덮어씁니다.
- 용도: 시스템에서 아직 확인되지 않은 수리 작업이 존재하지만, 전송된 TR을 통해 강제로 내용을 반영해야 할 때 유용합니다.
- 의미: 전송 프로필(TP Profile) 설정에 의해 특정 시스템으로의 이관이 제한된 전송 유형이라 하더라도 이를 무시하고 임포트합니다.
- 용도: 특수한 프로젝트 상황에서 제한된 유형의 요청을 강제로 가져와야 할 때 사용합니다.
- 의미: 테이블의 **딜리버리 클래스(Delivery Class)**가 데이터 임포트를 허용하지 않는 설정이라도 이를 무시하고 데이터를 이관합니다.
- 용도: 기본적으로 보호되거나 제한된 클래스의 테이블 데이터를 강제로 반영해야 할 때 사용하지만, 데이터 일관성에 영향을 줄 수 있으므로 주의가 필요합니다.
- 의미: 여러 TR 간의 종속성이나 선행 관계를 무시하고 임포트를 진행합니다.
- 용도: 특정 프로젝트의 요청만 가져오고 싶은데 다른 프로젝트의 요청과 연관성이 있어 이관이 막히는 경우 사용할 수 있습니다. 하지만 종속 관계를 무시하면 시스템이나 데이터의 일관성이 손상될 위험이 크므로 신중하게 선택해야 합니다.
- 의미: 전송 요청의 소프트웨어 구성 요소 버전(서포트 패키지 레벨 포함)이 대상 시스템과 일치하지 않더라도 임포트를 허용합니다.
- 용도: 시스템 간 버전 차이로 인해 임포트가 차단되는 상황에서, 특정 요청을 강제로 반영해야 할 때 사용합니다
✔ 주로 운영 배포 시 최종 Import 큐에서 전송요청 중단, Import Transport Request Again, 오리지널 겹쳐쓰기, 미확정된 수리에서 오브젝트 겹쳐쓰기 위 4가지 옵션들은 체크해서 진행되는 경우가 많습니다. 하지만 각 옵션들의 용도나 이유를 명확히하여 배포하는 게 도움이 됩니다.
⚠️ 실무에서 가장 많이 터지는 문제
🚨에러 코드(Return Code) 빠르게 읽기
- RC 0: 성공 (Perfect!)
- RC 4: 경고 (Warning - 무시 가능하나 확인 필요)
- RC 8: 에러 (Error - 구문 오류, Dictionary 미반영 등 확인 필수)
- RC 12: 치명적 에러 (System Crash 등 심각한 상황)
🚨 1. TR 순서 문제
- Dictionary → Program → Config 순으로 가야 하는데
- 뒤죽박죽 import
👉 해결:
- 항상 선행 TR 먼저
🚨 2. Client mismatch
- DEV: 310 / QA: 200 / PRD: 300
👉 잘못하면:
👉 “Client does not exist” 오류 발생
🚨 3. Async 남용
- 동시에 여러 TR 실행
👉 결과:
- activation 실패
- object overwrite
🚨 4. Import 후 activation 실패
- DDIC / table 구조 변경 시
👉 해결:
- SE14 / SPAU / SPDD 확인
📊 SAP CTS 핵심 데이터베이스 테이블 정리
CTS 데이터는 주로 E로 시작하는 테이블에 저장됩니다. 이 테이블들 사이의 관계(Relationship)를 이해하는 것이 포인트입니다.
1. 전송 요청서(TR) 헤더 및 내역
가장 기본이 되는 테이블들입니다. '누가, 언제, 무엇을'에 대한 답을 줍니다.
| 테이블명 | 기능 및 설명 | 핵심 필드 (Key Fields) |
| E070 | TR 헤더 (Change & Transport System: Header) | TRKORR(TR번호), TRFUNCTION(유형), TRSTATUS(상태), AS4USER(생성자) |
| E07T | TR 설명 (Change & Transport System: Short Texts) | TRKORR, AS4TEXT(설명글) |
| E070A | TR 속성 (Attributes of a Request) | TRKORR, ATTRIBUTE(속성명), REFERENCE(값) |
| E070L | TR 번호 범위 (Last Used Numbers) | 마지막으로 생성된 TR 번호를 관리 (시스템 내부용) |
2. 전송 오브젝트(Object) 상세 내역
TR 안에 어떤 프로그램, 테이블, 클래스가 담겨 있는지 확인하는 테이블입니다.
| 테이블명 | 기능 및 설명 | 핵심 필드 (Key Fields) |
| E071 | 오브젝트 리스트 (Object List) | TRKORR, OBJECT(R3TR, LIMU 등), OBJ_NAME(프로그램명 등) |
| E071K | 테이블 키 내역 (Object List: Table Keys) | TRKORR, TABKEY(테이블의 특정 Data Key 값) |
참조 사이트
https://userapps.support.sap.com/sap/support/knowledge/en/3088775
https://community.sap.com/t5/technology-q-a/import-option-in-stms-import/qaq-p/11533820
'ERP(SAP)' 카테고리의 다른 글
| [SAP] SD 2nd GI (2-Step Goods Issue) 프로세스 정리 (0) | 2026.04.02 |
|---|---|
| [SAP] Green Ledger란 무엇인가? SAP 탄소회계 솔루션 (0) | 2026.03.27 |
| [SAP] ABAP 많이 쓰이는 필수 SY 코드 및 공통 펑션 정리 (0) | 2026.03.18 |
| [SAP] 특별재고 유형 'E' 판매오더 재고에 대한 개념 정리 (0) | 2026.03.16 |
| [SAP ERP/SCM] 위탁재고(Consignment)란? 개념정리 (0) | 2026.03.09 |
