Stored Procedures in SAP Business One

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

2022-08-09 1320484

1320484 - Stored Procedures in SAP Business One


Version 23 Type SAP Business One Notes
Language English Master Language English
Priority Recommendations/additional info Category FAQ
Release Status Released for Customer Released On 13.10.2021
Component SBO-SDK-TNSP ( SDK Transaction Notification Stored procedure )

Please find the original document at https://launchpad.support.sap.com/#/notes/ 1320484

Symptom

This note deals with SAP Business One stored procedures, their purposes, usage, limitations and support
scope.

Solution

Purpose:

The purpose of Transaction Notifications is to enable the partner/customer to receive notification and register
logs on any transaction taking place within the SAP Business One database. SAP Business One provides
two stored procedure mechanisms for receiving notification of data-driven events.

• SBO_SP_TransactionNotification
• SBO_SP_PostTransactionNotice

It is triggered for the majority of the SAP Business One transactions and user-defined objects (UDO),
whenever operations such as add, update, delete, cancel, close are performed in SAP Business One Client
or DI API or DIServer or ServiceLayer.

SBO_SP_TransactionNotification is triggered before the SAP Business One transaction is committed. It can
be used to roll back transactions and display custom error messages in the SAP Business One Client.

SBO_SP_PostTransactionNotice is triggered after the SAP Business One transaction is committed.

Depending on the Business Object and the operation performed, there could be multiple notification
procedures triggered in a sequence. For example, when you update an item code, both notifications will be
triggered for every warehouse associated to the item code and also for the item code itself.

• SBO_SP_EDF_TransactionNotification(Obsolete)

This was introduced for Electronic document handling, but no longer has usage.

Usage:

Notification Procedures can be edited by the user to add SQL scripts as part of a notification process.

Both stored procedures have 5 parameters.

Parameter Example Remarks


A full list of object types exposed through DI API can be found in
2 (Business
@objecttype the DI API documentation under the section Enumerations. The
Partner)
enumeration is called BoObjectTypes.

© 2022 SAP SE or an SAP affiliate company. All rights reserved 1 of 6


2022-08-09 1320484
It may have values of: A (where a record was added) U (where a
@transaction_type U (update) record was updated) D (where a record was deleted) C (where a
document was canceled) L (where a document was closed)
Returns the number of columns or fields in the key to the record. A
Business Partner, for example, has a key consisting of a single
field (CardCode), so this variable would have a value of "1". A
@num_of_cols_in_key 1
Special Prices object, however, has a key consisting of the
CardCode and ItemCode, so for a Special Prices object, this
variable would have a value of "2".
It returns a tab-delimited list of column names (field names) that
represent the object key. For a Business Partner, this would be
@list_of_key_cols_tab_del CardCode
CardCode. For a Special Prices object, it would be CardCode
ItemCode.
This returns a tab-delimited list of values required to retrieve the
object from SAP Business One. For example, a Business Partner
@list_of_cols_val_tab_del C40001 record might have a value of "C40001". A Special Prices object
would contain 2 fields separated by a tab character, for example:
"V10005 ... A00001"

Both stored procedures have 2 return values.

@error - You can set any value other than 0 to trigger rollback of a transaction
(SBO_SP_TransactionNotification) or register the transaction on the log files (
SBO_SP_PostTransactionNotice).

@error_message - You set a string value which will be displayed in the SAP Business One Client status bar (
SBO_SP_TransactionNotification) or on the log files (SBO_SP_PostTransactionNotice).

You can add your validation as below.

Sample code for MSSQL

© 2022 SAP SE or an SAP affiliate company. All rights reserved 2 of 6


2022-08-09 1320484

The additional code must be exception free and no TRY/CATCH handling in SQL Server will be supported.

Enhancements:

1. Enable/Disable TransactionNotification:

By default, TransactionNotification is enabled and triggered for the majority of SAP Business One
transactions.

Starting from SAP Business One 9.1 PL05, TransactionNotification can be disabled for a company database
for all objects (Administration → System Initialization → General Setting → Service).

TransactionNotification can also be disabled for a specific object by setting an entry in the [CompanyBD].
CTNS table. Currently there is no user interface in SAP Business One to set the entries. They need to be set
manually as below.

INSERT INTO CTNS VALUES ((select max(Absid) + 1 from CTNS),'2','Y','N','N');

© 2022 SAP SE or an SAP affiliate company. All rights reserved 3 of 6


2022-08-09 1320484

CTNS.EnableAsyN = 'Y' means that relevant operations on this object will trigger SEVT notification; 'N'
means they will not

CTNS.EnableTn = 'Y' means that relevant operations on this object will trigger an
SBO_SP_TRANSACTIONNOTIFICATION notification; 'N' means they will not

CTNS.EnablePTn = 'Y' means that relevant operations on this object will trigger an
SBO_SP_POSTTRANSACTIONNOTICE notification; 'N' means they will not

By default, the following objects are registered into CTNS to NOT send the three kinds of notifications (SEVT;
SBO_SP_TRANSACTIONNOTIFICATION; SBO_SP_POSTTRANSACTIONNOTICE):

• 10000044 (BTN)
• 10000045 (SRN)
• 10000066 (SRQ)
• 10000067(BTQ)
• 310000008 (BTW)
• 10000062 (IVL)
• 310000000 (IVK)
• 310000003 (IVQ)
• 310000005 (IVE)

2. Add the user_id parameter to SBO_SP_TransactionNotification

Starting from SAP Business One version 10.0 FP 2108, you can add user_id (integer type) as the 6th
parameter into the procedure SBO_SP_TransactionNotification. Before you add the parameter, close all
active applications connected to the SAP Business One database. This parameter is not applicable for
SBO_SP_PostTransactionNotice.

Sample code for SAP Business One, version for SAP HANA

© 2022 SAP SE or an SAP affiliate company. All rights reserved 4 of 6


2022-08-09 1320484

Limitations:

Please see SAP Note 1480546 - Period and Volume Discounts

Support Scope:

The Transaction Notification stored procedures are provided "as is" and the support does not apply for the
logic implemented in the procedures.

The guidelines below should be followed when building the logic in the notification procedure.

1. Do not change ISOLATION LEVELS within the procedures.


2. Do not COMMIT/ROLLBACK transactions within the procedure.
3. Do not directly update/delete/insert SAP Business One tables within the procedures.
4. Do not use long, time-consuming logic because it may introduce performance issues.

Please refer to the maintenance policy document and SAP Note 2371729 for more details.

Other terms

SDK, documentation, DI Event Service, approval, SBO_SP_TransactionSupport,


SBO_SP_PostTransactionSupport, sql, @error, Internal Error 3621 occurred Message 13, CTNS

© 2022 SAP SE or an SAP affiliate company. All rights reserved 5 of 6


2022-08-09 1320484

Products

SAP B1 VERSION FOR SAP HANA all versions


SAP BUSINESS ONE all versions

This document refers to

SAP Note/KBA Title

1298609 UDO_Error when updating user defined Table or Object

Terms of use | Copyright | Trademark | Legal Disclosure | Privacy

© 2022 SAP SE or an SAP affiliate company. All rights reserved 6 of 6

You might also like