Odata 的Association实现 get update delete URL

odata GET,UPDATA,DELETE - Park_SAP - 博客园

1:创建表:YEKKO,YEKPO

https://img-blog.csdnimg.cn/8b70a4d1dbc34b19965ed32bdfc63ad4.png ​ ​

2: 导入,YEKKO,YEKPO生成EKKO,EKPO entity type,  (Import->DDIC Structure)

3:按提示生成association,如下,

4:执行Runtime Artifactsz生成相关类,

5:实施刚生成的类的方法,

分别redefine ekkoset: getentity, getentityset

            Ekposet:getentityset.

  METHOD ekkoset_get_entity.
    DATAls_key  TYPE /iwbep/s_mgw_tech_pair,
          lt_keys TYPE /iwbep/t_mgw_tech_pairs.
    lt_keys io_tech_request_context->get_keys( ).      "注意大小写
    READ TABLE lt_keys WITH KEY name 'EBELN' INTO ls_key.
    CHECK sy-subrc 0.
    SELECT SINGLE *
      
FROM yekko
      
INTO CORRESPONDING FIELDS OF er_entity
     
WHERE     ebeln ls_key-value.

  ENDMETHOD.

  METHOD ekkoset_get_entityset.
    DATA:lv_ebeln TYPE yekko-ebeln.
    DATA:lt_ekko TYPE TABLE OF yekko.
    DATA:ls_filter_pernr TYPE /iwbep/s_mgw_select_option,
         ls_option       TYPE /iwbep/s_cod_select_option,
         ls_ee_option    TYPE bapihrselemployee.

    LOOP AT it_filter_select_options INTO ls_filter_pernr WHERE  property 'Ebeln'.
      LOOP AT ls_filter_pernr-select_options INTO ls_option.
        CLEAR ls_ee_option.
        lv_ebeln     ls_option-low.
      ENDLOOP.
    ENDLOOP.

    SELECT *
      
FROM yekko
      
UP TO 10 ROWS
      INTO TABLE lt_ekko
     
WHERE ebeln lv_ebeln.
    MOVE-CORRESPONDING lt_ekko TO et_entityset.

  ENDMETHOD.

  METHOD ekposet_get_entityset.
    DATA:  ls_key       TYPE /iwbep/s_mgw_name_value_pair.
    DATA:lv_ebeln TYPE ekko-ebeln.   

    READ TABLE it_key_tab WITH KEY name 'Ebeln' INTO ls_key.

“it_key_tab KEY的信息是entity type的字段定义,区分大小写

“lt_keys io_tech_request_context->get_keys( )

” LT_KEYSSAP表的字段,为大写
    CHECK sy-subrc 0.
    lv_ebeln ls_key-value.
    SELECT *
      
FROM yekpo
      
INTO CORRESPONDING FIELDS OF TABLE et_entityset
     
WHERE ebeln lv_ebeln.
  ENDMETHOD.

6:注册并测试。

测试时注意:

/sap/opu/odata/SAP/YPRJ_ASS_01_SRV/EKKOSet(Mandt='200',Ebeln='4500000000')/?$expand=EKPOSet

EKKOSet和EKKOSet内容都显示,会先执行EKKOSet的entity 再执行EKPOSet的ENTITYset

 

/sap/opu/odata/SAP/YPRJ_ASS_01_SRV/EKKOSet(Mandt='200',Ebeln='4500000000')/EKPOSet

只执行 EKPOSet的ENTITYset,但会加上Mandt='200',Ebeln='4500000000'条件,相当于有条件查询

/sap/opu/odata/SAP/YPRJ_F4_01_SRV/ET_T001Set(Mandt='200',Bukrs='0001')

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值