SAP 모듈별 주요 테이블 정리 FI/CO/MM/SD/PP/HR + S/4HANA 변경사항포함

지난 글에서 모듈별 T-Code를 정리했는데, 개발자에게는 T-Code만큼 중요한 것이 테이블입니다. 인터페이스를 만들든, 리포트를 짜든, 데이터 검증을 하든 결국 “그 데이터가 어느 테이블에 있는가”부터 시작하기 때문입니다. 저 역시 Oracle ERP에서 SAP으로 넘어오면서 가장 시간을 쏟은 것이 양쪽 테이블 구조의 대응 관계를 잡는 일이었습니다. 이 글에서는 모듈별 핵심 테이블을 정리하고, S/4HANA에서 달라진 부분까지 함께 다룹니다.

시작 전에: SAP 테이블의 기본 패턴

SAP 테이블은 몇 가지 패턴만 알면 훨씬 빨리 읽힙니다.

  1. 헤더-아이템 구조: 문서 데이터는 대부분 헤더 테이블과 아이템 테이블 쌍으로 되어 있습니다. 회계전표의 BKPF(헤더)-BSEG(라인), 구매오더의 EKKO(헤더)-EKPO(라인), 판매오더의 VBAK(헤더)-VBAP(라인)이 대표적입니다. 테이블명 끝의 K는 Kopf(머리), P는 Position(라인)이라는 독일어에서 왔습니다.
  2. 마스터의 조직 레벨 분리: 마스터 데이터는 전사 공통 정보와 조직 레벨 정보가 분리되어 있습니다. 구매처는 LFA1(일반)-LFB1(회사코드별)-LFM1(구매조직별), 자재는 MARA(일반)-MARC(플랜트별)-MARD(저장위치별) 식입니다.
  3. 텍스트 테이블: 코드의 명칭은 별도 텍스트 테이블에 언어 키(SPRAS)와 함께 저장됩니다. 자재명은 MAKT, G/L 계정명은 SKAT처럼 T로 끝나는 경우가 많습니다.
  4. 커스터마이징 테이블: T로 시작하는 테이블(T001, T001W 등)은 대부분 설정(Customizing) 테이블입니다.

테이블 구조 확인은 SE11, 데이터 조회는 SE16N을 사용합니다.

FI (재무회계)

테이블설명
BKPF회계전표 헤더
BSEG회계전표 라인아이템 (클러스터 테이블)
BSIK / BSAK구매처 미결/반제 아이템
BSID / BSAD고객 미결/반제 아이템
BSIS / BSASG/L 미결/반제 아이템
SKA1 / SKB1 / SKATG/L 계정 마스터 (COA 레벨 / 회사코드 레벨 / 텍스트)
LFA1 / LFB1구매처 마스터 (일반 / 회사코드)
KNA1 / KNB1고객 마스터 (일반 / 회사코드)
T001회사코드
T003전표 유형
TBSL전기 키(Posting Key)
T030자동 계정 결정
WITH_ITEM원천세 아이템
REGUH / REGUP지급 실행(F110) 헤더/아이템

인터페이스 개발 관점에서: 외부 시스템에서 전표를 넣은 뒤 검증할 때는 BKPF에서 헤더(참조번호 XBLNR, 전표번호 BELNR)를 잡고 BSEG로 라인을 확인하는 흐름이 기본입니다. BSEG는 클러스터 테이블 특성상 조회 조건에 제약이 있어서, 조건 검색은 BSIK/BSID 같은 인덱스성 테이블을 활용하는 것이 정석입니다.

CO (관리회계)

테이블설명
CSKS / CSKT코스트센터 마스터 / 텍스트
CSKA / CSKB원가요소 (COA / 관리영역)
COBKCO 문서 헤더
COEPCO 문서 라인아이템 (실제)
COSP / COSS원가 집계 (외부/내부)
AUFK오더 마스터 (내부오더)
PRPSWBS 요소 마스터
TKA01관리회계영역

MM (자재관리)

테이블설명
MARA / MAKT자재 마스터 일반 / 자재명
MARC자재 마스터 (플랜트)
MARD자재 마스터 (저장위치, 재고 수량)
MBEW자재 평가 (재고 금액)
EKKO / EKPO구매오더 헤더 / 아이템
EKBE구매오더 이력 (입고/송장 추적)
EBAN구매요청
MKPF / MSEG자재문서 헤더 / 아이템 (ECC 기준)
RBKP / RSEG송장검증(MIRO) 헤더 / 아이템
T001W플랜트
T024 / T024E구매그룹 / 구매조직

SD (영업/판매)

테이블설명
VBAK / VBAP판매오더 헤더 / 아이템
VBKD판매 비즈니스 데이터 (지급조건 등)
VBEP판매오더 일정라인
LIKP / LIPS출하문서 헤더 / 아이템
VBRK / VBRP대금청구 헤더 / 아이템
VBFA문서 흐름 (오더→출하→빌링 연결 고리)
VBUK / VBUP문서 상태 헤더 / 아이템 (S/4에서는 상태 필드가 본 테이블로 통합)
KNVV고객 마스터 (판매영역)
TVKO / TVTW / TSPA영업조직 / 유통경로 / 제품군

SD에서 놓치기 쉬운 핵심이 VBFA(문서 흐름)입니다. “이 판매오더가 어느 빌링까지 갔는지”를 추적하는 인터페이스나 리포트는 결국 VBFA를 타게 됩니다.

PP (생산관리)

테이블설명
AUFK / AFKO / AFPO오더 마스터 / 생산오더 헤더 / 아이템
AFRU작업 확인(Confirmation)
MAST / STKO / STPOBOM 링크 / BOM 헤더 / BOM 아이템
PLKO / PLPO공정(Routing) 헤더 / 작업
CRHD작업장(Work Center) 헤더
PLAF계획오더
RESB예약/소요량 (오더 자재 소요)

HR/HCM (인사관리)

HR은 다른 모듈과 구조가 다릅니다. 데이터가 “인포타입(Infotype)”이라는 단위로 관리되고, 테이블명이 PA + 인포타입 번호 형식입니다.

테이블설명
PA0000인사 액션 (인포타입 0000, 입사/퇴사 이력)
PA0001조직 배치 (인포타입 0001, 부서/직위)
PA0002개인 정보 (인포타입 0002, 성명/생년월일)
PA0008기본급 (인포타입 0008)
PA2001 / PA2006근태(결근) / 휴가 쿼터
HRP1000조직 오브젝트 (조직단위/직무/포지션)
HRP1001조직 관계 (오브젝트 간 연결)
T512W임금유형(Wage Type) 설정
PCL2급여 결과 클러스터 (일반 SELECT 불가, 함수로 접근)

주의할 점: HR 테이블은 개인정보 덩어리라서 권한 통제가 다른 모듈보다 훨씬 엄격하고, 급여 결과(PCL2)는 클러스터 구조라 SE16N으로 직접 볼 수 없습니다. HR 데이터를 인터페이스로 다룰 일이 있다면 반드시 표준 함수(HR_READ_INFOTYPE 등)를 경유해야 합니다.

기술/공통 테이블 (개발자용)

테이블설명
DD02L / DD03L테이블 목록 / 필드 목록 (테이블의 테이블)
DD02T / DD04T테이블 텍스트 / 데이터엘리먼트 텍스트
TSTC / TSTCT트랜잭션 코드 / 텍스트
USR02사용자 로그온 데이터
E070 / E071트랜스포트(CTS) 헤더 / 오브젝트
TVARVC변수/상수 저장 (프로그램 파라미터 관리)
NRIV번호 범위 현재값
T000클라이언트
CDHDR / CDPOS변경 문서 헤더 / 아이템 (누가 뭘 바꿨는지 추적)

CDHDR/CDPOS는 감사나 장애 분석 때 진가를 발휘합니다. “이 마스터를 누가 언제 바꿨나”는 질문은 결국 이 두 테이블로 답하게 됩니다.

S/4HANA에서 달라진 것들 (중요)

ECC 기준 자료로 공부하다 S/4HANA 프로젝트에 들어가면 당황하는 지점들입니다.

  1. ACDOCA (Universal Journal): S/4HANA 회계의 최대 변화입니다. FI의 BSEG, CO의 COEP, 자재원가 등으로 흩어져 있던 라인아이템이 ACDOCA 한 테이블로 통합됐습니다. BKPF/BSEG도 호환성을 위해 남아 있지만, 신규 리포트나 인터페이스 조회는 ACDOCA 기준으로 설계하는 것이 표준입니다. BSIK/BSID 같은 인덱스 테이블은 실제 테이블이 아니라 ACDOCA 기반의 호환성 뷰(CDS View)로 대체됐습니다.
  2. MATDOC: 자재문서도 MKPF/MSEG에서 MATDOC 단일 테이블로 통합됐습니다. MARD의 재고 수량 필드도 MATDOC을 실시간 집계하는 방식으로 바뀌었습니다.
  3. PRCD_ELEMENTS: 가격 조건 테이블 KONV가 PRCD_ELEMENTS로 대체됐습니다.
  4. BP(비즈니스 파트너) 통합: 고객(KNA1)과 구매처(LFA1)가 비즈니스 파트너(BUT000) 개념으로 통합됐습니다. 테이블 자체는 남아 있지만 마스터 생성이 BP 트랜잭션으로 일원화됐고, 인터페이스로 거래처를 주고받을 때는 BP 구조를 이해해야 합니다.

모르는 테이블을 찾는 방법

  1. 화면 필드에서 역추적: 아무 화면에서나 궁금한 필드에 커서를 두고 F1 → 기술 정보(Technical Info)를 열면 테이블/구조와 필드명이 나옵니다. 구조(Structure)로 나오는 경우는 ST05 트레이스로 실제 테이블을 추적합니다.
  2. DD03L 검색: 필드명(예: LIFNR)을 아는 경우 SE16N으로 DD03L을 열어 그 필드를 가진 테이블을 역검색할 수 있습니다.
  3. SQL 트레이스(ST05): 화면에서 조회를 실행하면서 트레이스를 걸면 실제로 읽는 테이블이 그대로 보입니다. 가장 확실한 방법입니다.

마치며

테이블 역시 T-Code처럼 전부 외우는 것이 아니라, 헤더-아이템 패턴과 모듈별 대표 테이블만 잡아두고 나머지는 찾는 방법(F1 기술정보, ST05)으로 해결하는 것이 실무형 접근입니다. 특히 S/4HANA 전환기를 지나는 지금은 ECC 테이블 지식에 ACDOCA/MATDOC 같은 변경사항을 얹어두는 것이 중요합니다. 빠졌거나 잘못된 부분이 있으면 댓글로 알려주세요. 계속 업데이트하겠습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤