使用DI API创建销售订单,但是将默认的项目描述更改为另一个名称。

2020-08-23 20:00发布

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

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


你好

在我们公司,我们对商品采用可重复使用的商品代码系统。 示例:

商品代码 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 项目说明

REUSABLE_001。 。 。 。 。 。 。 。 。 。 。 。 MISC_GOODS。

REUSABLE_002。 。 。 。 。 。 。 。 。 。 。 。 MISC_GOODS

等等 直到...

REUSABLE_100。 。 。 。 。 。 。 。 。 。 。 。 MISC_GOODS

请注意,所有项目在 Item Master文件中都具有相同的 ItemDescription :" MISC_GOODS"。

--------------------------------------------------- ------------------

我们要使用DI API创建 销售订单 ,但我们要替换默认的 ItemDescription (" MISC_GOODS" 非常有意义),通过客户的描述(例如BANANAS)

-

我们使用foll。 技巧:

  • 填充标题
  • 填充第1 st
  • 添加新行并插入商品代码
  • 然后删除新创建的行。 因此,仅保留第1 st
  • 现在将客户的描述添加到 ItemDescription 字段中。
  • 最后,添加销售订单。

我们的把戏很完美。 当我们在SAP中打开销售订单时,我们发现客户的描述(BANANAS)正确显示在项目描述字段中(而不是" MISC_GOODS")

--------------------------------------------------- ---------------------

在Row2中添加第2个 nd 项时会出现问题。

假设客户订购了2件商品,如下所示:

商品代码 。 。 。 。 。 。 。 。 。 。 。 。 。 。 客户的描述

REUSABLE_001。 。 。 。 。 。 。 。 。 。 香蕉

REUSABLE_002。 。 。 。 。 。 。 。 。 。 玉米片

--------

运行代码时,正确添加了2 nd 行。 但是" CORNFLAKES "将转到第1 st 行,而不是第2 nd 行。

我们的SAP销售订单屏幕如下:

商品代码 。 。 。 。 。 。 。 。 。 。 。 。 项目说明

REUSABLE_001。 。 。 。 。 。 。 玉米片 ***

REUSABLE_002。 。 。 。 。 。 。 MISC_GOODS

---

注意:***最初是:" MISC_GOODS"(系统默认值)

然后替换为" BANANAS"(客户的第一项)

然后替换为" CORNFLAKES"(客户的第二项)

似乎DI API正在替换第一行而不是最后一行(第二行)

---------------------------------------

问题:

可能出了什么问题? 缺少什么?

我想我们必须告诉DI API修改哪一行。 不知道该怎么做。

如何告诉SAP修改LAST行(即第一行)的"项目描述"?

非常感谢您的帮助。

================================================ ==============================

我们的简化代码,仅显示相关行:

'HEADER-ORDR

oOrder.CardCode =" BP11518"

'//其他字段类似


1 ST ROW – RDR1

oOrder.Lines。 ItemCode =" REUSABLE_001"。 。 。 。 。 。 。 。 。 。 。 '//客户订购的第一项代码

’类似地,对于其他字段,除了自动插入的ItemDescription字段之外。

oOrder.Lines.Add()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘//添加第二行

oOrder.Lines.ItemCode =" REUSABLE_100" ‘。 。 。 。 。 。 。 '//任何代码都可以。-只是放一些东西

oOrder.Lines.Delete()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘//删除2 nd 行。 因此,我们仍然位于1 st Row。

oOrder.Lines.ItemDescription ="香蕉"。 。 。 。 。 。 。 。 ‘//用客户的描述替换系统描述。


‘2 nd ROW -RDR1

oOrder.Lines.Add()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘//添加2 nd

oOrder.Lines.ItemCode =" REUSABLE_002"。 。 。 。 。 。 。 。 。 '//客户订购的第二项代码

’类似地,对于其他字段,除了自动插入的ItemDescription字段之外。

oOrder.Lines.Add()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘///添加3 rd

oOrder.Lines.ItemCode =" REUSABLE_100"。 。 。 。 。 。 。 。 。 。 ‘//任何代码都可以-只是放一些东西

oOrder.Lines.Delete()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。‘//删除3 rd 行。 因此,我们仍然位于2 nd 行。 (是我们吗?

oOrder.Lines.ItemDescription =" CORNFLAKES"。 。 。 。 。 。 。 。‘//用客户的描述替换系统描述。


'已添加销售订单

IRetCode = oOrder.Add


谢谢

利昂

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

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


你好

在我们公司,我们对商品采用可重复使用的商品代码系统。 示例:

商品代码 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 项目说明

REUSABLE_001。 。 。 。 。 。 。 。 。 。 。 。 MISC_GOODS。

REUSABLE_002。 。 。 。 。 。 。 。 。 。 。 。 MISC_GOODS

等等 直到...

REUSABLE_100。 。 。 。 。 。 。 。 。 。 。 。 MISC_GOODS

请注意,所有项目在 Item Master文件中都具有相同的 ItemDescription :" MISC_GOODS"。

--------------------------------------------------- ------------------

我们要使用DI API创建 销售订单 ,但我们要替换默认的 ItemDescription (" MISC_GOODS" 非常有意义),通过客户的描述(例如BANANAS)

-

我们使用foll。 技巧:

  • 填充标题
  • 填充第1 st
  • 添加新行并插入商品代码
  • 然后删除新创建的行。 因此,仅保留第1 st
  • 现在将客户的描述添加到 ItemDescription 字段中。
  • 最后,添加销售订单。

我们的把戏很完美。 当我们在SAP中打开销售订单时,我们发现客户的描述(BANANAS)正确显示在项目描述字段中(而不是" MISC_GOODS")

--------------------------------------------------- ---------------------

在Row2中添加第2个 nd 项时会出现问题。

假设客户订购了2件商品,如下所示:

商品代码 。 。 。 。 。 。 。 。 。 。 。 。 。 。 客户的描述

REUSABLE_001。 。 。 。 。 。 。 。 。 。 香蕉

REUSABLE_002。 。 。 。 。 。 。 。 。 。 玉米片

--------

运行代码时,正确添加了2 nd 行。 但是" CORNFLAKES "将转到第1 st 行,而不是第2 nd 行。

我们的SAP销售订单屏幕如下:

商品代码 。 。 。 。 。 。 。 。 。 。 。 。 项目说明

REUSABLE_001。 。 。 。 。 。 。 玉米片 ***

REUSABLE_002。 。 。 。 。 。 。 MISC_GOODS

---

注意:***最初是:" MISC_GOODS"(系统默认值)

然后替换为" BANANAS"(客户的第一项)

然后替换为" CORNFLAKES"(客户的第二项)

似乎DI API正在替换第一行而不是最后一行(第二行)

---------------------------------------

问题:

可能出了什么问题? 缺少什么?

我想我们必须告诉DI API修改哪一行。 不知道该怎么做。

如何告诉SAP修改LAST行(即第一行)的"项目描述"?

非常感谢您的帮助。

================================================ ==============================

我们的简化代码,仅显示相关行:

'HEADER-ORDR

oOrder.CardCode =" BP11518"

'//其他字段类似


1 ST ROW – RDR1

oOrder.Lines。 ItemCode =" REUSABLE_001"。 。 。 。 。 。 。 。 。 。 。 '//客户订购的第一项代码

’类似地,对于其他字段,除了自动插入的ItemDescription字段之外。

oOrder.Lines.Add()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘//添加第二行

oOrder.Lines.ItemCode =" REUSABLE_100" ‘。 。 。 。 。 。 。 '//任何代码都可以。-只是放一些东西

oOrder.Lines.Delete()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘//删除2 nd 行。 因此,我们仍然位于1 st Row。

oOrder.Lines.ItemDescription ="香蕉"。 。 。 。 。 。 。 。 ‘//用客户的描述替换系统描述。


‘2 nd ROW -RDR1

oOrder.Lines.Add()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘//添加2 nd

oOrder.Lines.ItemCode =" REUSABLE_002"。 。 。 。 。 。 。 。 。 '//客户订购的第二项代码

’类似地,对于其他字段,除了自动插入的ItemDescription字段之外。

oOrder.Lines.Add()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ‘///添加3 rd

oOrder.Lines.ItemCode =" REUSABLE_100"。 。 。 。 。 。 。 。 。 。 ‘//任何代码都可以-只是放一些东西

oOrder.Lines.Delete()。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。‘//删除3 rd 行。 因此,我们仍然位于2 nd 行。 (是我们吗?

oOrder.Lines.ItemDescription =" CORNFLAKES"。 。 。 。 。 。 。 。‘//用客户的描述替换系统描述。


'已添加销售订单

IRetCode = oOrder.Add


谢谢

利昂

付费偷看设置
发送
3条回答
hongfeng1314
1楼 · 2020-08-23 21:04.采纳回答

您好莱恩赖

如果您只想更改商品说明和 项目代码将有所不同,您是否可以尝试使用以下示例代码并检查其是否有用?

 SAPbobsCOM.Documents oSalesOrder =(SAPbobsCOM.Documents)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders)  ;
                 int i = 0;
                 oSalesOrder.CardCode =" C20000";
                 oSalesOrder.DocDueDate = DateTime.Today;
                 oSalesOrder.Comments ="通过DI创建";


                 如果(oSalesOrder.Lines.Count == 1)
                 {
                     i = oSalesOrder.Lines.Count;
                     oSalesOrder.Lines.SetCurrentLine(i-1);
                     oSalesOrder.Lines.ItemCode =" A00001";
                     oSalesOrder.Lines.ItemDescription =" BANANAS";


                     oSalesOrder.Lines.Add();
                     i = oSalesOrder.Lines.Count;
                     oSalesOrder.Lines.SetCurrentLine(i-1);
                     oSalesOrder.Lines.ItemCode =" A00002";
                     oSalesOrder.Lines.ItemDescription =" CORNFLAKES";
                     int A = oSalesOrder.Add();


                     如果(A!= 0)
                     {
                         MessageBox.Show(oCompany.GetLastErrorDescription());
                     }
                 }
 

希望有帮助!

亲切的问候,

ANKIT CHAUHAN

SAP Business One支持

三十六小时_GS
2楼-- · 2020-08-23 20:45

您好李礼Kan

在SAP Business One客户端中,您必须按项目描述列中的 CTRL + TAB 键,以设置有关以下内容的自定义描述: 该项目。 我认为DI API没有适合您的此类选项。 因此,您必须在设置项目代码本身的同时设置项目说明。 我从未遇到过任何不允许您设置项目自定义说明的问题。 我正在使用9.3 PL12。

我认为您的程序存在一些逻辑问题,该问题将项目说明设置为原始项目。

对于另一个问题: if (oSalesOrder.Lines.Count == 1)您不必担心。 我只是想检查一下。 这不会以其他方式影响您的要求。

亲切的问候,

ANKIT CHAUHAN

SAP Business One支持

闻人可可
3楼-- · 2020-08-23 20:49

嗨,Ankit

您的示例代码可以创造奇迹。 正是我想要的!

SetCurrentLine()是我的代码中缺少的内容。

但是,这让我完全感到困惑!

--------------------------------------

第一个谜题:

 oSalesOrder.Lines.ItemCode =" A00001";
 oSalesOrder.Lines.ItemDescription =" BANANAS"; 

在之前的尝试中,我发现不可能同时输入 ItemCode 和 ItemDescription 。

这是因为,当我们输入 ItemCode 时,SAP自动显示默认的 ItemDescription (" MISC_GOODS"),并且不接受您想要的" BANANAS" 强制。

这就是为什么我必须添加新行的原因:强制SAP完成第一行。

然后删除刚才添加的行。 然后,我用"香蕉"覆盖了" MISC_GOODS"。

------

此过程类似于手动填写SAP中的销售订单表格的过程:

我们输入 ItemCode ,然后用 past 标签 ItemDescription 字段允许SAP填充它。

只有这样,我们才能用我们自己的任意描述覆盖默认的 ItemDescription 。

-------

但是您的代码似乎表明您可以同时输入 ItemCode 和任何任意 ItemDescription 。 为什么? 是什么让您的代码正常工作?

我能发现的唯一区别是您执行oOrder.Lines.SetCurrentLine(i-1)。

这可以解释为什么您成功但我失败了吗? 真的很困惑!

--------------------------------------------------- ----------------------------------

第二个拼图:

 if(oSalesOrder.Lines.Count == 1)

测试 Lines.Count = 1 的原因是什么?

--------------------------------------------------- ----------------------------------

最好的问候

利昂

我将按照今天晚些时候的回答关闭此线程。

一周热门 更多>