27

Microsoft Business Central has a well-established, first-party standard for report invocation: the Report Selections framework. This pattern allows administrators and partners to configure which report is used for a given business process — without touching code. A great example of this pattern done right:


DeliveryReminderHeader.Copy(Rec);

DeliveryReminderHeader.SetRecFilter();

ReportSelections.PrintWithCheckForVend(

  Enum::"Report Selection Usage"::"Delivery Reminder Test",

  DeliveryReminderHeader,

  DeliveryReminderHeader.FieldNo("Vendor No.")

);


This approach is used consistently across Sales, Purchase, and several other functional areas — and for good reason:

  • The report used is configurable via the Report Selections page
  • ISVs and partners can replace or extend the report without modifying base app code
  • It respects the document context and passes filters naturally

However, the Warehouse area completely ignores this standard. Instead, reports are hardcoded directly into page actions using RunObject = Report:


action("Whse. &Shipment Status")

{

  RunObject = Report "Whse. Shipment Status";

}

action("Warehouse &Bin List")

{

  RunObject = Report "Warehouse Bin List";

}

action("Whse. &Adjustment Bin")

{

  RunObject = Report "Whse. Adjustment Bin";

}

action("Warehouse Physical Inventory &List")

{

  RunObject = Report "Whse. Phys. Inventory List";

}


This hardcoding means:

  • No configurability — administrators cannot swap out a report for a customized or localized version
  • No extensibility — ISVs have no hook to substitute their own report via Report Selections
  • Inconsistency — Warehouse breaks Microsoft's own established pattern used everywhere else in the product


Proposed Solution

Introduce proper Report Selection Usage enum values for Warehouse reports and invoke them via the ReportSelections codeunit, consistent with how other modules already work:


action("Whse. &Shipment Status")

{

  ApplicationArea = Warehouse;

  Caption = 'Whse. &Shipment Status';

  Image = "Report";

  ToolTip = 'View warehouse shipments by status.';


  trigger OnAction()

  var

    ReportSelections: Record "Report Selections";

    WhseShipmentHeader: Record "Warehouse Shipment Header";

  begin

    WhseShipmentHeader.Copy(Rec);

    WhseShipmentHeader.SetRecFilter();

    ReportSelections.PrintWithCheck(

      Enum::"Report Selection Usage"::"Whse. Shipment Status",

      WhseShipmentHeader);

  end;

}


This would require Microsoft to:

  1. Add new Report Selection Usage enum values for the relevant Warehouse report scenarios
  2. Migrate the hardcoded RunObject actions to use ReportSelections calls
  3. Seed default entries in Report Selections so existing behavior is preserved out of the box


Impact / Who Benefits

  • ISV Partners building Warehouse extensions who need to provide custom report layouts or replacements
  • Customers with regulatory or localization requirements for warehouse documentation
  • Microsoft itself — aligning Warehouse with the standard used in every other functional area improves overall product consistency

This is not a feature request — it is a consistency request. Microsoft already solved this problem elegantly in other modules. We are simply asking that the Warehouse area be held to the same standard.

Category: Inventory
STATUS DETAILS
New