Web servislerde Özyineleme ve Düşük Seviye Özyineleme Kontrolü

Bilindiği üzere Özyineleme ürün ağacında tepe malzemenin ürün ağacını tüm seviyelerde patlatıldığında tekrar tepe malzemeye ulaşabilmesinden kaynaklanabilecek sonsuz döngüyü engellemek üzere konulmuş bir özelliktir.

 Web servislerde Özyineleme ve Düşük Seviye Özyineleme Kontrolü

Bilindiği üzere Özyineleme ürün ağacında tepe malzemenin ürün ağacını tüm seviyelerde patlatıldığında tekrar tepe malzemeye ulaşabilmesinden kaynaklanabilecek sonsuz döngüyü engellemek üzere konulmuş bir özelliktir. Bu özellik hem malzeme ihtiyaç planlamasında malzemenin tekrar tekrar kendisine ikincil ihtiyaç çıkarmak suretiyle sonsuz döngüye girmesini engeller hem de maliyet muhasebesindeki standart fiyat hesaplamalarında da sonsuz döngüye girmesini engellemektedir.

Bu yazımızda önce SAP nin özyineleme kontrolünü inceleyip daha sonra da eğer web servis kullanarak bir entegrasyon yapıldığında nasıl bir sorunla karşılaşabileceğimiz ve bunun çözümünü ele alacağız. Aynı zamanda SAP nin standart ekranlarında özyineleme kontrolünü nasıl yaptığı hakkında incelemelere de yer vereceğiz.

SAP de özyineleme için Ürün ağaçlarında 2 adet alan bulunmaktadır. Teknik adları sırasıyla REKRS (Özyineleme Olanaklı) ve REKRI (Özyinelemeli) olan bu alanlar sayesinde özyineleme takip edilmektedir. Ayrıca sistemde MARA tablosundaki DISST (MİP düzeyi) alanı da özyineleme kontrolünde kullanılan alanlardan biridir. Aslında MRP çalıştırılırken hangi sırayla malzeme bazında çalışması gerektiğini belirleyen bu alan sayesinde ürün ağacına eklenen malzemenin özyineleme ihtimali olup olmayacağının kontrolü gerçekleştirilmektedir. Örneğin MİP düzeyi 002 olan bir malzemeye eğer 003 MİP düzeyli bir malzeme eklenirse zaten özyineleme ihtimali oluşmayacaktır. Sistemin ilk kontrol ettiği özellik budur. Daha sonra ürün ağacı kontrolü yapılırken tarihten, üretim yerinden ve kullanımdan bağımsız olarak özyineleme kontrolü gerçekleştirilmektedir. (SAP note 42891)

CS01, CS02 gibi ekranlardan kaydet tuşuna basıldığında özyineleme kontrolü yapıldıktan sonra eğer özyineleme varsa hata mesajı verilerek “Özyineleme Olanaklı” işaretinin atılması istenir. İhtiyaca göre trace(takip) özelliği açılıp özyineleme döngüsü görüntülenebilmektedir.

Bu kontrolü açabilmek için önce OS29 dan kullanıcınızı ekledikten sonra CSRC_TRACE işlem kodundan trace özelliğini aktifleştirilmesi gerekir.

OS29

CSRC_TRACE

Takip özelliği açıldığında sistem hata mesajından sonra aşağıdaki gibi bir tablo oluşturacaktır.

Standart ekranlardaki özyineleme kontörlü kaydetme özelliğinden önce gerçekleşmektedir. Fakat bu durum Web servis içinde kullanılan bir BAPI (de aynı şekilde olmamaktadır. BAPI ile yapılan işlemlerde kontrol, committen sonra gerçekleştiğinden veriyi BAPI’ye göndermeden önce kontrol edilmesi gerekmektedir. Aksi taktirde Commit çalıştıktan sonra ürün ağacı otomatik olarak sistemden silinmektedir. Yaşadığımız örnekte bu silme işlemi 3 dk. kadar gecikebildiği için entegrasyon yapılan iki program arasındaki senkronizasyonu bozmaktadır.

Gelen veriyi BAPI ye göndermeden önce özyineleme kontrolü yapan ve özyineleme varsa “özyineleme olanaklı” alanını işaretli olarak gönderecek bir fonksiyon yazılarak sorun çözülmüştür. Bu fonksiyon öncelikle ilk seviyedeki ürün ağacında özyineleme kontrolü yaptıktan sonra kendi kendini çağıran bir perform ile tüm seviyelerdeki ürün ağaçlarını patlatıp onların da bileşenlerinin tüm ürün ağaçlarını patlatmak suretiyle özyineleme kontrolü gerçekleştirmektedir. Bu kontrolü yaparken ürün ağaçlarının içindeki aynı bileşenleri tekrar tekrar kontrol edilmesini engellemek, performans sorunlarının önüne geçmiştir. Ayrıca fonksiyona standart ekrandaki kontrole benzer bir log tutma özelliği de eklenmiştir.