Skip to content
ERP Preflight

OPD Guard

S/4HANA Output Parameter Determination & BRFplus decision table evaluation

Content reviewed September 26, 2026

Engine
OPD_GUARD
Domain
Output & Extensibility
Version
3.0.0
Target releases
S4H_2022, S4H_2023, S4HANA_CLOUD_2402, S4HANA_CLOUD_2408
Accepted formats
JSON, XML, CSV, XLSX

Input contract

BRFplus output-determination decision tables (CSV with a Step column or '# Step:' sections, XML <Table name=...> export, XLSX with one sheet per step, or JSON {'tables': {step: [rows]}}) plus an optional document 'scenario' with 'expected_determination', a batch 'scenarios' list ([{id, scenario, expected}]), 'baseline_tables' (previous version, for the before/after diff) and a FormDoctor 'form_handoff' block. XML carries batch scenarios as <Scenarios><Scenario id=...>, expectations as <Expected> and the previous version as <BaselineDecisionTables>.

Required input

  • At least one decision table (CSV/XML/XLSX/JSON)
  • Hit policy FIRST per step; results of earlier steps are condition values of later steps; Printer applies to channel PRINT and Email Recipient / Email Sender to channel EMAIL only.
  • At most 500 batch scenarios per run.

Finding codes

Finding codes (12)

  • OPD_CHANNEL_INACTIVEDefault severity: CriticalCategory: Channel Governance

    Determined output channel is inactive or unsupported

    Remediation: Change the Channel decision table result to a supported channel (EMAIL, PRINT, EDI, XML, IDOC, PORTAL) and make sure the channel is active for the output type in SPRO > Output Control > Define Business Rules.

  • OPD_DETERMINATION_STEP_MISSINGDefault severity: CriticalCategory: Output Determination

    Output determination step has no matching rule

    Remediation: In 'Output Parameter Determination' (BRFplus, app 'Output Parameter Determination'), add a decision table row for the failing step that matches the document's condition values, or add a trailing wildcard ('*') fallback row. Re-run the determination simulation for the document type.

  • OPD_CONFLICTING_RULESDefault severity: MajorCategory: Configuration Integrity

    Overlapping decision table rows return different outcomes

    Remediation: The rows overlap without one containing the other, so for the overlapping inputs only the row order decides the outcome. Make the conditions disjoint (split the overlap into its own explicit row with the intended result) in 'Output Parameter Determination', then re-run the simulation for the witness input.

  • OPD_EXPECTED_DETERMINATION_MISMATCHDefault severity: MajorCategory: Output Determination

    Simulated determination differs from the expected result

    Remediation: Compare the rule trace of the scenario with the expected result: correct the decision table row that wins for the scenario (or its order), or correct the expectation if the business requirement changed.

  • OPD_INCOMPLETE_COVERAGEDefault severity: MajorCategory: Output Determination

    Decision table does not cover a combination of its own condition values

    Remediation: Add a row for the uncovered combination (the witness lists the condition values) or a wildcard fallback row; the listed documents are output-relevant but no row of this step matches them.

  • OPD_PRINTER_QUEUE_NOT_FOUNDDefault severity: MajorCategory: Print Architecture

    PRINT channel without a print queue

    Remediation: Maintain a Printer decision table row returning a valid print queue (app 'Maintain Print Queues' / SAP Cloud Print Manager, or SPAD output device on-premise).

  • OPD_RULE_CHANGE_LOSES_COVERAGEDefault severity: MajorCategory: Change Impact

    Rule change leaves previously determined inputs without a match

    Remediation: The new decision table version no longer matches inputs the baseline version determined: restore the removed or narrowed row (or add a fallback) before transporting, otherwise these documents end in an output error.

  • OPD_DUPLICATE_OUTCOMEDefault severity: MinorCategory: Configuration Integrity

    Redundant decision table row with a duplicate outcome

    Remediation: The row adds no behaviour: every input it matches gets the same outcome from another row. Merge the rows (or delete the redundant one) so future changes to the outcome are made in one place.

  • OPD_MISSING_DEFAULT_RULEDefault severity: MinorCategory: Output Determination

    Decision table has no default (catch-all) rule

    Remediation: Add a trailing row with wildcard ('*') conditions that returns the intended default result, or confirm that output-relevant documents outside the listed condition values must end in an output error.

  • OPD_UNREACHABLE_RULEDefault severity: MinorCategory: Configuration Integrity

    Decision table row shadowed by an earlier row

    Remediation: Reorder the decision table so specific condition rows precede broader wildcard rows (BRFplus evaluates first-match), or delete the redundant row.

  • OPD_RELEVANCE_SUPPRESSEDDefault severity: InfoCategory: Output Determination

    Output generation suppressed by relevance rule

    Remediation: Confirm the Output Relevance table intentionally returns FALSE for this document status; otherwise correct the relevance condition.

  • OPD_RULE_CHANGE_ALTERS_OUTCOMEDefault severity: InfoCategory: Change Impact

    Rule change alters the determined outcome

    Remediation: Review the listed inputs whose outcome changes between the baseline and the new decision table version and confirm each change with the business owner before transporting the new version.

Input validation codes (5)

  • OPD_ARCHIVE_REJECTEDDefault severity: MajorCategory: INPUT_VALIDATION

    Archive rejected by ingestion safety limits

    Remediation: The archive exceeded the 100:1 expansion ratio, 500 MB total size, entry-count or 2-level nesting limit, or contained path traversal / encrypted members. Upload a flat, unencrypted archive of the export files. No verdict was produced. Re-export the artifact in one of the formats accepted by OPD Guard (JSON, XML, CSV, XLSX) and re-run the analysis.

  • OPD_INVALID_INPUTDefault severity: MajorCategory: INPUT_VALIDATION

    Artifact does not match the engine input contract

    Remediation: Provide the artifact type documented for this engine; unrelated or structurally invalid documents are rejected. No verdict was produced. Re-export the artifact in one of the formats accepted by OPD Guard (JSON, XML, CSV, XLSX) and re-run the analysis.

  • OPD_PARSE_ERRORDefault severity: MajorCategory: INPUT_VALIDATION

    Artifact could not be parsed

    Remediation: Fix the syntax error at the reported line/column (or re-export the file unmodified from SAP). No verdict was produced. Re-export the artifact in one of the formats accepted by OPD Guard (JSON, XML, CSV, XLSX) and re-run the analysis.

  • OPD_PAYLOAD_TOO_LARGEDefault severity: MajorCategory: INPUT_VALIDATION

    Artifact exceeds the size limit

    Remediation: Split the export (e.g. per package, company code or date range) so each upload stays under the service payload limit. No verdict was produced. Re-export the artifact in one of the formats accepted by OPD Guard (JSON, XML, CSV, XLSX) and re-run the analysis.

  • OPD_INSUFFICIENT_INPUTDefault severity: InfoCategory: INPUT_VALIDATION

    Required input missing

    Remediation: Supply every input the engine's contract marks as required (see the engine catalog entry). No verdict was produced. Re-export the artifact in one of the formats accepted by OPD Guard (JSON, XML, CSV, XLSX) and re-run the analysis.

Back to the documentation
OPD Guard — ERP Preflight Docs