Sap Business One SBO_SP_TransactionNotification

Sap Business One ile sdk tarafında işlem yapmadan ekran kontrollerini yapmak mümkün bunu için sap de Transaction Notification isimli veri tabanı içerisinden transaction anında bu işlemi yakalayıp iptal etmemizde dahil bize bazı kontroller sunmaktadır.

Sql Server yada Hana farketmeksizin prosedürler kısmında SBO_SP_TransactionNotification isimli prosedür bu işi yapabilmektedir. Bizde istediğimiz iş akışlarına göre ekleme güncelleme silme gibi işlemleri durdurup hata döndürebiliriz. Bu arada tüm sistemi etkileyeceği için buradaki değişiklikler iyi test edilip yedekli çalışılmasında fayda var.

USE [SBODemoTR]
GO
/ Object: StoredProcedure [dbo].[SBO_SP_TransactionNotification] Script Date: 27.12.2020 14:38:52 /
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[SBO_SP_TransactionNotification]@object_type nvarchar(30), -- SBO Object Type
@transaction_type nchar(1), -- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose
@num_of_cols_in_key int,
@list_of_key_cols_tab_del nvarchar(255),
@list_of_cols_val_tab_del nvarchar(255)
AS
begin
-- Return values
declare @error int -- Result (0 for no error)
declare @error_message nvarchar (200) -- Error string to be displayed
select @error = 0
select @error_message = N'Ok'

-----------------------------
-- ADD YOUR CODE HERE
-----------------------------
select @error, @error_message
end

ilgili bu prosedürde bazı değişkenleri tanıyalım:

@error değerini herşey normal gittiğinde 0 değerini vererek tüm işlemlere devam edebiliyoruz, eğer 0 dan farklı bir değer ile set edersek sap bunu hata olduğunu algılayıp hata döndürüyor.

@error_message bir mesaj vermek istiyorsak bu değişkeni setleyeceğiz

— ADD YOUR CODE HERE yazacağımız sql kodlarını bu blok içerisinde yazmalıyız

@object_type o an da sap da hangi belge yada ekran hangisinde işlem yapıyorsak bu değişkenin değeri onu tutmaktadır, bu yüzden bizde hangi işlemde sınırlama koyacaksak if koşulu ile bu değişkeni sorgulayacağız. Mesela fatura ekranında işlem yapılıyorsa değeri 13 geliyor.
Sapb1 Object type list : https://ozeraydin.com/2018/03/sap-business-one-sdk-obje-listesi-object-type-list-ve-anhtar-alanlari-primary-key/

@transaction_type sap deki işlem listesine göre hangisindeyiz bunları yakalamak için
A Ekleme
U Güncelleme
D Silme
C İptal etme
L Kapatma

@num_of_cols_in_key ilgili tablodaki anahtar alan adet sayısını verir

@list_of_key_cols_tab_del o anki transaction için key alanı verir

@list_of_cols_val_tab_del o anki transaction için key alanının değerini verir.

Açıklamalardan sonra basit bir örnek üzerinden örnek yapalım, senaryomuz şu şekilde olsun;

Fatura kayıt etme ekranında girilen müşterinin adı A ile başlayan varsa sap bize hata versin işlemi yaptırmasın, bu engelleme sadece fatura eklemede yapılsın güncelleme ve silme gibi işlemlerde etki etmesin?

Gördüğünüz gibi ilgili bölüme eklediğimiz basit bir sorgu ile engelleme işlemini yapmış bulunmaktayız.

Şunlarıda incelemek isteyebilirsin mi?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir