Important detail that caused me a bug recently and I want to share with others who are writing AL Code for Business Central.

When you pass a record to a procedure then you can do that either by pass-by value or pass-by reference.

When you have code like this:

CurrPage.SetSelectionFilter(ApprovalEntriesSelected);
ApproveEntry(ApprovalEntriesSelected);

and you pass-by value:

procedure ApproveEntry(Entry: Record "Approval Workflow Entry")

then all filters are cleared on the record and you get a empty record on your procedure.

when you pass-by reference:

procedure ApproveEntry(var Entry: Record "Approval Workflow Entry")

when all filters on the record are preserved.

Small detail but it caused me some tinkering over :)