Reply: 7

gelöst!! BTE 2040 - Wo wird der aufgerufen?

Moin,
vielleicht sehe ich den Wald vor lauter Bäumen schon nicht mehr:
Ich habe einen "neuen" BTE 2040 angelegt, um "nur" kreditorische Zahlläufe für einen bestimmten Buchungskeis auszusteueren, damit die Zahlungsavise immer per Mail gesendet werden.
Ich bin mir sicher, dass der BTE selber korrekt ist. Das Coding ist ja auch überschaubar:
FUNCTION ZFI_1110_BTE_00002040_NEU.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_REGUH) TYPE REGUH
*" CHANGING
*" VALUE(C_FINAA) TYPE FINAA
*"----------------------------------------------------------------------
*************************************************************************
*
* Avise, die durch den Zahllauf F110 erzeugt werden:
*
* Ist im Lieferantenstamm eine eMailadresse gepflegt, dann wird das AVIS
* per eMail verschickt.
*
*************************************************************************
DATA: h_intad TYPE lfb1-intad.

IF NOT i_reguh-lifnr IS INITIAL.
SELECT SINGLE intad FROM lfb1 INTO h_intad
WHERE lifnr = i_reguh-lifnr
AND bukrs = i_reguh-zbukr.
ENDIF.
IF sy-subrc = '0'.
* Bei existierender eMailadresse
IF NOT h_intad IS INITIAL.
c_finaa-nacha = 'I'.
c_finaa-tdschedule = 'IMM'.
c_finaa-intad = h_intad.
c_finaa-namep = 'Z1110AVIS'.
ENDIF.
ENDIF.
ENDFUNCTION.
Der BTE ist aktiviert.
Wir haben die BTEs zusätzlich in einer Z-Tabelle eingetragen, damit pro Buchungskreis nur die relevanten verwendet werden können.
Wenn ich einen Zahllauf starte, wird auch ein Avis erstellt, aber leider nur auf den Drucker geschickt...
Muss ich irgendwo im aufrufenden Programm (das wäre das Standardprogramm RFFOAVIS_FPAYM) noch bekanntgeben, dass ich ein neues BTE benutze? Und wenn ja: wo wird das gemacht?
Vorab schon Mal vielen Dank für alle Hinweise. Ich stehe im Moment echt auf dem Schlauch.
Grüße
der Prof.

Zuletzt bearbeitet am 26.09.17 13:46

You must be logged in to post a reply.

Login now

7 Answers

  • MrBojangles
    MrBojangles
    Hallo Prof,
    die BTEs machst Du ja über die Transaktion FIBF – Einstellungen – Produkte – eines Kunden...
    bzw.
    Transaktion FIBF – Einstellungen – Prozess-Bausteine – eines Kunden...
    dem System bekannt. Eine Schritt-für-Schritt-Anleitung findest Du an div. Stellen im Netz unter anderem hier: http://sapmandoo.over-blog.de/article-au...-119976912.html, Kapitel 4ff.
    Was mich etwas irritiert ist die Sache mit der Z-Tabelle, die Du erwähnt hast. Habt ihr da was verbastelt?
    Weiterhin viel Freude mit SAP...
    Cheers
    MrB.
    Blog
  • Professor031
    Professor031 (Author)
    Hallo MrB.,
    danke für deine schnelle Antwort. Wir haben in der FIBF für das BTE 2040 nur folgenden Eintrag:
    00002040 Z_BTE_00002040 ZAVISE
    Dann kommt aus diesem FuBa folgendes Codung zum Tragen:
    DATA: p_callstack TYPE abap_callstack,
    p_et_callstack TYPE sys_callst,
    l_callstack LIKE LINE OF p_callstack,
    p_zfi_userexits TYPE zfi_userexits.
    CALL FUNCTION 'SYSTEM_CALLSTACK'
    EXPORTING
    max_level = 1
    IMPORTING
    callstack = p_callstack
    et_callstack = p_et_callstack.
    READ TABLE p_callstack INDEX 1 INTO l_callstack.
    SELECT SINGLE * FROM zfi_userexits INTO p_zfi_userexits
    WHERE source = l_callstack-include
    AND bukrs = i_reguh-zbukr.
    * Aktiven FUBA aufrufen
    IF sy-subrc = 0 AND p_zfi_userexits-active = 'X' AND ( NOT p_zfi_userexits-target IS INITIAL ).
    CALL FUNCTION p_zfi_userexits-target
    EXPORTING
    i_reguh = i_reguh
    tables
    t_fimsg = t_fimsg
    changing
    c_finaa = c_finaa.
    ENDIF.
    In der Tabelle "zfi_userexits" habe ich dann den eigentlichen FuBa eingetragen (buchungskreisabhängig) und das "X" für "aktiv" gesetzt. Auf diese Weie muss nicht immer die FIBF ausgeführt werden, denke ich... das macht die ganze Sache pflegeleichter.
    Da der FuBa in der besagten Tabelle aktiviert ist, sollte doch alles funzen. Oder habe ich da noch einen Denkfehler bzw. fehlt noch etwas an Codung in "meinem" FuBa, siehe meine erste Mail?
    Vielen Dank für die Unterstützung.
    Viele Grüße
    der Prof.
  • MrBojangles
    MrBojangles
    Hallo Prof,
    lässt sich aus der Ferne schwer sagen, weil das Ganze ja offenbar auch noch abhängig vom rufenden Programm ("Call-Stack)" ist. So ein Konstrukt ist mir noch nicht untergekommen... na ja - jedem das seine. Setz doch mal den Breakpoint in dem FUBA, der in der FIBF hinterlegt ist und starte das Avis-Programm im Dialog. Dann siehst Du ja, ob Dein buchungskreisabhängiger FuBa durchlaufen wird und welches Ausgabemedium er zurückliefert. Das Coding sieht für mich ok aus, ich würde vielleicht vorsichtshalber in dem Fall, dass keine EMail gefunden wird, als Ausgabemedium 1 (Druck) zurückliefern, damit der Rückgabewert in jedem Fall determiniert ist.
    Weiterhin viel Freude mit SAP...
    Cheers
    MrB.
    Blog
  • asaph
    asaph
    Hallo Prof.
    1) Was sagen die Protokolle des Zahllaufs (erweitertes Prot. anschalten)
    2) Hast du den Aufruf deines Fuba's debugt ( am besten Endlosschleife einbauen , welche man zur Laufzeit beenden kann...)?
    3) Funktioniert der in der FIBF hinterlegt Fuba, wenn du den Aufruf der Z-Tabelle und Euerer weiteren Verarbeitung einmal aussternst?
    lg
    Andreas
  • Professor031
    Professor031 (Author)
    Hallo zusammen,
    vielen Dank für die Antworten.
    Ich habe den Breakpoint in dem FuBa gesetzt, er wird gar nicht durchlaufen. Ich denke, dass MrB. Recht hat: es liegt an dem aufrufenden Programm... Mist. Das mit dem Hinweis auf den Verweis, wenn keine Mail => zurück zum Druck, sprich "finaa-nacha = 1" ist sehr gut, vielen Dank, das baue ich gleich vorsichtshalber noch ein.
    Da sich das aufrufende Programm in einem FuBa nicht mehr ändern lässt, muss ich nun wohl oder übel das Codimng auf einen neuen FuBa kopieren und das ganze Spielchen neu starten.
    Gem. Aussage der Kollegen wird das mit der Z-Tabelle gemacht, damit man die FuBas buchungskreisabhängig einsetzen kann, denn in der FIBF wird ja lediglich der FuBa als solches eingetragen, egal, für welchen Buchungskreis... wie auch immer.
    Ich werde dann mein Göück versuchen und berichten, wie es weiter geht.
    Grüße
    der Prof.
  • MrBojangles
    MrBojangles
    Professor031:
    Gem. Aussage der Kollegen wird das mit der Z-Tabelle gemacht, damit man die FuBas buchungskreisabhängig einsetzen kann, denn in der FIBF wird ja lediglich der FuBa als solches eingetragen, egal, für welchen Buchungskreis...

    Ja - da komme ich ja auch noch mit. Ich kapier nur nicht, warum dann noch das rufende Programm abgefragt wird, es ist doch bereits ein definierter Aufrufzeitpunkt, nämlich der Event 2040... na ja - werden sich die Entwickler schon was bei gedacht haben. Jedenfalls viel Erfolg, Prof!
    Weiterhin viel Freude mit SAP...
    Cheers
    MrB.
    Blog
  • Professor031
    Professor031 (Author)
    Hallo,
    ... so: das hat geklappt! Es lag tatsächlich noch an dem aufrufenden Programm. Ich habe das BTE mit der Korrektur neu aufgesetzt und nun funktioniwert alles wie erwartet.
    Vielen Dank nochmals an die Helfer.
    Bis bald und viele Grüße
    der Prof.