솔루션 홈
전표 조회

SAP 전표 LineItem 조회 — 한 줄에 53개 항목을 담는 이유

전표 라인 하나에 붙은 계정·거래처·원가·세목·조직·자재 정보를 한 줄로 펼쳐, 어떤 질문이 와도 화면을 바꾸지 않고 답하는 조회 화면입니다.

전표를 확인해 달라는 요청은 한 가지 모양으로 오지 않습니다. 어느 거래처인지, 어느 팀 비용인지, 세금계산서는 붙었는지, 취소된 건 아닌지가 그때그때 다르게 섞여 옵니다.

표준 화면은 질문마다 다른 조회 화면을 열어야 합니다. 그래서 이 앱은 방향을 반대로 잡았습니다. 라인 한 줄에 붙을 수 있는 정보를 모두 한 줄에 담고, 화면을 바꾸는 대신 열을 보는 방식입니다. SAP 표준 전표 구조를 그대로 이어받아 53개 항목을 한 줄로 펼치도록 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 2종을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 전표 키 — 회사코드 · 회계연도 · 전표번호 · 라인번호(bukrs · gjahr · belnr · buzei)
  • 헤더 필드 — 전표유형 · 증빙일 · 전기일 · 입력일시 · 등록자 · 헤더텍스트 · 참조번호를 표준명 그대로
  • 라인 필드 — 계정(hkont) · 차대(shkzg) · 거래통화금액(wrbtr) · 원화금액(dmbtr) · 적요(sgtxt)
  • 역분개 관계 — 취소전표(stblg) · 취소연도(stjah) 표준 필드로 원전표와 취소전표를 연결
  • 세목·조직 — 세금코드(mwskz) · 사업영역(gsber) · 기능영역(fkber) · 사업장(bupla) · 세무서(secco)
항목내용
업무 영역재무회계(FI) · 전표 라인 통합 조회
Namespacezui5.lineitem
셸 구조조회조건 영역(우측 조회·초기화) + 라인 테이블
화면 수조회 화면 1개
데이터전표 라인 98건 (53개 필드)
성격조회형(Read-Only) — 전기와 역분개는 표준 트랜잭션이 담당
UI 테마sap_horizon 단일 적용

실제 화면 1종 둘러보기

회사코드·기간·계정 등으로 조회하면 라인이 한 줄씩 펼쳐집니다 → 필요한 관점의 열을 골라 읽고 → 전표구분과 원전표/취소전표 열로 정상 전표인지 확인합니다.

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

Main.view.xml
초기 진입 화면 — 조회조건과 안내 메시지
초기 진입 화면 — 조회조건과 안내 메시지 — 조회 전에는 메시지스트립이 조건을 넣으라고 안내합니다. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있고, 입력필드에서 값을 바꾸거나 Enter 를 누르면 바로 조회됩니다. 조회 결과 화면에서는 같은 줄에 전표 키부터 자재·플랜트까지 이어지며, 좁은 화면에서는 우선순위가 낮은 열이 행 아래로 접힙니다.

조작 방법

  1. 회사코드회계연도를 넣고 기간을 지정합니다.
  2. 계정·거래처·코스트센터·세금코드 등 보조 조건으로 범위를 좁힙니다. 조건을 많이 걸수록 읽을 줄이 줄어듭니다.
  3. 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
  4. 전표구분 열로 정상·역분개·취소 전표를 구분합니다. 상태 색으로 먼저 눈에 들어옵니다.
  5. 원전표/취소전표 열로 짝이 되는 전표를 확인합니다.
  6. 결과는 CSV 다운로드로 내려받습니다. 53개 열이 그대로 담기고 UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.

전표구분 판정 규칙

같은 라인이라도 그것이 정상 전기인지, 무언가를 되돌린 것인지에 따라 읽는 방법이 달라집니다.

취소전표(stblg) 가 비어 있고 취소 표시도 없으면   →  정상
취소전표(stblg) 에 값이 있으면                    →  역분개됨 (이 전표가 취소당함)
xreversal 표시가 있으면                           →  취소전표 (다른 전표를 취소한 전표)

원화환산 검증  dmbtr = wrbtr × kursf

역분개 관계를 같은 줄에 두는 이유

금액이 맞지 않는다는 문의는 대개 취소된 전표를 함께 세었기 때문입니다. 취소 여부와 짝 전표 번호가 같은 줄에 있으면 "이 건은 10월에 취소됐습니다" 로 답이 끝납니다. 별도 화면에서 다시 조회하지 않아도 되도록 stblg·stjah 를 결과 열에 그대로 뒀습니다.

53개 항목의 여섯 묶음

열이 많아 보이지만 성격은 여섯 갈래뿐입니다. 어떤 질문이 오느냐에 따라 보는 묶음이 달라집니다.

묶음주요 항목답하는 질문
전표 키·헤더회사코드 · 연도 · 전표번호 · 라인 · 전표유형 · 증빙일 · 전기일 · 입력일시 · 등록자 · 헤더텍스트전표 식별
금액통화 · 환율 · 거래통화금액 · 원화금액 · 차대금액 확인
계정·적요G/L 계정 · 계정명 · 적요무슨 계정으로 갔는가
거래처공급업체 · 고객 · 사업자번호 · 결제조건 · 지급방법 · 은행누구와 거래했는가
원가·조직코스트센터 · 내부오더 · 사업영역 · 기능영역 · 사업장 · 세무서어디에 귀속되는가
세목·자재세금코드 · 세금코드명 · 자재 · 자재명 · 플랜트세무·물류 연결
역분개원전표 · 취소전표 · 취소연도 · 취소 표시살아 있는 전표인가

조회조건

조회조건은 결과 열과 같은 축으로 구성해, 보고 싶은 관점을 그대로 조건으로 넣을 수 있게 했습니다.

필드필수설명
회사코드 bukrs필수대상 회사코드
회계연도 gjahr필수대상 회계연도
전기일 budat선택기간 From~To
전표유형 blart선택SA · KR · DR · KZ · DZ 등
G/L 계정 hkont선택계정 범위
거래처 lifnr · kunnr선택공급업체 · 고객
코스트센터 kostl · 오더 aufnr선택원가 귀속처
세금코드 mwskz선택세목별 조회

결과 컬럼

컬럼의미 · 표시
전표번호/항목회사코드·연도와 함께 전표를 식별하는 4단 키
전표유형 · 전기일자 · 증빙일자코드와 텍스트를 함께 표시
G/L 계정계정코드와 명칭
차대 · 통화 · 금액 · 금액(원화)차변/대변 구분, 거래통화 금액과 원화환산 금액
적요 · 헤더텍스트라인 적요와 전표 헤더 텍스트
거래처/고객코드 · 명칭 · 사업자번호
코스트센터 · 내부오더원가 귀속처와 명칭
세목세금코드와 명칭
사업영역/기능영역/사업장조직 귀속 정보
자재/플랜트물류 연결 정보
사용자 · 입력일시누가 언제 입력했는지
전표구분정상 / 역분개됨 / 취소전표 — 상태 색으로 구분
원전표/취소전표역분개 짝 전표 번호와 연도

SAP 표준 기능 매핑

전표는 표준 전기가 만듭니다. 이 화면은 헤더와 라인, 마스터 텍스트를 한 줄로 합쳐 보여 주는 조회 전용 확장입니다.

표준역할이 화면에서의 확장
BKPF전표 헤더 — 전표유형 · 일자 · 입력일시 · 등록자 · 헤더텍스트 · 참조번호라인마다 헤더 정보를 붙여 한 줄로 완결
BSEG전표 라인 — 계정 · 차대 · 금액 · 적요 · 원가귀속 · 세금코드결과 열의 뼈대
ACDOCA유니버설 저널 (S/4HANA)조회 원천을 표준 CDS 로 교체 가능
LFA1 · KNA1공급업체 · 고객 마스터코드 옆에 명칭·사업자번호 표시
CSKS · AUFK코스트센터 · 내부오더원가 귀속처 명칭
T007S세금코드 텍스트세목 명칭 표시
FB03 관점전표 조회한 건씩 열지 않고 조건으로 묶어 조회

도입 시 확인이 필요한 부분

53개 항목 중 회사에서 실제로 쓰지 않는 필드가 있습니다. 기능영역이나 세무서 코드를 운영하지 않으면 그 열은 비어 보이므로 도입 시 사용 필드를 정리해 제외하는 편이 읽기에 좋습니다. S/4HANA 환경이면 BSEG 직접 조회보다 ACDOCA 기반 CDS 가 성능상 유리합니다.

참고 CDS 뷰

운영 서비스로 연결할 때는 헤더·라인에 마스터 명칭을 붙이고 역분개 구분을 계산한 뷰를 제안합니다.

@AbapCatalog.sqlViewName: 'ZCLINEITEM'
@EndUserText.label: '전표 LineItem 통합 조회 (Z)'
define view Z_C_DOCUMENT_LINE_ITEM
  as select from bseg as Line
    inner join      bkpf as Header   on  Line.bukrs = Header.bukrs
                                     and Line.belnr = Header.belnr
                                     and Line.gjahr = Header.gjahr
    left outer join lfa1 as Vendor   on  Line.lifnr = Vendor.lifnr
    left outer join kna1 as Customer on  Line.kunnr = Customer.kunnr
    left outer join cskt as CCtrText on  Line.kostl = CCtrText.kostl
                                     and CCtrText.spras = 'K'
{
  key Line.bukrs, key Line.gjahr, key Line.belnr, key Line.buzei,
      Header.blart, Header.bldat, Header.budat, Header.usnam, Header.bktxt,
      Header.stblg, Header.stjah,
      Line.hkont, Line.shkzg, Line.waers, Line.wrbtr, Line.dmbtr, Line.sgtxt,
      Line.kostl, CCtrText.ktext as KostlTx,
      Line.aufnr, Line.mwskz, Line.gsber, Line.bupla, Line.matnr, Line.werks,
      Vendor.name1  as LifnrTx,
      Customer.name1 as KunnrTx,
      // 전표구분 — 취소전표 유무로 판정
      case when Header.stblg <> '' then 'REVERSED' else 'NORMAL' end as DocStatus
}

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 릴리즈와 사용 필드 범위에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · 라인 테이블
조회조건sap.m.Input · sap.m.Select · sap.m.DatePicker — 우측 끝에 조회·초기화
결과 테이블sap.m.Table — 열이 많아 popin 반응형, growing 적용
전표구분sap.m.ObjectStatus — 정상 / 역분개됨 / 취소전표
안내 메시지sap.m.MessageStrip — 조회 전 안내와 조건 오류
이벤트모든 버튼이 onPAI 단일 진입점, fcCode 로 분기

열을 줄이지 않고 접은 이유

열을 줄이면 화면은 깔끔해지지만, 빠진 열이 필요한 순간 다른 화면을 찾게 됩니다. popin 반응형은 좁은 화면에서 우선순위가 낮은 열을 행 아래로 내려 한 줄을 여러 줄로 펼칩니다. 가로 스크롤 없이 같은 정보를 볼 수 있어, 열을 많이 두어도 읽는 부담이 크게 늘지 않습니다.

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon
Component.js조회조건 모델 · 결과 모델 초기화
manifest.json앱 디스크립터 — 앱 ID(zui5.lineitem) · ko 로케일
view/Main.view.xml조회조건과 라인 테이블
controller/Main.controller.js조회 · 전표구분 판정 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
model/formatter.js금액 · 일자 · 차대 · 전표구분 포맷터
i18n/i18n_ko.propertiesko 로케일 리소스
localdata/lineitem.json전표 라인 98건 (53개 필드)

운영 전환 시에는 ModelMock 내부만 실제 서비스 호출로 바꾸면 화면 로직은 그대로 씁니다.

검증 결과

검증 항목결과
전표 키(회사코드+연도+전표번호+라인) 중복 없음통과
원화환산 = 거래통화금액 × 환율통과
코드가 있는 항목은 명칭도 존재 (계정 · 거래처 · 코스트센터 · 세금코드)통과
취소전표가 있으면 취소연도도 존재통과
전표구분 = 취소 정보 재판정값과 일치통과
XML · JSON 전체 파싱오류 0건
화면 렌더링 — 실브라우저 조회 후 캡처통과
테마 런타임 확인sap_horizon

회사코드·거래처·금액은 모두 검증용 데이터입니다.

자주 묻는 질문

열이 53개나 필요한가요?

한 번에 다 보지는 않습니다. 다만 어떤 질문이 오느냐에 따라 필요한 열이 매번 달라서, 미리 줄이면 그때마다 다른 화면을 찾게 됩니다. 좁은 화면에서는 우선순위가 낮은 열이 접히므로 읽는 부담은 크지 않습니다.

취소된 전표도 결과에 나오나요?

나옵니다. 대신 전표구분 열에서 역분개됨으로 구분되고 짝이 되는 취소전표 번호가 같은 줄에 표시됩니다. 합계를 낼 때 취소 건을 빼야 하는지 판단할 수 있도록 감추지 않고 표시합니다.

기능영역이나 세무서 코드를 안 쓰면 어떻게 되나요?

해당 열이 비어 보입니다. 운영하지 않는 필드는 도입 시 목록에서 제외하는 편이 읽기에 좋아, 사용 필드 정리를 먼저 하는 것을 권합니다.

SAP 표준 기능과 어떻게 이어지나요?

전표 전기와 역분개는 표준 트랜잭션이 담당하고 데이터도 표준 구조 그대로입니다. FB03 으로 한 건씩 열던 확인을 조건으로 묶어 조회하고, 헤더·라인·마스터를 한 줄로 합쳐 보여 주는 것이 이 화면의 역할입니다.

전표 확인 요청, 지금 쓰는 SAP 위에서 확장해 보세요

질문이 올 때마다 다른 화면을 여는 대신 한 화면에서 답할 수 있으면 확인에 쓰는 시간이 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

전표 조회LineItemBSEGBKPF역분개세목OpenUI5