In one of the assignments, I had to make a
batch job using Sys operation framework.
So I created a service class, a data
contract class, a service, a query and a menu item. All standard AX objects
required for a batch job to run.
The issue was that if i put all my
methods/logic in a standalone class,
everything worked fine. That means records get created in all the right tables
like PriceDiscAdmTrans, PriceDiscAdmtable, and PriceDiscTable. But if try to
run the batch job (after CIL compile of course), it doesn’t create all the
records. Some records were getting skipped, which didn’t make sense since my
standalone class and the batch job class were logically speaking the same.
Now the fun part. Debugging in Visual Studio (since it’s a service you can’t debug in X++) i found that the
while loop works little differently in Visual Studio than in X++. In Visual
Studio, the line table's RecId gets reset even when the while loop moves to the
next parent record when in fact you would expect it to be there till the cursor
moves to the line record. AX, as expected, keeps the RecId value until the line
table gets reassigned the next table record. My logic depended on this and it
failed. Finally I changed the logic to store the table buffer in a variable and
managed to get the code working.
Does anyone have a similar experience or
any suggestions?