从SAP Gateway Client调用GET_EXPANDED_ENTITYSET

2020-08-17 02:08发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我尝试调用SRA020_PO_TRACKING项目po跟踪项目的GET_EXPANDED_ENTITYSET方法。 方法如下:

方法/iwbep/if_mgw_appl_srv_runtime〜get_expanded_entityset。
   数据:lv_ponumber TYPE bapiekko-po_number,
         lv_leading_msg TYPE布尔值。
   数据:lo_api类型参考cl_sra020_po_tracking_api。
   数据:ls_po_details类型cl_sra020_po_tracking_api => ts_podetails,
         lt_return TYPE bapirettab,
         lo_msgcontainer类型参考/iwbep/if_message_container。
   数据:lt_poitem_details类型cl_sra020_po_tracking_api => tt_poitemdetail。
   FIELD-SYMBOLS: TYPE bapiret2,
                  类型/iwbep/s_mgw_name_value_pair。
   lo_api = cl_sra020_po_tracking_api => get_instance()。
 * ==================================================  ======================================
 *在oData服务URL中读取实体键值
 * ==================================================  ======================================
   如果it_key_tab不是INITIAL。
     循环至it_key_tab ASSIGNING 。
       情况-名称。
         当if_sra020_po_tracking_constant => cc_po_number时。
           lv_ponumber = -值。
       结束。
     结局。
   万一。
   尝试。
       案例iv_entity_set_name。
         当if_sra020_po_tracking_constant => cc_podetaileddatas时。
           呼叫方法lo_api-> get_po_details
             出口
               iv_item_additional_data ='X'" #EC NOTEXT
               iv_po_number = lv_ponumber
             输入
               es_po_details = ls_po_details
               et_return = lt_return。
           如果不是lt_return是INITIAL。
             引发例外类型/iwbep/cx_mgw_busi_exception。
           万一。
           lt_poitem_details = ls_po_details-poitemdetaildatas。
           no_cache()。
 *返回扩展子句
           附录cl_sra020_po_tracking_mpc => gc_poitemdocflow到et_expanded_tech_clauses。
           附录cl_sra020_po_tracking_mpc => gc_accounting到et_expanded_tech_clauses。
           附录cl_sra020_po_tracking_mpc => gc_pricing条件至et_expanded_tech_clauses。
           附录cl_sra020_po_tracking_mpc => gc_confirmation至et_expanded_tech_clauses。
           呼叫方法copy_data_to_ref
             出口
               is_data = lt_poitem_details
             改变
               cr_data = er_entityset。
       结束。
     捕获/iwbep/cx_mgw_busi_exception。
       lo_msgcontainer = me-> mo_context-> get_message_container()。
       在lt_return ASSIGNING 处循环,在其中键入EQ'E'或键入EQ'A'。  " #EC NOTEXT
         IF  -id EQ'SRA020'。
           lv_leading_msg = abap_true。
         其他。
           lv_leading_msg = abap_false。
         万一。
         lo_msgcontainer-> add_message(
                                       iv_msg_type = -类型
                                       iv_msg_id =  -id
                                       iv_msg_number = -编号
                                       iv_msg_text = -消息
                                       iv_msg_v1 =  -message_v1
                                       iv_msg_v2 =  -message_v2
                                       iv_msg_v3 =  -message_v3
                                       iv_msg_v4 = -消息_v4
                                       iv_is_leading_message = lv_leading_msg
                                  )。
       结局。
       引发例外类型/iwbep/cx_mgw_busi_exception
           出口
             textid =/iwbep/cx_mgw_busi_exception => business_error
             message_container = lo_msgcontainer。
   ENDTRY。
 终结法。
 

哪里

 if_sra020_po_tracking_constant => cc_po_number = PONumber
 if_sra020_po_tracking_constant => cc_podetaileddatas = PODetailedDatas 

和PODetailedData实体具有POItemDetailDatas,POItems和POList的导航属性。

我尝试通过执行从网关服务客户端调用该方法

/sap/opu/odata/SAP/SRA020_PO_TRACKING_SRV/PODetailedDatas?$ filter = PONumber eq'4500000039'&$ expand = POItemDetailDatas 

我遇到错误

状态代码400,位置11之后的表达式

我想念什么吗?

致谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我尝试调用SRA020_PO_TRACKING项目po跟踪项目的GET_EXPANDED_ENTITYSET方法。 方法如下:

方法/iwbep/if_mgw_appl_srv_runtime〜get_expanded_entityset。
   数据:lv_ponumber TYPE bapiekko-po_number,
         lv_leading_msg TYPE布尔值。
   数据:lo_api类型参考cl_sra020_po_tracking_api。
   数据:ls_po_details类型cl_sra020_po_tracking_api => ts_podetails,
         lt_return TYPE bapirettab,
         lo_msgcontainer类型参考/iwbep/if_message_container。
   数据:lt_poitem_details类型cl_sra020_po_tracking_api => tt_poitemdetail。
   FIELD-SYMBOLS: TYPE bapiret2,
                  类型/iwbep/s_mgw_name_value_pair。
   lo_api = cl_sra020_po_tracking_api => get_instance()。
 * ==================================================  ======================================
 *在oData服务URL中读取实体键值
 * ==================================================  ======================================
   如果it_key_tab不是INITIAL。
     循环至it_key_tab ASSIGNING 。
       情况-名称。
         当if_sra020_po_tracking_constant => cc_po_number时。
           lv_ponumber = -值。
       结束。
     结局。
   万一。
   尝试。
       案例iv_entity_set_name。
         当if_sra020_po_tracking_constant => cc_podetaileddatas时。
           呼叫方法lo_api-> get_po_details
             出口
               iv_item_additional_data ='X'" #EC NOTEXT
               iv_po_number = lv_ponumber
             输入
               es_po_details = ls_po_details
               et_return = lt_return。
           如果不是lt_return是INITIAL。
             引发例外类型/iwbep/cx_mgw_busi_exception。
           万一。
           lt_poitem_details = ls_po_details-poitemdetaildatas。
           no_cache()。
 *返回扩展子句
           附录cl_sra020_po_tracking_mpc => gc_poitemdocflow到et_expanded_tech_clauses。
           附录cl_sra020_po_tracking_mpc => gc_accounting到et_expanded_tech_clauses。
           附录cl_sra020_po_tracking_mpc => gc_pricing条件至et_expanded_tech_clauses。
           附录cl_sra020_po_tracking_mpc => gc_confirmation至et_expanded_tech_clauses。
           呼叫方法copy_data_to_ref
             出口
               is_data = lt_poitem_details
             改变
               cr_data = er_entityset。
       结束。
     捕获/iwbep/cx_mgw_busi_exception。
       lo_msgcontainer = me-> mo_context-> get_message_container()。
       在lt_return ASSIGNING 处循环,在其中键入EQ'E'或键入EQ'A'。  " #EC NOTEXT
         IF  -id EQ'SRA020'。
           lv_leading_msg = abap_true。
         其他。
           lv_leading_msg = abap_false。
         万一。
         lo_msgcontainer-> add_message(
                                       iv_msg_type = -类型
                                       iv_msg_id =  -id
                                       iv_msg_number = -编号
                                       iv_msg_text = -消息
                                       iv_msg_v1 =  -message_v1
                                       iv_msg_v2 =  -message_v2
                                       iv_msg_v3 =  -message_v3
                                       iv_msg_v4 = -消息_v4
                                       iv_is_leading_message = lv_leading_msg
                                  )。
       结局。
       引发例外类型/iwbep/cx_mgw_busi_exception
           出口
             textid =/iwbep/cx_mgw_busi_exception => business_error
             message_container = lo_msgcontainer。
   ENDTRY。
 终结法。
 

哪里

 if_sra020_po_tracking_constant => cc_po_number = PONumber
 if_sra020_po_tracking_constant => cc_podetaileddatas = PODetailedDatas 

和PODetailedData实体具有POItemDetailDatas,POItems和POList的导航属性。

我尝试通过执行从网关服务客户端调用该方法

/sap/opu/odata/SAP/SRA020_PO_TRACKING_SRV/PODetailedDatas?$ filter = PONumber eq'4500000039'&$ expand = POItemDetailDatas 

我遇到错误

状态代码400,位置11之后的表达式

我想念什么吗?

致谢

付费偷看设置
发送
1条回答
大道至简
1楼-- · 2020-08-17 02:41

结果是我必须提供PONumber,以便:

 PODetailedDatas(PONumber ='4500000039')?$ expand = POItems 

工作正常

一周热门 更多>