|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Hallo zusammen,
ich habe von meinem Entwickler einen User Exit schreiben lassen:
_________________
FORM u124 CHANGING b_result. * l_bukrs TYPE bukrs * l_belnr LIKE bkpf-belnr * l_gjahr TYPE gjahr.
TABLES: bsec. "One-Time Account Data Document Segment
TYPES: BEGIN OF ty_bsec, bukrs LIKE bsec-bukrs, belnr LIKE bsec-belnr, gjahr LIKE bsec-gjahr, bankn LIKE bsec-bankn, bankl LIKE bsec-bankl, END OF ty_bsec.
STATICS: i_bsec_std TYPE STANDARD TABLE OF ty_bsec WITH NON-UNIQUE KEY bukrs belnr gjahr,
w_gjahr TYPE gjahr, w_gjahr_1 TYPE gjahr.
FIELD-SYMBOLS: <bsec> TYPE ty_bsec.
b_result = b_false.
CHECK NOT bsec-bankl IS INITIAL AND NOT bsec-bankn IS INITIAL.
* Current fiscal year CALL FUNCTION 'FI_PERIOD_DETERMINE' EXPORTING i_budat = sy-datum i_bukrs = bkpf-bukrs IMPORTING e_gjahr = w_gjahr EXCEPTIONS fiscal_year = 1 period = 2 period_version = 3 posting_period = 4 special_period = 5 version = 6 posting_date = 7 OTHERS = 8. CHECK sy-subrc EQ 0.
* Previous fiscal year w_gjahr_1 = w_gjahr - 1.
* Get lines from BSEC SELECT bukrs belnr gjahr bankn bankl FROM bsec INTO TABLE i_bsec_std WHERE bukrs EQ bkpf-bukrs AND belnr BETWEEN '180000000' AND '189999999' AND gjahr BETWEEN w_gjahr_1 AND w_gjahr AND bankn EQ bsec-bankn AND bankl EQ bsec-bankl. CHECK sy-subrc EQ 0.
* Use first line READ TABLE i_bsec_std ASSIGNING <bsec> INDEX 1. CHECK sy-subrc EQ 0.
* Document number to link area * l_bukrs = <bsec>-bukrs. * l_belnr = <bsec>-belnr. * l_gjahr = <bsec>-gjahr.
b_result = b_true.
ENDFORM.
_______________________________________________
Dieser soll bei der Buchung auf einen CPD-Kreditor prüfen, ob es die Bankdaten in den letzten 2 Jahren schonmal gab.
Leider sehe ich diesen Exit nur bei der "Komplettbeleg" Prüfung, nicht bei der Buchungszeilen Prüfung. Hat jemand zufälli geine Idee??
Gruss
Christian
|
|
 Rang: Guru Gruppen: Mitglied
Beigetreten: 4/24/2009 Beiträge: 283 Ort: Weißenburg
|
Hallo Christian,
wenn Du die Validierung in der Belegposition sehen möchtes, dann muss diese bzw. der USER-Exit U124 auch der Belegposition zugeordnet sein.
Gruß pushover
SAP ECC60 Anwendungsbetreuer FI/CO
|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Hallo pushover,
danke für die Info. Sagst du mir noch wie?
Gruss Christian
|
|
 Rang: Profi Gruppen: Mitglied
Beigetreten: 11/16/2009 Beiträge: 168 Ort: Nürnberg
|
Hallo Christian,
in der Validierung gibt es verschiedene Zeitpunkte. Wenn man die Transaktion GGB0 aufruft, gibt es bei FInanzbuchhaltung 3 Zeitpunkte: Belegkopf, Belegposition und kompletter Beleg.
D.h. Deine Prüfung müsste dann zum Zeitpunkt 2 durchgeführt werden; heute ist das Zeitpunkt 3.
Grüße
Joachim
|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Hi,
ich versuche ja, die Validierung für die Line Items zu erzeugen. Leider funktioniert dies aber nicht. Kannst du mir sagen, was ich ändern muss?
gruss
|
|
 Rang: Profi Gruppen: Mitglied
Beigetreten: 11/16/2009 Beiträge: 168 Ort: Nürnberg
|
Hallo Christian,
die Vorgehensweise beim Erstellen der Validierung ist diesselbe wie für den kompletten Beleg, den Ihr ja schon habt wie Du schreibst.
Bei der Prüfung müsste dann entsprechend der User-Exit aufgerufen werden.
Mehr kann ich Dir von der Ferne leider nicht sagen.
Grüße
Joachim
|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Hallo Joachim,
ich habe die Bedingung schon erstellt. Dann will ich die Prüfung eingeben. Hier sehe ich alle möglichen Exits nur den meinen nicht. Die Frage ist, woran kann das liegen?
Gruss
|
|
 Rang: Guru Gruppen: Mitglied
Beigetreten: 4/24/2009 Beiträge: 283 Ort: Weißenburg
|
Hallo Christian,
schau Dir mal den OSS-HW 842318 an. Vielleicht kann dieser Dir weiterhelfen.
Gruß pushover
SAP ECC60 Anwendungsbetreuer FI/CO
|
|
Rang: Lehrling Gruppen: Mitglied
Beigetreten: 7/20/2010 Beiträge: 2 Ort: Kiel
|
Hallo, der springende Punkt ist vermutlich, dass die Routine dem SAP-System bekannt gemacht werden muss durch entsprechende Programmzeilen in der Form GET_EXIT_TITLES, wie in dem schon erwähnten Hinweis beschrieben.
Ich bin auf der Suche nach einer Antwort auf eine andere Frage auf diesen Thread gestoßen: Ich möchte Eingaben im Dynpro 'Abweichender Zahlungsempfänger' validieren, um eine Änderung der Bankverbindung besonders zu behandeln. Das BSEC-Segment mit diesen Daten wird jedoch in der Validierung gar nicht angeboten. Daher bin ich über die TABLES-Anweisung und CHECK auf BSEC-Inhalte gestolpert. Funktioniert das tatsächlich so?
Danke und Gruß micha61
|
|
 Rang: Profi Gruppen: Mitglied
Beigetreten: 11/16/2009 Beiträge: 168 Ort: Nürnberg
|
Hallo micha61,
den Punkt mit CPD Kreditoren hatte ich auch schon, wo wir den Zahlweg substituieren möchten, jedoch keine BSEC-Daten (Land) in der Substitution angeboten bekommen (ich vermute analog zu Deinem Validierungswunsch).
Das mit Tables und Check habe ich nicht verstanden. Die Anweisungen sind schon klar, aber wie die im Exit helfen sollen nicht. Es gibt ein BTE 00001120 im OPEN FI, das klingt vielversprechend.
Grüße
Joachim
|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Ich kann dir leider nicht sagen was unser Entwickler damit bezwecken will.
Ja, es ist schon blöd, dass man nicht direkt auf die BSEC validierung oder substituieren kann.
|
|
 Rang: Profi Gruppen: Mitglied
Beigetreten: 11/16/2009 Beiträge: 168 Ort: Nürnberg
|
Ja. Ich bin schonmal weitergekommen, indem ich über den BTE 1120 aufgrund der BESC Inhalte (bankland) den Zahlweg in der BSEG sustituieren kann. Zwar ist ZLSCH nicht in der Tabelle, aber über einen Append auf die Tabelle BSEGSUB mit gleichem Namen ZLSCH greift die Substitution aus dem BTE.
Grüße
Joachim
|
|
Rang: Lehrling Gruppen: Mitglied
Beigetreten: 7/20/2010 Beiträge: 2 Ort: Kiel
|
Hallo, jetzt hatte ich Gelegenheit, mir auch mal den BTE 1120 näher anzuschauen. Zwei Erkenntnisse für alle, die es interessiert:
1. Der BTE wird nur beim Buchen aufgerufen, nicht bei Belegänderung.
2. Die BSEC-Inhalte werden bereitgestellt, können aber nicht substituiert werden.
Also leider nicht geeignet für meine Zwecke...
Grüße Michael
|
|
 Rang: Profi Gruppen: Mitglied
Beigetreten: 11/16/2009 Beiträge: 168 Ort: Nürnberg
|
danke für die info...
schönes wochenende
|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Hi Leute,
danke für euere Hilfe. Mein Entwickler hat das Problem gefunden, er hatte den USER Exit falsch klassifiziert. Nun gehts.
Gruss
Chris
|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Hi,
in diesem Zusammenhang noch eine andere Frage.
Weis einer von euch vielleicht wie die Feldbezeichnungen für Bankleitzahl und Konto zur Lauzeit bei einer CPD Buchung sind?
gruss chris
|
|
 Rang: Profi Gruppen: Mitglied
Beigetreten: 11/16/2009 Beiträge: 168 Ort: Nürnberg
|
Hallo chridü,
geh' doch mal in die Transaktion SE11, Datentyp BSEC und dann Anzeigen.
BANKL BANKK CHAR 15 0 Bankschlüssel
BANKN BANKN CHAR 18 0 Bankkontonummer
Grüße
Joachim
|
|
Rang: Geselle Gruppen: Mitglied
Beigetreten: 7/15/2010 Beiträge: 16 Ort: Munich
|
Das Problem ist, dass das nicht sein kann. Denn wenn ich auf einen CPD buche, dann muss ich die adressdaten eingeben und dann schließen sie sich wieder. Und dann werden die ja noch irgendwo gespeichert (nicht in der Datenbank) bevor der Beleg gebucht wird und diesen Ort und diese Feldnamen brauche ich
|
|
|
Guest |