project BLF > class BResource > method GetReportCBF
Description
Return a list of user-defined fields available on a report and allow to link each to a custom field in the report resultset.
This method should only be used on reports designed in QRF, not on reports designed in Crystal Reports, as this information will be stored in the report variant for those reports. Reports in QRF do not have a report variant.
Parameters
iiResourceId | input | integer | |
ovBResource | output | dataset | |
tReportCBF | output | temp-table | |
ocReportLabel | output | character | |
ocReportCustomFields | output | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program1/bresource.p)
empty temp-table tReportCBF.
<M-45 run DataLoad
(input '' (icRowids),
input string(iiResourceId) (icPkeys),
input '' (icObjectIds),
input '' (icFreeform),
input no (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BResource>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
<Q-37 run ResourceLabels (all) (Read) (NoCache)
(input iiResourceId, (ResourceId)
output dataset tqResourceLabels) in BResource>
find first tqResourceLabels where tqResourceLabels.tiResource_ID = iiResourceId no-error.
if available tqResourceLabels
then do:
ocReportLabel = tqResourceLabels.tcBusComponentCode + "." + tqResourceLabels.tcBusActivityCode.
<M-66 run BusinessClassActions
(input tqResourceLabels.tcBusComponentCode (icClassShortname),
input 'START+OPEN' (icAction),
input no (ilSubtransaction),
input-output vibreport9ID (biClassOpenCount),
input-output vhbreport9Inst (bhClassInstanceHandle),
input-output vibreport9OC (biClassInstanceId),
input '' (icDraftReference),
input '' (icUserDefinedContext),
output viFcReturnSuper (oiReturnStatus)) in BResource>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
<M-98 run GetTableCustomFields
(output tReportTableCustomField (tTableCustomField),
output viFcReturnSuper (oiReturnStatus)) in breport>
if viFcReturnSuper >= 0
then do:
<M-3 run GetBusinessFields
(input tqResourceLabels.tcBusActivityCode (icReference),
output tBusinessFields (tBusinessFields),
output tCustomRelation (tCustomRelation),
output viFcReturnSuper (oiReturnStatus)) in breport>
end.
<M-38 run BusinessClassActions
(input tqResourceLabels.tcBusComponentCode (icClassShortname),
input 'CLOSE+STOP' (icAction),
input no (ilSubtransaction),
input-output vibreport9ID (biClassOpenCount),
input-output vhbreport9Inst (bhClassInstanceHandle),
input-output vibreport9OC (biClassInstanceId),
input '' (icDraftReference),
input '' (icUserDefinedContext),
output viFcCount5 (oiReturnStatus)) in BResource>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
for each tBusinessFields where tBusinessFields.tcFcFieldType = "B" on error undo, throw:
if num-entries (tBusinessFields.tcFcFieldName,".") = 2
then if entry (2,tBusinessFields.tcFcFieldName,".") begins "CustomShort"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "CustomCombo"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "CustomLong"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "CustomNote"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "CustomDate"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "CustomInteger"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "CustomDecimal"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "QADC0"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "QADD0"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "QADT0"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tcCustomShort"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tcCustomCombo"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tcCustomLong"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tcCustomNote"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "ttCustomDate"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tiCustomInteger"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tdCustomDecimal"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tcQADC0"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "tdQADD0"
or entry (2,tBusinessFields.tcFcFieldName,".") begins "ttQADT0"
then do:
if vcResultsetName = ""
or tBusinessFields.tcFcFieldName begins "tq" + tqResourceLabels.tcBusActivityCode + "."
then vcResultsetName = entry (1,tBusinessFields.tcFcFieldName,".").
if ocReportCustomFields = ""
then ocReportCustomFields = tBusinessFields.tcFcFieldName.
else ocReportCustomFields = ocReportCustomFields + "," + tBusinessFields.tcFcFieldName.
end.
end.
end.
if vcResultsetName <> ""
and can-find (first tReportTableCustomField where tReportTableCustomField.tcResultTable = vcResultsetName)
then do:
for each tReportTableCustomField where
tReportTableCustomField.tcResultTable = vcResultsetName
break by tReportTableCustomField.tcTableName on error undo, throw:
if first-of (tReportTableCustomField.tcTableName)
then do:
<Q-47 run GetCustomFieldsForTable (all) (Read) (NoCache)
(input 't' + tReportTableCustomField.tcTableName, (TableName)
input '', (ComponentName)
output dataset tqCustomFieldsForTable) in BCustomField>
for each tqCustomFieldsForTable on error undo, throw:
create tReportCBF.
assign tReportCBF.tcReportCBFCustomFieldName = tqCustomFieldsForTable.tcCustomFieldFieldName
tReportCBF.tcReportCBFCustomFieldDesc = tqCustomFieldsForTable.tcCustomFieldDescription.
end.
end.
end.
if can-find (first tReportCBF)
then do:
<Q-55 run ReportCustomFields (all) (Read) (NoCache)
(input tqResourceLabels.tiBusActivity_ID, (BusActivityID)
input {&STOREDSEARCH-CUSTOMER-DEFAULT}, (VariantName)
output dataset tqReportCustomFields) in BReportVariant>
for each tqReportCustomFields,
each tReportCBF where
tReportCBF.tcReportCBFCustomFieldName = tqReportCustomFields.tcRptRequestCBF:
tReportCBF.tcReportCBFResultsetField = tqReportCustomFields.tcRptRequestResultField.
end.
end.
else do:
<M-69 run SetMessage
(input #T-3'No User-Defined Fields are available for this report.':255(132597231)T-3# (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'D' (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'blf-854874':U (icFcMsgNumber),
input '' (icFcExplanation),
input 'report ' + ocReportLabel (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BResource>
oiReturnStatus = -1.
end.
end.
else do:
<M-53 run SetMessage
(input #T-30'This report does not support user-defined fields.':255(769634637)T-30# (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'D' (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'blf-220243':U (icFcMsgNumber),
input '' (icFcExplanation),
input 'report ' + ocReportLabel (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BResource>
oiReturnStatus = -1.
end.