C#DI API更新UDT字段

2020-08-22 05:51发布

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

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


嘿,我只是从di api开始,我在更新用户定义的字段时遇到了一些问题。

表:OITM

字段:U_overzicht_NL
项目代码:SMPEG0001
项目名称:test
U_overzicht_NL =测试

我想将SMPEG0001形式测试的U_overzicht_NL更新为test2。

项目名称我成功了,但似乎找不到正确的信息来对UDT执行此操作。

我在这里使用的代码是:

使用系统;
 使用System.Collections.Generic;
 使用System.ComponentModel;
 使用System.Data;
 使用System.Drawing;
 使用System.Linq;
 使用System.Text;
 使用System.Threading.Tasks;
 使用System.Windows.Forms;
 使用System.Configuration;

///<摘要>
///项目:SAP DI连接到服务器并更新项目名称
///Todo:添加引用System.Configuration和SAP DI版本> = 8.0
///默认字段,例如:ItemName = BoObjectTypes.oItems
///
 命名空间DIAPI_Froms
 {
     公共局部类Form1:表单
     {
         公共Form1()
         {
             InitializeComponent();
         }


         private void button1_Click(对象发送者,EventArgs e)
         {
             int RetVal = 0;
             ServerConnection连接=新的ServerConnection();


             如果(connection.Connect()== 0)
             {
                 label3.Text ="已连接:" + connection.GetCompany()。CompanyName;
                 SAPbobsCOM.Items vItem;
                 vItem = connection.GetCompany()。GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);


                 字符串sItemCode = txt_itemcode.Text;
                 如果(vItem.GetByKey(sItemCode))
                 {
                     vItem.ItemName = txt_itemname.Text;
                     RetVal = vItem.Update();
                     label4.Text =" Item:" + vItem.ItemCode +"更新为:" + vItem.ItemName;
                 }
                 connection.GetCompany()。Disconnect();
                 label3.Text ="与" + connection.GetCompany()。CompanyName +"已关闭"的连接;
             }
             其他
             {
                 MessageBox.Show(" error" + connection.GetErrorCode()+":" + connection.GetErrorMessage());
             }
         }
     }
 }


 

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

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


嘿,我只是从di api开始,我在更新用户定义的字段时遇到了一些问题。

表:OITM

字段:U_overzicht_NL
项目代码:SMPEG0001
项目名称:test
U_overzicht_NL =测试

我想将SMPEG0001形式测试的U_overzicht_NL更新为test2。

项目名称我成功了,但似乎找不到正确的信息来对UDT执行此操作。

我在这里使用的代码是:

使用系统;
 使用System.Collections.Generic;
 使用System.ComponentModel;
 使用System.Data;
 使用System.Drawing;
 使用System.Linq;
 使用System.Text;
 使用System.Threading.Tasks;
 使用System.Windows.Forms;
 使用System.Configuration;

///<摘要>
///项目:SAP DI连接到服务器并更新项目名称
///Todo:添加引用System.Configuration和SAP DI版本> = 8.0
///默认字段,例如:ItemName = BoObjectTypes.oItems
///
 命名空间DIAPI_Froms
 {
     公共局部类Form1:表单
     {
         公共Form1()
         {
             InitializeComponent();
         }


         private void button1_Click(对象发送者,EventArgs e)
         {
             int RetVal = 0;
             ServerConnection连接=新的ServerConnection();


             如果(connection.Connect()== 0)
             {
                 label3.Text ="已连接:" + connection.GetCompany()。CompanyName;
                 SAPbobsCOM.Items vItem;
                 vItem = connection.GetCompany()。GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);


                 字符串sItemCode = txt_itemcode.Text;
                 如果(vItem.GetByKey(sItemCode))
                 {
                     vItem.ItemName = txt_itemname.Text;
                     RetVal = vItem.Update();
                     label4.Text =" Item:" + vItem.ItemCode +"更新为:" + vItem.ItemName;
                 }
                 connection.GetCompany()。Disconnect();
                 label3.Text ="与" + connection.GetCompany()。CompanyName +"已关闭"的连接;
             }
             其他
             {
                 MessageBox.Show(" error" + connection.GetErrorCode()+":" + connection.GetErrorMessage());
             }
         }
     }
 }


 
付费偷看设置
发送
3条回答
hongfeng1314
1楼 · 2020-08-22 06:47.采纳回答

在进行了一些格式转换并查看文档后,我找到了适合我的解决方案。

 int RetVal = 0;
             字符串ItemCode = txt_itemcode.Text;
             字符串UDF_FIELD =" U_AantalPerPak";
             字符串UDF_VALUE = txt_value.Text;


             ServerConnection连接=新的ServerConnection();
             如果(connection.Connect()== 0)
             {
                 尝试
                 {
                     SAPbobsCOM.Items vItem;
                     vItem = connection.GetCompany()。GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
                     如果(vItem.GetByKey(ItemCode))
                     {
                         vItem.UserFields.Fields.Item(UDF_FIELD).Value = UDF_VALUE;
                         RetVal = vItem.Update();
                         MessageBox.Show(" updated");
                         connection.GetCompany()。Disconnect();
                         MessageBox.Show("连接已关闭");
                     }
                 }
                 抓住(前例外)
                 {
                     MessageBox.Show(ex.Message);
                 }
               
             }
 
落灬小鱼
2楼-- · 2020-08-22 06:40

当我执行此操作时,使用ItemCode作为标识符成功更新了记录。

小c菟菟
3楼-- · 2020-08-22 06:43

我添加了额外的检查,是否可以保存记录? 它显示了一个类似sap的错误。

如果(RetVal == 0)
 {

  Console.WriteLine("已连接并可以更新");  } else {Console.WriteLine(" Error:" + connection.GetCompany()。GetLastErrorCode()+"-" + connection.GetCompany()。GetLastErrorDescription());  } connection.GetCompany()。Disconnect();  } else {Console.WriteLine(" Error:" + connection.GetErrorCode()+":" + connection.GetErrorMessage());  } 

一周热门 更多>