static void UpdateInventTransDates(Args _args)
{
InventTrans inventTrans;
DictTable dictTable;
RecId recId;
// Define the items and site combinations you want to update
container items = [
["GDY756603738", "4502"],
["???364620", "4454"],
["NIT210820", "4454"],
["COP166255009", "4505"],
["COP160018024", "4505"],
["CRL5110951", "4251"],
["MIC32346", "4401"],
["BRD000-889", "4320"],
["TOWMAX37T", "4320"]
];
// Iterate through each item and its site
for (int i = 1; i <= conLen(items); i++)
{
// Get the ITEMID and INVENTSITEID from the container
str itemId = conPeek(conPeek(items, i), 1);
str inventSiteId = conPeek(conPeek(items, i), 2);
ttsBegin;
select forUpdate inventTrans
where inventTrans.ItemId == itemId
&& inventTrans.InventSiteId == inventSiteId
&& inventTrans.DateFinancial != inventTrans.TransDate
&& inventTrans.IsExcludedFromInventoryValue == NoYes::No
&& inventTrans.StatusIssue <= InventTransStatusIssue::OnOrder // Assuming 1 = OnOrder
&& inventTrans.StatusReceipt <= InventTransStatusReceipt::OnOrder // Assuming 1 = OnOrder
&& inventTrans.DataAreaId == "40"
&& inventTrans.Partition == 5637144576; // Adjust based on your partition value
if (inventTrans.RecId)
{
// Update the DateFinancial field
inventTrans.DateFinancial = 06\04\2023; // Change the date as required
inventTrans.update();
info(strFmt("Updated ITEMID: %1, INVENTSITEID: %2, RecId: %3", itemId, inventSiteId, inventTrans.RecId));
}
else
{
info(strFmt("No records found for ITEMID: %1, INVENTSITEID: %2", itemId, inventSiteId));
}
ttsCommit;
}
}
</xmp></pre>
<pre class = "prettyprint"><xmp>
GDY756603738 4502
???364620 4454
NIT210820 4454
COP166255009 4505
COP160018024 4505
CRL5110951 4251
MIC32346 4401
BRD000-889 4320
TOWMAX37T 4320
</xmp></pre>
<h2> Complex Query </h2>
<pre class = "prettyprint"><xmp>
static void InventTransSelectQuery(Args _args)
{
InventTrans inventTrans;
InventTransOrigin inventTransOrigin;
InventTransPosting inventTransPosting;
InventDim inventDim;
ttsBegin;
select RecId, Qty, StatusIssue, StatusReceipt, ReferenceCategory, ReferenceId, DateFinancial, TransDate, Voucher
from inventTrans
join inventTransOrigin
where inventTrans.DataAreaId == inventTransOrigin.DataAreaId
&& inventTrans.Partition == inventTransOrigin.Partition
&& inventTrans.InventTransOrigin == inventTransOrigin.RecId
join inventDim
where inventTrans.DataAreaId == inventDim.DataAreaId
&& inventTrans.Partition == inventDim.Partition
&& inventTrans.InventDimId == inventDim.InventDimId
join inventTransPosting
where inventTrans.DataAreaId == inventTransPosting.DataAreaId
&& inventTrans.Partition == inventTransPosting.Partition
&& inventTransPosting.InventTransOrigin == inventTransOrigin.RecId
&& inventTransPosting.InventTransPostingType == 1
where inventTrans.DataAreaId == '40'
&& inventTrans.Partition == 5637144576
&& inventTrans.ItemId == 'TOY364620'
&& inventDim.InventSiteId == '4454'
&& inventTrans.StatusIssue <= InventTransStatusIssue::OnOrder // Assuming 1 corresponds to OnOrder status
&& inventTrans.StatusReceipt <= InventTransStatusReceipt::OnOrder // Assuming 1 corresponds to OnOrder status
&& inventTrans.IsExcludedFromInventoryValue == NoYes::No
&& inventTrans.Voucher == inventTransPosting.Voucher
&& inventTrans.DateFinancial != inventTransPosting.TransDate;
ttsCommit;
}
First understand the algorithm carefully. Then study the program line-by-line and compare it with the output. Finally, review the explanation section to strengthen your logic and programming understanding.
Rewrite the program without looking at the code. Modify values, conditions or logic and run it again. This helps improve confidence and strengthens coding skills much faster.
Sign in to save your progress and continue exactly where you left off.