To finalize your promotional campaign, you want to set up the following promotion for your Heidelberg store (business unit ID FC01): “Buy a coffee machine and show the coupon COFFEE LOVER to get 50 Euro off”. The promotion is valid from October 1st, 2026 to December 31st, 2026. You can do so either by using the Maintain Promotions app or the Data Upload service. In this tutorial, we will use the Data Upload service.
Navigate to the Data Upload service of SAP Omnichannel Promotion Pricing on SAP Business Accelerator Hub. Log on with the same login information that you use for your SAP BTP account.

- Navigate to the Try Out section.
- On the right-hand side, select the trial environment you have created for the Data Upload service.
- On the left-hand side, choose Upload Promotions using OAuth2.
- Open the POST request
/idocinbound.
-
Copy the following raw data and paste it into the body. Select the content type XML.
<?xml version="1.0" encoding="UTF-8"?>
<_-ROP_-PROMOTION02>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<IDOCTYP>/ROP/PROMOTION02</IDOCTYP>
</EDI_DC40>
<_-ROP_-E1_PROMOTION>
<PROMOTION_ID>2401</PROMOTION_ID>
<OFFER_ID>27DB2B4C00F61EEF9CB76E606FF07D88</OFFER_ID>
<EXTERN_PROMO_ID>000000000000000000000000000000000821</EXTERN_PROMO_ID>
<EFFECTIVE_DATE>20261001000000</EFFECTIVE_DATE>
<EXPIRY_DATE>20261231235959</EXPIRY_DATE>
<CHANGED_ON>20250913103445</CHANGED_ON>
<STATUS_TCD>AC</STATUS_TCD>
<CHANGE_INDICATOR>I</CHANGE_INDICATOR>
<LOGSYS>RS9CLNT990</LOGSYS>
<ORIGIN>01</ORIGIN>
<MIN_PPS_RELEASE>0</MIN_PPS_RELEASE>
<CREATED_ON>20250913103431</CREATED_ON >
<PROMOTION_NAME> Coffee lover special </PROMOTION_NAME>
<_-ROP_-E1_PROMOTION_BU>
<BU_ID>FC01</BU_ID>
<BU_TYPE>1040</BU_TYPE>
</_-ROP_-E1_PROMOTION_BU>
<_-ROP_-E1_PROMOTION_BU>
<BU_ID>1000202</BU_ID>
<BU_TYPE>1040</BU_TYPE>
</_-ROP_-E1_PROMOTION_BU>
<_-ROP_-E1_PROMOTION_RULE>
<PROMO_RULE_ID>2402</PROMO_RULE_ID>
<PRICE_RULE_ID>2402</PRICE_RULE_ID>
<ELIGIBILITY_ID>2402</ELIGIBILITY_ID>
<SEQUENCE>2402</SEQUENCE>
<RESOLUTION>0</RESOLUTION>
<SALE_RETURN_TCD>00</SALE_RETURN_TCD>
<ONLY_BASKET_MODE>X</ONLY_BASKET_MODE>
<PROMO_REC_THRES_PERC>0</PROMO_REC_THRES_PERC>
<_-ROP_-E1_PRICE_RULE>
<PRICE_RULE_ID>2402</PRICE_RULE_ID>
<TYPE_CODE>RB</TYPE_CODE>
<PRICE_MODIF_CODE>RT</PRICE_MODIF_CODE>
<PRICE_MODIF_AMT>50.00000</PRICE_MODIF_AMT>
<PRICE_MODIF_PERC>0.000</PRICE_MODIF_PERC>
<NEW_PRICE_AMT>0.00000</NEW_PRICE_AMT>
<CURRENCY_ISO_CODE>EUR</CURRENCY_ISO_CODE>
<MAM_LIMIT_CNT>0.000</MAM_LIMIT_CNT>
<NEW_SET_PRCE_AMT>0.00000</NEW_SET_PRCE_AMT>
<STATUS_TCD>AC</STATUS_TCD>
<EX_PRICE_RULE_ID>0000000000000000000</EX_PRICE_RULE_ID>
<COUPON_VALIDITY>0</COUPON_VALIDITY>
<RULE_CTRL_CODE>PO</RULE_CTRL_CODE>
<ROUND_DECIMALS>2</ROUND_DECIMALS>
<ROUNDING_METHOD>00</ROUNDING_METHOD>
<ROUND_DESTINATION>1</ROUND_DESTINATION>
<ITEM_METHOD>00</ITEM_METHOD>
<CALCULATION_BASE>00</CALCULATION_BASE>
<DISC_METHOD_TCD>00</DISC_METHOD_TCD>
<CONSIDER_PREVIOUS_RULES>X</CONSIDER_PREVIOUS_RULES>
<CALC_BASE_SEQUENCE>1-</CALC_BASE_SEQUENCE>
<SUBSEQ_PRICE_MODIF_AMT>0.00000</SUBSEQ_PRICE_MODIF_AMT>
<SUBSEQ_PRICE_MODIF_PERC>0.000</SUBSEQ_PRICE_MODIF_PERC>
<SUBSEQ_NEW_PRICE_AMT>0.00000</SUBSEQ_NEW_PRICE_AMT>
<TO_BE_DISCOUNTED_QTY>0.000</TO_BE_DISCOUNTED_QTY>
<PRORATION_MODE>0</PRORATION_MODE>
</_-ROP_-E1_PRICE_RULE>
<_-ROP_-E1_ELIGIBILITY>
<ELIGIBILITY_ID>2402</ELIGIBILITY_ID>
<TYPE_CODE>COMB</TYPE_CODE>
<ROOT_ELIGIB_ID>2402</ROOT_ELIGIB_ID>
<PARENT_ELIGIB_ID>2402</PARENT_ELIGIB_ID>
<THRESHOLD_QTY>0.000</THRESHOLD_QTY>
<THRESHOLD_AMT>0.00000</THRESHOLD_AMT>
<COMBINATION_CODE>&&</COMBINATION_CODE>
<PROMO_RULE_ID>2402</PROMO_RULE_ID>
<TRANS_TOTAL_AMT>0.00000</TRANS_TOTAL_AMT>
<EFFECTIVE_DATE>20261001000000</EFFECTIVE_DATE>
<EXPIRY_DATE>20261231235959</EXPIRY_DATE>
<STATUS_TCD>AC</STATUS_TCD>
<LIMIT_QTY>0.000</LIMIT_QTY>
<LIMIT_AMT>0.00000</LIMIT_AMT>
<INTERVAL_QTY>0.000</INTERVAL_QTY>
<INTERVAL_AMT>0.00000</INTERVAL_AMT>
<MERCH_SET_ID>0</MERCH_SET_ID>
</_-ROP_-E1_ELIGIBILITY>
<_-ROP_-E1_ELIGIBILITY>
<ELIGIBILITY_ID>2403</ELIGIBILITY_ID>
<TYPE_CODE>COUP</TYPE_CODE>
<ROOT_ELIGIB_ID>2402</ROOT_ELIGIB_ID>
<PARENT_ELIGIB_ID>2402</PARENT_ELIGIB_ID>
<THRESHOLD_QTY>0.000</THRESHOLD_QTY>
<THRESHOLD_AMT>0.00000</THRESHOLD_AMT>
<COUPON_NUMBER>COFFEE LOVER</COUPON_NUMBER>
<CONSUMPTION_TCD>00</CONSUMPTION_TCD>
<PROMO_RULE_ID>2402</PROMO_RULE_ID>
<TRANS_TOTAL_AMT>0.00000</TRANS_TOTAL_AMT>
<EFFECTIVE_DATE>20261001000000</EFFECTIVE_DATE>
<EXPIRY_DATE>20261231235959</EXPIRY_DATE>
<STATUS_TCD>AC</STATUS_TCD>
<LIMIT_QTY>0.000</LIMIT_QTY>
<LIMIT_AMT>0.00000</LIMIT_AMT>
<INTERVAL_QTY>0.000</INTERVAL_QTY>
<INTERVAL_AMT>0.00000</INTERVAL_AMT>
<MERCH_SET_ID>0</MERCH_SET_ID>
</_-ROP_-E1_ELIGIBILITY>
<_-ROP_-E1_ELIGIBILITY>
<ELIGIBILITY_ID>2404</ELIGIBILITY_ID>
<TYPE_CODE>MSTR</TYPE_CODE>
<ROOT_ELIGIB_ID>2402</ROOT_ELIGIB_ID>
<PARENT_ELIGIB_ID>2402</PARENT_ELIGIB_ID>
<THRESHOLD_TCD>QUTI</THRESHOLD_TCD>
<THRESHOLD_QTY>1.000</THRESHOLD_QTY>
<THRESHOLD_AMT>0.00000</THRESHOLD_AMT>
<NODE_ID>COFFEEMACHINES</NODE_ID>
<HIER_ID_QLF>R3</HIER_ID_QLF>
<PROMO_RULE_ID>2402</PROMO_RULE_ID>
<TRANS_TOTAL_AMT>0.00000</TRANS_TOTAL_AMT>
<EFFECTIVE_DATE>20261001000000</EFFECTIVE_DATE>
<EXPIRY_DATE>20261231235959</EXPIRY_DATE>
<STATUS_TCD>AC</STATUS_TCD>
<UOM_ISO_CODE>EA</UOM_ISO_CODE>
<LIMIT_QTY>9999999999.000</LIMIT_QTY>
<LIMIT_AMT>0.00000</LIMIT_AMT>
<INTERVAL_QTY>1.000</INTERVAL_QTY>
<INTERVAL_AMT>0.00000</INTERVAL_AMT>
<MERCH_SET_ID>0</MERCH_SET_ID>
</_-ROP_-E1_ELIGIBILITY>
</_-ROP_-E1_PROMOTION_RULE>
<_-ROP_-E1_PROMOTION_TEXT>
<SPRAS_ISO>EN</SPRAS_ISO>
<DESCRIPTION>Buy a coffee machine and show coupon COFFEE LOVER and get 50 Euro discount.</DESCRIPTION>
<NAME>Coffee lover special</NAME>
</_-ROP_-E1_PROMOTION_TEXT>
</_-ROP_-E1_PROMOTION>
</IDOC>
</_-ROP_-PROMOTION02>
- Choose Run.
- Make sure you get the HTTP response 200.

With this, you uploaded the promotional rule “Buy a coffee machine and show coupon COFFEE LOVER to get Euro 50 off” for the Heidelberg store (business unit ID: FC01) and the validity period October 1st, 2026 to December 31st, 2026.