在POST操作中在深层实体集中获取不同的请求和响应结构。

2020-09-21 03:39发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)这个问题有两个部分。 ...

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

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


这个问题有两个部分。

a。 据我了解,在DPC中使用CREATE_DEEP_ENTITY方法时,为Deep Entity创建的结构包括Request结构和Required Response结构(这将是一个使它成为深度结构的表)。 实际响应将返回请求和响应的组合。 是否有可能不发送完整的请求结构和响应结构? 即

1。 请求

Req_field1

Req_field2

Req_Deep_Structure(深层结构)

2。 实际响应(为方法CREATE_DEEP_ENTITY创建的类型)

Req_field1

Req_field2

Req_Deep_Structure

Res_Tab1

Res_Tab2

3。 必需的响应(这是必需的数据)

Req_field1

Res_Tab1(扁平结构)

Res_Tab2(扁平结构)

b。 是否有可能在响应中具有三层深度的实体结构,以获取最深表的响应,即

Req_field1

Req_field2

Req_Deep_Structure

Req_Deep_Structure-field1

Req_Deep_Structure-field2

Req_Deep_Structure-field_table(平面结构)

Res_Deep_structure

Res_Deep_Structure-field1

Res_Deep_Structure-field2

Res_Deep_Structure-Deep_structure

Deep_structure-field1

Deep_structure-field2

Deep_structure-Deeper_structure

Deeper_structure-field1

Deeper_structure-field2

Deeper_structure-field_tab(平面结构)-我需要在输出中显示

这里我想在POST调用中输出表Deeper_structure-field_tab。

是否有一种使用$ expand的方式(例如在get调用中实现这一点)? 或其他任何可能性?

(所有从" Req"开始的元素代表请求," Res"代表响应)

2条回答
哎,真难
2020-09-21 04:01

嗨,

我不明白您的

 Req_field1

 Req_field2 

在" CREATE_DEEP_ENTITY"中,您只是作为深层实体接收数据(您处理的级别数取决于您的设计:对于单个和特定的情况,我有一个4级实体:Inforecord-Period-Condition-Scale)。
这就是您所需要的。

$ Expand用于标识要在GET_DEEP_ENTITY/GET_DEEP_ENTITYSET方法中获得的子结构,而不是在create中。

请记住,CREATE方法可能只是接收部分结构(即使 我建议您定义一个完整的深层实体(one),然后您可以检查是否定义了必填字段。

我在这里分享了我的4级结构的片段以及我的处理方式,希望这对您有所帮助 您的问题(否则,请原谅我,并向您更好地解释您的需求:这是清晨,我仍然需要咖啡)。

_DPC_EXT类的深层实体定义

 types:BEGIN OF ty_deep_condition。
      包含类型zcl_zpurchinforecord_mpc => ts_inforecordcondition。  
类型:scalelink带有DEFAULT KEY的zcl_zpurchinforecord_mpc => ts_inforecordscale的类型表, ty_deep_condition的结尾。
类型:tty_deep_condition ty_deep_condition的类型表。
类型:ty_deep_period的开始。
包含类型zcl_zpurchinforecord_mpc => ts_inforecord的期限。
类型:带默认键的ty_deep_condition条件链接类型表, ty_deep_period结束。
类型:tty_deep_period ty_deep_period类型表。
类型:始于ty_deep_info。
包含类型zcl_zpurchinforecord_mpc => ts_inforecord。
TYPES:带有默认键的ty_deep_period的periodlink类型表,
ty_deep_info的结尾。

POST深度实体实现

方法/iwbep/if_mgw_appl_srv_runtime〜create_deep_entity。
  资料:Deeppir TYPE ty_deep_info。
  案例iv_entity_set_name。
      当" InfoRecordSet"。
 *将数据转换为内部结构
      io_data_provider-> read_entry_data(IMPORTING es_data = deeppir)。
       create_deep_pir(更改deeppir = deeppir
                                 er_deep_entity = er_deep_entity)。
  当别人。
  结束。
  如果er_deep_entity为INITIAL。  "再次创建失败
       引发例外类型/iwbep/cx_mgw_tech_exception。
  万一。
 ENDMETHOD。

在我的CREATE_DEEP_PIR中,如果一切顺利,

 copy_data_to_ref(
  出口
  is_data = Deeppir
  改变
  cr_data = er_deep_entity)。

因此,我可以接收部分信息(即,由于我将要创建它而没有Inforecord号),并且可以在构建过程中填充/更改数据,并发送回更新的结构。

一周热门 更多>