| opPrimeKey | output | longchar | Primary Key field value of loaded record(s). Keys are chr(4) separated. Key fields are chr(2) separated. |
| oiReturnStatus | output | integer | Return status of the method. |
if oiReturnStatus = 0
then oiReturnStatus = -98.
<Q-9 run SafConceptPrim (Start) in BSafConcept >
PROCESSBLOCK:
for each t_sSafStructure:
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
vcFreeform = "for each SafStructure where SafStructure.SafStructureCode = '":U + t_sSafStructure.SafStructureCode + "'":U.
<M-3 run DataLoad
(input '':U (icRowids),
input '':U (icPkeys),
input '':U (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BSafStructure>
if viFcReturnSuper >= 0
then do:
find first tSafStructure where
tSafStructure.SafStructureCode = t_sSafStructure.SafStructureCode
no-error.
if available tSafStructure and tSafStructure.tc_Status <> "":U
then do:
assign vcMessage = trim(#T-85'This SAF structure was already processed in this transaction.':255(561371344)T-85#) + chr(10) +
substitute(#T-23'SAF Structure Code: &1':255(104878325)T-23#, trim(t_sSafStructure.SafStructureCode))
oiReturnStatus = -1.
<M-63 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'tSafStructure.SafStructureCode':U (icFieldName),
input t_sSafStructure.SafStructureCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sSafStructure.tc_Rowid (icRowid),
input 'QadFin-488818':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BSafStructure>
return.
end. /* if available tSafStructure and tSafStructure.tc_Status <> "":U */
end. /* if viFcReturnSuper >= 0 */
end. /* if vcActivityCode <> "Create":U */
/* ================================================================= */
/* When in delete mode, ignore input data. */
/* When object not found, do not return an error. */
/* ================================================================= */
if vcActivityCode = "Delete":U
then do:
if viFcReturnSuper = -4
then delete t_sSafStructure.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sSafStructure.tc_Rowid = tSafStructure.tc_Rowid
t_sSafStructure.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tSafStructure.SafStructure_ID).
end.
next.
end.
if vcActivityCode = "Create":U
or viFcReturnSuper = -4
then do:
/* ================================================================= */
/* When object not found and in modify only mode, return an error. */
/* ================================================================= */
if vcActivityCode = "Modify":U
then do:
assign
vcMessage = trim(#T-2'Object with key $1 does not exist.':100(48021)T-2#).
<M-4 run SetMessage
(input vcMessage (icMessage),
input t_sSafStructure.SafStructureCode (icArguments),
input 'tSafStructure.SafStructureCode':U (icFieldName),
input t_sSafStructure.SafStructureCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sSafStructure.tc_Rowid (icRowid),
input 'QadFin-8602':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BSafStructure>
assign oiReturnStatus = -1.
leave PROCESSBLOCK.
end.
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-5 run AddDetailLine
(input 'SafStructure':U (icTable),
input '':U (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BSafStructure>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sSafStructure.tc_Status = "N":U
tSafStructure.tc_Status = "N":U. /* we need to assign this tomake are test for doubles work */
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sSafStructure.tc_Status = "C":U
tSafStructure.tc_Status = "C":U. /* we need to assign this tomake are test for doubles work */
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sSafStructure.SafStructure_ID = tSafStructure.SafStructure_ID.
/* insert code for subtables here */
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tSafStructureLine where
tSafStructureLine.tc_ParentRowid = tSafStructure.tc_Rowid:
assign tSafStructureLine.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sSafStructureLine where
t_sSafStructureLine.tc_ParentRowid = t_sSafStructure.tc_Rowid and
t_sSafStructureLine.tc_Status <> "D":U:
assign t_sSafStructureLine.SafStructure_ID = t_sSafStructure.SafStructure_ID.
if (t_sSafStructureLine.SafConcept_ID = 0 or
t_sSafStructureLine.SafConcept_ID = ?) and
t_sSafStructureLine.tcSafConceptCode <> "":U and
t_sSafStructureLine.tcSafConceptCode <> ?
then do:
<Q-8 run SafConceptPrim (all) (Read) (NoCache)
(input ?, (SafConceptID)
input t_sSafStructureLine.tcSafConceptCode, (SafConceptCode)
output dataset tqSafConceptPrim) in BSafConcept >
find first tqSafConceptPrim no-error.
if available tqSafConceptPrim
then assign t_sSafStructureLine.SafConcept_ID = tqSafConceptPrim.tiSafConcept_ID.
end.
find first tSafStructureLine where
tSafStructureLine.tc_ParentRowid = tSafStructure.tc_Rowid and
tSafStructureLine.SafConcept_ID = t_sSafStructureLine.SafConcept_ID no-error.
if available tSafStructureLine
then assign t_sSafStructureLine.tc_Status = "C":U
t_sSafStructureLine.SafStructureLine_ID = tSafStructureLine.SafStructureLine_ID.
else do:
<M-6 run AddDetailLine
(input 'SafStructureLine':U (icTable),
input tSafStructure.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BSafStructure>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then leave PROCESSBLOCK.
assign t_sSafStructureLine.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign
t_sSafStructureLine.SafStructureLine_ID = tSafStructureLine.SafStructureLine_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sSafStructureLine.SafStructure_ID = tSafStructureLine.SafStructure_ID
t_sSafStructureLine.tc_Rowid = tSafStructureLine.tc_Rowid
t_sSafStructureLine.tc_ParentRowid = tSafStructure.tc_Rowid.
end.
<I-81 {UpdateTransString
&TABLE = "SafStructure"}>
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sSafStructure.SafStructure_ID = tSafStructure.SafStructure_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sSafStructure.tc_Rowid = tSafStructure.tc_Rowid
t_sSafStructure.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tSafStructure.SafStructure_ID).
end.
<Q-10 run SafConceptPrim (Stop) in BSafConcept >
if oiReturnStatus = -98
then oiReturnStatus = 0.