SAP FI · CO — 회계 전표 · 계정 · 채권 · 채무 · 원가

회계 전표(BKPF·BSEG)와 유니버설 저널, 계정 잔액과 손익, 채권·채무, 코스트 센터와 외화까지 재무 데이터를 읽습니다.

1. 회계 전표 — BKPF · BSEG

회계 전표는 헤더 BKPF 와 항목 BSEG 입니다. 키는 회사 코드 BUKRS + 전표 번호 BELNR + 회계 연도 GJAHR 세 개이고, 항목은 여기에 BUZEI 가 붙습니다.

SELECT H.BELNR, H.BUDAT, I.HKONT,
       CASE WHEN I.SHKZG = 'S' THEN I.DMBTR ELSE -I.DMBTR END AS SIGNED_AMOUNT
FROM BKPF H
JOIN BSEG I ON I.BUKRS = H.BUKRS AND I.BELNR = H.BELNR AND I.GJAHR = H.GJAHR;
  • BSEG 금액(DMBTR)은 항상 양수이고, SHKZG 가 S 면 차변, H 면 대변입니다. 잔액은 CASE 로 부호를 붙여 합칩니다.
  • 헤더와 항목은 세 키를 모두 이어야 합니다. 전표 번호는 회사 코드·연도마다 다시 시작합니다.
  • 전표 유형 BLART: SA 총계정원장, KR 공급업체 송장, DR 고객 송장 등입니다.
  • 역분개는 BKPF.STBLG 에 상대 전표 번호가 있습니다. 원전표와 역분개 전표를 짝지어 상계 여부를 확인합니다.

문제

  1. 회계연도 2025 전표 유형별 전표 건수 (초급)
  2. 2025년 12월 전기분 계정 유형별 차변·대변 합계 (초급)
  3. 미국 법인 2025년 전표 유형별 차변·대변 합계 (초급)
  4. 역분개된 원전표의 차변·대변 합계 (중급)
  5. 역분개 원전표와 역분개 전표의 전기일 간격 (중급)
  6. 역분개와 관련된 회계 전표의 품목 수와 차변·대변 합계 (중급)
  7. 2024년과 번호가 겹치는 2025년 전표의 유형별 현황 (고급)

2. 계정 잔액과 손익 — ACDOCA · SKA1 · SKAT

S/4HANA 의 회계·원가 항목은 ACDOCA 한 테이블에 모입니다. 원장(RLDNR), 회사 코드(RBUKRS), 계정(RACCT), 회계 연도(GJAHR), 기간(POPER), 금액(HSL)이 한 행에 있습니다.

SELECT RACCT, SUM(HSL) AS BALANCE
FROM ACDOCA
WHERE RLDNR = '0L' AND RBUKRS = '1000' AND GJAHR = '2025'
GROUP BY RACCT;
  • HSL 은 부호가 붙어 있습니다(차변 +, 대변 −). BSEG 처럼 SHKZG 로 부호를 붙이지 않습니다.
  • 원장 조건(RLDNR)을 꼭 거세요. 병행 원장이 있으면 같은 전표가 원장마다 기록됩니다.
  • 매출은 대변이라 음수입니다. 보고서에서는 -SUM(HSL) 로 양수로 바꿉니다.
  • 계정 이름은 SKA1(계정과목표 KTOPL + 계정 SAKNR)과 SKAT 에서 가져옵니다. 손익 계정과 재무상태표 계정은 계정 유형으로 구분합니다.
  • 매출총이익률 = (매출 − 매출원가) / 매출. 분모가 0 이 되지 않게 처리하세요.

문제

  1. 2025년 월별 당기 손익 (초급)
  2. 2025년 연간 비용이 1억 원을 넘는 손익 계정 (초급)
  3. 2025년 상반기 말 재무상태표 계정 잔액 (중급)
  4. 2025년 월별 순매출과 매출총이익률 (중급)
  5. 손익 계정별 상반기·하반기 금액 비교 (중급)
  6. 고객별 2025년 매출총이익과 이익 비중 (고급)
  7. 미국 법인 2025년 분기별 손익과 누적 손익 추이 (고급)

3. 채권과 연령 분석 — BSID · BSAD

고객 미결 항목은 BSID, 반제(정리)된 항목은 BSAD 에 있습니다. 고객(KUNNR), 전표(BELNR·GJAHR), 만기일(ZFBDT), 금액(DMBTR), 반제일(AUGDT)을 담습니다.

SELECT KUNNR,
       SUM(CASE WHEN ZFBDT < '20251231' THEN DMBTR ELSE 0 END) AS OVERDUE,
       SUM(DMBTR) AS OPEN_TOTAL
FROM BSID
GROUP BY KUNNR;
  • 연체 일수 = 기준일 − 만기일. 구간(30일·60일·90일)은 CASE 로 나눕니다.
  • 연령 분석은 기준일을 고정해야 재현됩니다. 오늘 날짜를 쓰면 실행할 때마다 결과가 달라집니다.
  • 반제된 건의 지급 지연은 BSAD 의 반제일(AUGDT)과 만기일을 비교합니다.
  • 특별 총계정원장 항목(UMSKZ)은 일반 채권과 섞지 말고 따로 보세요.

문제

  1. 지급 조건별 미결 채권 건수와 잔액 (초급)
  2. 고객별 연체 채권 현황 (중급)
  3. 미결 채권의 연령 구간별 잔액 (중급)
  4. 2025년 반제된 청구 건의 고객별 지급 지연 (중급)
  5. 미결 채권 상위 5개 고객과 잔액 비중 (중급)
  6. 연체 고객의 마지막 입금 이후 경과 일수 (고급)
  7. 3분기 말 시점에 연체였던 청구 항목의 연령 구간과 현재 미결 잔액 (고급)

4. 채무와 지급 — BSIK · BSAK

공급업체 미결 채무는 BSIK, 반제된 항목은 BSAK 에 있습니다. 구조는 채권(BSID·BSAD)과 같고, 키가 고객 KUNNR 대신 공급업체 LIFNR 입니다.

SELECT LIFNR,
       SUM(CASE WHEN ZFBDT < '20251231' THEN DMBTR ELSE 0 END) AS OVERDUE,
       SUM(DMBTR) AS OPEN_TOTAL
FROM BSIK
GROUP BY LIFNR;
  • 지급 소요 일수 = 반제일(AUGDT) − 전기일(BUDAT) 또는 만기일. 어떤 기준을 쓰는지에 따라 해석이 달라집니다.
  • 만기 도래·경과 금액은 기준일과 ZFBDT 를 비교해 나눕니다.
  • 공급업체 이름과 국가는 LFA1 에서 가져옵니다.
  • 미결 잔액과 지급 이력(BSAK)을 한 번에 보려면 지표별로 집계한 뒤 조인하세요.

문제

  1. 지급 조건별 미결 채무 건수와 잔액 (초급)
  2. 공급업체별 미결 채무와 만기 경과·도래 예정 금액 (중급)
  3. 2025년 송장의 공급업체별 지급 소요 일수 (중급)
  4. 만기 월별·공급업체 국가별 미결 채무 (중급)
  5. 미결 채무 공급업체의 연체 금액과 2025년 지급 지연 이력 (고급)
  6. 2025년 송장이 모두 정리된 공급업체의 지급 소요 일수 (고급)

5. 코스트 센터 — CSKS · ACDOCA

CSKS 는 코스트 센터 마스터입니다. 키에 유효 시작일 DATAB 와 종료일 DATBI 가 있어 같은 코스트 센터가 기간별로 여러 행일 수 있습니다. 이름은 CSKT, 비용은 ACDOCA 의 코스트 센터(RCNTR)와 금액(HSL)에서 읽습니다.

SELECT K.KOSTL, K.VERAK, SUM(A.HSL) AS COST
FROM CSKS K
JOIN ACDOCA A
  ON A.RCNTR = K.KOSTL
 AND A.RBUKRS = K.BUKRS
 AND A.GJAHR = '2025'
WHERE K.DATAB <= '20251231' AND K.DATBI >= '20251231'
GROUP BY K.KOSTL, K.VERAK;
  • "지금 유효한 행"은 DATAB <= 기준일 AND DATBI >= 기준일 로 고릅니다. 이 조건을 빠뜨리면 과거 책임자 행과 조인돼 비용이 중복됩니다.
  • 책임자 변경 이력은 같은 KOSTL 의 여러 유효 기간 행으로 확인합니다.
  • 비중은 범주·회사 합계로 나눕니다. 분모를 윈도우 함수나 서브쿼리로 먼저 구하세요.

문제

  1. 책임자가 바뀐 코스트 센터 0000003010 의 유효 기간 이력 (초급)
  2. 2025년 12월 코스트 센터별 비용과 현재 책임자 (초급)
  3. 코스트 센터별 2025년 비용: 책임자 유효 기간 반영 (중급)
  4. 손익 센터별 코스트 센터 수와 2025년 비용 (중급)
  5. 코스트 센터 0000003010의 2025년 계정별 비용과 비중 (중급)
  6. 범주별 최대 비용 코스트 센터와 범주·회사 내 비중 (고급)
  7. 코스트 센터별 직전 분기 대비 비용 증감 (2025년 2~4분기) (고급)

6. 내부 오더와 외화 — AUFK · BKPF · BSEG

내부 오더는 AUFK(오더 번호 AUFNR, 범주 AUTYP 01)에 있고, 비용은 ACDOCA 에서 오더별로 집계합니다.

외화 거래는 BKPF(통화 WAERS, 환율)와 BSEG(문서 통화 금액 WRBTR, 원화 금액 DMBTR)로 읽습니다. 같은 금액을 문서 환율로 환산한 값과 평균·기준 환율로 환산한 값의 차이가 환차입니다.

SELECT H.WAERS, SUM(I.WRBTR) AS DOC_AMOUNT, SUM(I.DMBTR) AS LOCAL_AMOUNT
FROM BKPF H
JOIN BSEG I ON I.BUKRS = H.BUKRS AND I.BELNR = H.BELNR AND I.GJAHR = H.GJAHR
WHERE H.WAERS <> 'KRW'
GROUP BY H.WAERS;
  • 원화 환산액은 이미 DMBTR 에 들어 있습니다. 다시 환율을 곱하면 이중 환산입니다.
  • 통화별 평균 환율 = 원화 금액 합계 / 외화 금액 합계. 행별 환율의 단순 평균과 다릅니다.
  • 환차는 문서 환율과 평가 환율의 차이에 금액을 곱해 구합니다. 어느 시점 환율인지(전기일·반기 말)를 명시하세요.

문제

  1. 외화 공급업체 송장의 통화별 원화 환산액 (초급)
  2. 외화 거래 통화별 원화 환산 평균 환율 (중급)
  3. USD 청구 전표의 평균 환율 대비 환산 차이 (중급)
  4. 외화 미결 채권·채무의 반기 말 평가차 (중급)
  5. 통화·월별 환율 변동폭 (중급)
  6. 외화 송장 월별 환율 변동이 원화 환산액에 준 영향 (고급)