Saturday, March 6, 2021

if (appl.ttsLevel() == 0) { throw error(strFmt("@SCM:TransactionExpected", funcName())); } D365

 Usually you get this error when your code is not in transaction begin and commit.

Write your code between ttsbegin and ttscommit


Ex: 

                                ttsbegin;

                                salesLine.initFromSalesTable(_retOrdSalesTable);

                                salesLine.ItemId        = itemId;

                                salesLine.SalesUnit     = InventTableModule::find(itemId, ModuleInventPurchSales::Invent).UnitId;

                                salesLine.SalesPrice    = unitPrice;

                                if(salesLine.SalesPrice == 0.00)

                                {

                                    inventDimPrice.clear();

                                    inventDimPrice.InventSiteId = inventSiteId;

                                    inventDimPrice = InventDim::findOrCreate(inventDimPrice);

                                    salesLine.setPriceAgreement(inventDimPrice);

                                }

                                salesLine.LineAmount    = salesLine.calcLineAmount();

                                salesLine.SalesQty      = 0;

                                inventBatch = InventBatch::find('999', itemId);

                                if(!inventBatch)

                                {

                                    select firstfast inventBatch order by

                                         createdDateTime desc  where inventBatch.itemId == itemId

                                            && inventBatch.inventBatchId    != '';

                                }

                                inventDimGet.InventLocationId = inventLocationId;

                                inventDimGet.InventSiteId     = inventSiteId;

                                inventDimGet.wMSLocationId    = wMSLocationId;

                                inventDimGet.inventBatchId    = inventBatch.inventBatchId;


                                inventDimGet = InventDim::findOrCreate(inventDimGet);

                                // find inventDim

                                salesLine.InventDimId   = inventDimGet.inventDimId;

                                salesLine.createLine(true, true, true, false, false, false, false, false);

                                

                                salesLine.selectForUpdate(true);

                                salesLine.ExpectedRetQty = -qty;

                                salesLine.update();

                                ttscommit;

No comments:

Post a Comment

Why do users often get confused about Dynamics 365 Customer Engagement (D365 CE), Dataverse, and the Power Platform?

  The Microsoft ecosystem for business applications can sometimes be difficult to navigate, especially when discussing Dynamics 365 Customer...