Description
A sub part of the transaction process.
This function must be public, so it can be called from the transaction component, but should not be used directly by the developer.
Parameters
oiReturnStatus | output | integer | |
Internal usage
BLF
program code (program1/database.p)
<M-19 run DataDescription
(input '' (icRowids),
input '' (icPkey),
input '' (icObjectIds),
input no (ilAllTables),
output viFcReturnSuper (oiReturnStatus)) in database>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* nothing to save ? */
if not can-find (first tFcDynRel)
then do:
if oiReturnStatus = -98
then assign oiReturnStatus = 0.
return.
end.
/* When the data received from the client is not validated, it can only be saved as a draft instance. */
/* When nothing was received from the client, maybe there is nothing to save */
if not vlFcDataValidated
then do:
vlFcDataValidated = yes.
for each tFcDynRel on error undo, throw:
tFcDynRel.thFcBuffer:find-unique ("where tc_Status <> ''") no-error.
if tFcDynRel.thFcBuffer:available
or tFcDynRel.thFcBuffer:ambiguous
then do:
vlFcDataValidated = no.
leave.
end.
end.
end.
if not vlFcDataValidated
then do:
<M-17 run SetMessage
(input #T-18'Data to save ($1) has not been validated.':100(71)t-18# (icMessage),
input vcFcComponentName (icArguments),
input 'vifcCurrentInstanceId' (icFieldName),
input string (vifcCurrentInstanceId) (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'BLF-308':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in database>
assign oiReturnStatus = -3.
return.
end.
<M-10 run PreSave (output viFcReturnSuper (oiReturnStatus)) in database>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
<M-11 run StartPersistence
(output vhFcComponent (ohPersistence),
output viFcReturnSuper (oiReturnStatus)) in database>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
<M-20 run ClearBuffers () in persistence>
<M-5 run WriteData
(input tFcDynRel (tDynRel),
input {&TARGETPROCEDURE} (ihClass),
input buffer tFcRowidConvert:handle (ihRowidConvert),
input vcUserLogin (icUserLogin),
output viFcReturnSuper (oiReturnStatus)) in persistence>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
<M-3 run PostSave (output viFcReturnSuper (oiReturnStatus)) in database>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.