Now accepting guest editorial from SAP, Oracle, Workday and ServiceNow practitioners.Pitch a guide
The Sign-Off Table

Lesson 2 of 6

Syntax and semantic differences that break models

11 min

Listen to this lesson

0:00 / 16:33

Most of an LO-VC model copies across to AVC without edits. The trouble is the part that copies cleanly but behaves differently. Syntax errors are easy: the check fails and someone fixes the dependency. Semantic differences are dangerous: the dependency compiles in both engines, but a value that was optional becomes restricted, or a procedure that stopped early now carries on. This lesson lists the differences SAP documents, explains each with a Contoso example, and turns them into a test checklist.

Differences SAP documents

AreaLO-VCAVCRisk when transforming
Restrictable indicatorConstraints narrow only characteristics flagged restrictableNot needed; any characteristic can be restrictedDomains may narrow where they never did before
INFERENCES part of a constraintLists the characteristics the constraint may inferNot needed; all characteristics are inferredMore values derived automatically than in classic
CONDITION part of a constraintNot restrictiveNot restrictive (same as classic)Low; behaves as before
IF condition in the RESTRICTIONS partNot restrictiveRestrictiveA rule that used to be a hint now removes values
EXIT in a procedureStops the procedure where a non-executable statement is reachedSkips only the non-executable assignment; the rest still runsLater statements now set values they used to skip
ActionsExisting actions still run; no new ones (simplification item)Not supportedMust be rebuilt as procedures or constraints
Procedures on BOM itemsCan set characteristic valuesRun in low-level explosion but cannot set characteristic valuesValues that BOM procedures set go missing
Variant tablesClassic table accessProcessing mode Classic, Mixed or Advanced per tableWrong mode gives different lookups or none

Documented differences between classic and advanced dependency processing (SAP Learning, Configuring Variant Configuration in SAP S/4HANA). Check the documentation for your release; AVC syntax keeps growing.

Two of these deserve a worked example, because they cause most surprises. First, the IF in the restrictions part. Chicago's constraint for the CMC-ALT-900 family says, in effect, "restrict pulley type to the 8-groove serpentine pulley if output is 240 A." In LO-VC, that IF was not restrictive in the way many modelers assumed: depending on how the constraint was written, the pulley domain was not narrowed until output had a value. In AVC, the IF in the restrictions part is restrictive. The result can be a configuration screen that now offers fewer pulley values, earlier, than it did yesterday. That might be what the business always wanted, or it might block a combination that sells.

The same constraint text narrows a domain in AVC that it left open in LO-VC; the difference is either an intended improvement or a defect, and someone must decide which.
The Sign-Off Table · thesignofftable.com/academy/sap-pp-305

Second, EXIT in procedures. Chicago has a procedure that sets the regulator type and the fan type, with an EXIT after the regulator assignment for the case where the voltage is not yet known. In LO-VC, the procedure stops at that point and the fan type stays empty until the voltage is entered. In AVC, only the non-executable assignment is skipped and the fan type assignment still runs, possibly with a default that nobody intended. SAP documents a way to reproduce classic behavior in AVC: specify the termination conditions for the rest of the procedure after the value assignments.

EXIT stops an LO-VC procedure but only skips one assignment in AVC, so later statements can set values the old model left open.
The Sign-Off Table · thesignofftable.com/academy/sap-pp-305

New syntax worth knowing

  • SET_PRICING_FACTOR: constraints can now drive pricing factors, so surcharges no longer need a procedure workaround.
  • MIN and MAX: return the minimum and maximum allowed value of a restricted range.
  • $DEL_USER_VAL: deletes a value the user assigned, leaving defaults and other valuations untouched.
  • String functions such as substring, and ASSIGNED_VALS / NO_OF_ASSIGNED_VALS for multi-value characteristics.
  • Floating-point characteristic values and rounding for more precise calculations.
  • Negative variant tables: list the combinations that are not allowed instead of every allowed one.

New syntax is not a transformation risk by itself, because classic models do not use it. It matters for the design decision: after transformation, should the team keep the copied classic logic, or rewrite parts of it with the new elements? Contoso decides to transform like for like first, prove equivalence, release, and only then simplify, so that every change is tested against a stable baseline.

Outside the dependencies

User interfaceInterface designs (characteristic grouping on screens) are not transformed; AVC uses characteristic groups, created by hand
Custom logicVariant functions and user exits built on classic internal structures need review; SAP offers BAdIs such as VCH_HL_PRE_VALIDATE_ASSIGN and VCH_HL_ON_SAVE
CharacteristicsInterval values and unusual value assignments can need redesign in BOM and routing selection
IntegrationsAnything that reads or writes configurations (CPQ, EDI, custom reports) must be retested against the new engine
PricingVariant conditions still work through the reference to SDCOM-VKOND; AVC adds SET_PRICING_FACTOR
Areas around the model that the transformation tools do not fully cover.
The Sign-Off Table · thesignofftable.com/academy/sap-pp-305

What would you do?

After copying the CMC-ALT-900 model to AVC, the AVC check reports no errors. Priya's team runs 30 typical configurations, and all look correct on screen. Theo, filling in as test reviewer, wants to approve. What is the gap?

What goes wrong in testing

PitfallWhat it looks likePrevention
Clean check read as proofThe AVC object check is green, so the team stops testingTreat checks as syntax evidence only; semantics need cases
Typical cases onlyThirty common configurations pass; EXIT branches never runOne case per entry in the semantic risk register
Silent defaultsA procedure now sets a value that used to stay emptyCompare derived values, not just user-entered ones
Redesign during transformationNew syntax added while copying, so differences cannot be tracedCopy like for like, release, then simplify in a separate change

Common test failures when checking syntax and semantics.

Key points
  • Syntax errors are found by checks; semantic differences compile cleanly and must be found by tests.
  • Watch the restrictable flag, INFERENCES, restrictive IFs, EXIT, BOM-item procedures, actions and variant table modes.
  • Interface designs are not transformed; characteristic groups are built by hand.
  • Transform like for like, prove equivalence, then simplify with new syntax.

Check your understanding · not graded

Lesson check

  1. 1. How does an IF condition in the RESTRICTIONS part of a constraint behave in AVC?

  2. 2. An LO-VC procedure reaches an EXIT. What does AVC do with the same procedure?

  3. 3. Which classic object has no AVC equivalent and must be rebuilt?

  4. 4. Why does Contoso transform like for like before using new AVC syntax?

  5. 5. What happens to LO-VC interface designs during transformation?