Capture DocEntry of purchase order created by Proc. Confirmation Wizard

Dear all,
in SAP B1 2007 I developed a UI DI API addon to read the docentry of all purchase orders created by Procurement Confirmation Wizard.
I used the et_FORM_DATA_ADD  event created by the wizard when I confirmed the creation of the purchase order.
In this event, the BusinessObjectInfo.ObjectKey string contained the DocEntry of the new purchase order.
But now, with SAP 8.81 PL 06, this event is not raised anymore.
So... now... how can I know the DocEntry  (not DocNum) of the new purchase orders created by Procurement Confirmation Wizard?
Can someone help me, please?
Regards
    Emanuele

Dear all,
I solved the problem analyzing the event raised by SAP B1 8.81 Proc. Confirmation Wizard.
    Const CONFIRM_PURCHASE_ORDER_FORM_TYPE As String = "540010007"
    Const ERROR_STRING As String = "ERRORE: "
    Const WIZARD_MATRIX_PO_DOCNUM_MESSAGE As String = "540010007-36]"
    Const WIZARD_MATRIX_FORMID As String = "540000036"
    Const WIZARD_LINK_COLUMN_ID As String = "540000005"
    Const WIZARD_VALIDATE_COLUMN_ID As String = "540000003"
Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, _
                                          ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
        Try
            If pVal.FormType = CONFIRM_PURCHASE_ORDER_FORM_TYPE Then
                ' event activated by the matrix element
                If pVal.ItemUID = WIZARD_MATRIX_FORMID And pVal.BeforeAction = True Then
                    ' if event is "matrix link pressed" or "form/matrix validate"
                    If (pVal.EventType = SAPbouiCOM.BoEventTypes.et_MATRIX_LINK_PRESSED And pVal.ColUID = WIZARD_LINK_COLUMN_ID) Or _
                        (pVal.EventType = SAPbouiCOM.BoEventTypes.et_VALIDATE And pVal.ColUID = WIZARD_VALIDATE_COLUMN_ID) Then
                        Dim recordsetTemp As SAPbobsCOM.Recordset = Nothing
                        Dim recordsetTemp2 As SAPbobsCOM.Recordset = Nothing
                        Dim recordsetTemp3 As SAPbobsCOM.Recordset = Nothing
                        Dim oform As SAPbouiCOM.Form
                        Try
                            oform = SBO_Application.Forms.GetForm(CONFIRM_PURCHASE_ORDER_FORM_TYPE, 1)
                            Dim sQuery As String
                            Dim oMatrix As SAPbouiCOM.Matrix = oform.Items.Item(WIZARD_MATRIX_FORMID).Specific
                            Dim ocolumn As SAPbouiCOM.Column = oMatrix.Columns.Item(WIZARD_LINK_COLUMN_ID) ' ("540000005")
                            If oMatrix.RowCount > 0 Then
                                For iRow As Integer = 1 To oMatrix.RowCount
                                    Dim oEditText As SAPbouiCOM.EditText
                                    oEditText = ocolumn.Cells.Item(iRow).Specific ' pVal.Row
                                    If Not oEditText.Value.Contains(WIZARD_MATRIX_PO_DOCNUM_MESSAGE) Then
                                        Continue For
                                    End If
                                    Dim DocNum As Integer = 0
                                    Dim stemp As String = oEditText.Value
                                    Dim stemp2 As String = ""
                                    Dim iterRow As Integer = 0
                                    ' loop in the string searching for the purchase order docnum
                                    While 1 = 1
                                        If stemp.Contains(" ") Then
                                            stemp2 = stemp.Substring(0, stemp.IndexOf(" "))
                                            Try
                                                DocNum = CInt(stemp2)
                                                Exit While
                                            Catch ex As Exception
                                                stemp = stemp.Substring(stemp.IndexOf(" ") + 1)
                                                DocNum = 0
                                            End Try
                                        Else
                                            Exit While
                                        End If
                                    End While
                                    If DocNum = 0 Then
                                        Continue For
                                    End If
                                    Dim PO_DocEntry As String = ""
                                    recordsetTemp2 = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
                                    sQuery = "SELECT MAX(DocEntry) As MaxDocEntry from OPOR where DocNum = " & DocNum
                                    ' execute SQL query
                                    recordsetTemp2.DoQuery(sQuery)
                                    If recordsetTemp2 IsNot Nothing Then
                                        If recordsetTemp2.RecordCount = 0 Then
                                            Continue For
                                        End If
                                        recordsetTemp2.MoveFirst()
                                        PO_DocEntry = recordsetTemp2.Fields.Item("MaxDocEntry").Value
                                    End If
                                    If PO_DocEntry <> "" Then
                                        ' check if this Purchase Order has already some textlines
                                        ' If it already has text lines, then we don't need to add them to it
                                        recordsetTemp3 = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
                                        sQuery = "SELECT count(*) As ExistYN from POR10 where DocEntry = " & PO_DocEntry
                                        recordsetTemp3.DoQuery(sQuery)
                                        If recordsetTemp3 IsNot Nothing Then
                                            If recordsetTemp3.RecordCount > 0 Then
                                                recordsetTemp3.MoveFirst()
                                                Dim numOfTextLinesForThis_PO As Integer = CInt(recordsetTemp3.Fields.Item("ExistYN").Value)
                                                If numOfTextLinesForThis_PO > 0 Then
                                                    Continue For
                                                End If
                                            End If
                                        End If
                                    End If
                                    ' if this PO still hasn't any texlines, then we try to add to it reading the textlines of Sales Order
                                    ' reopen the purchase order
                                    Dim oPurchaseOrder As SAPbobsCOM.Documents
                                    oPurchaseOrder = oCompany.GetBusinessObject(BoObjectTypes.oPurchaseOrders)
                                    oPurchaseOrder.GetByKey(CInt(PO_DocEntry))
                                    ' loop on every lines
                                    For i As Integer = 0 To oPurchaseOrder.Lines.Count - 1
                                        oPurchaseOrder.Lines.SetCurrentLine(i)
                                        ' if purchase order line was generetated from a sales order
                                        If oPurchaseOrder.Lines.BaseType = 17 Then
                                            recordsetTemp = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
                                            ' search the text lines in the sales order
                                            sQuery = "SELECT t11.LineText As LineText "
                                            sQuery &= " from RDR10 t11 "
                                            sQuery &= " Where t11.DocEntry = '" & oPurchaseOrder.Lines.BaseEntry & "' "
                                            sQuery &= "  AND t11.AftLineNum = " & oPurchaseOrder.Lines.BaseLine
                                            sQuery &= "  AND t11.LineType = 'T' and t11.ObjType = " & oPurchaseOrder.Lines.BaseType
                                            sQuery &= " order by t11.LineSeq "
                                            ' execute SQL query
                                            recordsetTemp.DoQuery(sQuery)
                                            If recordsetTemp IsNot Nothing Then
                                                If recordsetTemp.RecordCount = 0 Then
                                                    Continue For
                                                End If
                                                recordsetTemp.MoveFirst()
                                                ' loop on each text lines found
                                                While recordsetTemp.EoF = False
                                                    If recordsetTemp.Fields.Item("LineText").Value <> String.Empty Then
                                                        oPurchaseOrder.SpecialLines.LineType = BoDocSpecialLineType.dslt_Text
                                                        oPurchaseOrder.SpecialLines.LineText = recordsetTemp.Fields.Item("LineText").Value
                                                        oPurchaseOrder.SpecialLines.AfterLineNumber = oPurchaseOrder.Lines.LineNum
                                                        oPurchaseOrder.SpecialLines.Add()
                                                    End If
                                                    recordsetTemp.MoveNext()
                                                End While ' recordsetTemp.EoF = False
                                            End If ' recordsetTemp IsNot Nothing
                                        End If ' oPurchaseOrder.Lines.BaseType = 17
                                    Next ' end-loop on every lines
                                    ' update the purchase order
                                    oPurchaseOrder.Update()
                                Next
                            End If
                        Catch ex As Exception
                        Finally
                            recordsetTemp = Nothing
                            recordsetTemp2 = Nothing
                            recordsetTemp3 = Nothing
                        End Try
                    End If
                End If
            End If
        Catch ex As Exception
        End Try
    End Sub
Regards
    Emanuele
Edited by: Emanuele Croci on Aug 29, 2011 5:05 PM

Similar Messages

  • Purchase order created by "Procurement Document" is not printed automatical

    Hi all experts,
    After and upgrade to 8.81 (from 2005A)  some funcionality was lost.
    In Print Preferences it is set that the document Purchase Order shall be printed automatically when adding document.
    This works if you add the document directly in Purchase module.
    But, if you add the document via a Sales Order
    - on the Logistics tab, mark the field Procurement Document to create the PO -
    the Purchase order is not printed.
    Has anyone seen any changes regarding this functionality or is it a bug?
    Thank you!
    Kind regards,
    Susanna

    Hi all!
    Just F Y I - this is an error in this version that is a candidate for future versions:
    "After detailed investigation of the Business Impact and the Product Strategy we came to the decision that the correction of the system behaviour is not feasible in the currently supported versions of SAP Business One. Theerror has been recorded and is a candidate to be fixed in a future version.
    Please see note 968358 and note 1644710 for further information.
    Like a workaround please use the document printing option to print all the purchase order created using the procurement wizard."
    Thank you for all help!
    //Susanna

  • Excise Invoice is captured with another Purchase Order

    Hi
    We have a scenrio, transfer the material from debond plant to mfg plant after imported material in kept in Bonding area. STO po is raised to from imported plant to mfg plant with Imported duties as delivery costs.
    Bill of entry is provided for all the materials as one. While capturing the excise amount at line item level is difficult so, captured at first line item level as total because material is Same (Material is Split valuated materials with 3 batches). First GR is done properly but next GR for 2nd and 3 rd line items are refered with earlier Bill of entry, system promprts the error message "Excise Invoice is captured with another Purchase Order".
    Please do the needful.
    Regards
    Mohan

    Hi,
    Please be informed that for one a GR document wrt PO only one excise invoice can exist.
    Ex PO-4500000010
    GR no 5000000010
    only one excise can exist and if the same excise invoice is reffered to another GR with the same PO system will throw an error message. Please let me know the exact business requirement in detail.
    Naveen

  • Problem Purchase order created in SAP R/3 sent in to File XI?

    Hi all,
    I am new to XI, learning it myself.
    I am trying to "send purchase order created in SAP R/3 into XI". For that I am following the document titled as <b>"A Beginner’s Guide to SAP XI
    Settings, Part I "</b>. But I am getting problem in connecting R/3 system to XI system.
    I am stuck at very first step in the documentation which says:
           <b>Setting Communication ports:</b> in this it asks for "<b>RFC Destination</b>"
    Please suggest me the step by step procedure to get through it.
    Thanks and Regards,
    Ravi

    Hi,
    go through these links...
    1. /people/prateek.shah/blog/2005/06/08/introduction-to-idoc-xi-file-scenario-and-complete-walk-through-for-starters
    2. IDOC to File
    3. /people/michal.krawczyk2/blog/2005/03/29/configuring-the-sender-rfc-adapter--step-by-step
    4. /people/prateek.shah/blog/2005/06/08/introduction-to-idoc-xi-file-scenario-and-complete-walk-through-for-starters
    5. Re: Idoc to File Scenario
    regads,
    Ansar.

  • Email Sending of Purchase Order Created versus Print Output

    Dear All,
    I have been successful in sending the Purchase Order created as a PDF Attachment in email.
    The problem i am facing is in the formatting of the attached output.
    The attachment has different bold characters as compared to the print output of the PO , though both the outputs are using the same sapscript.
    I am not able to find the reason for the difference.
    Only because of this reason, my delivery is on hold.
    Please guide me on how to find where the difference could be and how to rectify it.
    Thanks & Regards,
    Bhavika

    Could you tell us which fonts you tried?
    What device type did you choose? (SPAD transaction, select your output device to determine the device type)
    Could you upload TrueType fonts (one normal, one bold) with RSTXPDF2 program (do not tick "do not embed font in PDF" option so that the font is embedded in the PDF file)?
    Did you make sure that your font is not converted to another one? (SE73, printer font, choose your device type, click conversion button, and check what is the converted font)

  • Link between Purchase orders created and ORCM(Recommendation report)

    Hi,
    In purchase orders created from MRP recommendation report, we want to change the price, warehouse and some UDF's .For this functionality we are stopping the B1 functionality and adding the Purchase orders through our coding,In this scenario once the purchase order is added to B1 the same record should not be visible in MRP recommendation for creating the Purchase order again.
    we are not finding the link how can we update the ORCM table from were MRP recommendation is picking data to change the status field to "D" so that it will be not visible for creating purchase order again.
    Can any one please help in this issue.
    Thanks in Advance.
    Thanks & Regards,
    OmPrakash.
    Edited by: Om Prakash Akarapu on Dec 26, 2008 6:05 AM

    Hi
    in <b>EKKN</b> table you have sales order and Item fields (VBELN and POSNR)
    using these fields search for the deliveries in LIPS table
    EKKN-VBELN = LIPS-VGBEL and
    EKKN-POSNR = LIPS-VGPOS
    <b>Reward points for useful Answers</b>
    Regards
    Anji

  • Purchase Order created against sales order.. report

    Hi Folks!
    I want to see purchase orders created against sales orders.
    Is there any report?
    Regards

    Hi,
    You can develop your own report by using table VBAK-VBELN(sales document),VBAK-BSTNK(Customer purchase order number).
    Just try....
    Hope it helps you...
    Regards,
    Jaheer.

  • Purchase orders created by buyer only can be viewed

    Dear All,
    Can it possible that Purchase orders created by buyer only can be viewed by him not the ones created by other created under same operating unit.
    Regards

    Hi DInesh,
    Can you explain how it can be achieved by coding in Custom.pll. If you have a example code that would help. I think it is WHEN-NEW-FORM-INSTANCE trigger, the code should see the login/employee of the person and get the buyer id and should restrict the query to only those records created by this buyer id. This is just my thinking without verifying the entire process in applications.
    I think its a bit complex. Can you clarify it a bit detail
    Thanks,

  • Purchase orders created have automatically good receipt

    hello,
    I wish that Purchase orders created have automatically good receipt. What is the manipulation to be made? Thanks for your help.

    Hi
    U have to do setting movement wise in SPRO
    Path SPRO-Material Management -Inventory Management and Physical Inventory - Good Receipts- Automatic Purchase Order Creation
    But if you want to do automatic GR receipt u have to write customised program for creation of GR ( May be check BADI - Craeation for MIGO is useful) nand run batch job for the same
    Edited by: Sanjay  Shah on Feb 8, 2010 3:28 PM

  • Send SMS to customers, If Purchase Order Created?

    Hi Friends,
    We have a requirement that " If Purchase order created, Then system will send a SMS to the respective customer ".
    Could you please tell me the process How to do it?
    Please give me example code and steps to do.
    Thanks in Advance.
    Regards,
    Sarayu.

    Hi,
    Try this.
    [http://help.sap.com/erp2005_ehp_04/helpdata/DE/54/9d9f405660f418e10000000a1550b0/frameset.htm]
    Thanks,
    Sri.

  • Partner details are not getting captured to the purchase order from the ven

    Hi,
    Issue : ( ECC PO)
    Partner details are not getting captured to the purchase order from the vendor master.
    We found that the partners are not getting captured in ECC PO's automatically from the vendor master. We checked for all the config and everything seems to be o.k, but could not figure it out.
    Any suggestions are highly appreciated.
    Regards
    Sudhakar

    Hey Sudhakar,
    I believe what is happening here is that the ECC PO document type has not been assigned to the partner determination procedure.
    If this is working properly for standard POs, then,
    Go to Partner detrmination under Purchasing>  Partner Settings in Purchasing Documents> Assign Partner Schemas to Document Types.
    and enter teh appropriate document type and refer it to the procedure you have for NB Pos

  • Purchase Order created from different client machine with same login ID

    Hi,
    Purchase Order created from different machine using same Login ID. How to trace IP address of that Machines.
    Thanks
    Hemanth

    Hi;
    Please review:
    Re: sql to get Machine IP
    Regard
    Helios

  • Does Anyone know how to add a new partner to purchase order created on VI01/VI02?

    Does Anyone know how to add a new partner to purchase order created on VI01/VI02?
    Please, anyone knows that?
    Regards.
    Rafael.

    Anyone?

  • Automatic Batch creation at purchase order create stage

    Hi
    Is it possible to automatically create a batch when a purchase req converts to a purchase order? 
    There is a batch create button in the material tab of the purchase order so I can manually create a batch at purchase order create (purchase req convert), is it possible to automate this by material?  So a specific material when the PR converts will have the batch created automatically?
    If so how?
    Thanks

    Hi,
    I have double checked with the developers, and I am afraid that it is not possible to activate the automatic batch determination in ME21N.
    Best Regards,
    Arminda Jack

  • Cost analysis through Purchase Order created from Sales Order

    Hi Experts,
    This is the scenario: There is an Item No. which is not stocked in warehouse and is purchased only when customers ask for it. The cost of the sales order line having this item is calculated by the Purchase Order line on which the item is there. (The PO have items for other Sales Orders as well. And, Sales Orders have multiple item types) The Sales Order have the PO no. against it and Purchase Order has SO no. against the line. This is all done using MS Access and Sage Accounts. Lots of free typing and manual cost analysis involved.
    I have gathered from this forum that we can create Purchase Order from the Sales Order. The Document No. information can be pulled from one another using Formatted Search. Can we do the accounting and cost analysis as well?
    Please let me know if I have not made myself clear.
    Thank you in advance and kind regards.
    IC
    Edited by: iancameron03 on Sep 20, 2011 4:35 PM

    Hi Ian,
    I concur with Faraz, it is better if you use procurement document facility in doing back to back transaction from SO to PO.
    However, in your case, I'm afraid you can't analyze the gross profit and recording the accounting related activity as your request using standard SAP B1 function.
    As for gross profit case:
    Since you're actually using workaround in order to evade all hassles in maintaining all item master data related to this case, you create just one item code called S1 right?
    SO DocEntry - SO Line # - Item Code - Item Name - Quantity - Price
    1001 - 0 - S1 - Table - 2 - 100
    1001 - 1 - S1 - Chair - 8 - 25
    1001 - 2 - S1 - Cloth - 3 - 10
    PO # - PO Line # - PO BaseEntry (SO DocEntry)  - PO BaseLine (SO Line #) - Item Code - Item Name - Quantity - Price
    2001 - 0 - 1001 - 0 - S1 - 2 - 100
    2001 - 1 - 1001 - 1 - S1 - 8 - 25
    2001 - 2 - 1001 - 2 - S1 - 3 - 10
    Note that standard B1 gross profit calculation is that system will compare selling price for each item with item cost / certain price list of each respective item. However, in your case, you put all item as a single item master. Thus, system couldn't compare Table to Table, Chair to Chair, Cloth to Cloth since the item cost for these 3 items will be the same, the price list for these 3 items will also be the same since it is actually only one master data. Of course you could update the gross profit calculation manually for each SO, but to be honest it seems rather weird to do this manually.
    So, in order to simulate the gross profit calculation, you need to create a custom query and comparing PO line no with SO line no.
    As far as accounting related recording concern, I'm afraid you can't do it
    1. SO 1 : Item Table - Selling price 130 ; Item Chair - Selling price 30
    2. PO 1 (linked to SO 1) : Item Table - Purchase price 100 ; Item Chair - Purchase price 25
    3. SO 2 : Item Table - Selling price 150 ; Item Chair - Selling price 40
    4. PO 2 (linked to SO 2) : Item Table - Purchase price 110 ; Item Chair - Purchase price 30
    Correct me if I'm wrong, you want to record accounting wise that CoGS of Delivery based on SO 1 is 100 for Table and 25 for Chair, isn't it? No matter what costing method you use, you can't achieve this.
    If you use moving average, system will average both Table and Chair cost price, since it is actually one item master data. Even if you distinguish each item as a master data, system will average the cost price for Table and Cloth by the time GR for PO 1 and PO 2 occurred.
    Example (order by sequence of event):
    1. GR based on PO 1 - Table - Purchase price = 100, therefore Item cost = 100
    2. GR based on PO 2 - Table - Purchase price = 110, therefore Item cost = 105 (considering quantity only one for both PO)
    3. Delivery based on SO 1 - Table - CoGS incurred will be 105, not 100
    To certain extent, same thing could be said with FIFO costing method
    1. GR based on PO 1 - Table - Purchase price = 100 (qty 1)
    2. GR based on PO 2 - Table - Purchase price = 110 (qty 1)
    3. Delivery based on SO 1 - Table - CoGS incurred will be 100 (qty 1)
    4. Delivery based on SO 2 - Table - CoGS incurred will be 110 (qty 1)
    At first glance, it seems right since the CoGS for SO 1 is 100, tied up with purchase price for PO 1. And CoGS for SO 2 is 110, tied up with purchase price for PO 2. But we're using assumption here, we're assuming the sequence of Goods Receipt of PO and Delivery of SO occurred in the very same sequence as the issuance of SO and PO.
    1. GR based on PO 1 - Table - Purchase price = 100 (qty 1)
    2. GR based on PO 2 - Table - Purchase price = 110 (qty 1)
    3. Delivery based on SO 2 - Table - CoGS incurred will be 100 (qty 1)
    4. Delivery based on SO 1 - Table - CoGS incurred will be 110 (qty 1)
    If above scenario / sequence that happened, you will get the wrong figure of gross profit since the Delivery of SO 2 will take the item cost based on GR of PO 1. Since we're actually talking about real life business process, who can guarantee that above scenario wouldn't happen? It is possible that you send goods to customer who ordered late in real life, too much possibility that it is better for you to mitigate such result.
    My suggestion would be that you record the accounting transaction based on standard business process, no need to really capture the actual cost and actual gross profit for certain SO and PO. Too complicated, and the software itself doesn't cater this kind of requirement. Best thing you could do only create custom query for gross profit simulation calculation, but for very accurate accounting recording, IMO you should forget it. Hope this help.
    Best Regards,
    Hendry Wijaya

Maybe you are looking for

  • Cannot type in textfield in Safari 5.1 (Windows)

    Hi, i find that i cannot type in textfield in the Flash content in Safari 5.1 (windows), but work fine in other browsers . The Flash player is debugger version 11.4.402.278. tested in my app, and also the following link: http://www.adobe.com/devnet-a

  • Material Master changes are not allowing (MM02)

    Dear All, we have done year end activities successfully for the 2010 fiscal year. we are following January to December. In 2011 January 9th date we have activated Material ledger. after that when we try to go to material master the system is giving t

  • Bank of America Flat File in SAP

    Hi, One of our clients wants to use Bank of America Flat File Format for Electronic bank Statement. Is there any standard program in SAP for the same or I need to do a Z development for the same? Please assist on this.

  • INSTALL_ERROR_DISTRIBUTION_SIGNED_BY_APPLE installing anything

    Hey all, I'm getting an INSTALL_ERROR_DISTRIBUTION_SIGNED_BY_APPLE error when I try to install or update anything using the Mac App Store. My system time is correct and I've tried repairing permissions as someone else suggested but it's not working.

  • How to Over write an existing response?

    Sep 22, 2010 3:15:25 PM org.apache.catalina.core.ApplicationContext log INFO: Loading Spring root WebApplicationContext Sep 22, 2010 3:17:55 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet default threw e