点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
当我在GW Client(/IWFND/GW_CLIENT)中测试我的odata服务时,它总是显示"数据服务请求URI所标识的资源不允许使用指定的HTTP方法"。 (它与 sdata 一起很好地工作)。 我无法弄清楚,我们被封锁了。 有人能帮我一下吗? 谢谢。
这是有关我的实施和测试环境的信息,我实施了一项保存计数文档的操作。
这里是CountingDoc实体和返回实体
* ---------------------------------------------- ------------------------------------
*实体:盘点凭证抬头
*- -------------------------------------------------- -------------------------------
lo_entity_type =模型-> create_entity_type('CountingDoc')。 " #EC NOTEXT
lo_property = lo_entity_type(>。_property = lo_entity_type(iv.prop_ty_name 'iv_abap_fieldname ='FISCALYEAR')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property(iv_property_name ='siteID'iv_abap_fieldname ='PLANT')。 iv_property_name ='stgeLocID'iv_abap_fieldname ='STGE_LOC')。
.....
lo_entity_type-> bind_structure('/SRSMOB/STOP_COUNTING_DOC')。
lo_entity_type-> set_creatable(abap_true)。
lo_entity_type-> set_updatable(abap_true)。
lo_entity_type-> set_deletable(abap_true)。
* ---------------------------------------------- ------------------------------------
*实体:ExecutionMessage
* --- -------------------------------------------------- -----------------------------
lo_entity_type =模型-> create_entity_type('ExecutionMessage')。 " #EC NOTEXT
lo_property = lo_entity_type-> create_property(iv_property_name ='type'iv_abap_fieldname ='TYPE')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property 'iv_abap_fieldname ='ID')。
lo_property-> set_is_key()。
lo_property = lo_entity_type-> create_property(iv_property_name ='number'iv_abap_fieldname ='NUMBER')。
...
注意:
这是模型中的POST操作,
lo_action =模型-> create_action('SaveCountingLineItemList')。 " #EC NOTEXT
lo_action-> SET_HTTP_METHOD(/iwbep/if_mgw_med_odata_types => gcs_med_http_methods-POST)。
lo_action-> set_return_entity_type('ExecutionMessage')。
lo_action-> set_action_for。 br> lo_action-> set_return_multiplicity(/iwbep/if_mgw_med_odata_types => gcs_cardinality-cardinality_1_n)。 ('/SRSMOB/STOP_VALUE_CHAR')。
lo_parameter = lo_action-> create_input_parameter(iv_parameter_name ='fiscalYear'iv_abap_fieldname ='FISCAL_YEAR')。
我没有将运行时代码粘贴到这里,因为请求永远不会到达那里并且sdata可以工作。
我正在使用GW客户端(/IWFND/GW_CLIENT)进行测试。 未设置〜CHECK_CSRF_TOKEN。 因此,启用了CSRF安全性,并且由于使用GW Client,因此我不必担心此安全性令牌。 我的网址和错误如下所示。
URL:/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList?docId ='300000314'&fiscalYear ='2013'
以下是此函数导入的在线数据:
- < 功能导入 名称 =" SaveCountingLineItemList " 返回类型 =" 集合(STORE_OPERATIONS.ExecutionMessage) " 实体集 =" ExecutionMessageCollection " m:HttpMethod =" POST " SAP:作用 =" STORE_OPERATIONS.CountingDoc " > - < 参数 名称 =" countingID " 类型 =" Edm.String " 模式 =" 在 " > - < 文献资料 > < 摘要 /> < 详细描述 > 值 详细描述 >
- < 参数 名称 =" 财政年度 " 类型 =" Edm.String " 模式 =" 在 " > - < 文献资料 > < 摘要 /> < 详细描述 > 值 详细描述 >
谢谢。
致谢
史蒂芬
(60.7 kB)
您好,史蒂芬,
在REST客户端中进行检查
1。 对于POST,您不必通过/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList
2传递任何值。 添加CSRF令牌
3。 在正文中传递值
{
" docId":" 300000314",
" fiscalYear":" 2013"
}
致谢
阿伦
感谢阿伦。 我搜索了很多张贴方法。
但是您的答案是完美的。
嗨,史蒂芬
这个问题经常被问到!
您正尝试发布到查询中 ,则只能发布到单个实体。
例如
/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList('100000001)
不是
/sap/opu/odata/SRSMOB/STORE_OPERATIONS/SaveCountingLineItemList?docId ='300000314'&fiscalYear ='2013'
干杯
JSP
>
一周热门 更多>