SAP Jobsuche bei DV-Treff
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

wollte mich mal etwas in ABAP probieren, und scheitere aber an einem Beispiel aus einem SAP Dokument. Hier soll durch einen Tastendruck ein Text in ein Feld übergeben werden. Je nach dem welche Taste man drückt ist es halt ein anderer text.
Wenn ich das im Debugger durchlaufen lasse, dann funktioniert es auch der Text wird an das Ausgabefeld (bei mir output) übergeben.
Das dumme ist nur der Wert wird nicht angezeigt, Warum nicht???

dello
danielA.
vor 20 Jahre
hallo dello,

kannst du dein beispiel (sprich code) mal mit posten?

gruß
daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

ja, hier ist der code:

PROGRAM demo_dynpro_push_button.

DATA: ok_code TYPE sy-ucomm,
         save_ok LIKE ok_code,
         output(8) TYPE c.

CALL SCREEN 100.

MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BUTTON_EXIT'.
LEAVE PROGRAM.
WHEN 'BUTTON_1'.
output = 'Button 1'(001).
WHEN 'BUTTON_2'.
output = 'Button 2'(002).
WHEN OTHERS.
output = save_ok.
ENDCASE. ENDMODULE.

Also ich vermute ja, das es irgendwie an der Definietion des Feldes im Screen Painter liegt, aber .....

dello
danielA.
vor 20 Jahre
hallo dello,

versuch es mal so:

MODULE user_command_0100 INPUT.  
ok_code = sy-ucomm.          "ist unelegant, aber mehr fällt mir jetzt auf die schnelle nicht ein 😢.
save_ok = ok_code.  

gruß
daniel A.
danielA.
vor 20 Jahre
ach, was vergessen.

kannst du mir mal dieses beispielprogramm nennen?

mit dem sy-ucomm finde ich es keine gute lösung, da muß ich mal nach was schönerem gucken.

gruß
daniel A.
danielA.
vor 20 Jahre
hallo dello,

ich war etwas von der rolle. in dem beispiel was ich meinte, kann man auch gleich den sy-ucomm auswerten. aber total unsauber.

besser:
ok_code like sy-ucomm.

und wenn du über die se80 in dein programm gehst und das dynpro 100 dplclickst, gibt es dort 3 reiter. den in der mitte - elementliste - mußt du noch mit einem eintrag versehen, nämlich.......OK_CODE in deinem fall.

dann solltest du ganz normal im PAI sofort mit case OK_CODE anfangen und am ende dann endcase. clear OK_CODE, so brauchst du nur eine variable.

ich hoffe du hast das verstanden?!

gruß
daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

so ganz habe ich es nicht verstanden. Soll ich die DATA - deklarationen jetzt unter dem Modul beginnen
"
MODULE user_command_0100 INPUT.  
ok_code = sy-ucomm.     "ist unelegant, aber mehr fällt mir jetzt auf die schnelle nicht ein 😢.
save_ok = ok_code.  
"
muß leider weg, melde mich morgen nochmal

danke erstmal
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo

melde mich zurück.
Sicher ist es möglich hier ohne save_ok zu arbeiten, aber für mich soll es erstmal funktionieren, und ich habe den Verdacht, das der Code eigentlich schon ganz richtig ist, nur die Umsetzung der Felder im ScreenPainter bzw. die Attribute der Felder sind nicht ganz korrekt.
Wie gesagt, wenn ich das Programm im Debugger ablaufen lasse, dann wird der richtige Wert in das output Feld übergeben - er wird nur nicht angezeigt.
ich habe auch eine kleine Zeitverzögerung eingebaut mit Wait up to... aber es wird nichts, zumindest nicht sichtbar ins Feld eingetragen.
Ich habe bereits das eintragen von werten in das Feld außerhalb des Modules probiert und es hat funktioniert. Also nachdem das Dynpro 100 aufgerufen wurde hab ich einfach gesagt output = 'Test' und es ging. Aber innerhalb des Moduls ging es eben nicht.
Warum  nur???

dello
danielA.
vor 20 Jahre
moin dello,

soweit ich weiß braucht es für dieses beispiel keine weiteren einstellungen im screenpainter.

aktiviere dein programm und gehe in den screenpainter, drücke die F6 und trage den feldnamen aus deinem programm ein, drücke aus programm holen oder so?! nicht aus DDIC, das dürfte es nicht geben.
du kannst jetzt das feld irgendwo platzieren.

für gewöhnlich arbeite ich in der TC SE80, man kommt über einen click auf das gewünschte dynpro und in den bearbeitungsmodus, von wo aus man über den button layout in den screenpainter kommt.

ist man im bearbeitungmodus für das dynpro (in der SE80) werden einem rechts 3 karteireiter angeboten, der mittlere 'Elementenliste' und dort der Reiter Allg. Attrib. muß gepflegt werden mit dem OK_CODE. es müsste eh ein feld eingabebereit sein.....vom typ OK.

vielleicht ist es nur das was dir fehlt?!

gruß
daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

nein das ok-code Feld habe ich schon benannt. wie gesagt im Debugger läuft es wunderbar.
ich habe jetzt sogar probiert ein Format zuzuweisen mit WRITE TO aber das brachte auch nichts.

Das mit dem Feld holen habe ich dann beim zweiten mal auch gemacht, aber das brachte ebenfalls keinen erfolg - hier geht es ja nur um Effektivität und Verhinderung von zusätzlichen Fehlern beim Einrichten der Felder im Screenpainter.

Übrigens als ich die Felder in den Screenpainter geholt habe, da hat er noch andere Felder mit aufglistet die ich  ebenfalls mit auf dem Dynpro habe, was ja nicht schlimm sein dürfte. Darunter ist auch das save_ok. Warum schreibt er denn nichts in das Feld rein, laut Debugging taucht doch auch dort der Wert auf, oder muß man hier auch erst noch irgendwas drehen, das er dort reinschreibt.

Komisch ist, das wenn ich außerhalb des MODULE <> INPUT etwas in das Feld schreiben will es auch beim direkten Ausführen geht, nur innerhalb funktioniert es nicht.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

ich muß mal ne dumme Frage stellen...
Was für einen Programmtypen muß ich den wählen wenn ich das oben beschriebene ABAP Teil ablaufen lassen will?

Ausführbares Programm?
Modulpool?
Oder was ...

dello

dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

ich wollte den Spaß bloß aufklären ..

Es lag daran, dass nach dem ENDCASE kein WRITE OUTPUT stand.

Na toll.

dello
danielA.
vor 20 Jahre
hallo dello,

also du hast ein komisches problem, so ein 2-zeiler sollte doch schneller zu lösen gehen ;-(?!

das programm soll wahrscheinlich ein ausführbares programmchen sein 😉, oder wenn nicht willst du es woanders einbinden als include.

ein write setzt man aber in der reportprogrammierung ab, nicht etwa in der dialogprogrammierung.......soll aber nicht heißen das man nicht beides mixen kann.

was mir noch einfällt, hast du einen GUI-Status erstellt?
im module status_0100 (Output) den PF-STATUS aktivieren, namen vergeben und einrichten, so dass du auch die standardnavigationsbutten bedienen kannst.

gruß
daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

ja so ganz klar ist mir das nicht, wo kann ich denn den GUI Status aktivieren und für was ist der gut ?

dello
danielA.
vor 20 Jahre
Hallo Dello,

ich gehe mal davon aus, dass Du auch die SE80 zum entwickeln benutzt.
Wenn man sich sein Dynpro holt bzw. anklickt, dann werden einem 2 Prozesse angeboten. Vor Ausgabe (before output) und Nach Eingabe (after input), vor der Ausgabe will das System schon einen PF-Status haben.
Wenn Du nun im Before Output den * (Stern wegnimmst) und einen doppeltklick auf status_0100 machst, erstellt dir das System solche Zeilen

MODULE status_0100 OUTPUT.
*  SET PF-STATUS 'xxxxxx'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.                 " STATUS_0100  OUTPUT

Natürlich den Stern beim Status wegmachen und statt der x einen Namen vergeben, aber achte, dieser muß groß geschrieben werden. Jetzt kannst Du einen Doppelklick auf den Status machen und das System fragt ob Du nun einen anlegen willst. Alles speichern und Du wirst sehen das Dir das folgende irgendwie bekannt vorkommt.
Hier wirst Du die Buttonleiste oder die Standardbutton wiedersehen. Du mußt Variablennamen für die Button usw. vergeben, denn diese Namen sprichst Du zum Zeitpunkt PAI an und wertest Sie in der Regel mit dem Case/Endcase aus und reagierst entsprechend.

Das war jetzt mal grob erklärt, es gibt da aber noch mehr wissenswertes.

Wie weit bist Du denn mit Deinem Einstieg?

Gruß
daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

ja das ging ja sogar mal gut. Ich bin ja richtig stolz auf mich, ha, ha.
Also hab es so gemacht wie du gesgat hast und habe den Status angelegt und mal ein bißchen rumprobiert und schon war die ZURÜCK-taste aktiviert und ich konnte zurückspringen... halt moment ich habe es gerade nochmal getestet. Er springt dtrotzdem eine Seite weiter, also auf das letzte Bild meines Proggys.
mmmh... habe bei der Symbolleiste EXIT in das Feld über der ZURÜCK Taste geschrieben, aber das reicht wohl noch nicht...

Naja daran siehst du ich noch am Anfang, aber es bilden sich langsam ein paar Zusammenhänge ab. Es ist aber eben noch viel mit "try and error" verbunden.

ich benutze auch SE80  und weiterhin Beispiele aus der Flugdatenbank (ich weiß nicht genau ob das auch Bestandteil von IDES ist), außerdem das ABAP PDF von SAP mit diesen wahnsinnigen 1600 Seiten Umfang...

dello
danielA.
vor 20 Jahre
Hallo Dello 😉,

Deine Programmierung macht vortschritte......COOL.

Wobei ich mir lieber ein Buch besorgen würde, grad am Anfang......es gibt dort gerade einige Tücken die einem zur Verzweiflung bringen können. Da fehlt dann nur diese eine kleine Sache und der Erfolg bleibt einem verwerrt.
Mein absolutes Lieblingseinsteigerbuch war, aber bitte nicht lachen, 'Abap in 21 Tagen', hier hat man - so finde ich - einige gute Tricks gelernt.

Vielleicht kann ich ja noch mal helfen 😉,
also bis dann erst mal und viel Glück + Spass beim Programmieren!
Gruß
Daniel A.
danielA.
vor 20 Jahre
Ach noch was,

ich bin mir nicht sicher ob Du es richtig gemacht hast!?

Du mußt jetzt natürlich einen Ausgang im CASE/ENDCASE haben, etwa so:

When 'BACK'.  .......aber is wohl klar ;-)

und dann sowas wie

leave Program
oder
set screen 0. oder einen anderen.

Bei den Eigenschaften des Dynpros gibt es ein Eingabefeld für ein sogenanntes Folgedynpro, hier muß die Dynpronummer drin stehen, also bei Dynpro 0100 muß hier ebenfalls 0100 eingetragen werden. Dies kann zu Verwirrungen führen!

So, dann mal los.

Gruß
Daniel A.
dello
  • dello
  • SAP Forum - Experte Thema Starter
vor 20 Jahre
Hallo,

ja mit den Fortschritten ist das so eine Sache. Ich bin erstmal am menupainter hängengeblieben und versuche da so ein paar Sachen. Allerdings fehlt mir hier der Erfolg in Sachen Ausführen von Aktivitäten aufgrund bestimmter Funktionen aus der Menüzeile oder Drücken von Drucktasten usw. Egal was ich hier über den Menupainter definiere, die Wirkung ist immer dieselbe, aus meinem zweiten Bild wird immer auf das Dritte, meine Druckliste/Ausgabeliste, gesprungen.
Nur zur Erklärung:
Es geht hier nur um diese Flugdatenbank, man wählt eine Fluggesellschaft auf Dynpro1000 aus und springt dann weiter auf Dynpro100 wo die Hauswährung angezeigt wird, von hier springt man weiter auf eine Druckliste, auf der die nochmal angezeigt wird.

Also wegen dem Buch werde ich mich mal erkundigen, ich habe es sogar auf meinen Streifzügen durchs Netz ebenfalls schon gesehen.

dello
vor 20 Jahre
Hi,
probier es doch mal indem Du beim Module-Aufruf dieses Feld "output" angibst.

field: output.
        module .....

Vielleicht klappt es ja dann.    ;)

Gruß
HJ