sap bo koşullu dağıtım (conditional publication)

Sap BO ortamında rapor dağıtımı [http://ayhankargin.com/blog/?p=314] yaparken (publication) dağıtım yapılan tüm hedeflere her zaman sorgu sonucu veri gelmiyorsa, ve boş rapor içeriği olunca gönderim yapılması istenmiyorsa aşağıdaki yöntem ile bu sağlanabilir.

Dağıtımı yapılacak rapor A olsun. Dağıtım listesi B olsun. Dağıtımı yapılan A raporu ile dağıtım listesi olan B raporunun birleştirilme (join) alanı da C alanı olsun. Örnek olarak rapor sorguları aşağıdaki gibi olsun.

A rapor sorgusu:

select a.islem_sube, islem_tarih_saat, islem_tutar, islem_aciklama
from ozel_islem_listesi a
where a.tarih between trunc(sysdate-1) and trunc(sysdate)

B rapor sorgusu:

select b.islem_sube, b.sube_eposta
from islem_sube b

C alanı:

ozel_islem_listesi.islem_sube = islem_sube.islem_sube

Böyle bir dağıtımda bir şube için A raporundan her zaman veri gelmeyebilir. Amacımız da eğer A raporunda bir şube için veri gelmiyorsa B rapor dağıtımı listesinde de bu şubenin gelmemesi.

Bunun için B rapor sorgusunu aşağıdaki gibi bir hale getirirsek A raporunda gelmeyen sube B raporunda da gelmez.

B rapor sorgusu değiştirilmiş hali:

select b.islem_sube, b.sube_eposta
from islem_sube b
where b.islem_sube in (
    select a.islem_sube
    -- , islem_tarih_saat, islem_tutar, islem_aciklama
    from ozel_islem_listesi a
    where a.tarih between trunc(sysdate-1) and trunc(sysdate)
)

B rapor sorgusu Custom Sql, FreeHand Sql veya Result from Another Query gibi özellikler ile değiştirilebilir.

Bir cevap yazın