Select client

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

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 = ..