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.
| Lingkungan | Schema |
|---|---|
| LIVE / Production | MJG_LIVE |
| TEST / UAT | MJG_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
| Dokumen | Object 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 Transaksi | Keyword Pencarian |
|---|---|
| Add | transaction_type = 'A' |
| Update | transaction_type = 'U' |
| Cancel | transaction_type = 'C' |
| Delete | transaction_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 SAP | Keyword Pencarian |
|---|---|
| User ini tidak berhak untuk cancel PO | cancel PO |
| Tidak boleh add AP Invoice | AP Invoice |
| Wajib isi divisi | divisi |
| Belum upload dokumen | upload |
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:
Buka SQL Console baru yang masih kosong.
Salin seluruh isi procedure dari Open Definition.
Tempelkan script tersebut ke SQL Console.
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
IFsampai denganEND 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_typesudah sesuai dengan jenis dokumen.transaction_typesudah 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.