如何在已经存在的购买信息记录上创建另一种信息类型?

2020-09-06 16:37发布

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

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


专家您好,

我得到了创建程序的任务,该程序将批量创建购买信息记录。 我成功地使用下面这部分代码。

问题是,如果PIR已经存在,而我想创建一个具有不同信息类型的同一个(eine-esokz),则程序将创建具有全新信息记录编号(infnr)的新PIR,这是不可取的。 如何使用他的信息记录号扩展已经存在的PIR?

呼叫功能'ME_INITIALIZE_INFORECORD'。


 调用功能'ME_DIRECT_INPUT_INFORECORD'
导出
activity ='V' i_eina = ls_eina e_eine = ls_eine i_no_suppose ='X' i_vorga ='A'
导入
e_eina = ls_eina_new
e_eine = ls_eine_new
TABLES
t_head = lt_head
t_line = lt_line
EXCEPTIONS
textname_invalid = 1
error_message = 2
OTHERS = 3。 IF sy-subrc <> 0。 错误。 ELSE。
呼叫功能'ME_POST_INFORECORD'
导出
i_matnr = ls_eina-matnr
o_matnr = ls_eina-matnr
表格
t_eina_i = lt_eina。 调用功能" BAPI_TRANSACTION_COMMIT"。
ENDIF。

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

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


专家您好,

我得到了创建程序的任务,该程序将批量创建购买信息记录。 我成功地使用下面这部分代码。

问题是,如果PIR已经存在,而我想创建一个具有不同信息类型的同一个(eine-esokz),则程序将创建具有全新信息记录编号(infnr)的新PIR,这是不可取的。 如何使用他的信息记录号扩展已经存在的PIR?

呼叫功能'ME_INITIALIZE_INFORECORD'。


 调用功能'ME_DIRECT_INPUT_INFORECORD'
导出
activity ='V' i_eina = ls_eina e_eine = ls_eine i_no_suppose ='X' i_vorga ='A'
导入
e_eina = ls_eina_new
e_eine = ls_eine_new
TABLES
t_head = lt_head
t_line = lt_line
EXCEPTIONS
textname_invalid = 1
error_message = 2
OTHERS = 3。 IF sy-subrc <> 0。 错误。 ELSE。
呼叫功能'ME_POST_INFORECORD'
导出
i_matnr = ls_eina-matnr
o_matnr = ls_eina-matnr
表格
t_eina_i = lt_eina。 调用功能" BAPI_TRANSACTION_COMMIT"。
ENDIF。
付费偷看设置
发送
5条回答
Baoming ROSE
1楼-- · 2020-09-06 17:31

字段ESOKZ是主键的一部分,不能扩展/修改记录。

(否则,请查看FM ME_MAINTAIN_INFORECORD以"结束"先前的记录)

三十六小时_GS
2楼-- · 2020-09-06 17:24

是 是否有可能需要使用其他FM来维护/更新现有的PIR?

软件心理学工程师
3楼-- · 2020-09-06 17:19

我已经找到了解决方案。 对于每个面临类似问题的人,FM'ME_DB_UPDATE_INFORECORDS'都是答案:)

亦是此间程序员
4楼-- · 2020-09-06 17:40

请在您的问题中将"信息类型"替换为"信息记录"?

xfwsx85
5楼-- · 2020-09-06 17:22
# p #

我同意Raymond,这不是一个好答案。 通过调用ME_DB_UPDATE_INFORECORDS,就像进行直接数据库更新一样,因此如果出现问题,您将冒数据库完整性错误的风险,并且不提供SAP支持。

关于ME_INFORECORD_MAINTAIN,请参见以下说明:

一周热门 更多>