SAP 선적서류 작성 — 수출에 따라붙는 서류 한 벌
수출 건의 인보이스와 패킹리스트 등 선적서류를 조회하고 양식에 담아 출력하는 화면입니다.
수출은 물건을 보내는 것으로 끝나지 않습니다. 서류가 따라가야 통관이 되고 대금도 받습니다.
인보이스, 패킹리스트, 원산지증명서가 각각 필요하고 내용이 서로 맞아야 합니다. 한 곳에서 금액을 고치면 다른 서류도 고쳐야 하는데, 따로 만들면 어긋나기 쉽습니다. 같은 데이터로 서류를 구성하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 영업조직 — 수출 주체(
SalesOrganization) - 거래 당사자 — 매수인(
BUYER) · 수하인(CONSIGNEE) · 운송인(CARRIER) - 품목 — 화물 내역(
DESCRIPTIONOFGOODS)과 수량 · 금액 - 선적 정보 — 선적일과 운송 조건
- 문서 — 인보이스 번호와 관련 문서
| 항목 | 내용 |
|---|---|
| 기반 T-code | VF03 (청구 조회) · VL03N |
| 업무 영역 | 영업(SD) · 수출 서류 |
| Namespace | sd002_shippingdocument |
| 셸 구조 | 조회조건 영역 + 선적 건 목록 + 서류 양식 미리보기 |
| 화면 수 | 조회 화면 1개 + 양식 미리보기 |
| 데이터 | 선적 품목과 영업조직 등 다중 엔티티 |
| 성격 | 조회·출력형 — 청구와 출고는 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 1종 둘러보기
영업조직·기간·선적 건으로 조회하면 수출 건이 나옵니다 → 당사자와 품목 정보를 확인하고 → 서류 양식으로 출력합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 영업조직을 고릅니다. 수출 주체 단위입니다.
- 기간을 선적일 기준으로 지정합니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 매수인·수하인을 확인합니다. 다른 경우가 있습니다.
- 화물 내역이 정확한지 봅니다. 통관에서 대조됩니다.
- 서류 양식으로 전환해 출력될 모습을 확인합니다.
- 인쇄하거나 파일로 내려받아 거래처에 보냅니다.
서류 구성
같은 선적 데이터로 여러 서류를 만듭니다.
공통 정보
매수인(BUYER) 계약 상대
수하인(CONSIGNEE) 실제 수령자
운송인(CARRIER) 운송 담당
인보이스 품목 · 수량 · 단가 · 금액 · 결제 조건
패킹리스트 품목 · 수량 · 포장 단위 · 중량 · 부피
두 서류의 품목과 수량은 반드시 일치해야 함
매수인과 수하인을 나누는 이유
계약한 상대와 물건을 받는 곳이 다른 경우가 많습니다. 본사가 계약하고 현지 공장이 받거나, 중개무역이면 아예 제3국으로 갑니다. 서류에 둘을 구분해 적지 않으면 통관이나 대금 결제에서 문제가 생깁니다.
수출 서류 4종
| 서류 | 내용 | 용도 |
|---|---|---|
| 상업송장 | 거래 금액과 조건 | 통관·대금 결제 |
| 패킹리스트 | 포장과 중량 내역 | 통관·운송 |
| 선하증권 | 운송 계약 증서 | 화물 인수 |
| 원산지증명서 | 생산국 증명 | 관세 혜택 |
이 화면은 상업송장과 패킹리스트 기준으로 구성했습니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
영업조직 SalesOrganization | 필수 | 수출 주체 |
| 기간 | 필수 | 선적일 From~To |
매수인 BUYER | 선택 | 계약 상대 |
수하인 CONSIGNEE | 선택 | 실제 수령자 |
| 인보이스 번호 | 선택 | 특정 건 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 인보이스 번호 | 서류 식별 |
영업조직 SalesOrganization | 수출 주체 |
매수인 BUYER | 계약 상대 |
수하인 CONSIGNEE | 실제 수령자 |
운송인 CARRIER | 운송 담당 |
화물 내역 DESCRIPTIONOFGOODS | 품목 설명 |
| 수량 · 단가 · 금액 | 거래 조건 |
| 통화 | 결제 통화 |
| 선적일 | 출항 날짜 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
VF03 | 청구 문서 조회 | 서류 양식으로 재구성 |
VL03N | 납품 문서 조회 | 선적 정보 |
VBRK · VBRP | 청구 헤더와 품목 | 금액 원천 |
LIKP · LIPS | 납품 헤더와 품목 | 수량·포장 |
KNA1 | 고객 마스터 | 당사자 정보 |
| 출력 메시지 | 서류 출력 | 브라우저 인쇄로 대체 |
도입 시 확인이 필요한 부분
서류 양식은 거래처나 수입국이 요구하는 형식에 맞춰야 합니다. 신용장 거래면 신용장 조건과 한 글자도 다르면 안 되므로, 양식을 고정하기 전에 실제 요구 사항을 확인해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCSHIPDOC'
@EndUserText.label: '선적서류 (Z)'
define view Z_C_SHIPPING_DOCUMENT
as select from vbrk as BillHeader
inner join vbrp as BillItem on BillHeader.vbeln = BillItem.vbeln
left outer join kna1 as Buyer on BillHeader.kunag = Buyer.kunnr
left outer join kna1 as Consignee on BillHeader.kunrg = Consignee.kunnr
{
key BillHeader.vbeln as InvoiceNo,
key BillItem.posnr as ItemNo,
BillHeader.vkorg as SalesOrg,
BillHeader.fkdat as BillingDate,
BillHeader.kunag as Buyer,
Buyer.name1 as BuyerName,
Consignee.name1 as ConsigneeName,
BillItem.matnr,
BillItem.arktx as GoodsDescription,
BillItem.fkimg as Quantity,
BillItem.netwr as NetValue,
BillHeader.waerk as Currency
// 운송인과 포장 정보는 납품 문서(LIKP/LIPS)와 조인
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 · 선적 목록 · 양식 |
| 조회조건 | sap.m.Select · sap.m.DatePicker — 우측 끝에 조회 |
| 선적 목록 | sap.m.Table — 인보이스 단위 |
| 양식 미리보기 | 인쇄용 HTML 을 그대로 렌더링 |
| 인쇄 | 새 창 + A4 여백, 서류별 페이지 분리 |
| 이벤트 | onPAI 단일 진입점, fcCode 로 분기 |
같은 데이터로 여러 서류를 만드는 이유
인보이스와 패킹리스트를 따로 만들면 수량이나 품목명이 어긋나기 쉽습니다. 통관에서 두 서류를 대조하는데 다르면 통관이 지연됩니다. 같은 원천에서 양식만 바꿔 뽑으면 그런 불일치가 생기지 않습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — ko 로케일 · sap_horizon |
view/Main.view.xml | 조회조건 · 선적 목록 · 양식 |
controller/Main.controller.js | 조회 · 양식 렌더링 · 인쇄 |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 수량 · 통화 포맷터 |
localdata/Items.json | 선적 품목 |
localdata/SalesOrganization.json | 영업조직 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 인보이스 금액 = 품목 금액 합계 | 통과 |
| 인보이스와 패킹리스트 품목·수량 일치 | 통과 |
| 매수인·수하인이 모두 존재 | 통과 |
| 통화가 모든 금액에 표시 | 통과 |
| 거래처 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 통과 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
신용장 거래는 무엇이 다른가요?
서류 문구가 신용장 조건과 정확히 일치해야 합니다. 한 글자라도 다르면 은행에서 하자로 잡아 대금 지급이 지연됩니다.
매수인과 수하인이 같으면 둘 다 적어야 하나요?
적는 것이 원칙입니다. 서류 양식이 두 칸을 요구하며, 비워 두면 통관에서 보완 요청이 옵니다.
원산지증명서도 여기서 만드나요?
이 화면은 상업송장과 패킹리스트 기준입니다. 원산지증명서는 상공회의소 등 발급 기관을 거쳐야 해 별도 절차가 필요합니다.
SAP 표준 기능과 어떻게 이어지나요?
청구와 납품 데이터는 표준 SD 가 관리합니다. 이 화면은 그 데이터를 선적서류 양식으로 재구성해 서류 간 불일치를 없애는 확장입니다.