User Defined Query and Alerts
Hello guys, I need to set up an alert that happens whenever a Sales Order or Purchase Order is added. I am happy with the alerts procedure but I cannot set up a query.
Can anyone please help me set up queries that simply mean 'when SO added' and 'when PO added'?
Many thanks
OK Groovy - really glad you are following up on this. Many financial folks like to have this kind of review (especially when they first get onto SAP B1) since it gives them a comfort level of being able to see what is done.
Good time for you to take a look at the Query Generator and learn a bit of a new skill (PATH: Reports > Query Generator)! Once you get the hang of it, you can be a real whiz!
Here is the exact SQL used in their Alert Messaging System. Type this in exactly as you see it below in the Demo or Test System just to try it out and get a hang of it...
<b>SELECT
T0.DocNum AS 'Doc Num',
T0.UserSign AS 'User ID',
T0.DocStatus AS 'Doc Status',
T0.DocDate AS 'Post Date',
FROM ORDR T0
WHERE T0.DocStatus = 'O'
ORDER BY T0.DocNum DESC</b>
A few comments - the DocNum and UserSign fileds display the famous golden 'drill down' arrows which allow the person to take a look at the document and whoever process the transaction.
An added bonus is that you can use this exact SQL to query many different tables and use them as their own individual alerts (for example, just substitute ORIN for ORDR and the system will display the AR Credit Memo - all the field names are the same!).
A WORD OF CAUTION: Remember this SQL is picking up orders with the status of 'O(pen)'. It is very important how often you run this Alert Message because it might not report all orders created depending upon the time between order creation and SQL running to generate the alert. Consider the following scenario: A firm has the alert come up weekly on Friday. Monday a person creates an order 123, the warehouse ships on Tuesday. Home office bills the order and closes it on Thursday. When the alert message is generatedon FRIDAY, 123 will NOT be in the list since it now has a status of 'C(losed)'. That scenario requires different 'WHERE' selection criteria dealing with dates...
Good luck - Zal
Similar Messages
-
PLD report from user defined query
Hello experts,
Is possible to create a new PLD report from a user defined query ?
Thanks in advance.
Best regards
AndreaHi,
It is possible on Query Print Layout Design(QPLD) so Try to create QPLD.
Check this link u can get presentation slide form SAP.
[Query Pld from SAP site]
First you can try to create the Query report with UDF filed.
for example,
SELECT T0.DocNum, T0.DocDate, T0.CardName, T0.CheckSum, T0.U_UDF1, T0.U_UDF2, T0.U_UDF3
FROM OVPM T0 WHERE T0.DocNum>='%0' and T0.DocNum<='%1' ORDER BY T0.DocNum
Steps to Develop a User Report in QPLD:-
If you save your Query in Query Manager. Next you can do this,
->> Choose the Query Manager on Top Menu.
->> Open the Qeury Manager Window.
->> Select the specific Query report. and
->> Click the Create Report button in Bottom on Qeury Manager Window.
->> then, Open the Create User Report Window and Select the User Report(System) in Base Template.
If you Change the QPLD name.
->> Click OK.
->> (or) If your Query Report have parameter. Click OK.
Now your Query report was Created QPLD.
Note: All SELECT statement fields will be Stored and Display in Repetetive Area1. and
Parameter Fields are in Repetetive Area0 so you can Try to Copy & Paste the Field_ID's to Repetetive Area Header (or) Repetetive Area Footer.
Example:
->> Open the QPLD and Goto Field index Window, then
->> Select the Repetetive Area Header & Repetetive Area Footer ncrease the Height on Properties Window.
->> Create the Formula fields in Repetetive Area Header & Repetetive Area Footer.
->> Which Field you want to print in header or footer. Drag the Field ID(in Repetetive Area) Copy & Paste to Formula Field.
Can you see to your Query PLD? do this,
->> Choose the Tools on Top Menu.
->> Click the Queries. -> Query Print Layout...
->> Open the Query Print Layout Window.
->> Click Reports Tab and Double the Template (Requrie QPLD) on QPLD Window.
->> Customize and Save the QPLD.
Can you see your Query PLD Preveiw and Print? do this,
->> Choose the Tools on Top Menu.
->> Click the Queries. -> Query Print Layout...
->> Open the Query Print Layout Window.
->> Select Template in Report Tab on QPLD Window.
->> Click Print Preview on Top menu.
Close this thread if issue solved
Regards,
Madhan. -
User defined query parameter in query generator
Hi All,
i am using query generator in SAP to print some records of user defined query. precisely, the details about sales employees are to be printed. now the columns which exist in the database (ie. sales employee code, name, cardcode) etc can be given as a parameter like [%0] and [%1]. but some user defined parameter such as sales commission does not show as such parameter. i want one column as
select T0.doctotal, (T0.doctotal * [%0]) / 100 as brokerage from OINV T0
--where [%0] is some commission percentage that the user will give while running this query
This query gives correct results but it gives the parameter name as 'doctotal' while showing. any idea as to how to handle it properly in SAP?
thanks in advance,
Binita
Edited by: Binita Joshi on Sep 8, 2009 3:35 PMI sometimes defined a UDT only for getting the appropriate parameter entering window. The table has no data; I used it only for its field names in this window.
(The parameter request can be placed inside a comment and the entered value is used setting an SQL variable like this:
declare @d datetime
/*select t.createdate from ordr t where t.createdate=[%0]*/
set @d=[%0]
This SQL variable can be used later in the real query.) -
User defined query parameter in QLD
Hi All,
i am using query generator in SAP to print some records of user defined query. precisely, the details about sales employees are to be printed. now the columns which exist in the database (ie. sales employee code, name, cardcode) etc can be given as a parameter like %0 and %1. but some user defined parameter such as sales commission does not show as such parameter. i want one column as
select T0.doctotal, (T0.doctotal * [%0]) / 100 as brokerage from OINV T0
--where [%0] is some commission percentage that the user will give while running this query
This query gives correct results but it gives the parameter name as 'doctotal' while showing. also, when I join 4-5 tables and union, it totally misinterprets the paramater. any idea as to how to handle it properly in SAP?
thanks in advance,
BinitaHi
I know it list many value but u can try by this way....
declare @a numeric(3)
set @a = (select top 100 docnum from oinv T1 where T1.[docnum]= [%0])
select T0.doctotal, (T0.doctotal * @a) / 100 as brokerage from OINV T0
Thanks
Kevin -
Prevent user defined query from being activated with the CopyTo function
Hi, I have a user defined query defined in one of the quantity field (in the grid) in the goods receipt PO window.
The query updates the quantity depending on the number of another line field. The query works great, but I dont want it to be activated when a user clicks the "Copy From" purchase order. When this happens the query gets activated and changes the quantity.
The query is defined to be activated "when exiting altered column", i have not selected the "Refresh Regulary"
Please help!Thank you so much for replying,
this is my query, depending on the column U_Empaque (type of package), I look for the right conversion in the OITM table of the item. Then I use the number from the column U_Cantidad_Empaque (Quantity Of the Type of package) to multiply by the conversion factor that I have defined for the Item in the OITM user fields. The conversion is a standard conversion, so It needs to be modified by the user to set it to the real quantity of the unit of measure (or unit of inventory). The query works great, except for the CopyTo and CopyFrom functions.
Iam using 2007 A patch 45.
México's settings.
SELECT
CASE
WHEN (SELECT 'TRUE' FROM OITM T0 WHERE T0.ITEMCODE = $[$38.1.0] AND T0.U_EMPAQUE1 = $[$38.U_Empaque.0]) = 'True' THEN (SELECT ($[$38.U_Cantidad_Empaque.0]) * T1.U_CONVERSION1 AS 'Respuesta' FROM OITM T1 WHERE T1.ITEMCODE = $[$38.1.0] AND T1.U_EMPAQUE1 = $[$38.U_Empaque.0])
WHEN (SELECT 'TRUE' FROM OITM T0 WHERE T0.ITEMCODE = $[$38.1.0] AND T0.U_EMPAQUE2 = $[$38.U_Empaque.0]) = 'True' THEN (SELECT ($[$38.U_Cantidad_Empaque.0]) * T1.U_CONVERSION2 AS 'Respuesta' FROM OITM T1 WHERE T1.ITEMCODE = $[$38.1.0] AND T1.U_EMPAQUE2 = $[$38.U_Empaque.0])
WHEN (SELECT 'TRUE' FROM OITM T0 WHERE T0.ITEMCODE = $[$38.1.0] AND T0.U_EMPAQUE3 = $[$38.U_Empaque.0]) = 'True' THEN (SELECT ($[$38.U_Cantidad_Empaque.0]) * T1.U_CONVERSION3 AS 'Respuesta' FROM OITM T1 WHERE T1.ITEMCODE = $[$38.1.0] AND T1.U_EMPAQUE3 = $[$38.U_Empaque.0])
WHEN (SELECT 'TRUE' FROM OITM T0 WHERE T0.ITEMCODE = $[$38.1.0] AND T0.U_EMPAQUE4 = $[$38.U_Empaque.0]) = 'True' THEN (SELECT ($[$38.U_Cantidad_Empaque.0]) * T1.U_CONVERSION4 AS 'Respuesta' FROM OITM T1 WHERE T1.ITEMCODE = $[$38.1.0] AND T1.U_EMPAQUE4 = $[$38.U_Empaque.0])
END -
How To Create User-Defined DateTo and DateFrom?
This document https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/6ce7b0a4-0b01-0010-52ac-a6e813c35a84 describe techniques used to create BI Infocubes.
In chapter 4.4.2.4 Report only on data for constellations valid today and yesterday (comparable results) - today and yesterday.
...Report only on data for constellations valid today and yesterday (comparable results): Solution
Given an attribute–characteristic relation.
Define the dependent attribute as a time-dependent navigational attribute of the characteristic. Define
additionally user-defined DateTo and DateFrom time-dependent navigational attributes. Together with the
query key date and a filter on DateTo and DateFrom excluding your reporting time span, you will get the
desired result.
MatGr-SID From-User To-User From-Sys To-Sys Material Material-SID
910 01/1000 12/9999 01/1000 12/9999 AAA 001
910 01/1000 09/1998 01/1000 09/1998 BBB 002
920 10/1998 12/9999 10/1998 12/9999 BBB 002
920 01/1000 12/9999 01/1000 12/9999 CCC 003
920 01/1000 12/9999 01/1000 12/9999 DDD 004
920 10/1998 12/9999 10/1998 12/9999 EEE 005
Report showing comparable results
Material group Rev 09/98 Rev 10/98
X 100 100
Y 200 200
HOW TO Create From-User To-User attributes?Hi Monica
Third party software is available,from AccessVia, that can be used to create and update templates. Sample sample sqt can help you to understand the required inputs (batchID, templateID, departmentID, locale).
Thanks
Himanshu -
User-Defined Function and Context Manipulation
Hi Mapping Gurus, I need your help.
I have a user-defined function and one of my input parameter (c) is in a loop (EDI segment). So one, if I execute my function I get:
Exception:[java.lang.ArrayIndexOutOfBoundsException: 0]
If I change the context or use the remove context node function its working but its always taking the first row in consideration since I'm using c[0] . Here is the logic:
String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[0]"'";
So since c is an array [], I have tried different logic to get to the right row.
1- I tried using another parameter (e) to pass a counter or an index to my function. So each time it's looping, it's passing a new value to the function but Im still getting the first row and Im not to sure why?
int G = Integer.parseInt(e[0]); // e[] = My counter field
String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
2- I tried using a parameter stored in the container:
String Num;
Num = (String)getParameter(counter);
if (Num == null) G = 0;
else
G = Integer.parseInt(Num);
G = G + 1;
String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
Num = "" + G;
setParameter(e[0], Num);
and Im still getting the first one, look like its using a different container each time its looping so the Value is always the same?
4- I created a new user-defined function with the container logic, then its working but Im back to the same problem in my main function, its only looking at e[0] for my counter all the time.
5- I tried using the Seeburger Java Variables and guess what in the main fonction, as new UDF,... and guess what, same result!
So anybody out there that was able to get UDF's working into a multiple context scenario?
Am I missing something?
I will reward points and beer for any help!This is one of the text with passing a counter to the function to try to go to the right row in the array since I'm doing a remove context and I'm getting all the d_234's:
public void ReadTable(String[] a,String[] b,String[] c,String[] d,String[] e,ResultList result,Container container){
int G = Integer.parseInt(e[0]); // My counter
String var;
String DBTABLE = a[0];
String lookUpField = d[0];
String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
Now this one was with the internal container logic:
int G;
String DBTABLE = a[0];
String lookUpField = d[0];
String Num;
Num = (String)getParameter(e[0]);
if (Num == null) G = 0;
else
G = Integer.parseInt(Num);
G = G + 1;
Num = "" + G;
setParameter(e[0], Num);
String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
And now with the Seeburger Variables:
int G;
try {
VariableBean be=VariableFactory.getVariableInstance("");
G = Integer.parseInt(String.valueOf(be.getStringVariable("yves")));
} catch (Exception f) {
throw new RuntimeException(f);
String DBTABLE = a[0];
String lookUpField = d[0];
String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
try {
G = G + 1;
Num = "" + G;
VariableBean be=VariableFactory.getVariableInstance("");
be.setStringVariable("yves",Num);
catch (Exception f) {
throw new RuntimeException(f);
All 3 logics were returning always the first row or a counter of 1 if the logic is in the main ReadTable function. -
Dear All Master Brains,
It is possible to hide our user defined query in Query Manager, apart from our user authorization.
I am waiting for your ..
Regards,
Team work never fails.Hi,
Only by authorizations you can hide the user queries.
Alternate way, If you have created those query for report purpose then you convert that query into QPLD, So that users cannot view the query you developed instead they can view the report alone.
I hope this could help you.
Regards
Raja.S -
User Defined Fields and Reference Fields on the B/S
Dear Experts,
On the balance sheet in SAP 9.0/8.82 once you click on the expanded button, there are user defined fields and reference fields which are blank. Could someone assist on how to use them ?
Kind RegardsHi Martin,
If you add any user defined fields (UDF) in Journal Entry (JE) screen, You can use the udf's in the
balance sheet report.
Regards
Neslin -
User defined Query in Print Layout
Is it possible to print output of a user defined query in a Print Layout. For example: in Quotation
KentishThanks for your input.
But its not related to Query Print Layout. I wanted to print a query result in a Sales Quotation so that when you print the Sales Quotation, you get the result of the Query on the Sales Quotation
Thanks
Kentish -
User defined attrinute and objectclasses
iam not able to create user defined attributes and object classes by running an ldif file.
could you suggest me some solution ?First, what directory vendor and version and OS are you running?
Second, can you post an example of the LDIF file you are trying to use? -
Attach User define tables and view table need add to database into my add-o
Hi there,
I want to deploy an addon, there are User define tables and view table need add to database.
I need some advice on some issues..
1. Can I attach User define tables and view table need add to database into my addon.
2. I wonder which chance is properly to add them, if add these user define objects in time of install and I can't get the enough information that connect to SQL server
Thanks for any help.Hi Weerachai,
Here's an example of how to create a user-defined table in code. My suggestion would be to check if it exists when your add-on starts up and then if not, create the tables, fields and objects.
'User Table
Private Sub CreateTable(ByVal sTable As String, ByVal sDescription As String, ByVal oObjectType As SAPbobsCOM.BoUTBTableType)
Dim oUserTablesMD As SAPbobsCOM.UserTablesMD
Dim iResult As Long
Dim sMsg As String
oUserTablesMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserTables)
If Not oUserTablesMD.GetByKey(sTable) Then
oUserTablesMD.TableName = sTable
oUserTablesMD.TableDescription = sDescription
oUserTablesMD.TableType = oObjectType
iResult = oUserTablesMD.Add()
If iResult <> 0 Then
oCompany.GetLastError(iResult, sMsg)
MessageBox.Show("Error Creating Table: " & sTable & " Error: " & sMsg)
End If
End If
System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserTablesMD)
End Sub
'User Field
Private Sub CreateField(ByVal sTable As String, ByVal sName As String, ByVal sDescription As String, _
ByVal iSize As Integer, ByVal aFieldType As SAPbobsCOM.BoFieldTypes, _
ByVal aSubType As SAPbobsCOM.BoFldSubTypes, ByVal sLink As String, _
ByVal bMandatory As SAPbobsCOM.BoYesNoEnum)
Dim oUserFieldsMD As SAPbobsCOM.UserFieldsMD
Dim oTable As SAPbobsCOM.UserTable
Dim iResult As Long
Dim sMsg As String
Dim i As Integer
Dim x As Integer
Dim bFound As Boolean = False
Dim oField As SAPbobsCOM.Field
oTable = oCompany.UserTables.Item(sTable)
For i = 0 To oTable.UserFields.Fields.Count - 1
oField = oTable.UserFields.Fields.Item(i)
'MessageBox.Show(oField.Name)
If oField.Name = "U_" & sName Then
bFound = True
End If
Next
System.Runtime.InteropServices.Marshal.ReleaseComObject(oTable)
If Not bFound Then
oUserFieldsMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)
oUserFieldsMD.TableName = "@" & sTable
oUserFieldsMD.Name = sName
oUserFieldsMD.Description = sDescription
oUserFieldsMD.Type = aFieldType
If aFieldType = SAPbobsCOM.BoFieldTypes.db_Alpha Or aFieldType = SAPbobsCOM.BoFieldTypes.db_Numeric Then
oUserFieldsMD.EditSize = iSize
Else
oUserFieldsMD.SubType = aSubType
oUserFieldsMD.Mandatory = bMandatory
End If
oUserFieldsMD.LinkedTable = sLink
iResult = oUserFieldsMD.Add()
If iResult <> 0 Then
oCompany.GetLastError(iResult, sMsg)
MessageBox.Show("Error Creating Field: " & sTable & "." & sName & " Error: " & sMsg)
End If
System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldsMD)
End If
End Sub
If you want to create a View I think you would have to use the RecordSet object. This will ensure that you don't have to log in to the database again
Hope it helps,
Adele -
User define table and store procedure install
Hi there,
I like to deploy an addon, there are User define tables and store procedure need add to database, I wonder which chance is properly to add them, if add these user define objects in time of install, we can not get the enough information that connect to SQL server, and also create UDT need DIAPI. if put create UDT and UDsp in addon program, the problem is which DIAPI funciton or object can execute create store procedure SQL string.
Thanks for any help.
LanjunR. Schwachofer,
Thank you very much,
the way call isqlw.exe to run SQL script is a good way when install, but I confuse with two questions about this way. first, run isqlw.exe should provid loginid and password of SQL server, these two information need additional install dialog to get; second if use isqlw.exe the store procedure only create to the current company database, when create new compay DB the store procedure does not exist in new DB.
so I still do not know which way is the proper way to create SP for addon.
Thanks in advance.
Lanjun -
Alert based on user defined query
Hi
I have defined user defined field U_Jobnumber.I need to stop /inform user if user is trying to enter the same u_Jonbnumber again .This is being done at sales order (header level)
Can you please help me to provide solution
(Points will be awarded based on solution or advice )
Thank you
BishalHi Bishal,
Rather than using an alert, you could put validation code in the SBO_SP_TransactionNotification stored procedure to check for the same job number before the document is added. This is a permitted solution as SAP allow users to add their own sql code to this proc (provided it's not inserting or updating data in SBO system tables).
To set up this solution (on a test system):
1) Open SQL Studio Management
2) In the Object Explorer expand the company database, expand Programmability and Stored Procedures
3) Right-click the SBO_SP_TransactionNotification stored procedure and choose Modify. This will create an update script in the main window.
4) Look for the following section in the script:
-- ADD YOUR CODE HERE
5) Underneath the above section, paste the following code:
if @OBJECT_TYPE = '17' and @TRANSACTION_TYPE in ('U', 'A')
if exists(select DocEntry from ORDR where DocEntry <> cast(@LIST_OF_COLS_VAL_TAB_DEL as int)
and U_Jobnumber is not null and U_Jobnumber <> ''
and U_Jobnumber = (select U_Jobnumber from ORDR where DocEntry = cast(@LIST_OF_COLS_VAL_TAB_DEL as int)) )
begin
set @ERROR = '9999' -- Set your own error code here
set @ERROR_MESSAGE = 'The Job Number entered has already been used on a previous sales order.'
end
6) Click on Execute and you should get a message stating that the update was successful
7) Test adding a new sales order
The above script will raise an error when the user clicks on Add if a job number has been specified on the sales order and that number has already been used. It will not check if a job number has not been specified
Kind Regards,
Owen -
User Defined field and User defined values.
Curently testing this in the demo database before rolling it out to a customer.
I added a user defined field to my item master data base called Lengthcm of type Amount.
I have created a query:
SELECT u_lengthcm = CASE
WHEN $[oitm.blen1unit] = 5 THEN $[oitm.blength1] * 2.54
WHEN $[oitm.blen1unit] = 6 THEN $[oitm.blength1] * 2.54 * 12
ELSE 0 END
Length unit 5 is inches and length unit 6 is feet.
In Item Maintenance then I create a user defined value for the lengthcm field linked to the query and set to auto-update when the blength1 field changes.
This works perfectly for 1 inch through 9 inches (1" through 9") and fills in the centimeter value. When I put in a value in feet (1', 2'), it does nothing and if I put in any value of 10" or greater gives an error message:
[Microsoft][SQL Server Native Client 10.0][SQL Server] Arithmetic overflow error
converting nvarchar to data type numeric. 'Received Alerts' (OAIB).
Checking database structure back end, blen1unit is of type small int, blength1 is numeric of size 19, 6 and so is my lengthcm field.
Edited by: Danielle Ostach on Mar 18, 2011 8:18 PM
Edited by: Danielle Ostach on Mar 18, 2011 8:19 PM
Edited by: Danielle Ostach on Mar 18, 2011 8:20 PM
Edited by: Danielle Ostach on Mar 18, 2011 8:21 PM
Edited by: Danielle Ostach on Mar 18, 2011 8:21 PMHi Danielle ,
Try this...
SELECT u_lengthcm = CASE
WHEN $[oitm.blen1unit] = 5 THEN (cast(($[oitm.blen1unit]) as decimal(19,6))) * 2.54
WHEN $[oitm.blen1unit] = 6 THEN (cast(($[oitm.blen1unit]) as decimal(19,6))) * 2.54 * 12
ELSE 0 END
Regards,
Sachin
Maybe you are looking for
-
QuickView uses EXIF data for preview, even when bogus. A plist to turn that off?
We moved to MBPs with SnowLeopard recently and just found that many downloaded images usually from publicity or stock-photo sites - give distorted or no preview when we use QuickView (tapping the space-bar) on them in the Finder. Some investigation
-
The figure links are not working
The figure links are not working in the latest ADE 4.0.3. The same ePUB figure links are worked perfectly in ADE 3.0.
-
How to simulate a mobile robot using labview
Hello, Is it possible to simulate the movement of a mobile robot using labview? I mean, is it possible to have a graphics window to show these movements? Thanks
-
How to pass qty to create_line_reservations ?
1- i want to create an ingrediant material reservation at version 12 ( which equals to pending line allocation at version11 ) i'm using an API : gme_api_pub.create_line_reservations , but , how can i pass the Qty to it ? the API paramters are just th
-
Confirm TO Query (ref:L_TO_CONFIRM)
HI Everyone, I have a query regarding TO confirmation that I'd appreciate some advice on. I implemented a custom RF transaction to confirm TO for putaway using the function module L_TO_CONFIRM. To my mind it's working as it should but my client has r