MDG user interfaces: Floorplan Manager and Fiori
How MDG screens are assembled from FPM configurations and feeder classes, how newer Fiori apps differ, and where each kind of UI change belongs.
The UI stack
Classic MDG single-object screens are Web Dynpro ABAP apps built with the Floorplan Manager (FPM), even when opened from a Fiori tile. Newer S/4HANA MDG apps are SAPUI5 on CDS and OData. Both sit on the same MDG model, so your rules fire whichever UI is used.
How an FPM application is built
A tree of configurations: application, floorplan (for MDG usually an Overview Page), UIBBs (forms, lists), and a feeder class behind each UIBB. Find the names on your system with the technical help on a change request screen rather than memorising them.
Match each FPM part to its job.
Three levels of change
Prefer customizing or configuration enhancements over copying SAP's configurations, so upgrades still deliver SAP's changes. Before writing a feeder, try component customizing and the field properties per CR type and step. sap-config-mode=X in the URL opens the customizing editor (with authorisation).
The FPM event loop
Every Enter, dropdown change or button click is a round trip. Its order explains most 'my value disappeared' bugs.
A steward types a currency on the cost center screen, presses Enter, and the value vanishes. What do you do?
Reading a feeder class
You rarely write a feeder from scratch. Inherit from the standard feeder named in the component configuration and redefine one method. This outline makes a field read-only after the request step.
" OUTLINE: inherit from the standard feeder named in the component configuration
CLASS zcl_my_cctr_form_feeder DEFINITION PUBLIC
INHERITING FROM <standard_feeder_class>.
PUBLIC SECTION.
METHODS if_fpm_guibb_form~get_data REDEFINITION.
ENDCLASS.
CLASS zcl_my_cctr_form_feeder IMPLEMENTATION.
METHOD if_fpm_guibb_form~get_data.
super->if_fpm_guibb_form~get_data( ... same parameters ... ).
" READ TABLE ct_field_usage ASSIGNING FIELD-SYMBOL(<ls_usage>) WITH KEY name = 'KOSTL'.
" IF sy-subrc = 0 AND <not the request step>.
" <ls_usage>-read_only = abap_true. ev_field_usage_changed = abap_true.
" ENDIF.
ENDMETHOD.
ENDCLASS.Call super first and set the 'changed' flag, or FPM ignores your field usage change.
Complete the key words of a feeder enhancement.
CLASS zcl_my_feeder DEFINITION PUBLIC <standard_feeder_class>. PUBLIC SECTION. METHODS if_fpm_guibb_form~get_data . ENDCLASS. ... ->if_fpm_guibb_form~get_data( ... ). <ls_usage>-read_only = .
Fiori apps: a different engine
Newer MDG apps are generated from CDS views, an OData or RAP service and annotations. Extend them with CDS extensions, annotations and Adapt UI. Check the Fiori Apps Reference Library for what exists on your release.
Where does this UI change belong?
Place each request at the cheapest layer that delivers it, without bypassing a rule.
Remember
- Classic MDG screens are FPM applications: application configuration, OVP floorplan, UIBBs, feeder classes.
- FPM round trip order: FLUSH, PROCESS_EVENT, then GET_DATA with field usage; prefer customizing over copying or code.
- Rules belong in BRFplus or BAdIs, not in the UI, so API and AI paths enforce them too.