Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Artur3189 » Wed Aug 13, 2014 10:48 am

Hallo zusammen,

habe den Kundenstamm (Tabelle KNA1) mittels einer Append-Struktur um ein Feld (ZBemerkungen) erweitert.
Die Erweiterung des Dynpros erfolgte mit Hilfe der
"Modifikationsfreie Erweiterung des Kundenstamms vorbereiten"
und seinen weiteren Einstellungen.
Das Feld ist unter XD01/02/03 als neuer Subscreen auch sichtbat und Eingabbereit.

Leider habe ich bisher nicht verstanden, wie die eigentliche Datenübergabe (Neueingabe / Änderung / Speicherung) sicherzustellen ist.

Was müssen die beiden Methoden (IF_EX_CUSTOMER_ADD_DATA_CS~SET_DATA /
IF_EX_CUSTOMER_ADD_DATA_CS~GET_DATA)
enthalten, damit es funktoniert und die Werte in der Append-Struktur (ZKNA1, bzw in der Tabelle KNA1) auch weggeschrieben werden, bzw wieder ausgelesen werden ?

Gruss Michi.
Artur3189
...
...
 
Posts: 103
Joined: Wed Oct 22, 2003 7:23 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Alma59 » Wed Aug 13, 2014 11:46 am

Hai,

erzeuge in deinem Z-Programm bzw. Funktionsgruppe zwei Formroutinen z.B.

FORM get_data CHANGING xs_lfm1 STRUCTURE lfm1.
* Daten aus deiner Struktur übergeben
MOVE-CORRESPONDING "deine Struktur" TO xs_lfm1.
ENDFORM. "GET_DATA

FORM set_data USING xs_lfm1 STRUCTURE lfm1
xv_activity TYPE aktyp.
* Daten in deine globale Struktur schreiben.
MOVE-CORRESPONDING xs_lfm1 TO "deine Struktur".
* Aktivitätstyp in globale Variable schreiben
->
ENDFORM. "SET_DATA

Und diese baust du dann in die Methoden ein:

* unter GET_DATA:
PERFORM GET_DATA IN PROGRAM "dein Programm" CHANGING S_LFM1 .

* unter SET_DATA:
PERFORM SET_DATA IN PROGRAM "dein Programm" USING I_LFM1 I_ACTIVITY.

VG
Alma59
...
...
 
Posts: 134
Joined: Tue Jul 08, 2008 10:35 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Artur3189 » Wed Aug 13, 2014 12:52 pm

Hallo,
Danke für Die Antwort. Allerdings scheine ich noch immer auf dem Schlauch zu stehen.
Ich erhalte einen Kurzdump, bzw bei möglicher Korrektur erfolgt keine Datenspeicherung.

Hier mein kurzer Quellcode:
tabelle kna1
append: zkna1
Feld: zbemerkungen

*******
programm: Z_KUNDENSTAMM_ENH

FORM get_data CHANGING zkna1 STRUCTURE kna1.
* Daten aus deiner Struktur übergeben
MOVE-CORRESPONDING zKNA1 TO kna1.
ENDFORM. "GET_DATA

FORM set_data USING zkna1 STRUCTURE kna1
xv_activity TYPE aktyp.
* Daten in deine globale Struktur schreiben.
MOVE-CORRESPONDING zkna1 TO kna1.
* Aktivitätstyp in globale Variable schreiben
kna1-zbemerkungen = zkna1-zbemerkungen.
ENDFORM. "SET_DATA
*****

PERFORM GET_DATA IN PROGRAM Z_KUNDENSTAMM_ENH CHANGING S_KNA1 .
PERFORM SET_DATA IN PROGRAM Z_KUNDENSTAMM_ENH USING S_KNA1 I_ACTIVITY.

Gruss,
Michi.
Artur3189
...
...
 
Posts: 103
Joined: Wed Oct 22, 2003 7:23 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Alma59 » Wed Aug 13, 2014 1:28 pm

Erstelle dir im Programm Z_KUNDENSTAMM_ENH eine globale Struktur
DATA: gs_kna1 TYPE kna1.

Jetzt holst du dir die Daten aus dem Standardprogramm in dein Programm
FORM set_data USING zkna1 STRUCTURE kna1
xv_activity TYPE aktyp.
MOVE-CORRESPONDING zkna1 TO gs_kna1 .
ENDFORM. "SET_DATA

In deinem PBO des Dynpros kann du z.b dein Feld mappen
gs_kna1-zbemerkungen -> in dein Dynprofeld (kna1-zbemerkungen)

In deinem PAI des Dynpros mappst du es wieder zurück
dein Dynprofeld (kna1-zbemerkungen) -> gs_kna1-zbemerkungen

In der Methode wird dann alles wieder in das Standardprogramm zurück geschrieben
FORM get_data CHANGING zkna1 STRUCTURE kna1.
MOVE-CORRESPONDING gs_kna1 TO zkna1.
ENDFORM. "GET_DATA

Es bleibt die frei anstatt der Form-Routine auch einen eigene FUBA aufzurufen.

VG
Alma59
...
...
 
Posts: 134
Joined: Tue Jul 08, 2008 10:35 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Artur3189 » Wed Aug 13, 2014 2:28 pm

Alles vorgenommen. Leider kein Erfolg.
Nach Eingabe im neuen Feld und Enter verschwindet plötzlich die Eingabe. Diese wird nicht mehr gehalten.
dynprofeld: KNA1-ZBEMERKUNGEN
Komischerweise wird der Status (set screen) auch nicht mehr durchlaufen, so dass bei XD03 das Feld eingabebereit ist.
if t020-aktyp = 'A'. .... " -----> Screen-input = 0.

*******************
PROGRAM Z_KUNDENSTAMM_ENH.
tables: t020, kna1.
DATA: gs_kna1 TYPE kna1.

FORM set_data USING zkna1 STRUCTURE kna1
xv_activity TYPE aktyp.
MOVE-CORRESPONDING zkna1 TO gs_kna1 .
ENDFORM. "SET_DATA

FORM get_data CHANGING zkna1 STRUCTURE kna1.
MOVE-CORRESPONDING gs_kna1 TO zkna1.
ENDFORM. "GET_DATA
*********************

MODULE FELDER OUTPUT.
gs_kna1-zbemerkungen = kna1-zbemerkungen.
ENDMODULE.

MODULE USER_COMMAND_9000 INPUT.
kna1-zbemerkungen = gs_kna1-zbemerkungen.
ENDMODULE.
Artur3189
...
...
 
Posts: 103
Joined: Wed Oct 22, 2003 7:23 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Alma59 » Wed Aug 13, 2014 2:58 pm

Mache das mal weg:
MODULE USER_COMMAND_9000 INPUT.
kna1-zbemerkungen = gs_kna1-zbemerkungen.
ENDMODULE.

und im PAI:
chain.
field: kna1-zbemerkungen.
module get_data_9000 on chain-request
endchain.

Im Module get_data_9000
kna1-zbemerkungen = gs_kna1-zbemerkungen.

Ich weiß nicht du dein Dynpro angelegt hast, die Methode GET_TAXI_SCREEN ist auch gefüllt ?
Es kann ja nicht sein das dein PBO nicht durchlaufen wird ....

VG
Alma59
...
...
 
Posts: 134
Joined: Tue Jul 08, 2008 10:35 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Artur3189 » Wed Aug 13, 2014 3:21 pm

Anlegen / Ändern mit Eintrag funktionieren nun. Die Daten werdern weggeschrieben.

Nur das Einlesen klappt noch nicht. Im Programm wird aber sauber an die gs_kna1
übergeben, dass habe ich debuggt.

get taxi screen:
case i_taxi_fcode.
when 'Z01'.
e_screen = '9000'. "Eart + Objekt
e_program = 'Z_KUNDENSTAMM_ENH'.
e_headerscreen_layout = 'B'.
endcase.
Artur3189
...
...
 
Posts: 103
Joined: Wed Oct 22, 2003 7:23 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Artur3189 » Wed Aug 13, 2014 4:03 pm

Andersherum, dann gehts mit dem Einlesen / Speichern
PBO:
MODULE FELDER OUTPUT.
*gs_kna1-zbemerkungen = kna1-zbemerkungen.
kna1-zbemerkungen = gs_kna1-zbemerkungen.
ENDMODULE.

PBI:
MODULE GET_DATA_9000 INPUT.
*kna1-zbemerkungen = gs_kna1-zbemerkungen.
gs_kna1-zbemerkungen = kna1-zbemerkungen.
ENDMODULE.

Bleibt nur noch das Problem, dass bei PBO und XD03 das feld dennoch eingabebereit ist.
Artur3189
...
...
 
Posts: 103
Joined: Wed Oct 22, 2003 7:23 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Artur3189 » Wed Aug 13, 2014 4:20 pm

Der PBO wird zwar durchlaufen allerdings ist kein EIntrag in der T020 mehr zu finden.

if t020-aktyp = 'A'. " XD03
Loop at screen.
Screen-input = 0.
Modify screen.
Endloop.
endif.

if t020-aktyp = 'H'
or t020-aktyp = 'V'. " XD01 / XD02
Loop at screen.
Screen-input = 1.
Modify screen.
Endloop.
endif.
Artur3189
...
...
 
Posts: 103
Joined: Wed Oct 22, 2003 7:23 am

Re: Datenübergabe BAdi Z_CUSTOMER_ADD_DATA_CS

Postby Alma59 » Wed Aug 13, 2014 6:01 pm

Du musst die im SET_DATA übergebene Aktivität XV_ACTIVITY nehmen und global Puffern um über das Haupt-
Programm zu wissen ob du im Anzeigen USW. bist.

FORM set_data USING zkna1 STRUCTURE kna1
xv_activity TYPE aktyp.
Alma59
...
...
 
Posts: 134
Joined: Tue Jul 08, 2008 10:35 am

Next

Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 4 guests