Fiori app integration fails in program management when custom BAdI activated

After implementing a custom BAdI for program approval workflows, our Fiori app for program management throws HTTP 500 errors. The BAdI is supposed to add custom validation before approval submission, but it’s breaking the entire Fiori-ABAP integration layer.

The error appears when users try to submit approvals through the Fiori launchpad. Backend logs show “Method not implemented” but all required BAdI interface methods are coded. ST22 shows a dump with message SYSTEM_CORE_DUMPED in class /PLMB/CL_PPM_APPROVAL_BADI.

We’re on SAP PLM 2021 with Fiori 3.0. Has anyone successfully implemented custom approval BAdIs without breaking the Fiori interface? The approval workflow is completely blocked for our program managers.

Also check your BAdI filter values. If the BAdI is filter-dependent and you haven’t registered all filter combinations that Fiori uses, certain approval scenarios will fail. The ST22 dump should show which filter value caused the issue - look for the importing parameters in the dump analysis.

Don’t leave them empty - that causes the dump. Each method needs at minimum a proper return structure even if you’re not customizing that aspect. For GET_ERROR_MESSAGES, return an empty table. For GET_APPROVAL_STATUS, return the current status from the standard logic. For VALIDATE_BEFORE_SUBMIT, return EV_VALID = ‘X’ if you’re not adding validation.

The Fiori-ABAP integration expects structured responses. Empty methods break the JSON serialization in the OData layer.

Here’s your complete solution addressing all three focus areas:

1. BAdI Interface Completeness: SAP PLM 2021 requires all interface methods to be implemented for Fiori compatibility. Your BAdI implementation must include these methods:

METHOD /plmb/if_ppm_approval_badi~get_approval_status.
  ev_status = iv_current_status.
  ev_message = 'Custom validation passed'.
ENDMETHOD.

METHOD /plmb/if_ppm_approval_badi~validate_before_submit.
  ev_valid = 'X'.
  CLEAR et_messages.
ENDMETHOD.

Even if you don’t need custom logic in these methods, they must return proper structures. The OData service serializes these responses to JSON - empty methods cause serialization failures that appear as HTTP 500 errors.

2. Fiori-ABAP Integration Layer: The integration between Fiori and your BAdI goes through the OData service /PLMB/PPM_APPROVAL_SRV. This service expects specific response formats:

  • GET_APPROVAL_STATUS must return a valid status code and message text
  • VALIDATE_BEFORE_SUBMIT must return EV_VALID flag and ET_MESSAGES table (even if empty)
  • GET_ERROR_MESSAGES must return a properly structured BAPIRET2 table

The “Method not implemented” error occurs because Fiori calls these methods via reflection, and missing implementations cause SYSTEM_CORE_DUMPED. Check transaction /IWFND/ERROR_LOG to see the exact OData error that precedes the dump.

3. ST22 Dump Analysis: Your dump in /PLMB/CL_PPM_APPROVAL_BADI indicates the BAdI framework couldn’t invoke a required method. To diagnose:

  • Open ST22 and find your dump
  • Look at the “Source Code Extract” section - it shows which method call failed
  • Check “Contents of System Fields” - SY-MSGV1 through SY-MSGV4 contain the method name that wasn’t found
  • Review the call stack - if you see /IWFND/ classes, the failure is in OData processing

Additional Configuration Steps:

  1. Verify BAdI Registration:

    • Go to SE19, find your implementation
    • Ensure it’s linked to enhancement spot /PLMB/ES_PPM_APPROVAL
    • Status must be “Active” (not “Test” or “Inactive”)
    • Check filter values if your BAdI is filter-dependent
  2. Test BAdI Independently:

    • Use transaction SE24 to test each method directly
    • Pass sample parameters and verify return values
    • This isolates BAdI logic from Fiori integration issues
  3. Clear OData Cache:

    • Run transaction /IWFND/MAINT_SERVICE
    • Find service /PLMB/PPM_APPROVAL_SRV
    • Click “Clear Cache” to force service reload
    • Retest from Fiori launchpad
  4. Enable Detailed Logging:

    • Activate OData tracing in /IWFND/TRACES
    • Set trace level to “Maximum”
    • Reproduce the error and analyze the trace
    • Look for BAdI method invocation failures

Common Pitfall: Don’t assume optional methods from SAP PLM 2020 remain optional in 2021. The Fiori integration layer made several methods mandatory. Always implement the full interface definition from SE18, even if you provide only default implementations.

After implementing all interface methods and activating the BAdI, restart the ICM (transaction SMICM → Administration → ICM Restart) to ensure the OData service picks up the changes. Test the approval workflow in Fiori - the HTTP 500 error should resolve.

The “Method not implemented” error despite having code suggests incomplete BAdI interface implementation. Even if you’ve coded the main methods, check for optional methods that became mandatory in SAP PLM 2021.

Go to SE18 and display your BAdI definition. Compare the interface methods in your implementation (SE19) against the definition. Fiori integration often requires additional methods for OData exposure that weren’t needed in classic GUI.