*report.DE.Init() set procedure to myreportclass additive public goReport goReport = createobject( "myclass" ) *report.DE.destory method: goReport = .null. release goReport * myreportclass.prg define class myclass as Custom iProp = 1 function init() debugout program() endfunc function destroy() debugout program() endfunc function Increment() this.iProp = this.iProp + 1 return str( this.iProp ) function test() return str( x1.i1 * 2 ) enddefinethe x1 cursor gets created in the report's private DS, the object has access to the cursor in the test() method for example. You can drop fields onto the report and make their expressions like goReport.Increment() or goReport.Text().