使用DI API同时进行交易

2020-09-15 21:59发布

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

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


早安专家,我正在使用 asp.net 的Web应用程序来创建销售报价 。 通过执行一些测试,我意识到当两个用户想要同时创建一个文档时会出现问题。

如果我开始一项事务并等待其完成以立即开始新事务,则没有问题,两个文档均正确创建; 但是,如果在处理第一个事务的过程中,我并行启动第二个事务,那就是问题出在这里:无限期地加载两个用户的页面并且冻结数据库中的表(我想避免数据损坏或 相似的东西)。

我知道DI API不支持多线程,并且一次只需要完成一个事务,我想问一下您是否知道有什么方法可以使"等待行" 等待(保留)第二笔交易,直到该笔交易正在正确完成。

创建文档的方法如下:

 int iret = Cotizacion.Add();

 如果(iret == 0)
 {
     docEntry = oCompany.GetNewObjectKey();

     如果(oCompany.InTransaction)
         oCompany.EndTransaction(BoWfTransOpt.wf_Commit);

     如果(oCompany.Connected)
         oCompany.Disconnect();

     System.Runtime.InteropServices.Marshal.ReleaseComObject(Cotizacion);

     ShowMessage(" Correct!");
     con.Close();
 }
 其他
 {
     int errNum; 字符串errMsj;
     oCompany.GetLastError(out errNum,out errMsj);

     如果(oCompany.InTransaction)
         oCompany.EndTransaction(BoWfTransOpt.wf_RollBack);

     字符串错误="错误:" + errMsj +" |代码:" + errNum.ToString();
     ShowMessage(错误,MessageType.Error);
 } 

我先感谢您能给我的任何支持,例子或指导。 最好的问候。

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

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


早安专家,我正在使用 asp.net 的Web应用程序来创建销售报价 。 通过执行一些测试,我意识到当两个用户想要同时创建一个文档时会出现问题。

如果我开始一项事务并等待其完成以立即开始新事务,则没有问题,两个文档均正确创建; 但是,如果在处理第一个事务的过程中,我并行启动第二个事务,那就是问题出在这里:无限期地加载两个用户的页面并且冻结数据库中的表(我想避免数据损坏或 相似的东西)。

我知道DI API不支持多线程,并且一次只需要完成一个事务,我想问一下您是否知道有什么方法可以使"等待行" 等待(保留)第二笔交易,直到该笔交易正在正确完成。

创建文档的方法如下:

 int iret = Cotizacion.Add();

 如果(iret == 0)
 {
     docEntry = oCompany.GetNewObjectKey();

     如果(oCompany.InTransaction)
         oCompany.EndTransaction(BoWfTransOpt.wf_Commit);

     如果(oCompany.Connected)
         oCompany.Disconnect();

     System.Runtime.InteropServices.Marshal.ReleaseComObject(Cotizacion);

     ShowMessage(" Correct!");
     con.Close();
 }
 其他
 {
     int errNum; 字符串errMsj;
     oCompany.GetLastError(out errNum,out errMsj);

     如果(oCompany.InTransaction)
         oCompany.EndTransaction(BoWfTransOpt.wf_RollBack);

     字符串错误="错误:" + errMsj +" |代码:" + errNum.ToString();
     ShowMessage(错误,MessageType.Error);
 } 

我先感谢您能给我的任何支持,例子或指导。 最好的问候。

付费偷看设置
发送
2条回答
CJones
1楼-- · 2020-09-15 22:53

您好路易斯·比利亚雷亚尔

你是对的。 请注意,物品将在创建交货时被锁定,以保持交货/订单中每个项目的承诺/库存数量。

这将意味着创建具有相同项目的文档,这些文档按顺序而不是并行进行。

因此,我们将要求您对每个文档的不同项目进行测试。

希望有帮助!

亲切的问候,

ANKIT CHAUHAN

SAP Business One支持

CPLASF-自律
2楼-- · 2020-09-15 22:34

您好,Ankit谢谢您的回答,因为该页面的目标是多个用户可以创建退出,所以要求他们可以向某些用户注册文档 文章在同一时间。

是否有一种方法可以通过DI API保持事务直到当前事务结束? 这样,可以防止发生相同的问题。

关于。 -路易斯。

一周热门 更多>