Transaktionen
FTXP (Steuerkennzeichen pflegen)
FTXA (Steuerkennzeichen anzeigen)
Tabellen
T007A (Steuerschlüssel)
T007S (Bezeichnung der Steuerkennzeichen)
Funktionsbausteine
GET_TAX_PERCENTAGE (Ermitteln Steuerprozentsatz)
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)
CEPC (Stammdatentabelle von Profit Centern)
CEPCT (Profit-Center-Stammdaten Texte)
CEPC_BUKRS (Buchungskreiszuordnung von Profit Centern)
SHSM_PROFITCENTER_VH (Join CEPC und CEPCT)
F3516 (Profitcenter verwalten)
F0764 (Manage Profit Center Groups)
F2918 (Körperschaftsteuerhierarchien verwalten, Globale Hierarchien verwalten)
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)
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)
H_WBSELEM (Suchhlife für ID von PSP-Elementen)
BAPI_BUS2054_GETDATA (Detail Data for WBS Elements)
BAPI_PROJECT_GETINFO (Read detailed information for work breakdown structures)
I_WBSElementBasicData (WBS Element Basic Data)
I_MM_WBSElementValueHelp (Purchasing WBS Element Value Help)
F1976 (Projektdefinitionsübersicht)
F1974 (PSP-Elementübersicht)
F1973 (Netzplanübersicht)
@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;
}
@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
}
@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
}
@UI)@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)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;
}
@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 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;
}
}
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;
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;
}
zbp_i_xyzlhc_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.
z_c_xyz als ODATA V4 Service
@EndUserText.label: 'Service def.'
define service z_expose_xyz {
expose z_c_xyz;
}
/IWFND/V4_ADMIN aufrufendeploy-config oderDeploy oderdeploy npm oderAdd Deployment Configurationnpm run deploy/UI2/SEMOBJ: Semantisches Objekt anlegenFiori Anwendungsmanager: technischen Katalog anlegen –> App-Id steht in der manifest.json/UI2/FLPCM_CUST: technischen Katalog prüfenPFCG: Rollen zuweisen (Menü –> Transaktion –> SAP Fiori Launchpad –> Launchpad-Katalog)/UI2/FLP: App im Fiori Launchpad einbinden –> App Finder –> KatalogSCAL (Fabrikkalender mit CUA-Oberfläche)
OX10 (Werk einrichten Customize)
TFACD (Fabrikkalenderdefinitionen)
TFACT (Texte der Fabrikkalender)
THOC (Feiertagskalender)
THOCD (Feiertagsdefinitionen)
THOL (Feiertage)
THOLT (Feiertagstexte)
T001W (Werke/Niederlassungen)
DATE_CONVERT_TO_FACTORYDATE (Kalenderfunktion Fabrikkalenderdatum zu einem Datum geben)
FACTORYDATE_CONVERT_TO_DATE (Kalenderfunktion Datum zu einem Fabrikkalenderdatum geben)
I_CalendarDate (Date)
oder
oder