본문 바로가기
ERP-SAP/FI

<FI>BKPF,BSEG에서 ACDOCA로 바꿨을때 다양한 의문 및 해답

by 행복한워니의 기록 2025. 4. 1.
728x90
반응형

2017년9월 이후 옛날 SAP시스템 유지보수만 하다가 이제 드디어 ACDOCA가 있는 SI플젝에 와서 설계분석개발을 하는 기회가 왔다.
(물론 난 개발자다.. ㅎㅎㅎ 기회라 표현하고 개발자의 알잘딱깔쎈을 바라는 SI 플젝이라 해두자..)

처음 보는 DB에 대한 막연한 불안감에 한번 공부를 해봤는데.. 어라? 더 편해지고 빨라진거 같다.

그래서 공부한거 요약본만 써드린다.
설계자가 지금 이글을 읽는다면......아냐 조금 더 심화되게 공부하셔야한다...

개발자에게 도움되는 심플 정보다.

요약시작!

1. BKPF는 ACDOCA 와 JOIN해서 읽어야한다.
이유: 헤더텍스트가 없다. 반제되었는지 ACDOCA에 없다. 그러니 BKPF는 읽는 방향으로 가야한다.
SELECT
    a~bukrs,
    a~belnr,
    a~gjahr,
    a~buzei, " 라인 아이템 번호
    " ... 기타 필요한 ACDOCA 필드들 ...
    b~bktxt  " BKPF에서 가져올 헤더 텍스트
  FROM acdoca AS a
  INNER JOIN bkpf AS b
    ON a~bukrs = b~bukrs
   AND a~belnr = b~belnr
   AND a~gjahr = b~gjahr
  WHERE a~bukrs = '특정회사코드' " 필요한 조건 추가
    AND a~gjahr = '특정회계연도'
    " ... 기타 필요한 WHERE 조건 ...
  INTO TABLE @DATA(lt_journal_entries).

IF sy-subrc = 0.
  " lt_journal_entries 내부 테이블에 헤더 텍스트(BKTXT) 포함된 데이터 조회됨
  LOOP AT lt_journal_entries ASSIGNING FIELD-SYMBOL(<fs_entry>).
    WRITE: / <fs_entry>-bukrs, <fs_entry>-belnr, <fs_entry>-gjahr, <fs_entry>-buzei, <fs_entry>-bktxt.
  ENDLOOP.
ENDIF.



2. ACDOCA는 라인아이템 테이블이다.
BSEG = ACDOCA라 생각하면 좋다...

3. 어? 그럼 그냥 BKPF BSEG보면 되잖냐..
BSEG는 느리다... 알지않나....

4. 그럼 모든 정보는 똑같이 다 구할 수 있나?
그렇다.. 오히려 더 많은 정보를 담고있다.

5. 그게뭔가....

아래 정보를 보자!!!딱 한번만 읽어보면
과거 FI를 하기위해 알아야했던 BSIS BSAS
BSIK BSAK BSID BSAD이런거 필요가 없어졌다.


표면적으로 보면 BSEG 필드 대부분이 ACDOCA에 있고, 여전히 헤더 정보(BKTXT 등)를 위해 BKPF와 조인해야 하니 "그냥 BSEG를 대체한 것 아닌가?" 하고 생각하기 쉽습니다. 하지만 ACDOCA의 도입은 SAP 재무/관리 회계 아키텍처의 근본적인 변화를 의미하며, 단순히 BSEG를 대체하는 것 이상의 훨씬 큰 목적과 장점을 가지고 있습니다.

ACDOCA를 만든 핵심적인 이유는 "Universal Journal (통합 저널)" 개념을 구현하기 위해서입니다. 기존 SAP ECC (ERP Central Component) 시스템의 한계를 극복하고 S/4HANA의 이점을 극대화하기 위한 설계입니다.

기존 ECC 시스템의 문제점 (ACDOCA 도입 배경):

데이터 파편화 및 중복:

FI (재무 회계): 헤더(BKPF), 라인 아이템(BSEG), G/L 계정별 Index(BSIS/BSAS), 고객별 Index(BSID/BSAD), 공급업체별 Index(BSIK/BSAK) 등 여러 테이블에 데이터가 나뉘어 저장되었습니다.

CO (관리 회계): 라인 아이템(COEP), 원가 요소별 합계(COSP), 원가 센터별 합계(COSS), 수익성 분석(CE*) 등 별도의 테이블 세트를 사용했습니다.

AA (자산 회계), ML (자재 원장): 역시 자체적인 테이블 구조를 가졌습니다.

하나의 비즈니스 트랜잭션이 발생하면 FI, CO, AA, ML 등 여러 모듈의 테이블에 중복된 정보가 다른 형태로 기록되는 경우가 많았습니다.

데이터 불일치 및 조정 필요:

FI와 CO 데이터가 별도로 관리되다 보니, 월말/연말 결산 시 두 모듈 간의 데이터 정합성을 맞추기 위한 조정(Reconciliation) 작업이 필수적이었습니다. 이는 시간과 노력이 많이 소요되는 작업이었습니다.

성능 저하 및 복잡성:

재무 보고서를 생성하거나 데이터를 분석하려면 여러 테이블(Index 테이블, 합계 테이블 포함)을 복잡하게 조인해야 했습니다. 이는 성능 저하를 유발했습니다.

합계(Total) 테이블과 인덱스(Index) 테이블은 빠른 조회를 위해 필요했지만, 데이터 모델의 복잡성을 증가시키고 데이터 업데이트 시 부하를 발생시켰습니다.

ACDOCA (Universal Journal)의 목적과 장점:

단일 진실 공급원 (Single Source of Truth):

ACDOCA는 FI, CO, AA, ML, CO-PA(원가 기반) 등 주요 회계 관련 모듈의 모든 라인 아이템 데이터를 하나의 테이블에 통합합니다.

더 이상 여러 모듈의 라인 아이템 테이블을 넘나들 필요 없이 ACDOCA 하나만 보면 대부분의 상세 정보를 파악할 수 있습니다.

데이터 중복 제거 및 단순화:

하나의 트랜잭션 데이터가 ACDOCA에 한 번만 기록되므로 데이터 중복이 획기적으로 줄어듭니다.

수많은 **합계 테이블(Total Tables)**과 **인덱스 테이블(Index Tables)**이 제거되었습니다. (예: FAGLFLEXT, COSS, COSP, BSIS, BSAS, BSID, BSAD, BSIK, BSAK 등) 이는 데이터 모델을 매우 단순화합니다.

실시간 FI-CO 통합 및 조정 불필요:

FI와 CO 데이터가 동일한 라인 아이템 레코드에 존재하므로, 별도의 조정 작업 없이 항상 데이터가 일치합니다. 이는 결산 시간을 단축하고 데이터 신뢰도를 높입니다.

성능 향상 (HANA 기반):

ACDOCA는 SAP HANA의 인메모리(In-Memory) 및 컬럼 기반(Columnar) 저장 방식에 최적화되어 설계되었습니다.

합계나 집계가 필요할 때, 디스크 기반의 합계 테이블을 읽는 대신 HANA 엔진이 ACDOCA의 라인 아이템 데이터를 **실시간으로 빠르게 집계(On-the-fly Aggregation)**합니다. 이로 인해 보고 및 분석 성능이 크게 향상됩니다.

향상된 분석 및 리포팅:

하나의 레코드에 G/L 계정, 코스트 센터, 수익 센터, 기능 영역, 세그먼트, 고객, 공급업체, 자재, 비즈니스 영역 등 다양한 차원(Dimension)의 정보가 통합되어 있어, 이전보다 훨씬 다차원적이고 상세한 분석이 용이해졌습니다.

결론적으로, ACDOCA는 단순히 BSEG를 대체하는 것이 아니라, S/4HANA의 핵심인 Universal Journal을 구현하여 데이터 중복 제거, 아키텍처 단순화, 실시간 통합, 성능 향상, 분석 능력 강화를 이루어낸 패러다임의 전환입니다.

여전히 BKPF와 조인해야 하는 이유는, BKTXT와 같은 헤더 정보는 전표 전체에 대한 정보이지 개별 라인 아이템에 속하는 정보가 아니기 때문입니다. 이는 데이터베이스 정규화 원칙에 따른 자연스러운 설계입니다. ACDOCA는 라인 아이템 레벨의 통합에 초점을 맞춘 것입니다.
========

즉 회계 단순 전표개발하는 내 관점에서 응? 그냥 bseg 대신 acdoca읽음되네 하면되지만
미결항목이라던지 미결항목반제라던지 하는
다양한 것들을 다 acdoca에서 해결가능하단 것이다.
이 부분은 실데이터를 안봤지만 찾아보고 비교해보면 알 수 있을 것 같다.


728x90
반응형