본문 바로가기
ABAP 문법 & 기법

[SAP ABAP] Function·Table 어디에 쓰이는지 찾는 법 — Where-Used 영향도 분석

by Song.sh 2026. 5. 12.

SAP에서 기존 테이블이나 Function Module을 손대야 하는 상황은 매우 조심스럽습니다. 표준 객체든 CBO 객체든, 이 객체가 어디서 어떻게 호출되고 있는지 를 확인하지 않은 채로 수정하면 엉뚱한 화면이 깨지거나 인터페이스가 멈춰버리기 때문이죠.

 

이때 SAP가 기본으로 제공하는 기능이 Where-Used List(사용처 리스트)입니다. SE11 / SE12 / SE37 / SE38 어느 트랜잭션이든 동일한 사용처 아이콘이 있어서, 테이블 → 프로그램 → 서브루틴 → Function → 인터페이스까지 단계적으로 따라 들어갈 수 있습니다.

 

이 글은 자주 쓰는 테이블·Function의 영향도 분석 5단계 를 정리한 메모입니다.


핵심 원리

Where-Used 검색은 한 번에 끝나지 않고 연속적으로 파고드는 작업입니다. 객체 → 그 객체를 쓰는 다른 객체 → 또 그 객체를 쓰는 객체… 식으로 호출 트리를 거꾸로 거슬러 올라가야 진짜 영향 범위를 알 수 있습니다.

단계 대상 결과
1 테이블 (SE11) 사용처 옵션 선택 (프로그램·Function·테이블 등)
2 필드 포함 여부 팝업 예 선택 시 필드 단위까지 검색 (정확도 ↑)
3 검색 결과 프로그램 리스트 더블 클릭으로 소스 코드 위치까지 이동
4 서브루틴(FORM) 검색 PERFORM 호출 위치 추적 → 호출자 Function 발견
5 Function Module (RFC) 검색 RFC 호출자 추적 → XI/PI 인터페이스 연결 확인

핵심은 1단계의 결과를 그대로 보지 말고, 의심되는 호출 라인에서 계속 더 들어가는 것입니다. 테이블이 단순 SELECT에서 쓰이는지, FORM 안에서 가공되는지, RFC를 통해 외부로 나가는지에 따라 영향 범위가 완전히 달라집니다.


1단계 — 테이블에서 사용처 옵션 열기

SE11 또는 SE12 에서 검사할 테이블(예: ZxxxNNNN)을 열고 상단의 사용처(Where-Used List) 아이콘 또는 Ctrl + Shift + F3 단축키를 누릅니다.

옵션 팝업에서 어떤 객체 종류에서 검색할지 선택합니다.

옵션 언제 체크?
프로그램 기본 — 가장 자주 사용. ABAP 리포트·Include·서브루틴 풀
Function 모듈 RFC·BAPI 영향 추적 시 필수
클래스 / Web Dynpro Component OO ABAP·WDA 화면에서 사용된 경우
데이터 요소(Data Element) 테이블 필드 단위 영향 분석
전부 체크 스코프가 넓어 시간이 오래 걸림. 정말 전체 영향도가 필요할 때만

2단계 — 필드 포함 여부 확인

옵션을 확정하면 SAP가 한 번 더 묻습니다. "필드 단위까지 검색에 포함할까요?"(Where-Used List: Include Fields of the Table)

 

선택 의미
테이블 + 필드 모두 검색 — 정확도는 높지만 검색 시간 ↑
아니오 테이블만 검색 — 빠르지만 필드만 참조하는 코드는 누락
취소 검색 자체 취소

영향도 분석 목적이면 가 정답입니다. 특정 필드만 쓰는 코드를 놓치면 그게 바로 운영 사고로 이어집니다.


3단계 — 사용 프로그램 리스트 → 소스 코드 진입

검색이 끝나면 "사용처 데이터베이스 테이블 [테이블명] (N 적중)" 화면이 뜨고, 해당 테이블을 사용하는 프로그램/Include 리스트가 표시됩니다.

 

각 행에는 프로그램명 + 줄 번호 + 코드 한 줄 미리보기 가 함께 표시되므로, 단순 DATA 선언인지 SELECT 인지 MODIFY / INSERT 인지 한눈에 구분할 수 있습니다.

영향도 측면에서 우선순위는 다음과 같습니다.

  • MODIFY / UPDATE / DELETE / INSERT — 데이터를 변경하는 라인. 반드시 확인
  • SELECT — 읽기. 필드 구조 변경 시 영향 받음
  • DATA ... LIKE / TYPE — 구조 참조. 필드 추가는 안전, 삭제는 위험

행을 더블 클릭하면 해당 프로그램의 소스 코드 정확한 위치로 점프합니다.


4단계 — 서브루틴(FORM) 검색으로 한 단계 더 들어가기

소스에서 자주 발견되는 패턴은 테이블이 어떤 FORM 안에서 쓰이고 있는 경우 입니다. 이 FORM이 다시 누군가에 의해 PERFORM 으로 호출되고 있을 가능성이 큽니다.

 

FORM 헤더(FORM set_table. 같은 라인)에 커서를 두고 사용처 아이콘 을 다시 누르면 이 서브루틴을 호출하는 모든 위치가 나옵니다.

발견되는 호출 형태 의미
PERFORM set_table. 같은 프로그램 내부에서 호출
PERFORM set_table(progname). 외부 프로그램에서 호출
Function Module 내부에서의 PERFORM 다음 단계로 진행할 핵심 단서 — RFC를 추적할 시작점

Function Module 안에서 호출하고 있다면 5단계로 이어집니다.


5단계 — Function Module의 사용처 추적 → 인터페이스 발견

Function Module(특히 RFC) 을 찾았다면 SE37 에서 해당 Function을 열고 다시 사용처 아이콘 을 누릅니다.

 

Function 사용처 옵션에서 보통 다음 항목을 체크합니다.

  • 프로그램 — 일반 ABAP 호출
  • 클래스 — OO ABAP·Proxy 클래스에서 호출 (XI/PI 인터페이스 추적에 중요)
  • Web Dynpro Components — WDA 화면 호출

검색 결과로 다음과 같은 발견이 가능합니다.

발견 객체 의미
일반 ABAP 프로그램 (Z*) 사내 리포트·배치에서 호출
Include / 서브루틴 풀 공통 모듈에서 호출 — 영향 범위 큼
XI/PI Proxy 클래스 (ZXICL_*, ZXIII_* 등) 외부 시스템 인터페이스 연결. MES·외부 시스템과 데이터가 오가는 경로

Proxy 클래스가 발견되면 그 RFC가 단순 사내용이 아니라 인터페이스로 외부 시스템과 연결된 객체 라는 뜻입니다. 이 경우 수정 영향은 SAP 안쪽이 아니라 외부 연계 쪽까지 확장됩니다.


흔히 빠뜨리는 함정

필드 단위 검색을 끄고 끝내는 경우

2단계 팝업에서 아니오 를 누르면 테이블 이름만 검색됩니다. 코드에서 DATA ... TYPE ztable-zz_field1 처럼 필드만 참조한 라인은 빠지므로, 운영 사고 빈도 1위 패턴 입니다.

1단계에서 끝내는 경우

테이블 사용처만 보고 "안전하네" 판단하면 위험합니다. 그 프로그램이 Function이나 Class 안에서 한 번 더 호출될 수 있고, 그 위에 또 외부 인터페이스가 얹혀 있을 수 있습니다. 최소 Function Module 레벨까지 는 한 번 더 들어가서 확인하는 게 안전합니다.

Include 안의 변경을 놓치는 경우

대형 모듈은 LZFGxxxF01 같은 함수 그룹 Include 형태로 구성됩니다. 사용처 결과에 Include 이름이 떴다면 그 Include의 부모 Function Group까지 추적해야 진짜 영향 객체가 나옵니다. SE80 객체 네비게이터로 한 단계 위로 올라가는 습관이 필요합니다.

표준 객체에서 검색 결과가 너무 많은 경우

MARA / VBAK 같은 표준 테이블은 사용처 결과가 수천 건이라 전수 확인이 불가능합니다. 이 경우 사용처 필터 로 패키지를 사내 패키지(Z*)만 좁히거나, 수정하려는 필드 데이터 요소 만 사용처 검색해서 범위를 줄이는 방식이 효과적입니다.


요약

단계 트랜잭션 할 일
1 SE11 / SE12 테이블 열기 → 사용처 → 객체 종류 선택
2 팝업 필드 포함 여부 → 선택
3 결과 화면 프로그램 리스트 → 더블 클릭 → 소스 코드 확인
4 SE38 / SE80 FORM 헤더 → 사용처 → PERFORM 호출자 추적
5 SE37 Function Module → 사용처 → 클래스·Proxy 포함 검색 → 인터페이스 연결 확인

영향도 분석은 한 화면에서 결론이 나오는 작업이 아니라, 사용처 → 사용처 → 사용처… 식으로 계속 안쪽으로 파고드는 과정입니다. 수정 대상이 단순 테이블 한 개로 보여도 위 5단계까지 거쳐보면 의외로 외부 인터페이스까지 연결되는 경우가 자주 나오므로, 이 흐름을 습관으로 들여두면 운영 사고 방지에 큰 도움이 됩니다.


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