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 GovernanceDetermined 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 DeterminationOutput 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 IntegrityOverlapping 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 DeterminationSimulated 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 DeterminationDecision 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 ArchitecturePRINT 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 ImpactRule 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 IntegrityRedundant 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 DeterminationDecision 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 IntegrityDecision 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 DeterminationOutput 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 ImpactRule 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_VALIDATIONArchive 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_VALIDATIONArtifact 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_VALIDATIONArtifact 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_VALIDATIONArtifact 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_VALIDATIONRequired 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.