Необязательные параметры в представлениях ABAP CDS?

Я пытаюсь создать представление CDS для потребления с необязательными параметрами. Но на данный момент необязательные параметры не поддерживаются.

Есть ли обходной путь, чтобы каким-то образом выбрать, какие предложения where должны выполняться / использоваться на основе входных параметров?


person codemania23    schedule 24.08.2016    source источник


Ответы (3)


Вы проверили аннотацию Consuming.defaultValue. Взгляните на справочный документ

person Eralper    schedule 14.11.2017

На данный момент это единственные параметры, которые вы можете использовать как необязательные.

p_date : sydatum
@<Environment.systemField:#SYSTEM_DATE 
, p_language : spras 
@<Environment.systemField:#SYSTEM_LANGUAGE 
person Dzhengo    schedule 13.11.2017
comment
это уже не единственные параметры, но я голосую заблокирован - person András; 13.05.2021

Я просто поставил более полный ответ, чем предложил Дженго. Для некоторых параметров можно использовать аннотации параметров которые могут быть неявно заполнены значениями среды ABAP. Аннотации могут быть указаны с помощью ключевого слова @Environment.systemField перед параметром или после него и должны сопровождаться полем env после двоеточия. Вот список возможных экологических полей:

  1. #CLIENT: sy-mandt
  2. #SYSTEM_DATE: sy-datum
  3. #SYSTEM_TIME: сы-узейт
  4. #SYSTEM_LANGUAGE: sy-lang
  5. #USER: sy-uname

Пример кода для определения представления:

@AbapCatalog.sqlViewName: 'ZVW_MARA' 
@AccessControl.authorizationCheck: #NOT_REQUIRED 
define view zvw_mara
  with parameters  
    p_matnr : matnr, 
    @Environment.systemField : #SYSTEM_DATE 
    p_datum : syst_datum, 
    p_uname : syst_uname @<Environment.systemField : #USER 
  as select from 
    mara
    { 
      key mara.matnr,  
          mara.ernam, 
          mara.ersda 
    } 
    where 
        matnr = :p_matnr 
    and ernam = :p_uname
    and ersda = :p_datum; 
person Suncatcher    schedule 07.08.2019