SAP 법인카드 사용·정산 현황 — 한도와 매입공제를 함께 보기
코스트센터별 법인카드 사용내역을 가맹점·업종과 함께 조회하고, 부가세 매입공제 여부와 한도 대비 사용률을 확인하는 화면입니다.
법인카드는 건수가 많고 금액은 작습니다. 그래서 하나씩 보는 대신 부서별로 얼마를 썼고 세금은 공제되는가를 묶어서 봐야 합니다.
특히 매입공제 여부는 가맹점 업종에 따라 갈리는데, 공제 안 되는 건을 공제로 잡으면 나중에 추징됩니다. 표준 비용 전기와 세금 구조를 그대로 이어받아 한도와 공제를 함께 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 코스트센터 —
Kostl와 명칭으로 부서별 집계 - 카드 정보 — 카드사(
CardBank)와 마스킹된 카드번호(CardNoMasked) - 가맹점 — 상호(
Merchant)와 업종코드(MccCode) · 업종명 - 금액 — 공급가액(
SupplyAmount) · 부가세(VatAmount) · 합계(Amount) - 공제 여부 — 부가세 매입공제 가능 표시(
VatDeductible)
| 항목 | 내용 |
|---|---|
| 대응 T-code | FBL1N · KSB1 |
| 업무 영역 | 재무회계(FI) · 관리회계(CO) · 경비 관리 |
| Namespace | zui5.corpcard |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 사용내역, 행 선택 시 정산 전표 시뮬레이션 |
| 화면 수 | 조회 화면 1개 + 정산 전표 미리보기 |
| 데이터 | 카드 사용 74건 · 코스트센터 9건 |
| 성격 | 조회·시뮬레이션형 — 전기는 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·코스트센터·기간으로 조회하면 카드 사용내역이 나옵니다 → 매입공제 여부와 한도 사용률을 확인하고 → 행을 눌러 정산 전표를 미리 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 기간을 고릅니다. 카드 청구 주기에 맞추는 것이 편합니다.
- 코스트센터로 부서별 사용을 봅니다. 한도가 부서 단위로 관리됩니다.
- 카드사로 나눠 볼 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 공제 여부가 불가인 건을 확인합니다. 업종에 따라 공제가 안 되는 경우입니다.
- 사용률이 높은 코스트센터는 한도 초과 전에 확인이 필요합니다.
- 행을 선택하면 정산 분개가 열립니다.
- 결과는 CSV 다운로드로 내려받습니다.
공제 판정과 사용률
두 가지를 계산합니다. 세금이 공제되는가, 한도를 얼마나 썼는가.
합계 금액 = 공급가액(SupplyAmount) + 부가세(VatAmount)
사용률 = 코스트센터 월 사용액 ÷ 월 한도 × 100
매입공제 판정 (업종코드 기반)
공제 가능 → 부가세를 부가대급금으로 계상
공제 불가 → 부가세를 비용에 포함
공제 불가 업종 접대성 지출 · 비영업용 승용차 관련 등
업종코드로 판정하는 이유
같은 금액이라도 어디서 썼느냐에 따라 공제 여부가 달라집니다. 사무용품은 공제되고 접대성 지출은 안 됩니다. 담당자가 영수증을 보고 판단하면 기준이 사람마다 달라지므로, 가맹점 업종코드로 1차 판정하고 예외만 사람이 확인하는 편이 일관됩니다.
법인카드 처리 4단계
| 단계 | 내용 | 결과 |
|---|---|---|
| ① 사용 | 카드 결제 발생 | 카드사 승인 내역 |
| ② 수집 | 카드사 명세 수신 | 사용 내역 데이터 |
| ③ 계상 | 비용·부가세·미지급금 전기 | 정산 전표 |
| ④ 결제 | 카드 대금 지급 | 미지급금 소멸 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
기간 UseDate | 필수 | 사용일 From~To |
코스트센터 Kostl | 선택 | 부서별 조회 |
카드사 CardBank | 선택 | 삼성카드 등 |
업종 MccCode | 선택 | 가맹점 업종 |
공제 여부 VatDeductible | 선택 | 공제 가능 / 불가 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
거래 ID TransId | 사용 건 식별자 |
사용일 UseDate | 결제 날짜 |
코스트센터 Kostl · KostlText | 귀속 부서 |
카드사 CardBank · 카드번호 CardNoMasked | 마스킹 표시 |
가맹점 Merchant | 사용처 상호 |
업종 MccCode · MccText | 가맹점 업종 |
공급가액 SupplyAmount | 부가세 제외 금액 |
부가세 VatAmount | 세액 |
합계 Amount · 통화 Waers | 결제 총액 |
매입공제 VatDeductible | 공제 가능 여부. 상태 색 |
| 전표번호 | 정산 전표 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FBL1N | 공급업체 개별항목 | 카드 미지급금을 사용 건 단위로 분해 |
KSB1 | 코스트센터 실제 라인 | 부서별 사용 집계 |
BSEG · BSET | 전표 라인과 세금 라인 | 금액·부가세 원천 |
CSKS · CSKT | 코스트센터 마스터 | 부서 명칭 |
T007A | 세금코드 설정 | 공제 여부 결정 |
도입 시 확인이 필요한 부분
카드 사용 내역은 카드사에서 받아 오는 인터페이스가 필요합니다. 업종코드 체계가 카드사마다 달라 공제 판정 매핑을 카드사별로 만들어야 합니다. 또 코스트센터 월 한도는 표준에 저장 필드가 없어 별도 관리 테이블이 필요합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCCORPCARD'
@EndUserText.label: '법인카드 사용 현황 (Z)'
define view Z_C_CORPORATE_CARD
as select from bseg as Line
inner join bkpf as Header on Line.bukrs = Header.bukrs
and Line.belnr = Header.belnr
and Line.gjahr = Header.gjahr
left outer join bset as TaxLine on Line.bukrs = TaxLine.bukrs
and Line.belnr = TaxLine.belnr
and Line.gjahr = TaxLine.gjahr
left outer join cskt as CCtrText on Line.kostl = CCtrText.kostl
and CCtrText.spras = 'K'
{
key Line.bukrs, key Line.belnr, key Line.gjahr, key Line.buzei,
Header.budat as UseDate,
Line.kostl,
CCtrText.ktext as KostlText,
Line.sgtxt as Merchant,
Line.mwskz,
TaxLine.hwbas as SupplyAmount,
TaxLine.hwste as VatAmount,
Line.dmbtr as Amount
// 매입공제 여부는 세금코드 설정과 가맹점 업종코드 매핑으로 판정
// 사용률은 코스트센터 한도 관리 테이블과 조인해 계산
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 사용내역 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 내역 테이블 | sap.m.Table — 코스트센터 그룹, 소계 표시 |
| 공제 표시 | sap.m.ObjectStatus — 공제 가능 / 불가 |
| 시뮬레이션 | sap.m.Dialog — 정산 분개 미리보기 |
카드번호를 마스킹하는 이유
카드번호 전체를 화면에 띄울 이유가 없습니다. 어느 카드인지 구분하는 데는 뒷자리 네 개면 충분하고, 전체 번호는 화면 캡처나 CSV 를 통해 유출될 위험만 만듭니다. 조회 화면에서는 필요한 만큼만 보여 주는 것이 원칙입니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.corpcard) · ko 로케일 |
view/Main.view.xml | 조회조건과 사용내역 테이블 |
controller/Main.controller.js | 조회 · 공제 판정 · 사용률 계산 · 정산 시뮬레이션 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 카드번호 마스킹 · 상태 색 포맷터 |
localdata/corpcard.json | 카드 사용 74건 |
localdata/kostl.json | 코스트센터 9건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 합계 = 공급가액 + 부가세 (전 건) | 통과 |
| 공제 불가 건은 부가세가 비용에 포함 | 통과 |
| 정산 전표 차변 합계 = 대변 합계 | 통과 |
| 사용률 = 코스트센터 사용액 ÷ 한도 × 100 | 통과 |
| 코스트센터·업종 코드가 있으면 명칭도 존재 | 통과 |
| 카드번호가 마스킹 형식으로 저장 | 통과 |
| 화면 렌더링 — 실브라우저 조회 → 시뮬레이션 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
공제 불가 업종은 무엇인가요?
접대성 지출과 비영업용 승용차 관련 비용이 대표적입니다. 업종코드로 1차 판정하고 애매한 건은 담당자가 확인하는 방식이 실무에서 정착이 빠릅니다.
한도는 어디서 관리하나요?
표준에 저장 필드가 없어 별도 테이블이 필요합니다. 코스트센터별 월 한도를 두고 사용액과 비교하는 구조를 추가로 만들어야 합니다.
카드 사용 내역은 어떻게 들어오나요?
카드사 인터페이스로 받습니다. 업종코드 체계가 카드사마다 달라 매핑 테이블을 카드사별로 관리해야 공제 판정이 일관됩니다.
SAP 표준 기능과 어떻게 이어지나요?
비용 전기와 세금 처리는 표준이 담당합니다. 이 화면은 그 전표를 카드 사용 건 단위로 분해해 가맹점·업종과 함께 보여 주고, 공제 판정과 한도 사용률을 얹은 확장입니다.