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.