Ansicht
Dokumentation

ABENCDS_PATH_EXPRESSION_FILTER_V1 - CDS PATH EXPRESSION FILTER V1

ABENCDS_PATH_EXPRESSION_FILTER_V1 - CDS PATH EXPRESSION FILTER V1

Addresses (Business Address Services)   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DDIC-basierte View, path_expr, Filter

... $[WHERE$] cds_cond ...

Wirkung

Filterbedingung für die aktuelle CDS-Assoziation. Wenn der Join-Typ explizit mit INNER$|${LEFT OUTER$} definiert ist, muss der Zusatz WHERE explizit angegeben werden. Ansonsten darf WHERE nicht angegeben werden.

Eine Filterbedingung ist eine Bedingung cds_cond, die bei der Auflösung der CDS-Assoziation in einen Join in eine erweiterte Bedingung für den Join umgesetzt wird. Bei der Angabe der Bedingung gelten für die Operanden allgemeine und besondere Regeln.

Wenn im Pfadausdruck keine Filterbedingung angegeben ist, wird die eventuell für die CDS-Assoziation angegebene Standardfilterbedingung verwendet.

Hinweis

Eine Filterbedingung ändert in aller Regel den Join-Ausdruck, der für eine CDS-Assoziation eines Pfadausdrucks auf der Datenbank ausgeprägt wird. Deshalb wird standardmäßig für jede CDS-Assoziation mit einer Filterbedingung ein eigener Join-Ausdruck ausgeprägt. Dies ist aber unnötig, wenn bei mehrfacher Verwendung einer CDS-Assoziation auch die gleiche Filterbedingung angegeben ist. Deshalb kann mit der ABAP-Annotation AbapCatalog.compiler.compareFilter eingestellt werden, ob für die Pfadausdrücke, die bei der Aktivierung einer View als Joins ausgeprägt werden, die Filterbedingungen mehrfacher CDS-Assoziationen semantisch verglichen werden. Bei gleicher Filterbedingung wird der zugehörige Join-Ausdruck dann nur einmal gebildet, was in der Regel zu einer verbesserten Performance führt. In der Regel wird die Verwendung der Annotation empfohlen und beim Anlegen einer CDS-View in den ADT automatisch vorgeschlagen. Die Ergebnismengen beider Einstellungen können aber auch unterschiedlich sein.

Beispiel

Die folgenden drei Views enthalten Pfadausdrücke mit Filterbedingungen in ihrer SELECT-Liste, die bei Aktivierung als Join-Ausdrücke implementiert werden.

In der ersten View hat die Annotation AbapCatalog.compiler.compareFilter den empfohlenen Wert true. Die Bedingungen werden als gleich erkannt und die Ausprägung der Pfadausdrücke auf einer SAP-HANA-Datenbank sieht in etwa so aus:

CREATE VIEW "DEMOCDSASSFI1" AS SELECT
  "=A0"."D" AS "D_2",
  "=A0"."E" AS "E_2",
  "=A1"."I" AS "I_3",
  "=A1"."J" AS "J_3"
FROM (
  "DEMO_JOIN1" "DEMO_JOIN1" INNER JOIN "DEMO_CDS_ASJO2" "=A0" ON (
    "=A0"."D" = "DEMO_JOIN1"."D" AND
    "=A0"."D" = N'1'
  )
) INNER JOIN "DEMO_JOIN3" "=A1" ON (
  "=A1"."L" = "=A0"."D" AND
  "=A1"."I" = N'2'
)

Bei der zweiten View hat AbapCatalog.compiler.compareFilter den Wert false und trotz gleicher Bedingungen wird für jede CDS-Assoziation der Pfadausdrücke ein Join-Ausdruck ausgeprägt. Diese Ausprägung sieht deshalb so aus wie die der dritten View, in der alle Bedingungen unterschiedlich sind:

CREATE VIEW "DEMOCDSASSFI2" AS SELECT
  "=A0"."D" AS "D_2",
  "=A1"."E" AS "E_2",
  "=A3"."I" AS "I_3",
  "=A5"."J" AS "J_3"
FROM (
  (
    (
      (
        (
          "DEMO_JOIN1" "DEMO_JOIN1" INNER JOIN "DEMO_CDS_ASJO2" "=A0" ON (
            "=A0"."D" = "DEMO_JOIN1"."D" AND
            "=A0"."D" = N'1'
          )
        ) INNER JOIN "DEMO_CDS_ASJO2" "=A1" ON (
          "=A1"."D" = "DEMO_JOIN1"."D" AND
          "=A1"."D" = N'1'
        )
      ) INNER JOIN "DEMO_CDS_ASJO2" "=A2" ON (
        "=A2"."D" = "DEMO_JOIN1"."D" AND
        "=A2"."D" = N'1'
      )
    ) INNER JOIN "DEMO_JOIN3" "=A3" ON (
      "=A3"."L" = "=A2"."D" AND
      "=A3"."I" = N'2'
    )
  ) INNER JOIN "DEMO_CDS_ASJO2" "=A4" ON (
    "=A4"."D" = "DEMO_JOIN1"."D" AND
    "=A4"."D" = N'1'
  )
) INNER JOIN "DEMO_JOIN3" "=A5" ON (
  "=A5"."L" = "=A4"."D" AND
  "=A5"."I" = N'2'
)

CREATE VIEW "DEMOCDSASSFI3" AS SELECT
  "=A0"."D" AS "D_2",
  "=A1"."E" AS "E_2",
  "=A3"."I" AS "I_3",
  "=A5"."J" AS "J_3"
FROM (
  (
    (
      (
        (
          "DEMO_JOIN1" "DEMO_JOIN1" INNER JOIN "DEMO_CDS_ASJO2" "=A0" ON (
            "=A0"."D" = "DEMO_JOIN1"."D" AND
            "=A0"."D" = N'1'
          )
        ) INNER JOIN "DEMO_CDS_ASJO2" "=A1" ON (
          "=A1"."D" = "DEMO_JOIN1"."D" AND
          "=A1"."D" = N'2'
        )
      ) INNER JOIN "DEMO_CDS_ASJO2" "=A2" ON (
        "=A2"."D" = "DEMO_JOIN1"."D" AND
        "=A2"."D" = N'3'
      )
    ) INNER JOIN "DEMO_JOIN3" "=A3" ON (
      "=A3"."L" = "=A2"."D" AND
      "=A3"."I" = N'5'
    )
  ) INNER JOIN "DEMO_CDS_ASJO2" "=A4" ON (
    "=A4"."D" = "DEMO_JOIN1"."D" AND
    "=A4"."D" = N'4'
  )
) INNER JOIN "DEMO_JOIN3" "=A5" ON (
  "=A5"."L" = "=A4"."D" AND
  "=A5"."I" = N'6'
)






Vendor Master (General Section)   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8739 Date: 20240523 Time: 171213     sap01-206 ( 96 ms )