static void SR_Extract_SegmentName_values(Args _args)
{
#define.CostCenter("CostCenter")
Query query;
QueryRun queryRun;
QueryBuildDataSource qbds,qbdsDate;
GeneralJournalAccountEntry generalJournalAccountEntry;
GeneralJournalEntry generalJournalEntry;
container value = conNull();
OMOperatingUnit omou;
// Dimension
DimensionStorage dimensionStorage;
// Segment
int segmentCount, segmentIndex;
DimensionStorageSegment segment;
str 100 segmentName, MainAccount, segmentValue;
container segments;
query = new Query();
qbds = query.addDataSource(tableNum(GeneralJournalAccountEntry));
// Sum functional and transaction amounts
qbds.addSelectionField(fieldNum(GeneralJournalAccountEntry, AccountingCurrencyAmount), SelectionField::Sum);
qbds.addSelectionField(fieldNum(GeneralJournalAccountEntry, TransactionCurrencyAmount), SelectionField::Sum);
qbds.addGroupByField(fieldNum(GeneralJournalAccountEntry, LedgerDimension));
qbdsDate = qbds.addDataSource(tableNum(GeneralJournalEntry));
qbdsDate.joinMode(JoinMode::InnerJoin);
qbdsDate.fetchMode(QueryFetchMode::One2One);
qbdsDate.addLink(fieldNum(GeneralJournalAccountEntry, GeneralJournalEntry), fieldNum(GeneralJournalEntry, RecId));
queryRun = new QueryRun(query);
while (queryRun.next())
{
generalJournalAccountEntry = queryRun.get(tableNum(generalJournalAccountEntry));
// Get dimension storage
dimensionStorage = DimensionStorage::findById(GeneralJournalAccountEntry.LedgerDimension);
if (dimensionStorage == null)
{
throw error("@SYS83964");
}
// Add segments for all hierarchies
segments = conNull();
// Get segments
segmentCount = dimensionStorage.segmentCountForHierarchy(1);
for (segmentIndex = 1; segmentIndex <= segmentCount; segmentIndex++)
{
// Get segment
segment = dimensionStorage.getSegmentForHierarchy(1, segmentIndex);
if (segment.parmDimensionAttributeValueId() != 0)
{
// Get segment name
segmentName = DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId ()).DimensionAttribute).Name;
// Add segment value
segmentValue = segment.parmDisplayValue();
if (segmentIndex == 1)
{
MainAccount = segmentValue;
}
if (segmentName == #CostCenter)
{
info("Main account – " + MainAccount);
info("Segment Name – " + segmentName);
info("Cost center – " + segmentValue);
info(strFmt(‘Total TransactionCurrency amount – %1′,generalJournalAccountEntry.TransactionCurrencyAmount));
info(strFmt(‘Total AccountingCurrency amount – %1′, generalJournalAccountEntry.AccountingCurrencyAmount));
info("______________________________________");
}
}
}
}
}