Hello Experts
Trying to achieve a number of business improvements with the current systems we have on hand.
I am trying to set in place an approval process for purchases.
Firstly we are on SAP B1 9.0 PL11 and use Enprise Job and Enprise automate
We have a maintenance department that raise purchase orders that are approved for a fixed amount ................however when the goods or services are received or AP invoiced against the purchase orders .............we have a large number of GRPO's or AP Invoices that are more than what the purchase orders were raised for.
Historically the electronic approval Procedure in our upgraded version 9.0 was not being used, with all purchasing documents being manually approved by hand.Users would historically amend the purchase order amount before goods receipting of AP invoices against .
I would like to implement the SAP approval procedure within this SAP 9.0 version, but need to satisfy some approval conditions.
If I can get the GRPO conditions right, I can use the method on the AP Invoices.
I know Purchase orders are raised and approved (once electronically approved - the amount can't be edited ................ok)
So, what we will have is users that GRPO or AP invoice against purchase orders that are of a greater value than that of the PO. An accepted tolerance is GRPO value upto 10% greater than the value of the purchase order but not greater than $100 ......................if the condition is greater than this tolerance then further approval is needed
So I need to satisfy this need
I know that the approval is at header level, but it is not always at a header level ..............Example purchase order has many lines at 'X"value that has been approved and then set as "UNEditable"
User then needs to either,GRPO or AP Invoice against some of the approved purchase order lines with many lines at "Y" value that is greater than "X" value and outside an accepted tolerance
So, I was thinking along these lines:
- I was thinking that if I create an UDF at header level called “forApproval” that has values yes/no and have “No” as the default. That I could use this field as my term condition in an approval template.
- I was thinking that an Update to the condition in dbo.SBO_SP_TransactionNotification similar to my attempted one highlighted below that will block a user from adding a GRPO from a PO where the GRPO line total is greater than the line total of the PO and the value in the UDF Header field “ForApproval” is No, the notification message appears with some message like Further Approval Needed.
- If the above conditions are met then it would be easier to create a query approval based on this UDF. When the UDF field "ForApproval" is then changed from default value "N" to value 'Y' ............. the approval request can be triggered.
IF @transaction_type IN (N'A', N'U') AND
(@Object_type = N'20')
begin
if exists (SELECT T0.BaseEntry, SUM(T0.Quantity)
FROM [dbo].[PDN1] T0 INNER
JOIN [dbo].[POR1] T1 ON T1.DOCENTRY =
T0.BASEENTRY
WHERE T0.BaseType = 22 AND T0.ItemCode =
T1.ItemCode AND T0.BaseLine = T1.LineNum
and T0.DOCENTRY = @list_of_cols_val_tab_del
GROUP BY T0.BaseEntry
HAVING (SUM(T0.Price)> SUM((T1.Price /100*110))))
begin
select @Error = 10, @error_message = 'GRPO Unit Price is greater than PO quantity'
end
end
Where I need help is:
Firstly, creating the correct SBO_SP_TransactionNotifications that meets the condition where:
a GRPO that is linked to an approved purchase order's value (not sure how best to capture the value of the line) is of a value that is greater than 10% or greater than $100 and where the UDF that indicates "ForApproval" is set at default value "N" blocks the document with a error message that states something like 'GRPO is greater than PO, outside tolerance and requires further approval
Secondly, The correct SAP query to create and add into the approval template that triggers the approval process
Apologies if too vague, hopefully some clever people can decipher my needs
Regards
Clyde