调用CREATE_DEEP_ENTITY后如何将深层实体的项目数据传输回视图

2020-09-28 01:49发布

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

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


你好大师

我正在开发一个UI5界面,该界面应该创建一个Head/Items深度实体。

页面上有一个项目列表,提交时会调用CREATE_DEEP_ENTITY,一切正常。

但是,我有几个项目级别字段在创建后会更新,我想在列表中显示这些字段的数据。

现在的问题是,在视图中我看不到模型中的数据。

在Controller中,我使用以下代码向网关服务器提交数据:

 oHead.ItemSet =项目;
 oModel.create('/ObjectSet',oHead,null,
 函数(oData,oResponse){
 alert("成功");
 },
 function(){
 alert("内部错误");
 }
 );
 

但是当我检查oData时,看不到新数据。

在方法CREATE_DEEP_ENTITY中,我有下面的代码将数据传递到OData层,然后我希望lw_deep_entity中的新数据将传递回上面的模型。

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

我在这里想念什么吗? 还是完全不符合我的目的的方法?

高度赞赏任何输入。

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

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


你好大师

我正在开发一个UI5界面,该界面应该创建一个Head/Items深度实体。

页面上有一个项目列表,提交时会调用CREATE_DEEP_ENTITY,一切正常。

但是,我有几个项目级别字段在创建后会更新,我想在列表中显示这些字段的数据。

现在的问题是,在视图中我看不到模型中的数据。

在Controller中,我使用以下代码向网关服务器提交数据:

 oHead.ItemSet =项目;
 oModel.create('/ObjectSet',oHead,null,
 函数(oData,oResponse){
 alert("成功");
 },
 function(){
 alert("内部错误");
 }
 );
 

但是当我检查oData时,看不到新数据。

在方法CREATE_DEEP_ENTITY中,我有下面的代码将数据传递到OData层,然后我希望lw_deep_entity中的新数据将传递回上面的模型。

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

我在这里想念什么吗? 还是完全不符合我的目的的方法?

高度赞赏任何输入。

付费偷看设置
发送
2条回答
灬番茄
1楼-- · 2020-09-28 02:34

约翰,嗨,

您能告诉我用深度实体方法编写的整个代码吗? 这样有助于跟踪问题。

除了您提到以下语句

但是当我检查oData时,看不到新数据。

这可能是UI Side中的一个问题,您没有正确地复制对象。首先确保您在oModel.create中将数据与对象一起传递。

奄奄一息的小鱼
2楼-- · 2020-09-28 02:45

嗨Mantri

感谢您的回复。 让我尝试更清楚地描述我的问题。

我的任务是创建转储单。

从页面一侧,我根据用户输入构建项目列表,然后我毫无问题地调用了oModel.create方法:

 oHead.ItemSet =项目;
 oModel.create('/ObjectSet',oHead,null,
 函数(oData,oResponse){
 alert("成功");
 },
 function(){
 alert("内部错误");
 }
 ); 

此处头/项数据被毫无问题地传递到网关服务器。 在方法CREATE_DEEP_ENTITY中,我可以获取所有数据,调用FM创建转储单,然后生成TO号和物料号。 我尝试将这些数字传回页面,以便用户可以看到它们。

但是在成功函数中,我无法在对象oData中看到这些数字。

在CREATE_DEEP_ENTITY中,我有如下代码

案例iv_entity_set_name。
     当" TransferOrderSet"时。
       呼叫方法me-> create_to_deep
         出口
           iv_entity_name = iv_entity_name
           iv_entity_set_name = iv_entity_set_name
           iv_source_name = iv_source_name
           it_key_tab = it_key_tab
           it_navigation_path = it_navigation_path
           io_expand = io_expand
           io_tech_request_context = io_tech_request_context
           io_data_provider = io_data_provider
         输入
           er_deep_entity = lw_to_deep。
       copy_data_to_ref(
         出口
           is_data = lw_to_deep
         改变
           cr_data = er_deep_entity)。
 

在方法CREATE_TO_DEEP中,我有如下代码:

 io_data_provider-> read_entry_data(
     输入
       es_data = lr_to_deep)。
 *在这里准备数据
   通话功能" Z_XXXX"
     桌子
       格= lt_item
       返回= lt_ret2
     改变
       grhead = lw_head。
   读取表lt_ret2不能传输键类型='E'的任何字段。
   IF sy-subrc NE 0。
     将对应的lw_head移动到er_deep_entity。
     如果lt_item []不是INITIAL。
       选择*从ltap
         进入表lt_ltap
         对于lt_item中的所有条目
         哪里mblnr = lt_item-mat_doc
           AND mjahr = lt_item-doc_year。
       循环至lt_item INTO lw_item。
         将lt_ltap表读入带键mblnr = lw_item-mat_doc的lw_ltap
                                                  mjahr = lw_item-doc_year
                                                  mbpos = lw_item-doc_item。
         如果sy-subrc = 0。
           lw_item-trnsf_order = lw_ltap-tanum。
           lw_item-to_item = lw_ltap-tapos。
         万一。
         将lw_item附加到er_deep_entity-items。
       结局。
     万一。
   万一。
  

我真的可以期望这些数据自动传递回页面吗?

我是Fiori/oData的新手,所以我正在寻找良好的实践。 如果这不是标准方法,那怎么办? 只需调用oModel.read()?

一周热门 更多>