QAD 2017 Enterprise Edition > User Guides > Reporting Framework > External Metadata > Complete Data Source Program Sample Code (Using XML Metadata)
  
Complete Data Source Program Sample Code (Using XML Metadata)
 
/* UserGuideSampleReportMeta.p - Example Progress Report Data Source program */
/* Copyright 2012 QAD Inc. All rights reserved. */
/* */
 
{mfsubdirs.i}
{{&US_BBI}mfdeclre.i}
{{&US_BBI}gplabel.i}
 
 
{com/qad/shell/report/dsReportRequest.i}
{com/qad/shell/report/ReportConstants.i}
 
/* Report data set definition block */
define temp-table ttSalesHeader no-undo
field so_nbr like so_mstr.so_nbr
field so_cust like so_mstr.so_cust
field so_ord_date like so_mstr.so_ord_date
field sales_order_slspsn1 like so_mstr.so_slspsn[1]
field sales_order_slspsn2 like so_mstr.so_slspsn[2]
field sales_order_slspsn3 like so_mstr.so_slspsn[3]
field sales_order_slspsn4 like so_mstr.so_slspsn[4]
index SalesHeaderIdx is primary so_nbr
.
define temp-table ttSoLine no-undo
field sales_order_number like so_mstr.so_nbr
field sales_detail_line like sod_det.sod_line
field sales_detail_item like sod_det.sod_part
field sales_detail_qty_ord like sod_det.sod_qty_ord
field sales_detail_unit_measure like sod_det.sod_um
field sales_detail_due_date like sod_det.sod_due_date
index SoLineIdx is primary sales_order_number sales_detail_line.
.
 
define dataset dsReportResults for ttSalesHeader, ttSoLine
data-relation drLine for ttSalesHeader, ttSoLine
relation-fields (so_nbr, sales_order_number)
.
 
/* Main Block */
define input parameter runReport as logical no-undo.
define input parameter reportHandle as handle no-undo.
define input parameter dataset for dsReportRequest.
define output parameter dataset-handle phReportResults.
 
{com/qad/shell/report/reporting.i}
 
define variable bufferName as character no-undo.
 
/* Empty temp-table block */
empty temp-table ttSalesHeader no-error.
empty temp-table ttSoLine no-error.
 
define variable vhDS as handle no-undo.
 
for first ttReportRequest no-lock:
vhDS = dataset dsReportResults:handle.
run FillMetaData in reportHandle (
vhDS,"UserGuideSampleReportMeta.meta.xml").
 
if runReport then do:
run RunReport
(output dataset-handle phReportResults).
end.
end.
 
/* Data retrieval logic block */
procedure RunReport:
 
define output parameter dataset-handle phReportResults.
 
/* Retrieve the data from database */
define variable queryString as character no-undo.
define variable hSOQuery as handle.
define query SOQuery for so_mstr.
 
hSOQuery = query SOQuery:handle.
 
queryString = "for each so_mstr no-lock "
+ " where so_mstr.so_domain = " + QUOTER(global_domain).
 
run AddAllConditions in reportHandle ("so_mstr", input-output queryString).
 
queryString = queryString + ":".
 
hSOQuery:query-prepare(queryString).
hSOQuery:query-open().
hSOQuery:get-next().
 
repeat while not hSOQuery:query-off-end:
create ttSalesHeader.
assign
ttSalesHeader.so_nbr = so_mstr.so_nbr
ttSalesHeader.so_cust = so_mstr.so_cust
ttSalesHeader.so_ord_date = so_mstr.so_ord_date
ttSalesHeader.sales_order_slspsn1 = so_mstr.so_slspsn[1]
ttSalesHeader.sales_order_slspsn2 = so_mstr.so_slspsn[2]
ttSalesHeader.sales_order_slspsn3 = so_mstr.so_slspsn[3].
ttSalesHeader.sales_order_slspsn4 = so_mstr.so_slspsn[4].
 
for each sod_det no-lock
where sod_det.sod_nbr = so_mstr.so_nbr
and sod_det.sod_domain = global_domain:
 
create ttSoLine.
assign
ttSoLine.sales_order_number = sod_det.sod_nbr
ttSoLine.sales_detail_line = sod_det.sod_line
ttSoLine.sales_detail_item = sod_det.sod_part
ttSoLine.sales_detail_qty_ord = sod_det.sod_qty_ord
ttSoLine.sales_detail_unit_measure = sod_det.sod_um
ttSoLine.sales_detail_due_date = sod_det.sod_due_date.
end.
 
hSOQuery:get-next().
end. /* Repeat query */
 
phReportResults = dataset dsReportResults:handle.
 
end procedure.
 
/* This delete is to prevent a memory leak of the data set */
delete object phReportResults no-error.