Funktionscode-Verarbeitung bei Dynpro-Exit

Benutzeroberflächen in SAP Systemen.

Funktionscode-Verarbeitung bei Dynpro-Exit

Postby Sylvia2905 » Fri Jan 09, 2009 2:41 pm

Hallo zusammen.

Ich habe folgendes Problem:

Für einen Kunden habe ich im Bereich Qualitätsmeldung (TA QM01/-02/-03) über einen Customer-Exit zusätzliche Registerkarten mit Customer-Subscreens angelegt (FuGr XQQM).

Wenn ich nun auf einem Subscreen eine Drucktaste - z.B. für das Löschen einer Zeile eines Table Controls - einrichte, erscheint in der Anwendung folgende Fehlermeldung:

"Die angeforderte Funktion DEL_ROW ist hier nicht vorgesehen"
Meldungsnr. V0104

Alle Eingabefelder sind nicht eingabebereit. Nach Betätigen von 'Enter' sind alle Eingabefelder wieder eingabebereit und auch die Zeile im Table Control ist gelöscht!

Die Drucktaste funktioniert also und auch anschließend läuft alles wie programmiert ab.

Warum aber erscheint diese Meldung, wenn danach alles korrekt weiter läuft??? :roll:

Es muss doch möglich sein, Drucktasten auf einem Customer-Subscreen zu platzieren, ohne dass die besagte Meldung hochkommt, oder?!

Das Debugging hat folgendes ergeben:

Der Funktionscode der Drucktaste wird sofort an das OK-CODE-Feld im Standard-Code weitergereicht, das aber im Exit nicht erreichbar ist. Löschen funktioniert also nicht!

Das OK-Code-Feld wird z.B. darauf abgefragt, ob es einen User-Funktionscode enthält (1. Zeichen = '+').

Schließlich wird die Fehlermeldung an dieser Stelle generiert:

* Trace-Ausgabe oder Fehlermeldung
IF T185E-TRACE NE SPACE AND FLAG-TRACE_AUSGABE NE SPACE.
PERFORM TRACE_AUSGEBEN USING 'T185F'.
ELSE.
IF SY-SUBRC NE 0.

*-Schluessel T185F zur Ausgabe in Hilfsfeld TABKEY einsetzen ---------*
*-MERKE: Loesung variabel gestalten --> ohne explizite Laengen -------*

TABKEY+0(8 ) = T185F-AGIDV.
TABKEY+8(2) = ', '.
TABKEY+10(1) = T185F-TRTYP.
TABKEY+11(2) = ', '.
TABKEY+13(4) = FCODE.
* TABKEY+14(1) = '.'.
MESSAGE E104 WITH FCODE. "E102 WITH TABKEY 'T185F'.
ENDIF.

Der SY-SUBRC an dieser Stelle ist 4 und rührt von der vorherigen Abfrage her, ob der Funktionscode einer der vorgegebenen Tabstrip-Funktionscodes ist oder nicht.

Wie gesagt, funktionieren tut ja alles, aber die Meldung ist doch schon ziemlich nervend und meiner Meinung nach dem Anwender auch nicht zuzumuten!

Mir fällt absolut nicht ein, wie dieses Problem zu lösen ist oder ob ich irgendetwas falsch gemacht habe. Wenn man z.B. das OK-CODE-Feld löschen könnte, würde die Fehlermeldung nicht hochkommen; aber das ist ja Standard-Coding und da kommt man ja nicht ran, oder vielleicht doch?!!

Ich hoffe, es gibt eine Lösung für diesen Fall!

Im voraus vielen Dank.

Gruß, Marco
Sylvia2905
.
.
 
Posts: 2
Joined: Fri Jan 09, 2009 2:41 pm

Postby Ilja583 » Fri Jan 09, 2009 4:27 pm

Hallo Marco,

1.) Wenn ich deinen Beitrag richtig lese könntest du doch deinen eigenen ok-code mit "+" beginnen lassen. Also statt "DEL_ROW" ein "+DEL_ROW".

2.) Häufig schaut SAP in diversen Customizingtabellen nach, welche Transaktionscodes denn nun erlaubt sind. Dort könntest du versuchen deinen eigenen auch drin platzieren.

3.) OK_CODE ändern:
http://bb1.gate2app.com/viewtopic.php?t=6915=14672
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Sylvia2905 » Tue Jan 13, 2009 6:06 pm

Hi Stefan,

der Tip mit dem "Dirty Assign" war klasse. Klappt wunderbar.

Vielen Dank für dieses "Hintertürchen". :D

Gruß, Marco
Sylvia2905
.
.
 
Posts: 2
Joined: Fri Jan 09, 2009 2:41 pm

Postby Hira5152 » Fri Mar 27, 2009 1:23 pm

Hallo,
noch ein klein verspäteten Nachtrag von mir :)

Ich hatte das gleich Problem bloß mit einen Button. Den nannte ich Z_DRUCK, dieser sollte ein eigenes Programm zum Drucken ausführen (bzw ein Formular). Es funktionierte auch, bloß es kam andauernd die eine Fehlermeldung. Dann habe ich Debugged (mit /h) um zu sehen an welcher stelle er die Meldung ausgibt und dabei bin ich auch hier drüber gestolpert:

ELSEIF ( C_FCODE = Y_FCODE_PG_TOP )
OR ( C_FCODE = Y_FCODE_PG_UP )
OR ( C_FCODE = Y_FCODE_PG_DOWN )
OR ( C_FCODE = Y_FCODE_PG_BOTTOM ).
* Blaettertasten Merkmalsbewertung => Übergabe an Klassifizierung
PERFORM FCODE_HANDLE_CLASSIFICATION CHANGING C_FCODE.
*>>>> END P9CK019895 <<<<
ELSEIF ( C_FCODE(5) = 'IPAR_' ).
* Partner-Fcode => Übergabe an Partnerverwaltung
PERFORM FCODE_HANDLE_PARTNER CHANGING C_FCODE.
*>>>> BEGIN P9BK024275 <<<<
ELSEIF ( C_FCODE(5) = 'IBIP_' ).
* IBIP-FCodes
PERFORM FCODE_HANDLE_IBIP CHANGING C_FCODE.
*>>>> END P9BK024275 <<<<
ELSEIF ( C_FCODE(6) = 'IBOCX_' ).
* Ibase-Fcode => Übergabe an ITO0 schon geschehen, jetzt initial
CLEAR C_FCODE.
ELSEIF ( C_FCODE(5) = 'CV140' ).
* Doku-Fcode => Übergabe an ITO0 schon geschehen, jetzt initial
CLEAR C_FCODE.
ELSEIF ( C_FCODE(6) = 'ZZITO_' ). "P6BK060704
* Exit-Fcode => Übergabe an ITO0 schon geschehen, jetzt initial"704
CLEAR C_FCODE. "P6BK060704
ELSEIF ( C_FCODE(1) = '%' ).
* Control-FCodes (z.B. IBase oder Dokumente) initialisieren
CLEAR C_FCODE.

und das 'ZZITO_' habe in dem Namen eines schon vorhandenen Button gesehen, also habe ich mein 'Z_' durch 'ZZITO_' ersetzt und die Fehlermeldung war verschwunden :D

Ich weiß nicht ob da für Registerkarten solche gleiche Namen gibt die in diese Abfrage kommt?!

Gruß Waldemar
Hira5152
.
.
 
Posts: 7
Joined: Thu Nov 29, 2007 5:29 pm

Re: Funktionscode-Verarbeitung bei Dynpro-Exit

Postby Joel5259 » Wed May 25, 2011 3:05 pm

Hallo,

habe identisches Problem wie im ersten Post beschrieben.

Variante 1:
verstehe leider nicht wie ich die "Dirty" Assign Anweisung verwende?
An welcher Stelle rufe ich sie auf bzw. wie sieht sie aus?

Variante 2:
(letzter Eintrag)
Welches SAP Programm wurde modifiziert?
Joel5259
.
.
 
Posts: 7
Joined: Wed Oct 17, 2007 2:15 pm


Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 5 guests