Description
Run a report, but in stead of returning the report data immediately, this data is stored on the server. The data can be read with methods getTableMetaSchema and getTableData.
Parameters
icComponentName | input | character | |
icReportName | input | character | |
icLanguageCode | input | character | |
tFilter | input | temp-table | |
ocTableNameList | output | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
program code (program8/bgenericreportadapter.p)
/* Check is there a dataset available already for this report */
<M-1 isDatasetAvailable
(input lc(iccomponentName) (icComponentName),
input icReportName (icReportName),
output vlDatasetAvailable (olDatasetAvailable)) in BGenericReportAdapter>.
/* If there isn't then run the report method to get the result dataset */
IF NOT vlDatasetAvailable THEN
DO:
/* Start the specified component. */
<M-2 run BusinessClassActions
(input lc(iccomponentName) (icClassShortname),
input 'START+OPEN' (icAction),
input NO (ilSubtransaction),
input-output viClassOC (biClassOpenCount),
input-output vhClassInstance (bhClassInstanceHandle),
input-output viClassID (biClassInstanceId),
input '' (icDraftReference),
output oiReturnStatus (oiReturnStatus)) in BGenericReportAdapter>
IF oiReturnStatus <> 0 THEN
RETURN.
ASSIGN vhFcComponent = vhClassInstance.
/* Run the method to process the report.
The report dataset must be returned by-value because the report component will delete the original dataset. */
<M-3 run ApiProcessReportLogic
(input icReportName (icReportName),
input icLanguageCode (icLanguageCode),
input tFilter (tFilter),
input tEmptyResultFieldToCBF (tResultFieldToCBF),
output vhDataset (ozReportData),
output oiReturnStatus (oiReturnStatus)) in breport>.
/* Stop the instance of the created component */
<M-4 run BusinessClassActions
(input lc(iccomponentName) (icClassShortname),
input 'CLOSE+STOP' (icAction),
input NO (ilSubtransaction),
input-output viClassOC (biClassOpenCount),
input-output vhClassInstance (bhClassInstanceHandle),
input-output viClassID (biClassInstanceId),
input '' (icDraftReference),
output oiReturnStatus (oiReturnStatus)) in BGenericReportAdapter>
IF oiReturnStatus <> 0 THEN
RETURN.
/* Create records in the tDatasetInfo temp-table */
<M-5 initializeDatasetInfo
(input lc(iccomponentName) (icComponentName),
input icReportName (icReportName),
input vhDataset (ihDataset),
output oiReturnStatus (oiReturnStatus)) in BGenericReportAdapter>.
IF oiReturnStatus <> 0 THEN
RETURN.
END.
<M-6 getTableNameList
(input lc(iccomponentName) (icComponentName),
input icReportName (icReportName),
output ocTableNameList (ocTableNameList)) in BGenericReportAdapter>.