BADI实现,用于通过ALE分配客户主数据

2020-08-15 03:52发布

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

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


嗨,

我已经实现了BADI定义CUSTOMER_ADD_DATA_BI,用于在方法FILL_ALE_SEGMENTS_OWN_DATA中填充idoctype Debmas06的自定义段Z1KNA1M(包含其他地址字段)。

直到我在分销模型中的细分市场E1KNA1M-Land1(美国,MX,CA)中基于客户所在的国家/地区引入了其他过滤器后,一切都很好。

现在,对于上述国家/地区的客户来说,它可以正常工作,但对于在该国家/地区无法生成通信idoc的其他国家/地区,则会出现错误,提示"内部错误:程序读取了表idoc_structure,命令data_select_for_block, 参数Z1KNA1M'。 在运行BD21或BD12时。

感谢您的答复。

谢谢

Nalinikalyan。

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

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


嗨,

我已经实现了BADI定义CUSTOMER_ADD_DATA_BI,用于在方法FILL_ALE_SEGMENTS_OWN_DATA中填充idoctype Debmas06的自定义段Z1KNA1M(包含其他地址字段)。

直到我在分销模型中的细分市场E1KNA1M-Land1(美国,MX,CA)中基于客户所在的国家/地区引入了其他过滤器后,一切都很好。

现在,对于上述国家/地区的客户来说,它可以正常工作,但对于在该国家/地区无法生成通信idoc的其他国家/地区,则会出现错误,提示"内部错误:程序读取了表idoc_structure,命令data_select_for_block, 参数Z1KNA1M'。 在运行BD21或BD12时。

感谢您的答复。

谢谢

Nalinikalyan。

付费偷看设置
发送
8条回答
土豆飞人
1楼 · 2020-08-15 03:57.采纳回答

你好kalyani,

您能为此提供帮助吗?

我正在使用badi CUSTOMER_ADD_DATA_BI将自定义细分数据发布到数据库(此处已配置我的fm或根据合作伙伴资料调用了此badi)

在这里,我想接收自定义段和相应的sdata,然后将其提交给E_BI_STRUCT(据我所知,如果我们提交给e_bi_struct sap,将处理bdc)

但是我看到方法MODIFY_BI_STRUCT_FROM_STD_SEG没有导入自定义段,方法PASS_NON_STANDARD_SEGMENT没有导出或更改参数。

我希望使用此badi本身提交自定义细分数据。

所以请建议解决这个问题。

非常感谢您的帮助。

预先感谢。

半个程序猿
2楼-- · 2020-08-15 04:13

纳利尼·卡利安(Nalini Kalyan)是对的。

您可以通过PASS_NON_STANDARD_SEGMENT方法将I_SEGMENT_DATA中存在的自定义细分数据捕获到内部表中。

将自定义细分视为" ZABCDEFGH"

如果I_SEGMENT_NAME ='ZABCDEFGH'

将I_SEGMENT_DATA附加到ITAB。

ENDIF。

即读取segment_name并捕获内部表中的数据,并可用于填充FILL_BI_TABLE_WITH_OWN_SEGMENT中的T_BI_DATA。

希望这会有所帮助。

CPLASF-自律
3楼-- · 2020-08-15 04:15

得到答案,因为扩展名需要在BADI中传递,而起初不会传递。

打一壶酱油
4楼-- · 2020-08-15 03:58

嗨 卡利亚尼,

我遇到了同样的错误-

'内部错误:程序读取表idoc_structure,命令data_select_for_block,参数Zemail。' 在运行BD21/BD14时

我向Cremas03 Idoc类型添加了自定义细分。

您做了什么来解决这个问题?

添加扩展名是什么意思?

谢谢

Preeta

hongfeng1314
5楼-- · 2020-08-15 03:52

你好Nalini,

我有一个类似的要求,即我在KNB1表中添加了一个新字段,并且此数据通过DEBMAS06发送到另一个SAP系统。 因此,我还需要将此附加数据也传递给另一个系统。

我为DEBMAS06创建了扩展,并为其添加了自定义细分。 现在,我想使用CUSTOMER_ADD_DATA_BI来传递自定义细分数据。

如何实现此目标,即我需要在所有方法中包括发送额外数据的代码吗?

请您指导我执行以下操作。

此致

钱德拉(Chandra)

南山jay
6楼-- · 2020-08-15 03:56

嗨kalyani,

您能告诉我如何实现方法FILL_ALE_SEGMENTS_OWN_DATA吗?

我尝试这样做,但是找不到解决方法。

非常感谢!

空代码
7楼-- · 2020-08-15 03:55

您好,纳利尼,

可以帮助您填充Z段(ZTAX),该段已添加到ZDEBMAS07(从DEBMAS07复制)中。

此部分最后添加了,我只能在BADI CUSTOMER_ADD_DATA_BI中看到单方法FILL_ALE_SEGMENTS_OWN_DATA。 但是没有逻辑,我该如何将其定位在树的最后。

我很容易在E1KNA1M之后或E1KNA11之后说。 请显示一些东西。

我仍然写的代码是:

类型:ty_j_1imocust的开始,

j_1icstno TYPE j_1imocust-j_1icstno,

j_1ilstno TYPE j_1imocust-j_1ilstno,

ty_j_1imocust结束。

数据:ls_j_1imocust1 TYPE ty_j_1imocust。

数据:lv_kunnr TYPE kna1-kunnr,

ls_t_idoc_data TYPE edidd。

数据:lv_flag类型为char1。

数据:lv_j1icstno TYPE j_1imocust-j_1icstno,

lv_j1ilstno TYPE j_1imocust-j_1ilstno。

数据:ls_edidd TYPE edidd。

数据:ls_j_1imocust类型j_1imocust。

清除ls_t_idoc_data。

使用segnam ='E1KNA1M'键将表t_idoc_data读入ls_t_idoc_data。

如果sy-subrc = 0。

lv_kunnr = ls_t_idoc_data-sdata + 3(10)。

ENDIF。

清除ls_t_idoc_data。

使用segnam ='ZTAX'将表t_idoc_data读入ls_t_idoc_data。

如果sy-subrc = 0。

删除t_idoc_data索引sy-tabix。

ENDIF。

清除ls_j_1imocust。

选择单个*

从j_1imocust到ls_j_1imocust,其中kunnr = lv_kunnr。

如果sy-subrc = 0。

将ls_j_1imocust-j_1icstno移动到ls_j_1imocust1-j_1icstno。

将ls_j_1imocust-j_1ilstno移动到ls_j_1imocust1-j_1ilstno。

ls_edidd-mandt = sy-mandt。

ls_edidd-segnam ='ZTAX'。

ls_edidd-sdata = ls_j_1imocust1。

附加ls_edid到t_idoc_data。

ENDIF。

一周热门 更多>