BAPI_SALESORDER_CHANGE具有缓冲顺序

2020-08-16 11:18发布

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

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


此BAPI是否与缓冲的销售订单一起使用,即刚刚使用BAPI_SALESORDER_CREATEFROMDAT2创建的销售订单,但是未发出COMMIT?

就我而言,它根本找不到销售订单,因为它似乎仅搜索数据库,而不是缓冲区。

在我的情况下,关键要求是:
1)物品编号应自动生成,就像VA01一样;
2)要添加特定于物品的条件。

BAPI_SALESORDER_CREATEFROMDAT2正在调用SD_SALESDOCUMENT_CREATE,该文件在其文档中指定您不能同时执行以下操作:

使用表ORDER_ITEMS_IN指定项目数据。
您可以通过填写相应的字段来手动进行项目编号分配,或者系统会根据"自定义"设置自动执行 如果您将相应字段保留为首字母 如果您决定使用mySAP ERP进行项目编号分配,则无法指定计划行或条件,因为它们与项目之间没有可识别的关联。

因此,我考虑过使用BAPI_SALESORDER_CREATEFROMDAT2在没有任何条件的情况下生成销售单据,然后使用BAPI_SALESORDER_CHANGE添加条件。 为了将所有内容保存在一个LUW中,我不想在两者之间进行提交。

P.S。 有一些替代方法:

1)项目编号配置存储在表TVAK中。 所以我可以直接选择它。

2)还有另一个BAPI可以为我返回编号,而不创建销售订单:BAPI_SALESORDER_SIMULATE。 因此,我可以从其输出中复制数字。 效果很好,但是此技巧可能对即将进行的更多更改不起作用。 我希望能够在缓冲区中创建订单,更改订单,最后只更改COMMIT。

谢谢您的任何建议!

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

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


此BAPI是否与缓冲的销售订单一起使用,即刚刚使用BAPI_SALESORDER_CREATEFROMDAT2创建的销售订单,但是未发出COMMIT?

就我而言,它根本找不到销售订单,因为它似乎仅搜索数据库,而不是缓冲区。

在我的情况下,关键要求是:
1)物品编号应自动生成,就像VA01一样;
2)要添加特定于物品的条件。

BAPI_SALESORDER_CREATEFROMDAT2正在调用SD_SALESDOCUMENT_CREATE,该文件在其文档中指定您不能同时执行以下操作:

使用表ORDER_ITEMS_IN指定项目数据。
您可以通过填写相应的字段来手动进行项目编号分配,或者系统会根据"自定义"设置自动执行 如果您将相应字段保留为首字母 如果您决定使用mySAP ERP进行项目编号分配,则无法指定计划行或条件,因为它们与项目之间没有可识别的关联。

因此,我考虑过使用BAPI_SALESORDER_CREATEFROMDAT2在没有任何条件的情况下生成销售单据,然后使用BAPI_SALESORDER_CHANGE添加条件。 为了将所有内容保存在一个LUW中,我不想在两者之间进行提交。

P.S。 有一些替代方法:

1)项目编号配置存储在表TVAK中。 所以我可以直接选择它。

2)还有另一个BAPI可以为我返回编号,而不创建销售订单:BAPI_SALESORDER_SIMULATE。 因此,我可以从其输出中复制数字。 效果很好,但是此技巧可能对即将进行的更多更改不起作用。 我希望能够在缓冲区中创建订单,更改订单,最后只更改COMMIT。

谢谢您的任何建议!

付费偷看设置
发送
4条回答
clasier
1楼 · 2020-08-16 11:37.采纳回答

1。 此BAPI是否与缓冲的销售订单一起使用,即 刚刚使用BAPI_SALESORDER_CREATEFROMDAT2创建的,但是没有COMMIT

否。

2。 物品编号应该自动生成,就像VA01那样。

从VOV8中读取自定义项以了解物品增量,并将其应用于ORDER_ITEMS_IN(X), ORDER_SCHEDULES_IN (X),ORDER_CONDITIONS_IN(X)等。 对于BOM爆炸的项目,可能有些棘手,请确保测试此情况,尤其是在BOM包含大量项目的情况下。

3。 要添加特定于项目的条件。

我不明白为什么您必须使用BAPI_SALESORDER_CHANGE来添加条件。 我已经为此目的使用了BAPI_SALESORDER_CREATEFROMDAT2。 是的,您可以手动指定项目编号,但是无论如何都必须这样做,因为" 应该自动生成项目编号,就像VA01那样。"。 您可以从定价过程(V/08)中获得COND_ST_NO。

compass1988
2楼-- · 2020-08-16 11:27

使用INT_NUMBER_ASSIGNMENT确实可以像VA01一样工作,这是我的确切要求。
似乎也不是。 有任何限制,如SAP在文档中所述:您可以发送条件和计划数据。

我确实尝试了所有我认为可以读取缓冲区的选项(但失败了,希望我永远不需要它) ):
1)在执行BAPI之后恰好在打开调试器窗口的情况下调用VA03->在输入文档中将显示新生成的销售订单编号,但找不到该文档;
2)调用VA03 从我的程序本身,使用CALL TRANSACTION;
3)调用读取功能模块,例如 SD_SALES_DOCUMENT_READ。

它们都以消息号321 V1类结尾:SD文档&不在数据库中或尚未归档。
在内部,他们似乎都调用此表格来读取数据,因此可以解释为什么结果都是全部 一样:

执行beleg_lesen(sapmv45a)。

nice_wp
3楼-- · 2020-08-16 11:46

嗨,

请尝试通过BAPI本身指定行项目,并使用增量数字进行计算,并回答第二个问题

< pre> DATA:带标题行的order_bapicond类型占位0。

assign

 order_bapicond-itm_number = tab-itm_number。
         order_bapicond-cond_count = 1。
         order_bapicond-cond_type = tab-d_cond_type。
         order_bapicond-cond_value = tab-d_cond_rate/10。

调用相同的命令来订购BAPI

谢谢。

灬番茄
4楼-- · 2020-08-16 11:46

嗨阿比纳斯,

初始解决方案的工作方式如下:
-为项目提供了项目编号1;
-为项目提供了条件,将其称为项目编号1。

项目1有子项目,因此生成了子项目2和3。

但是,VA01自动将第一项生成为100,并将子项添加为101和102。

要了解为什么VA01提供的第一项为100,我可以从VOV8中读取配置,如以下答案所示(我在最初的问题中指定了TVAK表,该事务实际上由它维护)。 很好(尽管有些代码审阅者可能不满意直接从数据库中读取数据,而我为此找不到某种类方法或形式)。

所以我的想法是让SAP为我检索定制,这就是为什么我要继承BAPI的原因。

此外,CREATEFROMDAT2并没有提到您必须对收到的文档编号进行任何编辑之前的提交-我希望在这种情况下,无论它是否不是数据库,都可以使用它。 似乎并非如此。

P.S。 如果我使用两个已经编号的项目,那么从SAP进行自动编号是非常明智的(我担心会发生冲突):

-我输入项目1和2;

-项目2重命名为100,子项目编号为101、102,依此类推;

-项目1保持不变,子项目编号为2、3,依此类推。

但是,它仍然不像VA01那样,因为我会有主要项目100和200,而不是主要项目1和100。

感谢您抽出宝贵的时间回复!

一周热门 更多>