SAP 법인카드 처리현황 — 어느 부서가 한도를 얼마나 썼나
코스트센터별 법인카드 사용내역을 조회해 가맹점과 매입공제 여부를 확인하고, 월 한도 대비 사용률을 보는 화면입니다.
법인카드는 쓰기 쉬운 만큼 관리가 어렵습니다. 부서마다 한도가 있는데 월말에야 얼마 썼는지 알면 이미 넘긴 뒤입니다.
게다가 카드 매입이 모두 부가세 공제되는 것도 아닙니다. 접대성 가맹점이나 면세 업종은 공제되지 않는데 그대로 신고하면 나중에 추징됩니다. 한도와 공제 여부를 함께 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 거래 — 거래 ID(
TransId)와 사용일(UseDate) - 카드 — 카드사(
CardBank)와 마스킹 카드번호(CardNoMasked) - 가맹점 — 상호(
Merchant)와 업종코드(MccCode) - 코스트센터 — 사용 부서(
Kostl)와 명칭 - 금액 — 사용 금액과 부가세
| 항목 | 내용 |
|---|---|
| 대응 T-code | FBL1N · KSB1 |
| 업무 영역 | 재무회계(FI) · 경비 · 세무 |
| Namespace | zui5.corpcard |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 사용내역 + 한도 대비 요약 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 카드 거래 74건 · 코스트센터 9건 |
| 성격 | 조회형(Read-Only) — 정산 전기는 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·기간·코스트센터로 조회하면 카드 사용내역이 나옵니다 → 매입공제 여부를 확인하고 → 부서별 한도 대비 사용률을 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 기간을 고릅니다.
- 코스트센터로 부서별 사용을 확인합니다.
- 카드사로 범위를 좁힐 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 업종코드와 매입공제 여부를 확인합니다.
- 사용률이 높은 부서를 봅니다. 한도 초과가 임박한 곳입니다.
- 불공제 건이 많으면 사용 가이드를 점검합니다.
- 결과는 CSV 다운로드로 내려받아 경비 관리 자료로 씁니다.
공제 판정 규칙
업종코드로 부가세 공제 여부가 갈립니다.
매입공제 판정
일반 과세 업종 → 공제 가능
접대성 업종 → 불공제 (유흥·골프 등)
면세 업종 → 세액 없음
비영업용 차량 → 불공제
공제 세액 = Σ(공제 가능 건의 부가세)
사용률 = 부서 사용액 ÷ 월 한도 × 100
100% 초과 → 한도 초과
업종코드로 판정하는 이유
가맹점 이름만으로는 업종을 알 수 없습니다. 같은 이름의 가게가 업종이 다를 수도 있습니다. 카드사가 부여한 업종코드를 기준으로 하면 판정이 일관되고, 나중에 세무 검토를 받아도 근거가 명확합니다.
불공제 대상 4유형
| 유형 | 내용 | 판정 근거 |
|---|---|---|
| 접대비 | 유흥·골프 등 | 업종코드로 식별 |
| 비영업용 승용차 | 차량 유지비 | 차종과 용도 확인 |
| 면세 물품 | 도서·농산물 등 | 세액 자체가 없음 |
| 간이과세자 | 세금계산서 발급 불가 | 가맹점 유형 확인 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 법인 |
기간 UseDate | 필수 | 사용일 From~To |
코스트센터 Kostl | 선택 | 사용 부서 |
카드사 CardBank | 선택 | 발급 카드사 |
업종코드 MccCode | 선택 | 가맹점 업종 |
| 매입공제 | 선택 | 공제 / 불공제 |
결과 컬럼
사용내역
| 컬럼 | 의미 |
|---|---|
거래 ID TransId | 거래 식별 |
사용일 UseDate | 결제 날짜 |
카드사 CardBank | 발급사 |
카드번호 CardNoMasked | 마스킹 표시 |
가맹점 Merchant | 사용처 |
업종코드 MccCode | 가맹점 업종 |
코스트센터 Kostl · KostlText | 사용 부서 |
| 금액 · 부가세 | 결제 금액 |
| 매입공제 여부 | 공제 / 불공제. 상태 색 |
한도 대비
| 항목 | 의미 |
|---|---|
| 코스트센터 | 부서 |
| 월 한도 | 배정 한도 |
| 사용액 | 기간 사용 합계 |
| 사용률 | 사용액 ÷ 한도. 구간별 상태 색 |
| 잔여 한도 | 한도 − 사용액 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FBL1N | 공급업체 개별항목 | 카드사 청구 내역 |
KSB1 | 코스트센터 실제 라인 | 부서별 사용 |
BSEG | 전표 라인 | 조회 원천 |
CSKS · CSKT | 코스트센터 마스터 | 부서 명칭 |
T007A | 세금코드 설정 | 매입공제 구분 |
도입 시 확인이 필요한 부분
카드 사용내역을 어떻게 가져오는지가 관건입니다. 카드사 파일을 업로드하는지 API 로 연계하는지에 따라 업종코드 같은 상세 정보의 유무가 갈립니다. 업종코드가 없으면 공제 판정을 수동으로 해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCCORPCARD'
@EndUserText.label: '법인카드 사용현황 (Z)'
define view Z_C_CORPORATE_CARD
as select from zcorp_card as Card
left outer join cskt as CCtrText on Card.kostl = CCtrText.kostl
and CCtrText.spras = 'K'
{
key Card.trans_id as TransId,
Card.bukrs,
Card.use_date as UseDate,
Card.card_bank as CardBank,
Card.card_no as CardNoMasked,
Card.merchant as Merchant,
Card.mcc_code as MccCode,
Card.kostl,
CCtrText.ktext as KostlText,
Card.amount,
Card.vat_amount,
Card.deductible as VatDeductible
// 매입공제 판정은 업종코드 매핑 테이블로 결정
// 사용률 = 부서 사용액 ÷ 월 한도 × 100
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 사용내역 · 한도 요약 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 사용내역 | sap.ui.table.Table — 코스트센터 그룹 |
| 공제 표시 | sap.m.ObjectStatus — 공제 / 불공제 |
| 사용률 | sap.m.ObjectStatus — 구간별 색 |
카드번호를 마스킹하는 이유
전체 번호가 화면에 보이면 캡처나 다운로드를 통해 유출될 수 있습니다. 어느 카드인지 구분하는 데는 뒤 네 자리면 충분합니다. 필요 이상으로 보여 주지 않는 것이 기본입니다.
파일 구성
| 경로 | 역할 |
|---|---|
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 | 통과 |
| 불공제 건은 공제 세액에서 제외 | 통과 |
| 카드번호가 마스킹 처리 | 통과 |
| 코스트센터 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
한도를 넘으면 카드가 막히나요?
카드사 한도와 내부 관리 한도는 다릅니다. 내부 한도는 관리 기준이라 카드가 막히지는 않지만 초과분은 사후 확인 대상이 됩니다.
업종코드가 없으면 어떻게 판정하나요?
가맹점명과 계정으로 추정하거나 담당자가 수동으로 지정합니다. 정확도가 떨어지므로 카드사에서 업종코드를 받아 오는 편이 낫습니다.
불공제인데 공제로 신고하면요?
세무조사에서 추징됩니다. 가산세까지 붙으므로 신고 전에 불공제 건을 걸러 내는 것이 이 화면의 주된 용도입니다.
SAP 표준 기능과 어떻게 이어지나요?
카드 대금 처리와 비용 전기는 표준 FI 가 담당합니다. 이 화면은 사용내역에 업종코드 기반 공제 판정과 부서별 한도 관리를 더한 확장입니다.