project BLF > class Report Component > method ApiProcessReportLogic
Description
Generic method for running a report.
Parameters
icReportName | input | character | name of the report (also name of the query or method) |
icLanguageCode | input | character | report language |
tFilter | input | temp-table | |
tResultFieldToCBF | input | temp-table | |
ozReportData | output | dataset-handle | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
program code (program3/breport.p)
if oiReturnStatus = 0
then oiReturnStatus = -98.
if icLanguageCode = current-language
then assign vcCurrentLanguage = ?.
else assign vcCurrentLanguage = current-language
current-language = icLanguageCode.
if search("query/api":U + lc(icReportName) + ".r":U) = ?
and search("query/api":U + lc(icReportName) + ".p":U) = ?
then do:
assign vlQueryBased = false.
/* ================================================================= */
/* Report is based on a method. */
/* ================================================================= */
/* assign a value to filter fields */
<I-1 {bFcRun
&PARAMETERS = "output viFcReturnSuper"
&PROCEDURE = "gipr_SetDataitemsBasedOnFilter"}>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
run gipr_GetReportResultSet in {&TARGETPROCEDURE}
(input icReportName,
output vhReportDataset).
run value(icReportName) in {&TARGETPROCEDURE}
(input icLanguageCode,
input dataset tFilter,
output dataset-handle vhReportDataset by-reference,
output viFcReturnSuper).
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
/*yns
Do not return, this causes an error in the .Net open client layer
if viFcReturnSuper < 0
then return.*/
end.
else do:
assign vlQueryBased = true.
/* ================================================================= */
/* Report is based on a query. */
/* ================================================================= */
<M-2 run GetReportLabels
(input icReportName (icReportName),
input icLanguageCode (icLanguageCode),
input tFilter (tFilter),
output tqHeader (tqHeader),
output tqFilter (tqFilter),
output tqText (tqText),
output viFcReturnSuper (oiReturnStatus)) in breport>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
run value("query/api":U + lc(icReportName) + ".p":U)
(input {&TARGETPROCEDURE},
input viSessionID,
input dataset tFilter,
output dataset-handle vhReportDataset, /*ByReference does not work here*/
output viFcReturnSuper).
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
end.
<M-3 run GetSelectedCustomFields
(input-output vhReportDataset by-reference (bzResultDataSet),
output viFcReturnSuper (oiReturnStatus)) in breport>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
if vlQueryBased
then do:
assign vhBufferFrom = dataset tqFilter:get-buffer-handle(1)
vhBufferFrom:table-handle:schema-marshal = "FULL".
create buffer vhBufferTo for table vhBufferFrom:table-handle in widget-pool "non-persistent".
ozReportData:set-buffers(vhBufferTo).
assign vhBufferFrom = dataset tqHeader:get-buffer-handle(1)
vhBufferFrom:table-handle:schema-marshal = "FULL".
create buffer vhBufferTo for table vhBufferFrom:table-handle in widget-pool "non-persistent".
ozReportData:add-buffer(vhBufferTo).
assign vhBufferFrom = dataset tqText:get-buffer-handle(1)
vhBufferFrom:table-handle:schema-marshal = "FULL".
create buffer vhBufferTo for table vhBufferFrom:table-handle in widget-pool "non-persistent".
ozReportData:add-buffer(vhBufferTo).
end.
do viFcCount1 = 1 to vhReportDataset:num-buffers:
vhBufferFrom = vhReportDataset:get-buffer-handle(viFcCount1).
vhBufferFrom:table-handle:schema-marshal = "FULL":U.
create buffer vhBufferTo for table vhBufferFrom:table-handle in widget-pool "non-persistent".
if viFcCount1 = 1 and
not vlQueryBased
then ozReportData:set-buffers(vhBufferTo).
else ozReportData:add-buffer(vhBufferTo).
end.
if vcCurrentLanguage <> ?
then assign current-language = vcCurrentLanguage.
/* ================================================================= */
/* BLF-3657: add execution info */
/* ================================================================= */
find first tqHeader no-error.
if available tqHeader
then do:
create tqText.
assign tqText.tcCode = "EXECUTEINFO"
tqText.tcText = substitute (#T-79'Printed by &1 from domain &2, entity &3 on &4':255(749396567)T-79#,
tqHeader.tcUser,
tqHeader.tcDomainCode,
tqHeader.tcCompanyCode,
<M-56 DisplayDate (input today (itDate)) in breport> + " " + string(time,"HH:MM")).
end.
if oiReturnStatus = -98
then oiReturnStatus = 0.