솔루션 홈
FI Interface · 인터페이스

SAP FI 인터페이스 13종 — 화면 없는 프로그램이 하는 일

카드사·은행·그룹웨어·인사·국세청과 주고받는 재무 인터페이스를 방향별로 나눠, 무엇을 받아 어디에 넣고 무엇을 돌려주는지 한 번에 정리했습니다.

ERP 프로젝트 산출물 목록을 보면 화면 프로그램 사이에 화면이 없는 프로그램들이 섞여 있습니다.

Function 이나 Interface 로 분류된 것들입니다. 눈에 보이는 게 없으니 존재감도 없지만, 이것들이 멈추면 다음 날 아침 카드 사용내역이 안 올라오고 환율이 비어 있고 결재 결과가 반영되지 않습니다. 이번에는 재무 모듈의 인터페이스 13종을 방향별로 나눠 정리했습니다. 밖에서 받아 넣는 것, 주고받는 것, 안에서 꺼내 주는 것. 세 갈래로 보면 설계 의도가 드러납니다.

SAP 표준 구조를 그대로 이어받은 부분

  • 수신형 6종 — 카드사·은행·인사에서 받아 커스텀 Z 테이블에 저장
  • 양방향 2종 — Legacy 시스템의 전표 생성 요청과 취소여부 회신
  • 제공형 3종 — 표준 전표·마스터를 읽어 외부에 넘김
  • 결재 연동 2종 — 그룹웨어 상신과 결재 결과 반영
항목내용
대상재무(FI) 모듈 인터페이스 13종
유형Function / Interface — 화면 없음
외부 시스템현대카드 · 하나은행 · 그룹웨어 · 인사시스템 · Legacy · 이세로
저장 테이블ZTFIA0010~0110 · ZTFIE0060 등 커스텀 Z 테이블
읽는 표준BKPF · BSEG · BSET · BSID · BSIK · TCURR
반환 규약EV_RETURN · EV_MSG 또는 T_RETURN(BAPI_MTYPE)
연결 화면법인카드 마스터·처리현황 · 환율관리 · 원천세 집계 등
정리 기준프로그램 사양서의 파라미터·처리 로직·연관 테이블

인터페이스 흐름도 5종

방향으로 갈래를 나누고 → 수신형은 원본 보존과 화면 잠금을, 제공형은 가공 규칙을 정합니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

FI 인터페이스 전체 구성
방향별로 나눈 13종
방향별로 나눈 13종 — 왼쪽이 외부 시스템, 가운데가 인터페이스, 오른쪽이 데이터가 닿는 자리입니다. 수신형은 커스텀 Z 테이블에 쌓이고, 제공형은 표준 구조를 읽어 나갑니다. 쌓인 데이터는 결국 화면 프로그램이 꺼내 씁니다.
현대카드 I/F 4종
백업 테이블을 거쳐 운영 테이블로
백업 테이블을 거쳐 운영 테이블로 — 카드사가 보낸 원본은 먼저 백업 테이블에 그대로 쌓입니다. 그다음 운영 테이블로 옮깁니다. 원본을 남겨 두기 때문에 값이 이상할 때 카드사 전송분과 대조할 수 있습니다.
법인카드 경비 결재 연동
상신과 완료 후 처리
상신과 완료 후 처리 — 상신 함수가 결재 본문을 만들어 그룹웨어로 넘기고, 결과가 돌아오면 완료 후 처리 함수가 상태를 반영합니다. 승인·결재중은 내역을 갱신하지만 반려·상신취소는 전표까지 취소합니다.
환율 I/F
고시환율 6종과 환산단위를 함께 반환
고시환율 6종과 환산단위를 함께 반환 — 일자만 받아 그날 환율을 돌려줍니다. 환율값만 주면 100단위 통화에서 금액이 틀어지므로 환산단위도 같이 넘깁니다.
제공형 I/F 3종
표준 테이블을 읽어 외부에 넘긴다
표준 테이블을 읽어 외부에 넘긴다 — 쓰지 않고 읽기만 합니다. 대신 외부가 바로 쓸 수 있는 형태로 가공합니다. 영업소별로 묶거나, 부호를 맞추거나, 대사 키로 정리해서 넘깁니다.

설계 시 점검 순서

  1. 인터페이스를 방향으로 먼저 나눕니다. 받는 것, 주고받는 것, 주는 것.
  2. 수신형은 백업 테이블을 먼저 두고 운영 테이블로 옮기는 구조인지 확인합니다.
  3. 수신분을 화면에서 어디까지 고칠 수 있게 할지 정합니다. 카드사가 주는 항목은 잠그는 편이 안전합니다.
  4. 결재 연동은 상태 코드 매핑과 되돌림 처리를 함께 설계합니다.
  5. 제공형은 받는 쪽이 바로 쓸 수 있도록 집계·부호·키를 맞춰 넘깁니다.
  6. 모든 인터페이스가 EV_RETURN · EV_MSG 같은 공통 반환 규약을 따르게 합니다.

13종 처리 로직 요약

열세 개 인터페이스가 각각 무엇을 받아 어디에 넣고 무엇을 돌려주는지 정리했습니다.

인터페이스 13종 — 방향별 분류

  【수신형 6종】 외부 → SAP
     ZFIA_HCARD_MASTER_IF        현대카드 마스터
     ZFIA_HCARD_APPR_IF          현대카드 승인내역
     ZFIA_HCARD_PROC_IF          현대카드 매입내역
     ZFIA_HCARD_BILL_IF          현대카드 청구내역 (월 단위)
     ZFIA_EXCHANGE_RATE_IF       하나은행 고시환율
     ZFIE_HR_WITHHOLDING_TAX_IF  인사시스템 원천세

  【양방향 2종】 Legacy ↔ SAP
     ZFIA_LEGACY_DOC_IF          전표 생성 요청 → 전표번호 회신
     ZFIA_LEGACY_CHECK_CANCEL    전표 취소여부 조회

  【결재 연동 2종】 SAP ↔ 그룹웨어
     ZFIA_DOCUMENT_REQUEST       법인카드 경비 상신
     ZFIA_DOCUMENT_FINAL         결재 완료 후 처리

  【제공형 3종】 SAP → 외부
     ZFIB_AR_STATUS              채권/입금 현황
     ZFIC_AP_COMMISSION          AP Commission 지급정보
     ZFIF_GET_DOC_INFO_FOR_DTI   이세로 대사 데이터
항목산식 · 규칙
ZFIA_HCARD_MASTER_IF카드 마스터 수신 → ZTFIA0040 백업 후 ZTFIA0010 반영
ZFIA_HCARD_APPR_IF승인내역 수신 → ZTFIA0050 백업 후 ZTFIA0020 반영
ZFIA_HCARD_PROC_IF매입내역 수신 → ZTFIA0060 백업 후 ZTFIA0020 반영
ZFIA_HCARD_BILL_IF청구내역 수신 → ZTFIA0070 백업 후 ZTFIA0030 반영
ZFIA_EXCHANGE_RATE_IF일자 받아 TCURR·TCURF 조회 후 6종 환율 반환
ZFIE_HR_WITHHOLDING_TAX_IF집계코드가 인사(Z1~Z3)인 건만 ZTFIE0060 반영
ZFIA_LEGACY_DOC_IF헤더·아이템 필수 점검 후 전표 생성, 전표번호 회신
ZFIA_LEGACY_CHECK_CANCELBKPF 헤더로 취소 여부 판정 — X / space
ZFIA_DOCUMENT_REQUESTZTFIA0020 조회 후 결재 HTML 본문과 결재요소 구성
ZFIA_DOCUMENT_FINAL결재 상태를 HSTATUS 에 반영, 반려·취소는 전표 취소
ZFIB_AR_STATUS당월매출·입금·미입금·어음을 영업소별로 집계
ZFIC_AP_COMMISSION계정 21050551 고정, Partial·Cleared 금액 합산 (차변은 −)
ZFIF_GET_DOC_INFO_FOR_DTIAR/AP·계산서 종류별 ERP 데이터를 대사용으로 반환

인터페이스를 방향으로 나눠 본 이유

이름만 보면 열세 개가 다 비슷해 보입니다. 그런데 받는 것과 주는 것은 설계 고민이 정반대입니다. 받는 쪽은 원본을 어떻게 보존하고 어디까지 화면에서 고치게 할지가 문제이고, 주는 쪽은 어떤 형태로 가공해서 넘길지가 문제입니다. 방향으로 나누면 각 인터페이스가 왜 그렇게 생겼는지 설명됩니다.

방향별 4갈래

이름은 비슷해 보여도 데이터가 흐르는 방향에 따라 설계가 달라집니다.

갈래방향데이터가 닿는 곳설계 핵심
수신형외부 → SAP백업 테이블 → 운영 테이블원본 보존 · 화면에서 잠금
양방향Legacy ↔ SAP표준 전표 생성 · 조회전표번호와 취소 여부 회신
결재 연동SAP ↔ 그룹웨어상태 매핑 · 전표 취소반려·취소 시 되돌림
제공형SAP → 외부표준 테이블 읽기집계·부호·키를 맞춰 반환

네 갈래로 나누면 각 인터페이스가 왜 그런 모양인지 설명이 됩니다.

공통 파라미터

필드필수설명
EV_RETURN공통처리 결과 — 성공 / 실패 또는 X / space
EV_MSG공통오류 사유 메시지
T_RETURN결재 연동BAPI_MTYPE·ID·NUMBER·MESSAGE 구조
IV_WFKEY · IV_WFSTATUS결재 연동워크플로 키와 결재 상태
IV_DATE환율조회 일자. 비면 오류
IV_BUKRS · IV_BELNR · IV_GJAHRLegacy 조회전표 키 3종

상태 코드 체계

컬럼의미 · 표시
결재 상태 D기안 → CC 결재중 — 내역 갱신
결재 상태 C완료(승인) → FF 승인 — 내역 갱신
결재 상태 R반려 → DD 반려 — 전표 취소
결재 상태 W회수(상신취소) → EE 상신취소 — 전표 취소
카드상태1 정상 · 3 유효정지 · 5 무효정지 · 7 취소 · 9 교체
카드 신청유형1 신규 · 2 재발급 · 3 갱신
원천세 집계코드Z1~Z3 인사 · Z4~Z7 재무 — 인사 건만 수신 처리

보조 기능

컬럼의미 · 표시
환율 종류M 매매기준 · CB 현찰매도 · CS 현찰매입 · TTB 전신환매입 · TTS 전신환매도 · EXD 미화환산
환산단위TCURF 의 FFACT · TFACT — 100단위 통화 보정
일자 변환CONVERSION_EXIT_INVDT_INPUT — GDATU 는 역순 일자

연결되는 화면 프로그램

인터페이스가 쌓은 데이터는 결국 화면 프로그램이 꺼내 씁니다.

표준역할이 화면에서의 확장
FB08전표 역분개결재 반려·취소 시 호출

운영 데이터 소스 매핑

항목SAP 원천비고
카드 백업ZTFIA0040 · 0050 · 0060 · 0070카드사 전송 원본
카드 운영ZTFIA0010 · 0020 · 0030마스터 · 처리내역 · 청구내역
Legacy 전표ZTFIA0080 · ZTFIA0090헤더 · 아이템
원천세ZTFIE0060 · ZTFIE0030신고자료 · 집계코드
환율TCURR · TCURF환율 · 환산단위
채권·채무BSID · BSAD · BSIK · BSAK · BSED미결·반제·어음

도입 시 확인이 필요한 부분

인터페이스는 실패했을 때가 문제입니다. 재전송 규칙과 중복 방지 키를 먼저 정해야 합니다. 카드 I/F 는 카드번호와 승인번호 조합이 키가 되는데, 같은 건을 두 번 받으면 덮어쓸지 건너뛸지 정해 두지 않으면 중복 전표로 이어집니다. 수신 이력을 남기는 로그 테이블도 함께 설계하는 편이 안전합니다.

참고 CDS 뷰

수신 결과를 원본과 대조할 때는 운영 테이블에 백업 테이블을 붙인 뷰가 편합니다.

@AbapCatalog.sqlViewName: 'ZCIFCARDLOG'
@EndUserText.label: '카드 I/F 수신 현황 (Z)'
define view Z_C_CARD_INTERFACE_LOG
  as select from ztfia0020 as Usage
    left outer join ztfia0050 as ApprBackup on  Usage.bukrs     = ApprBackup.bukrs
                                            and Usage.card_num  = ApprBackup.card_num
                                            and Usage.aqui_coll = ApprBackup.aqui_coll
    left outer join ztfia0060 as ProcBackup on  Usage.bukrs     = ProcBackup.bukrs
                                            and Usage.card_num  = ProcBackup.card_num
                                            and Usage.aqui_coll = ProcBackup.aqui_coll
{
  key Usage.bukrs        as Bukrs,
  key Usage.card_num     as CardNo,
  key Usage.aqui_coll    as AcquireNo,
      Usage.if_date      as InterfaceDate,
      Usage.ackdate      as ApprovalDate,
      Usage.ackamount    as ApprovalAmount,
      Usage.aqui_won     as AmountKrw,
      Usage.belnr        as AccountingDoc,
      // 어느 인터페이스로 들어왔는지
      case when ApprBackup.card_num is not null then 'APPR'
           when ProcBackup.card_num is not null then 'PROC'
           else 'MANUAL' end as SourceInterface,
      // 원본과 금액이 달라졌는지 — 수기 수정 흔적
      case when ApprBackup.ackamount is not null
            and ApprBackup.ackamount <> Usage.ackamount then 'X'
           else '' end as AmountChanged
}

수신 결과를 원본과 대조할 때 쓰는 참고용 설계입니다. 백업 테이블을 함께 조인하면 어느 인터페이스로 들어왔고 이후 값이 바뀌었는지 드러납니다.

화면 없는 프로그램 다루기

기능사용 컨트롤
화면 없음Function / Interface 유형은 Selection Screen 과 ALV 가 없다
호출 주체외부 시스템 또는 배치 잡이 RFC 로 호출
결과 전달EV_RETURN · EV_MSG 로 성공 여부와 사유를 회신
데이터 확인수신 결과는 연결된 화면 프로그램에서 조회
백업 활용값이 이상하면 백업 테이블의 원본과 대조
잠금 연동수신분은 화면에서 수정 불가로 처리해 덮어쓰기 충돌을 막음
테스트SE37 단건 호출 또는 인터페이스 테스트 도구

화면 없는 프로그램의 결과를 확인하는 법

인터페이스 자체는 볼 게 없지만 결과는 화면에 나타납니다. 그래서 수신형 인터페이스를 설계할 때는 어느 화면에서 결과를 확인할지를 함께 정해야 합니다. 이번 13종도 모두 대응하는 조회 화면이 있고, 수신분은 그 화면에서 잠기도록 맞춰 두었습니다.

네임스페이스 구성

경로역할
ZFIA_*카드·환율·결재·Legacy — 9종
ZFIB_*채권/입금 현황 — 1종
ZFIC_*AP Commission — 1종
ZFIE_*임직원 원천세 — 1종
ZFIF_*이세로 대사 — 1종
ZSFIA* · ZSFIE* · ZSB_*파라미터 구조체 (Structure)
ZSMMZ_RETRUN공통 반환 구조 — 메시지 유형·클래스·번호·본문

사양서 대조 결과

정리에 쓴 자료는 프로그램 사양서의 파라미터·처리 로직·연관 테이블입니다.

데이터규모구성
인터페이스13종수신 6 · 양방향 2 · 결재 2 · 제공 3
외부 시스템6곳현대카드 · 하나은행 · 그룹웨어 · 인사 · Legacy · 이세로
저장 테이블Z 테이블 10여 개백업과 운영을 분리한 구조
검증 항목결과
수신형 4종이 백업 테이블을 먼저 거치는 구조사양서 일치
카드 마스터 수신분은 화면에서 잠금 (사용자·처리자·반납일만 수기)사양서 일치
결재 상태 D·W·R·C 가 CC·EE·DD·FF 로 매핑사양서 일치
반려·상신취소 시 전표 취소 수행사양서 일치
환율 I/F 가 6종 환율과 환산단위를 함께 반환사양서 일치
환율 I/F 의 일자 필수 점검과 역순 일자 변환사양서 일치
원천세 I/F 는 집계코드가 인사(Z1~Z3)인 건만 처리사양서 일치
AP Commission 은 계정 21050551 고정 · 차변은 부호 반전사양서 일치
Legacy 전표 I/F 의 헤더·아이템 필수항목 점검사양서 일치
공통 반환 규약 EV_RETURN · EV_MSG / T_RETURN13종 전부 확인

테이블명과 코드 체계는 사양서 기준입니다.

자주 묻는 질문

수신형이 왜 백업 테이블을 먼저 거치나요?

카드사가 보낸 원본을 남겨 두기 위해서입니다. 운영 테이블은 화면에서 일부 항목을 고칠 수 있어 시간이 지나면 원본과 달라집니다. 값이 이상하다는 문의가 오면 백업 테이블과 대조해 카드사가 보낸 값이 그랬는지 우리가 고친 건지 가릴 수 있습니다.

반려와 상신취소만 전표를 취소하는 이유는?

결재중과 승인은 앞으로 진행될 건이라 전표가 살아 있어야 합니다. 반면 반려나 상신취소는 그 경비를 처리하지 않겠다는 뜻이므로 이미 만든 전표를 되돌려야 합니다. 사양서가 이 네 상태를 코드로 구분해 둔 것도 그 때문입니다.

환율 I/F 는 왜 환산단위까지 주나요?

환율값만으로는 금액을 못 구하는 통화가 있습니다. 엔화처럼 100단위로 고시하는 통화는 환율에 환산단위를 함께 적용해야 원화가 나옵니다. 받는 쪽이 이 값을 모르면 금액이 100배 어긋납니다.

제공형 함수는 왜 그냥 테이블을 안 주고 가공해서 주나요?

받는 쪽이 SAP 테이블 구조를 알아야 하는 부담을 없애기 위해서입니다. 채권 현황은 영업소별로 묶어서, AP Commission 은 차변 부호를 맞춰서, 이세로 대사 데이터는 승인번호 기준으로 정리해서 넘깁니다. 규칙을 함수 안에 두면 외부가 바뀌어도 기준이 흔들리지 않습니다.

화면이 없는데 문제가 생기면 어떻게 확인하나요?

연결된 화면 프로그램에서 결과를 봅니다. 카드 I/F 는 법인카드 처리현황에서, 환율 I/F 는 환율관리에서, 원천세 I/F 는 원천세 집계에서 데이터가 올라왔는지 확인합니다. 인터페이스 자체는 EV_RETURN 과 EV_MSG 로 성공 여부를 돌려주므로 호출한 쪽 로그에도 남습니다.

인터페이스 설계, 지금 쓰는 SAP 위에서 점검해 보세요

받는 것과 주는 것의 규칙이 분명하면 연계 장애가 났을 때 원인을 찾는 시간이 크게 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

FI 인터페이스현대카드 I/F환율 I/F전자결재 연동Legacy 전표원천세 I/F이세로 대사ABAP Function