如何使用C#更新现有值UDF的有效值

2020-09-28 02:25发布

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

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


大家好,

在我的用户定义文件" U_WID_Test"中,我已经创建了3个有效值,例如示例

  • 值说明
  • 1 A
  • 2 B
  • 3 C

现在。 我正在尝试更新第4个有效值,因为value为4,Description为D。

  • 4 D

在这种情况下,我用最后一个值更新了我的有效值,这意味着用3-D代替了3-C,但是实际上,我正在像下面那样照顾更新有效值O/P

  • 值说明
  • 1 A
  • 2 B
  • 3 C
  • 4 D

以下提到UDF创建和更新代码

 public void AddUdf(字符串表名,字符串udfname,字符串描述,BoFieldTypes fieldType,BoFldSubTypes子类型,整数大小,字典字典,字符串defaultvalue)
         {
             GC.Collect();
             var SboCompany = ServiceLocator.SboCompany;
             var udfs = new List ();
             var rs =(Recordset)SboCompany.GetBusinessObject(BoObjectTypes.BoRecordset);
             rs.DoQuery(string.Format(" SELECT FieldID,来自CUFD的AliasID,TableID ='{0}'或TableID ='@ {0}'",表名)));
             同时(!rs.EoF)
             {
                 udfs.Add(new Udf((int)rs.Fields.Item(" FieldId")。Value,(string)rs.Fields.Item(" AliasID")。Value)));
                 rs.MoveNext();
             }
             元帅.ReleaseComObject(rs);
             var sboUdf =(UserFieldsMD)SboCompany.GetBusinessObject(BoObjectTypes.oUserFields);
             var ud = udfs.SingleOrDefault(x => x.Name.Equals(udfname));
             如果(ud!= null)
             {
                 如果(!sboUdf.GetByKey(表名,ud.Id))
                 {
                     sboUdf.GetByKey(" @" +表名,ud.Id);
                 }
             }
             其他
             {
                 sboUdf.TableName =表名;
                 sboUdf.Name = udfname;
             }
             var vv = sboUdf.ValidValues;
             sboUdf.Description =摘录;
             sboUdf.EditSize = size;
             sboUdf.Type = fieldType;
             sboUdf.SubType = subType;
             如果(字典!=空)
             {
                 var valids = new List ();

                 对于(int i = 0; i 

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

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


大家好,

在我的用户定义文件" U_WID_Test"中,我已经创建了3个有效值,例如示例

  • 值说明
  • 1 A
  • 2 B
  • 3 C

现在。 我正在尝试更新第4个有效值,因为value为4,Description为D。

  • 4 D

在这种情况下,我用最后一个值更新了我的有效值,这意味着用3-D代替了3-C,但是实际上,我正在像下面那样照顾更新有效值O/P

  • 值说明
  • 1 A
  • 2 B
  • 3 C
  • 4 D

以下提到UDF创建和更新代码

 public void AddUdf(字符串表名,字符串udfname,字符串描述,BoFieldTypes fieldType,BoFldSubTypes子类型,整数大小,字典字典,字符串defaultvalue)
         {
             GC.Collect();
             var SboCompany = ServiceLocator.SboCompany;
             var udfs = new List ();
             var rs =(Recordset)SboCompany.GetBusinessObject(BoObjectTypes.BoRecordset);
             rs.DoQuery(string.Format(" SELECT FieldID,来自CUFD的AliasID,TableID ='{0}'或TableID ='@ {0}'",表名)));
             同时(!rs.EoF)
             {
                 udfs.Add(new Udf((int)rs.Fields.Item(" FieldId")。Value,(string)rs.Fields.Item(" AliasID")。Value)));
                 rs.MoveNext();
             }
             元帅.ReleaseComObject(rs);
             var sboUdf =(UserFieldsMD)SboCompany.GetBusinessObject(BoObjectTypes.oUserFields);
             var ud = udfs.SingleOrDefault(x => x.Name.Equals(udfname));
             如果(ud!= null)
             {
                 如果(!sboUdf.GetByKey(表名,ud.Id))
                 {
                     sboUdf.GetByKey(" @" +表名,ud.Id);
                 }
             }
             其他
             {
                 sboUdf.TableName =表名;
                 sboUdf.Name = udfname;
             }
             var vv = sboUdf.ValidValues;
             sboUdf.Description =摘录;
             sboUdf.EditSize = size;
             sboUdf.Type = fieldType;
             sboUdf.SubType = subType;
             如果(字典!=空)
             {
                 var valids = new List ();

                 对于(int i = 0; i   
付费偷看设置
发送
4条回答
代楠1984
1楼-- · 2020-09-28 03:02

嗨,

您可以尝试删除该UDF并再次添加它吗? 那么它应该具有有效值。

亲切的问候,

ANKIT CHAUHAN

SAP SME支持

小灯塔
2楼-- · 2020-09-28 02:51

Hi Ankit,

感谢您的及时重播,

我认为这不是正确的方法,因为,如果我删除UDF并再次添加它,那么以前与数据相关的UDF会如何处理

我的UDF相关表中有一些旧数据,如果我删除UDF,我将丢失所有以前的数据相关UDF。

即使我已经尝试过相同的方法,也要删除UDF并再次添加它,但是正如我上面提到的那样,在这种情况下,我会丢失所有先前的数据。

您能建议我其他任何一种更新有效值的方法吗?

谢谢!

珍娜。

渐行渐远_HoldOn
3楼-- · 2020-09-28 02:55

您好Chenna,

如果您的方案要求您以编程方式添加值,那么我认为必须定期添加和/或更新新值。

在这种情况下,您应该创建一个用户定义的表,并将该表链接到UDF。 现在,您可以简单地在用户定义表中添加,删除和更新记录。 您甚至不一定需要使用DI API。 它将使您的代码更简单,生活也更轻松。

此致

Johan

能不能别闹
4楼-- · 2020-09-28 02:55

嗨,Chenna,

请记住,链接表仅包含所有可能的选择。 UDF保存实际选择的值。

您可以使用格式搜索在第二个UDF中显示所需的值,或者,如有必要,可以使应用程序在第二个UDF中填写该值。 作为UDF,您甚至可以使用直接SQL插入值。

此致

Johan

一周热门 更多>