Writing /giga/dw/dng/dokuwiki/data/meta/dev/010how/100sys/0029syssdb.meta failed
dev:010how:100sys:0029syssdb

Database Access Functions

Module SYSSDB Database Access Functions

Description

Module to hold all database related system rules including rules to support the Audit Trail.

Database Access

Any access to the connected database is capsuled in TradeDesign commands and corresponding support rules. Names of all support rules start with SDB and are collected in this module. The SDB… rules cover some additional functionality like e.g. multi entity handling for the database entries. Whereever possible the SDB rules should be used.

In rare cases it might be needed to use direct TradeDesign commands, e.g. DBRead in case the INR is given and might belong to another than the current entity.

Direct SQL from DOKA-NG Sources

TradeDesign offers the commands DBExecuteSQL and DBExecuteSQLvar to run direct SQL commands. This is mainly meant to select groups of entries. It should be avoided to execute any database change (Insert, update, delete) as direct SQL. This will change or in the worst case even destroy data without any log and might also result in inconsistent data.

Audit Trail

Enhanced audit trail logging is available since DOKA-NG 2.4. How it is working in detail see chapter 'Audit Trail' in the application documentation. Here it is described how the database access function needs to be used by application developers. Key point for the audit trail is the logging of database changes and config changes in table SLG and the connected flat file stored in data\log. The file name is same as the corresponding SLG\INR. As application developer you need to understand when and how to create SLG entries and how to add additional entries to those flat files. As soon as the SLG entries are available the manager SLFTSK will pick them up and create the necessary entries in the audit trail tables SLT and SLF.

We have to distinguish between two different kind of database transactions.

Audit Trail for single self contained database changes

  • REC/RECGRP/Tables containing VER Field
    Any insert/update/delete which is executed with SDBxxxwithlog creates one SLG containing all changes in any module contained in RECGRP. Same happens if instead of a RECGRP a dedicated module is used. For those no further actions needs to be taken.
  • Tables without VER field
    t.b.d

Audit Trail for grouped set of database changes (with additional modules)

For the main object (e.g. contract group or static data group) a single SLG, containing all changes in any module contained in the main object group, is generated at the end of the database transaction. In case additional modules should be included to the audit trail for the same database transaction you need to use special SdbSLG… rules.

As a result the SLG file will contain in addition to the main object group:

  1. a TBLSTM containing one line per added module
  2. Savedata structures for old and new version per additional module

A sequence of commands is required to be called in order to build the correct data file structure:

  • SdbSlgInitAuditTrailLogging to start the database transaction which should be logged
  • SdbSlginsert/update/delete instead of sdbinsert/update/delete for every module which should be added to the audit trail connected to this database transaction
    OR
    SdbSlginsert/update/deleteWITHLOG for every module which should, at the same time, create an own SLG plus should be added to the main database transaction (e.g. OIT, DIA)
  • SdbSlgWriteforAuditTrail to close the database transaction and write all collected data to SLG and the flat file

The calls of SdbSlgInitAuditTrailLogging and SdbSlgWriteforAuditTrail are part of the product logic in any static data and business transaction. Thus in general you only have to take care for the specific database update and use the relevant SdbSLG… rule instead of Sdb…

Any direct (S)DBInsert/update/delete will not collect any data for additional modules for the audit trail, even if called within a database transaction.

Handling in SLFTSK

  • for single self contained database changes
    From the RECGRP in save data file (label DEFAULT), SLFTSK handles only REC, BLK and DIA and generates relevant entries for SLT and SLF. In case additional modules are needed, these must be added in IsModRelevant
  • for grouped set of database changes (with additional modules)
    From the RECGRP in save data file (label DEFAULT), all submodules are handled (i.e. generate SLT / SLF) except of excluded modules configured in Level 5 SRVSLF.IsSubModRelevant.
  • for single fields
    In case single fields (e.g. fields containing passwords) should be excluded from the audit trail, these cases must be handled in SRVSLF.SetSpecialObjandFld

Properties

Property YES/NO
Single page frame No
Show toolbar No
Show menu No
Show statusbar No
Show hint No
Fit panel size No

Datafields

Name Description Data Type Len Dec. View lines View type Inst. Visible Codetable
AUDOPNTRNFLG Audit Trail Logging is active Text 40 1 Edit Yes Public
WRTSLGFLG Write own SLG Flag Text 1 1 Edit Yes Public
SKPMANSLG Skip Main SLG Recorg Text 1 1 Edit Yes Public

Datafield Description and Properties

Datafield AUDOPNTRNFLG Audit Trail Logging is active

Description

If not empty, the Audit Trail data collection is active.

If Active SDB…..withLog functions will NOT create SLG Record and SaveData File when called

Final SLG Record for main REC/RECGRP must be executed by calling


Datafield WRTSLGFLG Write own SLG Flag

Description

If not empty, SlgWritelog will created SLG for passed object even if within main rec / recgrp / object database transaction.

In this case no audit trail info will be included


Datafield SKPMANSLG Skip Main SLG Recorg

Description

If set to a non empty values while inside the main record DB update transaction, the creation of the final SLG record for main recgrp is skiped.

This is needed for example in DBEUAB where a group of single UAB records are created but there is no main record holding them together.


Rules

Rule Name Additional
function SdbEtyGenInsSql text global
function SdbEtyGenSql text global
function SdbEtyGenStbSql text global
function SdbEtyGenTblSql text global
function SdbEtyGetInsEtyFlg text global
function SdbEtyGetVisEtySql text global
function SdbTblHasFld boolean global
sub SdbDelete global
sub SdbDeleteWithLog global
sub SdbEtyGetCurKeys global
sub SdbEtyRead global
sub SdbEtyReadSql global
sub SdbEtySelect global
sub SdbEtySetRec global
sub SdbFree global
sub SdbInsert global
sub SdbInsertHold global
sub SdbInsertWithLog global
sub SdbRead global
sub SdbReadHold global
sub SdbReadLock global
sub SdbSlgAddModData static
sub SdbSlgAddModule global
sub SdbSlgCheckAuditTrailComplete global
sub SdbSlgDelete global
sub SdbSlgDeleteWithLog global
sub SdbSlgInitAuditTrailLogging static
sub SdbSlgInsert global
sub SdbSlgInsertHold global
sub SdbSlgInsertWithLog global
sub SdbSlgRegisterAddModule static
sub SdbSlgRegisterUpdate global
sub SdbSlgSkipGroupedAuditTrailLogging static
sub SdbSlgUndelete global
sub SdbSlgUndeleteWithLog global
sub SdbSlgUpdate global
sub SdbSlgUpdatePreviousInsert global
sub SdbSlgUpdateWithLog global
sub SdbSlgWrite global
sub SdbSlgWriteForAuditTrail static
sub SdbUndelete global
sub SdbUndeleteWithLog global
sub SdbUpdate global
sub SdbUpdateWithLog global

Rules Description and Comments

function SdbEtyGenInsSql ( in ArgRec module, in ArgIns text, in ArgEtg text, in ArgEty text ) : text global

The purpose of this function is to return the SQL-expression necessary
to describe the selectors for the passed table fitting for an explicitly named Entitygroup
and/or Entity. If the Entitygroup or the Entity are passed as an empty string
the entitygroup and / or the entity of the current active environment are used.

ArgRec module to retreive check the entity assoziation
ArgIns optional instance name used in the generated SQL
ArgEtg optional entitygroup to be used
ArgEty optional entity to be used
if ArgEtg and ArgEty are passed with the value “<ssn>” the currently used entity is used independent of any
set context or customization within SdbEtyGetFldCon

If any restricted read access (RRA) logic is implemented this logic is called by an access to SdbEtyGenRraCon and integrated into the
multi entity filter returned.

No contents of the passed module is taken. The only reason for
passing the module is to supply the structure of the table to be
able to determine the existence of the entity and entitygroup columns
in the table. If no module is available, use SdbEtyGenTblSql and
identify the table by it`s tablename.

The returned clause has to be connected with a logical and to the other
conditions used to describe the resulting set.

CAUTION: If there are conditions connected with a logical OR the whole condition has
to be put in parentheses before connecting with the Entity condition returned.
Probably use SqlAndCondition to combine the conditions.

The returned clause is put into brackets if it is a combined expression.

Corresponding functions: SdbEtySelect, SdbEtyReadSql, SdbEtyRead, SdbEtyGenSql, SdbEtyGenTblSql, SdbEtyGenStbSql, SdbEtyGenRraCon


function SdbEtyGenSql ( in ArgRec module, in ArgSql text ) : text global

The purpose of this function is to add the SQL-expression necessary
to describe the selectors for the passed table in the current
active environment to the passed SQL-expression.
No contents of the passed module is taken. The only reason for
passing the module is to supply the structure of the table to be able to
determine the existence of the entity and entitygroup columns in the table.
The passed sql-query may only hold the where part of an SQL command
with or without the leading literal “where”.

If there is no other where criteria this routine might be called with an
empty second argument. In this case only when Entity or Entitygroup restrictions
are required, a where clause will be return otherwise the result is empty.

The resulting SQL-query always includes the leading where phrase.

Corresponding functions: SdbEtySelect, SdbEtyReadSql, SdbEtyRead, SdbEtyGenInsSql


function SdbEtyGenStbSql ( in ArgCod text, in ArgIns text, in ArgEtg text ) : text global

The purpose of this function is to return the SQL-expression necessary
to describe the selectors for the passed codetable matching for an explicitly named Entitygroup
and/or Entity. If the Entitygroup or the Entity are passed as an empty string
the entitygroup and / or the entity of the current active environment are used.

The passed codetable name is used to determine the configured multientity configuration.

The returned clause has to be connected with a logical and to the other
conditions used to describe the resulting set.

CAUTION: If there are conditions connected with a logical OR the whole condition has
to be put in parentheses before connecting with the Entity condition returned.
Probably use SqlAndCondition to combine the conditions.

The returned clause is put into brackets if it is a combined expression.

Corresponding functions: SdbEtySelect, SdbEtyReadSql, SdbEtyRead, SdbEtyGenSql, SdbEtyGenInsSql


function SdbEtyGenTblSql ( in ArgTbl text, in ArgIns text, in ArgEtg text, in ArgEty text ) : text global

The purpose of this function is to return the SQL-expression necessary
to describe the selectors for the passed table fitting for an explicitly named Entitygroup
and/or Entity. If the Entitygroup or the Entity are passed as an empty string
the entitygroup and / or the entity of the current active environment are used.

The passed tablename is used to determine configured multientity configuration.

ArgTbl holds the table name of the table setting the entity configuration
ArgIns holds an optional instance name of the table instance used in the access sql
ArgEtg holds an optional entitygroup to be used
ArgEty holds an optional entity to be used

if ArgEtg and ArgEty are passed with the value “<ssn>” the currently used ETY is used independent of any
set context or customization within SdbEtyGetFldCon

If any restricted read access (RRA) logic is implemented this logic is called by an access to SdbEtyGenRraCon and integrated into the
multi entity filter returned.

The returned clause has to be connected with a logical and to the other
conditions used to describe the resulting set.

CAUTION: If there are conditions connected with a logical OR the whole condition has
to be put in parentheses before connecting with the Entity condition returned.
Probably use SqlAndCondition to combine the conditions.

The returned clause is put into brackets if it is a combined expression.

Corresponding functions: SdbEtySelect, SdbEtyReadSql, SdbEtyRead, SdbEtyGenSql, SdbEtyGenInsSql, SdbEtyGenStbSql, SdbEtyGenRraCon


function SdbEtyGetInsEtyFlg ( in ArgRec module, in ArgTbl text ) : text global

Function to determine the EtyFlg for a given databasetable.
The function returns the following values:
empty → table is global or no multi entity is installed
“G” → table is defined on entitygroup level
“E” → table is defined on entity level
“B” → table is defined on both entitygroup and entity level

ArgRec either root or a moduleinstance of a record group or record
ArgTbl either empty or a tablename
if both are set the tablename has to be identical to the tablename associated to the class of the passed module


function SdbEtyGetVisEtySql ( in ArgUsr text ) : text global

Function to determine the SQL to create a list of available entities of the passed user

Corresponding function: SdbEtyGetFldCon


function SdbTblHasFld ( in ArgRec module, in ArgTbl text, in ArgFld text ) : boolean global

function to check for the existence of a field in a database table
ArgRec holds an instance describing the table to be checked (or \ in case no instance is available)
ArgTbl holds the table name to be checked or an empty value. This value is only used of no instance is available.
ArgFld holds the column name to be checked
the function uses the module structure or system tables of the used database to determine the existence of a column

The function returns true in case the field exists in the table.

Corresponding functions: SdbEtyGenTblSql, SdbEtyGenInsSql, SdbEtyGetInsEtyFlg, SdbEtyGenRraCon


sub SdbDelete ( in ArgRec module ) global

removes the entry specified by ArgRec.
If logging for audit trail has been activated by previous call to SdbSlgEnableRegisterUpdate
deleted ArgRec is added to the Audit Trail logging.
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Deletes the record specified by ArgRec into the database.
Deletes with this function are NOT logged or added to the audit trail. In case logging or audit trail for the Delete is needed use SdbSlgDelete or SdbDeletewithLog
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbSlgDelete, SdbDeletewithLog


sub SdbDeleteWithLog ( in ArgRec module ) global

Deletes the record specified by ArgRec into the database.
Deleted ArgRec is logged and added to the Audit Trail.
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbDelete, SdbSlgDelete


sub SdbEtyGetCurKeys ( inout ArgEtg text, inout ArgEty text ) global

Routine to set the entity and entitygroup fields to the currently active values (if not already set)
both arguments might be passed empty and will return the respective value of the currently active entity and entitygroup
ArgEtg
ArgEty


sub SdbEtyRead ( inout Rec module, in ArgValue text, in ArgField text ) global

This procedure performs a read on a table via a search field, usually OWNREF
with a possible integrated reduction to the entries of the current
entity or entitygroup.
Corresponding functions: SdbEtySelect, SdbEtyGenSql, SdbEtyReadSql
Via EXIT the return to caller takes place with the errorcode of the DBRead


sub SdbEtyReadSql ( inout Rec module, in ArgSql text ) global

This procedure performs a read on a table via a SQL where clause
with a possible integrated reduction to the entries of the current
entity or entitygroup.
Corresponding functions: SdbEtySelect, SdbEtyGenSql, SdbEtyRead
Via EXIT the return to caller takes place with the errorcode of the DBRead


sub SdbEtySelect ( inout rec module, in SelNam text, in SelWhere text, in SelAddSql text ) global

Executes DbSelect based on the passed SelNam and the SQL depending
on the existence of the entity and/or entitygroup fields the selection will
automatically be reduced to the current entitygroup and/or entity.
The passed module has to be the record itself.
Record groups are not allowed.
The SQL-Query has to be passed to the routine in two parts.
The where part and the additional part holding clauses like order.
Corresponding functions: SdbEtyGenSql, SdbEtyRead, SdbEtyReadSql
via EXIT the return to caller takes place with the errorcode of the DBSelect


sub SdbEtySetRec ( inout ArgRec module, in ArgEtg text, in ArgEty text ) global

Routine to fill fields of a record / record group with multi entity or normalized fields
depending on the multi entity / normalized fields configuration.
ArgRec holds the record or record group
ArgEtg holds the required entity group or blank if the current entity group shall be taken.
ArgEty holds the required entity or blank if the current entity shall be taken.


sub SdbFree( in ArgRec module ) global

Removes a lock on the passed module
ArgRec may be a record, a recordgroup or a module of type SYSOBJ


sub SdbInsert( inout ArgRec module ) global

Inserts the record specified by ArgRec into the database.
Inserts with this function are NOT logged or added to the audit trail. In case logging or audit trail for the insert is needed us SdbSlgInsert or SdbInsertwithLog
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbSlgInsert, SdbInsertwithLog


sub SdbInsertHold( inout ArgRec module ) global

Inserts the record specified by ArgRec into the database and sets a hold lock for the new record
Inserts with this function are NOT logged or added to the audit trail. In case logging or audit trail for the insert is needed us SdbSlgInsert or SdbInsertwithLog
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbSlgInsertHold, SdbInsertwithLogHold


sub SdbInsertWithLog( inout ArgRec module ) global

Inserts the record specified by ArgRec into the database.
inserted ArgRec is logged and added to the Audit Trail.
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Correspondin: SdbInsert, SdbSlgInsert


sub SdbRead( inout ArgRec module, in ArgInr text ) global

reads the record rec based on the passed INR.
ArgRec: Module into which the read record is loaded
ArgInr: INR that identifies the record


sub SdbReadHold( inout ArgRec module, in ArgInr text ) global

reads the record rec based on the passed INR and sets a hold lock for the read record
ArgRec: Module into which the read record is loaded
ArgInr: INR that identifies the record


sub SdbReadLock( inout ArgRec module, in ArgInr text ) global

reads the record rec based on the passed INR and sets a lock for the read record
ArgRec: Module into which the read record is loaded
ArgInr: INR that identifies the record
If the record to be locked is already locked by the own process
the record is reread from the database.
If the record is not found, the own lock is automatically
released via dbfree of the record.


sub SdbSlgAddModData( in ArgRec module, in ArgFct text ) static

rule to store the content of passed module to Slg save data log stream for use in SLFTSK for entries not in xxxGRP

ArgRec holds the module ( has to hold a valid INR)
ArgFct holds the function code ( 'R'ead (old version) ,'I'nsert, 'U'pdate and 'D'delete are used by SLFTSK)

Usually a call with function code R and one of the others is used to log a change of an entry

Corresponding: SdbSlgEnableRegisterUpdate ( needs to be executed before the call of SdbSlgRegisterModule)
SdbSlgWrite ( via withlog functions) has to be execueted after SdbSlgRegisterModule calls to write the log entry


sub SdbSlgAddModule( in ArgModPth text, in ArgAddPth text, in ArgAddLab text ) global

function to include an additional module into the logged data
When called, the logging is independent from the activation of advanced audit trail logging.
Any module added with this function to the logging is included in the log created by the xxxwithLog functions and is added when
SdbSlgWrite is executed
ArgModPth holds the full path of the module which will be updated and where an
additional module data shall be included into the logged data
ArgAddPth holds a full path of a module instance to be included into the logged data
ArgAddLab holds the label which shall be used in the savedata stream


sub SdbSlgDelete( inout Argrec module ) global

Deletes the record specified by ArgRec into the database.
Deletes with this function are logged and added to the audit trail. To be used for modules which are not included in the Main REC/RECGRP
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
corresponding: SdbDelete, SdbDeleteWithLog


sub SdbSlgInitAuditTrailLogging static

Rule to initiate and activate the collection of updates to the database
Typically called in SAV Event short before order 500 (e.g. in order 495) to activate Audit Trail logging
for additional database changes in non main record tables (e.g. CBB, ORD etc.).
Each call to SdbInsert, Sdbupdate, Sdbdelete will register the relevant module.
SdbSlgWrite (called in SdbxxxWithLog or in case handled manually (SdbSlgOwnWrite) will add all registered module to the log.
Corresponding: SdbSlgRegisterUpdate


sub SdbSlgInsert( inout Argrec module ) global

Inserts the record specified by ArgRec into the database.
Inserts with this function are logged and added to the audit trail for the MAIN / REC / RECGRP SLG. To be used for modules which are not included in the Main REC/RECGRP
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbInsert, SdbInsertwithLog


sub SdbSlgInsertHold( inout Argrec module ) global

Inserts the record specified by ArgRec into the database and sets a hold Lock for the new record
Inserts with this function are logged and added to the audit trail. To be used for modules which are not included in the Main REC/RECGRP
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbInsert, SdbInsertwithLog


sub SdbSlgRegisterAddModule( in ArgRec module, in ArgFct text ) static

Helper rule to register the execution of a database changes for the passed module
Each registered module will trigger the creation of a SLT audit trail record.

Called from SdbInsert/SdbUpdate/SdbDelete and will register any updated module.
Should not be necessary to call this function directl

ArgRec holds the module which is updated in the database
ArgFct holds the function code which is executed ('I'nsert, 'U'pdate, 'D'delete)

When module is added with this function, make sure that relevant b efor / After field data is added as well
Corresponding: SdbSlgEnableRegisterUpdate


sub SdbSlgUpdate( inout Argrec module ) global

updates the record specified by ArgRec into the database.
updates with this function are logged and added to the audit trail. To be used for modules which are not included in the Main REC/RECGRP
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbUpdate, SdbUpdatewithLog


sub SdbSlgWrite( in ArgLogMod module, in Fct text ) global

Internal routine to write the log record for any type of record or recordgroup.
LogMod holds the record or recordgroup to be stored.
The record has to include the fields INR to identify the entry and VER to count the version.
Fct holds the function code used in SLG (`U`pdate, `I`nsert, `D`elete)


sub SdbSlgWriteForAuditTrail( in ArgLogMod module, in Fct text ) static

Rule to execute the creation of SdbSlgWrite in case it has been set to manual execution with SdbSlgRegisterOwnSlgWrite.
LogMod holds the record or recordgroup that has beenstored.
The record has to include the fields INR to identify the entry and VER to count the version.
Fct holds the function code used in SLG (`U`pdate, `I`nsert, `D`elete)
To be called at the end of the insert/update/delete process once all Audit Trail relevant modules have been registered for logging.
Corresponding: SdbSlgRegisterOwnSlgWrite,


sub SdbUpdate ( in ArgRec module ) global

updates the record specified by ArgRec into the database.
Updates with this function are NOT logged or added to the audit trail. In case logging or audit trail for the update is needed us SdbSlgUpdate or SdbUpdatewithLog
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbSlgUpdate, SdbUpdatewithLog


sub SdbUpdateWithLog( in ArgRec module ) global

Updates the record specified by ArgRec into the database.
Updates ArgRec is logged and added to the Audit Trail.
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Correspondin: SdbUpdate, SdbSlgUpdate


sub SdbSlgCheckAuditTrailComplete global

Final check if Audit Trail processing is complete and there are no open ends.
To be called late in SAV events after processing of all save tasks have been done


sub SdbSlgDeleteWithLog( in ArgRec module ) global

delete the module specified.
If it contains a REC, REC is deleted, otherwise the module itself
In log the complete module (record group or record) is stored.
deletes the record specified by ArgRec into the database.
delete with this function create separate SLG for ArgRec and add audit trail slg logging info for Main /REC/RECGRP
To be used for modules which are not included in the Main REC/RECGRP but should create audit trail under main
ArgRec may be a rec, rec-group or a Module of type SYSOBJ


sub SdbSlgInsertWithLog( inout ArgRec module ) global

Inserts the record specified by ArgRec into the database.
Inserts with this function create separate SLG for ArgRec and add audit trail slg logging info for Main /REC/RECGRP
To be used for modules which are not included in the Main REC/RECGRP but should create audit trail under main
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbInsert, SdbInsertwithLog


sub SdbSlgUndelete( inout Argrec module ) global

reinserts record Argrec into the table including registering for SLG.


sub SdbSlgUndeleteWithLog( in ArgRec module ) global

Undelete the record specified by ArgRec into the database.
Undelete with this function create separate SLG for ArgRec and add audit trail slg logging info for Main /REC/RECGRP
To be used for modules which are not included in the Main REC/RECGRP but should create audit trail under main
ArgRec may be a rec, rec-group or a Module of type SYSOBJ


sub SdbSlgUpdatePreviousInsert( inout Argrec module ) global

updates a record that was previously inserted to get basic record data (like INR), but requires to be updated within DB transaction after other tasks had been finished
e.g. in a business transaction TRN is inserted early to get the TRNINR but later updated with newer data.
Updates with this function are logged and added to the audit trail as INSERT. To be used for modules which are not included in the Main REC/RECGRP
ArgRec may be a rec, rec-group or a Module of type SYSOBJ
Corresponding: SdbUpdate, SdbUpdatewithLog, SdbSlgUpdate


sub SdbSlgUpdateWithLog( in ArgRec module ) global

Updates the record specified by ArgRec into the database.
Updates with this function create separate SLG for ArgRec and add audit trail slg logging info for Main /REC/RECGRP
To be used for modules which are not included in the Main REC/RECGRP but should create audit trail under main
ArgRec may be a rec, rec-group or a Module of type SYSOBJ


sub SdbSlgSkipGroupedAuditTrailLogging static

Turns off the collection of updates to the database for Main DB transactions
While the grouped audit trail logging is activated by default for main DB transactions, it might bee needed in some cases (e.g. DBEUAB), not to create SLG for the main record
so calling this function before the final insert/update/delete will cancel the creation of a grouped SLG record
Corresponding: SdbSlgRegisterUpdate


Modules

Module class Instance Comment
TMPSTM SDBTBL
TMPSTM SDBMOD
dev/010how/100sys/0029syssdb.txt · Last modified: 2024/04/05 10:10 (external edit)