Nummernvergabe aus Tabelle / Sperrkonzept vs Laufzeiten

Getting started ... Alles für einen gelungenen Start.

Nummernvergabe aus Tabelle / Sperrkonzept vs Laufzeiten

Postby Elia3416 » Wed Oct 22, 2014 1:30 pm

Hallo zusammen,

für einen parallelisierten Massendruck sollen Nummern/Verfolgungscodes eines Dienstleisters vergeben werden. Dazu existiert eine Tabelle "Nummernvorrat" mit freien Nummern/Codes:

Nummernvorrat:
MANDT | NUMMER | FIRMA
100 | 4711 | 01
100 | 4718 | 01
100 | 4713 | 02
100 | 4720 | 02
...

Nun möchte ich in einer parallelisierten Verarbeitung eine Nummer aus dem Nummernvorrat auslesen, diese verarbeiten und anschließend den Satz aus der Tabelle (Nummernvorrat) löschen.

Das klappt jedoch bislang nur dann sauber, wenn ich ein Sperrobjekt anlege und beim SELECT einen exklusive Sperre auf die Tabelle lege.

-> Vorteil: eine Nummer kann nicht zweimal verwendet werden
-> Nachteil: Die anderen Jobs aus der Parallelisierung müssen immer warten, bis die Tabelle wieder freigegeben wird. -> doppelte Laufzeit

Hat jemand eine andere/bessere Idee, wie man die exklusive Sperre und damit die Warterei (Laufzeiten) verbessern kann?

Vielen Dank vorab!

Mit freundlichen Grüßen
net
Elia3416
.
.
 
Posts: 3
Joined: Wed Oct 22, 2014 1:30 pm

Re: Nummernvergabe aus Tabelle / Sperrkonzept vs Laufzeiten

Postby Ines3642 » Thu Jan 15, 2015 11:13 pm

Hallo,

Du könntest Dir eventuell die Tabelle vor der Parallelisierung in den Shared-Memory legen, dort dann mit den Tasks darauf zugreifen und nach der Rückkehr aller Tasks die Tabelle aus dem Memory (mit den "gelöschten" Werten) wieder in der DB aktualisieren - vorausgesetzt Du parallelisierst auf exakt einem AppServer.
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Re: Nummernvergabe aus Tabelle / Sperrkonzept vs Laufzeiten

Postby Elia3416 » Wed Jul 15, 2015 11:25 am

Hm, danke für den Tipp. Daran habe ich auch schon gedacht.
Läuft leider auf verschiedenen ApplServerern.

Als letzten Ausweg sehe ich eigentlich nur, eigene Nummernkreise aufzumachen und diese der "CODE-Vorratstabelle" voranzustellen.

Vorratstabelle für CODE:

MANDT| eigNUMKR | CODE| FIRMA
100....| 010000001 | 4711 | 01
100....| 010000002 | 4718 | 01
100....| 020000001 | 4713 | 02
100....| 020000002 | 4720 | 02

So könnte ich mir direkt eine Nummer aus dem eigenen Nummernkreis holen und mit dieser als Schlüsselzugriff in die CODE-Vorratstabelle lesen um einen neuen CODE zu bekommen und diesen Eintrag dort dann auch wieder löschen.

Aber eigentlich schon recht umständlich?!
Gibt´s elegantere Wege?

[Momentan sperrt mir mein nicht-qualifizierter SELECT SINGLE WHERE FIRMA = ... und das anschließende DELETE fast die komplette Tabelle, womit die Parallelisierung deutlich ausgebremst wird]

Danke und Grüße
net
Elia3416
.
.
 
Posts: 3
Joined: Wed Oct 22, 2014 1:30 pm

Re: Nummernvergabe aus Tabelle / Sperrkonzept vs Laufzeiten

Postby Constantin3326 » Tue Jul 21, 2015 12:32 pm

Hallo net,
so ganz verstehe ich noch nicht, warum Du unbedingt einen eigenen Nummernvorrat benötigst und kein eigenes (gerne auch gepuffertes) SAP-Nummernkreisobjekt mit Unterobjekt = Firma nimmst.

Edit: Ah ok - die Nummern werden Euch von den Dienstleistern vorgegeben... Aber vielleicht sind das ja zusammenhängende Nummernbereiche, dann würde es ja mit dem SAP NK Objekt gehen.
Constantin3326
....
....
 
Posts: 840
Joined: Tue Dec 20, 2005 11:47 am


Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 3 guests