点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好BOPF开发人员,
正如@oliverjaegle在他的出色文章中所建议的那样,我们将业务代码分成小段,并将无状态调用放入节点确定中。
我的情况是:
-在确定代码A中,为节点B创建了一个新的瞬态节点实例。 对于节点B,在创建(det_B)时有一个AFTER_MODIFY。 如果我使用BOBT创建B实例,则插入可以正常工作并调用我的EXECUTE。 但是det_A代码中的io_modify-> create(" node B")却没有。
在END_MODIFY(/BOBF/CL_FRW_INT_ACCESS)中,iv_internal_modify为true,这可以防止在DO_MODIFY(/BOBF/CL_FRW)中调用do_detval(...)。
这很可悲,因为我不喜欢将det_B的代码放在det_A中
任何建议避免这种"内部修改"并获得所有确定的建议?
我试图在没有运气的det_A末尾调用end_modify()...
谢谢,
马蒂亚斯
你好,马蒂亚斯,
调用end_modify(iv_process_immediately = abap_true)不仅将更改应用于缓冲区,还调用任何确定和验证。 否则,只有在BOPF完成您的操作处理后,才能进行确定和确认。
亲切的问候,
Ivo
您好,Matthias,
我了解您是通过确定模式"瞬时节点的派生实例"来创建瞬时节点的实例的。 您的确定使用io_modify-> create()在按关联检索(RBA)调用期间创建那些实例。 这不会导致执行另一个在"创建"时触发的确定。
要了解这种现象,必须注意,在RBA期间隐式创建瞬态实例并不算作新实例的创建。 而是将其解释为对实例的检索,该实例存储在BOPF的直接访问范围之外。 因此,BOPF有意不对此节点执行"创建"确定。
第二个观察结果(" set_application_error")的解释与此类似:BOPF通常不允许在只读操作(例如RBA)期间进行任何数据修改。 这就是为什么您不能创建非瞬态节点实例的原因。
如果能够在RETRIEVE调用期间创建持久性实例,则可能会使大多数使用者感到困惑(请注意,可能有一些通用的框架在消耗BOPF BO,而您可能无法控制它们)。 如果重复的读取访问具有操作数据的副作用,那将是奇怪的。 因此,我认为您应该重新考虑您的设计。
亲切的问候,
伊沃(Ivo)
一周热门 更多>