问题描述
在 AL 扩展代码单元中,您如何使用“选择更多”功能遍历用户在列表页面上选择/标记/勾选的记录?例如,某个数据类型中是否有 IsMarked / IsSelected / IsTicked 属性?或者,能不能把已经下钻的列表传给codeunit?
解决方法
有几种方法可以做到这一点。
您有方法 Mark
和 MarkedOnly
。
使用 Mark 您可以看到 Mark
条记录,而 MarkedOnly
则只能看到已标记的记录。
一旦它们被标记,您就可以遍历它们并将它们分配给一个临时表,然后您可以将该表传递给 codeunit 方法。 或者您可以将类似于 VAR 的参数传递给 codeunit 方法,然后执行循环。
此处为 Mark 和 MarkedOnly 的定义
,要将给定页面上的选择传递给代码单元或过程,请使用 SetSelectionFilter
函数。此函数将当前选择复制到另一个记录变量,然后您可以对其进行迭代或作为参数传递。
在下面的示例中,假设相关页面以 Sales Line
表作为其来源:
local procedure CallMyCodeunit();
var
SalesLine: Record "Sales Line";
MyCodeunit: Codeunit "My Codeunit";
begin
CurrPage.SetSelectionFilter(SalesLine);
MyCodeunit.DoSomething(SalesLine);
end;