点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在将SAP 9.2与UI和DI API和C#一起使用。 我需要在插件中将行添加到"销售报价"中,而不是使用DI API,而是使用UI(在需要向其中添加行时,并不总是保存SalesQ。)。
我所做的是,冻结表单并手动添加行,如下所示:
public void AddRows(Form oForm,WtestResults wr) { 尝试 { oForm.Freeze(true); NumberFormatInfo nfi =新的NumberFormatInfo(); nfi.NumberDecimalSeparator ="。"; nfi.NumberDecimalDigits = 4; 矩阵oMatrix =(Matrix)oForm.Items.Item(SalesQuotationItemIdentifierDefinition.Grid.ItemID).Specific; int rowCounter = 1; int rowIndex = oMatrix.RowCount-1; foreach(wr.rows中的var wrr) { oMatrix.AddRow(1,rowIndex ++); //oMatrix.ClearRowData(rowIndex); <-不得删除内容 SBOApp.StatusBar.SetText($"添加行{rowCounter ++}/{wr.Rows.Count}",BoMessageTime.bmt_Medium,BoStatusBarMessageType.smt_Success); SBOTools.SetValueComboBoxForMatrixCell(oMatrix," 257",rowIndex,0);//常规 //SBOTools.SetValueComboBoxForMatrixCell(oMatrix," 40",rowIndex," Open"); <---表格不可编辑! SBOTools.SetValueEditTextForMatrixCell(oMatrix," 1",rowIndex,wrr.ItemNumber); SBOTools.SetValueEditTextForMatrixCell(oMatrix," 11",rowIndex,wrr.Quantity.ToString(nfi)); SBOTools.SetValueEditTextForMatrixCell(oMatrix," 14",rowIndex,"" + Math.Round(wrr.UnitPrice,0)); SBOTools.SetValueEditTextForMatrixCell(oMatrix," 15",rowIndex,"" + wrr.Disc); SBOTools.SetValueEditTextForMatrixCell(oMatrix," 212",rowIndex,"" + wrr.MENeve); } } 最后 { oForm.Freeze(false); } SBOApp.StatusBar.SetText($"添加成功的行。",BoMessageTime.bmt_Medium,BoStatusBarMessageType.smt_Success); } //----- 公共静态无效SetValueEditTextForMatrixCell(Matrix oMatrix,字符串ColUID,int rowIndex,字符串newVal) { 列oColumn = oMatrix.Columns.Item(ColUID); 单元格oCell = oColumn.Cells.Item(rowIndex); EditText oEdit =(EditText)oCell.Specific; oEdit.Value = newVal; oEdit.Item.Click(); }
我试图事先清理行,但是很快意识到它将删除重要的值,例如行状态,我也无法手动更改。
如果我不清除该行,则大多数情况下它将起作用,但有时它仍会插入一个具有NULL状态的新行(SAP也允许将其保存到数据库,因此我检查了QUT1表)。 我不知道为什么有时会添加一个状态无效的行的原因,但是我真的很想解决这个问题。
如何将行状态更改为始终正确?
您可能想尝试不手动添加行,而是先填充ItemCode单元格,然后填充其他列,SAP会自动触发并添加新行,然后始终始终在最后一行中添加项目。/p>
谢谢。 时间会证明问题是否仍然存在,但似乎也不需要显式的AddRow调用就可以解决问题。
一周热门 更多>