1:cds view 中的WITH PRIVILEGED ACCESS 可以跳过访问权限的限制。没有权限,使用该语句也能查询到数据。但是该语句只针对其前面的一个cds view有效。当查询条件为其它需要权限的cds view时,需要在其它cds view中在加入WITH PRIVILEGED ACCESSS.
2: 拼接查询字符串。
lv_sql_select_basic = `product_h~*`. IF lv_ignore_auth_check = abap_true. lv_sql_select_compbp = `, Competitor~businesspartner AS competitorbusinesspartner`. ELSE. lv_sql_select_compbp = `,\_competitor-businesspartner AS competitorbusinesspartner`. ENDIF. IF is_required_text_fields IS NOT INITIAL. add_required_fields_to_select( EXPORTING is_required_text_fields = is_required_text_fields "根据传入的 is_required_text_fields中的属性值,来决定拼接哪些属性。 CHANGING ev_select_list = lv_sql_select_text ). ENDIF. lv_sql_select = |{ lv_sql_select_basic }{ lv_sql_select_compbp }{ lv_sql_select_text }|.
ls_required_text_fields-is_prod_name_required = 'X'. "将product name 属性拼接到查询结果中。CALL METHOD f_cut->if_crms4_product_api~get_single_header_by_id EXPORTING iv_product_id = lv_product_id iv_langu = lv_langu is_required_text_fields = ls_required_text_fields iv_check_authorizations = lv_check_authorizations IMPORTING es_product = ls_product EXCEPTIONS not_found = 1 wrong_call = 2 conv_error = 3 OTHERS = 4.