ABAP erste Schritte
Contents
Begriffe ... 4
Test- und Entwicklungssystem ... 4
Konsolidierungs- Qualitätssysicherungssystem ... 4 Produktivsystem ... 4 Transportauftrag ... 4 lokale Objekte... 4 Report ... 4 Dynpro ... 4 Workprozess ... 4 Dispatcher ... 4 Dynpro-Prozessor ... 5 ABAP-Prozessor ... 5
betriebswirtschaftliche Kernbereiche eines SAP-Systems ... 6
SAP-Module ... 6
Wichtige Transaktionen ... 7
Wichtige Systemtabellen ... 7
Anmelden ... 8
Abmelden (/NEX) ... 8
Version des Abap Application Server anzeigen ... 8
Abap-Dictionary (SE11)... 9 Tabellenarten ... 9 transparente Tabelle ... 9 Pool-Tabelle ... 9 Cluster-Tabelle ... 9 Namespaces ... 9 Auslieferungsklassen ... 9 Datenelement ... 9 Dokumentation... 9 Domäne ... 10 Wertebereiche ... 10 Ablauf ... 10
Pflege von Tabelleninhalten im Abap-Dictionary (SE11) ... 11
Anzeigen von Tabelleninhalten im Abap-Dictionary (SE11) ... 11
Datentypen anlegen ... 11 Vergleich ... 11 Datentypen ... 11 Boolean-Datentyp in ABAP ... 12 Abap-Editor (SE38) ... 12 Ablauf ... 13
Report als Anwender starten ... 13
Datenbanktabelle ausgeben ... 13 Workarea deklarieren... 13 Report kopieren... 14 Editor-Kommandos ... 14 Quellcode auskommentieren ... 14 Datentypen ... 14
Funktionen auf Zeichenketten ... 14
Abap-Debugger ... 14
Debugger starten ... 14
wichtige Debugger-Befehle ... 14
Debugger beenden ... 15
Debug-Layer konfigurieren ... 15
Versionieren von Abap-Programmen ... 15
Version erzeugen ... 15 Versionen anzeigen ... 15 ABAP-030 Infos ... 15 Technische Einstellungen ... 15 Datenelement ... 15 Domäne ... 15 Erweiterungskategorie ... 15 Eingabehilfen ... 16 Fremdschlüsselbeziehung ... 16
Pflegen von Tabellen ... 16
Append-Struktur ... 17
Views ... 17
Suchhilfe ... 17
Sammelsuchhilfe ... 17
Nachrichtenklassen ... 17
ABAP-100 Notizen ... 18
Ablauf Erstellung eines Dynpros... 18
Bildelemente ... 18 Auswahlknopf ... 18 Tabstrip ... 18 ALV-Grid ... 19 Table-Control ... 19 Web-Dynpro ... 20 Fehlermeldung ... 22 Ursache ... 22 Lösung... 22 Fehlermeldung ... 22
Fehler bei der Verarbeitung Ihrer Anfrage ... 22
Was ist passiert ? ... 22
Was können Sie tun ? ... 23
Ursache ... 23 Lösung... 23 SAP-Link ... 23 JSON ... 23 Nummernkreisobjekte ... 24 Customizing ... 24
Auslieferungsklassen der Customizing-Tabellen ... 25
Überblick ... 25 Auslieferungsklasse C ... 25 Auslieferungsklasse G ... 25 Auslieferungsklasse E ... 25 Auslieferungsklasse S ... 25 Berechtigungen ... 26 Authority-Check ... 26 Rolle ... 27
Berechtigung Objektklasse anlegen ... 28
Währungen <> 2 Dezimalstellen ... 29 Beim Speichern ... 29 Beim Laden ... 29
Begriffe
wichtige Begriffe rund um SAP
Test- und Entwicklungssystem
System mit Übungs- und SchulungsdatenKonsolidierungs- Qualitätssysicherungssystem
Testsystem mit Kopien der EchtdatenProduktivsystem
das LivesystemTransportauftrag
Menge von Objekten, die auf ein anderes System übertragen werden mit Transport-Auftrasnummer
lokale Objekte
Objekte auf dem Entwicklungssystem, die niemals transportiert werden.
Report
Batchprogramme ohne Steuermöglichkeit durch den Anwenderung durch Eingabemasken
Dynpro
dynamisches Programm mit Dialogbildschirmen
Workprozess
Ein ABAP-Workprozess führt eine Anwendung aus. Er wird auf dem Dispatcher ausgeführt.
Dispatcher
Dynpro-Prozessor
Runtime für die Ablauflogik eines ABAP-Programms, reagiert auf Benutzeraktionen in Bildschrimmasken, kann nicht rechnen.
ABAP-Prozessor
Runtime für die Verarbeitungslogik eines ABAP-Programms, erhält Bildschirmeingaben vom Dynpro-Prozessor, erzeugt Bildschirmausgaben.
betriebswirtschaftliche Kernbereiche eines SAP-Systems
Bereich Abkürzung Bemerkung
Logisitk Materialwirtschaft, Produktion, Vertrieb
Rechnungswesen Finanzen, Controlling
Personal Personaladministration, Lohnabrechnung
SAP-Module
FI Finanzwesen (Finanzbuchhaltung, Rechnungswesen)
CO Controlling
HR Human Resource
Logistik:
MM Materialwirtschaft (Materials Management)
PP Produktionsplanung und Steuerung (Production Planning and Control)
PM Instandhaltung (Plant Maintenance)
SD Vertrieb (Sales and Distribution)
Wichtige Transaktionen
SE80 Object Navigator (wichtigste Transaktion)
SE84 Repository Infosystem
SE11 Abap Dictionary (Anzeigen, Ändern, Anlegen, Löschen) Werkzeuge ABAP Workbench Entwicklung SE11
SE14 Abap Datenbank Utility (Tabellen umsetzen nach destruktiven Änderungen) (oder Hilfsmittel Datenbankobjekt Datenbank-Utility
SE38 Abap-Editor (Programme Starten)
SE24 Class Builder (Klasseneditor)
SE41 Menu Painter
SE37 Function Builder
SE54 Generierung Tabellen-Pflegedialog (oder Werkzeuge weitere Werkzeuge Gen.Tab-Pflegedialog
SHI3 Strukturpflege (Customizing)
SPRO Customizing: Projektbearbeitung
SU01 Benutzerverwaltung
SM30 Pflegedialog zu Tabelle suchen
SNRO Nummernkreis-Objekte pflegen
/n<Transaktion> laufende Transaktion beenden und neue Transaktion starten /nex alle Transaktionen schließen und alle Sessions beenden /o<Transaktion> neue Transaktion in neuem Modus (Fenster) starten
/h Debugger in der laufenden Transaktion starten
/hx Debugger von der laufenden Transaktion trennen
AbapDocu Abap-Hilfe starten
SE91 Nachrichtenpflege (Nachrichtenklassen pflegen)
SE09 Transport Organizer (Transporte verwalten)
SCWB Korrekturworkbench (Hinweise von anderen SAP-Systemen herunterladen)
SM36 Scheduling Manager
Z_ABAP_UNIT_TESTER Abap Unit-Test Runner
SM93 Transaktionspflege (Transaktionen verwalten, alle Transaktionen auflisten)
SM01 Transaktionen sperren
ST01 Systemtrace
SU21 Berechtigungsobjekte verwalten
Wichtige Systemtabellen
Anschauen mit SE16 (Data Browser) oder SE11 und dann "Inhalt anzeigen"
TSTC Transaktionen (TCODE = Transaktionscode)
Anmelden
Zur Programmentwicklung einloggen mit SAPGui als User BCUSER und Passwort DemoTest1
Abmelden (/NEX)
Fenster schließen System Abmelden
Version des Abap Application Server anzeigen
System Status
Beispiel: SAP EHP 2 for SAP NetWeaver 7.0
Abap-Dictionary (SE11)
Anlegen von Tabellen, Datenelement und Domänen Menüpfad: Werkzeuge Enwicklung SE11 - Dictionary
Tabellenarten
transparente Tabelle
Datenbanktabelle für eine Entität Pool-Tabelle
eine einzige physikaltische DB-Tabelle für alle Tabellen mit gleicher Struktur z.B. für Settings PK: Pool-Tabellenname + Schlüsselfelder
Cluster-Tabelle
verteilt einen Datensatz auf mehrere Tabellen. Die Teildatensätze haben denselben PK. Namespaces
kundenspezifisches Präfix: Z oder Y
alternativ: Namespace z.B. /PRIVATENAMESPACE/ Auslieferungsklassen
Verhalten der Tabelle bei Mandantenkopie, Neuinstallation oder Upgrade. Übersicht in Feld Auslieferungsklasse mit "F1"
A: Anwendungtabelle (Stamm- und Bewegungsdaten)
Datenelement
die betriebswirtschaftlichen Attribute eines Felds
Feldhilfe
Caption in Eingabemasken
Namespace beachten, Lasche "Datentyp" verknüpft die Domäne Dokumentation
mit dem Button "Dokumentation" wird Word gestartet und es kann ein Hilfetext für das Datenelement erfasst werden (vorher hineinzoomen).
Domäne
die technischen Attribute eines Felds
Datentyp
Länge
Dezimalstellen
Wertebereiche
Alle möglichen Datentypen anzeigen mit F4.
Wertebereiche
Einzelwerte, Intervalle, Wertetabellen Ablauf
speichern (Ctrl-S)
prüfen (Ctrl-F2)
Menüpfad: Domäne prüfen prüfen
aktivieren (Ctrl-F3) Button: "Aktivieren"
Zurück (F3)
technische Einstellungen für Tabelle
Button "technische Eistellungen" drücken. Datenart (Stammdaten) und geschätzte Größe der Tabelle angeben, Pufferungsverhalten der Tabelle festlegen (Caching, z.B. alle DS vorladen)
Pflege von Tabelleninhalten im Abap-Dictionary (SE11)
Menüpfad: Hilfsmittel Tabelleninhalt Einträge erfassenAnzeigen von Tabelleninhalten im Abap-Dictionary (SE11)
Menüpfad: Hilfsmittel Tabelleninhalt AnzeigenDatentypen anlegen
Mit dem Feld Datentyp können Datenselemente, Strukturen und Tabellentypen (für interne Tabellen angelegt werden).
Vergleich
Tabellentyp, Struktur, transparente Tabelle ???
Datentypen
Dictionary type Meaning Maximum length n ABAP type
DEC Calculation/amount
field
1-31, 1-17 in tables P((n+1)/2)
INT1 Single-byte integer 3 Internal only
INT2 Two-byte integer 5 Internal only
INT4 Four-byte integer 10 I
CURR Currency field Jan 17 P((n+1)/2)
CUKY Currency key 5 C(5)
QUAN Amount Jan 17 P((n+1)/2)
UNIT Unit 02. Mrz C(n)
PREC Accuracy 16 Internal only
FLTP Floating point number 16 F(8)
CHAR Character 1-255 C(n)
LCHR Long character 256-max C(n)
STRING. String of variable length
1-max STRING.
RAWSTRING Byte sequence of variable length
1-max XSTRING
DATS Date 8 D
ACCP Accounting period YYYYMM
6 N(6)
TIMS Time HHMMSS 6 T
RAW Byte sequence 1-255 X(n)
LRAW Long byte sequence 256-max X(n)
CLNT Client 3 C(3)
LANG Language internal 1, external 2 C(1)
Boolean-Datentyp in ABAP
Datentyp Konstante Wirklichkeit
abap_bool c(1) abap_true 'X' abap_false ' ' abap_undefined '-' siehe http://help.sap.com/abapdocu_731/en/abendataobjects_true_value_guidl.htm Beispiel:
DATA is_found TYPE abap_bool. ... is_found = abap_true. ... IF is_found = abap_true. ... ENDIF.
Abap-Editor (SE38)
Menüpfad: Werkzeuge Entwicklung SE38 - Abap Editor
Programmname: max. 40 Zeichen, Namespace beachten, Nur Unterstrich (_) als Sonderzeichen erlaubt.
Variablen: max. 30 Zeichen, keine reservierten ABAP-Schlüsselwörter, Nur Unterstrich (_) als Sonderzeichen erlaubt.
Pretty-Printer Einstellungen: Hilfsmittel Einstellungen Abap-Editor Pretty Printer Groß-/Kleinkonvertierung durchführen Schlüsselwort groß
Editor Einstellungen: Hilfsmittel Einstellungen Abap-Editor Editor alle Syntaxfehler anzeigen.
Ablauf
speichern (Ctrl-S)
prüfen (Ctrl-F2)
Programm prüfen Syntax
aktivieren (Ctrl-F3) Button: "Aktivieren"
ausführen (F8)
Programm testen direkt
zurück zum Editor (F3)
Report als Anwender starten
zweites Fenster öffnen (Ctrl-n) (Button "neuen Modus erzeugen") System Erzeugen Modus
System Dienste Reporting
Programmname eingeben , F8
Datenbanktabelle ausgeben
Workarea deklarierenDATA wa_zteilnehmer TYPE zteilnehmer.
Die Felder in der Workarea-Struktur entsprechen den Feldnamen in der Tabelle mit Bindestrich vom WA-Namen getrennt.
Beispiel: wa_zteilnehmer-tname
Report kopieren
SE38 Programm-Name eingeben
Programm kopieren, Button "kopieren, Ctrl-F5
neuen Programm-Namen eingeben
Editor-Kommandos
Quellcode auskommentieren
Block im Quellcode markieren
Hilfsmittel Block/Ablage Kommentar-* einfügen
Datentypen
Name Bedeutung Beispiel
i integer DATA zahl01 TYPE i.
p decimal DATA zahl01 TYPE p DECIMALS 2. VALUE '-5.67'
c string mit fixer Länge DATA geschlecht TYPE c LENGTH 1 VALUE 'W'.
n numerischer string mit
fixer Länge (nur Ziffern), rechtsbündig mit führenden Nullen
DATA telefon TYPE n LENGTH 8 VALUE '887766'.
string string mit variabler Länge
Funktionen auf Zeichenketten
SHIFT telefon LEFT DELETING LEADING '0'. SHIFT telefon BY 2 PLACES RIGHT.* Stringliterale mit Hochkommas verwerfen trailing whitespaces * Stringliterale mit Backticks behalten trailing whitespaces REPLACE ` ` IN telefon_international WITH national_vorwahl. * mehrfache Leerzeichen verdichten
CONDENSE telefon_international. * alle Leerzeichen entfernen
CONDENSE telefon_internation NO-GAPS.
CONCATENATE international_vorwahl national_vorwahl telefon INTO telefon_lang.
CONCATENATE international_vorwahl national_vorwahl telefon INTO telefon_lang SEPARATED BY '-'. telefon_internation = internation_vorwahl && '-' && national_vorwahl && '-' && telefon.
Abap-Debugger
Debugger startenAufruf aus dem Abap-Editor durch Setzen eines Breakpoints in die aktuelle Editorzeile mit Button "Session-Breakpoint setzen/löschen" Ctrl+Shift-F12 oder auf dem linken Rand rechte Maustaste Session Breakpoint setzen . Vor dem Debuggen muß ein Programm aktiviert werden. Programmstart mit F8.
wichtige Debugger-Befehle
F5 Step-In
F7 Return bis zum nächsten Funktionsende
F8 Weiter (bis zum nächsten Breakpoint)
Ctrl+Shift+F3 Breakpoints sichern für spätere Sessions
Debugger beenden
Debugger Debugger beenden Debug-Layer konfigurieren
Komponenten, die man nicht debuggen will, werden mit dem Button "Debug-Layer konfigurieren" Ctrl+Shift-F4 ausgeblendet.
Versionieren von Abap-Programmen
Im Abap-Editor (SE38) können Versionen von Abap-Programmen angelegt werden. Version erzeugen
Hilfmittel Versionen Version ziehen Versionen anzeigen
Hilfsmittel Versionen Versionsverwaltung
Mit dem Button "Zurückholen" wird eine alte Version des Programms wiederhergestellt. Die zurückgeholte Version ist noch inaktiv.
ABAP-030 Infos
Technische Einstellungen
Datenart (APPL0 = Stammdaten, APPL1 = Bewegungsdaten) Größenkategorie (0-4)
Pufferung
Tabellen puffern, ein/aus, Einzelsätze gepuffert, generischer Bereich gepuffert, vollständig gepuffert Tabellenänderungen protokollieren
Auslieferungsklassen (A = Stamm- Bewegungsdaten, C = Customizingtabellen) bestimmen ob Tabelleninhalt transportiert wird.
Datenelement
(Namensraum beachten ZS_GEHALT) Feldbezeichner, Dokumentation, F1-Hilfe
Domäne
(Namensraum beachten ZS_PERSNR)
Erweiterungskategorie
Zusätze Erweiterungskategorie (beliebig erweiterbar) auch für Strukturen angeben.
.INCLUDE Unterstruktur
Index anlegen, zusammengesetzte Indices
Eingabehilfen
Suchhilfe
(in SE11 Lasche Eingabehilfe/-prüfung Spalte Suchhilfe)
Festwerte für Suchhilfe in Domäne angeben (Lasche Wertebereich)
Prüftabelle
(durch Fremdschlüsselbeziehung, Button "Fremdschlüssel")
Festwerte
(in Domäne angeben)
Fremdschlüsselbeziehung
Zuordnung der Vorschläge für Fremdschlüsselbeziehungen über dieselbe Domäne (Domänengleichheit).
Art der Fremdschlüsselfelder:
nicht spezifiziert
keine Schlüsselfelder/-kandidaten
Schlüsselfelder/-kandidaten
Schlüsselfelder einer Texttabelle (Für mehrsprachige Texte) Kardinalität:
1 (Eintrag im Prüffeld muß vorhanden sein)
:
CN (Jeder Satz der Prüftabelle hat beliebig viele abhängige Sätze)
C (Eintrag im Prüffeld kann vorhanden sein) C (Jeder Satz der Prüftabelle hat höchstens einen abhängigen Satz) N (Jeder Satz der Prüftabelle hat mindestens einen abhängigen Satz) 1 (Jeder Satz der Prüftabelle hat genau einen abhängigen Satz)
Tipp: "C" = kann = "can" Meistens ist es 1: CN
Bemerkung: Fremdschlüssel sind nur auf Dynpros wirksam. Mittels eines ABAP-Programms können Datesätze ohne Verprobung in die Tabelle geshrieben werden.
Pflegen von Tabellen
Append-Struktur
Views
Datenbankview
Inner Join, Pflegestatus definiert lesen/schreiben
Pflegeview
Outer Join mit Eventmodell, Join nur über hinterlegte Fremdschlüsselbeziehungen möglich, Button „Beziehungen“ , wichtig: Button „Tabellenfelder“ Grundelement des Customizing
Help-View
ist ein Selektionsview der einen Outer-Join definiert, wird für Suchhilfe verwendet
Projektionsview
blendet Felder aus, wird selten verwendet, für Schnittstellen gedacht
Join, Selektion, Projektion, Performance. Alle Key-Felder an den Anfang des Views stellen, View-Cluster sind Verschachtelungen von Views in Baumstruktur. Daten pflegen mit System Dienste Tabellenpflege erweiterte Tabellenpflege
Pflegeview generieren: SE11 View auswählen Hilfsmittel Tabellenpflegegenerator ausfüllen wichtig: Menü generierte Objekte Anlegen (oder F6)
Eingabehilfe (F4-Hilfe)
Einheitlicher Mechanismus zur Unterstützung des Anwenders bei der Datenerfassung. Ähnlich Prüftabelle, aber detaillierter, mit Einbeziehung der bisher gemachten Eingaben (Context). Bei vielen Treffern kann innerhalb der Suchhilfe weiter eingeschränkt werden.
Suchhilfe
Definiert durch Tabelle oder View, LPos (= Liste der Treffer), SPos (= Suchmaske für weitere Einschränkung der Trefferliste) Import-/Export-Parameter definieren (IMP/EXP)
Sammelsuchhilfe
Kombination mehrerer Suchhilfen zu einer Suchhilfe mit Tab-Reitern.
Nachrichtenklassen
siehe http://www.saphub.com/abap-tutorial/messages-in-abap/
1. MESSAGE xnnn WITH p1 p2 p3.
2. MESSAGE ID id TYPE mtype NUMBER n WITH p1 p2 p3. 3. MESSAGE xnnn(mid) WITH p1 p2 p3.
Message-TYPE Bedeutung Ausgabe
A Abandon Pop mit Fehlermeldung und
Programmende
E Error Fehlermeldung in Statusleiste
und Programmende
I Information PopUp mit Messagetext
S Status message Messagetext in Statusleiste
W Warning PopUp mit Messagetext
ABAP-100 Notizen
Ablauf Erstellung eines Dynpros
1. Ok_code_save sy-ucomm 2. TABLES 3. Dynpro anlegen 4. PBO bauen a. Titel => b. Status => i. Funktionstastenleise ii. Symbolleiste iii. Drucktastenleiste iv. Menüleiste 5. Layout malen 6. PAI bauena. Module exit at exit-command b. Feldvalidierung bauen
FIELD feld MODULE check_feld on input/request
CHAIN FIELD feld1. FIELD feld2 MODULE check_felder on chain-input/chain-request c. Ok_code_save, dann CASE ok_code_save ENDCASE
7. Transaktion anlegen SAP-Gui für Windows
Bildelemente
Drucktaste, Ankreuzfeld, Ein-/Ausgabefeld, Auswahlknopf, Auswahlknopfgruppe
Auswahlknopf
begin of rb1,
feld1 type c value ‚X‘, feld2 type c
end of rb1.
Tabstrip
CONTROLS: tabstrip1 TYPE tabstrip
wie Drucktaste, Referenzfeld = Subscreenbereich SUBSCREEN1. Tabstrip-Name = tabstrip1 dynnr TYPE sy-dynnr.
PROCESS BEFORE OUTPUT. MODULE STATUS_0100.
module initSubscreen_0100.
"" Subscreenbereich einbinden im PBO
Call subscreen subscreen1 INCLUDING sy-cprog dynnr. *
PROCESS AFTER INPUT.
"" PAI des Subscreens aufrufen
call subscreen subscreen1. MODULE USER_COMMAND_0100.
Im PAI: Tabstrip1-activetab = ok_code_save setzen. im Subscreen-Dynpro kein Status, kein ok_code
ALV-Grid
Repository-Infosystem cl_gui*
cl_gui_custom_container, constructor-Methode anschauen => Parameter container_name cl_gui_alv_grid, constructor-Methode anschauen => Parameter parent,
my_alv_grid->set_table_for_first_display( exporting i_structure_name = 'SPFLI'
changing it_outtab = itab_spfli ). cl_gui_cwf
Feldkatalog: data fcat type LVC_T_FCAT (Tipp: In cl_gui_alv_grid nach fcat suchen) Tabelle mit Spalteneigenschaften (fcat-fieldname = ‚Spaltenname‘ )
Vor set_table_for_first_display sollte der Feldkatalog geholt warden.
* Feldkatalog holen
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat = gs_fcat. Spalten ausblenden: wa_fcat-TECH wa_fcat-NO_OUT my_alv_grid->refresh_table_display( ).
Event Toolbar: e_object->mt_toolbar (im Repository nachschauen Icon @44@, einen Tabelleneintrag ergänzen, append)
Event User_Command: e_ucomm (mit dem ok_code) clc_gui_cfw->set_new_ok_code( e_ucomm ) aufrufen.
Table-Control
Control TableView, TABLES, interne Tabelle, Arbeitsbereich auf interne Tabelle. Layoutbereich-Name wie TableView-Control.
PROCESS BEFORE OUTPUT. MODULE STATUS_0100.
module init_tablecontrol.
loop at itab_zauto into wa_zauto WITH CONTROL my_tableview. module to_tableview.
endloop. *
PROCESS AFTER INPUT.
module exit1 at exit-command. loop at itab_zauto.
chain.
field ZAUTOSCHUL2-KENNZEICHEN. field ZAUTOSCHUL2-HERSTELLER. field ZAUTOSCHUL2-TYP.
field ZAUTOSCHUL2-PREIS.
module from_tableview on chain-request. endchain.
endloop. PBO:
module TO_TABLEVIEW output.
move-CORRESPONDING wa_zauto to zautoschul2. endmodule.
PAI:
module FROM_TABLEVIEW input.
move-CORRESPONDING zautoschul2 to wa_zauto. modify itab_zauto
from wa_zauto
index my_tableview-current_line. endmodule.
Im PBO wird mit dem LOOP über die interne Tabelle iteriert und in jeder Iteration jeweils eine Zeile in die TABLES-Struktur gefüllt. Über Namensgleichheit der Felder der Tables-Struktur und der Dynpro-Elemente des Tablecontrols werden die Felder in das Dynpro, und damit in die TableView transportiert.
Im PBO wird über die gesamte interne Tabelle iteriert, im PAI nur über die angezeigten Zeilen des TableControls.
Web-Dynpro
1. Web-Dynpro-Komponente anlegen 2. Component-Controller bauen
Mit Context beginnen!
Context Knoten anlegen über Wizard Namen vergeben (AUTOS bzw. AUTO) Attribute aus Struktur hinzufügen transparente Tabelle auswählen gewünschte Attribute auswählen
3. Kardinalität festlegen (1:n für Liste)
4. View bauen
Wieder mit Context beginnen!
Context gewünschten Knoten mit D&D herüberziehen falls es die Liste ist, Kardinalität 1:n Context für Detailview Knoten anlegen, Kardinalität 1:1 Anlegen über Wizard Attribute aus Komponenten einer Struktur Struktur des Details angeben
5. Kardinaltität festlegen
Wichtiger Trick zu Context: Alle Contexte, die man für die Bearbeitungen im View braucht bindet man sich in diesen View ein. z.B. im Detailview die Struktur UND die Liste, weil man hier die Struktur in die Liste einfügen will.
6. Layout des View erstellen mit Zauberstab
Unter dem Button Context sieht man jetzt die Struktur, wenn man den Schritt 4 richtig gemacht hat. Häkchen "Form in neuem Container erzeugen.
7. WebDynpro Application anlegen
8. Component: Name der Komponente, Interface-View: Name des Windows Plug-Name: Default
9. Button einfügen
onAction Abkürzung "Aktion anlegen" + Outbound-Plug anlegen 10. Window editieren
Wichtig: alle neu gebauten Views mit D&D zu WINDOWS hinzufügen und Outbound-Plug mit Inbound-Plug per D&D verbinden. Erst wenn diese Verbindung gemacht wurde, funktioniert die Navigation.
Der View, der als Default angezeigt werden soll: rechte Maustaste 'Als Default setzen' 11. Codieren der Listenoperationen im Outbound-Plug der Detailansicht, Zauberstab benutzen
(MOVE-CORRESPONDING ls_todo to ls_todos). ls_todos ist eine Struktur und keine interne Tabelle!
Fehlermeldung
ACC: Label für MeltingGroup-artigen Container "FORM_CONTAINER" nicht gesetzt. Ursache
Barrierefreiheit Lösung
Für einen Form-Container muss daneben ein zusätzliches Label eingefügt werden wg. (Attribut Label_For: FORM_CONTAINER setzen)
Fehlermeldung
Die URL enthält keine vollständige Domainangabe (sapvhd statt sapvhd.<domain>.<ext>).
Fehler bei der Verarbeitung Ihrer Anfrage
Was ist passiert ?
Der Aufruf der URL http://sapvhd:8000/sap/bc/webdynpro/sap/ztodolist wurde aufgrund eines Fehlers abgebrochen. Hinweis
Folgender Fehlertext wurde im System NSP prozessiert: Die URL enthält keine vollständige Domainangabe (sapvhd statt sapvhd.<domain>.<ext>).
Der Fehler trat auf dem Applikationsserver sapvhd_NSP_00 und im Workprozess 4 auf. Die Abbruchart war: RABAX_STATE
Die ABAP-Aufrufhierarchie war:
Method: CHECK of program CX_FQDN=======================CP Method: STARTUP_CHECKS of program CL_WDR_CLIENT_ABSTRACT_HTTP===CP Method: HANDLE_REQUEST of program CL_WDR_CLIENT_ABSTRACT_HTTP===CP Method: IF_HTTP_EXTENSION~HANDLE_REQUEST of program
CL_WDR_MAIN_TASK==============CP
Method: EXECUTE_REQUEST of program CL_HTTP_SERVER================CP Function: HTTP_DISPATCH_REQUEST of program SAPLHTTP_RUNTIME
Was können Sie tun ?
Im Falle der Abbruchart RABAX_STATE finden Sie im System NSP in der Transaktion ST22 weitere Informationen bzgl. der Abbruchursache.
Im Falle der Abbruchart ABORT_MESSAGE_STATE finden Sie auf dem Applikationsserver sapvhd_NSP_00 in der Transaktion SM21 weitere Informationen bzgl. der Abbruchursache.
Im Falle der Abbruchart ERROR_MESSAGE_STATE können Sie nach weiteren Informationen in der Tracedatei zum Workprozess 4 in der Transaktion ST11 auf dem Applikationsserver sapvhd_NSP_00 suchen. Unter Umständen ist die Analyse von Tracedateien zu anderen Workprozessen notwendig.
Fall Sie noch über keine Benutzerkennung verfügen, so wenden Sie sich an Ihren Systemadministrator.
Fehlercode: ICF-IE-http-c:001-u:BCSERVICE-l:D-s:NSP-i:sapvhd_NSP_00-w:4-d:20121007-t:165800-v:RABAX_STATE- e:UNCAUGHT_EXCEPTION-X:080027D9EDFF1ED28491EBBC1532F7A2_080027D9EDFF1ED28491EBCD11F237A2_1-x:5D8F10E2A9E0F19D97A2080027D9EDFF
HTTP 500 - Internal Server Error
Ihr SAP Internet Communication Framework Team
Ursache
Falsche URL angegeben Lösung
Statt der in der WebDynpro angegebenen Url http://sapvhd:8000/sap/bc/webdynpro/sap/ztodolist die Url http://sapvhd.local:8000/sap/bc/webdynpro/sap/ztodolist einfach in den Browser eintippen und verwenden (mit dem User BCService).
SAP-Link
Nuget für SAP How-To: http://sdnabaper.blogspot.de/2010/11/how-to-install-saplink.html
Nach Installation von SAP-Link das Paket NUGG_SAPLINE_DDIC-0.1.nugg installieren (SE38 ZSAPLINK, F8 Nugget importieren, ...) Alle importieren Klassen müssen wieder mit SE24 aktiviert werden.
JSON
Nugg-Paket zum Verarbeiten von JSON-Daten: NUGG_ZJSON.nugg. Voraussetzung ist, dass das DDIC-Paket und das FunctionGroup-DDIC-Paket (FUGR) NUGG_FUNCTIONGROUP_PLUGIN-0.1.2.nugg installiert wurde und die Klassen mit SE24 aktiviert wurden.
Sonst bekommt man die Fehlermeldung:
There is no installed SAPlink plugin for object type DTEL There is no installed SAPlink plugin for object type TABL There is no installed SAPlink plugin for object type TTYP There is no installed SAPlink plugin for object type TABL There is no installed SAPlink plugin for object type VIEW
Start import of nugget C:/Projects/NUGG_ZJSON.nugg There is no installed SAPlink plugin for object type FUGR Ausgabe nach erfolgreicher Installation:
Start import of nugget C:/Projects/NUGG_ZJSON.nugg Installed: DTEL - ZSTRING
Installed: TABL - ZGS_0004 Installed: TTYP - ZGY_0004 Installed: FUGR - ZJSON
Die importierten Datenelemente müssen mit SE11 aktiviert werden (ZSTRING, ZGS_0004 ZGY_0004) alle Funktionsbausteine der Funktionsgruppe ZJSON mit SE80 (Funktionsgruppen anklicken rechte Maustaste "Aktivieren").
In der Funktionsgruppe ZJSON müssen noch die ENDFUNCTION. Befehle hochgezogen werden, sonst compilieren die Funktionsbausteine nicht.
Nummernkreisobjekte
http://help.sap.com/saphelp_46c/helpdata/de/2a/fa02e3493111d182b70000e829fbfe/frameset.ht m
Nummernkreise anlegen: Werkzeuge ABAP/4 Workbench Entwicklung Weitere Werkzeuge Nummernkreise
wichtigste Funktionsgruppe: SNR3
Customizing
spro Einführungsleitfaden starten
shi3 Strukturpflege (structure hierarchy)
sm30 Pflegeviews starten (structure maintenance)
sm31
Einführungsleitfaden engl. Implementation Guide (IMG).
SAP-Referenz-IMG: alle Customizing-Aktivitäten, die im SAP-System möglich sind, hierarchisch gegliedert nach Anwendungsbereichen.
Customizing-Aktivitäten:
muss (keine SAP-Voreinstellung möglich)
kann (die SAP-Voreinstellung ist zu prüfen)
nicht erforderlich
Auslieferungsklassen der Customizing-Tabellen
Beschreibung der Auslieferungsklassen, dem Verhalten bei Mandatenkopie, Verhalten bei Upgrade.
http://help.sap.com/saphelp_nwpi71/helpdata/de/43/45860774b711d2959700a0c929b3c3/content .htm
Überblick
Auslieferungsklasse C
Typ: KundentabellePflege nur durch den Kunden, kein SAP-Import, d.h. keine Vorschlagswerte werden ausgeliefert. Beispiel:
Unternehmensstruktur des Kunden (= Stammdaten)
Auslieferungsklasse G
Typ: Kundentabelle
SAP darf neue Datensätze einfügen, aber keine vorhanden überschreiben oder löschen. Pflege durch Kunden und SAP in getrennten Namensräumen, d.h. SAP liefert Vorschläge aus.
Der Kundenamensraum muß mit dem Report RDDKOR54 in der Tabelle TRESC definiert werden. Bei der Pflege des Customizing mit SM30 wird der Namensraum überprüft.
In neuen Versionen kann sich Vorschlagsliste ändern. Sinnvoll ist in neuen Versionen nur Vorschagswerte zu ergänzen, weil der Kunden die Vorschlagswerte aus vorherigen Versionen benutzt hat. Kunde kann eigene Werte eintragen (in eigenem Namensraum!). Nur bei Verwendung getrennter Namensräume werden die Kundeneinträge nicht von SAP-Vorschlagswerten
überschrieben. Namensräume pflegen! Fachliche Unterfälle:
1. Die kundenspezifische Ergänzung ist die Ausnahme
z.B. Währungseinheiten, Länderschlüssel. Maßeinheiten. Ergänzung von kundenspezifischen Maßeinheiten.
2. Die kundenspezifische Ergänzung ist die Regel
Hier liefert SAP die Vorschlagswerte, sie können auch übernommen werden. Kundenspezifische Ergänzungen sind jedoch häufig. Oftmals basieren sie auf den
Vorschlagswerten von SAP, die kopiert werden und an einigen Stellen abgeändert werden.
Auslieferungsklasse E
Typ: Systemtabelle (SAP-Tabelle)
Kunde darf neue Datensätze einfügen. Analog zur Auslieferungsklasse G nur anders herum (Kunde <-> SAP).
Der Kundenamensraum muß mit dem Report RDDKOR54 in der Tabelle TRESC definiert werden.
Auslieferungsklasse S
Typ: Systemtabelle
Berechtigungen
su01 Benutzer verwalten
pfcg Rollen verwalten
su02 Berechtigungsprofile verwalten
su03 Objektklasse für Berechtigunsobjekte verwalten
su21 Berechtigungsobjekte verwalten
su24 Berechtigungsobjekte den Transaktionen zuordnen
su53 Historie der Berechtigungsprüfungen, (welche haben letztes Mal gefehlt, nach einem Authorization-Check Fehler)
su56 eigene Berechtigungen anzeigen
st01 Systemtrace (u.a. Berechtigungsprüfung tracen)
Geschäftsparter (Businesspartner) order Organsisationsmanagement (pdorg)
Benutzer haben Berechtigungen. Eine Berechtigung bezieht sich auf ein Berechtigungsobjekt
(=Datenstruktur mit mehreren Feldern). Berechtigung = Instanziierung des Berechtigungsobjekt, d.h. für jedes Feld wird ein Wert angegeben.
Beispiel: Benutzer hat zum Berechtigungsobjekt M_BEST_BSA ("Belegart in Bestellung") eine Berechtigung "YM_BEST_NB" mit den Feldwerten
BSART ("Einkaufsbelegart") = NB ("Normalbestellung")
ACTVT ("Aktivität") = * (numerisch Anlegen, Ändern, Löschen, Preisanzeige, ... oder Wildcard)
Authority-Check
lv_bsart = 'NB'. "Normalbestellung anlegen AUTHORITY-CHECK OBJECT ’M_BEST_BSA’
ID ’BSART’ FIELD lv_bsart ID ’ACTVT’ FIELD ’02’.
IF sy-subrc <> 0.
prüft: Hat der Benutzer eine Berechtigung, die das Berechtigungobjekt "abdeckt" (matched), wenn im Berechtigungsobjekt die Variablen entsprechend dem Authority-Check gefüllt sind?
Abdecken: beinhalten, im Intervall (bei numerisch), durch Wildcard erfüllt (*) Forderung des Authority-Check:
Feld des
Berechtigungsobjekts
Forderung des Authority-Check von Berechtigung des Benutzers erfüllt?
BSART NB ok
ACTVT 02 ok, weil Wildcard * jede Zahl matched
Berechtigungen werden zu Berechtigungsprofilen ("Einzelprofile") zusammengefasst. Berechtigungsprofile werden zu Sammelprofilen zusammengefasst
Rolle
Menge von Transaktionen, die eine Gruppen von Benutzern i.d.R. ausführt (z.B. Einkäufer) + rollenspezifisches Menü. Für jede Transaktion ist vom Softwarehersteller hinterlegt, welche Berechtigungsobjekte abgefragt werden automatisches Generieren von Berechtigungsprofilen. Bearbeiten: In su01 auf die Rolle doppelklicken, dann "Berechtigungsdaten pflegen" auswählen, oder SU53.
Berechtigung Objektklasse anlegen
http://books.google.de/books?id=s5NWPIBiT6cC&pg=PA356&lpg=PA356&dq=sap+berechtigungsobj ekt+objektklasse+anlegen&source=bl&ots=T6j2PfotNb&sig=wfSVMQMvZT_A7btNGZtHjb3hSXQ&hl= en&sa=X&ei=NIIqUbfBC-et4ASnmIDADw&ved=0CGMQ6AEwBg#v=onepage&q=sap%20berechtigungsobjekt%20objektklasse %20anlegen&f=falseTC SU21 Anlegen Button auswählen Im Dropdown "Objektklasse" auswählen
Berechtigungsobjekt anlegen
http://help.sap.com/saphelp_erp60_sp/helpdata/de/9e/74ba3bd14a6a6ae10000000a114084/conte nt.htm
TC SU21 Anlegen Button auswählen Objektklasse auswählen, in der das Berechtigungsobjekt angelegt werden soll Im Dropdown "Berechtigungsobjekt" auswählen
Währungen <> 2 Dezimalstellen
SAP hat zur Speicherung von Währungsbeträgen als internes Format DEC(17.2) gewählt. Bei Währungen <> 2 Dezimalstellen muss das folgende Verfahren angewendet werden.
Beim Speichern
Konvertierung des Betrags in das interne Format durch Multiplikation mit 10 ^ "Anzahl Dezimalstellen" anschließend Division durch 10^2
Das entspricht der Speicherung des Währungsbetrags "ohne die Dezimalstellen" Beispiel 123456 JPY als DEC(17.2) = 1234,56
Beim Laden
Konvertieren des Betrags in das externe Format durch Multiplikation mit 10^2 anschließend Division mit 10 ^Anzahl der Dezimalstellen aus der Währung
Beispiel DEC(17.2) = 1234,56 123456 JPY
Die Anzahl der Dezimalstellen einer Währung steht in der Tabelle TCURX (Dezimalstellen der Währungen)
Diese Konvertierungen werden beim Feldtransport gemacht, wenn das Währungsfeld vor dem Betragsfeld transportiert wird. Bei einem BAPI oder bei einer selbstprogrammierten API müssen diese Konvertierungen selbst durchgeführt werden. Dazu gibt es zwei SAP-Funktionsbausteine: CURRENCY_AMOUNT_BAPI_TO_SAP: converts the data to two decimal before saving
CURRENCY_AMOUNT_SAP_TO_BAPI: conversion to correct decimals for end user viewing.
Bemerkung: SE11 stellt den Währungsbetrag im Dezimalfeld FALSCH dar. Den richtigen Wert erhält man nur, wenn man einen eigenen ZReport mit write "Dezimalfeld" erstellt.