| 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. |
assign viLocalReturn = 0
oiReturnStatus = -98.
MAIN_BLOCK:
do on error undo, return:
if not valid-handle(vhSessionInst)
then do:
<I-8 {bFcOpenInstance
&CLASS = "Session"}>
assign vlIsSessionOpenedHere = true.
end.
<M-1 run GetIntegerValue
(input 'SharedSetForCOSTCENTERCOAMASK':U (icName),
output viCOAMaskCCSharedSetId (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturn = 0)
then assign viLocalReturn = viFcReturnSuper.
<M-18 run GetIntegerValue
(input 'SharedSetForGL':U (icName),
output viGLSharedSetID (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturn = 0)
then assign viLocalReturn = viFcReturnSuper.
<M-19 run GetIntegerValue
(input 'SharedSetForDIVISION':U (icName),
output viDivSharedSetId (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturn = 0)
then assign viLocalReturn = viFcReturnSuper.
if vlIsSessionOpenedHere
then do:
<I-20 {bFcCloseInstance
&CLASS = "Session"}>
end.
if viFcReturnSuper < 0 or viLocalReturn < 0 then leave MAIN_BLOCK.
for each t_sCOAMaskCC:
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
/* fill SharedSet_id when blank */
if t_sCOAMaskCC.SharedSet_ID = 0 or
t_sCOAMaskCC.SharedSet_ID = ?
then assign t_sCOAMaskCC.SharedSet_ID = viCOAMaskCCSharedSetId.
vcFreeform = "for each COAMaskCC where COAMaskCC.COAMaskCCCode = '":U +
t_sCOAMaskCC.COAMaskCCCode +
"' and COAMaskCC.SharedSet_ID = '":U +
string(viCOAMaskCCSharedSetId) +
"'":U.
<M-2 run DataLoad
(input '':U (icRowids),
input '':U (icPkeys),
input '':U (icObjectIds),
input vcFreeform (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
if viFcReturnSuper >= 0
then find first tCOAMaskCC where
tCOAMaskCC.COAMaskCCCode = t_sCOAMaskCC.COAMaskCCCode
no-error.
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_sCOAMaskCC.
else do:
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturn = 0)
then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave MAIN_BLOCK.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCOAMaskCC.tc_Rowid = tCOAMaskCC.tc_Rowid
t_sCOAMaskCC.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tCOAMaskCC.COAMaskCC_ID).
end. /* else do */
next.
end. /* if vcActivityCode = "Delete":U */
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(substitute(#T-6'Unable to find Cost Center COA Mask with code &1':100(999890704)T-6#, t_sCOAMaskCC.COAMaskCCCode)).
<M-3 run SetMessage
(input vcMessage (icMessage),
input t_sCOAMaskCC.COAMaskCCCode (icArguments),
input 't_sCOAMaskCC.COAMaskCCCode':U (icFieldName),
input tCOAMaskCC.COAMaskCCCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sCOAMaskCC.tc_Rowid (icRowid),
input 'QadFin-9212':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
assign oiReturnStatus = -1.
leave MAIN_BLOCK.
end. /* if vcActivityCode = "Modify":U */
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-4 run AddDetailLine
(input 'COAMaskCC':U (icTable),
input '':U (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCOAMaskCC.tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sCOAMaskCC.tc_Status = "C":U.
end.
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturn = 0)
then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave MAIN_BLOCK.
assign t_sCOAMaskCC.COAMaskCC_ID = tCOAMaskCC.COAMaskCC_ID.
/* insert code for subtables here */
/* ================================================================= */
/* Delete existing detail (only valid in current domain) */
/* ================================================================= */
for each tCOAMaskCCGL where
tCOAMaskCCGL.tc_ParentRowid = tCOAMaskCC.tc_Rowid and
tCOAMaskCCGL.GLSharedSet_ID = viGLSharedSetID:
assign tCOAMaskCCGL.tc_Status = "D":U.
end.
for each tCOAMaskCCDiv where
tCOAMaskCCDiv.tc_ParentRowid = tCOAMaskCC.tc_Rowid and
tCOAMaskCCDiv.DivSharedSet_ID = viDivSharedSetID:
assign tCOAMaskCCDiv.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sCOAMaskCCGL where
t_sCOAMaskCCGL.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid and
t_sCOAMaskCCGL.tc_Status <> "D":U:
assign t_sCOAMaskCCGL.COAMaskCC_ID = t_sCOAMaskCC.COAMaskCC_ID.
find first tCOAMaskCCGL where
tCOAMaskCCGL.COAMaskCC_ID = t_sCOAMaskCCGL.COAMaskCC_ID and
tCOAMaskCCGL.COAMaskCCGLFrom = t_sCOAMaskCCGL.COAMaskCCGLFrom and
tCOAMaskCCGL.COAMaskCCGLTo = t_sCOAMaskCCGL.COAMaskCCGLTo and
tCOAMaskCCGL.COAMaskCCGLIsNeg = t_sCOAMaskCCGL.COAMaskCCGLIsNeg and
tCOAMaskCCGL.COAMaskCCGLDescr = t_sCOAMaskCCGL.COAMaskCCGLDescr and
tCOAMaskCCGL.GLSharedSet_ID = viGLSharedSetID
no-error.
if available tCOAMaskCCGL
then assign t_sCOAMaskCCGL.tc_Status = tCOAMaskCC.tc_Status
t_sCOAMaskCCGL.COAMaskCCGL_ID = tCOAMaskCCGL.COAMaskCCGL_ID.
else do:
<M-5 run AddDetailLine
(input 'COAMaskCCGL':U (icTable),
input tCOAMaskCC.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturn = 0) then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave MAIN_BLOCK.
assign t_sCOAMaskCCGL.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sCOAMaskCCGL.COAMaskCCGL_ID = tCOAMaskCCGL.COAMaskCCGL_ID
t_sCOAMaskCCGL.COAMaskCC_ID = tCOAMaskCCGL.COAMaskCC_ID
t_sCOAMaskCCGL.GLSharedSet_ID = tCOAMaskCCGL.GLSharedSet_ID
t_sCOAMaskCCGL.tc_Rowid = tCOAMaskCCGL.tc_Rowid
t_sCOAMaskCCGL.tc_ParentRowid = tCOAMaskCC.tc_Rowid.
end. /* for each t_sCOAMaskCCGL where */
for each t_sCOAMaskCCDiv where
t_sCOAMaskCCDiv.tc_ParentRowid = t_sCOAMaskCC.tc_Rowid and
t_sCOAMaskCCDiv.tc_Status <> "D":U:
assign t_sCOAMaskCCDiv.COAMaskCC_ID = t_sCOAMaskCC.COAMaskCC_ID.
find first tCOAMaskCCDiv where
tCOAMaskCCDiv.COAMaskCC_ID = t_sCOAMaskCCDiv.COAMaskCC_ID and
tCOAMaskCCDiv.COAMaskCCDivFrom = t_sCOAMaskCCDiv.COAMaskCCDivFrom and
tCOAMaskCCDiv.COAMaskCCDivTo = t_sCOAMaskCCDiv.COAMaskCCDivTo and
tCOAMaskCCDiv.COAMaskCCDivIsNeg = t_sCOAMaskCCDiv.COAMaskCCDivIsNeg and
tCOAMaskCCDiv.COAMaskCCDivDescr = t_sCOAMaskCCDiv.COAMaskCCDivDescr and
tCOAMaskCCDiv.DivSharedSet_ID = viDivSharedSetID
no-error.
if available tCOAMaskCCDiv
then assign t_sCOAMaskCCDiv.tc_Status = tCOAMaskCC.tc_Status
t_sCOAMaskCCDiv.COAMaskCCDiv_ID = tCOAMaskCCDiv.COAMaskCCDiv_ID.
else do:
<M-7 run AddDetailLine
(input 'COAMaskCCDiv':U (icTable),
input tCOAMaskCC.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCOAMaskCC>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and viLocalReturn = 0) then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave MAIN_BLOCK.
assign t_sCOAMaskCCDiv.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sCOAMaskCCDiv.COAMaskCCDiv_ID = tCOAMaskCCDiv.COAMaskCCDiv_ID
t_sCOAMaskCCDiv.COAMaskCC_ID = tCOAMaskCCDiv.COAMaskCC_ID
t_sCOAMaskCCDiv.DivSharedSet_ID = tCOAMaskCCDiv.DivSharedSet_ID
t_sCOAMaskCCDiv.tc_Rowid = tCOAMaskCCDiv.tc_Rowid
t_sCOAMaskCCDiv.tc_ParentRowid = tCOAMaskCC.tc_Rowid.
end. /* for each t_sCOAMaskCCDiv where */
<I-57 {UpdateTransString
&TABLE = "COAMaskCC"}>
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sCOAMaskCC.COAMaskcc_ID = tCOAMaskCC.COAMaskCC_ID
t_sCOAMaskCC.SharedSet_ID = tCOAMaskCC.SharedSet_ID
t_sCOAMaskCC.tc_Rowid = tCOAMaskCC.tc_Rowid
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tCOAMaskCC.COAMaskCC_ID).
end. /* for each t_sCOAMaskCC: */
end. /* MAIN_BLOCK */
/* Error handling */
assign oiReturnStatus = viLocalReturn.