MANUAL GUIDE

Cara Update / Maintenance Blocking pada SBO_SP_TransactionNotification

SAP Business One HANA


1️⃣ Tentukan Database yang Akan Diubah

Pastikan database yang dipilih sudah benar. Kesalahan memilih database dapat menyebabkan blocking aktif di lingkungan yang tidak sesuai.

LingkunganSchema
LIVE / ProductionMJG_LIVE
TEST / UATMJG_TEST_xxx

Di HANA Studio, buka melalui panel sebelah kiri:

Catalog → NDB (B1ONE) → MJG_LIVE → Procedures

⚠️ Jika ingin melakukan perubahan pada database LIVE, pastikan schema yang dibuka adalah MJG_LIVE.


2️⃣ Cari Procedure Transaction Notification

Masuk ke:

Catalog → MJG_LIVE → Procedures

Cari procedure berikut:

SBO_SP_TransactionNotification

Kemudian:

Klik kanan → Open Definition


3️⃣ Cari Rule di Dalam Procedure

Karena isi SBO_SP_TransactionNotification biasanya sangat panjang, gunakan fitur pencarian untuk menemukan rule atau blocking tertentu.

Tekan:

CTRL + F

Atau klik ikon pencarian pada toolbar editor.

Pencarian Berdasarkan Jenis Dokumen

DokumenObject Type yang Dicari
Purchase Order'22'
GRPO'20'
A/P Invoice'18'
Goods Issue'60'
Delivery'15'

Contoh pencarian:

object_type = '22'

Pencarian Berdasarkan Jenis Transaksi

Jenis TransaksiKeyword Pencarian
Addtransaction_type = 'A'
Updatetransaction_type = 'U'
Canceltransaction_type = 'C'
Deletetransaction_type = 'D'

Pencarian Berdasarkan Pesan Error

Jika user mendapatkan pesan error dari SAP, gunakan sebagian isi pesan tersebut sebagai keyword pencarian.

Contoh pesan:

User ini tidak berhak untuk cancel PO

Keyword yang dapat digunakan:

cancel PO

Contoh lainnya:

Pesan Error di SAPKeyword Pencarian
User ini tidak berhak untuk cancel POcancel PO
Tidak boleh add AP InvoiceAP Invoice
Wajib isi divisidivisi
Belum upload dokumenupload

Dengan cara ini, admin dapat langsung menemukan rule yang menyebabkan blocking tanpa harus mengetahui atau menebak object type terlebih dahulu.


4️⃣ Pindahkan Script ke SQL Console

⚠️ Jangan melakukan perubahan langsung melalui menu Open Definition.

Langkah-langkahnya:

  1. Buka SQL Console baru yang masih kosong.

  2. Salin seluruh isi procedure dari Open Definition.

  3. Tempelkan script tersebut ke SQL Console.

  4. Ubah bagian awal procedure dari:

CREATE PROCEDURE SBO_SP_TransactionNotification

Menjadi:

ALTER PROCEDURE SBO_SP_TransactionNotification

⚠️ Pastikan seluruh isi procedure sudah tersalin dan tidak ada bagian yang terpotong.


5️⃣ Cari Rule atau Blockingan yang Akan Diubah

Pada SQL Console, tekan:

CTRL + F

Cari menggunakan pesan error, nama rule, atau object type.

Contoh berdasarkan pesan error:

User ini tidak berhak untuk cancel PO

Contoh berdasarkan object type:

object_type = '22'

Pastikan rule yang ditemukan benar-benar sesuai dengan blocking yang akan diubah.


6️⃣ Menonaktifkan Blockingan Sementara

Untuk menonaktifkan sebuah rule sementara, tutup seluruh bagian rule menggunakan komentar.

Tambahkan:

/*

di awal rule, kemudian tambahkan:

*/

di akhir rule.

Contoh:

/* IF (:transaction_type = 'C') AND (:object_type = '22') THEN     -- Isi blocking 
END IF; */

⚠️ Pastikan tanda komentar mencakup satu rule secara lengkap, mulai dari IF sampai dengan END IF;.

Sebaiknya tambahkan keterangan agar perubahan dapat dilacak:

/* Dinonaktifkan sementara pada 31 Agustus 2026 Alasan: Menunggu konfirmasi user */

7️⃣ Menambahkan Rule Baru

Tambahkan rule baru di bagian bawah kumpulan blocking, tetapi tetap sebelum bagian akhir procedure.

Contoh blocking untuk Add A/P Invoice:

IF (:transaction_type = 'A') AND (:object_type = '18') THEN     error := :error + 1;    error_message := 'Blok Add AP Invoice'; 
END IF;

Sebelum menambahkan rule, pastikan:

  • object_type sudah sesuai dengan jenis dokumen.

  • transaction_type sudah sesuai dengan jenis transaksi.

  • Pesan error mudah dipahami oleh user.

  • Tidak ada rule lain dengan fungsi yang sama.

  • Rule sudah diuji terlebih dahulu di database TEST/UAT.


8️⃣ Simpan dan Aktifkan Perubahan

Klik tombol:

▶ Execute / Run

Jika proses berhasil, akan muncul pesan:

Procedure altered successfully

Artinya, perubahan sudah tersimpan dan langsung aktif.

Setelah berhasil, lakukan pengujian pada dokumen terkait untuk memastikan:

  • Blocking berjalan sesuai kondisi.

  • Dokumen yang seharusnya diblok tidak dapat diproses.

  • Dokumen yang tidak memenuhi kondisi blocking tetap dapat diproses.

  • Tidak ada pesan error syntax atau error procedure.


⚠️ Catatan Penting

  • Selalu lakukan backup script sebelum melakukan perubahan.

  • Utamakan pengujian di database TEST/UAT.

  • Pastikan schema database sudah benar sebelum menjalankan script.

  • Jangan mengubah rule lain yang tidak berkaitan.

  • Pastikan tidak ada bagian procedure yang terhapus atau terpotong.

  • Catat tanggal, alasan, dan pihak yang meminta perubahan.

  • Setelah update di database LIVE, lakukan pengujian bersama user terkait.