点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好吗?
在跨实体派生中,我需要一些帮助和指导。 这是我第一次实现此功能,我看到了一些示例,但这些示例并不那么容易理解,因此在BP中找不到任何示例。
我的要求看起来很简单。 当实体BP_CENTRL = 012中的识别类型时,我必须获取ID号的最后4位数字,并在AD_POSTAL实体中设置地区和城市。
我找到了一个博客,我尝试遵循代码的逻辑,但是它无法正常工作,我感到很绝望,因为我必须今天完成此工作。
这是我的代码。 在尝试执行真正的需求之前,我只是想在STREET字段中添加一些价值。
我得到这个例外。
请,我感谢您的帮助。
最诚挚的问候
罗纳尔多·维埃拉。
if_ex_usmd_rule_service2〜方法衍生。 常量:gc_city1输入usmd_fieldname值'STREET'。 数据:lo_context类型引用到if_usmd_app_context, lr_derived_data_struc类型引用数据, lr_derived_data_table类型引用数据, lr_chd_data类型引用数据, lr_mod_data类型引用数据, ls_key类型为usmd_s_value, lt_attribute类型usmd_ts_fieldname, lt_key类型usmd_ts_value, lt_changed_entities输入usmd_t_entity, lv_edition类型为usmd_edition。 字段符号:输入任意, 键入任何, 键入任何表, 键入任何表, 键入任何。 "获取更改的实体。 io_changed_data-> get_entity_types(导入et_entity = lt_changed_entities)。 读取表lt_changed_entities,但不传输键table_line ='BP_CENTRL'的字段。 如果sy-subrc ne 0。 返回。 万一。 io_changed_data-> read_data(导出i_entity ='BP_CENTRL' 导入er_t_data_upd = lr_chd_data er_t_data_mod = lr_mod_data)。 如果lr_chd_data没有绑定。 返回。 万一。 将lr_chd_data-> *分配给 。 如果sy-subrc ne 0或 是初始的。 "最后检查,以防止短暂的倾销。 返回。 万一。 尝试。 lr_derived_data_table = io_write_data-> create_data_reference(i_entity ='AD_POSTAL' i_struct = io_model-> gc_struct_key_attr)。 将lr_derived_data_table-> *分配给 。 像 行一样创建数据lr_derived_data_struc。 将lr_derived_data_struc-> *分配给 。 捕获cx_usmd_write_error。 "如果需要,您可以将异常转换为ET_MESSAGE_INFO。 努力。 "当前版本必须是移交给IO_WRITE_DATA的数据的一部分。 尝试。 lo_context?= cl_usmd_app_context => get_context()。 捕获cx_sy_move_cast_error。 返回。 努力。 如果lo_context没有绑定。 返回。 万一。 字段符号: 键入任何。 在 循环并分配 。 清除: , 。 将结构 的组件'ZZIDTYPE'分配给 。 检查sy-subrc eq 0并且 不是初始的。 如果 等于'012'。 将结构 的组件'ZZDEPNIT'分配给 。 检查sy-subrc eq 0并且 不是初始的。 将结构 的组件gc_city1分配给 。 检查sy-subrc eq 0。 ='PRUEBA'。 将gc_city1插入表lt_attribute中。 尝试。 数据:lo_exp类型引用到cx_usmd_write_error。 将 插入表 中。 io_write_data-> write_data(导出i_entity ='AD_POSTAL' it_attribute = lt_attribute it_data = )。 将cx_usmd_write_error捕获到lo_exp中。 努力。 万一。 结束循环。 终止方法。
(12.3 kB)
你好罗纳尔多,
您的代码没有问题,但是您还需要在结构中填充ADDRNO和BP_HEADER。
您可以获取/派生下一个可用的地址号以填充结构,但是您的要求只是填充城市,因此请等到用户在地区,国家/地区创建条目。 这将在ad_postal中创建条目。 使用io_changed_data读取ad_postal数据,然后填充region字段,然后使用io_write_data将其写回。
您好,罗纳尔多,
很简单。 要更新Ad_postal中的字段,bp_header和addrno应该具有值。 当用户创建任何地址数据时(他们应该基本上是因为必须填写国家和城市),SAP将在Ad_postal中创建条目。 当您只想导出区域时,只需在io_changed_data中查找AD_postal条目,读取表并更新您的region字段并将其写回即可。
如果您决定采用另一种基本上不需要的方法,只需获取下一个地址号,然后使用io_changed _data获得bp_number。 在结构中更新这两个字段,只更新要在案例区域中更新的字段,然后将其写回。
与第一个一起去。 很简单。
感谢和问候,
Logan.D
一周热门 更多>