project BLF > class BGenericReportAdapter > method openReport

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


icComponentNameinputcharacter
icReportNameinputcharacter
icLanguageCodeinputcharacter
tFilterinputtemp-table
ocTableNameListoutputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method TGenericReportAdapter.CreateSession


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>.