当行来自基础文档时未设置UDF值

2020-09-08 01:19发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我试图通过在行中指定基本文档密钥...

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

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


我试图通过在行中指定基本文档密钥来创建目标文档

例如:

 TargetDoc.Lines.BaseEntry = SourceDoc.Lies.DocEntry

 TargetDoc.Lines.BaseType = SourceDoc.Lies.ObjType

 TargetDoc.Lines.BaseLine = SourceDoc.Lies.LineNum 

设置完这些信息后,我试图在Header和line中设置一些UDF值。 发现未在此处设置UDF值。

目标文档是PO,基础文档是SO。 创建的文档没有错误,但是缺少UDF值。

付费偷看设置
发送
10条回答
天桥码农
1楼-- · 2020-09-08 01:41

亲爱的 Sinoj George

感谢您的更新。 很抱歉给您带来不便,因为我没有看到您在此处提供的第二条评论。 设置UDF的方式是正确的。 考虑下面的代码;

 SAPbobsCOM.Documents oDelivery;
             oDelivery =(((SAPbobsCOM.Documents)(Menu.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDeliveryNotes)));;
             oDelivery.GetByKey(int.Parse(maxEntryAf));


             SAPbobsCOM.Documents oInvoice;
             oInvoice =(((SAPbobsCOM.Documents)(Menu.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices))));
            
             oInvoice.CardCode = oDelivery.CardCode;
             oInvoice.CardName = oDelivery.CardName;
             oInvoice.DocDate = oDelivery.DocDate;
             oInvoice.DocDueDate = oDelivery.DocDueDate;
             oInvoice.TaxDate = oDelivery.TaxDate;
             oInvoice.Comments = oDelivery.Comments;
             oInvoice.UserFields.Fields.Item(" U_BLT")。Value =" Y";
             oInvoice.DocTotal = oDelivery.DocTotal;
             oInvoice.ContactPersonCode = oDelivery.ContactPersonCode;
         


             int行= oDelivery.Lines.Count;


             for(int i = 0; i <行; i ++)
             {
                 oDelivery.Lines.SetCurrentLine(i);
                 oInvoice.Lines.ItemCode = oDelivery.Lines.ItemCode;
                 oInvoice.Lines.Quantity = oDelivery.Lines.Quantity;
                 oInvoice.Lines.UnitPrice = oDelivery.Lines.UnitPrice;
                 oInvoice.Lines.LineTotal = oDelivery.Lines.LineTotal;
           
                 oInvoice.Lines.Add();
                
             }


             int ok = oInvoice.Add();


             如果(确定!= 0)
             {
                 字符串错误= Menu.oCompany.GetLastErrorDescription();
                 Application.SBO_Application.MessageBox(error.ToString(),1," OK","","");
             }
             其他
             {
                 Application.SBO_Application.MessageBox("已添加基于销售的销售发票:" + maxEntryAf);


             }
         }
 

这样,您可以手动设置每个字段而不是整个行。 它应该可以正常工作。 现在,如果要将整行设置为基线,请考虑在复制这些行之后移动UDF的设置。 (有一种执行此方法的方法; oInv.setDocumentLines(oDeliveryLines);但是在工作流的javascript中有效。)通过将字段一一设置为等于基础文档,不会对您造成任何麻烦,因为它经过了测试和 工作正常。 让我们知道您是否需要更多帮助或问题已解决!

此致

Varnavas Eleftheriou

compass1988
2楼-- · 2020-09-08 01:43

HI Varnavas Eleftheriou
感谢您的回答,您是对的,如果我们设置基本类型,条目,行,它将把整行复制到目标文档。 即使在当前情况下,我也可以做到这一点。 但是,如果我尝试覆盖这2个UDF的值,则不会被覆盖。

重要提示,您无法在购买订单上链接销售订单。

现在我实际上是在创建一个PO并将其链接到SO(在问题中提到)。 我也认为我无法链接这些文档。 但是令人惊讶的是,SAP DI API允许我这样做。 因此,采购订单成为链接到销售订单的采购凭证。 这是我遇到此问题的情况。

软件心理学工程师
3楼-- · 2020-09-08 02:00

亲爱的 Sinoj George

紧跟 ANKIT CHAUHAN 先生在他的帖子中提到的内容。 一个很棒的家伙和个性。 在我的职业生涯中,多次与他合作处理事件。 无论如何,Chauhan先生想说的是,您必须手动 SET 目标UDF值=源UDF值。 有关您的问题的详细信息是他已经提供的链接。 您需要添加以下内容;

 TargetDoc.Lines.UserFields.Fields.Item(" U_Test2")。Value = SourceDoc.Lines.UserFields.Fields.Item(" U_Test2")。Value; 

无论是包含多少项,具有多少行,重复多少次或如何复制(无论从其中复制或复制到任何情况),都没有关系。 通过DI API,您必须特定地使用源文档的udf设置目标文档的UDF值=。 这就是 ANKIT CHAUHAN 想要告诉你的事情。

此致

Varnavas Eleftheriou

d56caomao
4楼-- · 2020-09-08 01:47

Varnavas Eleftheriou 我很清楚 并且我回复了他的答案我是手动将值设置为UDF的 。 在这之间,我不希望从源文档中复制这些值。 我需要在目标文档中设置新值。 在代码中,我通过以下方式进行操作。

我在评论中也提到过,仅当我设置了指向基本文档的链接时,才会设置UDF值。

这在代码中意味着,如果我注释掉基本信息的设置,则将UDF值设置为这些值。

 TargetDoc.Lines.UserFields.Fields.Item(" U_SI_InterCo")。Value =" Y"; //这是具有有效值和默认值的字母数字UDF

 TargetDoc.Lines.UserFields.Fields.Item(" U_SI_IntcoDocType")。Value = 17; //这是没有有效值或默认值的数字UDF
 

一周热门 更多>