SAP 고정자산 이동내역 — 번호가 바뀐 이동과 자리만 옮긴 이동
자산이 사업영역을 넘어갔는지 같은 영역 안에서 부서만 바뀌었는지를 가르고, 이동 전후를 나란히 보여 주는 화면입니다.
자산이 옮겨졌다고 할 때 SAP 안에서는 두 가지 전혀 다른 일이 벌어집니다.
사업영역을 넘어가면 기존 자산이 폐기되고 새 자산번호가 생깁니다. 전표도 함께 생깁니다. 반면 같은 영역 안에서 부서만 바뀌면 자산번호는 그대로 두고 귀속 정보의 유효기간만 끊어 새 줄을 답니다. 전표도 생기지 않습니다. 둘을 같은 목록에 섞어 놓으면 왜 어떤 건은 번호가 바뀌고 어떤 건은 그대로인지 설명할 수 없습니다. 이 화면은 두 유형을 먼저 가르고, 무엇이 바뀌었는지를 이동 전후로 나란히 보여 줍니다.
SAP 표준 구조를 그대로 이어받은 부분
- 자산 마스터 —
ANLA(원자산AIBN1· 취득일ZUGDT) - 귀속 정보 —
ANLZ(사업영역GSBER· 코스트센터KOSTL· 유효일자BDATU) - 이동 전표 —
ANEK·BKPF의 T-codeABUMN· Trans.TypeUMZ1 - 텍스트 — 사업영역(
TGSBT) · 코스트센터(CSKT)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI-AA) · 자산 이동 추적 |
| Namespace | zui5.assetmove |
| 셸 구조 | 조회조건 영역(우측 조회) + 이동내역 목록, 전후 비교 패널 |
| 화면 수 | 조회 화면 1개 + 전후 비교 |
| 데이터 | 이동내역 16건 (BA 간 9 · BA 내 7) · 사업영역 5곳 |
| 성격 | 조회형(Read-Only) — 이동 처리는 표준 트랜잭션이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 8종 둘러보기
조회하면 이동 유형이 먼저 보입니다 → 변경 표시로 무엇이 달라졌는지 훑고 → 라인을 눌러 전후 비교를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- Company Code 와 Transfer date 를 넣습니다. 둘 다 필수입니다.
- 자산번호·자산클래스·자산명으로 범위를 좁힐 수 있습니다.
- 목록에서 이동유형을 먼저 봅니다. BA 간 이동은 번호가 바뀌고 전표가 있습니다.
- BA 변경 · CC 변경 표시로 무엇이 달라졌는지 훑습니다.
- 라인을 고르면 아래에 이동 전후 비교가 열립니다. 바뀐 항목만 나옵니다.
- 자산번호를 누르면 자산 조회로, 전표번호를 누르면 전표 조회로 넘어갑니다.
이동 유형 판정 규칙
사양서가 지정한 필드 조합으로 두 유형을 가릅니다.
이동 유형 판정
BA 간 이동 (사업영역 간)
ANLA-AIBN1 (원자산) 이 있고
ANLA-ZUGDT (자산가치일) 이 조회 기간 안이며
ANLZ-BDATU (유효일자) 가 99991231 이고
전표의 TCODE 가 'ABUMN'
G/L Trans.Type (VORGN) 이 'UMZ1' 인 건
→ 기존 자산 폐기 + 신규 자산 생성이므로 자산번호가 바뀐다
→ 전표가 함께 생성된다
BA 내 이동 (사업영역 내 · 코스트센터 변경)
같은 자산번호로 ANLZ 에 유효기간을 끊어
새 라인이 생성된 건
→ 자산번호는 그대로, 코스트센터만 바뀐다
→ 전표는 생성되지 않는다
※ 최초 취득 건은 이동이 아니므로 목록에서 제외| 항목 | 산식 · 규칙 |
|---|---|
원자산 AIBN1 | 값이 있으면 이동으로 생긴 자산 |
자산가치일 ZUGDT | 이동 시점. 조회 기간의 기준 |
유효일자 BDATU | 현재 유효한 귀속 라인은 99991231 |
| T-code · Trans.Type | ABUMN · UMZ1 조합이면 사업영역 간 이동 |
| 자산번호 변화 | 바뀌면 BA 간, 같으면 BA 내 |
유효종료일 DATBI | BA 내 이동은 이전 라인이 이동 전날로 끊김 |
| 전표 생성 | BA 간만 생성, BA 내는 없음 |
두 유형을 한 목록에 두되 먼저 가르는 이유
담당자는 '이 자산이 언제 어디로 갔나'를 묻지, 전표가 생겼는지를 먼저 묻지 않습니다. 그래서 두 유형을 함께 보여 주되 첫 칸에서 유형을 갈라 둡니다. 번호가 바뀐 이유나 전표가 없는 이유를 따로 설명하지 않아도 목록만 보면 납득됩니다.
이동 유형 2종
같은 '이동'이지만 SAP 안에서 벌어지는 일은 전혀 다릅니다.
| 이동 유형 | 조건 | 처리 방식 | 결과 |
|---|---|---|---|
| BA 간 이동 | 사업영역이 바뀜 | 폐기 + 신규 생성 | 자산번호 변경 · 전표 생성 · 이동금액 발생 |
| BA 내 이동 | 같은 사업영역 안에서 부서만 | ANLZ 유효기간 분리 | 자산번호 유지 · 전표 없음 · 코스트센터만 변경 |
유형이 첫 칸에서 갈리므로 번호가 바뀐 이유도 전표가 없는 이유도 따로 설명할 필요가 없습니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| Company Code | 필수 | 기본값은 사용자 소속 회사코드, 수정 가능 |
| Transfer date | 필수 | 이동 시점 기간 |
| Asset Number · Asset Class · Asset Text | 선택 | 자산 단위로 좁히는 조건 |
| 이동 유형 | 선택 | 전체 / BA 간 / BA 내 — 화면 확장 항목 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 이동유형 | BA 간 / BA 내 — 색으로 구분 |
| Asset · Description · Class | 이동 후 자산 정보 |
| Business Area · Cost Center | 이동 후 귀속 정보 |
| Acquisition Date | 이동 시점(자산가치일) |
| Original Asset · Origin.Descrip | 원자산 번호와 명칭 |
| Original BA · Original CC | 이동 전 귀속 정보 |
| BA 변경 · CC 변경 | 무엇이 바뀌었는지 표시 |
| 전표번호 · T-code | BA 간 이동의 전표와 트랜잭션 |
| 이동금액 · 유효종료일 | 이동 금액과 이전 라인 종료일 |
보조 기능
| 컬럼 | 의미 · 표시 |
|---|---|
| 이동 전후 비교 | 라인을 고르면 바뀐 항목만 추려 좌우로 표시 |
| 자산번호 클릭 | 자산 조회 화면으로 이동 |
| 전표번호 클릭 | 전표 조회 화면으로 이동 (BA 간 이동만) |
SAP 표준 기능 매핑
이동 처리는 표준 트랜잭션이 담당합니다. 이 화면은 그 자취를 읽어 유형별로 정리합니다.
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
ABUMN | 자산 내 대체 | 사업영역 간 이동을 만드는 표준 트랜잭션 |
AS02 | 자산 변경 | 코스트센터 변경으로 BA 내 이동 발생 |
AS03 | 자산 조회 | 자산번호 클릭 시 이동 |
FB03 | 전표 조회 | 전표번호 클릭 시 이동 |
AR01 관점 | 자산 대장 | 현재 귀속만 보이므로 이동 이력은 이 화면에서 |
ANLZ | 시간종속 배정 | 유효기간으로 귀속 변경 이력을 남김 |
운영 데이터 소스 매핑
| 항목 | SAP 원천 | 비고 |
|---|---|---|
| 자산 마스터 | ANLA | AIBN1 · ZUGDT · ANLKL · TXT50 |
| 시간종속 배정 | ANLZ | GSBER · KOSTL · BDATU · DATBI |
| 전표 헤더 | ANEK · BKPF | BELNR · TCODE · VORGN |
| 사업영역 텍스트 | TGSBT | 사업영역 명칭 |
| 코스트센터 텍스트 | CSKT | 코스트센터 명칭 |
도입 시 확인이 필요한 부분
사업영역을 쓰지 않고 이익센터나 세그먼트로 조직을 가르는 회사도 있습니다. 그 경우 판정 기준 필드를 바꿔야 하고, 이동 트랜잭션도 ABUMN 외에 ABUMN 변형이나 자산 이관 프로그램이 쓰일 수 있습니다. 대상 Trans.Type 목록을 설정으로 빼 두면 확장이 쉽습니다.
참고 CDS 뷰
이동내역을 조회할 때는 자산 마스터에 귀속 정보와 원자산을 붙인 뷰가 편합니다.
@AbapCatalog.sqlViewName: 'ZCASSETMOV'
@EndUserText.label: '고정자산 이동내역 (Z)'
define view Z_C_ASSET_MOVEMENT
as select from anla as Asset
inner join anlz as TimeDep on Asset.bukrs = TimeDep.bukrs
and Asset.anln1 = TimeDep.anln1
and Asset.anln2 = TimeDep.anln2
left outer join anla as OrigAsset on Asset.bukrs = OrigAsset.bukrs
and Asset.aibn1 = OrigAsset.anln1
left outer join anek as DocHeader on Asset.bukrs = DocHeader.bukrs
and Asset.anln1 = DocHeader.anln1
left outer join tgsbt as BaText on TimeDep.gsber = BaText.gsber
and BaText.spras = 'K'
{
key Asset.bukrs as Bukrs,
key Asset.anln1 as AssetNo,
key Asset.anln2 as SubNo,
Asset.anlkl as AssetClass,
Asset.txt50 as Description,
Asset.zugdt as TransferDate,
TimeDep.gsber as BusinessArea,
BaText.gtext as BusinessAreaName,
TimeDep.kostl as CostCenter,
TimeDep.bdatu as ValidTo,
Asset.aibn1 as OriginalAsset,
OrigAsset.txt50 as OriginalDescription,
DocHeader.belnr as DocumentNo,
// 이동 유형 — 자산번호가 바뀌었으면 사업영역 간 이동
case when Asset.aibn1 <> '' and Asset.aibn1 <> Asset.anln1
then 'X' else 'I' end as MoveType
}
where TimeDep.bdatu = '99991231'
and Asset.aibn1 <> ''이동내역을 조회할 때 쓰는 참고용 설계입니다. 최초 취득 건은 원자산이 비어 있어 where 조건에서 걸러집니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 이동내역 목록 · 전후 비교 |
| 조회조건 | sap.m.Input · DatePicker · ComboBox · RadioButtonGroup |
| 이동내역 | sap.ui.table.Table — 유형·자산번호·명칭 3컬럼 고정 |
| 유형 강조 | RowSettings.highlight · ObjectStatus |
| 변경 표시 | 이동 전후 값을 비교해 변경 여부를 컬럼으로 |
| 화면 이동 | sap.m.Link — 자산번호 · 전표번호 |
| CSV | Blob + UTF-8 BOM — 사양서 컬럼 순서 |
변경 여부를 컬럼으로 따로 둔 이유
이동 전후 값이 나란히 있어도 열이 멀면 눈으로 대조해야 합니다. 사업영역과 코스트센터 옆에 변경 표시를 붙이면 목록을 훑는 동안 무엇이 달라진 건인지가 바로 보이고, 자세한 비교는 라인을 눌러 확인합니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.assetmove) · ko 로케일 · sap_horizon |
Component.js | 조회조건 모델 · 결과 모델 초기화 |
view/Main.view.xml | 조회화면 + 이동내역 목록 + 전후 비교 |
controller/Main.controller.js | 조회 · 유형 필터 · 전후 비교 · 화면 이동 · CSV |
model/ModelMock.js | 이동 유형 판정 · 전후 비교 · 집계 |
model/formatter.js | 유형 · 코드+명칭 · 변경 표시 · 일자 포맷터 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
localdata/assetmove.json | 자산 이동내역 시뮬레이션 데이터 |
검증 결과
화면 구성에 쓴 데이터는 사업영역 간·내 이동이 섞인 이동내역입니다.
| 데이터 | 규모 | 구성 |
|---|---|---|
| 이동내역 | 16건 | BA 간 9 · BA 내 7 |
| 조직 | 사업영역 5곳 · 코스트센터 6곳 | 이동금액 2,715,000,000원 |
| 전표 | 9건 | BA 간 이동에만 생성 |
| 검증 항목 | 결과 |
|---|---|
| 사업영역·코스트센터·자산클래스가 마스터에 존재 | 통과 |
| BA 간 이동은 자산번호가 원자산과 다름 (폐기+신규) | 통과 |
| BA 간 이동은 사업영역이 실제로 바뀜 | 통과 |
| BA 간 이동은 T-code ABUMN · Trans.Type UMZ1 | 통과 |
| BA 간 이동은 전표·회계연도 보유 · 유효일자 99991231 | 통과 |
| BA 내 이동은 자산번호가 동일 · 코스트센터만 변경 | 통과 |
| BA 내 이동은 전표 없음 · 금액 0 | 통과 |
| BA 내 이동은 이전 라인 종료일이 이동 전날 | 통과 |
| 이동시점이 원자산 취득일 이후 · 조회 기간 내 | 통과 |
| 화면 렌더링 — 목록 → 전후 비교 2종 → 유형 필터 → 화면 이동 | 8/8 |
자산번호·조직·금액은 모두 검증용 데이터입니다.
자주 묻는 질문
왜 어떤 이동은 자산번호가 바뀌나요?
사업영역을 넘어가면 회계상 다른 조직으로 넘긴 것이라, 기존 자산을 폐기하고 받는 쪽에 새 자산을 만듭니다. 그래서 번호가 바뀌고 전표도 생깁니다. 같은 영역 안에서 부서만 옮기면 회계 단위는 그대로라 번호를 유지하고 귀속 정보만 갱신합니다.
최초 취득 건은 왜 안 나오나요?
취득은 이동이 아니기 때문입니다. 사양서에도 최초 취득 건은 보일 필요가 없다고 돼 있습니다. 원자산 필드가 비어 있는 건을 제외하면 자연스럽게 걸러집니다.
BA 내 이동에 전표번호가 비어 있는데 정상인가요?
정상입니다. 코스트센터 변경은 금액이 움직이지 않아 회계 전표가 생기지 않습니다. 대신 귀속 정보의 유효기간이 끊어지면서 이력이 남습니다. 목록에서 유효종료일을 보면 언제부터 이전 부서였는지 알 수 있습니다.
이동 전후 비교는 무엇을 보여 주나요?
바뀐 항목만 추려서 좌우로 보여 줍니다. 사업영역 간 이동이면 사업영역·코스트센터·자산번호 세 줄이, 사업영역 내 이동이면 코스트센터 한 줄만 나옵니다. 바뀌지 않은 항목은 표시하지 않아 무엇이 달라졌는지가 분명해집니다.
SAP 표준 기능과 어떻게 이어지나요?
이동 처리는 ABUMN 과 자산 변경 트랜잭션이 담당하고 데이터도 ANLA·ANLZ·ANEK 표준 구조 그대로입니다. 이 화면은 그 자취를 읽어 두 유형으로 가르고 전후를 비교해 주며, 자산번호와 전표번호에서 표준 조회 화면으로 이어집니다.