Javier, talvez este codigo parcial te pueda servir de guía.
Saludos.
//Columnas de las cuentas
for n := nColIniCtas to (nColIniCtas+nColsCtas )-1
oRpt:AddColumn( TrColumn():New( { TituCol( cAlias, n, aCuentas ) },,;
{ DatoCol( cAlias, n, aCuentas ) },12,;
{ "@Z( 9,999,999,999.99"},,,,,,.t.,, oRpt ) )
next
ENDREPORT
ACTIVATE REPORT oRpt
SysRefresh()
return nil
//----------------------------------------------------------------------------//
static function TituCol( cAlias, n, aCuentas )
RETURN { || if( substr((cAlias)->(FieldName(n)),1,3)="CTA", aCuentas[n]+" ",;
(cAlias)->(FieldName(n)) ) }
//----------------------------------------------------------------------------//
static function DatoCol( cAlias, n, aCuentas )
RETURN { || ( cAlias )->( FieldGet( n ) ) }