project BLF > class Report Component > method ApiGetReportStructure
Description
Generic method for running a report.
Parameters
icReportName | input | character | name of the report (also name of the query or method) |
ozReportData | output | dataset-handle | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program3/breport.p)
empty temp-table tFilter.
<M-1 run GetReportLabels
(input icReportName (icReportName),
input current-language (icLanguageCode),
input tFilter (tFilter),
output tqHeader (tqHeader),
output tqFilter (tqFilter),
output tqText (tqText),
output viFcReturnSuper (oiReturnStatus)) in breport>
/* ================================================================= */
/* 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-44'Printed by &1 from domain &2, entity &3 on &4':255(749396567)T-44#,
tqHeader.tcUser,
tqHeader.tcDomainCode,
tqHeader.tcCompanyCode,
<M-11 DisplayDate (input today (itDate)) in breport> + " " + string(time,"HH:MM")).
end.
if search("query/api":U + lc(icReportName) + ".r":U) = ?
and search("query/api":U + lc(icReportName) + ".p":U) = ?
then do:
/* Report is based on a method */
run gipr_GetReportResultSet in {&TARGETPROCEDURE}
(input icReportName,
output vhReportDataset).
if vhReportDataset = ?
then do:
<M-89 run SetMessage
(input #T-78'A report with this name ($1) was not found.':255(668354677)T-78# (icMessage),
input icReportName (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'E' (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'blf-460846':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in breport>
oiReturnStatus = -3.
return.
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
then ozReportData:set-buffers(vhBufferTo).
else ozReportData:add-buffer(vhBufferTo).
end.
end.
else do:
/* Report is based on a query */
create tFilter.
assign tFilter.tcBusinessFieldName = "getReportStructure".
release tFilter.
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).
empty temp-table tFilter.
vhBufferFrom = temp-table tqHeader:handle.
vhBufferFrom:schema-marshal = "FULL".
create buffer vhb1 for table vhBufferFrom in widget-pool "non-persistent".
vhBufferFrom = temp-table tqFilter:handle.
vhBufferFrom:schema-marshal = "FULL".
create buffer vhb2 for table vhBufferFrom in widget-pool "non-persistent".
vhBufferFrom = temp-table tqText:handle.
vhBufferFrom:schema-marshal = "FULL".
create buffer vhb3 for table vhBufferFrom in widget-pool "non-persistent".
vhBufferFrom = vhReportDataset:get-buffer-handle(1).
vhBufferFrom:table-handle:schema-marshal = "FULL".
create buffer vhb4 for table vhBufferFrom in widget-pool "non-persistent".
ozReportData:set-buffers(vhb1,vhb2,vhb3,vhb4).
end.