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,
SusannaHi 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
MohanHi,
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 Beginners 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,
RaviHi,
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,
BhavikaCould 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 AMHi
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?
RegardsHi,
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.
RegardsHi 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
SudhakarHey 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
HemanthHi;
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?
ThanksHi,
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 PMHi 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