본문 바로가기
디버깅 & 트러블슈팅

[SAP] CTS 이관 후 PERFORM 오브젝트 없음 에러 — SE80 Rebuild Object List로 해결

by Song.sh 2026. 5. 13.

개발 시스템에서 작성한 ABAP 프로그램을 CTS(트랜스포트)로 다른 시스템(QAS·운영 등)으로 이관한 직후, 그 시스템에서 프로그램을 열어보면 PERFORM·서브루틴·인클루드 같은 오브젝트가 "없다" 는 팝업이 뜨거나 신택스 에러가 나는 경우가 있습니다. 막상 코드 자체는 정상적으로 들어와 있는데 SAP이 그 오브젝트를 인식하지 못하는 상황이죠.

 

원인은 단순합니다. CTS로 소스 코드는 이관됐지만 Object Directory(오브젝트 디렉토리) 가 아직 동기화되지 않았기 때문입니다. SAP의 Object List 캐시가 이전 상태를 보고 있어서 "이 PERFORM은 모르는 오브젝트야" 라고 판단하는 것.

 

이 글은 그 증상을 Rebuild Object List 한 번으로 해결 하는 짧은 트러블슈팅 메모입니다.


핵심 원리

SAP은 프로그램이 사용하는 객체(서브루틴·인클루드·테이블·구조체·클래스 등) 목록을 Object List 라는 메타데이터에 따로 저장합니다. 이 리스트는 평소에는 자동 갱신되지만, CTS로 외부에서 한꺼번에 객체가 들어올 때는 리스트 인덱스가 어긋날 수 있습니다.

상태 설명
소스 코드 CTS로 정상 이관됨 (PERFORM 정의·인클루드 등 모두 존재)
Object List 이전 상태에 멈춰 있어 "해당 객체 모름"으로 인식
결과 에디터에서 "오브젝트가 없습니다" 팝업 또는 신택스 체크 에러

해결책은 SAP이 Object List를 다시 빌드하도록 명시적으로 요청하는 것입니다. SE80 의 컨텍스트 메뉴에 그 기능이 있습니다.


1단계 — 증상 확인

CTS 이관 직후 SE80 또는 SE38 에서 프로그램을 열거나 더블 클릭하면 다음과 같은 팝업이 뜹니다.

버튼 눌렀을 때
존재하는 오브젝트를 또 만들려고 시도 → 충돌·오류 위험. 절대 누르지 말 것.
아니오 팝업만 닫힘. 화면 새로 고침에는 도움 X
취소 동일하게 그냥 닫힘

이 팝업이 떴다는 건 소스는 있는데 SAP이 Object List에서 못 찾고 있다 는 신호입니다. 무조건 아니오 또는 취소 누르고, 본격 해결책으로 넘어갑니다.


2단계 — Rebuild Object List 실행

SE80 좌측 트리에서 해당 프로그램명에 우클릭 → 메뉴를 펼칩니다.

경로는 다음과 같습니다.

단계 메뉴
1 SE80 → 좌측 트리에서 프로그램명 우클릭
2 Additional Functions 하위 메뉴 열기
3 Rebuild Object List 클릭

클릭하면 SAP이 해당 프로그램의 소스를 다시 스캔해서 Object List를 새로 생성합니다. 보통 몇 초 내로 끝나며, 끝나면 트리가 정상적으로 펼쳐지고 PERFORM·인클루드·서브루틴이 모두 인식됩니다.


3단계 — 해결 확인

다시 프로그램을 열어 Ctrl + F2(신택스 체크) 를 눌러봅니다. 이전에 "오브젝트 없음" 으로 잡히던 PERFORM·인클루드가 깨끗하게 통과되면 완료. 활성화(Ctrl + F3) 가 필요했던 경우는 활성화까지 마쳐주면 됩니다.


다른 비슷한 해결 방법

Rebuild Object List 외에도 비슷한 상황에서 효과적인 옵션 몇 가지가 있습니다.

방법 언제 쓰는가
Rebuild Object List (이 글) CTS 직후 단일 프로그램에서 오브젝트 못 찾을 때 — 가장 먼저 시도
활성화 (Activate, Ctrl + F3) 소스는 인식되는데 컴파일 상태가 비활성인 경우
인클루드 단위로 직접 열어보기 특정 인클루드만 못 찾을 때 — 인클루드를 SE38로 열면 자동 갱신되는 경우 있음
SGEN 재생성 시스템 전체 로드가 꼬인 경우 (BC 담당자 영역, 빈도 낮음)
SE38 → Program → Check → Where-Used PERFORM 호출 위치를 강제로 다시 스캔하면서 캐시 갱신 유도

거의 모든 케이스에서 Rebuild Object List 한 방 이면 끝나므로 이걸 첫 번째 시도로 잡아두면 됩니다.


흔히 빠뜨리는 함정

"오브젝트 생성" 팝업에서 "예" 누름

가장 위험한 실수. 이미 존재하는 오브젝트를 또 만들려고 하면서 충돌·중복 항목·DDIC 인덱스 오류 등이 생길 수 있습니다. 반드시 아니오·취소 누르고 Rebuild Object List 진행.

활성화만 하고 끝남

활성화는 컴파일 상태만 활성으로 바꾸는 것이지 Object List를 새로 만들지는 않습니다. CTS 직후 활성화만으로 해결 안 되면 Rebuild Object List 별도 실행.

단일 인클루드 우클릭

Rebuild는 메인 프로그램(리포트) 또는 함수 그룹 레벨 에서 의미가 있습니다. 인클루드 하나를 우클릭하면 메뉴 자체가 다르게 표시되거나 효과가 없을 수 있음. 최상위 프로그램 노드에서 우클릭.

CTS 이송 결과 로그 확인 누락

Rebuild로 해결되지 않으면 진짜로 일부 객체가 트랜스포트에 누락됐을 수 있습니다. STMS 에서 이송 결과의 Return Code(RC=0/4/8/12)와 Object List를 먼저 확인.

권한 부족

이관 받은 시스템에서 Rebuild 실행 권한이 없는 사용자면 메뉴는 보이지만 동작이 안 됩니다. BC 담당자에게 SE80 권한 그룹 확인 요청.


요약

단계 할 일
1 증상 확인 — "오브젝트 없습니다. 생성하겠습니까?" 팝업 → 아니오/취소
2 SE80 → 프로그램 우클릭 → Additional FunctionsRebuild Object List
3 신택스 체크(Ctrl + F2) → 깨끗하면 종료, 비활성이면 활성화(Ctrl + F3)
4 그래도 안 풀리면 STMS 이송 RC·Object List 확인 → 누락 시 재이관

CTS 이관 직후의 "오브젝트가 없다" 에러는 거의 대부분 Object List 캐시 갱신 누락 이라는 단순한 원인입니다. 코드가 정상적으로 들어와 있는데 인식만 안 되는 상태이므로, Rebuild Object List 한 번이면 깔끔하게 해결됩니다. 이관 후 가장 먼저 시도해볼 트러블슈팅 체크리스트로 기억해두면, 같은 상황에서 헛수고를 크게 줄일 수 있습니다.


Disclaimer — 이 포스트는 실무 정리 노트를 바탕으로 AI 보조로 정리되었습니다. SAP 버전·시스템 환경·BC 권한 설정에 따라 메뉴 명칭이나 동작이 다를 수 있으므로 운영 환경 적용 전 개발 시스템에서 확인하시기 바랍니다.