If there's a requirement to call a RunBaseBatch class using X++ code, the following example demonstrates how to do it. In this case, we’re using the GUPItemBasePriceCalcJob class, which is a RunBaseBatch class, and calling it by setting the appropriate parameters.
BatchHeader header;
SysRecurrenceData sysRecurrenceData;
Batch batch;
BatchJob batchJob;
BatchInfo processBatchInfo;
BatchRetries noOfRetriesOnFailure = 4;
GUPItemBasePriceCalcJob GUPItemBasePriceCalcJob; // RunBase batch class
#define.timeInSecondsDelay(20)
select forupdate batch
join batchJob
where batchJob.RecId == batch.BatchJobId
&& batch.ClassNumber == classnum(GUPItemBasePriceCalcJob)
&& batchJob.Status == BatchStatus::Waiting
&& batch.Company == curext();
if (!batch)
{
// Setup the RunBaseBatch Job
header = BatchHeader::construct();
GUPItemBasePriceCalcJob= GUPItemBasePriceCalcJob::construct();
GUPItemBasePriceCalcJob.parmItemId(ItemId); // pass Item Id
GUPItemBasePriceCalcJob.parmSiteId(SiteId); // pass Site
processBatchInfo = GUPItemBasePriceCalcJob.batchInfo();
processBatchInfo.parmRetriesOnFailure(noOfRetriesOnFailure);
header.addTask(GUPItemBasePriceCalcJob);
// Set the recurrence data
sysRecurrenceData = SysRecurrence::defaultRecurrence();
sysRecurrenceData = SysRecurrence::setRecurrenceStartDateTime(sysRecurrenceData, DateTimeUtil::addSeconds(DateTimeUtil::utcNow(), #timeInSecondsDelay));
sysRecurrenceData = SysRecurrence::setRecurrenceNoEnd(sysRecurrenceData);
sysRecurrenceData = SysRecurrence::setRecurrenceEndAfter(sysRecurrenceData, 1);
header.parmRecurrenceData(sysRecurrenceData);
// Set the batch alert configurations
header.parmAlerts(NoYes::No, NoYes::Yes, NoYes::No, NoYes::Yes, NoYes::No);
header.save();