Select client
Siehe Schlüsselbefehl Select.
Die Daten können aus einem anderen Mandanten als dem aktuellen Mandanten (sy-mandt) gelesen werden mit dem Befehl "using client <mandant>".
Das kann nützlich für Programme sein, um im Entwicklungsmandanten ein Programm testen zu können und es nicht im Testmandanten ausführen zu müssen.
Dann sollte man vor dem Transport ins Q-System und P-System aber nicht vergessen diesen Zusatz wieder zu löschen. Im Produktivsystem wird es für diesen Befehl nur wenig Anwendungen geben.
SELECT DISTINCT
vbtyp,
kunnr
INTO TABLE @DATA(lt_kunnr)
FROM vbak
USING CLIENT '102'
ORDER BY kunnr, vbtyp.
Client specified
- In einem Kundenprojekt hatte ich bei einem Programm eine sehr schlechte Performance vorgefunden. Das lag an dem Select Zusatz "Client specified" ohne das ein Mandant übergeben wurde.
SELECT ... FROM a004 CLIENT SPECIFIED INTO TABLE @DATA(lt_a004) FOR ALL ENTRIES IN @lt_orders2 WHERE kappl = 'V' AND kschl = @zpnt AND vkorg = @lt_orders2-vkorg AND vtweg = @lt_orders2-vtweg AND matnr = @lt_orders2-lunr.
Da dann der sy-mandt nicht mehr verwendet wird, konnte die Datenbank keinen Key/Index mehr verwenden, da hier in aller Regel der Mandant als Feld enthalten ist.
Entsprechend mussten alle Tabellen sequentiell durchlaufen werden mit extrem schlechter Laufzeit.
Die Fälle, wo man einen anderen Mandanten liest als sy-mandt, wird sehr selten sein. Aber wenn, dann müsste man abfragen
SELECT ... FROM a004 CLIENT SPECIFIED INTO TABLE @DATA(lt_a004) FOR ALL ENTRIES IN @lt_orders2 WHERE kappl = 'V' AND kschl = @zpnt AND vkorg = @lt_orders2-vkorg AND vtweg = @lt_orders2-vtweg AND matnr = @lt_orders2-lunr and mandt = ..