Why SETFILTER doesn’t work sometimes

Daniel Gorski
CEO
1 Min. Lesezeit

Every AL-Developer uses “SETFILTER” on a daily basis. But did you know that there are certain situations where “SETFILTER” will refuse to work?
First let’s look at the syntax:
Rec.SETFILTER(<Field>, <Filter>, <Placeholders>);
Seems simple enough right?
This will work just fine. But what happens if we do the following?
The applied filter will look like this:
AL did not manage to replace the placeholders inside the filter string, because “*” and “@” are used.
To make this work, we must use “STRSUBSTNO”:
STRSUBSTNO('<Filter>', <Values>)
That way, we construct the filter-text by ourselves and pass it into the filter string of the SETFILTER function. The result will look like this: