Hi @rp@n,
You can use DimensionFocusNameTmp.generateFocusNamesDefaultDimension method to get dimension values according to dimension set information and update this information to table-source for the report.
I would say you need to do the next steps:
1. Add MainAccount and LedgerDimension fields to LedgerTransactionListTmp and fill values when data is inserted in LedgerTransactionListTmp (if it's not already done)
2. Add 11 pairs (or discuss the max possible level of dimension set with the customer) of field DimValueN and DimAttrNameN (where N from 1..11). DimValueN will store dimension value information and DimAttrNameN can store information about attribute name.
3. Populate unque combinations for MainAccount and LedgerDimension from LedgerTransactionListTmp to DimensionFocusNameTmp table
4. Run DimensionFocusNameTmp::generateFocusNamesDefaultDimension to fill dimension values to separate fields bases on ledger dimension and main account from DimensionFocusNameTmp filled in prev. step
5. Update LedgerTransactionListTmp DimValueN field from DimensionFocusNameTmp
6. In report, add same amount of columns for dimensions as you hae added in step 2.
7. Label for column = First.DimAttrNameN and value DimValueN , if First.DimAttrNameN is empty you need to hide the column from the report.
There are only few examples in standard and one of them is LedgerTrialBalanceDP.generateFocusDescription, but it uses combined value instead of separate columns.