| 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.
assign
vcListSharedSetTypeCode = {&SHAREDSETTYPECODES}.
for each t_sDomains on error undo, return:
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
vcFreeform = "for each Domains where Domains.DomainCode = '":U + t_sDomains.DomainCode + "'":U.
<M-2 run DataLoad (input '' (icRowids),
input '' (icPkeys),
input '' (icObjectIds),
input vcFreeform (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper >= 0
then find first tDomains where tDomains.DomainCode = t_sDomains.DomainCode no-error.
end.
/* ================================================================= */
/* 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_sDomains.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign
t_sDomains.tc_Rowid = tDomains.tc_Rowid
t_sDomains.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tDomains.Domain_ID).
end.
next.
end. /* if vcActivityCode = Delete */
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-1'Object with key $1 does not exist.':100(48021)T-1#).
<M-3 run SetMessage (input vcFreeform (icMessage),
input t_sDomains.DomainCode (icArguments),
input 'tDomains.DomainCode':U (icFieldName),
input t_sDomains.DomainCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sDomains.tc_Rowid (icRowid),
input 'QadFin-5309':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
assign oiReturnStatus = -1.
return.
end.
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-4 run AddDetailLine (input 'Domains':U (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign
t_sDomains.tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign
t_sDomains.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* Update previously created DomainProperty records */
/* NOTE: This is a temporary workaround until tDomainPropertyRefer is added to the Dataset */
find first tDomainPropertyRefer where tDomainPropertyRefer.tc_ParentRowid = tDomains.tc_Rowid no-error.
if available tDomainPropertyRefer then do:
assign
tDomainPropertyRefer.tcCurrencyCode = entry(2,t_sDomains.DomainPropath)
tDomainPropertyRefer.DomainPropertyName = entry(3,t_sDomains.DomainPropath)
tDomainPropertyRefer.DomainPropertySearchName = entry(4,t_sDomains.DomainPropath)
tDomainPropertyRefer.DomainPropertyIsSetupCompl = logical(entry(5,t_sDomains.DomainPropath))
tDomainPropertyRefer.ObsoleteDomPropGLMaskGL = logical(entry(6,t_sDomains.DomainPropath))
tDomainPropertyRefer.DomainPropertyIsMaskDiv = logical(entry(7,t_sDomains.DomainPropath))
tDomainPropertyRefer.DomainPropertyIsMaskCC = logical(entry(8,t_sDomains.DomainPropath))
tDomainPropertyRefer.DomainPropertyIsMaskProj = logical(entry(9,t_sDomains.DomainPropath))
tDomainPropertyRefer.tcIntercoARGLCode = entry(10,t_sDomains.DomainPropath)
tDomainPropertyRefer.tcIntercoAPGLCode = entry(11,t_sDomains.DomainPropath)
tDomainPropertyRefer.tcIntercoICGLCode = entry(12,t_sDomains.DomainPropath)
tDomainPropertyRefer.tcIntercoJEGLCode = entry(13,t_sDomains.DomainPropath)
tDomainPropertyRefer.tcIntercoFAGLCode = entry(14,t_sDomains.DomainPropath)
tDomainPropertyRefer.tc_Status = t_sDomains.tc_Status
t_sDomains.DomainPropath = entry(1,t_sDomains.DomainPropath)
.
end.
/* Create / Modify DomainSharedSet records */
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tDomainSharedSet where
tDomainSharedSet.tc_ParentRowid = tDomains.tc_Rowid:
if tDomainSharedSet.tc_Status = "N":U then
delete tDomainSharedSet.
else
assign
tDomainSharedSet.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sDomainSharedSet where
t_sDomainSharedSet.tc_ParentRowid = t_sDomains.tc_Rowid:
find first tDomainSharedSet where
tDomainSharedSet.tc_ParentRowid = tDomains.tc_Rowid and
tDomainSharedSet.tcSharedSetTypeCode = t_sDomainSharedSet.tcSharedSetTypeCode no-error.
if available tDomainSharedSet
then
assign
t_sDomainSharedSet.tc_Status = "C":U.
else do:
<M-5 run AddDetailLine (input 'DomainSharedSet':U (icTable),
input tDomains.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
assign
t_sDomainSharedSet.tc_Status = "N":U.
end. /* else do */
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign
t_sDomainSharedSet.DomainSharedSet_ID = tDomainSharedSet.DomainSharedSet_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sDomainSharedSet.Domain_ID = tDomainSharedSet.Domain_ID
t_sDomainSharedSet.tc_Rowid = tDomainSharedSet.tc_Rowid
t_sDomainSharedSet.tc_ParentRowid = tDomains.tc_Rowid
.
end. /* for each t_sDomainSharedSet */
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign
t_sDomains.Domain_ID = tDomains.Domain_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sDomains.tc_Rowid = tDomains.tc_Rowid
t_sDomains.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tDomains.Domain_ID).
end.
/* Ensure that the SYSTEM domain can be loaded through the API */
<I-8 {bFcOpenInstance
&CLASS = "Session"}>
<M-9 run SetLogicalValue
(input 'AllowSystemDomainChange':U (icName),
input true (ilValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
<I-10 {bFcCloseInstance
&CLASS = "Session"}>
if oiReturnStatus = -98
then oiReturnStatus = 0.