Five everyday SAP needs, each solved with a different RSDF parameter shape — single value, range, structure, table, and long text. Each one shows the parameter setup, the ABAP call the program makes, and the value the framework hands back.
Pricing engine · class ZCL_PCP2_RETAIL_PRICE
The pricing team has rewritten the retail-price determination logic with a new SQL JOIN that runs three times faster than the old sequential reads. Both code paths still ship in the build — the optimised one is gated behind a single flag, so the team can flip it on per environment, watch the metrics, and roll back instantly if anything breaks.
The old way: hardcode lv_use_join = 'X'. in ABAP and
request a transport every time you want to change it. Or build
another tiny Z_PRICE_FLAG table that no one will
remember in six months. With RSDF the flag becomes
one parameter — flippable in ZRSDF in PRD, no transport
required.
PCP2 — Price Card
PERFORMANCE_CHANGE — Changes for Performance Improvement
DETERMINE_RETAIL_PRICE_JOIN_ON
SYST-FLAG · no criteria
'X' → optimised path enabled in this environment
ZRSDF_EDIT, no transport needed.
get_value returns blank, so
the legacy code path is the safe default.
Outbound IDoc · function module Z_MYHUB_ARTICLE_OUT
MyHub pushes article master data to a downstream partner system via
outbound IDoc. The partner only handles four article types
(ZBEV, ZFOO, ZHHL,
ZHEA) — wines, fresh, non-food private brand, and
seasonal lines must be filtered out before send. The list of
allowed types changes once or twice a year as the partner grows.
The old way: an IF mtart NOT IN ( 'ZBEV' OR 'ZFOO' …)
chain in code, or another Z_ALLOWED_MTART table.
With RSDF, the allowed list is one parameter of type
Selection Options, holding a sel-options range
with SIGN/OPTION/LOW/HIGH rows — readable directly
into a standard ABAP RANGES table and used in an
IN clause.
ZMYHUB — MyHub Communication Portal
IDOC_ARTICLE_OUT — Outbound article IDoc
ALLOWED_MTART
MARA-MTART · no criteria
| Sign | Option | Low | High |
|---|---|---|---|
| I | EQ | ZBEV | |
| I | EQ | ZFOO | |
| I | EQ | ZHHL | |
| I | EQ | ZHEA |
SIGN=I OPT=CP LOW=Z* to allow every
Z-prefixed type, or SIGN=E OPT=EQ LOW=ZSEAS to
exclude one specific type from a wider include — the same
semantics as a standard ABAP RANGES table.
iv_raise_error is off,
get_range returns "exclude all" so the IDoc
stays safely empty rather than flooding the partner.
Replication job · program ZSYS_REPL_TO_CMI
A nightly background job replicates master data to the central CMI system. It has four knobs: how many records to send per batch, how many retries to attempt on failure, the RFC timeout in seconds, and the email address to alert when a batch fails permanently. The right values for DEV (small batches, chatty logging, dev-team mailbox) are nothing like PRD (big batches, terse logging, on-call rotation).
The old way: four separate Z_* constants, or a Z-table
with four columns. With RSDF, the four knobs sit in a single
flat structure parameter — keyed by environment
(SY-SYSID) — so one get_structure call
returns the whole record at once.
SYSTEM — Global System Parameters
RFC_SYSTEMS — RFC Systems
TO_CMI_SETTINGS
SYSID
MAX_BATCH_SIZE (INT4) ·
RETRY_COUNT (INT2) ·
TIMEOUT_SEC (INT4) ·
NOTIFY_ON_ERROR (CHAR60)
| Field | Value |
|---|---|
| MAX_BATCH_SIZE | 10000 |
| RETRY_COUNT | 5 |
| TIMEOUT_SEC | 120 |
| NOTIFY_ON_ERROR | oncall-myhub@example.com |
DEV, TST, PRD) is a
separate row keyed by SYSID. The same call from
different systems returns different settings.
ZRSDF. No build, no test cycle,
no developer needed.
Outbound IDoc mapper · class ZCL_MYHUB_DOCTYPE_MAPPER
MyHub speaks ZSO1, ZSO2, ZRTN
internally — sales orders, returns, free-of-charge orders. The
downstream partner expects ORD1000,
ORD2000, RET3000. Every outbound
document needs the internal code translated to the partner code,
with the mapping changeable by functional consultants when the
partner contract evolves.
The old way: yet another Z_DOCTYPE_MAP Z-table that
"lives somewhere" and "is owned by someone, probably". With
RSDF, the mapping is one parameter with criteria
(INTERNAL_DOCTYPE as the key) and a value structure
holding the partner code plus optional validity dates — readable
in one get_table call, or one row at a time via
get_structure with criteria.
ZMYHUB — MyHub Communication Portal
IDOC_OUTBOUND — Outbound IDoc Processing
DOCTYPE_MAPPING
INTERNAL_DOCTYPE · multi-row
EXTERNAL_DOCTYPE (CHAR10) ·
VALID_FROM (DATS) ·
VALID_TO (DATS)
| Internal (Key) | External | Valid From | Valid To |
|---|---|---|---|
| ZSO1 | ORD1000 | 2025-01-01 | 9999-12-31 |
| ZSO2 | ORD2000 | 2025-01-01 | 9999-12-31 |
| ZRTN | RET3000 | 2025-01-01 | 9999-12-31 |
| ZSO3 | ORD3000 | 2026-04-01 | 9999-12-31 |
get_table
to load every row (good for caching all mappings in memory
for a batch run), or get_structure with a
VALUE #( internal_doctype = … ) key to fetch
exactly one row.
ZSO3 → ORD3000, a functional
consultant adds the row in PRD via
ZRSDF_EDIT. The next outbound IDoc picks it up
on the next run.
Notification framework · class ZCL_MYHUB_NOTIFY
When MyHub onboards a new business partner, an automated welcome email goes out — and it has to land in the partner's preferred language. The wording is approved by Marketing and changes a few times a year (legal disclaimers, support phone numbers, a new on-boarding URL). The placeholders — partner name, account number, logon URL — are filled in by ABAP at send time.
The old way: hardcoded strings buried in a class, or a Z-table
with a CLOB column nobody dared to touch. With RSDF, the template
is a Long Text parameter with criteria
LANGU — one row per language, fully editable in
ZRSDF with the long-text editor, multi-language
descriptions baked in.
ZMYHUB — MyHub Communication Portal
NOTIFICATIONS — Outbound notifications
NEW_BP_WELCOME_MAIL
LANGU · ref. T002-SPRAS
Sehr geehrte Damen und Herren von &BP_NAME&, herzlich willkommen als neuer Geschäftspartner mit der Nummer &BP_NUMBER& in unserem Lieferantenportal. Bitte melden Sie sich unter &LOGON_URL& an, um Ihre Stammdaten zu vervollständigen. Bei Fragen wenden Sie sich bitte an support@example.com. Mit freundlichen Grüßen Ihr Demo-Team
LANGU references
T002-SPRAS, so the maintenance UI offers a
proper language F4. EN, DE, FR, IT each get their own
long-text entry.
Every example above used the same path syntax, the same
ZCL_RSDF_SELECT class, the same maintenance UI, and
the same Where-Used List. The only thing that changed was the
shape of the value — and RSDF handles all five out of the box.