点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) Hello Workflowe...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) Hello Workflowe...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
Hello Workflowers,
我们正在使用FM SAP_WAPI_WRITE_CONTAINER来更新工作项的特定容器元素。 特定容器元素的更新(写操作)工作正常,但是使用SAP_WAPI_WRITE_CONTAINER具有一个不良的副作用:
在同一工作项的容器中,我们还有一些多行容器元素,其内容未更新,也不应该更新-到目前为止,一切都很好。 但是,每次我们为有问题的工作项目调用SAP_WAPI_WRITE_CONTAINER时,所有多行容器元素都会加倍。 即多行元素中的先前行数为4,并且在FM调用之后,多行元素中的行数变为8,下次行数增加到16 a s o。
似乎FM SAP_WAPI_WRITE_CONTAINER在容器中附加多行容器元素的行,而不是像对非多行容器元素那样更新(即覆盖)现有的多行元素。
如果对包含多行元素的工作项执行以下测试,则可以轻松看到这一点:
1)SE37 FM SAP_WAPI_READ_CONTAINER
2)SE37 FM SAP_WAPI_WRITE_CONTAINER(从步骤1的结果中插入数据)
有人可以确认这是SAP_WAPI_WRITE_CONTAINER的设计还是错误?
我知道还有其他未发布的功能模块可用于更新容器元素,但是由于仅发布了WAPI功能,因此我将首先使用这些功能模块。
亲切的问候
Viveka Schwartz
嗨,
使用以下代码:
DATA:lv_text TYPE字符串,
< p> lt_cont_vals TYPE swconttab,lt_cont_defs TYPE swbconttab,
lo_oref TYPE REF TO cx_root,
lo_workitm_cntxt TYPE REF TO cl_swf_run_workitem_context,
lo_wi_conv类型参考到if_swf_cnt_conversion,lo_wi_cnt类型参考到cl_swf_cnt_container,
lif_wi_cnt类型参考到if_swf_ifs_parameter_container
p> *** ---获取工作项上下文
尝试。
调用方法cl_swf_run_workitem_context => get_instance
导出
im_wiid = im_wi_id
接收
re_instance = lo_workitm_cntxt。
捕获cx_swf_run_wim INTO lo_oref。
lv_text = lo_oref-> get_text( )。
结束。
*** ---获取工作项容器的实例
调用方法lo_workitm_cntxt-> if_wapi_workitem_context〜get_wi_container
接收
re_container = lif_wi_cnt。
*** ---将铸造工作项容器键入类CL_SWF_CNT_CONTAINRER
lo_wi_cnt?= lif_wi_cnt。 p>
***-设置值
TRY。
lo_wi_cnt-> if_swf_cnt_element_access_1〜element_set_value(
导出
名称='ITEM'
值= t_item []
)。
捕获cx_swf_cnt_cont_access_denied。 "将访问权限更改为不允许的容器
CATCH cx_swf_cnt_elem_not_found。"未找到元素
CATCH cx_swf_cnt_elem_access_denied。 "不得更改元素
CATCH cx_swf_cnt_elem_type_conflict。"值和当前参数之间的类型冲突
CATCH cx_swf_cnt_unit_type_conflict。 "单元和当前参数之间的类型冲突
CATCH cx_swf_cnt_elem_def_invalid。"元素定义(例如,类型名称)无效
CATCH cx_swf_cnt_invalid_qname。 "无效/已经使用的合格名称
CATCH cx_swf_cnt_container。"容器服务中的异常
ENDTRY。
*非常重要-将更改保存到DB
尝试。
lo_wi_cnt-> save_to_database()。
捕获cx_swf_cnt_invalid_por。 "无效的持久对象引用
ENDTRY。
lo_workitm_cntxt-> publish()。
提交工作并等待。
一周热门 更多>