Kategorien
-
Neueste Beiträge
- [SAP] ABAP Cloud Developer Trial 2022 SP01 unter Windows installieren
- [ABAP] GTT: Globale Temporäre Tabellen zum Zwischenspeichern von Daten
- [SAP] ABAP Unit Testing – Writing Testable Code for ABAP
- [ABAP] ABAP2XLSX: Inhalt einer Worksheet in eine interne Tabelle schreiben
- [ABAP] Suchhilfe zu DDIC-Feld bestimmen
- Crypto-Währungen
- Konzentration und Verhältnis von bestimmten Fettsäuren haben Einfluss auf Krebsrisiko
- [ABAP] Projektdefinition zu einem PSP-Element lesen
- [ABAP] DMS: Dokumentenstatus lesen
- [ABAP] DMS: Dokumentenstatus setzen
Schlagwort: SAP
[SAP] ABAP Unit Testing – Writing Testable Code for ABAP
[SAP] Profit Center
Transaktionen
KA01 (Kostenart anlegen)
KA02 (Kostenart ändern)
KA03 (Kostenart anzeigen)
KA04 (Kostenart löschen)
KS01 (Kostenstelle anlegen)
KS02 (Kostenstelle ändern)
KS03 (Kostenstelle anzeigen)
KE51 (Profit Center anlegen)
KE52 (Profit Center ändern)
KE53 (Profit Center anzeigen)
Tabellen
CEPC (Stammdatentabelle von Profit Centern)
CEPCT (Profit-Center-Stammdaten Texte)
CEPC_BUKRS (Buchungskreiszuordnung von Profit Centern)
CDS-Views
SHSM_PROFITCENTER_VH (Join CEPC und CEPCT)
Fiori Apps
F3516 (Profitcenter verwalten)
F0764 (Manage Profit Center Groups)
F2918 (Körperschaftsteuerhierarchien verwalten, Globale Hierarchien verwalten)
Links
[SAP Fiori] Setup Fiori My Inbox
[SAP Fiori] Setup der Fiori Suche / Fiori search
[SAP] Projektsystem
Transaktionen
CJ20N (Project Builder)
CJ11 (PSP-Element anlegen)
CJ12 (PSP-Element ändern)
CJ13 (PSP-Element anzeigen)
CJ01 (Projektstrukturplan anlegen)
CJ02 (Projektstrukturplan ändern)
CJ03 (Projektstrukturplan anzeigen)
KJH3 (PSP-Element Gruppe: Anzeigen)
Tabellen
PROJ (Projektdefinition)
PRPS (PSP-Element (Projektstrukturplanelement) Stammdaten)
JSTO (Informationen zum Statusobjekt)
JEST (Einzelstatus pro Objekt)
TJ20 (Statusschemata)
TJ20T (Texte zu Statusschemata)
TJ30 (Anwenderstatus)
TJ30T (Texte zu Anwenderstatus)
TJ02 (Systemstatus)
TJ02T (Texte zu Systemstatus)
TJ03 (Objekttypen)
Suchhilfen
H_WBSELEM (Suchhlife für ID von PSP-Elementen)
Funktionsbausteine
BAPI_BUS2054_GETDATA (Detail Data for WBS Elements)
BAPI_PROJECT_GETINFO (Read detailed information for work breakdown structures)
Fiori-Apps
F1976 (Projektdefinitionsübersicht)
F1974 (PSP-Elementübersicht)
F1973 (Netzplanübersicht)
Links
[RAP] ODATA V4 Service und Fiori Elements App implementieren
Eclipse Project
Datenhaltung
- transparente Tabelle
- hält die Geschäftsdaten
@EndUserText.label : 'Tabelle für XYZ' @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE @AbapCatalog.tableCategory : #TRANSPARENT @AbapCatalog.deliveryClass : #A @AbapCatalog.dataMaintenance : #ALLOWED define table ztablexyz { key client : abap.clnt not null; key id : sysuuid_x16 not null; name : abap.char(50); description : abap.char(200); lastchangedat : timestampl; locallastchangedat : timestampl; active : abap_boolean; age : abap.int1; }
Root Entity
- CDS-View
- definiert Geschäftsobjekt
- Sicht auf die DB-Tabelle ztablexyz
@AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'Root Entity View' define root view entity z_i_xyz as select from ztablexyz { key id as Id, name as Name, description as Description, @Semantics.systemDateTime.lastChangedAt: true lastchangedat as Lastchangedat, @Semantics.systemDateTime.localInstanceLastChangedAt: true locallastchangedat as Locallastchangedat, active as Active, age as Age }
Projection View
- CDS-View mit Annotationen
- Sicht auf Root Entity
@EndUserText.label: 'Projection View' @AccessControl.authorizationCheck: #NOT_REQUIRED @Search.searchable: true @Metadata.allowExtensions: true define root view entity z_c_xyz provider contract transactional_query as projection on z_i_xyz { @EndUserText.label: 'Id' key Id, @EndUserText.label: 'Name' @Search.defaultSearchElement: true Name, @EndUserText.label: 'Description' @Search.defaultSearchElement: true Description, Lastchangedat, Locallastchangedat, @EndUserText.label: 'Active' Active, @EndUserText.label: 'Age' Age }
Metadatenerweiterung (Annotationen) für Projection View
- beinhaltet Header-Info (
@UI
) - Facet-Definition (
@UI.facet
) für die Einbindung eines Edit-Fensters (View-Window) für das Neuanlegen/Editieren (#FOR_ACTION
) von Daten von Entitäten (Draft-Handling) - Werthilfe
z_c_ValueHelp
wird für Feld ‚Name‘ eingebunden
@Metadata.layer: #CORE @UI: { headerInfo: { typeName: 'ItemXYZ', typeNamePlural: 'ItemsXYZ', title: { type: #STANDARD, label: 'ItemXYZ', value: 'Name' }, description: { label: '(Description)' }, typeImageUrl: 'sap-icon://chart-axis' } } annotate view z_c_xyz with { @UI.facet: [{ id: 'ItemXYZ', purpose: #STANDARD, type: #IDENTIFICATION_REFERENCE, label: 'ItemXYZ', position: 10 }] @UI: { lineItem: [ { label: 'Id', position: 10 } ], identification: [{ position: 10 }] } Id; @UI: { lineItem: [ { label: 'Name', position: 20 } ], identification: [{ position: 20 }], selectionField: [{ position: 20 }] } @Consumption.valueHelpDefinition: [ { entity: { name: 'z_c_ValueHelp', element: 'Name' } } ] Name; @UI: { lineItem: [ { label: 'Desc', position: 30 } ], identification: [{ position: 30 }], selectionField: [{ position: 30 }] } Description; @UI.hidden: true Lastchangedat; @UI.hidden: true Locallastchangedat; @UI: { lineItem: [ { label: 'Set Active', position: 40, type: #FOR_ACTION, dataAction: 'setActive' } ] } Active; @UI: { lineItem: [ { label: 'Age', position: 50 } ], identification: [{ position: 50 }], selectionField: [{ position: 50 }] } Age; }
View für Werthilfe
@AbapCatalog.viewEnhancementCategory: [#NONE] @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'Search Help' @Metadata.ignorePropagatedAnnotations: true @ObjectModel.usageType:{ serviceQuality: #X, sizeCategory: #S, dataClass: #MIXED } define view entity z_c_ValueHelp as select from z_i_xyz { @UI.hidden: true key Id, Name, Description }
Managed Behaviour Definition
- grundsätzlich bei Views, die mehr als nur lesen sollen
- bildet transaktionales Verhalten ab
- Implementation Type: Managed
Root View
managed implementation in class zbp_i_xyz unique; // Managed Behaviour Implementation erfolgt in ABAP-Klasse strict ( 2 ); with draft; // für Button "Insert" im UI define behavior for z_i_xyz alias a_i_xyz persistent table ztablexyz // Datenhaltung in transparenter Tabelle // Draft-Tabelle kann automatisiert in der Managed Behaviour Implementation über einen Quick Fix (CTRL + 1) generiert werden draft table ztablexyz_draft // Drafts werden in der Entwurfstabelle zwischengespeichert lock master total etag LastChangedAt // Lockkriterieum für die Drafts ist das letzte Änderungsdatum authorization master ( instance ) //etag master <field_name> { draft action Edit; draft action Activate; draft action Discard; draft action Resume; draft determine action Prepare; create; update; delete; field ( numbering : managed, readonly ) Id; field ( readonly ) Active, Lastchangedat, Locallastchangedat; // zusätzliche selbstdefinierte Action action ( features : instance ) setActive result [1] $self; mapping for ztablexyz corresponding // im Backend werden die gleichnamigen Felder bei INSERT/UPDATE gemappt, hier brauchen eigentlich nur die nicht namensgleichen Felder gemappt werden { Id = id; Name = name; Description = description; Lastchangedat = lastchangedat; Locallastchangedat = locallastchangedat; Active = active; Age = age; } }
generierte Draft Table
- speichert Änderungen zwischen (Draft-Handling)
- Includiert zusätzliche Draft-Felder (
sych_bdl_draft_admin_inc
)
@EndUserText.label : 'Drafttabelle für XYZ' @AbapCatalog.enhancement.category : #EXTENSIBLE_ANY @AbapCatalog.tableCategory : #TRANSPARENT @AbapCatalog.deliveryClass : #A @AbapCatalog.dataMaintenance : #RESTRICTED define table ztablexyz_draft { key mandt : mandt not null; key id : sysuuid_x16 not null; name : abap.char(50); description : abap.char(200); lastchangedat : timestampl; locallastchangedat : timestampl; active : abap_boolean; age : abap.int1; "%admin" : include sych_bdl_draft_admin_inc; }
Projection View
projection; strict ( 2 ); use draft; define behavior for z_c_xyz //alias <alias_name> use etag { // Button "Delete" Standardfunktion wird im UI eingefügt use delete; // Button "Create" Standardfunktion --> Daft Handling (Tabellen, UI Facet...) muss zusätzlich implementiert werden use create; use update; // Button für selbstdef. Action "setActive" use action setActive; use action Edit; use action Activate; use action Discard; use action Resume; use action Prepare; }
Managed Behaviour Implementation
- globale Klasse zur „Behaviour Implementation“ anlegen:
zbp_i_xyz
- lokale Klasse
lhc_zbp_i_xyz
mit Verhaltensausprägung
CLASS lhc_zbp_i_xyz DEFINITION INHERITING FROM cl_abap_behavior_handler. PRIVATE SECTION. METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION IMPORTING keys REQUEST requested_authorizations FOR a_i_xyz RESULT result. METHODS get_instance_features FOR INSTANCE FEATURES IMPORTING keys REQUEST requested_features FOR a_i_xyz RESULT result. METHODS setactive FOR MODIFY IMPORTING keys FOR ACTION a_i_xyz~setactive RESULT result. ENDCLASS. CLASS lhc_zbp_i_xyz IMPLEMENTATION. METHOD get_instance_authorizations. ENDMETHOD. METHOD get_instance_features. " Read the active flag of all items READ ENTITIES OF z_i_xyz IN LOCAL MODE ENTITY a_i_xyz FIELDS ( Active ) WITH CORRESPONDING #( keys ) RESULT DATA(items) FAILED failed. result = VALUE #( FOR item IN items LET status = COND #( WHEN item-Active = abap_true THEN if_abap_behv=>fc-o-disabled ELSE if_abap_behv=>fc-o-enabled ) IN ( %tky = item-%tky %action-setActive = status ) ). ENDMETHOD. METHOD setActive. MODIFY ENTITIES OF z_i_xyz IN LOCAL MODE ENTITY a_i_xyz UPDATE FIELDS ( Active ) WITH VALUE #( FOR key IN keys ( %tky = key-%tky Active = abap_true ) ) FAILED failed REPORTED reported. READ ENTITIES OF z_i_xyz IN LOCAL MODE ENTITY a_i_xyz ALL FIELDS WITH CORRESPONDING #( keys ) RESULT DATA(items). result = VALUE #( FOR item IN items ( %tky = item-%tky %param = item ) ). ENDMETHOD. ENDCLASS.
ODATA V4 Service Definition
- Publiziert den Projection-View
z_c_xyz
als ODATA V4 Service
@EndUserText.label: 'Service def.' define service z_expose_xyz { expose z_c_xyz; }
ODATA V4 Service Binding einrichten
- SAP-GUI Transaktion
/IWFND/V4_ADMIN
aufrufen - Service-Gruppe publizieren
- Systemalias i.d.R. ‚LOCAL‘
Business Application Studio (BAS)
Fiori-Elements-App zum ODATA V4-Service einrichten
- neues Projekt in der BAS anlegen: ‚SAP Fiori Application‘
- Template ‚List Report Page‘
- Service: den publizierten ODATA V4 Service
- ‚Add deployment configuration‘
- ‚Configure Advanced Options‘ wählen
- ‚Add Eslint configuration to the project‘
- ‚Add code assist librares to your project‘
- Page Map (Flexible Column Layout, Flex enabled, Controller-Extensions: Lifecycle-Funktionen (JS) elegant überschreiben)
- Guided Developement –> Code Snippets einfügen
- Data Editor
Fiori-Elements-App deployen
- wenn nicht beim Erstellen des Projects option ‚Add deployment configuration‘ gewählt wurde, dann im BAS-Explorer
- npm-scripts:
deploy-config
oder - Quick-Access:
Deploy
oder - Task-Explorer:
deploy npm
oder - Command Palette:
Add Deployment Configuration
- npm-scripts:
- Deployment ausführen: Console:
npm run deploy
- Bei Erfolg: BSP-Applikation ist im Backend ins Zielpaket geladen worden
App ins Fiori Launchpad einbinden
- Transaktion
/UI2/SEMOBJ
: Semantisches Objekt anlegen - Fiori Launchpad –>
Fiori Anwendungsmanager
: technischen Katalog anlegen –> App-Id steht in der manifest.json - Transaktion
/UI2/FLPCM_CUST
: technischen Katalog prüfen - Transaktion
PFCG
: Rollen zuweisen (Menü –> Transaktion –> SAP Fiori Launchpad –> Launchpad-Katalog) - Transaktion
/UI2/FLP
: App im Fiori Launchpad einbinden –> App Finder –> Katalog
Links
- https://developers.sap.com/tutorials/fiori-tools-rap-create-application.html
- https://software-heroes.com/blog/abap-rap-generator-fiori
- https://learning.sap.com/learning-journeys/developing-an-sap-fiori-elements-app-based-on-a-cap-odata-v4-service
- https://developers.sap.com/group.fiori-tools-odata-v4-travel.html
- https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-elements-for-odata-v4-knowledge-resources/ba-p/13554974
- https://sapui5.hana.ondemand.com/test-resources/sap/fe/core/fpmExplorer/index.html#/overview/introduction
- https://experience.sap.com/fiori-design-web/floorplan-overview/
[SAP] Fabrikkalender / Feiertagskalender einrichten
Transaktionen
SCAL (Fabrikkalender mit CUA-Oberfläche)
OX10 (Werk einrichten Customize)
Tabellen
TFACD (Fabrikkalenderdefinitionen)
TFACT (Texte der Fabrikkalender)
THOC (Feiertagskalender)
THOCD (Feiertagsdefinitionen)
THOL (Feiertage)
THOLT (Feiertagstexte)
T001W (Werke/Niederlassungen)
Funktionsbausteine
DATE_CONVERT_TO_FACTORYDATE (Kalenderfunktion Fabrikkalenderdatum zu einem Datum geben)
FACTORYDATE_CONVERT_TO_DATE (Kalenderfunktion Datum zu einem Fabrikkalenderdatum geben)
Links
[SAP] Drucker für Benutzer festlegen
Benutzereinstellungen – Drucker für Listausgaben
- SU3 (Benutzer eigene Daten pflegen)
- Reiter Festwerte: Ausgabegerät
oder
- SU3 (Benutzer eigene Daten pflegen)
- Reiter Parameter: Parameter „PRI“ (Drucker / Printer)
Einkäufergruppe
- OMGF (C MM-PUR Ausgabegerät Nachrichten) oder SPRO -> Materialwirtschaft -> Einkauf -> Nachrichten -> Ausgabegeräte zu Einkäufergruppen zuordnen
- Ausgabegeräte (Drucker) zu Einkäufergruppe zuordnen
Konditionssätze
- NACE (WFMC: Einstieg in das Customizing)
- Im Konditionssatz Button „Kommunikation“ -> Ausgabegerät festlegen
oder
- MN04 (Nachricht anlegen: Bestellung)
- MN05 (Nachricht ändern: Bestellung)
- Im Konditionssatz Button „Kommunikation“ -> Ausgabegerät festlegen
Zugriffsfolgen
- Zugriffsfolge mit Einkäufergruppe anlegen
- auf der Basis Belegart/EKORG/EKGRP Drucker definieren