TL;DR
SAP'ta validasyon (GGB0), muhasebe belgesi kaydedilmeden önce iş kurallarını kontrol eder ve kural ihlalinde hata veya uyarı verir; substitüsyon (GGB1) ise belge alanlarını kurala göre otomatik doldurur. FI'da validasyonlar OB28, substitüsyonlar OBBH ile şirket kodu ve çağırma noktası bazında aktive edilir. Kurallar yetersiz kaldığında ZRGGBR000 ve ZRGGBS000 exit programlarıyla ABAP mantığı eklenir.
Validasyon ve Substitüsyon Nedir, Ne İşe Yarar?
Standart SAP, alan durumu grupları (OBC4) ve hesap ana verisi üzerinden hangi alanların zorunlu olduğunu belirler. Ancak "satış giderleri hesabına kayıtta fonksiyonel alan boş olamaz" veya "satıcı faturasında referans alanı fatura numarası formatında olmalı" gibi koşula bağlı kurallar alan durumuyla tanımlanamaz. Validasyon ve substitüsyon, bu tür kuralları kod yazmadan, Boolean mantığı ile tanımlamaya yarayan çapraz modül araçlardır.
Validasyon üç parçadan oluşur: Ön koşul (Prerequisite), Kontrol (Check) ve Mesaj (Message). Ön koşul sağlandığında kontrol değerlendirilir; kontrol "yanlış" dönerse mesaj tetiklenir. Mesaj tipi E (hata) ise belge kaydedilemez, W (uyarı) ise kullanıcı onaylayarak devam edebilir, I bilgi verir, A işlemi sonlandırır. Mesaj metinleri genellikle SE91'de oluşturulan ZFI gibi bir mesaj sınıfında tutulur.
Substitüsyon ise ön koşul sağlandığında belirlenen alana sabit bir değer, başka bir alanın değeri veya exit ile hesaplanan bir değer yazar. Tipik kullanım alanları; kâr merkezi veya iş alanının hesaba göre türetilmesi, tayin (ZUONR) alanının fatura referansıyla doldurulması ve belirli belge türlerinde metin alanının standartlaştırılmasıdır. Substitüsyonla değiştirilebilecek alanlar GB01 tablosu (SM30 üzerinden VWTYGB01 görünümü) ile sınırlıdır; bir alanın listede "hariç" işaretli olması o alanın substitüsyona kapalı olduğunu gösterir.
Çağırma Noktaları ve Aktivasyon: OB28, OBBH
FI'da kurallar üç çağırma noktasında (call-up point) çalışır. Kuralın hangi noktada tanımlandığı, hangi alanlara erişilebileceğini belirler:
| Çağırma Noktası | Kapsam | Erişilebilen Yapılar | Tipik Kullanım |
|---|---|---|---|
| 0001 Belge başlığı | Başlık bir kez kontrol edilir | BKPF | Belge türü / kullanıcı / tarih kontrolleri |
| 0002 Kalem | Her kalem ayrı değerlendirilir | BKPF, BSEG | Hesap bazlı zorunlu alan, kâr merkezi türetme |
| 0003 Tam belge | Tüm kalemler birlikte | BKPF, BSEG (tablo) | Kalemler arası tutarlılık, toplam kontrolleri |
Kural GGB0 veya GGB1'de tanımlandıktan sonra tek başına çalışmaz; şirket kodu ve çağırma noktasına atanarak aktive edilmesi gerekir. Validasyonlar için OB28, substitüsyonlar için OBBH kullanılır. Aktivasyon seviyesi 0 (pasif), 1 (aktif) veya 2 (batch input hariç aktif) olabilir. Seviye 2, toplu veri yüklemelerinde veya arayüzlerden gelen kayıtlarda kuralın devre dışı kalmasını istediğinizde kullanışlıdır.
Aynı çerçeve diğer bileşenlerde de vardır: CO validasyon ve substitüsyonları OKC7 ve OKC9, sabit kıymet tarafı ise OACV ve OACS ile yönetilir. Her şirket kodu ve çağırma noktası için yalnızca bir validasyon ve bir substitüsyon atanabildiğinden, birden fazla kural aynı validasyon altında adımlar (step) olarak sıralanır. Adım sayısı arttıkça yönetim zorlaşacağı için kuralların açıklamalarının ve bir kural envanterinin tutulması önerilir.
Kurallar Yetmediğinde: Setler ve ABAP Exit'leri
Ön koşul ve kontrollerde tek tek değer yazmak yerine setler (GS01) kullanılabilir. Örneğin satış giderleri hesap aralığını bir sette tutup kuralda "BSEG-HKONT IN ZFI_SATIS_GIDER" şeklinde referans vermek, yeni hesap açıldığında kuralı değiştirmeden seti güncellemeyi sağlar. Setler kural yönetimini ciddi ölçüde sadeleştirir.
Boolean mantığın yetmediği durumlarda (Z tablo okuma, harici sistem kontrolü, birden fazla alanın birlikte hesaplanması) kullanıcı exit'leri devreye girer. Standart RGGBR000 (validasyon) ve RGGBS000 (substitüsyon) programları ZRGGBR000 ve ZRGGBS000 olarak kopyalanır, GCX2 ile GBLR/GBLS uygulama alanlarına atanır. Exit form'u kural içinde "U901" gibi bir isimle çağrılır. Exit içinde veritabanı güncellemesi veya COMMIT WORK yapılmamalıdır; kayıt akışının ortasında çalıştığı için belge bütünlüğü bozulabilir.
Taşıma ve üretim ortamı tarafında dikkat edilmesi gereken bir nokta vardır: Validasyon ve substitüsyonlar arka planda üretilen programlar üzerinden çalışır. Taşıma sonrası veya exit değişikliğinden sonra kural beklenen şekilde çalışmıyorsa, SE38'de RGUGBR00 programı ile yeniden üretim (regeneration) yapılması çoğu zaman sorunu çözer. Hata ayıklama için ZRGGBR000 / ZRGGBS000 içindeki ilgili form'a breakpoint koymak en pratik yoldur.
S/4HANA'da Validasyon ve Substitüsyon
S/4HANA on-premise sürümlerinde GGB0, GGB1, OB28 ve OBBH aynı şekilde çalışmaya devam eder; Universal Journal (ACDOCA) yapısı mevcut kuralları geçersiz kılmaz. Ancak belge bölme (document splitting) ve yeni defter yapısı nedeniyle kâr merkezi ve segment gibi alanlarda substitüsyon yerine türetme mantığının (kâr merkezi ana verisi, belge bölme kuralları) tercih edilmesi daha sağlıklı sonuç verir.
S/4HANA Cloud ve güncel on-premise sürümlerde, BRF+ tabanlı "Manage Substitution and Validation Rules" Fiori uygulamaları sunulmaktadır. Bu uygulamalar kuralların iş birimleri tarafından daha okunabilir bir arayüzle yönetilmesini sağlar; Public Cloud'da klasik GGB0/GGB1 erişimi olmadığından tek seçenek bunlardır. Dönüşüm projelerinde mevcut kural envanteri çıkarılmalı, kullanılmayan adımlar temizlenmeli ve exit kodları S/4HANA uyumluluğu açısından gözden geçirilmelidir.
Sıkça Sorulan Sorular
**Validasyon ile alan durumu grubu (OBC4) arasındaki fark nedir?**
Alan durumu grubu bir alanı hesap bazında her zaman zorunlu, isteğe bağlı veya gizli yapar. Validasyon ise koşula bağlı kontrol sağlar; örneğin belirli bir belge türü ve hesap aralığı birlikteyken alanı zorunlu kılabilir veya alanın içeriğini (format, değer aralığı) kontrol edebilir.
**Aynı şirket koduna birden fazla validasyon atanabilir mi?**
Hayır. Her şirket kodu ve çağırma noktası için OB28'de tek bir validasyon atanır. Birden fazla kural gerekiyorsa aynı validasyon içinde ayrı adımlar olarak tanımlanır.
**Substitüsyonla neden bazı alanları değiştiremiyorum?**
Substitüsyona açık alanlar GB01 tablosunda tanımlıdır. Bir alan hariç tutulmuşsa kural ekranında listelenmez. GB01 değişikliği SAP standardına müdahale anlamına geldiği için yalnızca etkisi analiz edildikten sonra ve kontrollü şekilde yapılmalıdır.
**Kural taşındı ama üretimde çalışmıyor, ne yapmalıyım?**
Önce OB28 veya OBBH'de aktivasyon seviyesinin üretim şirket kodunda doğru olduğunu kontrol edin. Ardından ilgili setlerin ve exit programının da taşındığından emin olun ve RGUGBR00 ile yeniden üretim yapın.
**Validasyon kuralları performansı etkiler mi?**
Kalem seviyesindeki (0002) kurallar her satır için çalışır. Özellikle exit içinde veritabanı okuması yapılıyorsa, yüksek hacimli arayüz kayıtlarında süre belirgin şekilde uzayabilir. Okumaları önbelleğe almak ve ön koşulu mümkün olduğunca dar tutmak önerilir.
---
Validasyon ve substitüsyon, muhasebe verisinin kaynağında doğru oluşmasını sağlayan en etkili ama en kolay dağınıklaşan SAP araçlarından biridir. CONSULANT olarak mevcut kural envanterinizi analiz ediyor, gereksiz adımları sadeleştiriyor, setler ve exit yapısıyla sürdürülebilir bir kontrol katmanı kuruyoruz. Kurallarınızı birlikte gözden geçirmek için [bizimle iletişime geçin](/iletisim).
**CONSULANT | SAP FI · CO · PA · ABAP Danışmanlık**
SAP danışmanlığı mı arıyorsunuz?
Uzman ekibimizle ücretsiz ön değerlendirme için iletişime geçin.
İletişime Geçin →