솔루션 홈
고정자산

SAP 고정자산 이관 — 취득·상각 이력까지 한 번에 옮기기

기존 시스템의 자산 대장을 엑셀로 받아 점검하고, 이전년도·금년·손상차손 구분에 맞춰 BAPI 파라미터를 구성해 생성하는 화면입니다.

시스템을 새로 여는 날, 고정자산은 잔액만 옮겨서는 안 되는 자산입니다.

취득가액과 그동안 쌓인 감가상각 누계, 올해 이미 반영한 비용까지 함께 넘어가야 새 시스템에서 상각이 이어집니다. 그런데 이 세 값은 넣는 방식이 서로 다릅니다. 작년까지 끝난 자산은 상각영역만 지정하면 되고, 올해 취득한 자산은 취득 트랜잭션을 만들어야 하며, 손상이 있었다면 누계·기표 값을 부호를 뒤집어 넣어야 합니다. 이 화면은 처리 구분을 고르면 그에 맞는 BAPI 파라미터를 구성해 넘기고, 무엇이 들어가는지 미리 보여 줍니다.

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

  • 생성 처리 — BAPI_FIXEDASSET_OVRTAKE_CREATE 호출 후 BAPI_TRANSACTION_COMMIT
  • 양식 구조 — ZFIS027 필드(ANLKL · DESCRIPT · CAP_DATE · ACQ_VALUE · ORD_DEP1 · ORD_DEP2) 그대로
  • 차량 자산 — 자산클래스 3000 은 timedependentdata-plate_no 에 차량번호
  • 양식 배포 — WWWDATA 에 저장된 업로드 양식을 내려받아 사용
항목내용
업무 영역재무회계(FI-AA) · 자산 마스터 이관
Namespacezui5.assetmig
셸 구조실행조건 영역(우측 저장) + 자산 목록 + BAPI 파라미터 미리보기
화면 수조회·실행 화면 1개 + 파라미터 패널
데이터자산 28건 (정상 21 · 에러 7) · 자산클래스 6종
성격등록형 — 자산 생성은 표준 BAPI 가 수행
UI 테마sap_horizon 단일 적용

실제 화면 10종 둘러보기

양식을 업로드하면 자산마다 상태가 붙습니다 → 자산을 눌러 BAPI 파라미터를 확인하고 → 생성대상 선택저장합니다.

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

Main.view.xml
초기 화면 — 회사코드·파일·처리 구분
초기 화면 — 회사코드·파일·처리 구분 — 회사코드와 파일 경로를 넣고 이전년도·금년·손상차손 중 하나를 고릅니다. 고른 구분의 파라미터 설명이 라디오 옆에 바로 표시됩니다.
업로드 점검
양식 업로드 — 자산별 점검
양식 업로드 — 자산별 점검 — 올리는 즉시 자산마다 점검이 돌고 작업전과 에러로 나뉩니다. 자산클래스·내역·자본화일자·코스트센터가 한 줄로 이어집니다.
금액 컬럼
취득액·누계액·비용과 장부가
취득액·누계액·비용과 장부가 — 양식의 세 금액에 더해 장부가(취득액 − 누계액)와 상각률을 계산해 보여 줍니다. 상각률이 90%를 넘으면 붉게 표시해 이관 전에 확인하도록 했습니다.
이전년도 파라미터
이전년도 — 상각영역만 지정
이전년도 — 상각영역만 지정 — 자산을 고르면 그 구분으로 만들어질 BAPI 파라미터가 펼쳐집니다. 이전년도는 depreciationareas-area 만 넘깁니다.
손상차손 파라미터
손상차손 — 누계·기표 값 부호 반전
손상차손 — 누계·기표 값 부호 반전 — 같은 자산도 구분을 바꾸면 파라미터가 달라집니다. 손상차손은 cumulatedvalues 와 postedvalues 를 구성하며, 누계액과 비용은 마이너스로 넘어갑니다.
에러 목록
에러만 보기 — 반려된 자산
에러만 보기 — 반려된 자산 — 점검에 걸린 자산만 남깁니다. 미정의 클래스, 내역 누락, 날짜·금액 형식, 차량번호 누락 등 사유가 메시지에 표시됩니다.
생성대상 선택
생성대상 선택 — 작업전만
생성대상 선택 — 작업전만 — 버튼 하나로 생성 가능한 자산만 고릅니다. 에러 자산은 선택에서 빠집니다.
생성 확인
생성 확인 — 건수·취득액·구분
생성 확인 — 건수·취득액·구분 — 사양서대로 생성 여부를 팝업으로 확인합니다. 어떤 구분으로 몇 건, 얼마가 들어가는지 파라미터 설명과 함께 보여 줍니다.
생성 결과
생성 완료 — COMMIT 까지
생성 완료 — COMMIT 까지 — BAPI 호출 후 COMMIT 수행 결과를 알려 주고, 차량 자산이 몇 건 포함됐는지도 함께 표시합니다.
자산번호
자산번호와 메시지 3종
자산번호와 메시지 3종 — 생성된 자산번호와 BAPI_MTYPE, 사양서의 메시지1·2·3 필드가 채워집니다. 자산번호로 표준 조회 화면에서 바로 확인할 수 있습니다.

조작 방법

  1. Excel Format Download로 양식을 받아 자산 대장을 옮겨 적습니다.
  2. 회사코드를 넣고 파일 업로드로 양식을 올리면 자산마다 점검이 돌고 상태가 표시됩니다.
  3. 처리 구분을 고릅니다. 라디오 옆에 그 구분이 어떤 파라미터를 쓰는지 설명이 나옵니다.
  4. 자산을 클릭하면 아래에 BAPI 파라미터 미리보기가 열립니다. 구분을 바꿔 가며 비교해 봅니다.
  5. 생성대상 선택으로 작업전 자산만 고른 뒤 저장을 누르면 확인 팝업을 거쳐 생성됩니다.
  6. 에러만 보기로 반려된 자산을 추려 메시지대로 고친 뒤 다시 올립니다.

구분별 BAPI 파라미터와 점검

구분에 따라 파라미터가 달라지고, 점검은 업로드 시점에 한 번에 끝냅니다.

처리 구분별 BAPI 파라미터 (BAPI_FIXEDASSET_OVRTAKE_CREATE)

  이전년도   depreciationareas-area  = '01'
             depreciationareasx-area = '01'

  금년       transactions-current_no = '0001'
             transactions-area       = '01'
             transactions-valuedate  = 자본화일자
             transactions-assettrtyp = '100'
             transactions-amount     = 취득액
             transactions-fisc_year  = 시스템 연도

  손상차손   cumulatedvalues-fisc_year = 시스템 연도
             cumulatedvalues-area      = '1'
             cumulatedvalues-acq_value = 취득액
             cumulatedvalues-unp_dep   = 누계액 × (−1)
             postedvalues-area         = '1'
             postedvalues-unp_dep      = 비용  × (−1)
             postedvalues-fisc_year    = 시스템 연도

  공통       자산클래스 3000 → timedependentdata-plate_no = 차량번호
             통화는 KRW 고정
항목산식 · 규칙
E01 자산클래스정의되지 않은 클래스면 반려
E02 내역DESCRIPT 가 비어 있으면 반려
E03 자본화일자8자리 날짜가 아니면 반려
E04 취득액0 이거나 숫자가 아니면 반려
E05 코스트센터등록되지 않은 코스트센터면 반려
E06 차량번호자산클래스 3000 전용 — 차량번호가 없으면 반려
E07 누계액취득액을 초과하면 반려

파라미터를 미리 보여 주는 이유

BAPI 호출은 성공하면 되돌리기 어렵습니다. 특히 자산은 생성 후 삭제가 까다로워, 잘못된 구분으로 수백 건을 넣으면 정리에 며칠이 걸립니다. 그래서 저장 전에 그 자산이 어떤 파라미터로 들어갈지 눈으로 확인할 수 있게 했습니다. 구분을 바꿔 가며 비교해 보면 어느 쪽이 맞는지 판단이 빨라집니다.

처리 구분 3종

자산이 언제 취득됐고 손상이 있었는지에 따라 BAPI 에 넣는 구조가 달라집니다.

처리 구분대상 자산사용 구조특징
이전년도작년까지 취득과 상각이 끝난 자산depreciationareas상각영역만 지정하고 잔액은 별도 이관
금년올해 취득한 자산transactions취득 트랜잭션(유형 100)을 만들어 취득액 반영
손상차손손상이 반영된 자산cumulatedvalues · postedvalues누계·비용을 부호 반전해 전달

구분을 먼저 고르게 한 덕분에 잘못된 구조로 자산이 들어가는 사고를 막습니다.

실행 조건

필드필수설명
Company code필수자산을 생성할 회사코드
File name필수업로드 양식 경로. 기본 c:\
처리 구분필수이전년도 / 금년 / 손상차손 — BAPI 파라미터가 달라짐
생성대상 선택보조작업전 자산만 한 번에 선택
에러만 보기보조반려된 자산만 추려 보기

결과 컬럼

컬럼의미 · 표시
처리결과작업전 / 생성완료 / 에러
번호양식의 행 번호
자산클래스 · 내역자산 구분과 이름
이전자산번호기존 시스템의 자산 키. 이관 추적 기준
자본화일자 · 코스트센터 · 오더번호취득 시점과 원가 귀속처
취득액 · 누계액 · 비용양식의 세 금액
장부가 · 상각률취득액 − 누계액, 누계액 ÷ 취득액 (계산값)
차량번호자산클래스 3000 에만 입력
자산번호 · MTYPE생성된 SAP 자산번호와 BAPI 메시지 유형
메시지1·2·3생성 결과, 호출 BAPI, COMMIT 수행 내역

보조 기능

컬럼의미 · 표시
BAPI 파라미터 미리보기자산을 고르면 그 구분으로 구성될 파라미터를 펼쳐 표시
구분 전환같은 자산도 구분을 바꾸면 파라미터가 달라짐
에러 자산파라미터를 구성하지 않고 안내

SAP 표준 기능 매핑

자산 생성은 표준 BAPI 가 수행합니다. 이 화면은 앞단에서 걸러 내고 구분에 맞는 파라미터를 구성합니다.

표준역할이 화면에서의 확장
BAPI_FIXEDASSET_OVRTAKE_CREATE자산 이관 생성 BAPI구분별 파라미터를 구성해 호출
BAPI_TRANSACTION_COMMIT커밋생성 성공 시 수행
AS91 관점자산 이관 단건 등록화면 입력 대신 양식으로 대체
AS03 관점자산 조회반환된 자산번호로 결과 확인
WWWDATA양식 저장소업로드 양식 배포
AW01N 관점자산 explorer이관 후 상각 계산 확인

운영 데이터 소스 매핑

항목SAP 원천비고
업로드 구조ZFIS027자산클래스 · 내역 · 이전자산번호 · 자본화일자 · 금액 3종
자산클래스ANLA-ANLKL클래스별 상각 규칙 결정
차량 정보timedependentdata-plate_no자산클래스 3000 에만 사용
회계연도시스템 연도transactions · cumulatedvalues · postedvalues 에 공통 적용
통화KRW 고정사양서 지정

도입 시 확인이 필요한 부분

상각영역 구성이 회사마다 다릅니다. 사양서는 영역 '01' 과 '1' 을 쓰지만, 세무·관리 영역을 함께 이관하려면 영역별로 값을 따로 넘겨야 합니다. 자산클래스별 번호범위와 상각키, 이관 기준일(전기이월 시점)도 재무팀과 먼저 확정한 뒤 양식 구성에 반영해야 합니다.

참고 CDS 뷰

이관 결과를 원장과 대조할 때는 자산 마스터와 평가값을 묶은 뷰가 편합니다.

@AbapCatalog.sqlViewName: 'ZCASSETMIG'
@EndUserText.label: '자산 이관 결과 (Z)'
define view Z_C_ASSET_MIGRATION
  as select from anla as Master
    left outer join anlc as Values_ on  Master.bukrs = Values_.bukrs
                                    and Master.anln1 = Values_.anln1
                                    and Master.anln2 = Values_.anln2
    left outer join anlz as TimeDep on  Master.bukrs = TimeDep.bukrs
                                    and Master.anln1 = TimeDep.anln1
{
  key Master.bukrs     as Bukrs,
  key Master.anln1     as AssetNo,
  key Master.anln2     as SubNo,
      Master.anlkl     as AssetClass,
      Master.txt50     as Description,
      Master.aktiv     as CapitalizedOn,
      Master.invnr     as LegacyAssetNo,
      TimedDep.kostl   as CostCenter,
      TimeDep.kfzkz    as PlateNo,
      Values_.kansw    as AcquisitionValue,
      Values_.knafa    as AccumDepreciation,
      Values_.nafag    as CurrentYearDep,
      // 장부가 = 취득액 - 상각누계
      Values_.kansw + Values_.knafa as NetBookValue
}

이관 결과를 확인하거나 원장과 대조할 때 쓰는 참고용 설계입니다. 생성은 표준 BAPI 가 담당합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 실행조건 영역 · 자산 목록 · 파라미터 패널
실행조건sap.m.Input · sap.m.RadioButtonGroup — 우측 끝에 저장
자산 목록sap.ui.table.Table — 다중선택, 처리결과·번호·클래스 3컬럼 고정
상태 표시sap.m.ObjectStatus + 아이콘 · RowSettings.highlight
파라미터 미리보기cellClicksap.m.List 로 구성 항목 나열
상각률 강조계산값을 ObjectStatus 색으로 표시
CSVBlob + UTF-8 BOM — 양식 · 결과 2종

장부가와 상각률을 계산해 보여 주는 이유

양식에는 취득액·누계액·비용 세 값만 있습니다. 그런데 이관 전에 확인해야 할 것은 '이 자산이 지금 얼마짜리인가'입니다. 장부가와 상각률을 화면에서 계산해 주면 누계액이 잘못 들어간 자산이나 이미 상각이 끝난 자산을 목록에서 바로 짚을 수 있습니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — 앱 ID(zui5.assetmig) · ko 로케일 · sap_horizon
Component.js실행조건 모델 · 결과 모델 초기화
view/Main.view.xml실행조건 + 자산 목록 + 파라미터 패널
controller/Main.controller.js양식 다운로드 · 업로드 점검 · 구분 전환 · 생성 · CSV
model/ModelMock.js점검 7종 · 구분별 BAPI 파라미터 구성 · 생성 시뮬레이션
model/formatter.js상태 · 금액 · 일자 · 장부가 · 상각률 · 자산번호 포맷터
i18n/i18n_ko.propertiesko 로케일 리소스 — 오류 메시지 포함
localdata/assetmig.json자산 이관 양식 샘플 (정상·에러 혼재)

검증 결과

화면 구성에 쓴 데이터는 클래스별 자산과 점검에 걸리는 자산을 섞어 만든 이관 양식입니다.

데이터규모구성
업로드 자산28건클래스 6종 (정상 21 · 에러 7)
금액취득 9,589,000,000원누계 3,032,640,000 · 장부가 6,556,360,000
처리 구분 · 점검3종 · 7종이전년도·금년·손상차손 / 클래스·내역·일자·금액·CC·차량·누계
검증 항목결과
정상 라인의 자산클래스가 정의 목록에 존재 · 명칭 일치통과
정상 라인은 내역 보유 · 자본화일자 8자리통과
취득액 > 0 · 통화 KRW · 코스트센터 등록 확인통과
자산클래스 3000 은 차량번호 보유, 그 외는 없음통과
누계액 ≤ 취득액 · 음수 아님통과
토지(1000)는 감가상각 누계·비용이 0통과
자본화일자가 시스템 연도 이전통과
이전자산번호 중복 없음 · 라인번호 연속통과
E01~E07 각 에러가 실제 위반 조건과 일치통과
화면 렌더링 — 업로드 → 파라미터 2종 → 에러 → 선택 → 생성10/10

자산 내역·금액은 모두 검증용 데이터입니다.

자주 묻는 질문

처리 구분을 왜 셋으로 나눴나요?

자산이 어느 시점에 취득됐고 손상이 있었는지에 따라 BAPI 에 넣어야 할 구조가 다르기 때문입니다. 작년까지 끝난 자산에 취득 트랜잭션을 만들면 올해 취득한 것으로 잡히고, 손상 자산에 누계값을 안 넣으면 상각이 처음부터 다시 계산됩니다. 구분을 먼저 고르게 해 잘못된 구조로 들어가는 것을 막았습니다.

누계액과 비용을 왜 마이너스로 넘기나요?

사양서에 지정된 규칙이자 BAPI 의 값 체계입니다. 감가상각 누계는 자산 가치를 줄이는 값이라 부호를 반대로 전달해야 장부가가 취득액에서 차감되는 형태로 잡힙니다. 화면에서는 양수로 보이지만 파라미터 미리보기에서 실제 넘어가는 값을 확인할 수 있습니다.

자산클래스 3000 만 차량번호를 요구하는 이유는?

차량운반구는 시간종속 데이터에 차량번호를 담도록 사양서에 명시돼 있습니다. 다른 클래스에는 해당 필드가 없어 넣어도 반영되지 않습니다. 그래서 3000 인데 차량번호가 비면 업로드 단계에서 반려합니다.

상각률은 어디에 쓰나요?

이관 전에 이상한 자산을 골라내는 데 씁니다. 상각률이 90%를 넘으면 거의 상각이 끝난 자산이라 이관 대상인지 폐기 대상인지 확인이 필요하고, 0%인데 자본화가 오래된 자산은 누계액이 빠졌을 가능성이 있습니다. 양식에는 없는 계산값이지만 화면에서 보여 줍니다.

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

자산 생성은 BAPI_FIXEDASSET_OVRTAKE_CREATE 가 수행하고 커밋까지 표준 흐름을 따릅니다. 데이터도 ANLA·ANLC 등 표준 구조에 그대로 남습니다. 이 화면은 양식을 점검해 통과한 건만 넘기고, 구분에 맞는 파라미터를 구성하며, 반환된 자산번호와 메시지를 정리하는 역할을 합니다.

고정자산 이관, 지금 쓰는 SAP 위에서 확장해 보세요

구분에 맞는 파라미터로 한 번에 넣고 무엇이 들어가는지 미리 확인하면, 이관 후 정리 작업이 크게 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

고정자산자산 이관MigrationOVRTAKE_CREATE감가상각FI-AAOpenUI5