Hi Max Nguyen,
I am writing the below code in job, but i am unable to run the excel sheet.
in this job how to get the record from budgettmpbalance table?
static void CreateExcel(Args _args)
{
/// <summary>
/// Sums the temporary table data.
/// </summary>
/// <returns>
/// The budget amounts in a <c>BudgetTmpBalance</c> temporary table.
/// </returns>
BudgetTmpBalance budgetTmpBalanceLocal;
BudgetTmpBalance budgetTmpBalance;
BudgetBalancesActualsContract contract;
BudgetControlConfiguration budgetControlConfiguration;
//srini
DimensionDisplayValue mainAccount,businessUnit,department,worker;
HcmPersonnelNumberId PersonnelNumber;
MainAccountNum mainaccountId;
Name mainAccountName,businessUnitName,departmentName,workerName;
MainAccount mainAccountTable;
OMOperatingUnit oMOperatingUnit;
HcmWorker hcmWorker;
DimensionDisplayValue dimensionFocus,LedgerAccount;
container offsetAccount;
RefRecId ledgerDimension;
//Code for Splitting the Ledger Account based on the ledger dimension..
DimensionAttributeValueCombination dimensionAttributeValueCombination;
//GeneralJournalAccountEntry is one such tables that refrences DimensionAttributeValueCombination
GeneralJournalAccountEntry generalJournalAccountEntry;
// Excel object definitions
SysExcelApplication xlsApplication;
SysExcelWorkBooks xlsWorkBookCollection;
SysExcelWorkBook xlsWorkBook;
SysExcelWorkSheets xlsWorkSheetCollection;
SysExcelWorkSheet xlsWorkSheet;
// random variable declarations
int row = 1;
// define and initialize the progress bar so the user knows what is going on
SysOperationProgress progress = new SysOperationProgress();
#AviFiles
Progress.setAnimation(#aviTransfer);
progress.setCaption("Sending information to Excel");
progress.setText("Processing...");
progress.update(true);
//Initialize Excel instance
xlsApplication = SysExcelApplication::construct();
//Create Excel WorkBook and WorkSheet
xlsWorkBookCollection = xlsApplication.workbooks();
xlsWorkBook = xlsWorkBookCollection.add();
xlsWorkSheetCollection = xlsWorkBook.worksheets();
xlsWorkSheet = xlsWorkSheetCollection.itemFromNum(1);
//Excel columns captions
// columns should autofit
xlsWorkSheet.columns().autoFit();
// headings
xlsWorkSheet.cells().item(row,1).value("Budget Model");
xlsWorkSheet.cells().item(row,2).value("Period Start");
xlsWorkSheet.cells().item(row,3).value("Main Account");
xlsWorkSheet.cells().item(row,4).value("Main Account Name");
xlsWorkSheet.cells().item(row,5).value("Business Unit");
xlsWorkSheet.cells().item(row,6).value("Business Unit Name");
xlsWorkSheet.cells().item(row,7).value("Department");
xlsWorkSheet.cells().item(row,8).value("Department Name");
xlsWorkSheet.cells().item(row,9).value("Worker");
xlsWorkSheet.cells().item(row,10).value("Worker Name");
xlsWorkSheet.cells().item(row,11).value("Original Budget");
xlsWorkSheet.cells().item(row,12).value("Revised Budget");
xlsWorkSheet.cells().item(row,13).value("Actual Expenditures");
xlsWorkSheet.cells().item(row,14).value("Variance Amount");
xlsWorkSheet.cells().item(row,15).value("Variance Percent");
xlsWorkSheet.cells().item(row,16).value("Percent of Budget");
row++;
// Temp table could contain multiple records for each dimension focus \ budget model combination; sum up all the common combinations.
if (isConfigurationkeyEnabled(configurationKeyNum(PublicSector)))
{
budgetControlConfiguration = BudgetControlConfiguration::findActiveByPrimaryLedger(Ledger::current());
while select sum(OriginalAmount), sum(RevisedAmount), sum(LedgerAmount), sum(Variance), sum(PreliminaryAmount), sum (ApportionmentAmount)
from budgetTmpBalance
group by BudgetModelId, DimensionFocus, Period
//where budgetTmpBalance.DimensionFocus == "14210101-00000002"
{
budgetTmpBalance.UseOnlyApportionment = budgetControlConfiguration.UseApportionedAmount;
budgetTmpBalance.SumPreliminaryBudget = budgetControlConfiguration.SumPreliminaryBudget && !budgetTmpBalance.UseOnlyApportionment;
buf2Buf(budgetTmpBalance, budgetTmpBalanceLocal);
if (contract.parmBudgetType() == BudgetType::Revenue)
{
// Invert Revenue amounts. This will only occur for the chart because the BudgetType parameter isn't exposed elsewhere.
budgetTmpBalanceLocal.RevisedAmount = budgetTmpBalanceLocal.RevisedAmount * -1;
budgetTmpBalanceLocal.LedgerAmount = budgetTmpBalanceLocal.LedgerAmount * -1;
}
if (budgetTmpBalanceLocal.UseOnlyApportionment)
{
budgetTmpBalanceLocal.PercentOfBudget = (budgetTmpBalanceLocal.ApportionmentAmount == 0 || budgetTmpBalanceLocal.Variance == 0)?0: budgetTmpBalanceLocal.Variance / budgetTmpBalanceLocal.ApportionmentAmount;
budgetTmpBalanceLocal.VariancePercent = (budgetTmpBalanceLocal.ApportionmentAmount == 0 || budgetTmpBalanceLocal.LedgerAmount == 0)?0: budgetTmpBalanceLocal.LedgerAmount / budgetTmpBalanceLocal.ApportionmentAmount;
}
else
{
budgetTmpBalanceLocal.PercentOfBudget = (budgetTmpBalanceLocal.RevisedAmount == 0 || budgetTmpBalanceLocal.Variance == 0)?0: budgetTmpBalanceLocal.Variance / budgetTmpBalanceLocal.RevisedAmount;
budgetTmpBalanceLocal.VariancePercent = (budgetTmpBalanceLocal.RevisedAmount == 0 || budgetTmpBalanceLocal.LedgerAmount == 0)?0: budgetTmpBalanceLocal.LedgerAmount / budgetTmpBalanceLocal.RevisedAmount;
dimensionFocus = "14210101-00000002";//budgetTmpBalanceLocal.DimensionFocus;
LedgerAccount = subStr(dimensionFocus,1,44);
mainAccount = subStr(dimensionFocus,1,8);
select mainAccountTable
where mainAccountTable.MainAccountId == mainAccount;
mainAccountName = mainAccountTable.Name;
businessUnit = subStr(dimensionFocus,12,8);
select oMOperatingUnit
where oMOperatingUnit.OMOperatingUnitNumber == businessUnit;
businessUnitName = oMOperatingUnit.Name;
department = subStr(dimensionFocus,23,8);
select oMOperatingUnit
where oMOperatingUnit.OMOperatingUnitNumber == department;
departmentName = oMOperatingUnit.Name;
worker = subStr(dimensionFocus,34,7);
PersonnelNumber = worker;
select * from hcmWorker
where hcmWorker.PersonnelNumber == PersonnelNumber;
workerName = hcmWorker.name();
//offsetAccount = ['MainAccount','4000',,4,'BusinessUnit',010,'Department',022,'Worker',033,'Project','-','Budget','-'];
/*offsetAccount = ['MainAccount',mainAccount,'BusinessUnit',businessUnit,'Department',department,'Worker',worker,'Project','-','Budget','-'];
ledgerDimension = AxdDimensionUtil::getLedgerAccountId(offsetAccount);
select generalJournalAccountEntry
where generalJournalAccountEntry.LedgerAccount == LedgerAccount;*/
// info(strFmt("%1: %2, %3", segmentName, segmentValue, segmentDescription));
progress.setText(strFmt("Transferring Budget Information %1",budgetTmpBalanceLocal.BudgetModelId));
xlsWorkSheet.cells().item(row,1).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,1).value(budgetTmpBalanceLocal.BudgetModelId);
xlsWorkSheet.cells().item(row,2).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,2).value(strfmt('%1', budgetTmpBalanceLocal.Period));
xlsWorkSheet.cells().item(row,3).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,3).value(mainAccount);
xlsWorkSheet.cells().item(row,4).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,4).value(mainAccountName);
xlsWorkSheet.cells().item(row,5).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,5).value(businessUnit);
xlsWorkSheet.cells().item(row,6).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,6).value(businessUnitName);
xlsWorkSheet.cells().item(row,7).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,7).value(department);
xlsWorkSheet.cells().item(row,8).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,8).value(departmentName);
xlsWorkSheet.cells().item(row,9).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,9).value(worker);
xlsWorkSheet.cells().item(row,10).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,10).value(workerName);
xlsWorkSheet.cells().item(row,11).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,11).value(strfmt('%1', budgetTmpBalanceLocal.OriginalAmount));
xlsWorkSheet.cells().item(row,12).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,12).value(strfmt('%1', budgetTmpBalanceLocal.RevisedAmount));
xlsWorkSheet.cells().item(row,13).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,13).value(strfmt('%1', budgetTmpBalanceLocal.LedgerAmount));
xlsWorkSheet.cells().item(row,14).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,14).value(strfmt('%1', budgetTmpBalanceLocal.Variance));
xlsWorkSheet.cells().item(row,15).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,15).value(strfmt('%1', budgetTmpBalanceLocal.VariancePercent) + '%');
xlsWorkSheet.cells().item(row,16).comObject().numberFormat('@');
xlsWorkSheet.cells().item(row,16).value(strfmt('%1', budgetTmpBalanceLocal.PercentOfBudget) + '%');
row++;
//Open Excel document
xlsApplication.visible(true);
}
budgetTmpBalanceLocal.insert();
}
info(strFmt("%1","Transfer data ToDate excel sheet is completed"));
}
else
{
while select sum(OriginalAmount), sum(RevisedAmount), sum(LedgerAmount), sum(Variance) from budgetTmpBalance
group by BudgetModelId, DimensionFocus, Period
{
buf2Buf(budgetTmpBalance, budgetTmpBalanceLocal);
if (contract.parmBudgetType() == BudgetType::Revenue)
{
// Invert Revenue amounts. This will only occur for the chart because the BudgetType parameter isn't exposed elsewhere.
budgetTmpBalanceLocal.RevisedAmount = budgetTmpBalanceLocal.RevisedAmount * -1;
budgetTmpBalanceLocal.LedgerAmount = budgetTmpBalanceLocal.LedgerAmount * -1;
}
budgetTmpBalanceLocal.PercentOfBudget = (budgetTmpBalanceLocal.RevisedAmount == 0 || budgetTmpBalanceLocal.Variance == 0)?0: budgetTmpBalanceLocal.Variance / budgetTmpBalanceLocal.RevisedAmount;
budgetTmpBalanceLocal.VariancePercent = (budgetTmpBalanceLocal.RevisedAmount == 0 || budgetTmpBalanceLocal.LedgerAmount == 0)?0: budgetTmpBalanceLocal.LedgerAmount / budgetTmpBalanceLocal.RevisedAmount;
budgetTmpBalanceLocal.insert();
}
}
//return budgetTmpBalanceLocal;
}