| 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.
for each t_sRptRequest on error undo, return:
assign t_sRptRequest.RptRequestType = "V".
if vcUserLogin = "facdef"
and t_sRptRequest.RptRequestName begins "LASTUSED_"
then assign t_sRptRequest.RptRequestName = {&STOREDSEARCH-FACTORY-DEFAULT}.
/* ================================================================= */
/* Lookup variant by name */
/* ================================================================= */
if t_sRptRequest.RptRequestName = ""
or t_sRptRequest.RptRequestName = ?
then do:
vcMsg = #T-3'Variant name is mandatory.':255(9193)T-3#.
<M-4 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input 'tRptRequest.RptRequestName' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input t_sRptRequest.tc_Rowid (icRowid),
input 'BLF-160':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
oiReturnStatus = -1.
return.
end.
if t_sRptRequest.tcBusActivityCode = ""
or t_sRptRequest.tcBusActivityCode = ?
or t_sRptRequest.tcBusComponentCode = ""
or t_sRptRequest.tcBusComponentCode = ?
then do:
<Q-5 run DefaultVariantPrim (all) (Read) (NoCache)
(input 0, (RequestID)
input t_sRptRequest.RptRequestName, (RequestName)
output dataset tqDefaultVariantPrim) in BReportRequestBase >
find first tqDefaultVariantPrim no-error.
if available tqDefaultVariantPrim
then viRQID = tqDefaultVariantPrim.tiRptRequest_ID.
else viRQID = -1.
end.
else do:
<Q-6 run RptRequestPrim (all) (Read) (NoCache)
(input 0, (RequestID)
input t_sRptRequest.RptRequestName, (RequestName)
input t_sRptRequest.tcBusComponentCode, (ComponentName)
input t_sRptRequest.tcBusActivityCode, (ReportName)
input 'V', (RequestType)
output dataset tqRptRequestPrim) in BReportRequestBase >
find first tqRptRequestPrim no-error.
if available tqRptRequestPrim
then viRQID = tqRptRequestPrim.tiRptRequest_ID.
else viRQID = -1.
end.
if viRQID = -1
then viFcReturnSuper = -4.
else do:
<M-7 run DataLoad
(input '' (icRowids),
input string(viRQID) (icPkeys),
input '' (icObjectIds),
input '' (icFreeform),
input yes (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
if viFcReturnSuper >= 0
then find first tRptRequest where tRptRequest.RptRequest_ID = viRQID.
end.
if viFcReturnSuper = -4
then do:
/* ================================================================= */
/* When object not found or in create mode, create it. */
/* ================================================================= */
<M-8 run AddDetailLine
(input 'RptRequest' (icTable),
input '' (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
/* should be available */
if viFcReturnSuper >= 0 and not available tRptRequest
then find tRptRequest where tRptRequest.tc_Rowid = vcLastCreatedRowid.
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sRptRequest.tc_Status = "N":U.
end.
else do:
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
assign t_sRptRequest.tc_Status = "C":U.
end.
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tRptRequestCBF where
tRptRequestCBF.tc_ParentRowid = tRptRequest.tc_Rowid:
assign tRptRequestCBF.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sRptRequestCBF where
t_sRptRequestCBF.tc_ParentRowid = t_sRptRequest.tc_Rowid:
find first tRptRequestCBF where
tRptRequestCBF.tc_ParentRowid = tRptRequest.tc_Rowid and
tRptRequestCBF.RptRequestCBF = t_sRptRequestCBF.RptRequestCBF and
tRptRequestCBF.tc_Status = "D" no-error.
if available tRptRequestCBF
then assign t_sRptRequestCBF.tc_Status = "C":U.
else do:
<M-9 run AddDetailLine
(input 'RptRequestCBF' (icTable),
input tRptRequest.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* should be available */
if not available tRptRequestCBF
then find tRptRequestCBF where tRptRequestCBF.tc_Rowid = vcLastCreatedRowid.
assign t_sRptRequestCBF.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sRptRequestCBF.RptRequestCBF_ID = tRptRequestCBF.RptRequestCBF_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sRptRequestCBF.RptRequest_ID = tRptRequestCBF.RptRequest_ID
t_sRptRequestCBF.tc_Rowid = tRptRequestCBF.tc_Rowid
t_sRptRequestCBF.tc_ParentRowid = tRptRequest.tc_Rowid.
end.
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tRptRequestFilter where
tRptRequestFilter.tc_ParentRowid = tRptRequest.tc_Rowid:
assign tRptRequestFilter.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sRptRequestFilter where
t_sRptRequestFilter.tc_ParentRowid = t_sRptRequest.tc_Rowid:
find first tRptRequestFilter where
tRptRequestFilter.tc_ParentRowid = tRptRequest.tc_Rowid and
tRptRequestFilter.RptRequestFilterSequence = t_sRptRequestFilter.RptRequestFilterSequence and
tRptRequestFilter.tc_Status = "D" no-error.
if available tRptRequestFilter
then assign t_sRptRequestFilter.tc_Status = "C":U.
else do:
<M-10 run AddDetailLine
(input 'RptRequestFilter' (icTable),
input tRptRequest.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* should be available */
if not available tRptRequestFilter
then find tRptRequestFilter where tRptRequestFilter.tc_Rowid = vcLastCreatedRowid.
assign t_sRptRequestFilter.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sRptRequestFilter.RptRequestFilter_ID = tRptRequestFilter.RptRequestFilter_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sRptRequestFilter.RptRequest_ID = tRptRequestFilter.RptRequest_ID
t_sRptRequestFilter.tc_Rowid = tRptRequestFilter.tc_Rowid
t_sRptRequestFilter.tc_ParentRowid = tRptRequest.tc_Rowid.
end.
/* ================================================================= */
/* Delete existing detail */
/* ================================================================= */
for each tRptRequestmail where
tRptRequestmail.tc_ParentRowid = tRptRequest.tc_Rowid:
assign tRptRequestmail.tc_Status = "D":U.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
for each t_sRptRequestmail where
t_sRptRequestmail.tc_ParentRowid = t_sRptRequest.tc_Rowid:
find first tRptRequestmail where
tRptRequestmail.tc_ParentRowid = tRptRequest.tc_Rowid and
tRptRequestmail.tcRoleName = t_sRptRequestmail.tcRoleName and
tRptRequestmail.tc_Status = "D" no-error.
if available tRptRequestmail
then assign t_sRptRequestmail.tc_Status = "C":U.
else do:
<M-11 run AddDetailLine
(input 'RptRequestMail' (icTable),
input tRptRequest.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* should be available */
if not available tRptRequestMail
then find tRptRequestMail where tRptRequestMail.tc_Rowid = vcLastCreatedRowid.
assign t_sRptRequestmail.tc_Status = "N":U.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sRptRequestmail.RptRequestMail_ID = tRptRequestmail.RptRequestMail_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sRptRequestmail.RptRequest_ID = tRptRequestmail.RptRequest_ID
t_sRptRequestmail.tc_Rowid = tRptRequestmail.tc_Rowid
t_sRptRequestmail.tc_ParentRowid = tRptRequest.tc_Rowid.
end.
/* ================================================================= */
/* Update / add detail */
/* ================================================================= */
vlOneRecord = yes.
for each t_sRptRequestVariant where
t_sRptRequestVariant.tc_ParentRowid = t_sRptRequest.tc_Rowid:
if vlOneRecord
then do:
vlOneRecord = no.
find first tRptRequestVariant where
tRptRequestVariant.tc_ParentRowid = tRptRequest.tc_Rowid no-error.
if not available tRptRequestVariant
then do:
<M-1 run AddDetailLine
(input 'RptRequestVariant' (icTable),
input tRptRequest.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* should be available */
if not available tRptRequestVariant
then find tRptRequestVariant where tRptRequestVariant.tc_Rowid = vcLastCreatedRowid.
end.
if tRptRequestVariant.tc_Status = "N":U
then assign t_sRptRequestVariant.tc_Status = "N":U.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sRptRequestVariant.RptRequestVariant_ID = tRptRequestVariant.RptRequestVariant_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sRptRequestVariant.RptRequest_ID = tRptRequest.RptRequest_ID
t_sRptRequestVariant.tc_Rowid = tRptRequestVariant.tc_Rowid
t_sRptRequestVariant.tc_ParentRowid = tRptRequest.tc_Rowid.
end.
else do:
<M-2 run SetMessage
(input 'ambiguous reportvariant.' (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'BLF-159':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportVariant>
oiReturnStatus = -1.
return.
end.
end.
/* ================================================================= */
/* override value for identity fields in input */
/* ================================================================= */
assign t_sRptRequest.RptRequest_ID = tRptRequest.RptRequest_ID
/* ================================================================= */
/* Update input to allow correct matching */
/* ================================================================= */
t_sRptRequest.tc_Rowid = tRptRequest.tc_Rowid
t_sRptRequest.tc_ParentRowid = ""
opPrimeKey = (if opPrimeKey = "" then "" else opPrimeKey + chr(4))
+ string(tRptRequest.RptRequest_ID).
end.
if oiReturnStatus = -98
then oiReturnStatus = 0.