Änderungen an SAP-Standardprogrammen

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Änderungen an SAP-Standardprogrammen

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
Hallo,

ich möchte bei einem bestehenden Standard SAP Programm Änderungen vollziehen. D.h. ich möchte auf der sich - nach starten des Programms - zeigende Maske einen Button, und eine Prüfung für das schon existierende Eingabefeld hinzufügen. D.h. die anwendende Person soll nachdem sie eine Eingabe in das dafür bestimmte Feld gemacht hat, auf den von mir hinzugefügten Button drücken und dann eine Meldung erhalten, wenn die Eingabe nicht ganz bestimmten Richtlinien genügt.

Ist es überhaupt möglich ein Standardprogramm zu ändern. So weit ich weiß, darf ich das doch gar nicht, oder? D.h. ich müsste das Programm erst kopieren, in den Kundennamensraum, dann die Änderung vollziehen. Nur ist dann mein Problem, das dieses Programm von anderen Programmen verwendet wird, und dies dann ja, durch den neuen Namen nicht mehr so ohne weiteres möglich ist, oder?

Kann mir da vielleicht jemand helfen?
Viele Grüße
Tabea

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von edwin (Specialist / 306 / 10 / 68 ) »
Hallo tabea*,
es ist möglich ein SAP-Standardprogramm zu ändern,
dazu musst Du nur im OSS einen Zugangsschlüssel für
dieses Objekt holen - da kann Dir die SAP-Basis weiterhelfen.
Allerdings rate ich dringend davon ab, SAP-Standardprogramme
zu modifizieren, das ist immer nur der letzte Ausweg !
Kopiere Dir lieber das Programm in ein Z* Programm um.

Gruss Edwin

Re: Änderungen an SAP-Standardprogrammen

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
tabea* hat geschrieben:Kann mir da vielleicht jemand helfen?
Also, prinzipiell ist eine Modifikation (eine Änderung eines Programmes, das im SAP-Namensraum liegt) etwas, das man nur machen sollte, wenn es zwingende(!!!) Gründe dafür gibt. Vorher sollte man prüfen:

* Gibt es im Customizing Möglichkeiten, den Aufruf zu "verbiegen"? Es ist an vielen Stellen so, dass die Namen von Programmen, FuBaus, etc. im Customizing hinterlegt sind und man über Änderungen des Customizings eine Modifikation verhindern kann.

* Gibt es IN dem betreffenden Programm Möglichkeiten, Änderungen einzuarbeitren, ohne es zu modifizieren? Oft ist so etwas vorgesehen.

* Kann man organisatorisch im Unternehmen Änderungen durchführen, die eine Modifikation verhindern? Spätestens wenn man das Kostenargument (siehe unten) bringt, besteht diese Bereitschaft beim Anwender in der Regel.

Falls die Modifikation immer noch notwendig und gewollt ist, gilt es zu prüfen:

* Macht es Sinn, eine oder mehrere Aufrufstellen per Modifkation zu ändern? Manchmal ist das weniger Aufwand (gerade in der Wartung, siehe unten) als die Modifikation des Originals, weil der Eingriff "kleiner" ist.

* Als letzte, aber wirklich allerletzte Möglichkeit bietet sich dann die Modifikation des entsprechenden Programms an. Auch hier würde ich so vorgehen, dass nach Möglichkeit die Modifikation so klein wie möglich zu halten ist, zum Beispiel statt "ich schreib mein Coding in das Programm" lieber die Variante "ich rufe ein externes Programm/FuBau/etc. auf, in dem ich mein Coding im Kundennamensraum habe". Wichtig hierbei: Nutze den Modifikationsassistenten!!!

Zur Beurteilung der o. g. Punkte: Schreibe mal bitte genau, wo du welche Änderung haben willst, dann wird dir hier jemand sagen können, welchen Weg du am besten wählst.

Ich habe eine ganze Reihe von Modifikationen gemacht (z. B. weil ich ziemlich früh an IS-PS rumgestrickt habe, als es noch ziemliche Haken und Ösen hatte).

Das Kostenargument ist dabei ganz entscheidend, du wirst die Stelle immer und immer wieder anpassen müssen, weil sie durch Updates gern überschrieben wird. Der Modifikationsassistent hilft dabei. Und je kleiner dabei die Änderung ist, umso eher ist gewährleistet, dass auch ein anderer das wieder einpflegen kann.

Ganz, ganz, ganz wichtig: Du musst das dokumentieren, ich gehe sogar so weit, dass ich die Anforderung selbst und meine Bedenken dagegen dokumentiere. Die Dokumentation sollte enthalten:

* WAS wurde geändert?
* WARUM wurde es geändert?
* WER hat es angefordert, genehmigt und wer braucht es warum?
(später lassen sich diese Anforderungen vielleicht dann doch mal durch ein Customizing oder organisatorische Änderungen realisieren, dann sollte man die Modifikation wieder aus dem System nehmen)
* WIE wurde geändert, auf welche Art und Weise?
* WO genau wurde geändert (Status, Coding, Texte, etc.) und wie wirken sich die Änderungen aus?
* WELCHE Schritte sind notwendig, um die Änderung nochmal einzupflegen?

Die Dokumentation ist dabei fast noch wichtiger als dein Coding, meine Erfahrung zeigt, dass solche Modifikationen sehr, sehr lang im System bleiben. Eine Reihe von Modifikationen die schlecht oder gar nicht dokumentiert waren, musste ich warten - dabei kriegt man echt das Kotzen.

Du brauchst einen Objektschlüssel, das heisst dass du bei der SAP "bescheidsagen" musst, welches Programm in deren Namensraum du geändert hast. Gehe davon aus, dass die SAP im OSS jegliche kostenlose Wartung und Hilfestellung nicht nur in diesem Objekt, sondern auch in allen möglichen Objekten drumherum ablehnt. Ehe du (oder jemand anderes) also eine OSS-Anfrage machst, die im Umfeld des modifizierten Programms liegt, nimm erst die Modifikation raus, damit die SAP auch sieht, dass ohne Modifikation der gemeldete Fehler auch auftritt.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
Hallo Ralf,

puh was du da alles schreibst, oh je ... :roll: ich glaube dann werde ich das sicher nicht machen. Gut das du mich darüber so ausführlich informiert hast!
ralf.wenzel hat geschrieben: Zur Beurteilung der o. g. Punkte: Schreibe mal bitte genau, wo du welche Änderung haben willst, dann wird dir hier jemand sagen können, welchen Weg du am besten wählst.
Was ich machen soll, also es geht um das Modul HR, dort besteht im Infotypen 32 die Möglichkeit die LBV-Nummer einzugeben. Nun ist es so, dass die gerne eine Plausibilitätsprüfung dieser Nummer integriert hätten. Diese Plausibilitätsprüfung ist nicht sonderlich kompliziert, eigentlich ziemlich einfach, sie soll dann eben, jedesmal wenn der Anwender die Nummer eingibt testen, ob diese Nummer überhaupt den Richtlinien entspricht. D.h. die Nummer wird eingegeben, dann soll ein button betätigt werden der die eingegebene Nummer testet, entspricht die Nummer nicht den Richtlinien soll eine Fehlermeldung erscheinen die den Anwender darüber informiert.

Ob es in dem Programm Möglichkeiten gibt Änderungen einzuarbeiten, oder im Customizing da Modifikationen diesbezüglich möglich sind, ich muss gestehen ich weiß es ehrlich gesagt nicht.

Vielleicht kann mir ja wirklich hier noch jemand einen Tipp dazu geben.

Dir Ralf möchte ich aber nochmals vielen Dank sagen! Deine Ausführungen sind super für mich!

Viele Grüße
Tabea

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Hallo Tabea,

also ganz so krasse wir Ralf das beschreibt würde ich es nicht sehen. Es kommt auch immer drauf an in welchem Programm was genau modifiziert werden soll. Und da ist eine zusätzliche Eingabeprüfung (aus meiner Sicht) nicht so kritisch zu bewerten wie bspw. die Modifikation eine SAP-Standard-Schnittstelle...

Aber das muss man im Einzefall genau abwägen und prüfen und mit der SAP Basis abstimmen... in manchen Firmen sind die Vorschriften zur Prüfung ob eine Modifikation eingebaut werden darf sehr viel umfangreicher als in anderern Firmen...

Ganz unabhängig davon ist der Weg, den Ralf aufgezeigt hat, zuerst diverse Themen abzuprüfen ob es ohne Modifikation geht unbedingt einzuhalten. Und in diesem Fall geht es sehr einfach ohne... die SAP sieht für die Stammdatenpflege im HR explizit vor, dass zusätzliche kundeneigne Prüfungen durchgeführt werden. Hier gibt es die Erweiterung PBAS0001. Für diese muss in der CMOD ein eigenes Projekt angelegt werden und dann können die zusätzlichen Prüfungen im Funktionsexit EXIT_SAPFP50M_002 programmiert werden (im EXIT_SAPFP50M_001 können zusätzliche kundeneigene Vorschlagswerte für das Anlegen von Infotypen programmiert werden).

Der Userexit ist leider relativ schlecht dokumentiert... daher würde ich vorschlagen, dass Du Dir entweder Unterstützung holst oder genügend Zeit einplanst um Dir das Thema selbst genauer anzuschauen.

Und jetzt noch was anderes... was ist dass denn für ein Feld im IT 32? LBV-Nummer sagt wir da nichts... könnte es sein, dass dies sowieso schon ein eigenes Feld ist? Dann kannst Du die Prüfungen auch im Kundencoding für das Zusatzfeld hinterlegen... es müsste dann den Modulpool ZP003200 geben und das Dynpro ZP003200 / 0200.

Grüße
Christian

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
Hallo Christian,

vielen Dank für diese Hinweise!
ChrisB hat geschrieben: also ganz so krasse wir Ralf das beschreibt würde ich es nicht sehen. Es kommt auch immer drauf an in welchem Programm was genau modifiziert werden soll. Und da ist eine zusätzliche Eingabeprüfung (aus meiner Sicht) nicht so kritisch zu bewerten wie bspw. die Modifikation eine SAP-Standard-Schnittstelle...

Aber das muss man im Einzefall genau abwägen und prüfen und mit der SAP Basis abstimmen... in manchen Firmen sind die Vorschriften zur Prüfung ob eine Modifikation eingebaut werden darf sehr viel umfangreicher als in anderern Firmen...
Also ich bin schon sehr froh über die krasse Darstellung vom Ralf, da es mir doch die Augen geöffnet hat, das ich da einfach verdammt vorsichtig sein muss. Ich denke ja immer das alles geht ... :oops:
ChrisB hat geschrieben: Ganz unabhängig davon ist der Weg, den Ralf aufgezeigt hat, zuerst diverse Themen abzuprüfen ob es ohne Modifikation geht unbedingt einzuhalten. Und in diesem Fall geht es sehr einfach ohne... die SAP sieht für die Stammdatenpflege im HR explizit vor, dass zusätzliche kundeneigne Prüfungen durchgeführt werden. Hier gibt es die Erweiterung PBAS0001. Für diese muss in der CMOD ein eigenes Projekt angelegt werden und dann können die zusätzlichen Prüfungen im Funktionsexit EXIT_SAPFP50M_002 programmiert werden (im EXIT_SAPFP50M_001 können zusätzliche kundeneigene Vorschlagswerte für das Anlegen von Infotypen programmiert werden).

Der Userexit ist leider relativ schlecht dokumentiert... daher würde ich vorschlagen, dass Du Dir entweder Unterstützung holst oder genügend Zeit einplanst um Dir das Thema selbst genauer anzuschauen.
Das hört sich schon mal sehr sehr gut für mich an! Ich hatte mir schon eine Alternativlösung überlegt, das Problem dabei ist, das dadurch für die Sachbearbeiter zusätzliche Arbeit anfällt und ich mir nicht sicher bin ob sie sich darauf einlassen.
ChrisB hat geschrieben: Und jetzt noch was anderes... was ist dass denn für ein Feld im IT 32? LBV-Nummer sagt wir da nichts... könnte es sein, dass dies sowieso schon ein eigenes Feld ist? Dann kannst Du die Prüfungen auch im Kundencoding für das Zusatzfeld hinterlegen... es müsste dann den Modulpool ZP003200 geben und das Dynpro ZP003200 / 0200.
das kann ich dir ehrlich gesagt gar nicht sagen, also was es für ein Feld ist, der Auftrag ist am Freitag an mich heran getragen worden, und ich wollte mich erst mal darüber informieren ob ich überhaupt die Möglichkeit habe da "einfach" Änderungen zu vollziehen. Ich werde mir das morgen - mit all den zusätzlichen Informationen die ich nun durch dich habe - genau ansehen. Es ist gut möglich das ich dann noch mal ein Paar Fragen stellen muss. Aber so hört sich das für mich schon alles sehr gut und machbar an, ohne das ich da evtl. nicht zu überschauende Probleme auslöse.

Auch dir tausend Dank!!
Viele Grüße
tabea

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
Hallo,

ich hätte dann jetzt tatsächlich noch eine Frage :oops:
ChrisB hat geschrieben:Und jetzt noch was anderes... was ist dass denn für ein Feld im IT 32? LBV-Nummer sagt wir da nichts... könnte es sein, dass dies sowieso schon ein eigenes Feld ist? Dann kannst Du die Prüfungen auch im Kundencoding für das Zusatzfeld hinterlegen... es müsste dann den Modulpool ZP003200 geben und das Dynpro ZP003200 / 0200.

es ist genau so wie du es da beschreibst :D aber kann ich da jetzt wirklich nicht viel falsch machen? Kann ich da ohne weiteres mein Coding unter bringen, gibt es da vielleicht auch Richtlinien wie man wo was am besten einfügt, etc.? Oh ne, am liebsten hätte ich ja ein Beispiel an das ich mich halten könnte, gibt es so etwas vielleicht?

Viele Grüße
Tabea

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Hallo Tabea,

naja... dann handelt es sich eigentlich um ganz normale Dynpro Programmierung. Sprich im PAI in einem Verprobungsmodul einfügen und dort die gewünschten Verprobungsrichtilinen abprüfen. Ein separater Prüfbutton ist dafür eigentlich nicht nötig...

Ein Beispielcoding hab ich grad nicht greifbar. aber Du kannst Dir auch das Dynpro Coding eines SAP-Standard-Infotyps anschauen... da werden die meissten Felder auch einer Prüfung unterzogen.

Viele Grüße
Chris

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
ChrisB hat geschrieben:Hallo Tabea,

naja... dann handelt es sich eigentlich um ganz normale Dynpro Programmierung. Sprich im PAI in einem Verprobungsmodul einfügen und dort die gewünschten Verprobungsrichtilinen abprüfen. Ein separater Prüfbutton ist dafür eigentlich nicht nötig...

Ein Beispielcoding hab ich grad nicht greifbar. aber Du kannst Dir auch das Dynpro Coding eines SAP-Standard-Infotyps anschauen... da werden die meissten Felder auch einer Prüfung unterzogen.

Viele Grüße
Chris
Hi Chris,

dir einfach tausend Dank, genau das werde ich morgen machen :D

viele Grüße
Tabea

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
Hallo,

wie ihr seht, habe ich das Problem leider immer noch nicht lösen können...

Nun habe ich eine sehr gut passende Lösung für diese Problem gefunden, nur leider funktioniert es nicht, und mir ist leider nicht klar warum nicht.

Nach langen Überlegungen, habe ich mir überlegt, dass ein Field Exit genau das richtige sein müsste, um dieses Feld mit einer Prüfung zu versehen. Das gute beim Field Exit wäre, das dann eine Prüfung für dieses Datenelement in einem Funktionsbaustein vollzogen würde, und überall, wo auf dieses Datenelement zugegriffen wird, die Möglichkeit besteht diese Prüfung zu vollziehen. Nur leider klappt es nicht.

Was habe ich gemacht:
1. Ein neues Datenelement angelegt
2. ein Testprogramm geschrieben, das genau dieses Datenelement als Eingabewert erwartet
3. den Parameter abap/fieldexit = YES setzten lassen
4. Ein Field-Exit mit dem Report RSMODPRF erzeugt
5. das Field-Exit an das Testprogramm und an das Dynpro gebunden
6. dummy-code zum Testen im Field-Exit hinterlegt

Was passiert:
NICHTS :cry:

Woran kann es liegen????????????

Ich weiß, dass auch noch andere Möglichkeiten bestehen, nur würde ich schon sehr gerne wissen was das Problem sein kann.

Danke schon mal vorab fürs Lesen,
viele Grüße
tabea

Beitrag von brinam (Specialist / 111 / 0 / 0 ) »
Hallo tabea*,
tabea* hat geschrieben:Was passiert:
NICHTS :cry:

Woran kann es liegen????????????
Was soll denn passieren? Gibts Du ggf. eine Fehlermeldung aus und die erscheint nicht?
Manchmal ist auch die Anweisung OUTPUT = INPUT. im FuBa notwendig. Vielleicht schickst Du mal etwas Coding.

Wenn Du den RSMODPRF ohne Angabe eines Datenelements startest, dann erhälst Du eine Liste aller Feldexits. Hat Deiner auch wirklich den Status aktiv?
Viele Grüße
Britta

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
Hallo,
brinam hat geschrieben: Was soll denn passieren? Gibts Du ggf. eine Fehlermeldung aus und die erscheint nicht?
Manchmal ist auch die Anweisung OUTPUT = INPUT. im FuBa notwendig. Vielleicht schickst Du mal etwas Coding.

Wenn Du den RSMODPRF ohne Angabe eines Datenelements startest, dann erhälst Du eine Liste aller Feldexits. Hat Deiner auch wirklich den Status aktiv?
es soll, wenn eine Nummer eingegeben wird die nicht den Plausibilitätsbedingungen genügt eine Fehlermeldung erscheinen, entweder beim enter drücken, oder speichern. Für den Test soll dann aber einfach bei jeglicher Eingabe eine Warnmeldung ausgegeben werden. Nur verzweigt der leider gar nicht in den Funktionsbaustein.

Das mit dem OUTPUT = INPUT habe ich auch schon integriert.

Ja der ist auch wirklich im Status aktiv!

Ich kann gerade leider kein Coding schicken, da ich von zu Hause nicht darauf zugreifen kann, aber ich werde das hier nochmal mit meiner mini-sap Installation ausprobieren, vielleicht klappt es ja hier, wenn nicht schicke ich dann mal etwas Coding :-)

Vielen Dank für deine Ideen & viele Grüße
tabea

Beitrag von brinam (Specialist / 111 / 0 / 0 ) »
Hallo tabea,

bin auch zu Hause, genauer gesagt schon im Urlaub :-)

Ich habe 2 Vermutungen:
1) Zuordnung des Datenbankfeldes zu Programmen: Ist die Zuordnung global oder nur zu einem bestimmten Programm?

2) Du schriebst weiter oben:
tabea* hat geschrieben:Was habe ich gemacht:
1. Ein neues Datenelement angelegt
Dein Datenbankfeld (LBV-Nummer) ist möglicherweise in der entsprechenden Datenbanktabelle nicht mit einem Datenelement, sondern nur mit dem Datentyp definiert. Ich finde so etwas ziemlich ?dirty?. Wenn dem so ist, dann musst Du das Datenbankfeld entsprechend mit Deinem neuen Datenelement hinterlegen, d.h. eine Anpassung in der SE11 machen. Prüfe aber vorher, ob der Typ Deines Datenelements auch wirklich dem des Datenbankfelds entspricht. Anderenfalls käme es zu Problemen, weil die Datenbank schon Einträge hat.
Viele Grüße
Britta

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Hallo Tabea,

nachdem du den Profilparameter auf "YES" gesetzt hast,muss das SAP-System einmal neu gestartet werden. Wurde das gemacht?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von tabea* (ForumUser / 52 / 0 / 0 ) »
Hallo,
black_adept hat geschrieben:Hallo Tabea,

nachdem du den Profilparameter auf "YES" gesetzt hast,muss das SAP-System einmal neu gestartet werden. Wurde das gemacht?
ja das wurde gemacht. Ich weiß wirklich nicht mehr weiter, es wäre so genial für diese Anwendung, deshalb mag ich auch noch nicht aufgeben!

Wenn ich den Funktionsbaustein teste klappt auch alles genau so wie es sein soll.

Vielleicht habe ich auch mein Datenelement falsch erstellt. Ich habe ein ganz normales Dynpro, mit folgendem Coding:

Code: Alles auswählen.

SELECTION-SCREEN BEGIN OF BLOCK sp
    WITH FRAME TITLE text-001.
PARAMETERS: z_lbvnr TYPE z_lbvnr .
SELECTION-SCREEN END OF BLOCK sp.
Und diese z_lbvnr ist ein aktives Datenelement Z_LBVNR, der Datentyp ist Eingebauter Typ CHAR der Länge 12.
Kann es sein das es daran liegt?

Vielen Dank für eure Beiträge bis her, ich kann dann auch einfach nicht aufgeben und muss zumindest raus finden, woran es liegt :oops:

Viele Grüße
tabea

Vergleichbare Themen

2
Antw.
2634
Views
Änderungen in Stücklisten
von Tina » 03.11.2005 22:05 • Verfasst in Material Management & Produktionsplanung
1
Antw.
1302
Views
Protokollierung der Änderungen
von LeonBarthez » 06.08.2007 13:38 • Verfasst in Human Resources
1
Antw.
1877
Views
Änderungen in Infotypen
von mamba » 23.04.2007 14:02 • Verfasst in Human Resources
1
Antw.
1552
Views
Änderungen Vertriebsbelegposition
von BerndSchweiger » 06.09.2017 14:04 • Verfasst in Sales and Distribution
3
Antw.
1675
Views
Änderungen der Datenbank
von SAP_ENTWICKLER » 07.12.2018 06:24 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Regex in where
vor 18 Stunden von tar 8 / 364
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1636
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 285
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 527

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 18 Stunden von tar 8 / 364
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1636
Programm anlegen mit Vorlage
vor 2 Tagen von DeathAndPain 2 / 285
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 527

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 2 Tagen von snooga87 1 / 221
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3403
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9953