SAPOTCWorkflow is a Java program that automates the complete Order-to-Cash cycle in SAP S/4HANA IDES via JCo RFC calls. It creates realistic transactional data across the full OTC chain: from sales order entry through to incoming payment posting.
~/SAP_OTC/, connecting to SAP via JCo RFC over the network.
HANA SQL access is available via SSH tunnel + Python hdbcli.
(see vault)(see vault)~/SAP_OTC/~/SAP_OTC/| File | Purpose |
|---|---|
| Java Sources | |
SAPOTCWorkflow.java | Full 5-step OTC workflow (Order + Delivery + GI + Billing + Payment) |
SAPOTCOrderGenerator.java | Standalone order generator (orders only, no delivery) |
SAPOTCExtractor.java | SAP table reader/verifier via RFC_READ_TABLE |
| Libraries | |
sapjco3.jar | SAP Java Connector (JCo) library |
libsapjco3.dylib | JCo native library for macOS (ARM64 / Apple Silicon) |
gson.jar | Google Gson (JSON parsing) |
| Configuration | |
SAP_S4HANA.jcoDestination | JCo connection properties (host, sysnr, client, user, password) |
| Shell Scripts | |
compile.sh | Compile all Java sources locally |
otcwf.sh | Run SAPOTCWorkflow — ./otcwf.sh full 5 --verbose |
otcgen.sh | Run SAPOTCOrderGenerator — ./otcgen.sh 10 |
otc.sh | Run SAPOTCExtractor — ./otc.sh extract VBAK VBELN,ERDAT ... |
| HANA Database Access | |
hana_tunnel.sh | Start SSH tunnel to HANA (localhost:30015 → sapidess4) |
hana_sql.py | Python HANA SQL client (single query or interactive mode) |
| Documentation | |
SAP_OTC_Workflow_Documentation.html | This documentation file |
| Generated Output | |
otc_extract/ | CSV files from SAPOTCExtractor queries |
VF03 or the status command to
trace the complete chain.
Each step runs in its own LUW via JCoContext.begin(dest) /
JCoContext.end(dest). This pins all BAPI calls + COMMIT to the same
SAP connection (required by JCo connection pooling). Between steps, the LUW is ended
and a new one started after a configurable pause.
Creates a standard sales order (type TA) with randomized customer, materials, quantities,
and dates spread over the last 30 days.
| Function Module | Purpose |
|---|---|
BAPI_SALESORDER_CREATEFROMDAT2 |
Creates a sales order with header, items, schedule lines, and partners |
BAPI_SALESORDER_CHANGE |
Releases credit block (clears DLV_BLOCK and BILL_BLOCK) |
BAPI_TRANSACTION_COMMIT |
Persists changes (WAIT='X' for synchronous commit) |
| Structure | Field | Value |
|---|---|---|
ORDER_HEADER_IN | DOC_TYPE | TA (Standard Order) |
| SALES_ORG | 1710 | |
| DISTR_CHAN | 10 | |
| DIVISION | 00 | |
| REQ_DATE_H | Random date (last 30 days) | |
| PURCH_NO_C | OTC-WF-MMDD | |
ORDER_HEADER_INX | UPDATEFLAG | I (Insert) |
LOGIC_SWITCH | NO_CREDIT_CHECK | X (bypass credit at creation) |
ORDER_PARTNERS | PARTN_ROLE / PARTN_NUMB | AG (Sold-to) + customer number |
ORDER_ITEMS_IN | ITM_NUMBER, MATERIAL, PLANT, TARGET_QTY | 1-3 random items |
ORDER_SCHEDULES_IN | ITM_NUMBER, SCHED_LINE, REQ_DATE, REQ_QTY | One schedule line per item |
| Table | Description | Key Fields Written |
|---|---|---|
VBAK | Sales Order Header | VBELN, AUART, KUNNR, NETWR, ERDAT, BSTNK |
VBAP | Sales Order Items | VBELN, POSNR, MATNR, KWMENG, NETPR, WERKS |
VBEP | Schedule Lines | VBELN, POSNR, ETENR, EDATU, WMENG |
VBPA | Partners | VBELN, POSNR, PARVW, KUNNR |
VBFA | Document Flow | VBELV, VBELN, VBTYP_N='C' |
| Customer | Type | Notes |
|---|---|---|
0017100001 | Direct | CMGST=A, passes credit check |
0017100002 | Direct | Passes credit check |
0017100003 | Direct | No credit check, POD disabled via KNVV |
| Material | UoM | Qty Range | ~Price (USD) |
|---|---|---|---|
TG11 | ST | 1-20 | $17.55 |
TG12 | ST | 1-20 | $17.55 |
MZ-FG-R100 | ST | 1-10 | $565.00 |
MZ-FG-R300 | ST | 1-5 | $7,741.00 |
MZ-TG-Y240 | ST | 1-10 | $160.00 |
F-10A | ST | 1-50 | $18.65 |
Creates an outbound delivery (type LF) referencing the sales order.
SAP automatically copies items and determines routes from the order.
| Function Module | Purpose |
|---|---|
BAPI_OUTB_DELIVERY_CREATE_SLS |
Creates outbound delivery from sales order reference |
BAPI_TRANSACTION_COMMIT |
Persists changes |
| Parameter | Value | Notes |
|---|---|---|
SHIP_POINT | 1710 | Shipping point |
DUE_DATE | Today's date | Extends delivery horizon for past-dated orders |
SALES_ORDER_ITEMS.REF_DOC | Sales order number | All items (REF_DOC_IT=000000) |
| Table | Description | Key Fields Written |
|---|---|---|
LIKP | Delivery Header | VBELN, LFART='LF', ERDAT, KUNNR, VSTEL |
LIPS | Delivery Items | VBELN, POSNR, MATNR, LFIMG, WERKS |
VBFA | Document Flow | VBELV=order, VBELN=delivery, VBTYP_N='J' |
Posts Goods Issue for the delivery, consuming inventory and creating a material document.
This is a two-phase operation: first reads delivery items from LIPS, then executes the GI
using WS_DELIVERY_UPDATE_2.
| Function Module | Purpose |
|---|---|
RFC_READ_TABLE |
Reads delivery items (LIPS) to get quantities and materials |
WS_DELIVERY_UPDATE_2 |
Performs picking confirmation + goods issue in a single call |
| Parameter | Value | Purpose |
|---|---|---|
VBKOK_WA.VBELN_VL | Delivery number | Delivery reference |
VBKOK_WA.WABUC | X | Goods issue flag |
VBKOK_WA.WADAT_IST | Today | Actual GI date |
VBKOK_WA.KOMUE | X | Picking complete |
DELIVERY | Delivery number | Delivery reference |
UPDATE_PICKING | X | Update picking quantities |
COMMIT | X | Auto-commit |
IF_DATABASE_UPDATE_1 | X | Database update mode |
SYNCHRON | X | Synchronous processing |
NICHT_SPERREN_1 | X | Skip lock check |
One row per delivery item with: VBELN, VBELN_VL,
POSNN, POSNR_VL, LFIMG (delivery qty), PIKMG (picked qty).
| Table | Description | Key Fields Written |
|---|---|---|
MKPF | Material Document Header | MBLNR, MJAHR, BUDAT, USNAM |
MSEG | Material Document Items | MBLNR, MJAHR, ZEILE, BWART='601', MATNR, MENGE |
MATDOC | Material Document (S/4HANA) | Consolidated journal entry |
VBFA | Document Flow | VBELV=delivery, VBELN=matdoc, VBTYP_N='R' |
LIKP | Delivery Header (updated) | WBSTK='C' (fully picked), WADAT_IST |
WS_DELIVERY_UPDATE (original FM) is blocked by the
S/4HANA RFC API Blocklist (SAP Note 2416705). The system uses WS_DELIVERY_UPDATE_2
instead, which requires the profile parameter ucon/rfc/check_blacklist = 0 to be set.
Creates an invoice (billing document) for the delivered goods. References the
delivery document with billing category J (delivery-related billing).
| Function Module | Purpose |
|---|---|
BAPI_BILLINGDOC_CREATEMULTIPLE |
Creates one or more billing documents from delivery references |
BAPI_TRANSACTION_COMMIT |
Persists changes |
| Table / Field | Value | Notes |
|---|---|---|
BILLINGDATAIN.REF_DOC | Delivery number | Reference document |
BILLINGDATAIN.REF_DOC_CA | J | Delivery-related billing |
Billing document number is retrieved from the SUCCESS
table (BILL_DOC field) or parsed from RETURN messages.
| Table | Description | Key Fields Written |
|---|---|---|
VBRK | Billing Document Header | VBELN, FKART, KUNRG, NETWR, FKDAT, WAERK |
VBRP | Billing Document Items | VBELN, POSNR, MATNR, FKIMG, NETWR |
VBFA | Document Flow | VBELV=delivery, VBELN=billing, VBTYP_N='M' |
BKPF | Accounting Document Header | BUKRS, BELNR, GJAHR (auto-created by billing) |
BSEG | Accounting Document Items | Line items for revenue + receivable |
ACDOCA | Universal Journal | S/4HANA single journal entry |
CL_SD_BP_ADDRESS_GET type mismatch fixed in SE24,
(2) POD requirement disabled — TVLK.POBED cleared for delivery type LF,
and KNVV.PODKZ cleared for customer 0017100003.
Posts an FI accounting document representing the customer's payment against the billing document. Creates a bank debit (GL) and customer credit (AR) entry.
| Function Module | Purpose |
|---|---|
BAPI_ACC_DOCUMENT_POST |
Posts a general FI accounting document |
RFC_READ_TABLE |
Reads billing amount from VBRK.NETWR |
BAPI_TRANSACTION_COMMIT |
Persists changes |
| Field | Value | Notes |
|---|---|---|
BUS_ACT | RFBU | Business transaction type |
USERNAME | IDES | Posting user |
COMP_CODE | 1710 | Company code |
DOC_TYPE | DZ | Customer payment document type |
DOC_DATE | Today | Document date |
PSTNG_DATE | Today | Posting date |
REF_DOC_NO | Billing doc number | Cross-reference |
HEADER_TXT | OTC Workflow Payment | Header text |
| Line | Table | Account | Amount | Details |
|---|---|---|---|---|
| 001 | ACCOUNTGL |
GL 0011001000 (Main Bank) |
+ (debit) | HOUSEBANKID=USBK1, HOUSEBANKACCTID=USAC1 |
| 002 | ACCOUNTRECEIVABLE |
Customer number | − (credit) | Clears the customer open item from billing |
The payment amount is read from VBRK.NETWR
(billing document net value) via RFC_READ_TABLE. Both lines use the same absolute amount
with opposite signs (debit/credit) in USD.
| Table | Description | Key Fields Written |
|---|---|---|
BKPF | Accounting Document Header | BUKRS, BELNR, GJAHR, BLART='DZ' |
BSEG | Accounting Document Items | BUKRS, BELNR, GJAHR, BUZEI, KOART |
ACDOCA | Universal Journal | S/4HANA consolidated entry |
BSAD | Cleared Customer Items (index) | Customer payment clearing |
| Table | Description | Category | Populated By |
|---|---|---|---|
VBAK | Sales Document: Header Data | Order Header | Step 1 |
VBAP | Sales Document: Item Data | Order Items | Step 1 |
VBEP | Sales Document: Schedule Line Data | Schedule Lines | Step 1 |
VBPA | Sales Document: Partner | Partners | Step 1 |
VBKD | Sales Document: Business Data | Business Data | Step 1 |
VBFA | Sales Document: Document Flow | Document Flow | Steps 1-5 |
LIKP | SD Document: Delivery Header Data | Delivery Header | Step 2 |
LIPS | SD Document: Delivery Item Data | Delivery Items | Step 2 |
VBRK | Billing Document: Header Data | Billing Header | Step 4 |
VBRP | Billing Document: Item Data | Billing Items | Step 4 |
| Table | Description | Category | Populated By |
|---|---|---|---|
MKPF | Header: Material Document | Mat. Doc Header | Step 3 |
MSEG | Document Segment: Material | Mat. Doc Items | Step 3 |
MATDOC | Material Document (S/4HANA) | Unified Mat. Doc | Step 3 |
MARD | Storage Location Data for Material | Stock Levels | Step 3 (updated) |
MBEW | Material Valuation | Valuation | Step 3 (updated) |
| Table | Description | Category | Populated By |
|---|---|---|---|
BKPF | Accounting Document Header | FI Doc Header | Steps 4, 5 |
BSEG | Accounting Document Segment | FI Doc Items | Steps 4, 5 |
ACDOCA | Universal Journal Entry (S/4HANA) | Universal Journal | Steps 4, 5 |
BSID | Accounting: Secondary Index for Customers (Open Items) | AR Open Items | Step 4 |
BSAD | Accounting: Secondary Index for Customers (Cleared Items) | AR Cleared Items | Step 5 |
| Table | Description | Change Applied |
|---|---|---|
TVLK | Delivery Types | POBED cleared for LF (disabled POD requirement) |
KNVV | Customer Sales Data | PODKZ cleared for customer 0017100003 |
T001K | Valuation Area | MLCCS cleared (CCS deactivated for plant 1710) |
MARV | MM Period Control | Advanced to 04/2026 |
CKMLPP | ML Period Records | Gap-filled from IDES through 2026 |
CKMLCR | ML Currency Records | Gap-filled (CURTP 10 + 30) |
T012 | House Banks | USBK1 (pre-existing in IDES) |
T012K | House Bank Accounts | USAC1 mapped to GL 0011001000 |
The VBTYP_N field in VBFA identifies the subsequent document type:
C Sales Order
J Delivery
R Goods Issue (Mat. Doc)
M Billing Document
P Payment
h Return
O Credit Memo
| CDS View | Description | Base Tables |
|---|---|---|
I_SalesOrder | Sales order header | VBAK |
I_SalesOrderAPI01 | Sales order header (API) | VBAK |
I_SalesOrderItem | Sales order item | VBAP |
I_SalesOrderItemAPI01 | Sales order item (API) | VBAP |
I_SalesOrderScheduleLine | Schedule line | VBEP |
I_SalesOrderPartner | Partner functions | VBPA |
I_SalesOrderPricingElement | Pricing conditions | PRCD_ELEMENTS |
I_SalesOrderBillingPlanItem | Billing plan items | FPLT |
I_SalesOrderText | Sales order texts | STXL |
C_SalesOrder | Consumption: Manage Sales Orders | VBAK |
C_SalesOrderItem | Consumption: Sales Order Items | VBAP |
| CDS View | Description | Base Tables |
|---|---|---|
I_DeliveryDocument | Delivery header | LIKP |
I_DeliveryDocumentItem | Delivery item | LIPS |
I_DeliveryDocumentPartner | Delivery partner | VBPA |
C_OutboundDelivery | Consumption: Outbound Deliveries | LIKP |
C_OutbDeliveryItem | Consumption: Delivery Items | LIPS |
| CDS View | Description | Base Tables |
|---|---|---|
I_BillingDocument | Billing header | VBRK |
I_BillingDocumentItem | Billing item | VBRP |
I_BillingDocumentPartner | Billing partner | VBPA |
I_BillingDocumentPricingElement | Billing pricing conditions | PRCD_ELEMENTS |
C_BillingDocument | Consumption: Manage Billing Documents | VBRK |
C_BillingDocumentItem | Consumption: Billing Items | VBRP |
| CDS View | Description | Base Tables |
|---|---|---|
I_MaterialDocumentHeader_2 | Material doc header | MATDOC |
I_MaterialDocumentItem_2 | Material doc item | MATDOC |
I_GoodsMovementItem | Goods movement item | MATDOC |
I_MaterialStock | Material stock overview | MARD |
| CDS View | Description | Base Tables |
|---|---|---|
I_SalesDocumentFlow | Sales document flow | VBFA |
I_SDDocumentPredecessor | Predecessor document | VBFA |
I_SDDocumentSuccessor | Successor document | VBFA |
| CDS View | Description | Base Tables |
|---|---|---|
I_JournalEntry | Accounting doc header | ACDOCA, BKPF |
I_JournalEntryItem | Accounting line item | ACDOCA |
I_OperationalAcctgDocItem | Operational accounting | ACDOCA |
I_CustomerLineItem | Customer line items | ACDOCA |
I_CustomerOpenItem | Customer open items (AR) | ACDOCA |
I_CustomerClearedItem | Customer cleared items (AR) | ACDOCA |
I_ARAccountBalance | Accounts receivable balance | ACDOCA |
C_AROpenItems | Consumption: AR open items | ACDOCA |
| CDS View | Description | Base Tables |
|---|---|---|
I_Customer | Customer general data | KNA1, BUT000 |
I_CustomerCompany | Customer company code data | KNB1 |
I_CustomerSalesArea | Customer sales area data | KNVV |
I_CreditManagement | Credit management | KNKK |
I_BusinessPartner | Business Partner general | BUT000 |
I_Product | Product/material general | MARA |
I_ProductPlantBasic | Product plant data | MARC |
I_ProductValuation | Product valuation | MBEW |
I_ProductSalesDelivery | Product sales/delivery data | MVKE |
| Step | Function Module | Type | Purpose |
|---|---|---|---|
| 1 | BAPI_SALESORDER_CREATEFROMDAT2 | BAPI | Create sales order with header, items, schedule lines, partners |
| 1 | BAPI_SALESORDER_CHANGE | BAPI | Release credit/delivery/billing blocks on order |
| 2 | BAPI_OUTB_DELIVERY_CREATE_SLS | BAPI | Create outbound delivery from sales order |
| 3 | RFC_READ_TABLE | RFC | Read delivery items (LIPS) for GI quantities |
| 3 | WS_DELIVERY_UPDATE_2 | FM | Picking confirmation + goods issue posting |
| 4 | BAPI_BILLINGDOC_CREATEMULTIPLE | BAPI | Create billing document from delivery |
| 5 | RFC_READ_TABLE | RFC | Read billing amount from VBRK |
| 5 | BAPI_ACC_DOCUMENT_POST | BAPI | Post incoming payment (GL debit + AR credit) |
| * | BAPI_TRANSACTION_COMMIT | BAPI | Commit transaction (WAIT='X') — after every step |
| Init | BAPI_GOODSMVT_CREATE | BAPI | Stock initialization (mvt 501, goods receipt w/o PO) |
S/4HANA blocks WS_DELIVERY_UPDATE_2 by default (SAP Note 2416705).
ucon/rfc/check_blacklist = 0
Set in SAP instance profile.
IDES was stuck at 12/2023. Advanced to 04/2026 via HANA SQL.
UPDATE MARV SET LFMON='04', LFGJA='2026', VMMON='03', VMGJA='2026', VJMON='04', VJGJA='2025' WHERE BUKRS='1710'
CCS control records were missing for 2026. Deactivated CCS:
UPDATE T001K SET MLCCS='' WHERE BWKEY='1710' DELETE FROM TMLCCSHD WHERE BWKEY='1710'
Proof of Delivery was blocking billing for delivery type LF:
UPDATE TVLK SET POBED='' WHERE MANDT='100' AND LFART='LF' UPDATE KNVV SET PODKZ='' WHERE KUNNR='0017100003' AND PODKZ='X'
CL_SD_BP_ADDRESS_GET had a type mismatch in IDES:
-- Changed in method GET_BP_ADDRESSES_FOR_CUSTOMER:
DATA lt_address TYPE if_md_bp=>addresses.
DATA ls_address TYPE if_md_bp=>address.
ML period records had gaps between IDES data (2023) and 2026:
-- Filled continuous periods for all 6 materials -- CKMLPP: STATUS='10', CD_OK='X' -- CKMLCR: CURTP 10 (company) + 30 (group)
cd ~/SAP_OTC # First time: compile Java sources ./compile.sh # Run full OTC workflow (1 order, all 5 steps) ./otcwf.sh full 1 --verbose
./otcwf.sh full 1 --verbose # 1 order, all steps, verbose output ./otcwf.sh full 5 # 5 orders, all steps ./otcwf.sh full 100 --items 2 # 100 orders, max 2 items each ./otcwf.sh full 1000 # 1000 orders (~3.3 hours)
./otcwf.sh step1-order 5 # 5 sales orders only ./otcwf.sh step2-delivery 0000005663 # Delivery for specific order ./otcwf.sh step3-goodsissue 80006341 # GI for specific delivery ./otcwf.sh step4-billing 80006341 # Billing for specific delivery ./otcwf.sh step5-payment 90004903 # Payment for specific billing doc
./otcwf.sh status 0000005663 # Show document flow (VBFA) ./otcwf.sh stock-init --verbose # Initialize stock for all materials (mvt 501)
| Flag | Description | Default |
|---|---|---|
--verbose | Print BAPI return messages and debug info | off |
--dry-run | Validate without saving (TESTRUN='X') | off |
--items N | Maximum line items per order | 3 |
--pause N | Seconds between steps | 2 |
# Sales orders ./otc.sh extract VBAK VBELN,ERDAT,AUART,KUNNR,NETWR "ERDAT >= '20260401'" ./otc.sh extract VBAP VBELN,POSNR,MATNR,KWMENG,NETPR "ERDAT >= '20260401'" # Deliveries ./otc.sh extract LIKP VBELN,LFART,ERDAT,KUNNR "ERDAT >= '20260401'" ./otc.sh extract LIPS VBELN,POSNR,MATNR,LFIMG "ERDAT >= '20260401'" # Billing documents ./otc.sh extract VBRK VBELN,FKART,NETWR,FKDAT "FKDAT >= '20260401'" ./otc.sh extract VBRP VBELN,POSNR,MATNR,NETWR "ERDAT >= '20260401'" # Document flow ./otc.sh extract VBFA VBELV,VBELN,VBTYP_N "ERDAT >= '20260401'" # Financial documents ./otc.sh extract BKPF BUKRS,BELNR,GJAHR,BLART,BUDAT "BUDAT >= '20260401'" # Table tools ./otc.sh tables # List all OTC tables ./otc.sh describe VBAK # Show table fields ./otc.sh count VBAK # Row count
# 1. Edit Java sources in ~/SAP_OTC/ # 2. Compile ./compile.sh # 3. Test (JCo connects to SAP over the network) ./otcwf.sh full 1 --dry-run --verbose # 4. Run for real ./otcwf.sh full 5
Direct HANA SQL access is available for configuration changes, debugging, and ad-hoc queries. Requires an SSH tunnel since HANA is not exposed publicly.
# Start the tunnel (runs in background, idempotent)
./hana_tunnel.sh
# Single query python3 hana_sql.py "SELECT * FROM TVLK WHERE LFART='LF'" # Interactive SQL prompt python3 hana_sql.py interactive # Override connection parameters python3 hana_sql.py --port 30041 --db FIV "SELECT 1 FROM DUMMY"
# Check MM posting period python3 hana_sql.py "SELECT BUKRS,LFMON,LFGJA FROM MARV WHERE BUKRS='1710'" # Check Material Ledger config python3 hana_sql.py "SELECT BWKEY,MLBWA,MLBWV,MLAST,MLCCS FROM T001K WHERE BWKEY='1710'" # Check customer POD settings python3 hana_sql.py "SELECT KUNNR,VKORG,PODKZ FROM KNVV WHERE KUNNR IN ('0017100001','0017100002','0017100003') AND VKORG='1710'" # Check delivery type POD python3 hana_sql.py "SELECT LFART,POBED FROM TVLK WHERE LFART='LF'" # Check house bank accounts python3 hana_sql.py "SELECT BUKRS,HBKID,HKTID,HKONT FROM T012K WHERE BUKRS='1710' AND HBKID='USBK1'" # Check ML period records python3 hana_sql.py "SELECT KALNR,BDATJ,PESSION,STATUS FROM CKMLPP WHERE KALNR='000100000002' AND BDATJ='2026'" # UPDATE example (autocommit is on) python3 hana_sql.py "UPDATE TVLK SET POBED='' WHERE MANDT='100' AND LFART='LF'"
| Parameter | Value | Notes |
|---|---|---|
| Host | localhost | Via SSH tunnel |
| Port | 30015 | HANA indexserver (instance 00) |
| Tenant DB | FIV | S/4HANA data lives here |
| Schema | SAPHANADB | All SAP tables (VBAK, LIKP, etc.) |
| User | SAPHANADB | Schema owner, full read/write access |
| Password | (see vault) | Lifetime disabled, no expiry |
| Orders | Approx. Time | Rate |
|---|---|---|
| 1 | ~12s | (includes JCo pool warmup) |
| 5 | ~60s | ~12s/order |
| 10 | ~2 min | ~12s/order |
| 100 | ~20 min | ~12s/order |
| 1000 | ~3.3 hours | ~12s/order |
Each order passes through 5 BAPI/RFC calls + 3 commits + pauses (~2s each between LUW boundaries). The ~12s/order rate includes all 5 steps. Steps 1-2 only take ~3.5s/order.
| Error | Cause | Fix |
|---|---|---|
Orders not persisting |
JCo routes BAPI + COMMIT to different connections | Wrap with JCoContext.begin/end(dest) |
CMGST=B (credit blocked) |
USCU_* customers have no credit limits | Use 001710000x customers only |
No schedule lines due for delivery |
Order date too far in past | Set DUE_DATE on delivery BAPI |
Incompatible Call Rejected |
S/4HANA RFC Blocklist | Set ucon/rfc/check_blacklist = 0 in profile |
M7/053 Posting period not open |
MM period stuck in old year | Update MARV via HANA SQL |
ML4HMASTER/229 CCS records missing |
CCS active but no 2026 period data | Deactivate CCS: T001K.MLCCS='' + delete TMLCCSHD |
C+/073 Error reading ML period records |
Gap in CKMLPP between IDES data and 2026 | Fill all gap periods in CKMLPP + CKMLCR |
C+/700 No period records found |
Missing CKMLPP/CKMLCR for current period | Create CKMLPP (STATUS=10) + CKMLCR (CURTP 10/30) |
Deficit of SL Unrestricted-use |
No stock for material | Run otcwf stock-init |
SYNTAX_ERROR in billing BAPI |
CL_SD_BP_ADDRESS_GET type mismatch | Fix in SE24 (change to if_md_bp=>addresses) |
POD report back not yet carried out |
POD required for delivery type/customer | Clear TVLK.POBED for LF + KNVV.PODKZ per customer |
House bank account doesn't exist |
T012K entry missing or wrong account ID | Use existing T012K: USBK1/USAC1 |
G/L account not defined in chart |
Wrong chart of accounts | Use 0011001000 (YCOA chart, company 1710) |
JCoException: connect failed |
SAP system down or unreachable | Verify network connectivity to SAP host |