| 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. |
define buffer bqSODCategory1 for tqSODCategoryPrim.
define buffer bqSODCategory2 for tqSODCategoryPrim.
if vcActivityCode <> "Create":U
then do:
<Q-1 run SODCategoryPrim (all) (Read) (NoCache)
(input 0, (CategoryID)
input '', (CategoryCode)
output dataset tqSODCategoryPrim) in BSODCategory >
end.
for each t_sSODExclusion by rowid(t_sSODExclusion) on error undo, throw:
/* ================================================================= */
/* Lookup object by logical key */
/* When in create mode, skip lookup. */
/* ================================================================= */
if vcActivityCode <> "Create":U
then do:
find first bqSODCategory1 where
bqSODCategory1.tcSODCategoryCode = t_sSODExclusion.tcSODCategory1Code no-error.
if not available bqSODCategory1
then do:
<M-2 run SetMessage
(input #T-1'Unknown SOD Category.':255(413971067)T-1# (icMessage),
input '' (icArguments),
input 'tSODExclusion.tcSODCategory1Code' (icFieldName),
input t_sSODExclusion.tcSODCategory1Code (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sSODExclusion.tc_Rowid (icRowid),
input 'BLF-248':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BSODCategoryExclusion>
assign oiReturnStatus = -1.
return.
end.
find first bqSODCategory2 where
bqSODCategory2.tcSODCategoryCode = t_sSODExclusion.tcSODCategory2Code no-error.
if not available bqSODCategory2
then do:
<M-3 run SetMessage
(input #T-4'Unknown SOD Category.':255(413971067)T-4# (icMessage),
input '' (icArguments),
input 'tSODExclusion.tcSODCategory2Code' (icFieldName),
input t_sSODExclusion.tcSODCategory2Code (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sSODExclusion.tc_Rowid (icRowid),
input 'BLF-439':U:U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BSODCategoryExclusion>
assign oiReturnStatus = -1.
return.
end.
<M-5 run DataLoad
(input '' (icRowids),
input string(bqSODCategory1.tiSODCategory_ID) + chr(4) + string(bqSODCategory2.tiSODCategory_ID) (icPkeys),
input '' (icObjectIds),
input '' (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BSODCategoryExclusion>
if viFcReturnSuper >= 0
then do:
/* DataLoad succeeded, no no-error needed */
find first tSODExclusion where
tSODExclusion.SODCategory1_ID = bqSODCategory1.tiSODCategory_ID and
tSODExclusion.SODCategory2_ID = bqSODCategory2.tiSODCategory_ID.
if tSODExclusion.tc_Status <> ""
then do:
<M-6 run SetMessage
(input #T-5'Duplicate entry in input ($1).':255(332074471)T-5# (icMessage),
input t_sSODExclusion.tcSODCategory1Code + chr(2) + t_sSODExclusion.tcSODCategory2Code (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sSODExclusion.tc_Rowid (icRowid),
input 'BLF-249':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BSODCategoryExclusion>
assign oiReturnStatus = -1.
return.
end.
end.
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_sSODExclusion.
else do:
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
create tFcRowidConvert.
assign tFcRowidConvert.tcFcOldRowid = t_sSODExclusion.tc_Rowid
tFcRowidConvert.tcFcNewRowid = tSODExclusion.tc_Rowid
tFcRowidConvert.tlFcOk = true.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sSODExclusion.tc_Rowid = tSODExclusion.tc_Rowid
t_sSODExclusion.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tSODExclusion.SODCategory1_ID) + chr(2)
+ string(tSODExclusion.SODCategory2_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:
<M-7 run SetMessage
(input #T-9'Entry ($1) not found.':255(825526510)T-9# (icMessage),
input t_sSODExclusion.tcSODCategory1Code + chr(2) + t_sSODExclusion.tcSODCategory2Code (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sSODExclusion.tc_Rowid (icRowid),
input 'BLF-437':U:U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BSODCategoryExclusion>
assign oiReturnStatus = -1.
return.
end.
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-10 run AddDetailLine
(input 'SODExclusion' (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BSODCategoryExclusion>
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sSODExclusion.tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sSODExclusion.tc_Status = "C":U
tSODExclusion.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* keep the UI rowid for usage in error messages (tFcMessages.tcFcRowid) */
create tFcRowidConvert.
assign tFcRowidConvert.tcFcOldRowid = t_sSODExclusion.tc_Rowid
tFcRowidConvert.tcFcNewRowid = tSODExclusion.tc_Rowid
tFcRowidConvert.tlFcOk = true.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sSODExclusion.tc_Rowid = tSODExclusion.tc_Rowid
t_sSODExclusion.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tSODExclusion.SODCategory1_ID) + chr(2)
+ string(tSODExclusion.SODCategory2_ID).
end.