수출 솔루션 · 영업(SD) 수출

선적·매출 기간귀속 컷오프 점검 — 선적일과 장부 인식일이 다른 달에 걸린 수출 건을 건마다 가려내는 수출 솔루션 (IFRS 15 통제 이전 시점)

통제 이전 기준일 · 장부 인식일 비교 · 선인식 · 지연인식 · 보류 판정 · 기간별 이월 유입과 유출 · 인코텀즈 · 거래처 요약 · 대사 결과 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지

소개 영상1분 53초8개 장면음성 안내·자막처음 연 화면 → 선인식 조회 → 기간별 이월 → 행 상세 → 인코텀즈별 요약 → 대사 결과

개발 배경 — 이 앱을 사용해야 하는 이유

수출 매출은 물건이 항구를 떠나는 날과 장부에 매출이 잡히는 날이 같지 않습니다. 선적은 월말에 했는데 청구서는 다음 달 초에 나가고, 도착 조건으로 판 건은 배가 닿은 뒤에야 고객에게 통제가 넘어갑니다. 월마감 때마다 수출 담당과 회계 담당이 같은 질문을 주고받습니다. 이 건의 매출은 어느 달 것인가, 장부에는 몇 월에 잡혀 있나, 둘이 다르면 왜 다른가.

지금은 이 세 답이 판매오더 · 납품 · 청구 · 고객 계정 명세 화면과 선적서류 엑셀에 나뉘어 있어, 건마다 선적일과 청구일과 전기일을 옮겨 적고 인코텀즈를 보며 손으로 견줍니다. 이 앱은 그 대조를 한 화면에 모읍니다. 인코텀즈별로 정한 통제 이전 기준일을 장부 인식일과 월 단위로 비교해 같은 기간 · 선인식 · 지연인식 · 보류로 가르고, 기간마다 어느 달로 매출이 넘어갔는지를 이월 유입 · 유출로 보여 줍니다.

관련 기준은 IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)의 수익 인식 시점(통제 이전)입니다. 외화 매출은 IAS 21 환율변동효과(K-IFRS 제1021호)의 환산 관점을 함께 봅니다. 이 화면은 분류와 집계와 대사를 돕는 점검 도구이며, 원인을 단정하거나 인식 시점을 대신 판단하지 않습니다. 기준일 정책표와 비율 기준은 샘플 가정값이고, 실제 판단은 계약 조건별로 회사와 감사인이 합니다.

한 줄 요약 — 선적 64건의 통제 이전 기준일과 장부 인식일을 건마다 견주어, 같은 기간 38건 · 선인식 13건 · 지연인식 9건 · 보류 4건으로 가르고, 기간별 이월과 인코텀즈 · 거래처 요약까지 한 화면에서 이어 봅니다. 그리고 그 숫자가 서로 어긋나지 않는지 대사식으로 매번 검산합니다.

선적일과 매출일이 다른 달에 걸리면 결산 숫자가 흔들린다

12월 28일에 선적하고 1월 3일에 청구했다면, 통제가 12월에 넘어갔다고 볼 수 있는 건이 1월 매출로 잡혔는지 확인해야 합니다. 반대로 1월 선적 건을 12월에 미리 청구해 장부에 올렸다면 앞 기간에 먼저 잡힌 것입니다. 한 건씩은 작아도 월말에 몰리면 달 매출이 눈에 띄게 달라집니다. 이 앱은 이런 건을 선인식(앞 기간에 먼저 잡힘)과 지연인식(뒤 기간에 늦게 잡힘)으로 갈라 표시합니다. 이 자료에서는 판정 대상 60건 가운데 선인식이 13건, 지연인식이 9건입니다.

인코텀즈마다 통제가 넘어가는 시점이 다르다

EXW · FCA · FOB · CFR · CIF 는 선적 시점을, DAP 는 도착 시점을 기준으로 두는 것이 이 화면의 샘플 정책입니다. 같은 선적일이라도 DAP 건은 도착일이 다음 달로 넘어가면 기준 기간이 달라집니다. 그래서 건마다 기준일이 무엇인지(선적일인지 도착일인지)를 칸으로 보여 주고, 인코텀즈별로 점검 필요 비율을 따로 집계합니다. 어느 조건에서 점검 대상이 몰리는지 보이면, 건별 확인보다 먼저 정책표를 손볼 자리가 드러납니다.

외화 매출은 합계를 더하는 순간 의미가 흐려진다

수출 매출은 USD · EUR · JPY · CNY 로 섞여 있습니다. 서로 다른 통화의 외화 금액은 더할 수 없으므로, 이 앱은 외화 금액과 환율과 원화 환산 금액을 따로 두고 합계는 원화 환산 금액으로만 냅니다. 환산 대사도 통화별로 따로 해서 어느 통화에서 어긋나는지 곧바로 보입니다. 샘플의 환율은 가정값이며 실제 고시값이 아닙니다.

서류가 아직 오지 않은 건은 틀린 것이 아니라 아직 판단할 수 없는 건이다

선적서류(B/L)가 늦게 와서 선적일이 확정되지 않은 건은 통제 이전 기준일이 없습니다. 이런 건을 억지로 판정하면 점검 필요 건수가 부풀려집니다. 이 앱은 보류로 따로 세워 판정에서 빼고, 대사 결과에는 ‘의도적 예외’로 적어 차이 건수와 섞이지 않게 합니다. 서류가 들어오면 다시 조회해 판정에 들어갑니다. 이 자료에서는 보류가 4건입니다.

사용 방법

  1. 조회조건 입력 — 회계연도(필수, 4자리)를 확인하고 필요하면 거래처 · 통화 · 인코텀즈 · 이월 구분 · 선적일 범위 · 판정을 고릅니다. 모두 선택 사항이며 비워 두면 전체입니다.
  2. 조회 버튼 · Enter — 조회조건 줄 맨 오른쪽의 조회 버튼을 누르거나 회계연도 · 날짜 입력 칸에서 Enter 키를 누릅니다. 화면을 열면 한 번 자동으로 조회합니다.
  3. 요약 확인 — 위쪽 요약(선적 건수 · 판정 대상 · 점검 필요 · 선인식 금액 · 지연인식 금액 · 대사 차이 건수)을 먼저 봅니다.
  4. 탭 이동 — 선적 명세 → 기간별 이월 → 인코텀즈별 → 거래처별 → 대사 결과 순서로 옮겨 가며 범위를 좁힙니다.
  5. 행 클릭 상세 — 행을 누르면 상세 창이 열립니다. 기간 · 인코텀즈 · 거래처 행은 그 조건에 해당하는 선적 건 목록까지 함께 보여 줍니다.
  6. 내보내기 — 오른쪽 위 CSV 내려받기로 현재 탭의 조회 결과를 내려받습니다(UTF-8, 엑셀에서 바로 열림).

숫자를 믿을 수 있는가 — 검증 결과

컷오프 점검에서 가장 비싼 질문은 “이 숫자 맞아?” 입니다. 만드는 쪽에서 먼저 대사식을 세우고 전수로 돌린 결과입니다. 판정 규칙은 건마다 다시 계산해 화면 값과 견주었습니다.

대사식검사 건수차이 건수최대 차이
선적 수량 = 청구 수량 + 미청구 수량6400
기간별 통제 이전 기준 금액 합계 = 판정 대상 원화 합계6000
기간별 장부 인식 금액 합계 = 판정 대상 원화 합계6000
기준 + 이월 유입 − 이월 유출 = 장부 인식(기간별 재계산)1300
인코텀즈별 건수 합계 = 전체 선적 건수6400
거래처별 원화 합계 = 전체 원화 합계6400
같은 기간 + 선인식 + 지연인식 + 보류 = 전체 선적 건수6400
외화 금액 × 가정 환율 = 원화 환산(통화별 4종)6400.48원
판정 규칙 재계산(기준일 · 이월 구분)6000
의도적 예외 — 보류 건 판정 제외(서류 대기로 기준일 없음)40—

외화 대사의 최대 차이 0.48원은 건별 원 단위 반올림(0.5원 이내)입니다. 보류 4건은 판정에서 빼고 대사 차이 건수와 분리해 둡니다. 서비스 쪽은 구문 검사와 날짜 조건 걸러내기, 함수 호출 응답까지 확인했고, 화면은 헤드리스 브라우저로 조회 · 탭 이동 · 상세 창 · Enter 조회가 콘솔 오류 없이 도는지 확인했습니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면 컨트롤조회조건 줄 · 요약 · 아이콘 탭 5개, 표 5개(선적 명세 · 기간별 이월 · 인코텀즈별 · 거래처별 · 대사 결과), 행 클릭 상세 창탭마다 같은 조회조건을 쓰되 보는 단위만 바꿉니다. 표는 열 정렬 · 열 너비 · 가로 스크롤을 표준 컨트롤에 맡겼습니다.
판정 · 집계 로직서비스 쪽 로직이 통제 이전 기준일 선택 · 기간 비교 · 이월 구분 · 기간별 유입/유출 집계를 계산화면이 계산하지 않고 서비스가 계산해 주므로, 운영에서 같은 규칙을 CDS 뷰로 옮겨도 화면은 바뀌지 않습니다.
데이터 연동OData V2 모델(단방향 · 총건수 함께 조회 · 요청 묶음 없음), 조회조건은 필터 객체로 만들어 $filter 로 전달“전체”는 코드값을 보내지 않고 조건에서 뺍니다. 날짜 범위는 서비스가 직접 걸러 정렬 · 페이징까지 처리합니다.
오류 안내메타데이터 실패 · 요청 실패 · 빈 응답을 구분해 안내하는 오류 처리서비스가 없을 때와 조건에 맞는 자료가 없을 때를 같은 빈 화면으로 보이지 않게 합니다.
테마 · 언어sap_horizon 테마, 화면 글자는 번역 파일로 분리언어를 더하는 일이 파일 하나를 더하는 일이 됩니다.
항목내용
솔루션수출 솔루션
업무 영역영업(SD) · 수출
관련 기준서IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) — 수익 인식 시점(통제 이전), IAS 21 환율변동효과(K-IFRS 제1021호) — 외화 환산
SAP 표준 T-codeVA03 · VL03N · VF03 · VF05 · FBL5N
화면 성격조회 · 점검
데이터 연동OData (V2)
테마sap_horizon
SAP 표준 기능을 그대로 이어받은 부분 — 선적 건의 번호와 수량은 납품 문서, 청구일 · 통화 · 환율 · 금액은 청구 문서, 장부 인식일은 회계 전표의 전기일이라는 표준 데이터 구조를 그대로 이어받습니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다.

실행 화면

실제 화면 7종입니다. 사용 순서대로 처음 연 화면 → 조건으로 좁힌 결과 → 기간별 이월과 상세 → 인코텀즈 · 거래처 요약 → 대사 결과를 따라갑니다. 그림을 누르면 크게 볼 수 있습니다. 화면의 거래처와 금액은 검증용 샘플 데이터이며 환율은 가정값입니다.

처음 열었을 때

화면을 열면 회계연도 2026 조건으로 한 번 자동 조회합니다. 요약 여섯 칸이 먼저 차고, 그 아래 선적 명세 표가 이어집니다.

처음 연 화면 — 조회조건 · 요약 · 선적 명세
처음 연 화면 — 조회조건 · 요약 · 선적 명세 — 조회조건 한 줄, 요약 여섯 칸, 선적 건 64건이 한 화면에 놓입니다. 위의 안내 줄은 기준일 정책과 점검 필요 기준을 짧게 밝혀 둔 것입니다.

요약은 선적 건수 64 · 판정 대상 60 · 점검 필요 22 · 선인식 금액 3,942.0백만원 · 지연인식 금액 3,490.0백만원 · 대사 차이 0건입니다. 판정 대상은 보류 4건을 뺀 수이고, 금액은 원화 환산 백만원 단위입니다. 조회조건은 모두 선택 사항이라 비워 두면 전체이며, 조회 버튼은 조건 줄의 오른쪽 끝에 있습니다. 점검 필요는 ‘확인할 대상’이라는 뜻이지 오류라는 뜻이 아닙니다.

선인식 건만 골라 보기

이월 구분을 선인식으로 고르고 조회하면 앞 기간에 먼저 잡힌 건만 남습니다. 지연인식도 같은 방식으로 고릅니다.

이월 구분을 선인식으로 조회
이월 구분을 선인식으로 조회 — 이월 구분을 선인식으로 고르고 조회한 결과입니다. 요약과 표가 같은 조건으로 함께 바뀝니다.

선인식은 인식 기간이 통제 이전 기준 기간보다 앞선 건입니다. 선적 전에 먼저 인식했거나, 도착일 기준인데 선적일에 인식한 건이 여기 모입니다. 건마다 통제 이전 기준일 · 장부 인식일 · 기간 차이(일) · 판정 내용이 같은 줄에 있어 어느 날짜가 어긋났는지 바로 읽습니다. 판정 내용은 원인을 단정하지 않고 확인할 대상을 알려 줍니다. 초기화 버튼으로 조건을 비우면 다시 전체가 나옵니다.

기간별 이월 — 어느 달에서 어느 달로 매출이 넘어갔는가

선적 단위가 건별 판정이라면, 기간별 이월은 달 단위 요약입니다. 기준 금액에서 출발해 이월 유입을 더하고 유출을 빼면 장부 인식 금액이 되는 식을 달마다 보여 줍니다.

기간별 이월 — 기준 금액 · 이월 유입 · 이월 유출 · 장부 금액
기간별 이월 — 기준 금액 · 이월 유입 · 이월 유출 · 장부 금액 — 기간(월)마다 통제 이전 기준 금액과 장부 인식 금액을 나란히 두고, 그 사이를 이월 유입과 유출이 메웁니다. 맨 아래 차이 칸이 어느 달에서 매출이 늘고 줄었는지 보여 줍니다.

기준 금액 + 이월 유입 − 이월 유출 = 장부 인식 금액이 모든 기간에서 맞아야 하고, 이 식은 대사 결과의 한 줄로도 다시 검산됩니다. 연말 선적 건이 다음 해 1월 장부에 잡힌 경우를 보려고 13번째 기간(2027년 1월)도 함께 둡니다. 점검 필요 표시가 붙은 기간은 그 행을 눌러 어느 건이 달을 넘겼는지 먼저 확인합니다.

기간 행을 눌렀을 때 — 해당 기간의 선적 건 상세
기간 행을 눌렀을 때 — 해당 기간의 선적 건 상세 — 기간 행을 누르면 그 기간의 수치와 함께, 기준 기간이나 인식 기간이 그 달인 선적 건 목록이 상세 창에 열립니다.

상세 창은 기간 요약의 숫자가 어느 건들에서 나왔는지 거꾸로 따라가는 자리입니다. 목록의 합계가 기간 행의 금액과 맞는지 확인하면 됩니다. 인코텀즈 · 거래처 행도 같은 방식으로 열립니다. 닫기 버튼으로 닫습니다.

인코텀즈별 · 거래처별 — 점검 필요가 어디에 몰리는가

건별로 보면 흩어져 있던 점검 대상이 조건별로 묶이면 패턴이 보입니다. 인코텀즈별 점검 필요 비율이 25.00% 이상이거나 거래처별 비율이 40.00% 이상이면 요약 행에 점검 필요가 붙습니다. 두 기준은 샘플 가정값입니다.

인코텀즈별 요약
인코텀즈별 요약 — 인코텀즈마다 선적 · 판정 · 같은 기간 · 선인식 · 지연인식 · 보류 건수와 점검 필요 비율, 선인식 · 지연인식 금액을 모아 둡니다.

DAP 는 도착일을 기준으로 두므로 선인식 건이 상대적으로 많이 잡히고(이 자료에서 7건), CFR 은 지연인식이 많습니다(4건). 이 숫자는 원인을 단정하지 않습니다. 해당 조건의 기준일 증빙과 인식 절차를 확인해 보라는 안내이며, 행을 누르면 그 조건의 선적 건이 열립니다.

거래처별 요약
거래처별 요약 — 거래처마다 건수 · 점검 필요 비율 · 평균과 최대 기간 차이(일) · 원화 환산 합계 · 점검 필요 금액을 보여 줍니다.

평균 기간 차이는 건마다 |장부 인식일 − 통제 이전 기준일| 을 낸 뒤 판정 대상 건에서 평균한 값입니다. 거래처 쪽 기준일 관리(선적서류 수령 시점 등)를 확인할 자리를 고를 때 씁니다. 통화가 거래처마다 하나이므로 외화 금액이 섞이지 않고, 합계는 원화 환산 금액으로만 냅니다.

대사 결과 — 숫자를 믿을 수 있는지 화면이 말한다

대사 결과 탭은 앞의 모든 숫자가 서로 맞는지를 그대로 보여 줍니다.

대사 결과 — 차이 건수와 의도적 예외
대사 결과 — 차이 건수와 의도적 예외 — 대사식마다 좌변 · 우변 · 검사 건수 · 차이 건수 · 최대 차이가 한 줄씩 나옵니다. 보류 건은 의도적 예외로 따로 한 줄을 차지합니다.

모든 대사식의 차이 건수가 0 이어야 정상입니다. 외화 환산 대사는 통화별 네 줄로 나뉘고 최대 차이는 건별 반올림 범위(0.5원 이내)입니다. 보류 4건은 판정에서 뺀 것이 맞는지를 확인하는 줄로, 대사 차이와 섞이지 않습니다. 이 탭이 흔들리면 다른 탭의 숫자도 믿기 어렵다는 신호입니다.

화면 뒤에서 일어나는 일

선적 건마다 정책표로 통제 이전 기준일을 정하고, 장부에 매출이 잡힌 날의 기간(월)과 견줍니다. 판정은 아래 표대로 움직이며, 기준일 정책과 비율 기준은 샘플 가정값입니다.

판정 조건결과 상태사용자 조치
인코텀즈가 EXW · FCA · FOB · CFR · CIF통제 이전 기준일 = 선적일(B/L 일자) (가정)선적일이 확정된 건만 판정 대상
인코텀즈가 DAP통제 이전 기준일 = 도착일 (가정)도착일 자료 확인
기준 기간 = 인식 기간같은 기간 — 정상조치 없음
인식 기간이 기준 기간보다 앞선인식 — 점검 필요기준일 증빙(선적서류 · 도착 확인)과 인식 시점 확인
인식 기간이 기준 기간보다 뒤지연인식 — 점검 필요청구 · 인식 지연 사유 확인
선적서류(B/L) 대기로 기준일이 없음보류 — 판정 제외(의도적 예외)서류 수령 뒤 다시 점검
인코텀즈별 점검 필요 비율 25.00% 이상요약 행 점검 필요해당 조건의 건 목록 확인
거래처별 점검 필요 비율 40.00% 이상요약 행 점검 필요거래처별 기준일 관리 확인

처리 순서는 다음과 같습니다.

  1. 건 읽기 — 회계연도 조건으로 선적 건을 읽고, 인코텀즈로 정책표를 찾아 통제 이전 기준일을 정합니다(서류 대기 건은 기준일 없음).
  2. 기간 만들기 — 기준일과 장부 인식일 각각의 연월을 기간으로 만들고 두 기간을 비교해 이월 구분(같은 기간 · 선인식 · 지연인식 · 보류)을 붙입니다.
  3. 금액 환산 — 외화 금액 × 가정 환율을 건별 원 단위로 반올림해 원화 환산 금액을 만듭니다.
  4. 기간별 집계 — 기준 기간별 기준 금액, 인식 기간별 장부 금액, 그 사이의 이월 유입 · 유출을 합산합니다.
  5. 조건별 요약 — 인코텀즈별 · 거래처별 건수와 점검 필요 비율을 계산합니다.
  6. 대사 — 아래 식으로 서로 맞는지 검산해 대사 결과 탭에 냅니다.
기간 차이(일) = |장부 인식일 − 통제 이전 기준일|
기간별 통제 이전 기준 금액 + 이월 유입 − 이월 유출 = 기간별 장부 인식 금액   (원화 환산 금액 기준)
기간별 기준 금액 합계 = 기간별 장부 금액 합계 = 판정 대상 원화 합계
선적 수량 = 청구 수량 + 미청구 수량
같은 기간 + 선인식 + 지연인식 + 보류 건수 = 전체 선적 건수
외화 금액 × 가정 환율 = 원화 환산 금액   (통화별로 따로 대사, 서로 다른 통화의 외화 금액은 더하지 않음)

조회조건

조건필수기본값OData $filter
회계연도필수2026Gjahr eq '2026'
거래처선택전체CustId eq 'C301'
통화선택전체Curr eq 'USD'
인코텀즈선택전체Incoterms eq 'DAP'
이월 구분선택전체CutType eq 'EARLY'
선적일 시작 · 종료선택비움ShipDate ge datetime'…' and ShipDate le datetime'…'
판정선택전체CheckStatus eq 'CHECK'

“전체”를 고르면 코드값을 보내지 않고 그 조건을 $filter 에서 뺍니다. 날짜 조건은 서비스가 직접 걸러 정렬 · 건너뛰기 · 건수 집계까지 처리합니다.

결과 컬럼

탭마다 컬럼이 다릅니다. 선적 명세와 기간별 이월의 주요 컬럼입니다.

컬럼의미산출식 · 원천
통제 이전 기준일고객에게 통제가 넘어간 것으로 보는 날인코텀즈 정책표에 따라 선적일 또는 도착일
장부 인식일매출이 장부에 잡힌 날청구 전기 전표의 전기일
기준 기간 · 인식 기간두 날짜의 연월각 날짜의 연월
이월 구분같은 기간 · 선인식 · 지연인식 · 보류기준 기간과 인식 기간 비교
기간 차이(일)두 날짜가 며칠 벌어졌는가|장부 인식일 − 통제 이전 기준일|
원화 환산(원)건별 원화 금액외화 금액 × 가정 환율, 원 단위 반올림
기준 금액(기간별)그 달에 통제가 넘어간 건의 원화 합계기준 기간별 합산
이월 유입 · 유출(기간별)다른 달에서 들어온 / 다른 달로 나간 금액인식 기간이 그 달이고 기준 기간이 다른 건 / 그 반대
장부 인식 금액(기간별)그 달 장부에 잡힌 원화 합계기준 + 유입 − 유출과 같아야 함

좁은 화면에서 달라지는 것

폭 390px 휴대폰 크기로 열어 보면 가로 스크롤 없이 한 열로 쌓입니다. 조회조건은 여러 줄로 접히고 요약 여섯 칸은 두 칸씩 줄을 바꿔 놓입니다. 탭이 폭을 넘으면 ‘더 보기’ 메뉴로 접히며, 표는 표 안에서만 가로로 움직입니다. 넓은 화면에서 보던 모든 탭과 조회조건을 같은 방식으로 쓸 수 있습니다.

파일 구성

(앱 폴더)
├─ index.html · Component.js · manifest.json
├─ controller/   화면 제어(공통 기본 제어 · 메인 제어)
├─ view/         메인 화면 · 상세 창 조각
├─ model/        표시 서식 · 오류 안내
├─ css/          화면 스타일
├─ i18n/         화면 글자(한국어)
├─ odata/<서비스>/   서비스 정의 · 서비스 로직 · 자료 묶음
└─ media/        소개 영상 · 대표 이미지

SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 수주 · 납품 · 청구 · 회계 전표를 만드는 일은 표준 거래에 그대로 두고, 이 앱은 그 결과가 남긴 날짜들을 한 줄에 모아 견주는 자리를 더합니다.

표준으로 되는 것과 안 되는 것

하고 싶은 일표준 화면으로 되는 것표준 화면에서 따로 해야 하는 일이 앱이 더하는 관점
수주 · 인코텀즈 확인VA03 에서 판매오더의 인코텀즈와 수량 · 금액을 봅니다.건마다 열어 보며 통제 시점을 직접 판단합니다.인코텀즈별로 정한 기준일 정책을 건 전체에 한꺼번에 적용합니다.
출고 · 선적 확인VL03N 에서 납품의 출고일과 수량을 봅니다.선적일(B/L 일자)이 어느 필드에 있는지 회사마다 확인해야 합니다. 확인 필요.선적일 · 도착일을 통제 이전 기준일 한 칸으로 모읍니다.
청구 확인VF03 에서 청구문서를, VF05 에서 청구문서 목록을 봅니다.청구일과 선적일을 건마다 나란히 놓고 월을 견주어야 합니다.청구일이 아니라 장부 인식일(전기일)과 기준일의 월을 견줍니다.
매출채권 · 전표 확인FBL5N 에서 고객 계정 명세를, FB03 에서 회계 전표를 봅니다.전표 전기일과 선적 서류 날짜를 엑셀로 맞춥니다.건마다 기간 차이(일)와 이월 구분을 붙여 점검 대상을 골라 줍니다.
월(기간)별 이월 보기표준 목록을 기간으로 걸러 볼 수 있습니다.기준 월과 장부 월이 다른 건을 달별로 모아 유입 · 유출로 정리하는 화면은 확인 필요.기준 + 유입 − 유출 = 장부 식을 달마다 보여 줍니다.
외화 환산 확인청구문서에 통화와 환율이 남습니다.통화별로 따로 합산 · 대사하는 작업은 사람이 합니다.통화별 대사를 따로 하고, 합계는 원화 환산 금액으로만 냅니다.

T-code 별 연계 지점

맞닿은 표준 T-code 마다 이 앱이 어떤 데이터를 이어받고, 두 화면의 숫자를 어디서 맞춰 보며, 표준에 무엇을 남겨 두는지를 정리했습니다.

표준 T-code이름이 앱이 이어받는 데이터두 화면을 맞춰 보는 지점오가는 방법 · 표준에 남겨 둘 일
VA03판매오더 조회인코텀즈 · 수량 · 금액선적 건의 인코텀즈와 정책표 매칭이 앱의 건 → 판매오더 원천 확인. 오더 변경 · 조건 협의는 표준 거래에서 합니다.
VL03N납품 조회출고일 · 선적 수량선적 수량 = 청구 수량 + 미청구 수량건의 선적일을 납품 화면에서 확인. 출고 · 선적 실행은 표준에서 합니다.
VF03청구문서 조회청구일 · 통화 · 환율 · 금액외화 금액 × 환율 = 원화 환산건의 청구 금액을 청구문서에서 확인. 청구 취소 · 정정은 표준에서 합니다.
VF05청구문서 리스트기간별 청구 목록기간별 장부 인식 금액과 청구 목록 합계 대조표준 목록 값 → 이 앱의 기간별 이월 행에서 다시 확인. 청구 처리는 표준에 둡니다.
FBL5N고객 계정 명세매출채권 전표의 전기일장부 인식일(전기일) 확인건의 인식일을 계정 명세에서 확인. 회수 · 반제는 표준 거래에서 합니다.
FB03전표 조회회계 전표 전기일 · 금액전표 전기일과 이 앱의 인식일 대조전표 단위 확인. 법정 · 감사 · 세무 신고 대응은 표준 화면과 회사 절차에 남깁니다.

운영으로 옮긴다고 기존 리포트를 없앨 필요는 없습니다. 법정 보고 · 감사 대응 · 세무 신고에 쓰는 표준 화면과 리포트는 그대로 두고, 이 앱은 월마감 전에 기간귀속을 점검하는 보조 화면으로 함께 둡니다. 두 화면의 숫자가 다를 때는 위 표의 대조 지점부터 맞춰 봅니다.

S/4HANA 분석 스택과의 자리

S/4HANA 에서는 표준 CDS 분석 쿼리와 Fiori 분석 앱, Analysis for Office 같은 도구로 매출과 청구 현황을 분석할 수 있습니다. 이 앱은 그 분석 스택과 겹치지 않게, 통제 이전 시점과 장부 인식 시점을 건마다 견주는 관점만 더합니다. 같은 원천 테이블(납품 · 청구 · 회계 전표)에서 CDS 큐브를 세우면 분석 쿼리와 Analysis for Office 에서도 같은 숫자를 쓸 수 있습니다. 이 글에서 다룬 구성이 실제 시스템의 어떤 표준 CDS 뷰와 맞닿는지는 릴리스마다 다르므로 확인 필요로 두고, 아래 CDS 구성은 원천 테이블 기준으로 적었습니다.

확장 포인트 — 운영에서 실제로 손대는 자리

자리손대는 내용손대는 방식
인코텀즈별 기준일 정책어느 조건을 선적일, 어느 조건을 도착일로 볼지정책표(아래 CDS 의 기준 테이블)에 인코텀즈별로 적습니다. 계약 조건별 예외는 회사 판단입니다.
선적일(B/L 일자) 필드실제 B/L 일자를 담는 필드가 무엇인지샘플은 실제 출고일 필드를 쓰며 B/L 일자 표준 필드는 확인 필요입니다. 맞지 않으면 고객 확장 필드로 받습니다.
도착일 원천도착 확인일을 어디서 받을지표준 필드는 확인 필요입니다. 고객 확장 필드 또는 물류 시스템 연계로 받는 설계가 필요합니다.
점검 필요 비율 기준인코텀즈별 25%, 거래처별 40% 를 그대로 쓸지샘플 가정값이므로 회사 기준으로 바꿉니다. 코드가 아니라 설정값으로 둡니다.
환율 유형과 환산 시점가정 환율 대신 어떤 환율 유형 · 어느 날짜 기준으로 환산할지청구문서의 환율을 쓸지, 전기일 환율을 다시 적용할지 회계팀이 정합니다.
보류 사유서류 대기 외에 보류로 볼 사유가 있는지사유 코드를 늘려 두면 보류 건을 나눠 볼 수 있습니다.
권한영업조직 · 회사코드별로 볼 수 있는 범위CDS 접근 제어(DCL)와 표준 권한 객체로 겁니다.

요구사항 매핑표

기준서요구사항대응 기능원천 데이터비고
IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)한 시점에 이행되는 수행의무의 통제 이전 시점인코텀즈별 통제 이전 기준일 정책표납품 문서 · 선적서류(B/L 일자는 확인 필요)기준일 정책은 샘플 가정이며 실제 판단은 계약 조건별로 회사가 합니다.
IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)수익이 속하는 보고기간(컷오프)기준 기간 대 인식 기간 비교, 이월 유입 · 유출청구문서 · 회계 전표문단 번호는 원문 확인 전이라 적지 않았습니다.
IAS 21 환율변동효과(K-IFRS 제1021호)외화 거래의 원화 환산외화 금액 · 가정 환율 · 원화 환산 금액 분리, 통화별 대사청구문서(통화 · 환율)환율은 샘플 가정값입니다.

분석 지표 정의표

지표산식판정 기준대응 기능원천 데이터
기간 차이(일)|장부 인식일 − 통제 이전 기준일|판정 대상 건선적 명세청구 전기일 · 기준일
이월 구분기준 기간과 인식 기간 비교같은 기간 · 선인식 · 지연인식 · 보류선적 명세 · 선인식 건 조회기준일 · 인식일
점검 필요 비율(선인식 + 지연인식) ÷ 판정 건수 × 100인코텀즈별 25.00% 이상 · 거래처별 40.00% 이상(샘플)인코텀즈별 · 거래처별건별 판정
이월 유입 · 유출다른 기간에서 들어온 / 나간 원화 합계기준 + 유입 − 유출 = 장부기간별 이월건별 원화 환산 금액
선인식 · 지연인식 금액해당 구분 건의 원화 환산 합계판정 대상 건요약 · 인코텀즈별건별 원화 환산 금액

CDS 구성

화면에 쓰는 서비스를 운영 시스템에서 CDS 로 세우는 구성입니다. 객체 이름은 기능을 뜻하는 영문으로 지었고, 원천은 표준 테이블 기준으로 적었습니다. 표준 CDS 뷰로 바꿀 수 있는지는 릴리스마다 다르므로 확인 필요입니다.

뷰 레이어 구성

레이어뷰 · 객체하는 일왜 나누나
기준(정책)ZSHCUT_POLICY인코텀즈별 통제 이전 기준일(선적일/도착일)을 적는 표정책이 바뀌어도 뷰를 이송하지 않으려고
원천 연결ZI_ShipCutoffBase납품 → 청구 → 회계 전표를 선적 건 한 줄로 모음확인 필요 필드(B/L 일자 · 도착일)를 한 곳에서 바꾸려고
판정ZI_ShipCutoffJudge기준일 선택 · 기간 비교 · 이월 구분판정 규칙이 한 곳에만 있어야 모든 소비자가 같은 값을 읽음
큐브ZI_ShipCutoffPeriodCube건별 원화 환산 후 기간별 집계환산을 집계 전에 해야 통화별 대사가 가능
쿼리(Consumption)ZC_ShipCutoffQuery축 · 필터 · 표시 순서큐브는 재사용하고 보는 방식만 바꾸려고
권한(DCL)ZC_ShipCutoffQuery 의 접근 제어영업조직별 조회 범위권한을 데이터 쪽에 걸려고
서비스ZUI_ShipCutoff쿼리를 OData 서비스로 노출화면은 서비스 주소만 알면 되게

① 기준 테이블 — 인코텀즈별 통제 이전 기준일

컷오프 판정의 출발점은 “이 조건이면 통제가 언제 넘어가는가”입니다. 이 표 한 줄이 같은 인코텀즈의 모든 건에 적용되므로 운영에서 가장 먼저 합의해야 하는 객체입니다. 계약 조건별 예외는 이 표가 아니라 회사 판단 절차로 다룹니다.

" ─────────────────────────────────────────────────────────────────
"  ZSHCUT_POLICY  — 인코텀즈별 통제 이전 기준일 정책
"  역할  : 어느 인코텀즈를 선적일(S)로, 어느 것을 도착일(A)로 볼지 적어 둔다.
"  나눈 이유 : 기준일 판단을 뷰 안에 case 로 박아 두면 정책이 바뀔 때마다
"           뷰를 고쳐 이송해야 한다. 표로 빼 두면 현업이 값만 고친다.
" ─────────────────────────────────────────────────────────────────
@EndUserText.label : '인코텀즈별 통제 이전 기준일 정책'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zshcut_policy {
  key client     : abap.clnt not null;
  key inco1      : inco1 not null;           " EXW · FCA · FOB · CFR · CIF · DAP …
  basis          : abap.char(1) not null;    " S = 선적일, A = 도착일
  valid_from     : abap.dats;                " 정책 적용 시작일
  changed_by     : abap.uname;
}

② 선적 건 기준 뷰 — 날짜와 금액을 한 줄로

납품 · 청구 · 회계 전표를 이어 선적 건마다 선적일 · 도착일 · 청구일 · 장부 전기일 · 외화 금액을 모읍니다. 선적일(B/L 일자)과 도착일은 표준 필드를 확인하지 못해 확인 필요로 표시했고, 맞지 않으면 고객 확장 필드로 받는 자리입니다. 수량은 납품 수량과 청구 수량을 따로 두어 미청구 수량을 구할 수 있게 합니다.

" ─────────────────────────────────────────────────────────────────
"  ZI_ShipCutoffBase  — 선적 건 기준 뷰 (납품 → 청구 → 회계 전표)
"  역할  : 선적 건 하나에 선적일 · 도착일 · 청구일 · 통화 · 금액 · 장부 전기일을
"          한 줄로 모은다. 판정은 여기서 하지 않는다.
"  나눈 이유 : 원천을 잇는 일과 판정하는 일을 나눠 두면, 원천 필드가
"          확인 필요인 두 자리(B/L 일자 · 도착일)만 이 뷰에서 바꾸면 된다.
" ─────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '선적·매출 기간귀속 점검 — 선적 건 기준'
@ObjectModel.usageType: { serviceQuality: #C, sizeCategory: #XL, dataClass: #TRANSACTIONAL }
define view entity ZI_ShipCutoffBase
  as select from likp as d
    inner join   lips as i  on  i.vbeln = d.vbeln
    inner join   vbrp as bp on  bp.vgbel = i.vbeln
                            and bp.vgpos = i.posnr
    inner join   vbrk as bh on  bh.vbeln = bp.vbeln
    inner join   vbak as so on  so.vbeln = bp.aubel
    inner join   vbkd as kd on  kd.vbeln = so.vbeln
                            and kd.posnr = '000000'
    left outer join bkpf as fi on  fi.bukrs = bh.bukrs
                               and fi.belnr = bh.belnr
                               and fi.gjahr = bh.gjahr
{
  key d.vbeln                       as ShipId,
      so.kunnr                      as Customer,
      so.vkorg                      as SalesOrganization,
      kd.inco1                      as Incoterms,
      d.wadat_ist                   as ShipDate,      // B/L 일자는 확인 필요
      d.zz_arrdate                  as ArrivalDate,   // 고객 확장 필드 — 확인 필요
      bh.fkdat                      as BillingDate,
      fi.budat                      as PostingDate,   // 장부 인식일(전기일)
      bh.waerk                      as DocumentCurrency,
      bh.kurrf                      as ExchangeRate,
      @Semantics.amount.currencyCode: 'DocumentCurrency'
      bp.netwr                      as NetAmount,
      @Semantics.quantity.unitOfMeasure: 'SalesUnit'
      i.lfimg                       as ShippedQuantity,
      @Semantics.quantity.unitOfMeasure: 'SalesUnit'
      bp.fkimg                      as BilledQuantity,
      bp.vrkme                      as SalesUnit
}

③ 판정 뷰 — 기준일 · 기간 · 이월 구분

이 뷰가 컷오프 규칙의 전부입니다. 정책표로 기준일을 고르고 두 날짜의 연월을 비교해 이월 구분을 붙입니다. 기준일이 비면 억지로 판정하지 않고 보류로 둡니다. 화면 · 분석 쿼리 · 대사가 모두 이 뷰를 읽으므로 규칙이 바뀌면 여기만 고칩니다.

" ─────────────────────────────────────────────────────────────────
"  ZI_ShipCutoffJudge  — 통제 이전 기준일 · 기간 · 이월 구분 판정
"  역할  : 정책표로 기준일을 고르고, 기준 기간과 인식 기간을 비교해
"          NONE(같은 기간) · EARLY(선인식) · LATE(지연인식) · HOLD(보류)를 붙인다.
"  나눈 이유 : 판정 규칙이 이 뷰 한 곳에만 있어야 화면 · 분석 쿼리 ·
"          대사가 같은 규칙을 쓴다.
" ─────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '선적·매출 기간귀속 점검 — 판정'
define view entity ZI_ShipCutoffJudge
  as select from ZI_ShipCutoffBase as b
    left outer join zshcut_policy  as p on p.inco1 = b.Incoterms
{
  key b.ShipId,
      b.Customer,
      b.SalesOrganization,
      b.Incoterms,
      b.DocumentCurrency,
      b.PostingDate,
      b.NetAmount,

      // ① 통제 이전 기준일 — 정책표가 A 이면 도착일, 아니면 선적일
      case when p.basis = 'A' then b.ArrivalDate
           else b.ShipDate
      end                                                    as TransferDate,

      // ② 두 날짜의 연월(기간)
      substring( cast( case when p.basis = 'A' then b.ArrivalDate
                            else b.ShipDate end as abap.char( 8 ) ), 1, 6 )
                                                             as TransferPeriod,
      substring( cast( b.PostingDate as abap.char( 8 ) ), 1, 6 )
                                                             as RevenuePeriod,

      // ③ 이월 구분 — 기준일이 비어 있으면 판정하지 않고 보류
      case
        when ( p.basis = 'A' and b.ArrivalDate is initial )
          or ( coalesce( p.basis, 'S' ) = 'S' and b.ShipDate is initial )
                                                             then 'HOLD'
        when substring( cast( b.PostingDate as abap.char( 8 ) ), 1, 6 )
           = substring( cast( case when p.basis = 'A' then b.ArrivalDate
                                   else b.ShipDate end as abap.char( 8 ) ), 1, 6 )
                                                             then 'NONE'
        when substring( cast( b.PostingDate as abap.char( 8 ) ), 1, 6 )
           < substring( cast( case when p.basis = 'A' then b.ArrivalDate
                                   else b.ShipDate end as abap.char( 8 ) ), 1, 6 )
                                                             then 'EARLY'
        else 'LATE'
      end                                                    as CutType
}

④ 큐브 — 건별 환산 후 기간별 집계

원화 환산은 집계하기 전에 건별로 합니다. 통화가 섞인 금액을 먼저 더하면 어느 통화에서 어긋났는지 알 수 없기 때문입니다. 환율 유형은 샘플의 가정 환율 자리를 대신해 회계팀이 정하는 값입니다.

" ─────────────────────────────────────────────────────────────────
"  ZI_ShipCutoffPeriodCube  — 기간별 이월 큐브(원화 환산 포함)
"  역할  : 건별 원화 환산 금액을 만들고, 기준 기간 · 인식 기간별로 집계해
"          기준 + 이월 유입 − 이월 유출 = 장부 식이 나오게 한다.
"  나눈 이유 : 환산을 집계 전에 건별로 해야 통화별 대사와
"          원 단위 반올림 차이를 설명할 수 있다.
" ─────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@Analytics.dataCategory: #CUBE
@EndUserText.label: '기간별 이월 큐브'
define view entity ZI_ShipCutoffPeriodCube
  as select from ZI_ShipCutoffJudge as j
{
  key j.TransferPeriod,
  key j.RevenuePeriod,
  key j.CutType,
  key j.SalesOrganization,
  key j.Incoterms,
  key j.Customer,
      cast( 'KRW' as abap.cuky )                              as DisplayCurrency,

      @Semantics.amount.currencyCode: 'DisplayCurrency'
      sum( currency_conversion(
             amount             => j.NetAmount,
             source_currency    => j.DocumentCurrency,
             target_currency    => cast( 'KRW' as abap.cuky ),
             exchange_rate_date => j.PostingDate,
             exchange_rate_type => 'M',           // 환율 유형은 회계팀이 정한다
             error_handling     => 'SET_TO_NULL' ) )          as AmountKrw,

      @DefaultAggregation: #SUM
      count( distinct j.ShipId )                              as ShipmentCount
}
where j.CutType <> 'HOLD'                 // 보류 건은 판정 · 집계에서 뺀다
group by j.TransferPeriod, j.RevenuePeriod, j.CutType,
         j.SalesOrganization, j.Incoterms, j.Customer

⑤ 분석 쿼리 — 축과 필터

큐브 위에 기간 · 이월 구분 · 인코텀즈 · 거래처 축과 필터를 올립니다. 어노테이션 이름과 조합은 릴리스에 따라 다를 수 있어 시스템에서 확인이 필요합니다.

" ─────────────────────────────────────────────────────────────────
"  ZC_ShipCutoffQuery  — 분석 쿼리(Consumption)
"  역할  : 기간 · 인코텀즈 · 거래처 축과 필터를 정해 화면과 분석 도구가
"          같은 조회 조건으로 읽게 한다.
"  나눈 이유 : 큐브는 재사용하고 보는 방식(축 · 필터 · 표시 순서)만
"          쿼리에서 바꾼다. 어노테이션 세트는 릴리스마다 다르므로
"          시스템에서 확인 필요.
" ─────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '선적·매출 기간귀속 컷오프 점검'
@Analytics.query: true
@VDM.viewType: #CONSUMPTION
define view entity ZC_ShipCutoffQuery
  as select from ZI_ShipCutoffPeriodCube
{
  @AnalyticsDetails.query.axis: #ROWS
  @UI.selectionField: [{ position: 10 }]
  @Consumption.filter: { selectionType: #RANGE, mandatory: true }
  TransferPeriod,

  @AnalyticsDetails.query.axis: #COLUMNS
  @Consumption.filter.selectionType: #SINGLE
  CutType,

  @AnalyticsDetails.query.axis: #ROWS
  @UI.selectionField: [{ position: 20 }]
  @Consumption.filter.selectionType: #MULTIPLE
  Incoterms,

  @AnalyticsDetails.query.axis: #ROWS
  @UI.selectionField: [{ position: 30 }]
  Customer,

  @AnalyticsDetails.query.axis: #COLUMNS
  @AnalyticsDetails.query.decimals: 0
  AmountKrw,

  @AnalyticsDetails.query.axis: #COLUMNS
  ShipmentCount
}

⑥ 접근 제어 — 영업조직별 범위

권한은 쿼리에 거는 접근 제어에서 제한합니다. 권한 객체와 필드는 회사의 권한 설계에 맞춰 정하며, 아래는 영업조직 기준 예시입니다.

" ─────────────────────────────────────────────────────────────────
"  ZC_ShipCutoffQuery 의 접근 제어(DCL)
"  역할  : 영업조직별로 볼 수 있는 건을 제한한다.
"  나눈 이유 : 권한을 화면이 아니라 데이터 쪽에 걸어야
"          표·상세·내려받기가 같은 범위만 보여 준다.
" ─────────────────────────────────────────────────────────────────
@EndUserText.label: '선적·매출 기간귀속 점검 — 영업조직 권한'
@MappingRole: true
define role ZC_ShipCutoffQuery {
  grant select on ZC_ShipCutoffQuery
    where ( SalesOrganization ) = aspect pfcg_auth( V_VBAK_VKO, VKORG, ACTVT = '03' );
}

⑦ 서비스 정의 — 화면이 부르는 이름

서비스 정의에서 엔티티셋 이름이 정해집니다. 바인딩은 ADT 에서 OData V2 로 게시하고, 화면 쪽은 서비스 주소만 바꿉니다.

" ─────────────────────────────────────────────────────────────────
"  ZUI_ShipCutoff  — Service Definition (Binding 은 ADT 에서 OData V2 로 게시)
"  역할  : 쿼리를 서비스로 내보낸다. 화면이 부르는 엔티티셋 이름이 여기서 정해진다.
"  나눈 이유 : 화면의 manifest 는 서비스 주소만 알면 되므로,
"          운영 전환은 서비스 바인딩을 게시하고 주소를 바꾸는 일로 끝난다.
" ─────────────────────────────────────────────────────────────────
@EndUserText.label: '선적·매출 기간귀속 컷오프 점검 서비스'
define service ZUI_ShipCutoff {
  expose ZC_ShipCutoffQuery as ShipCutoffSet;
}

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다. 아래 표의 앞쪽 항목이 정해져야 숫자가 기존 보고서와 맞기 시작합니다.

해야 할 일무엇을 정하나정하지 않으면누가
인코텀즈별 기준일 정책선적일 · 도착일 중 무엇을 통제 이전 시점으로 볼지판정이 회사 기준과 달라 첫 회의에서 막힙니다회계팀 · 수출팀
선적일(B/L 일자) 원천B/L 일자를 어느 필드로 받을지출고일을 선적일로 오해해 기간이 어긋납니다수출팀 · SD 담당
도착일 원천도착 확인일을 어디서 받을지DAP 건 기준일이 비어 보류가 늘어납니다물류팀 · IT
환율 유형 · 환산 시점청구 환율 · 전기일 환율 중 무엇을 쓸지원화 환산이 기존 보고서와 어긋납니다회계팀
점검 필요 비율 기준인코텀즈별 · 거래처별 기준 비율점검 대상이 너무 많거나 적어집니다회계팀 · 수출팀
보류 사유와 해소 절차보류 건을 누가 언제 다시 점검하나보류가 계속 쌓입니다수출팀
부호 규칙반품 · 크레딧 메모를 어떻게 셀지건수와 금액이 어긋납니다회계팀
차원 범위영업조직 · 회사코드 · 거래처 그룹 중 무엇을 축으로 둘지나중에 늘리려면 뷰를 고쳐 다시 이송해야 합니다현업 · IT
권한 설계영업조직별 · 회사코드별 조회 범위전사 합계와 자기 몫의 차이로 남의 숫자가 드러납니다보안 · 권한
대사 체계표준 T-code(VF05 · FBL5N · FB03)와 맞출 항목과 주기두 화면 숫자가 다를 때 어디부터 볼지 모릅니다회계팀
전송(TR) 순서정책표 → 기준 뷰 → 판정 뷰 → 큐브 → 쿼리 → 권한 → 서비스의존 객체가 먼저 안 올라가 활성화가 실패합니다IT
서비스 활성화 · 주소 교체서비스 바인딩 게시(/IWFND/MAINT_SERVICE 또는 Binding 게시)와 화면 설정의 서비스 주소 교체화면이 서비스를 찾지 못해 오류 안내만 나옵니다IT · Basis

운영 데이터로 갈 때

선적 건이 연간 수천 건인 샘플과 달리, 운영에서는 납품 · 청구 · 회계 전표가 수백만~수천만 건이 될 수 있습니다. 먼저 회계연도와 기간을 필수 조건으로 두어 큐브가 읽는 범위를 좁힙니다. 집계는 화면이 아니라 CDS 큐브에서 하고, 건별 목록은 조회 조건이 걸린 뒤에만 불러옵니다. 납품 · 청구 · 전표를 잇는 조건에 쓰는 키에는 인덱스 영향을 점검하고, 응답 시간은 “기간 한 달 조회 몇 초 이내”처럼 회사가 기준을 정해 두었다가 시험 환경에서 실제 자료로 재어 봅니다. 구체적인 수치는 시스템 사양에 따라 달라 확인이 필요합니다.

자주 묻는 질문

도입 상담과 데모에서 자주 받는 질문을 네 묶음으로 나눠 적었습니다.

숫자와 판정 규칙

통제 이전 기준일은 어떻게 정하나요?

이 화면의 샘플에서는 EXW · FCA · FOB · CFR · CIF 를 선적일, DAP 를 도착일로 보는 정책표를 씁니다. 실제 기준일은 계약 조건별로 회사가 정합니다.

운영에서는 이 정책을 표 한 장으로 빼 두어, 현업이 값만 고치면 판정이 바뀌도록 합니다. 정책표에 없는 인코텀즈는 선적일로 보되 그 사실을 화면에 표시하는 방식은 회사와 정합니다.

점검 필요는 오류라는 뜻인가요?

아닙니다. 기준일과 인식일의 기간이 달라 확인할 대상이라는 표시입니다. 선적서류 날짜가 늦게 확정됐거나 청구 시점이 계약 조건과 달랐을 수도 있고, 정상적인 처리일 수도 있습니다.

이 화면은 점검 도구이며 최종 판단은 회사와 감사인이 합니다. 세무 신고는 회사와 세무 대리인 · 관세사가 판단합니다.

선인식과 지연인식은 어떻게 구분하나요?

장부 인식 기간이 통제 이전 기준 기간보다 앞서면 선인식, 뒤서면 지연인식입니다. 예를 들어 선적일이 3월 말인데 장부에는 2월에 잡혔다면 선인식, 4월에 잡혔다면 지연인식입니다. 같은 달이면 같은 기간입니다.

비교 단위는 월이므로 같은 달 안에서 일자만 어긋난 건은 점검 필요로 잡지 않고 기간 차이(일)에만 남습니다.

보류 건은 왜 판정에서 빼나요?

선적서류(B/L)가 아직 오지 않아 선적일이 확정되지 않은 건은 통제 이전 기준일이 없기 때문입니다. 이를 억지로 판정하면 점검 필요 건수가 부풀려집니다.

보류는 별도 구분으로 세우고 대사 결과에 의도적 예외로 적어 차이 건수와 섞이지 않게 합니다. 서류가 들어온 뒤 다시 조회하면 판정에 들어갑니다. 이 자료에서는 보류가 4건입니다.

서로 다른 통화는 어떻게 합산하나요?

외화 금액은 더하지 않고 원화 환산 금액으로만 합계를 냅니다. 환산 대사도 USD · EUR · JPY · CNY 통화별로 따로 합니다.

샘플의 환율은 가정값입니다. 운영에서는 청구문서의 환율을 쓸지 전기일 기준 환율을 다시 적용할지를 회계팀이 정해야 하며, 어느 쪽이든 건별로 환산한 뒤 합산합니다.

기간별 이월의 식이 맞지 않으면 어떻게 하나요?

기준 금액 + 이월 유입 − 이월 유출 = 장부 인식 금액은 모든 기간에서 맞아야 합니다. 맞지 않는 기간이 나오면 대사 결과 탭의 해당 줄에 차이 건수가 표시됩니다.

먼저 그 기간의 상세 창에서 건 목록 합계를 확인하고, 보류 건이 집계에 섞이지 않았는지, 통화 환산 반올림 범위(0.5원 이내) 안의 차이인지를 봅니다.

화면과 조작

조회조건을 모두 비워도 되나요?

회계연도만 필수이고 나머지는 선택입니다. 비우면 해당 조건 없이 전체가 조회됩니다. 화면을 열면 회계연도 2026 으로 한 번 자동 조회합니다.

조건을 바꾼 뒤에는 조회 버튼이나 회계연도 · 날짜 입력 칸의 Enter 키로 다시 조회합니다. 초기화 버튼은 조건을 기본값으로 되돌립니다.

선인식 건만 보려면 어떻게 하나요?

조회조건의 이월 구분을 선인식으로 고르고 조회합니다. 요약과 표가 같은 조건으로 함께 바뀝니다. 지연인식 · 보류도 같은 방식으로 고르며, 판정 조건을 점검 필요로 두면 선인식과 지연인식이 함께 나옵니다.

행을 누르면 무엇이 열리나요?

상세 창이 열립니다. 기간 · 인코텀즈 · 거래처 행은 해당 조건의 선적 건 목록을 함께 보여 주므로, 요약 숫자가 어느 건들에서 나왔는지 거꾸로 따라갈 수 있습니다. 목록 합계가 행 금액과 맞는지 확인하는 용도로 씁니다.

내려받기는 무엇이 내려가나요?

오른쪽 위 CSV 내려받기는 지금 보고 있는 탭의 조회 결과를 내려받습니다. UTF-8 형식이라 엑셀에서 바로 열립니다. 조회조건이 걸린 상태라면 그 범위만 내려갑니다.

휴대폰에서도 쓸 수 있나요?

폭 390px 크기에서 가로 스크롤 없이 열립니다. 조회조건은 여러 줄로 접히고 요약은 두 칸씩 줄을 바꾸며, 탭은 폭을 넘으면 더 보기 메뉴로 접힙니다. 표는 표 안에서만 가로로 움직입니다. 현업 담당자가 월말에 이동 중 확인하는 정도의 용도입니다.

데이터와 정합성

데이터 원천은 무엇인가요?

납품(출고일 · 수량), 청구문서(청구일 · 통화 · 환율 · 금액), 회계 전표(전기일), 판매오더의 인코텀즈입니다. 이 화면의 값은 검증용 샘플 데이터이고, 운영에서는 같은 의미의 표준 테이블을 CDS 로 읽습니다.

선적일(B/L 일자)과 도착일은 표준 필드를 확인하지 못해 확인 필요로 두었고, 운영에서는 고객 확장 필드나 물류 시스템 연계로 받는 설계가 필요합니다.

숫자가 맞는지는 어떻게 확인하나요?

대사 결과 탭에 대사식이 줄마다 나옵니다. 수량 · 기준 금액 합 · 장부 금액 합 · 기간별 재계산 · 인코텀즈 건수 합 · 거래처 금액 합 · 분류 건수 합 · 통화별 환산이 모두 차이 0건이며, 판정 규칙 재계산도 60건 모두 맞았습니다.

외화 환산의 최대 차이 0.48원은 건별 원 단위 반올림입니다. 운영에서는 표준 T-code 의 청구 목록과 전표 조회로 합계를 맞춰 봅니다.

표준 T-code 와 숫자가 다르면 어디부터 보나요?

먼저 선적 건 하나를 정해 VA03 · VL03N · VF03 으로 수주 · 납품 · 청구 날짜를 보고, FBL5N 이나 FB03 에서 전기일을 확인합니다. 그 날짜들이 이 화면의 기준일 · 인식일과 같은지 봅니다.

건이 같다면 차이는 정책(기준일 선택)이나 환율 유형에서 납니다. 기간 합계가 다르면 VF05 의 청구 목록과 이 화면의 기간별 이월 행을 맞춥니다.

환율은 실제 고시값인가요?

아닙니다. 샘플의 환율은 가정값이며 실제 고시값이 아닙니다. 운영에서는 청구문서에 저장된 환율을 그대로 쓰거나, 정한 환율 유형과 날짜로 다시 환산합니다. 어느 방식이든 환산 규칙은 회계팀이 정해야 합니다.

계정 체계나 매핑이 바뀌면 어떻게 하나요?

이 화면의 판정은 계정이 아니라 날짜와 인코텀즈로 합니다. 따라서 계정 체계가 바뀌어도 판정에는 영향이 없고, 장부 인식일을 가져오는 전표 조건(매출 전표만 보도록 거르는 조건)을 맞추면 됩니다. 인코텀즈가 새로 생기면 정책표에 한 줄을 추가합니다.

도입과 운영

도입하면 무엇이 달라지나요?

월마감 때 수출 담당과 회계 담당이 건마다 날짜를 옮겨 적으며 하던 대조가 한 화면으로 모입니다. 점검 대상이 먼저 추려지니 확인 시간이 줄고, 인코텀즈별 · 거래처별로 점검이 몰리는 곳이 보여 기준일 관리를 손볼 자리를 찾기 쉽습니다.

다만 이 화면이 인식 시점을 대신 판단하지는 않습니다. 확인한 결과를 회계 처리에 반영하는 일은 기존 절차에 남습니다.

누가 쓰는 화면인가요?

월마감을 준비하는 회계 담당과 선적서류 · 선적일을 관리하는 수출 담당이 주 사용자입니다. 재무 책임자나 감사 대응 담당은 요약과 대사 결과 탭을 확인하는 용도로 봅니다.

기존 표준 리포트를 없애야 하나요?

없애지 않습니다. 법정 보고와 감사 · 세무 신고 대응에 쓰는 표준 화면과 리포트는 그대로 두고, 이 화면은 월마감 전에 기간귀속을 점검하는 보조 화면으로 함께 둡니다. 두 화면의 숫자는 위 연계 표의 대조 지점에서 맞춰 봅니다.

운영 시스템에 연결하려면 무엇이 필요한가요?

정책표와 CDS 뷰(기준 연결 · 판정 · 큐브 · 쿼리 · 권한)를 만들어 이송하고, 서비스 바인딩을 게시한 뒤 화면의 서비스 주소를 바꿉니다. 코딩보다 기준일 정책 · 환율 유형 · 권한 설계 같은 합의에 시간이 더 듭니다.

일정은 합의 속도와 확인 필요 필드(B/L 일자 · 도착일)의 원천 확보에 따라 달라 이 글에서 기간을 단정하지 않습니다.

권한과 보안은 어떻게 하나요?

권한은 화면이 아니라 CDS 접근 제어로 겁니다. 영업조직 · 회사코드 기준으로 조회 범위를 제한하면 표 · 상세 · 내려받기가 같은 범위만 보여 줍니다. 요약이나 합계에서만 숫자가 드러나지 않도록 집계 단계에도 같은 제한이 걸려야 합니다.

전표가 많아져도 괜찮나요?

샘플은 연간 선적 64건이라 응답이 즉시 나오지만, 운영 데이터는 훨씬 큽니다. 회계연도와 기간을 필수 조건으로 두고, 집계를 CDS 큐브에서 하며, 건별 목록은 조건이 걸린 뒤에만 읽는 구조를 권합니다. 실제 응답 시간은 시스템 사양에 따라 달라 시험 환경에서 확인해야 합니다.

IFRS 15 는 언제부터 적용되나요?

IFRS 15 는 이미 적용 중인 기준서이며 이 화면은 그 요구사항을 점검하는 보조 도구입니다. 시행일과 경과규정은 이 화면에서 다루지 않습니다.

이 화면의 결과를 그대로 회계 처리에 써도 되나요?

그대로 쓰지 않습니다. 이 화면은 기준일과 인식일을 견주어 확인할 건을 알려 주는 점검 도구입니다. 수익 인식 시점의 판단과 정정 전표 여부는 회사와 감사인이 하고, 세무 신고는 회사와 세무 대리인 · 관세사가 합니다.