SAP CTS & STMS 배포 방법 정리 (Import 옵션, Landscape)

 

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 전략 (가장 권장됨)

  1. DEV (Development): 개발 및 커스터마이징이 일어나는 곳.
  2. QAS (Quality Assurance): 운영 배포 전, 비즈니스 프로세스를 검증하는 곳.
  3. 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)' 문제를 방지할 수 있습니다.
2. 전송 요청 다시 Import (Import Transport Request Again)
  • 의미: 이미 성공적으로 임포트가 완료된 TR이라도 다시 한번 임포트를 수행하도록 합니다.
  • 용도: 변경된 설정을 다시 적용해야 하거나, 시스템 오류로 인해 일부 객체가 제대로 반영되지 않았을 때 문제를 해결하기 위해 사용합니다.
3. 오리지널 겹쳐쓰기 (Overwrite Originals)
  • 의미: 대상 시스템에 있는 객체가 '오리지널(Original)'인 경우에도 전송된 객체로 덮어씁니다.
  • 용도: 대상 시스템의 객체가 원본이라 하더라도 개발 서버 등에서 수정된 최신 버전으로 강제 교체해야 할 때 사용합니다. 이 옵션을 선택하지 않으면 "Original object cannot be replaced"와 같은 에러가 발생할 수 있습니다.
4. 미확정된 수리에서 오브젝트 겹쳐쓰기 (Overwrite Objects in Unconfirmed Repairs)
  • 의미: 대상 시스템에서 해당 객체가 수정(Repair) 중이거나 아직 수리 확인(Confirm)이 되지 않은 상태라도 임포트를 진행하여 덮어씁니다.
  • 용도: 시스템에서 아직 확인되지 않은 수리 작업이 존재하지만, 전송된 TR을 통해 강제로 내용을 반영해야 할 때 유용합니다.
5. 허용되지 않는 전송유형 무시 (Ignore Invalid Transport Type)
  • 의미: 전송 프로필(TP Profile) 설정에 의해 특정 시스템으로의 이관이 제한된 전송 유형이라 하더라도 이를 무시하고 임포트합니다.
  • 용도: 특수한 프로젝트 상황에서 제한된 유형의 요청을 강제로 가져와야 할 때 사용합니다.
6. 허용되지 않는 테이블 클래스 무시 (Ignore Invalid Table Class)
  • 의미: 테이블의 **딜리버리 클래스(Delivery Class)**가 데이터 임포트를 허용하지 않는 설정이라도 이를 무시하고 데이터를 이관합니다.
  • 용도: 기본적으로 보호되거나 제한된 클래스의 테이블 데이터를 강제로 반영해야 할 때 사용하지만, 데이터 일관성에 영향을 줄 수 있으므로 주의가 필요합니다.
7. 선행 프로세서 관계 무시 (Skip Predecessor Relationships)
  • 의미: 여러 TR 간의 종속성이나 선행 관계를 무시하고 임포트를 진행합니다.
  • 용도: 특정 프로젝트의 요청만 가져오고 싶은데 다른 프로젝트의 요청과 연관성이 있어 이관이 막히는 경우 사용할 수 있습니다. 하지만 종속 관계를 무시하면 시스템이나 데이터의 일관성이 손상될 위험이 크므로 신중하게 선택해야 합니다.
8. 일치하지 않는 구성 요소 버전 무시 (Ignore Invalid Component Version)
  • 의미: 전송 요청의 소프트웨어 구성 요소 버전(서포트 패키지 레벨 포함)이 대상 시스템과 일치하지 않더라도 임포트를 허용합니다.
  • 용도: 시스템 간 버전 차이로 인해 임포트가 차단되는 상황에서, 특정 요청을 강제로 반영해야 할 때 사용합니다

 

✔ 주로 운영 배포 시 최종 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

https://velog.io/@yhjseed/SAP-%EC%9E%84%ED%8F%AC%ED%8A%B8-%ED%81%90-%EC%A0%95%EB%A6%AC-%EB%B0%A9%EB%B2%95How-to-clean-up-the-SAP-Import-Queue

https://potato98.tistory.com/204