Netweaver Gateway开发

SAP网关ODATA服务中的功能导入

               ODATA包括映射到HTTP方法的标准CRUD操作GET,POST,PUT / MERGE删除。除了这些ODATA之外,还支持另一个名为函数导入的操作,可以通过HTTP GET或POST方法调用。
           函数导入创建很容易。如果标准CRUD方法可以满足您的要求,则为函数导入。有些示例,我们需要函数导入如下
  1. 确认工作人员
  2. 检查飞行可用性
           函数导入是要在实体上执行的操作。这些是在服务级别定义的,我们可以创建n个函数导入。
           在本教程中,我们将创建一个函数导入,以了解Particulat飞行票价。
先决条件
  1. ODATA服务已创建。


脚步
  1. 转到Tcode Segw.open我们的项目ztest_odata我们已经创建了。在项目上点击 然后转到编辑模式.Expand项目节点并右键单击数据模型节点并选择创造->功能导入。这将打开函数导入创建窗口。 
     
  2. 函数导入名称然后单击“好”(勾选)Button.i将CheckFrighFare视为函数导入名称。
  3. 现在是一个新的节点名称功能导入s将被创造数据模型我们项目的节点.See截图。
  4. 对于每个函数导入,我们可以定义返回类型。支持的返回类是复杂的类型,实体类型,没有返回。在此函数导入我们需要返回一些数据,以便再次创建一个实体类型和实体集。再次右键点击数据模型并选择创造->实体类型.
  5. 实体创建窗口将打开.Give实体类型名称。查看创建相关实体集复选框并给EntitySet name.Click Oke。
  6. 开放创建Flightfare.实体类型并创建一个名为票价和currency.give类型作为edm.string.dont的属性作为eDM.dont of这些属性设置为键,否则生成它将抛出错误。检查并生成项目。
  7. 现在打开我们的功能导入CheckFlightFare.通过单击它。选择回归作为实体类型并选择返回类型正如我们新创建的flightfare实体类型。选择 回归基数作为1.Return基数,指定结果中可以发生多少返回类型。支持的值为0..1,1,0..n,1..n.select返回HTTP方法作为Get.You也可以选择邮寄要求。
  8. 展开FlightFare功能导入节点并双击功能导入参数.we将添加三个导入的参数,它是flightdate,connectionId和clustrcerid.forsiddate类型是edm.datetime和其他edm.string.check并生成项目。
  9. 一些编码的时间。我们的*** dpc_ext.班级并右键单击Execute_action.然后点击重新定义.
  10. 将下面的代码放在方法内。我们访问函数导入参数并根据查询结果返回飞行票价.Activate该方法。

  11.  DATA: ls_parameter TYPE / iwbep / s_mgw_name_value_pair,
         ls_entity type zcl_ztest_odata_01_mpc => ts_flightfare,
         lv_carrier TYPE zcl_ztest_odata_01_mpc => ts_flight - carrid,
         lv_connection TYPE zcl_ztest_odata_01_mpc => ts_flightschedule - connid,
         lv_fldate TYPE dats.
     IF it_parameter IS NOT INITIAL.
     DATA: BEGIN OF str_fare,
         price type sflight - price,
         currency type sflight - currency,
    
         END OF str_fare.
    
     READ TABLE it_parameter INTO ls_parameter WITH KEY name = 'carrierid'.
     IF sy - subrc = 0.
     lv_carrier = ls_parameter - value.
     ENDIF.
     READ TABLE it_parameter INTO ls_parameter WITH KEY name = 'connectionid'.
     IF sy - subrc = 0.
     lv_connection = ls_parameter - value.
     ENDIF.
     READ TABLE it_parameter INTO ls_parameter WITH KEY name = 'flightdate'.
     IF sy - subrc = 0.
     lv_fldate = ls_parameter - value.
     ENDIF.
    
     ENDIF.
     case iv_action_name.
     when 'CheckFlightFare'.
     SELECT single price currency from sflight into str_fare where carrid = lv_carrier and connid = lv_connection and fldate = lv_fldate
         .
     ls_entity - fare = str_fare - price.
     ls_entity - currency = str_fare - currency.
     endcase.
    
     copy_data_to_ref(EXPORTING is_data = ls_entity CHANGING cr_data = er_data).
    

  12. 函数导入实现已完成。要检查打开网关客户端(/ iwfnd / gw_client)并提供URL:/ SAP / OPU / ODATA / SAP / ZTEST_ODATA_SRV_01 / CHECKFLIGHTFARE?CRISSITID ='AC'&connectionid='820'&FlightDate = DateTime'2002-12-20T00:00:00'并按Execute Button.see屏幕截图。 
调用函数导入sapui5。
如果您喜欢这篇文章,请分享!!

4 comments :

  1. 我有一个500个内部服务器错误,当我看到日志时,它会说:
    发生了类型/ iWCOR / CX_DS_INTERNAL_ERROR的异常。查看详细信息以获取更多信息

    消息号。 / iwfnd / cm_logging006
    你能帮助我吗?

    回复删除
  2. 代码中需要很少需要的校正(1. ls_entity应该附加到lt_entity,表应传递给最后一个方法调用的IS_Data。然后将显示O / P.休息一切都是正确的,并感谢您分享知识

    回复删除

Powered by 博主.