Skip to content
Demo project — fictitious code, with the engine’s reading on every stage and no model drafts or test runs. Nothing you do here is saved. A demo run is never signed. No signed run, no audit pack and no export comes out of this screen — a signature says a named account analysed a named source, and none of that happened here.Nothing here counts against your five free analyses: the demo is the same for every account, and what you change lives in this browser only.Try an example or your own code
Back to project workspace
DemoDemo run · unsigned

Demo · Z_MM_PO_APPROVAL — Analyze

23 findings at 26 places in the code, from the engine that ships with this release — and no signed run, because a demo may not produce one.

Clean Core Score

40of 100

Far from clean core· band 5–59

A grade for this one piece of code, higher is better — not a compliance percentage and not an SAP measure. How the score is computed

Scored for SAP Cloud ERP Private — the project’s target.

Writes to the program’s own Z/Y tables cost nothing there (on-stack developer extensibility). Under Public Edition rules the same findings give 26: those 2 writes cost 14 points there. Computed from the same findings; only 40 is signed.

Reconstructed· fixed rulesno model involved

Demo — never signed · engine v3.0.19

What moves it

= 40

Every deduction of the score’s table, the largest first. A line chip opens the source at that line.

The deductions of the Clean Core Score: 100 minus every row below gives 40.

  1. Direct writes to SAP standard tables1 finding · EBAN · 20 for the first−20 points
  2. Batch input to transactions1 finding · ME21N · 10 for the first−10 points
  3. File transfers through the SAP GUI1 finding · GUI_UPLOAD · 5 for the first−5 points
  4. Direct reads of SAP standard tables11 findings · EBAN, LFA1, LFM1, CSKS and 5 more · capped at 5+9−5 points
  5. Writes to the program’s own Z/Y tables2 findings · ZMM_PO_APPR, ZMM_PO_ATTACH · free in SAP Cloud ERP Private, −14 in Public Edition0 points
  6. What the code does60 points
  7. Statements the engine could not assessNot determined4 kinds, 7 places: local function-module call (2), include whose source was not uploaded (2), dynamic call or field access (1), classic list output (2) · 5 points per kind. Not defects, and not cleared either.−20 points
  8. Clean Core Score of the demo40 points

· File transfers through the SAP GUI −5, Direct reads of SAP standard tables −5, writes to the program's own Z/Y tables 0

The largest single deduction: direct writes to sap standard tables (EBAN), 20 points. Settling the 7 places that could not be assessed (open questions) can move the score either way — the 20 points come off, findings may come in.

Findings
23in 26 places
Critical 1 · High 3
Clean core levels
A0B5C10D1Unknown 3
16 of 23 findings · from SAP's catalog, read for SAP Cloud ERP Private · not signed
Recommended route
ABAP Cloud on-stack
Reconstructed· fixed rules· decided in Management
Not determined
7places, 4 kinds
see the list

Look here firstReconstructed· by severity and kind

3 of 23 findings, picked by fixed rules

3 of 23 findings, picked by fixed rules.

  1. CriticalDCC-010

    Direct write to SAP standard table EBAN

    Writes directly to an SAP standard table

    Directly modifying standard SAP tables destroys system integrity, invalidates SAP guarantees, and blocks upgrades completely.

    240  UPDATE eban SET statu = 'H'241    WHERE banfn = p_banfn242      AND bnfpo = p_bnfpo.
    Successor:API_PURCHASEREQUISITION_SRVImported· Clean-Core.io curated mapping, compiled for 2024.FPS02
  2. HighCCC-024

    Legacy batch data communication (BDC) to TCode ME21N

    Drives an SAP transaction through batch input

    BDC relies on traditional SAP GUI screen flows. These are highly unstable, prone to breaking during upgrades, and do not work in SAP Fiori or Cloud environments.

    515  CALL TRANSACTION 'ME21N' USING lt_bdc516    MODE 'N'517    UPDATE 'S'

    No released successor named

  3. HighBCC-016

    Direct write to custom table ZMM_PO_APPR

    Direct DB access bypasses the application layer and encapsulation: no business object guards the rows it changes. Writing to a table that is not SAP's is not itself a clean core violation, but ABAP Cloud needs the table exposed through a RAP business object or moved side-by-side.

    353  INSERT zmm_po_appr FROM ls_appr.

    No released successor named

2 more · swipe

Where in the program

  • Critical 1
  • High 3
  • Medium 14
  • Low 4
  • process step

Every finding at its source line, one row per kind; a bigger dot is a more severe finding. Pick a dot to open the source at that line.

Direct write to an SAP standard table

1 finding

Writes to custom tables

2 findings

Batch input to a transaction

1 finding

Direct reads of SAP standard tables

9 findings · 11 places in the code

Calls of classic APIs not released for ABAP Cloud

2 findings

Decision on the server's date or time

1 finding

Explicit transaction control

1 finding · 2 places in the code

File transfer through the SAP GUI

1 finding

Table accesses

3 findings

Security review task

1 finding

Authorization check

1 finding

△ not assessed: Local function-module call, from line 173△ not assessed: Include whose source was not uploaded, from line 363△ not assessed: Dynamic call or field access, from line 386△ not assessed: Classic list output, from line 542

Columns are the 11 process steps the program runs, numbered left to right as they stand in the code: 1 READ_REQUISITION · 2 CHECK_REQUISITION · 3 CHECK_AUTHORITY · 4 UPLOAD_ATTACHMENT · 5 READ_VENDOR · 6 CHECK_VENDOR · 7 READ_INFO_RECORD · 8 CHECK_PRICE · 9 DECIDE_APPROVAL · 10 NOTIFY_REQUESTER · 11 WRITE_RESULT_LIST. The program runs them in this order: 3 → 1 → 2 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11.

Findings by kind (23)

23 findings

Direct write to an SAP standard table: 1 finding
SeverityCriticalWhatEBAN CC-010Direct write to SAP standard table EBANLevelSuccessorAPI_PURCHASEREQUISITION_SRVClean-Core.io curated mapping, compiled for 2024.FPS02

Writes to custom tables: 2 findings
SeverityHighWhatZMM_PO_APPR CC-016Direct write to custom table ZMM_PO_APPRLevelSuccessornone named
SeverityHighWhatZMM_PO_ATTACH CC-026Direct write to custom table ZMM_PO_ATTACHLevelSuccessornone named

Batch input to a transaction: 1 finding
SeverityHighWhatME21N CC-024Legacy batch data communication (BDC) to TCode ME21NLevelSuccessornone named

  • Note, not a finding: 2 fields store the server's date or time as a stamp (erdat, erzet) — fine in UTC unless a later step reads them as the local day. Lines 351, 352, 531.