İçindekiler
S/4HANA'ya geçen her finans ekibinin er ya da geç karşılaştığı tek bir tablo vardır: ACDOCA. SAP bu tabloya "Universal Journal" (Evrensel Kayıt) diyor ve bu isim abartı değil — S/4HANA Finance'in tüm mimarisi bu tablonun etrafında yeniden kurgulandı. ECC'den gelen danışmanların ve kullanıcıların çoğu hâlâ BSEG ile düşünüyor; oysa raporlamanın merkezi artık tamamen değişti.
Bu yazıda ACDOCA'nın ne olduğunu, eski tablo yapısının yerini nasıl aldığını ve üzerine sağlıklı, gerçek zamanlı finansal raporları nasıl kurabileceğinizi gerçek kod örnekleriyle anlatıyorum.
ACDOCA (Universal Journal) Nedir?
ACDOCA, S/4HANA'da tüm muhasebe kalemlerinin satır bazında (line item) saklandığı tek merkezi tablodur. Universal Journal yaklaşımının temel fikri şudur: Finansal Muhasebe (FI), Maliyet Muhasebesi (CO), Malzeme Ledgeri (ML), Varlık Muhasebesi (AA) ve daha fazlası, ayrı ayrı tablolarda değil, tek bir satırda birleştirilir.
Yani bir muhasebe belgesi kaydedildiğinde; o satırın GL hesabı da, maliyet merkezi de, kâr merkezi de, fonksiyonel alanı da, tutarın hem şirket kodu hem grup para birimindeki karşılığı da aynı ACDOCA satırında yer alır. Bu, "tek gerçek kaynak" (single source of truth) ilkesinin tablo seviyesindeki karşılığıdır.
Neden devrim niteliğinde?
ECC'de bir maliyet merkezi raporu çekmek için CO tablolarına, GL bakiyesi için ayrı totals tablolarına, kalem detayı için BSEG'e gitmeniz gerekiyordu. Bu tabloların birbiriyle tutarlı olduğundan emin olmak için ay sonu mutabakat (reconciliation) işlemleri yapılırdı. ACDOCA ile FI ve CO aynı satırda olduğu için bu mutabakat ihtiyacı yapısal olarak ortadan kalkar.
Eski Dünya: BSEG, FAGLFLEXA ve Totals Tabloları
ACDOCA'nın getirdiği sadeleşmeyi anlamak için, yerini aldığı yapıya bakmak gerekir. ECC ve klasik New G/L mimarisinde finansal veri parçalıydı:
- BKPF / BSEG: Klasik FI belge başlığı ve kalemleri.
- FAGLFLEXA / FAGLFLEXT: New G/L kalem ve toplam (totals) tabloları.
- GLT0: Klasik G/L bakiye (totals) tablosu.
- COEP / COSP / COSS: CO kalem ve toplam tabloları.
- ANEP / ANLP: Varlık muhasebesi hareketleri.
- MLIT / MLCR: Malzeme ledgeri tabloları.
Bu mimaride iki temel sorun vardı. Birincisi, aynı ekonomik olay birden çok tabloya (FI'ya bir, CO'ya bir) yazılıyor, bu da çiftleme ve tutarsızlık riski doğuruyordu. İkincisi, raporlama için önceden hesaplanmış totals (toplam) tabloları tutuluyordu — çünkü her sorguda milyonlarca kalemi toplamak diskli veritabanlarında çok yavaştı.
S/4HANA, HANA'nın sütun bazlı in-memory mimarisi sayesinde bu totals tablolarına olan ihtiyacı ortadan kaldırdı. Artık toplamlar, sorgu anında milyonlarca satır üzerinden gerçek zamanlı hesaplanabiliyor. Bu yüzden ACDOCA yalnızca kalem (line item) tutar; totals tabloları büyük ölçüde tarihe karıştı.
ACDOCA'nın Yapısı ve Kritik Alanları
ACDOCA çok geniş bir tablodur — 350'den fazla alan içerir. Hepsini bilmenize gerek yok; ama raporlama yazarken sürekli karşınıza çıkacak alanları tanımak işinizi çok kolaylaştırır:
Belge kimliği
RBUKRS " Şirket Kodu (Company Code)
RYEAR " Mali Yıl (Fiscal Year)
BELNR " Muhasebe Belge No
DOCLN " Belge Satır No (6 haneli — BSEG'deki BUZEI'nin yerini alır)
GJAHR " Mali Yıl (belge)
BUDAT " Kayıt Tarihi (Posting Date)
BLART " Belge TürüHesap atama (account assignment)
RACCT " GL Hesabı (Account Number)
RCNTR " Maliyet Merkezi (Cost Center)
PRCTR " Kâr Merkezi (Profit Center)
RFAREA " Fonksiyonel Alan (Functional Area)
SEGMENT " Segment
KOSTL " Maliyet Merkezi (CO görünümü)
AUFNR " İç Sipariş (Order)Tutar ve para birimi
ACDOCA çoklu para birimini aynı satırda tutar — bu, raporlamada en sık yararlanılan özelliktir:
HSL " Şirket kodu para biriminde tutar (Company Code Currency)
KSL " Grup para biriminde tutar (Group Currency)
WSL " İşlem para biriminde tutar (Transaction Currency)
OSL " Serbest tanımlı para birimi
RHCUR " Şirket kodu para birimi anahtarı
RKCUR " Grup para birimi anahtarı
DRCRK " Borç/Alacak göstergesi (S = Borç, H = Alacak)Dikkat: ACDOCA'da tutarlar işaretli tutulur (borç pozitif, alacak negatif olacak şekilde değil — geleneksel olarak alacak kayıtları negatif gelir). Bakiye hesaplarken bu işaret mantığını ve DRCRK alanını doğru yorumlamak kritiktir.
Raporlama Açısından Ne Değişti?
ACDOCA mimarisinin finansal raporlamaya pratik yansımaları şunlardır:
- FI-CO mutabakatı bitti: FI ve CO aynı satırda olduğu için, "FI ile CO neden tutmuyor?" sorusu yapısal olarak ortadan kalkar.
- Gerçek zamanlı bakiye: Bakiye için ayrı totals tablosu okumaya gerek yok; HANA kalemleri anında toplar. Gün içinde kaydedilen belge anında raporda görünür.
- Tek detay seviyesi: Özet rapordan kalem detayına inerken (drill-down) tablo değiştirmeye gerek kalmaz — her şey aynı kaynakta.
- Çoklu para birimi tek sorguda: Şirket, grup ve işlem para birimleri aynı satırda olduğu için kur dönüşümü gerektirmeden çok para birimli rapor üretebilirsiniz.
- Hazır CDS modeli: SAP, ACDOCA üzerine zengin bir standart CDS View katmanı (Virtual Data Model) sunar — sıfırdan tablo join'lemeden raporlayabilirsiniz.
CDS View ile Finansal Rapor Yazmak
S/4HANA'da ACDOCA'yı doğrudan SELECT etmek yerine, mümkün olduğunca SAP'nin standart CDS View'larını kullanmak en doğru yaklaşımdır. Bunlar para birimi, dil ve yetki mantığını sizin için zaten doğru kurar.
Adım 1 — Doğru standart CDS View'ı seçin
Kalem bazlı finansal raporlama için en sık kullanılan standart view'lar:
I_JournalEntryItem— Universal Journal kalemlerinin ana yorumlanmış görünümü.I_GLAccountLineItem— GL hesap kalemleri (raporlama odaklı).I_OperationalAcctgDocItem— Operasyonel muhasebe belge kalemleri.
Adım 2 — Özel raporlama view'ı tanımlayın
Diyelim ki şirket kodu ve maliyet merkezi bazında, dönemsel GL bakiyesi raporu istiyoruz. Standart view üzerine kendi tüketim (consumption) view'ımızı kurabiliriz:
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'GL Bakiye Raporu - Maliyet Merkezi Bazlı'
@Metadata.allowExtensions: true
define view entity ZC_GLBalanceByCostCenter
as select from I_JournalEntryItem
{
key CompanyCode,
key FiscalYear,
key FiscalPeriod,
key GLAccount,
key CostCenter,
@Semantics.amount.currencyCode: 'CompanyCodeCurrency'
@Aggregation.default: #SUM
AmountInCompanyCodeCurrency,
@Semantics.amount.currencyCode: 'GlobalCurrency'
@Aggregation.default: #SUM
AmountInGlobalCurrency,
CompanyCodeCurrency,
GlobalCurrency
}
where Ledger = '0L' // Lider ledger (Leading Ledger)
and FinancialAccountType = 'S' // Sadece GL hesaplarıBurada iki nokta önemli: Ledger = '0L' ile lider ledger'ı filtrelemek (paralel ledger'lar mükerrer kayıt getirir) ve @Semantics.amount annotation'ı ile tutarın hangi para birimine ait olduğunu belirtmek. Bu annotation olmadan Fiori ve analitik araçlar tutarı doğru biçimlendiremez.
Adım 3 — ABAP'tan tüketmek
View'ı bir rapor programından ya da OData servisinden tüketmek artık çok sade:
SELECT GLAccount,
CostCenter,
SUM( AmountInCompanyCodeCurrency ) AS Balance,
CompanyCodeCurrency
FROM ZC_GLBalanceByCostCenter
WHERE CompanyCode = @lv_bukrs
AND FiscalYear = @lv_gjahr
AND FiscalPeriod BETWEEN @lv_from AND @lv_to
GROUP BY GLAccount, CostCenter, CompanyCodeCurrency
INTO TABLE @DATA(lt_balance).Dikkat ederseniz totals tablosu yok, mutabakat yok, çoklu join yok. HANA, milyonlarca ACDOCA satırını sorgu anında toplar ve bakiyeyi döndürür.
Eski Raporlar ve Compatibility View'lar
S/4HANA'ya geçtiğinizde, ECC döneminden kalan BSEG, FAGLFLEXA, GLT0 gibi tabloları okuyan yüzlerce Z raporunuz olabilir. SAP bunları kırmamak için compatibility view denen bir katman sunar.
Compatibility view nasıl çalışır?
Eski kodunuz SELECT ... FROM bseg yazdığında, S/4HANA bunu fiziksel BSEG tablosuna değil, ACDOCA (ve ilgili tablolar) üzerine kurulu bir V_* görünümüne yönlendirir. Yani eski raporlarınız çalışmaya devam eder — ama arka planda veriyi ACDOCA'dan üretirler.
Bu çok kullanışlı bir köprü olsa da, üç noktaya dikkat edin:
- Performans: Compatibility view'lar her sorguda ACDOCA'dan yeniden üretim yaptığı için, eski totals tablolarını okuyan raporlar bazen beklenenden yavaş çalışır. Yoğun raporları yeni CDS modeline taşımak gerekir.
- Yeni alanlar: ACDOCA'daki yeni alanlara (örneğin ek para birimleri, segment) eski tablo yapısından erişemezsiniz — sadece yeni modelde görünürler.
- Geçici çözüm olarak görün: Compatibility view geçiş kolaylığı içindir; uzun vadede kritik raporları doğrudan CDS Virtual Data Model üzerine taşımak en sağlıklısıdır.
Performans ve Dikkat Edilmesi Gerekenler
ACDOCA güçlü ama büyük bir tablodur; sahada en sık karşılaştığım sorunlar ve önerilerim:
- Ledger filtresini unutmayın: Paralel ledger kullanan sistemlerde
RLDNR(Ledger) filtresi koymazsanız tutarlar mükerrer toplanır. Tek tek en sık görülen rapor hatasıdır. - Standart CDS'i tercih edin: Doğrudan ACDOCA SELECT etmek yerine SAP'nin yorumlanmış view'larını kullanın; para birimi ve işaret mantığını sizin yerinize doğru kurarlar.
- Aggregation'ı veritabanına bırakın: Kalemleri ABAP'a çekip iç tabloda toplamak yerine,
SUM ... GROUP BYile toplamı HANA'da yaptırın. Bu, in-memory mimarinin tüm avantajını kullanır. - Sadece gereken alanları çekin: 350+ alanlı bir tabloda
SELECT *felakettir. Sütun bazlı veritabanında yalnızca ihtiyacınız olan kolonları seçmek performansı dramatik etkiler. - Yetki kontrolünü atlamayın: Finansal veri hassastır; raporlama view'larında
@AccessControl.authorizationCheckve DCL (Data Control Language) ile yetkiyi doğru kurgulayın.
Sonuç
ACDOCA, S/4HANA Finance'in temel taşıdır. FI, CO, ML ve varlık muhasebesini tek satırda birleştirerek mutabakat yükünü ortadan kaldırır, totals tablolarına olan bağımlılığı bitirir ve gerçek zamanlı, çok para birimli raporlamayı mümkün kılar. Ancak bu gücü doğru kullanmak için ledger mantığını, işaret/para birimi alanlarını ve standart CDS Virtual Data Model'i tanımak gerekir.
Eski BSEG/FAGLFLEXA tabanlı Z raporlarınızı S/4HANA'ya taşıyor ya da sıfırdan modern bir finansal raporlama katmanı kuruyorsanız, SAP geliştirme hizmetim kapsamında bu geçişi birlikte planlayabiliriz. Doğru kurgulanmış bir CDS raporlama modeli, hem performans hem bakım açısından uzun vadede büyük fark yaratır.
S/4HANA finansal raporlama ve ACDOCA tabanlı CDS geliştirme projeniz için danışmanlık alın.
Ücretsiz Ön Değerlendirme