Hi Girish S.
I have created a Query with a table relation between DimensionAttributeLevelValueAllView and my custom table ConsolidationDetail
public static void main(Args _args)
{
Query q = new Query();
QueryBuildDataSource qbds, qbdsCostCenter, qbdsPatientType;
QueryBuildRange qbr, qbrCostCenter, qbrPatientType;
QueryRun qr;
TransDate periodFrom, periodTo;
periodFrom = mkDate(1, 3, 2023);
periodTo = mkDate(31, 3, 2023);
ConsolidationDetail consolDetail;
DimensionAttributeLevelValueAllView dimAttrValueAllView_CostCenter, dimAttrValueAllView_PatientType;
DimensionAttribute dimAttr_CostCenter = DimensionAttribute::findByName('P1_PatientType');
DimensionAttribute dimAttr_PatientTyoe = DimensionAttribute::findByName('P5_CostCenter');
qbds = q.addDataSource(tablenum(ConsolidationDetail));
qbds.addGroupByField(fieldNum(ConsolidationDetail, SubledgerVoucherDataAreaId));
qbds.addGroupByField(fieldNum(ConsolidationDetail, MainAccountId));
qbds.addGroupByField(fieldNum(ConsolidationDetail, MainAccountName));
qbds.addGroupByField(fieldNum(ConsolidationDetail, MainAccountType));
qbds.addGroupByField(fieldNum(ConsolidationDetail, PostingLayer));
qbr = qbds.addRange(fieldNum(ConsolidationDetail, SubledgerVoucherDataAreaId));
qbr.value(curExt());
qbr = qbds.addRange(fieldNum(ConsolidationDetail, MainAccountType));
qbr.value(strFmt('((%1.%2 == %3) || (%1.%2 == %4) || (%1.%2 == %5))',
qbds.name(),
fieldStr(ConsolidationDetail, MainAccountType),
any2Int(DimensionLedgerAccountType::ProfitAndLoss),
any2Int(DimensionLedgerAccountType::Revenue),
any2Int(DimensionLedgerAccountType::Expense)
));
qbr = qbds.addRange(fieldNum(ConsolidationDetail, AccountingDate));
qbr.value(queryRange(periodFrom, periodTo));
qbr = qbds.addRange(fieldNum(ConsolidationDetail, PostingLayer));
qbr.value(queryValue(CurrentOperationsTax::Current));
qbdsCostCenter = qbds.addDataSource(tablenum(DimensionAttributeLevelValueAllView), 'CostCenter');
qbdsCostCenter.addGroupByField(fieldNum(DimensionAttributeLevelValueAllView, DisplayValue));
qbdsCostCenter.addLink(fieldNum(ConsolidationDetail, LedgerDimension), fieldNum(DimensionAttributeLevelValueAllView, ValueCombinationRecId));
qbrCostCenter = qbdsCostCenter.addRange(fieldNum(DimensionAttributeLevelValueAllView, DimensionAttribute));
qbrCostCenter.value(queryValue(dimAttr_CostCenter.RecId));
qbdsPatientType = qbds.addDataSource(tablenum(DimensionAttributeLevelValueAllView), 'PatientType');
qbdsPatientType.addGroupByField(fieldNum(DimensionAttributeLevelValueAllView, DisplayValue));
qbdsPatientType.addLink(fieldNum(ConsolidationDetail, LedgerDimension), fieldNum(DimensionAttributeLevelValueAllView, ValueCombinationRecId));
qbrPatientType = qbdsPatientType.addRange(fieldNum(DimensionAttributeLevelValueAllView, DimensionAttribute));
qbrPatientType.value(queryValue(dimAttr_PatientTyoe.RecId));
qr = new QueryRun(q);
while (qr.next())
{
consolDetail = qr.get(tablenum(ConsolidationDetail));
dimAttrValueAllView_CostCenter = qr.getNo(2);
dimAttrValueAllView_PatientType = qr.getNo(3);
Info(strFmt('Main account: %1 (%2) Cost-center[%3] Patient-type[%4] - %5', consolDetail.MainAccountId, consolDetail.MainAccountName, dimAttrValueAllView_CostCenter.DisplayValue, dimAttrValueAllView_PatientType.DisplayValue, consolDetail.SubledgerVoucherDataAreaId));
}
}
When I used the field just P5_CostCenter for grouping, it works.
But, when I add another dimension e.g. P1_PatientType, it not work.
Can you help me to review my code?
Thanks,
Rangga