Testlauf bei der Ausführung mehrerer BAPIs hintereinander

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Testlauf bei der Ausführung mehrerer BAPIs hintereinander

Beitrag von FelixFICO (ForumUser / 22 / 9 / 0 ) »
Liebes Forum,

ich denke, dass meine Anforderung nicht lösbar ist. Da das letzte für mich scheinbar nicht lösbare Problem von Euch jedoch gelöst wurde, frage ich hier trotzdem einmal nach Ideen.

Anforderung: Ich muss aus einem Excel-File Finanztransaktionen erstellen. Dazu müssen zwei BAPIs aufgerufen werden. Der erste BAPI_FTR_IRATE_CREATE legt die Geschäfte an. Der zweite BAPI BAPI_FTR_MAINFLOW_CREATE fügt Bewegungen hinzu.

Der zweit BAPI benötigt allerdings ein Geschäft als Input. Im Testlauf habe ich jetzt das Problem, dass ich zwar den ersten BAPI, nicht jedoch den zweiten BAPI testen kann. Im Testlauf legt der erste BAPI kein Geschäft an, das ich an den zweiten BAPI übergeben könnte.

Daher ist meine Annahme, dass ich im Testlauf nur den ersten Schritt testen kann. Falls das so ist lasse ich das so und gebe im Testlauf eine entsprechende Meldung aus, kein Problem. Falls es doch eine Möglichkeit gibt würde es mich jedoch interessieren.

Danke für Euren Input!

Viele Grüße,
FelixFICO

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Testlauf bei der Ausführung mehrerer BAPIs hintereinande

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Wie genau sieht dein Test aus?
rufst du die Bausteine aus Excel heraus nacheinander auf?
hast du einen Funktionsbaustein/ Programm, der beide Bausteine ausführt?
Testest du manuell in der SE37?

Re: Testlauf bei der Ausführung mehrerer BAPIs hintereinande

Beitrag von FelixFICO (ForumUser / 22 / 9 / 0 ) »
ewx hat geschrieben:Wie genau sieht dein Test aus?
rufst du die Bausteine aus Excel heraus nacheinander auf?
hast du einen Funktionsbaustein/ Programm, der beide Bausteine ausführt?
Testest du manuell in der SE37?
Hallo ewx,

ich habe einen Parameter p_test auf dem Selektionsbildschirm. Den BAPI rufe ich dann folgendermaßen auf:

CALL FUNCTION 'BAPI_FTR_IRATE_CREATE'
EXPORTING
interestrateinstrument = gs_deals-s_irate_instr
generalcontractdata = gs_deals-s_general_data
testrun = p_test
IMPORTING
financialtransaction = gs_deals-transaction
companycode = gs_deals-companycode
TABLES
return = gt_bapiret. "Rückgabe der Meldungen

Das Excel transferiere ich erst in eine interne Tabelle, und dann rufe ich je Geschäft einmal das BAPI BAPI_FTR_IRATE_CREATE und dann ein oder mehrmals das BAPI BAPI_FTR_MAINFLOW_CREATE auf. Das Problem ist, dass das zweite BAPI ein Geschäft als IMPORTING Parameter voraussetzt. Wenn ich das erste BAPI im Testlauf ausführe habe ich aber leider kein Geschäft das ich an das zweite BAPI übergeben könnte.

Viele Grüße,
FelixFICO

Re: Testlauf bei der Ausführung mehrerer BAPIs hintereinande

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Dann läuft der Aufruf des 1. BAPIs verkehrt. Der BAPI MUSS ein Ergebnis zurück liefern.
Mit BAPI_COMMIT_WORK wird das ermittelte Ergebnis auf die DB geschrieben, aber der BAPI muss den Wert, den er ermittelt/ generiert hat, zurück liefern.

Hast du GT_RETURN ausgewertet?

Re: Testlauf bei der Ausführung mehrerer BAPIs hintereinande

Beitrag von FelixFICO (ForumUser / 22 / 9 / 0 ) »
Ja den gt_return habe ich ausgewertet. Das Problem ist, dass der BAPI im Testlauf keine Geschäftsnummer sondern nur "\INTERN\" zurück liefert. Damit kann dann der nächste BAPI nichts anfangen. Im Echtlauf würde es eine Geschäftsnummer zurückgeben.

Re: Testlauf bei der Ausführung mehrerer BAPIs hintereinande

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Gibt es denn eine inhaltliche Beschränkung bei der Zuordnung?
Also könnte es sein, dass eine BEWEGUNG nur bei bestimmten GESCHÄFTEN zulässig ist?

Ansonsten würde ich dir raten, ein vorhandenes Dummy-GESCHÄFT zu verwenden.

Bzw.: Was könnte denn bei der Erzeugung eines GESCHÄFTS schief laufen?
Bzw2.: Was hindert dich daran, den 1. BAPI ohne Testflag aufzurufen, aber zwecks Test keinen COMMIT abzusetzen?
Wird ein Nummernkreis für GESCHÄFT benötigt, so dass bei jedem "Echt-aufruf" eine Nummer verloren ginge??

Re: Testlauf bei der Ausführung mehrerer BAPIs hintereinande

Beitrag von FelixFICO (ForumUser / 22 / 9 / 0 ) »
ewx hat geschrieben:Gibt es denn eine inhaltliche Beschränkung bei der Zuordnung?
Also könnte es sein, dass eine BEWEGUNG nur bei bestimmten GESCHÄFTEN zulässig ist?
Theoretisch schon, im Echtlauf funktioniert aber alles. D.h. daran sollte es nicht liegen.
ewx hat geschrieben:Ansonsten würde ich dir raten, ein vorhandenes Dummy-GESCHÄFT zu verwenden.
Das würde zu Fehlermeldungen führen, da die Bewegungen von den Beträgen genau zum Geschäft passen müssen.
ewx hat geschrieben:Bzw.: Was könnte denn bei der Erzeugung eines GESCHÄFTS schief laufen?
Die Erzeugung des Geschäfts kann ich ja noch im Testlauf testen. Erst bei den Bewegungen geht das nicht mehr. Theoretisch könnte es bei falschen Bewegungen nun passieren, dass das Geschäft im Echtlauf angelegt wird. Eine oder mehrere Bewegungen allerdings nicht.
ewx hat geschrieben:Bzw2.: Was hindert dich daran, den 1. BAPI ohne Testflag aufzurufen, aber zwecks Test keinen COMMIT abzusetzen?
Wird ein Nummernkreis für GESCHÄFT benötigt, so dass bei jedem "Echt-aufruf" eine Nummer verloren ginge??
Das hatte ich mir auch schon überlegt, aber die Nummernkreislücken habe ich dabei auch festgestellt. Ich denke, dass ich den Testlauf lieber funktionell einschränke als im Testlauf bereits echte Belegnummern zu vergeben.

Re: Testlauf bei der Ausführung mehrerer BAPIs hintereinande

Beitrag von FelixFICO (ForumUser / 22 / 9 / 0 ) »
Hallo nochmal,

anscheinend scheint es für diesen Fall leider keine einfache Lösungsmöglichkeit zu geben.

Hier wurde das ganze auch schon diskutiert:
https://scn.sap.com/thread/2004950
But, as I said in my first answer, if one BAPI needs data created/changed from previous BAPI, if it doesn't work (saying "object does not exist"), then you're stuck and you have no other choice than committing between calls , so there's no solution to your issue except doing extra work : for instance, storing the IDs of created objects in database so that to allow recovery from the failed BAPI. If you really want to "rollback" the created objects, then you should see if some BAPIs exist to cancel these objects.
Ich werde daher den zweiten BAPI im Testlauf nicht testen und eine entsprechende Meldung ausgeben.

Viele Grüße,
FelixFICO


Seite 1 von 1

Vergleichbare Themen

2
Antw.
1677
Views
Aufruf mehrerer Programme hintereinander
von mip » 10.04.2008 14:24 • Verfasst in ABAP® für Anfänger
5
Antw.
5522
Views
Warenausgang buchen im Testlauf
von Legxis » 30.07.2018 10:27 • Verfasst in ABAP® Core
7
Antw.
1795
Views
Testlauf erforderlich vor dem Echtlauf
von Mockingbird » 08.01.2020 15:30 • Verfasst in ABAP® Core
3
Antw.
2179
Views
Sapscript: Includes hintereinander schreiben
von RiffRaff » 19.05.2005 15:52 • Verfasst in ABAP® Core
3
Antw.
1917
Views
Zwei Ikonen in einem Feld hintereinander
von sapdepp » 30.05.2016 10:44 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 616
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2242
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8834