Beispiel 1 — CDS Migration

Purchase Order List — von ABAP zu CDS

Z_PO_LIST.abap (Vorher)
REPORT z_po_list. TYPES: BEGIN OF ty_po, ebeln TYPE ebeln, ebelp TYPE ebelp, matnr TYPE matnr, menge TYPE menge_d, netpr TYPE netpr, END OF ty_po. DATA: lt_po TYPE TABLE OF ty_po. SELECT k~ebeln p~ebelp p~matnr p~menge p~netpr FROM ekko AS k INNER JOIN ekpo AS p ON k~ebeln = p~ebeln INTO TABLE lt_po WHERE k~bstyp = 'F' AND k~bukrs = '1000'. LOOP AT lt_po INTO DATA(ls_po). WRITE: / ls_po-ebeln, ls_po-matnr, ls_po-menge, ls_po-netpr. ENDLOOP.
ZI_PurchaseOrderItem.cds (Nachher)
// Interface View @AbapCatalog.sqlViewName: 'ZIPOITEM' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK define view ZI_PurchaseOrderItem as select from ekpo as Item inner join ekko as Header on Item.ebeln = Header.ebeln { key Item.ebeln as PurchaseOrder, key Item.ebelp as PurchaseOrderItem, Item.matnr as Material, Item.menge as OrderQuantity, Item.netpr as NetPrice, Header.bukrs as CompanyCode, Header.bstyp as DocumentCategory } // Consumption View @OData.publish: true @UI.headerInfo: { typeName: 'Bestellung' } define view ZC_PurchaseOrderItem as select from ZI_PurchaseOrderItem { @UI.lineItem: [{ position: 10 }] PurchaseOrder, @UI.lineItem: [{ position: 20 }] Material, @UI.lineItem: [{ position: 30 }] OrderQuantity, @UI.lineItem: [{ position: 40 }] NetPrice }

ABAP Report → 3 CDS Views · 48 Sek. · (Test-Lauf) · Safe Score: 91/100

Beispiel 2 — ABAP Repair

Legacy Report — 4 Syntaxfehler behoben

Z_VENDOR_REPORT.abap (4 Fehler)
REPORT z_vendor_report. * Fehler 1: Typ-Inkompatibilität DATA: lv_amount TYPE c LENGTH 10. lv_amount = '12345.67'. * Runtime-Fehler bei Rechenoperation lv_amount = lv_amount * 2. * Fehler 2: SELECT * auf S/4HANA SELECT * FROM bseg INTO TABLE @DATA(lt_bseg) WHERE bukrs = '1000'. * Fehler 3: Undeclared Variable LOOP AT lt_bseg INTO DATA(ls_bseg). lv_total = lv_total + ls_bseg-dmbtr. ENDLOOP. * Fehler 4: Fehlender Schrägstrich WRITE: lv_total.
Z_VENDOR_REPORT.abap (Repariert)
REPORT z_vendor_report. * Fix 1: Korrekter numerischer Typ DATA: lv_amount TYPE p LENGTH 8 DECIMALS 2. lv_amount = '12345.67'. lv_amount = lv_amount * 2. * Fix 2: ACDOCA statt BSEG (S/4HANA) SELECT bukrs, belnr, gjahr, dmbtr FROM acdoca INTO TABLE @DATA(lt_items) WHERE bukrs = '1000'. * Fix 3: Variable deklariert DATA(lv_total) = CONV dmbtr( 0 ). LOOP AT lt_items INTO DATA(ls_item). lv_total = lv_total + ls_item-dmbtr. ENDLOOP. * Fix 4: WRITE mit Schrägstrich WRITE: / lv_total.

4 Fehler in 9 Sek. · Safe Score: 88/100 · Manuelle Korrektur: ~35 Min.

Beispiel 3 — CDS View mit Fiori

Bestellübersicht — Fiori-ready in 61 Sekunden

Eingabe (Formular)
Quelltabellen: EKKO, EKPO, LFA1 Ziel-Release: S/4HANA 2023 Anforderung: Bestellübersicht mit Lieferant, Materialtext und Bestellwert. Fiori List Report für Einkäufer. Modus: CDS Generation Fiori: JA — @UI Annotationen OData: JA — @OData.publish
ZC_PurchaseOverview.cds
@OData.publish: true @UI.headerInfo: { typeName: 'Bestellung', typeNamePlural: 'Bestellungen', title: { value: 'PurchaseOrder' } } define view ZC_PurchaseOverview as select from ZI_PurchaseOverview { @UI.lineItem: [{ position: 10, importance: #HIGH }] @UI.selectionField: [{ position: 10 }] PurchaseOrder, @UI.lineItem: [{ position: 20, importance: #HIGH }] @UI.selectionField: [{ position: 20 }] VendorName, @UI.lineItem: [{ position: 30 }] MaterialText, @UI.lineItem: [{ position: 40, importance: #HIGH }] @Semantics.amount.currencyCode: 'Currency' OrderValue, @UI.lineItem: [{ position: 50 }] Currency, @UI.lineItem: [{ position: 60 }] CompanyCode }

Interface + Consumption + Projection · 61 Sek. · Safe Score: 93/100

Beispiel 4 — CDS Review

CDS View Analyse — 7 Probleme gefunden

CDS Review Report
════════════════════════════════════════ CDS VIEW REVIEW — ERPforgeAI ════════════════════════════════════════ KRITISCH (2) SELECT * ohne Feldliste — Performance-Risiko → Empfehlung: Explizite Feldliste definieren Fehlende @AccessControl Annotation → Empfehlung: #CHECK oder #MANDATORY setzen WICHTIG (3) Association ohne ON-Condition Filter → Empfehlung: WHERE-Klausel ergänzen CAST ohne Alias — Feldname unklar → Empfehlung: Sprechenden Alias vergeben Keine @Semantics Annotation auf Währungsfeld → Empfehlung: @Semantics.amount.currencyCode EMPFEHLUNG (2) @UI.headerInfo fehlt — Fiori-Title leer → Empfehlung: typeName + typeNamePlural @Search.defaultSearchElement auf Schlüsselfeldern → Empfehlung: Suchfelder definieren ════════════════════════════════════════ Fiori-Readiness Score: 38 91 (nach Korrektur) ════════════════════════════════════════

7 Probleme · 2 kritisch, 3 wichtig, 2 Empfehlungen · Fiori Score 38 → 91

Beispiel 5 — Berechtigung

Berechtigungsobjekt für externe SAP-Berater

Z_MM_PO_RD — Berechtigungsobjekt
════════════════════════════════════════ BERECHTIGUNGSOBJEKT: Z_MM_PO_RD ════════════════════════════════════════ Beschreibung: Lesender Zugriff auf Bestellungen für externe SAP-Berater Berechtigungsfelder: ACTVT — Aktivität 03 (Anzeigen) BUKRS — Buchungskreis 1000, 2000 EKORG — Einkaufsorg. 1000 BSART — Bestellart NB, ZNB Berechtigungsprofil: Z:MM_PO_READONLY → Rolle: Z_EXT_CONSULTANT_MM → Transaktion: ME23N, ME2M Test-Checkliste: ME23N — Bestellung anzeigen ME2M — Bestellungen nach Material ME22N — Bestellung ändern (gesperrt) ME21N — Bestellung anlegen (gesperrt) SU53 — Fehlanalyse validiert ════════════════════════════════════════ Generiert in 22 Sek. · PFCG-ready ════════════════════════════════════════

Objekt + Profil + Rolle + Testplan · 22 Sek. · PFCG-ready

Bereit? Ihr erstes CDS View in 60 Sekunden.

312 Dateien generiert. 4.7/5 Bewertung. Ab Pro pro Generation.

Jetzt generieren — ab Pro
Jetzt generieren — ab Pro