点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我试图在Produ...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我试图在Produ...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我试图在Productionorder中更新Userfield,但该字段用于内部对行进行排序。
这是代码:
SAPbobsCOM.Recordset oRSZeile = DB_Query.GetRecordset(_oCompany,string.Format("从WOR1 WHERE DocEntry ='{0}'和U_IntSortNum> {1}中选择LineNum,VisOrder,U_IntSortNum> {1}按Visorder排序",this._FA。 DocEntry,IntSortNumRP005)); oRSZeile.MoveFirst(); SAPbobsCOM.ProductionOrders oFA = _oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oProductionOrders); 如果(oFA.GetByKey(Convert.ToInt32(_FA.DocEntry))) { 同时(!oRSZeile.EoF) { int ISortNum = Convert.ToInt16(oRSZeile.Fields.Item(" U_IntSortNum")。Value); int LNum = Convert.ToInt16(oRSZeile.Fields.Item(" LineNum")。Value); int VisO = Convert.ToInt16(oRSZeile.Fields.Item(" VisOrder")。Value); int ISortNum_Neu = _GetIntSortNum_Neu(Anzahl_Pigmente_Rezept,ISortNum); //ISortNum +(Anzahl_Pigmente_Rezept-1); oFA.Lines.SetCurrentLine(VisO); //如果(oFA.Lines.ItemType == ProductionItemType.pit_Text) //{ oFA.Lines.UserFields.Fields.Item(" U_IntSortNum")。Value = ISortNum_Neu; int x = oFA.Update(); 如果(x!= 0) { int errCode; 字符串错误 _oCompany.GetLastError(out errCode,out errorMsg); _SBOApp.MessageBox(_oCompany.GetLastErrorDescription()); } oRSZeile.MoveNext(); } }
此代码具有全部功能,除非"行"是文本行(项目类型-18; pit_text)
在这种情况下,将引发错误-5002。
我想在PO中的特定位置插入一些行,因此必须使用内部排序字段再次对行进行排序。
感谢您的任何建议
致谢
托马斯
嗨,
您无法通过DI API编辑文本类型的行的UserField,就像您无法通过用户界面进行编辑一样。
如果您需要存储一些数据以进行内部操作(例如排序),则可以直接通过SQL更新此字段(该字段是用户定义的,因此不被禁止。但是永远不要对系统字段执行此操作)。 请注意,即使直接在数据库中更新UF,该值也不会显示在SAP Client中。 作为另一个解决方法,您可以创建一个新的UDT来分别存储此数据。 因此,您可以在其中为每对DocEntry和LineNum存储内部排序编号。
Hi Ankit,
感谢您的澄清。
您好Sergei,
谢谢您的回答。
那节省了我很多时间!
如果没有禁止,我将用很少的SQL命令来完成。
非常感谢
向托马斯致敬
一周热门 更多>