SAP Jobsuche bei DV-Treff
chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre

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

pushover
vor 14 Jahre

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

chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre

Hallo pushover,

danke für die Info. Sagst du mir noch wie?

Gruss
Christian

joachimn
vor 14 Jahre

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

chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre

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

joachimn
vor 14 Jahre

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

chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre

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

pushover
vor 14 Jahre

Hallo Christian,

schau Dir mal den OSS-HW 842318 an. Vielleicht kann dieser Dir weiterhelfen.

Gruß pushover


SAP ECC60

Anwendungsbetreuer FI/CO

micha61
vor 14 Jahre
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
joachimn
vor 14 Jahre

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

 

chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre

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.

joachimn
vor 14 Jahre

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

micha61
vor 14 Jahre
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

joachimn
vor 14 Jahre

danke für die info...

 

schönes wochenende

chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre

Hi Leute,

danke für euere Hilfe.
Mein Entwickler hat das Problem gefunden, er hatte den USER Exit falsch klassifiziert. Nun gehts.

Gruss

Chris

chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre

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

joachimn
vor 14 Jahre

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

 

chridü
  • chridü
  • SAP Forum - User Thema Starter
vor 14 Jahre
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