SAP zu langsam

Rund um Java und SAP®.

SAP zu langsam

Postby Finlay5038 » Mon Nov 10, 2003 10:28 am

Judden Morgen zusammen,

ich habe schon wieder (noch immer :D ) Probleme mit JCO oder lieber gesagt mit SAP.

Ich erstelle in Java einen Auftrag und bekomme ja da eine Auftragsnummer zurück. Mit dieser Nummer schmeiße ich an mein Java-Proggie ein Event, wodurch nun mehrere Threads angesprochen werden. Ein Thread aktualisiert beispielsweise die Anzeige der Order, über die Nummer wird gleich ein neuer SAP-Baustein aufgerufen. Jedoch klappt dies abundzumal, aber öfters bekomme ich auch NullpointerException (Fehler beim Aufruf von Thread/2 Nullpinter.....).

Ich vermute mal, dass da irgendwo SAP eine Rolle spielt. Ich benutzte ja die Nummer für eine neue Funktion, vielleicht sind die Daten dann ja noch nicht da???????

Hat jemand von Euch eine Ahnung warum und wieso das so ist, wie es ist und wie man dem entgegnen kann?

Vielen Dankl für Eure Hilfe.

Unreal_Programmer
Finlay5038
..
..
 
Posts: 23
Joined: Mon May 19, 2003 11:13 am

Postby Christian4831 » Mon Nov 10, 2003 11:28 am

Hallo Unreal,

kann es sein, dass du mit deiner Threadsynchronisation durcheinander kommst? Wahrscheinlich ist dein 2. Lesethread schneller als dein 1. Thread.

Wahrscheinlich wäre es besser dein Problem nicht nebenläufig sondern eher sequentiell zu lösen!?! Die Kommunikation über JCo erzeugt nun einmal etwas overhead. Des weiteren ist es sehr wahrscheinlich, dass der Baustein / BAPI ab und zu einfach zu lange braucht..

viele Grüsse,

Tim
Christian4831
..
..
 
Posts: 91
Joined: Mon Dec 02, 2002 7:33 pm

Postby Erich410 » Mon Feb 09, 2004 2:41 pm

Hallo,

ich nehme mal an, Du meinst Verkaufsaufträge.

Wenn Du einen Auftrag an SAP schickst, kann es sein, daß Du schon eine Numer zurückbekommst, bevor der Auftrag auf der Datenbank verbucht ist.

Wenn Du gleich darauf eine Leseroutine anschmeißt, kannes wieder sein, daß der Auftrag noch nicht auf der Datenbank ist.

Eigentlich muß man nach einem Schreibauftrag noch das Bapi BAPI_COMMIT hinterherschicken, damit wirklich verbucht wird.

mfg.
babap
Erich410
....
....
 
Posts: 680
Joined: Thu Feb 05, 2004 4:22 pm

Postby ewx » Fri Feb 27, 2004 4:15 pm

Hallo Unreal,

die Auftträge werden per Verbuchungsbaustein auf die Datenbank geschrieben. Da kann es dann tatsächlich sein (häufig sogar), dass der Verbucher mehrere Sekunden benötigt. Entweder sind keine freien Verbuchungsprozesse im System vorhanden, so dass die Verbuchung selbst warten muss, oder das System ist einfach zu langsam, um den Beleg "in echtzeit" zu verbuchen.

Ich weiss nicht, wie es mit JCO aussieht, aber im ABAP kann man
SET UPDATE TASK LOCAL setzen, was bewirkt, dass der Verbucher im selben Task abgearbeitet wird.
Wenn man dann mit COMMIT WORK AND WAIT. die Verbuchung abschliesst, kann man sicher sein, dass der Verbucher auch zu ende verbucht hat. Es sei denn, die Verbuchung bricht wegen irgendwelchen Gründen ab. Aber dann hat der Commit Work den SUBRC > 0.

Gruß, Enno.
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Willy1492 » Tue Mar 02, 2004 12:29 am

COMMIT WORK AND WAIT wartet aber m.E. nur auf die V1-FBs (Verbuchung mit Start sofort).
Der eine oder andere FB zum Fortschreiben von Statistik-Informationen oder Änderungsbelegen kann aber als V2-Verbuchungs-FB definiert sein.
Neben COMMIT WORK AND WAIT hat die Unterscheidung V1/V2 noch Auswirkung auf die Freigabe der Sperren und darauf, ob bei einem Fehler ein ROLLBACK aller bisherigen Änderungen vorangegangener FBs erfolgt.
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Erich410 » Fri Mar 05, 2004 2:29 pm

Hallo,

ich habe das Problem bei einer von mir geschriebenen SD-Schnittstelle.

Hier werden mehrere Aufträge mit Bezug zueinander angelegt und dann auch noch fakturiert.

Die Belegvernküpfung geht nur dann, wenn der Vorgängerbeleg wirklich echt in der Datenbank angekommen ist.

Ich habe deshalb eine Warteschleife programmiert, die jede Sekunde mal nachsieht, ob das Vorgängerdokument (dessen Nummer ich schon kenne) endlich auf der Datenbank ist.

Genauso sieht es bei der Fakturierung aus (erst mal nachsehen, ob die Aufträge da sind).

mfg.
babap
Erich410
....
....
 
Posts: 680
Joined: Thu Feb 05, 2004 4:22 pm


Return to Java & SAP®

Who is online

Users browsing this forum: No registered users and 2 guests