ABAP 用CDS生成发布OData服务

生成OData

CDS教程
在这里插入图片描述
在注解加一句@OData.publish: true就可以了

添加OData服务

然后进入SAP GUI里面

/IWFND/GW_CLIENT:测试OData服务
/IWFND/MAINT_SERVICE:激活并维护服务
SEGW:OData建模
/iwfnd/error_log:分析错误

输入/O/IWFND/MAINT_SERVICE
在这里插入图片描述
选择添加服务
在这里插入图片描述
勾选联合部署后点击右下角输入
在这里插入图片描述
在这里插入图片描述

测试OData

双击选中自己的OData
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到如下的metadata的状态
在这里插入图片描述
然后点击EntitySets
在这里插入图片描述
选择
在这里插入图片描述
再点击Add URI
在这里插入图片描述
选择json格式的数据
在这里插入图片描述
点击Execute
在这里插入图片描述
可以看到如下的返回数据
有数据的情况:
在这里插入图片描述

没有数据的情况:
在这里插入图片描述

使用Postman测试OData

截取上面拿到数据情况种的uri里面的地址前半部分(到端口号结束)
在这里插入图片描述
然后加上
在这里插入图片描述
把拼起来的地址放到postman,填上账号密码就行了

在这里插入图片描述
注意使用postman或者浏览器有可能拿不到数据,这个时候去修改cookie或者清除试试(可能可以),比如在200系统有数据,300没有,那么postman访问没数据的话就是访问到了300,要修改cookie为200. 或者自己在URL后面拼上sap-client=200
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP OData 服务中,可以使用 Function Import 来实现动态调用函数模块。下面是具体步骤: 1. 在 SEGW 中创建一个 OData 服务。 2. 在 Service Implementation 中,选择 Function Import。 3. 点击右键,选择 Create Function Import。 4. 在 Function Import 的 Properties 中,设置 Function Module 的名称和输入参数。 5. 在 Function Import 的 Code 中,使用 FUNCTION MODULE 语句调用函数模块,并将输入参数传递给函数模块。 例如,以下代码演示了如何动态调用函数模块: ``` FUNCTION zfm_test. DATA: ls_input TYPE zinput, ls_output TYPE zoutput. FIELD-SYMBOLS: <fs_input> TYPE any, <fs_output> TYPE any. * 获取输入参数 TRY. cl_rest_runtime=>deserialize( EXPORTING iv_json = request->get_data( ) IMPORTING es_data = ls_input ). CATCH cx_rest_runtime_error INTO DATA(lx_error). response->set_status( i_code = lx_error->status_code i_reason = lx_error->message ). RETURN. ENDTRY. * 动态调用函数模块 ASSIGN ls_input TO <fs_input>. CALL FUNCTION 'Z_FUNCTION_MODULE' EXPORTING p_input = <fs_input> IMPORTING p_output = <fs_output>. * 获取输出参数 ASSIGN ls_output TO <fs_output>. cl_rest_runtime=>serialize( EXPORTING iv_data = <fs_output> IMPORTING ev_json = lv_response ). response->set_data( lv_response ). ENDFUNCTION. ``` 在上面的代码中,我们使用 FIELD-SYMBOLS 来动态获取输入和输出参数,并使用 ASSIGN 语句将其分配给 FIELD-SYMBOLS 变量。然后,使用 CALL FUNCTION 语句调用函数模块,并将输入参数传递给函数模块。最后,获取输出参数,并将其序列化为 JSON 格式返回给客户端。 希望这可以回答您的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值