Parametertransaktion für einen Modulpool

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
30 Beiträge • Seite 1 von 2 (current) Nächste
30 Beiträge Seite 1 von 2 (current) Nächste

Parametertransaktion für einen Modulpool

Beitrag von einar46 (ForumUser / 33 / 5 / 1 ) »
Hallo ABAP-Experten,

ich habe mal wieder eine Frage, wo ich auch im Kollegen-Kreis keine zufriedenstellende Lösung gefunden habe, ohne mich "verbiegen" zu müssen.

Ich habe einen Modulpool, der mit einem Startbildschirm 0100 beginnt und weitere Folgebildschirme hat. Auf dem Screen 0100 liegen zwei Felder, CHAR4 und CHAR20. Das CHAR4-Feld soll nur angezeigt werden, dass CHAR20-Feld ist eingabebereit. Dazu gibt es eine Transaktion (zB ZXXX).

Nun möchte mein Auftraggeber, dass das CHAR4-Feld beim Transaktionsstart "vorbelegt" wird. Aber ein Festwert (Literal im Programm) darf es nicht sein (strenge Programmierrichtlinien) und auch eine Customizing-Tabelle zum Auslesen des Wertes (so ist es im Augenblick realisiert) soll es nicht sein (zu umständlich, Tabelle besteht nur aus einer Zeile, die Zeile hat nur zwei Spalten). Er stellt sich eine Parametertransaktion (zB ZXXX_0002) vor, wo die 0002 auf den Wert im CHAR4-Feld hinweist. Das muss gehen, meint er. Das geht, aber nur wenn das CHAR4-Feld eingabebereit ist. Das soll aber eben nicht sein.

Fällt Euch eine elegante Lösung ein, ohne dass man zu viel Aufwand betreiben muss und den Festwert und die Tabelle vermeiden kann?

Danke und Gruß
Reinhard

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


Re: Parametertransaktion für einen Modulpool

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Wenn keine Literal erlaubt ist, nimm halt eine Constante. Ich vermute aber, die ist auch nicht erlaubt?!?!?

Wieso ist eine Tabelle zu umstaendlich, wenn Ihr sie doch jetzt schon benutzt???

Ist den ABAP im Programm erlaubt? .... Ich frage ja nur mal.

Und das mit der eleganten Loesung und ohne viel Aufwand mit diesen Einschraenkungen...????

Re: Parametertransaktion für einen Modulpool

Beitrag von einar46 (ForumUser / 33 / 5 / 1 ) »
Hallo Unit605,

eine Konstante (oder Literal) geht nicht wegen der Programmierrichtlinien, die Tabelle habe ich jetzt. So bleibt es auch, wenn ich keine andere Lösung finde.
Meinem Auftraggeber ist das aber zu umständlich, obwohl sich der Wert in der Customizing-Tabelle wahrscheinlich nie ändern wird. Den legt man einmal fest und die Sache ist erledigt.

Ihm gefällt das, so wie es im Augenblick ist, nicht so richtig gut. Ist halt so.

Und die sehr strengen Programmierrichtlinien, die ich in der Form so noch nicht erlebt habe, tun ein übriges. ABAP-Programme werden nach allen Regeln geprüft und nicht freigegeben, wenn etwas nicht gefällt bzw. passt. Wenn zB die Anzahl der Kommentarzeilen im Verhältnis zu den Codezeilen zu gering ist, wird das Programm nicht abgenommen und muss nachgebessert werden.

Gruß Reinhard

Re: Parametertransaktion für einen Modulpool

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Wenn der Kunde solche "seltsamen" Richtlinien anordnet, muss er sich nicht wundern, wenn es dann komplizierter wird, als es muesste.

Das mit den Kommentarzeilen hab ich ja noch nie gehoert. Man lernt nie aus, wie man so schoen sagt.

Ich nehme an, dass manche Kommentare dann mit "bla bla" aufgeblasen werden, nur damit die Zeilenanzahl erhoeht wird.

Evtl. koenntest Du ja noch eine Datei auf dem Server ablegen und einlesen? Ich meine, bei solchen Programmierrichtlinien muss man ja auch "bloede" Gedanken kommen.

Ist eine Pararamter-ID vielleicht etwas??? Aber auch um drei Ecken gedacht und die kann evtl. auch jeder aendern wie er lustig ist.

Mal sehen, was fuer Ideen noch kommen.

Re: Parametertransaktion für einen Modulpool

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
Unit605 hat geschrieben:Mal sehen, was fuer Ideen noch kommen.
Neuer Screen mit CHAR4 eingabebereit.
Parametertransaktion incl. CHAR4-Wert und ScipFirstScreen.
Neuer Screen ruft den alten Einstiegsscreen auf und übergibt CHAR4.
Gruß Hendrik

Re: Parametertransaktion für einen Modulpool

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Hast du mal Transaktionsvarianten versucht (SHD0) ?

Re: Parametertransaktion für einen Modulpool

Beitrag von einar46 (ForumUser / 33 / 5 / 1 ) »
Hallo Dele, hallo Hendrik,

ich werde das mal in der Reihenfolge probieren:

1) Tx SHD0 von Dele
2) Vorschaltscreen-Idee von JHM

und dann berichten.

Danke und Gruß
Reinhard

Re: Parametertransaktion für einen Modulpool

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
einar46 hat geschrieben:Aber ein Festwert (Literal im Programm) darf es nicht sein (strenge Programmierrichtlinien)
Ich glaube kaum, dass die Programmierrichtlinien Konstanten verbieten...
Dass Literale an sich verboten sind, geht in Ordnung.
So muss anstelle von

Code: Alles auswählen.

SELECT * FROM MARA WHERE MTART = 'FERT'...
codiert werden:

Code: Alles auswählen.

CONSTANTS c_mtart TYPE mtart VALUE 'FERT'.
SELECT * FROM MARA WHERE MTART = c_mtart...
Wenn das tatsächlich komplett verboten sein sollte, dann muss es eine andere Unterstützung für die Entwickler geben, wie zum Beispiel eine generelle Parameter-Tabelle mit entsprechenden Zugriffsroutinen.
Ansonsten kannst du in einer Klasse eine Konstante definieren oder du legst einen Type-Pool an.
Mit der Tabelle, die nur einen Eintrag enthält, hast du es meiner Meinung nach am besten gelöst.

Wie Unit605 bereits schrieb:
"Wenn der Kunde solche "seltsamen" Richtlinien anordnet, muss er sich nicht wundern, wenn es dann komplizierter wird, als es muesste. "

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
einar46


Re: Parametertransaktion für einen Modulpool

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Man kann den Wert in der VARID speichern und dort auch wieder auslesen. Dann ist es weder eine Konstante noch ein Liberal. ;)

Code: Alles auswählen.

export WERT from P_WERT to database vari(xy) id WERT.
Auslesen mit

Code: Alles auswählen.

import....
WERT ist der Name in der Tabelle, P_WERT ist das Feld im Programm, xy ist die ID, unter der das gespeichert wird.

Sowas sollte man gescheit kommentieren, sonst versteht das kein Mensch....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Parametertransaktion für einen Modulpool

Beitrag von black_adept (Top Expert / 4098 / 128 / 941 ) »
Oh - geht es hier darum einen Code-Inspektor zu umgehen?
  • Schreibe den Defaultwert in ein Textelement des Programms und mache die initiale Wertzuweisung daraus.
  • Wenn das Char-4-Feld z.B. "HUGO" heißen soll nenne dein Programm "ZWASWEISSICH_HUGO" und mach die Wertzuseisung mittels Teilfeldzugriff über den Programmnamen.
  • Bau dir das Char-4-Feld via Concatenate mittels Teilfeldzugriff aus SY-ABCDE auf.
  • Schreib den Inhalt des Feldes irgendwo ins Coding und kommentiere die Zeile aus. Dann kannst du dir das vie "READ REPORT" herausfischen.
  • Leg eine Nachricht an die genau den Feldwert beinhaltet und fülle dann das Feld mittels MESSAGE i000 into Char4Feld.
  • Leg eine Klasse an, die eine Methode enthält, die eine Exception hat welche wie der Feldwert heißt und hole diese Information via RTTI
  • Häufig zählen einzelne Buchstaben nicht als Literal --> Falls dem bei euch so ist, initialisiere mittels Concatenate und Einzelbuchstaben.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Parametertransaktion für einen Modulpool

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
YMMD
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Parametertransaktion für einen Modulpool

Beitrag von einar46 (ForumUser / 33 / 5 / 1 ) »
Hallo ABAP-Experten,
danke für die vielen Tipps.
Ich habe mich für die sehr einfache Variante von ewx entschieden (Definition einer Konstanten im TOP-Include).
Gruß Reinhard

Re: Parametertransaktion für einen Modulpool

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Sehr vernünftig - die Regel, dass Konstanten verboten sind, wurde aufgehoben?

Übrigens eine ausgesprochen bescheuerte Regel..... Genau wie die Regel, Literale nicht zu verwenden, das führt dann nur zu durch-alphabetisierten Top-Includes....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Parametertransaktion für einen Modulpool

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Literale nicht zu verwenden ist eine durchaus sinnvolle Regel.

Ansonsten hast du nämlich im Programm stehen:

Code: Alles auswählen.

SELECT * FROM MARD WHERE ... WERKS = '1000'...
SELECT * FROM VBAK WHERE ... VKORG = '1000'...
Deutlich sinnvoller wäre:

Code: Alles auswählen.

CONSTANTS c_werks_hamburg TYPE WERKS_D VALUE '1000'.
CONSTANTS c_vkorg_hamburg TYPE VKORG VALUE '1000'.
SELECT * FROM MARD WHERE ... WERKS = c_werks_hamburg...
SELECT * FROM VBAK WHERE ... VKORG = c_vkorg_hamburg...
Über einen Verwendungsnachweis über die Konstanten weißt du sofort, welches '1000' gemeint ist.
Und EINE Änderung in der Konstanten und du kannst sicher sein, dass die entsprechenden Selects und Abfragen korrekt sind.
Wenn du '1000' direkt als Literal verwendest, darfst du den gesamten Code nach 1000 durchsuchen und prüfen, ob du den Wert anpassen musst oder nicht.

Re: Parametertransaktion für einen Modulpool

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
Nein, so pauschal ist die Regel Mist. Sonst musst du nämlich eine Konstante vergeben für die Verprobung, ob ein Radiobutton oder eine Checkbox gesetzt ist oder nicht (das meinte ich mit Durchalphabetisieren - gc_x type char01 value 'X' und Co.). Und ein

Code: Alles auswählen.

    select single 'X'
    into @exists from ....
geht dann gar nicht mehr. Literale können durchaus ihren Sinn haben.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Vergleichbare Themen

0
Antw.
2481
Views
Parametertransaktion Start_Report: Bedeutung der Parameter?
von Jufo » 15.02.2008 14:35 • Verfasst in ABAP® Core
2
Antw.
2011
Views
Tagesdatum der Parametertransaktion übergeben (FDTA)
von miru77 » 24.03.2014 08:37 • Verfasst in ABAP® Core
2
Antw.
2497
Views
Selektionsvarianten für Modulpool
von SAP_ENTWICKLER » 07.01.2014 12:50 • Verfasst in ABAP® Core
4
Antw.
2220
Views
Programme suchen mit Programmtyp xx (z.B. M^=Modulpool)
von gse » 29.06.2006 09:50 • Verfasst in ABAP® Core
5
Antw.
3338
Views
Pfelge-View als Modulpool nachprogrammiert mit TC + App Log
von MarkusW » 29.01.2007 15:15 • Verfasst in Dialogprogrammierung

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Programm anlegen mit Vorlage
vor einer Stunde von DeathAndPain 2 / 36
IT0024 Qualifikationen CP-ID
vor einer Stunde von DeathAndPain 2 / 284
BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Stunden von snooga87 1 / 27
Bedarfszusammenfassung "Einzelbedarfe"
vor 5 Stunden von harri 2 / 1215

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

Programm anlegen mit Vorlage
vor einer Stunde von DeathAndPain 2 / 36
IT0024 Qualifikationen CP-ID
vor einer Stunde von DeathAndPain 2 / 284
BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Stunden von snooga87 1 / 27
Bedarfszusammenfassung "Einzelbedarfe"
vor 5 Stunden von harri 2 / 1215

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Stunden von snooga87 1 / 27
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3208
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9797