static void FindTablesFromConfigKey(Args _args)
{
// The name of the configuration key to be specified here
str configKeyName = "Prod";
Dictionary dictionary = new Dictionary();
ConfigurationKeyId configKeyId = dictionary.configurationKeyName2Id(configKeyName);
TableId tableId;
DictConfigurationKey dictConfigurationKey;
DictTable dictTable;
container keyIds;
int i;
;
if (configKeyId)
{
// Find all children of the specified configuration key
for (i = dictionary.configurationKeyNext(0); i; i = dictionary.configurationKeyNext(i))
{
dictConfigurationKey = new DictConfigurationKey(i);
while (dictConfigurationKey.parentConfigurationKeyId())
dictConfigurationKey = new DictConfigurationKey(dictConfigurationKey.parentConfigurationKeyId());
if (dictConfigurationKey.id() == configKeyId)
keyIds += i;
}
// Find all tables that have an appropriate configuration key
i = 0;
for (tableId = dictionary.tableNext(0);tableId;tableId = dictionary.tableNext(tableId))
{
dictTable = new DictTable(tableId);
if (!dictTable.isMap() && !dictTable.isTmp() && !dictTable.isView())
{
if (confind(keyIds, dictTable.configurationKeyId()))
{
i++;
info(dictTable.name());
}
}
}
}
info(strfmt("%1 tables have configuration key '%2'", i, configKeyName));
}
To Cancel Deliver Remainder through X++ you can use below code sample. Thanks. static void _CancelDeliverRemainder_Sales(Args _args) { SalesLine SalesLine = SalesLine::find('SO0013', true); ; if (SalesLine) { // Set remaining inventory Qty to zero SalesLine.RemainInventPhysical = 0; // Set remaining physical Qty to zero SalesLine.RemainSalesPhysical = 0; // We have to cancel the SalesLine SalesLine.PurchStatus = PurchStatus::Canceled; SalesLine.update(); ...