SAP 법인카드 마스터 — 자동 연계와 수기 관리를 한 화면에서
카드사에서 매일 넘어오는 카드와 직접 등록하는 카드를 한 목록에서 관리하면서, 자동 연계분은 손대면 안 되는 항목을 막아 두는 화면입니다.
법인카드 마스터는 두 갈래에서 들어옵니다. 카드사가 매일 아침 자동으로 밀어 넣는 카드와, 담당자가 직접 등록하는 카드입니다.
문제는 이 둘이 한 테이블에 섞여 있다는 점입니다. 자동으로 들어온 카드의 유효기간이나 한도를 화면에서 고쳐 봐야 다음 날 아침이면 카드사 값으로 되돌아갑니다. 고쳤다고 믿고 있다가 나중에 어긋난 것을 발견하게 됩니다. 그래서 이 화면은 어느 카드가 어디서 왔는지 먼저 표시하고, 자동 연계분은 카드사에서 주지 않는 항목(사용자·처리자·반납예정일)만 열어 둡니다. 등록과 삭제도 수기 카드에만 허용합니다.
SAP 표준 구조를 그대로 이어받은 부분
- 마스터 구조 —
ZTFIA0010(법인카드 마스터) 필드 그대로 - 사용자·처리자 — 사원 Vendor(
LFA1) 코드로 연결 - 회사코드 기본값 —
USR21→ADCP→LFB1순으로 결정 - 자동 연계 — 카드사 인터페이스가 매일 07:00 갱신하는 항목은 화면에서 잠금
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 법인카드 마스터 |
| Namespace | zui5.cardmaster |
| 셸 구조 | 조회조건 영역(우측 조회) + 편집 가능한 카드 목록, 등록·삭제·저장 |
| 화면 수 | 조회·편집 화면 1개 |
| 데이터 | 카드 18매 (자동연계 8 · 수기 10) · 사원 7명 |
| 성격 | 등록·수정형(CRU) — 자동 연계분은 일부 필드만 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 7종 둘러보기
조회하면 관리구분이 먼저 보입니다 → 연계 카드는 사용자·처리자만 고치고 → 수기 카드는 등록·삭제까지 합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드는 고정입니다. 카드번호·카드사·사용자·처리자로 범위를 좁혀 조회합니다.
- 목록에서 관리구분을 먼저 봅니다. 자동연계 카드는 카드사에서 주는 항목이 잠겨 있습니다.
- 카드 사용자와 처리자는 연계 카드도 수정할 수 있습니다. 인사이동이 있을 때 여기서 정리합니다.
- 등록으로 수기 카드를 추가합니다. 카드번호·사용자·한도금액이 필수입니다.
- 삭제는 수기 카드에만 적용됩니다. 연계 카드가 섞이면 차단됩니다.
- 저장으로 변경분을 한 번에 반영합니다. 저장 시 입력일시가 갱신됩니다.
편집 제한 규칙
연계 카드는 카드사가 주는 항목을 잠그고, 회사가 정하는 항목만 열어 둡니다.
관리구분에 따른 편집 범위
자동연계 (현대카드) 매일 07:00 카드사 인터페이스로 갱신
수정 가능 : 카드사(Vendor No) · 카드 사용자 · 처리자 1~4 · 반납예정일
수정 불가 : 카드번호 · 유효기간 · 카드상태 · 해지·발급일자
결제일 · 결제계좌 · 결제은행 · 한도금액
등록 불가 · 삭제 불가
수기 (그 외 카드사)
모든 항목 수정 가능 · 등록 · 삭제 허용| 항목 | 산식 · 규칙 |
|---|---|
| 관리구분 판정 | 카드사 코드가 자동 연계 대상이면 연계, 아니면 수기 |
| 편집 잠금 | 연계 카드는 카드사에서 주는 항목의 입력칸을 읽기 전용으로 |
| 등록 제한 | 신규 라인은 수기 카드사로 열리고, 연계 카드사 선택 시 되돌림 |
| 삭제 제한 | 연계 카드가 선택에 섞이면 몇 매인지 알리고 차단 |
| 필수값 | 카드번호 · 카드 사용자 · 한도금액 |
| 처리자 | 최대 4명 · 사용자와 같으면 안내 |
관리구분을 첫 화면에 둔 이유
이 화면에서 가장 먼저 알아야 할 것은 '이 카드를 내가 고칠 수 있는가'입니다. 카드번호나 한도를 보고 나서야 잠긴 것을 알면 이미 시간을 쓴 뒤입니다. 상태 바로 옆에 관리구분을 두면 목록을 훑는 순간 어느 카드가 연계분인지 갈립니다.
관리구분 2종
카드가 어디서 들어왔는지에 따라 화면에서 할 수 있는 일이 달라집니다.
| 관리구분 | 출처 | 갱신 주기 | 화면에서 하는 일 |
|---|---|---|---|
| 자동연계 | 카드사 인터페이스 | 매일 07:00 | 카드번호·한도·결제정보는 카드사 값 유지, 사용자·처리자만 관리 |
| 수기 | 담당자 직접 등록 | 수시 | 카드사에서 연계되지 않는 카드를 직접 등록·수정·삭제 |
구분이 목록에 드러나 있어 카드사 갱신과 수기 수정이 서로 덮어쓰는 일이 없습니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 변경 못함. 로그인 사용자 → 사번 → 사원 Vendor 순으로 기본값 결정 |
| 카드번호 | 선택 | 부분 입력 가능 |
| 카드사 | 선택 | 자동연계·수기 카드사 모두 |
| 카드 사용자 | 선택 | 사원 목록에서 선택 |
| 카드 처리자 | 선택 | 처리자 1~4 중 어디에 있든 검색 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 변경 · 관리구분 | 신규/수정 표시와 자동연계/수기 구분 |
| 카드번호 · 카드사 · 종류 | 카드 식별 정보와 개인/공용 구분 |
| 유효기간 · 카드상태 · 해지일자 · 발급일자 | 카드 생애주기 |
| 결제일 · 결제계좌 · 결제은행 | 출금 정보 |
| 한도금액 | 카드 한도 |
| 카드 사용자 · 처리자 1~4 | 사원 Vendor 로 연결. 연계 카드도 수정 가능 |
| 반납예정일 | 개인카드 반납 예정 시점 |
| 내역키 · 입력일시 | 마스터 키와 최종 변경 시각 |
보조 기능
| 컬럼 | 의미 · 표시 |
|---|---|
| 등록 | 수기 카드사로 신규 라인 추가 |
| 삭제 | 선택 카드 삭제 — 자동연계 카드는 차단 |
| 저장 | 변경분을 마스터에 반영, 입력일시 갱신 |
SAP 표준 기능 매핑
카드사 연계는 인터페이스가 담당합니다. 이 화면은 회사가 관리하는 항목만 책임집니다.
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
| 카드사 인터페이스 | 카드 마스터 자동 갱신 | 연계분을 화면에서 잠가 덮어쓰기 충돌을 막음 |
LFA1 · LFB1 | 사원 Vendor 마스터 | 사용자·처리자 연결과 회사코드 기본값 |
USR21 · ADCP | 사용자·사번 | 로그인 사용자로 회사코드 결정 |
FB60 관점 | 카드 비용 전표 | 사용자·처리자 정보로 비용 귀속 판단 |
운영 데이터 소스 매핑
| 항목 | SAP 원천 | 비고 |
|---|---|---|
| 카드 마스터 | ZTFIA0010 | CRU 대상 테이블 |
| 카드사 | ZCARDCODE | 자동 연계 여부를 가르는 기준 |
| 사용자·처리자 | LFA1-LIFNR | 사원 Vendor 코드 |
| 회사코드 기본값 | USR21 → ADCP → LFB1 | 로그인 사용자 → 사번 → 사원 Vendor |
| 권한 | FI 모듈 공통 권한 | 사양서 권한 점검 요구사항 |
도입 시 확인이 필요한 부분
자동 연계 대상 카드사와 갱신 주기는 계약에 따라 다릅니다. 연계 카드사가 여러 곳이면 카드사 코드별로 잠금 대상을 지정할 수 있게 설정 테이블로 빼는 편이 낫습니다. 사원 Vendor 채번 규칙과 퇴사자 처리(사용자 공란 허용 여부)도 함께 정해야 합니다.
참고 CDS 뷰
카드 마스터를 청구내역과 연결할 때는 사용자·처리자 명칭을 붙인 뷰가 편합니다.
@AbapCatalog.sqlViewName: 'ZCCARDMST'
@EndUserText.label: '법인카드 마스터 (Z)'
define view Z_C_CORPORATE_CARD
as select from ztfia0010 as Card
left outer join lfa1 as CardUser on Card.user = CardUser.lifnr
left outer join lfa1 as Proc1 on Card.user1 = Proc1.lifnr
left outer join lfb1 as UserCc on CardUser.lifnr = UserCc.lifnr
and Card.bukrs = UserCc.bukrs
{
key Card.bukrs as Bukrs,
key Card.zcardno as CardNo,
Card.zcardcode as CardCompany,
Card.cardprid as ValidUntil,
Card.cardstat as CardStatus,
Card.tmndate as TerminationDate,
Card.issuedate as IssueDate,
Card.settdate as SettlementDay,
Card.settnumb as SettlementAccount,
Card.settbank as SettlementBank,
Card.limit_amt as CreditLimit,
Card.user as CardUserId,
CardUser.name1 as CardUserName,
Card.user1 as Processor1,
Proc1.name1 as Processor1Name,
Card.exp_date as ReturnDueDate,
// 자동 연계 카드 여부 — 편집 제한의 기준
case when Card.zcardcode = '10' then 'X' else '' end as IsAutoLinked
}카드 마스터를 조회하거나 청구내역과 연결할 때 쓰는 참고용 설계입니다. 자동 연계 카드의 갱신은 인터페이스가 담당합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 편집 가능한 카드 목록 |
| 조회조건 | sap.m.Input · sap.m.ComboBox — 우측 끝에 조회 |
| 편집 목록 | sap.ui.table.Table — 셀에 Input · ComboBox · DatePicker |
| 조건부 잠금 | editable 을 관리구분에 바인딩해 연계 카드 입력칸을 읽기 전용으로 |
| 상태 표시 | sap.m.ObjectStatus · RowSettings.highlight — 신규·수정·해지 |
| 변경 추적 | 라인별 isNew · isDirty 플래그와 툴바 미저장 표시 |
| CSV | Blob + UTF-8 BOM |
입력칸을 잠그되 숨기지 않은 이유
값 자체는 봐야 합니다. 한도가 얼마인지, 결제일이 언제인지는 연계 카드도 확인 대상입니다. 숨기면 다른 화면을 찾아가야 하므로, 입력칸은 그대로 두고 읽기 전용으로만 바꿨습니다. 관리구분 표시와 함께 보면 왜 잠겼는지도 바로 이해됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.cardmaster) · ko 로케일 · sap_horizon |
Component.js | 조회조건 모델 · 결과 모델 초기화 |
view/Main.view.xml | 조회화면 + 편집 가능한 카드 목록 |
controller/Main.controller.js | 조회 · 편집 · 등록/삭제 제한 · 저장 · CSV |
model/ModelMock.js | localdata JSON 읽기 · 편집 가능 필드 판정 · 저장 시뮬레이션 |
model/formatter.js | 관리구분 · 카드상태 · 처리자 · 금액 · 일자 포맷터 |
i18n/i18n_ko.properties | ko 로케일 리소스 — 제한 안내 메시지 포함 |
localdata/cardmaster.json | 카드 마스터 시뮬레이션 데이터 |
검증 결과
화면 구성에 쓴 데이터는 자동연계 카드와 수기 카드를 섞은 마스터입니다.
| 데이터 | 규모 | 구성 |
|---|---|---|
| 카드 마스터 | 18매 | 자동연계 8 · 수기 10 (카드사 4곳) |
| 카드 종류 | 개인 14 · 공용 4 | 상태 정상 15 · 해지 2 |
| 한도 · 사원 | 551,000,000원 | 사용자·처리자 연결 사원 7명 |
| 검증 항목 | 결과 |
|---|---|
| 카드사가 정의 목록에 존재 · 자동연계 여부 일치 | 통과 |
| 카드 종류·상태가 정의 목록과 일치 | 통과 |
| 해지 카드만 해지일자 보유 | 통과 |
| 유효기간·해지일자가 발급일자 이후 | 통과 |
| 결제은행 등록 확인 · 결제일 1~31 · 한도 > 0 | 통과 |
| 카드 사용자가 사원 목록에 존재 · 부서 일치 | 통과 |
| 처리자 최대 4명 · 사용자와 중복 없음 · 중복 지정 없음 | 통과 |
| 처리자가 1번부터 순서대로 채워짐 | 통과 |
| 내역키·카드번호 중복 없음 · 입력일시 형식 | 통과 |
| 화면 렌더링 — 목록 → 삭제 차단 → 등록 → 검증 → 필터 | 7/7 |
카드번호·사용자는 모두 검증용 데이터입니다.
자주 묻는 질문
자동 연계 카드의 한도금액은 왜 못 고치나요?
카드사가 매일 아침 그 값을 다시 밀어 넣기 때문입니다. 화면에서 고쳐도 다음 갱신에 되돌아가는데, 담당자는 고쳤다고 믿고 있게 됩니다. 그래서 아예 입력칸을 잠가 혼선을 없앴습니다. 한도를 바꾸려면 카드사에 요청해야 합니다.
사용자와 처리자는 왜 연계 카드도 수정할 수 있나요?
카드사가 주지 않는 정보이기 때문입니다. 누가 그 카드를 쓰고 누가 비용을 처리하는지는 회사 내부에서 정하는 값이라, 연계 여부와 관계없이 화면에서 관리합니다. 반납예정일도 같은 이유로 열려 있습니다.
처리자를 4명까지 두는 이유는?
공용카드는 여러 부서가 나눠 쓰는 경우가 있고, 담당자 휴가나 인사이동에 대비해 예비 처리자를 두기도 합니다. 사양서에 네 자리가 정의돼 있어 그대로 따랐고, 화면에서는 1·2번을 편집칸으로 두고 3·4번은 요약해 보여 줍니다.
카드 처리자로 검색하면 어느 자리까지 찾나요?
1번부터 4번까지 모두 봅니다. 특정 담당자가 어느 카드를 맡고 있는지 확인할 때 자리를 몰라도 되도록 했습니다.
SAP 표준 기능과 어떻게 이어지나요?
카드 마스터는 커스텀 테이블(ZTFIA0010)이고, 사용자·처리자는 사원 Vendor 마스터로 연결됩니다. 이 화면에서 정리한 마스터는 법인카드 청구현황 조회에서 카드번호로 이어지고, 비용 전표를 만들 때 사용자·처리자 정보가 귀속 판단 근거가 됩니다.