Query with condities
Hi
Iu2019ll try to make a query to get a material number with the price (condition). I use the tables KONP and A304, but I get no results.
In table KONP Iu2019ve the condition record number and the amount; in table A304 Iu2019ve the condition record number and the material number. So I use as selection the material number in the table A304 to get the amount from KONP. But the query said no results.
When i use trx SE16 for both tables i'll will get the results that i want.
Can anyone tell me what Iu2019m doing wrong or better can give me the solution?
Thanks,
Peter
Hi Peter,
Go to Transaction SQVI and select the table join while creating the query and by default the tables are getting getting connected with many fields... remove all by right click on relation and join both the table with one field only i.e. "KNUMH" (condition record number)
please try it and confirm.
It is working fine.
Thanks & Regards,
Rahul Verulkar
Similar Messages
-
Sql query with conditions and calculations???
Hi,
how I can build a query with conditions and calculations?
E.g. I've got this table
Start | End | Working Place | Mandatory
01-JAN-13 | 11-JAN-13 | Office | 1
14-JAN-13 | 25-JAN-13 | Home Office | 0
04-MRZ-13| 15-MRZ-13 | Office | 0
11-FEB-13 | 22-FEB-13 | Office | 1
Now if column working place=Office and column mandatory=0
the new column "price" has to calculate: (End-Start)* $25.00
and if working place=Office and column mandatory=1
the "price" column has to calculate: (End-Start)* $20.60
else $0.00
I tried it with the case statement but I didn't know how
to calculate my values and display it to the virtual column "price".
Something like
case
when Working_Place = 'Office' and Mandatory=1
then ...
else '0.00'
end as PRICE
Or is it not possible?
Edited by: DB2000 on 12.03.2013 05:09Use CASE:
select start_dt,
end_dt,
working_place,
mandatory,
case
when working_place = 'Office' and mandatory = 0 then (end_dt - start_dt) * 25
when working_place = 'Office' and mandatory = 1 then (end_dt - start_dt) * 20.60
else 0
end price
from tbl
START_DT END_DT WORKING_PLA MANDATORY PRICE
01-JAN-13 11-JAN-13 Office 1 206
14-JAN-13 25-JAN-13 Home Office 0 0
04-MAR-13 15-MAR-13 Office 0 275
11-FEB-13 22-FEB-13 Office 1 226.6
SQL> SY. -
Performance of APD with source as 'Query with conditions'
Hi,
I have a question regarding the performance of an APD query with conditions when it is run in the background.
I have an infocube with 80 million records.I have a query to find Top 15 (Condition In query) Customers per territory.
With the help of an APD Query (Source) i wanted to populate the details (customer category , etc) of the Top 15 Customers into a DSO (Target)
Right now it takes 6 minutes to run the query in web.
I wanted to know how feasible it is to use an APD (run in backgrnd) to dump the results of the BEx query (which has conditions Top 15) into DSO.
Also , what other options do i have ?
Appreciate your answers.
RegardsThomas thanks for the response. I have checked the file on the app server and found that the lines with more than 512 characters are being truncated after 512 characters. Basis team is not aware of any such limits on the app server. I am sure few on the forum would have extracted data to a file on the application server using APD. Please note that the file extraction to the client workstation is working as expected (posts lines more than 512 characters).
-
Hi,
Is it possible to run a sub query with conditions? I keep receiving an error 'Registration Data' -2006.
For example, here is a simplified query which gives the error...
SELECT T1.CardCode FROM
SELECT T0.CardCode FROM OCRD T0 WHERE T0.CardCode = '[%0]'
) T1
FOR BROWSE
Thanks for any help,
RobinSBO SQL-parser sometimes kidding. My solution is to use temptables/views/storedprocedures.
It's faster then "unbugging" parser <b>:)</b>
in your case that can be like the following:
SELECT T0.CardCode INTO #temp FROM OCRD T0 WHERE T0.CardCode = N'[%0]'
SELECT qq.CardCode FROM #temp qq FOR BROWSE
BTW: registration data error is usially says us about %-argument reason -
Missing Result Rows on Query with Conditions
I have a query that has a condition to show only items over $2500.00. We have a result row that shows for plant when the condtions is not on but once the condition is set that result row goes away. Does anyone know how to get a result row to show up on reports with conditions? Thank you.
CarolineHi Caroline,
In BI 7.0, you goto do this in Query Designer.
Select any of your characteristic in the designer and choose Display Properties to always display result.
Then run the query.
Assign Points if Helps !!
Regards,
Naveen Rao Kattela -
SQL Report query with condition (multiple parameters) in apex item?
Hello all,
I have a little problem and can't find a solution.
I need to create reports based on a SQL query or I.R. Nothing hard there.
Then I need to add the WHERE clause dynamically with javascript from an Apex item.
Again not very hard. I defined an Apex item, set my query like this "SELECT * FROM MYTAB WHERE COL1 = :P1_SEARCH" and then I call the page setting the P1_SEARCH value. For instance COL1 is rowid. It works fine.
But here is my problem. Let's consider that P1_SEARCH will contain several rowids and that I don't know the number of those values,
(no I won't create a lot of items and build a query with so many OR!), I would like sotheming like "SELECT * FROM MYTAB WHERE ROWID IN (:P1_SEARCH) with something like : ROWID1,ROWID2 in P1_SEARCH.
I also tried : 'ROWID1,ROWID2' and 'ROWID1','ROWID2'
but I can't get anything else than filter error. It works with IN with one value but as soon as there are two values or more, it seems than Apex can't read the string.
How could I do that, please?
Thanks for your help.
Maxmnoscars wrote:
But here is my problem. Let's consider that P1_SEARCH will contain several rowids and that I don't know the number of those values,
(no I won't create a lot of items and build a query with so many OR!), I would like sotheming like "SELECT * FROM MYTAB WHERE ROWID IN (:P1_SEARCH) with something like : ROWID1,ROWID2 in P1_SEARCH.
I also tried : 'ROWID1,ROWID2' and 'ROWID1','ROWID2'
but I can't get anything else than filter error. It works with IN with one value but as soon as there are two values or more, it seems than Apex can't read the string.For a standard report, see +{message:id=9609120}+
For an IR—and improved security avoiding the risk of SQL Injection—use a <a href="http://download.oracle.com/docs/cd/E17556_01/doc/apirefs.40/e15519/apex_collection.htm#CACFAICJ">collection</a> containing the values in a column instead of a CSV list:
{code}
SELECT * FROM MYTAB WHERE ROWID IN (SELECT c001 FROM apex_collections WHERE collection_name = 'P1_SEARCH')
{code}
(Please close duplicate threads spawned by your original question.) -
Using a query with condition as a source to fill an ODS
Hi all,
i need your help guys, i got the task to take the data from a BI Query and fill and ODS monthly, it means, i need taking like a picture of the data of the report at the end of each month, in this way i bring the data and fill a ods or cube monthly.
I tried to do it with APD and doesnt work because this query has many conditions, now i tried with the RSCRM_BAPI and this when execute last too much, this execution has 2 days and doesnt finish yet, i can think this is not a factible way either, what else can i do? helphi,
You need to write a code to get the key figure and characterstics value.
First step is to defined the structure of all the field that you want to read.
This table I_AXIS_DATA will contain the characterstics.
This table I_CELL_DATA will contain the keyfigure.
Please find the code.
READ TABLE I_AXIS_DATA INTO WA_AXIS_DATA WITH KEY AXIS = '001' .
IF SY-SUBRC = 0.
LOOP AT WA_AXIS_DATA-SET INTO WA_SET.
INDEX = INDEX + 1.
IF WA_SET-CHANM = 'infoobject name'.
WA_ROW_COL-fields = WA_SET-CHAVL_EXT .
ENDIF.
IF WA_SET-CHANM = 'infoobject name'.
WA_ROW_COL-field2 = WA_SET-CHAVL_EXT.
ENDIF.
ENDLOOP.
ENDIF.
******* POPULATE COLUMNS AGAINST ROWS
CLEAR WA_ROW_COL.
V_COUNT = 1.
INDEX = 1.
LOOP AT IT_ROW_COL INTO WA_ROW_COL.
WHILE ( V_COUNT <= V_NUMOFKEYF ).
READ TABLE I_CELL_DATA INTO WA_CELL_DATA INDEX INDEX.
IF V_COUNT = 1.
WA_ROW_COL-keyfigure = WA_CELL_DATA-FORMATTED_VALUE.
ENDIF.
V_COUNT = V_COUNT + 1.
INDEX = INDEX + 1.
CLEAR WA_CELL_DATA.
ENDWHILE.
APPEND WA_ROW_COL TO IT_R_C_H.
V_COUNT = 1.
Hope this is helpful.
Thanks,
Saveen Kumar -
Writing query with conditions from textbox control on a form
i have written the following code for a query to run on a condition....
and i want to pass the condition value from textbox not directly as i did in my code
i want to get it from a textbox control on form
how to do this ....?
oConditions = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_Conditions)
oCondition = oConditions.Add
oCondition.BracketOpenNum = 1
oCondition.Alias = "U_RentedAvailable"
oCondition.Operation = SAPbouiCOM.BoConditionOperation.co_EQUAL
oCondition.CondVal = "Y" ' i want to get it from a textbox control on form
oCondition.CompareFields
oCondition.BracketCloseNum = 1
oDBDataSource.Query([oConditions])
oMatrix.LoadFromDataSource()thanx for ur reply....
here i'm using UDO object for my table....when i enter data on my textbox and click on find i'm not getting data
..here is the sample code what i have written....
Public Sub loadMatrix()
oitem = oForm.Items.Item("8")
oMatrix = oItem.Specific
oColumns = oMatrix.Columns
oDBDataSource = oForm.DataSources.DBDataSources.Add("@VIDS_MGT")
'' ''' setting conditions...
'' to create the new condition collection
Try
oConditions = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_Conditions)
oCondition = oConditions.Add
oCondition.BracketOpenNum = 1
oCondition.Alias = "U_RentedAvailable"
oCondition.Operation = SAPbouiCOM.BoConditionOperation.co_EQUAL
oCondition.CondVal = DirectCast(oForm.Items.Item("7").Specific, SAPbouiCOM.EditText).Value.ToString()
oCondition.BracketCloseNum = 1
'' '''End of setting conditions...
oColumn = oColumns.Item("V_5")
oColumn.DataBind.SetBound(True, "@VIDS_MGT", "Code")
oColumn = oColumns.Item("V_4")
oColumn.DataBind.SetBound(True, "@VIDS_MGT", "Name")
oColumn = oColumns.Item("V_3")
oColumn.DataBind.SetBound(True, "@VIDS_MGT", "U_CardCode")
oColumn = oColumns.Item("V_2")
oColumn.DataBind.SetBound(True, "@VIDS_MGT", "U_ShelfNumber")
oColumn = oColumns.Item("V_1")
oColumn.DataBind.SetBound(True, "@VIDS_MGT", "U_SpaceNumber")
oColumn = oColumns.Item("V_0")
oColumn.DataBind.SetBound(True, "@VIDS_MGT", "U_RentedAvailable")
oDBDataSource.Query([oConditions])
oMatrix.LoadFromDataSource()
Catch ex As Exception
SBO_Application.MessageBox(ErrorToString)
End Try
End Sub -
Universe on Bex Query with Condition
Hi,
I'm working on creating a WebI version of a Bex Report. I've created a universe on top of the Bex Query and then a WebI report based on the Universe. The Bex Query contains 4 conditions. They allow optional filtering of two measures, Less Then or Equal and Greater Then or Equal. The conditions are applied at the employee level of the results set, so for example, if an employee's total sales is greater than 50 and the user enters 50 for the condition then none of that employee's rows of data will appear.
A single filter was created in teh Universe containing all four conditions. I had to update the syntax as they were all brought in using Equals instead of the GreaterorEqual and LessOrEqual. I also updated the filter key to use the @Select and the correct dimension.
In the WebI report, only the two using LessOrEqual are functional. The two conditions that utilize GreaterOrEqual will only remove individual rows, not the enter set of rows for that employee. I've set the aggregation to sum instead of Database Delegated for the two affected measures.
If anyone has any input on how to get the GreaterOrEqual conditions functioning properly, or a workaround that will remove all rows for an employee when their sales are not above a cert number, it would be greatly appreciated.
Thanks,
JeffAlso here is the syntax for one of the filters that is not functioning properly.
<OPTIONAL><FILTER KEY="@Select(Total Quantity of Adjustments\Total Quantity of Adjustments)"><CONDITION OPERATORCONDITION="GreaterOrEqual"><CONSTANT CAPTION="@Prompt('Minimum Quantity of Adjustments','N',,mono,free)"/></CONDITION></FILTER></OPTIONAL> -
Need help with group by query with condition
Name
ID
A1
1
A2
1
A3
1
A1
1
A2
2
A2
3
A3
3
A1
4
A2
4
A3
5
I want to get result of total count where ID is less than 4
A1 - 2
A2 - 3
A3 - 2Hi,
If you want to get 0 counts for names that don't have any low ids, then use a CASE expression instead of a WHERE clause.
You didn't post CREATE TABLE and INSERT statements for your sample data, so I'll use scott.emp to illustrate.
Say you want to see how many sals in each job are under 3000, like this:
JOB UNDER_3_CNT
CLERK 4
SALESMAN 4
PRESIDENT 0
MANAGER 3
ANALYST 0
Here's one way to do that:
SELECT job
, COUNT (CASE WHEN sal < 3000 THEN 1 END) AS under_3_cnt
FROM scott.emp
GROUP BY job
This shows that there are ANALYSTs and PRESIDENTs in the scott.emp table; there just don't happen to be any with sals under 3000. -
BDC select query with addition based on all If conditions
Hi can any one send me the select query with conditions like
If Itab is not initial.
Endif. and if possible with valiadations messages also.
IF CHECK_NUMBER of CHECK_ADVICE of the flat file = PAYR-CHECT. Then update SAP field BSEG-XREF2 .
9. When Flat file check Number = PAYR-CHECT then Insert or Update Flat file RECEIPT_DATE into SAP field BSEG-XREF1.
Please send me immediately.> SELECT rsnum
> rspos
> matnr
> werks
> lgort
> shkzg
> aufnr
> bdmng
> enmng
> FROM resb INTO TABLE it_rsnum FOR ALL ENTRIES IN it_aufnr
> WHERE rsnum EQ it_aufnr-rsnum
> AND xloek NE 'X'
> AND postp NE 'X'
> AND resbbdmng GE resbenmng.
> ENDIF.
>
> Database Table RESB: 40,000,000 Records (40 Million)
> Internal Table it_aufnr: 20,000 Entries
> Entries selected from RESB: 150,000.
>
Hi,
the problem is the big for all entries table.
Your 20.000 records FAE will be split into SEVERAL sql statements depending on the size of the table.
Where do you get the it_auftrn from?
If it's another transparent table try to JOIN this table to your big table.
SELECT rsnum
rspos
matnr
werks
lgort
shkzg
aufnr
bdmng
enmng
FROM resb JOIN tab_auftrn on resbrsnum = tab_auftrnauftrn
AND xloek NE 'X'
AND postp NE 'X'
AND resbbdmng GE resbenmng.
Make sure that your WHERE filter and the JOIN keys on both tables are supported by indexes.
150.000 records about of 40 Mio. can definitly be serviced by an appropriate index:
i.e. Index fields (check your PK or secondary indexes):
rsnum
enmng
aufnr
bye
yk -
Query with tables VEPVG, VBAK, VBAP AND KONV
hi all,
I have a requirement, that is Open Sale Orders which is having Special Discount. I am trying to write a Query, But KONV table is not coming into the joins. my execution plans is bellow
VEPVG --> VBAK vbak-knumv = konv-knumv and konv-kschl = Special Discount
VBAP
Please explain me, how to design the query with conditions.
Thanks & Regards,
SrinivasHi,
Have you referred this help document.
http://help.sap.com/printdocu/core/Print46c/EN/data/pdf/BCSRVQUE/BCSRVQUE.pdf
Regards - Shree -
Extract Sql Query with Actual Parameters from Report
Hi
I am able to extract query from Crystal Report using the following code :
ReportDocument.ReportClientDocument.RowSetController.GetSqlStatement(new GroupPath, out tmp);
But the sql query retrieve comes in the following format :
select name , trans_code, account_code from command_query.accounts
where account_code = {?Command_query_Prompt0} and effective_date < '{?Command_query_prompt1 }'
The parameters which I m using in the reports are :
Account_Code and Effective_Date .
Why does my extracted sql translates it into {?Command_query_Prompt0} and '{?Command_query_prompt1 }' .
Is there any way to map this to the actual parameter values ?
OR
Can we extract the query after assigning the values ?
Any help is appreciated ...
Thanks
Sanchethi,
You can create nested sql query with conditional parameters,
For example
Select Code From OITT Where Code IN (Select ItemCode From OITM
Where ItemName LIKE '[%0]' + '%%')
Edited by: Jeyakanthan A on Jun 9, 2009 12:31 PM -
Results for % calculation with Condition
I have a condition on my query in BEx Query Designer that limits the customers shown to ones who have a dollar value in a particular column. I am now trying to get the results rows to take the condition into account.
For the dollar key figures, I can just set the results calculations to "Total", and that gives me the total dollars for the customers displayed (that fit the condition), as opposed to the total dollars for ALL customers (if I didn't have the condition). This is correct.
However, I have another key figure that represents what percentage of one dollar key figure that another dollar key figure is. I cannot get the result rows for this key figure to correctly show me the results of the calculation for only the values that match the condition, it keeps showing the percentages based on the full dollar quantities outside of the condition.
Is there a way for me to get the calculation that I want?
Query without Condition:
Customer_____Dollars1_____Dollars2_____%
A_____________5___________20________25
B____________10___________20________50
C____________10___________10_______100
Result________25___________50________50
Query with Condition (Dollars1 > 5) Current behavior (wrong):
Customer_____Dollars1_____Dollars2_____%
B____________10___________20________50
C____________10___________10_______100
Result________20___________30________50
Query with Condition (Dollars1 > 5) Desired behavior (correct):
Customer_____Dollars1_____Dollars2_____%
B____________10___________20________50
C____________10___________10_______100
Result________20___________30________66
Please Help!Hi,
As i cannot see invoice document number in output so would suggest to go for nested exception aggregation.
Create a new formula and put your aggregated keyfigure inside it and repeat the steps which i told in my last post.
Make sure to apply it on both the keyfigures.
If this also not works then last approach would be---
Make a formula variable with replacement path for customer in replacement path tab choose replace variable with infoobject-replace with attribute value-attribute constant 1..in currency/unit ttab choose number..
Now multiply your both keyfigure with this formula variable.
Hope it helps. -
Dynamic select query with dynamic where condition
Hi all,
I want to use the dynamic select query with dynamic where condition. For that I used the below code but I am getting dump when using this code.
Please advice, if there is any other way to achieve this requirement.
Thanks,
Sanket Sethi
Code***************
PARAMETERS: p_tabnam TYPE tabname,
p_selfl1 TYPE edpline,
p_value TYPE edpline,
p_where1 TYPE edpline .
DATA: lt_where TYPE TABLE OF edpline,
lt_sel_list TYPE TABLE OF edpline,
l_wa_name TYPE string,
ls_where TYPE edpline,
l_having TYPE string,
dref TYPE REF TO data,
itab_type TYPE REF TO cl_abap_tabledescr,
struct_type TYPE REF TO cl_abap_structdescr,
elem_type TYPE REF TO cl_abap_elemdescr,
comp_tab TYPE cl_abap_structdescr=>component_table,
comp_fld TYPE cl_abap_structdescr=>component.
TYPES: f_count TYPE i.
FIELD-SYMBOLS : <lt_outtab> TYPE ANY TABLE,
* <ls_outtab> TYPE ANY,
<l_fld> TYPE ANY.
struct_type ?= cl_abap_typedescr=>describe_by_name( p_tabnam ).
elem_type ?= cl_abap_elemdescr=>describe_by_name( 'F_COUNT' ).
comp_tab = struct_type->get_components( ).
comp_fld-name = 'F_COUNT'.
comp_fld-type = elem_type.
APPEND comp_fld TO comp_tab.
struct_type = cl_abap_structdescr=>create( comp_tab ).
itab_type = cl_abap_tabledescr=>create( struct_type ).
l_wa_name = 'l_WA'.
CREATE DATA dref TYPE HANDLE itab_type.
ASSIGN dref->* TO <lt_outtab>.
*CREATE DATA dref TYPE HANDLE struct_type.
*ASSIGN dref->* TO <ls_outtab>.
* Creation of the selection fields
APPEND p_selfl1 TO lt_sel_list.
APPEND 'COUNT(*) AS F_COUNT' TO lt_sel_list.
** Creation of the "where" clause
*CONCATENATE p_selfl1 '= '' p_value ''.'
* INTO ls_where
* SEPARATED BY space.
*APPEND ls_where TO lt_where.
* Creation of the "where" clause
APPEND p_where1 TO lt_where.
* Creation of the "having" clause
l_having = 'count(*) >= 1'.
* THE dynamic select
SELECT (lt_sel_list)
FROM (p_tabnam)
INTO CORRESPONDING FIELDS OF TABLE <lt_outtab>.
* WHERE (lt_where).Hi Sanket,
The above given logic of mine works for you, put the code in the If condition and try-
just like below:
IF NOT P_EBELN IS INITIAL.
lt_where = '& = ''&'' '.
REPLACE '&' WITH p_ebeln INTO lt_where.
REPLACE '&' WITH field_value INTO lt_where.
SELECT (lt_sel_list) INTO CORRESPONDING FIELDS OF TABLE <lt_outtab>
FROM (p_tabnam)
WHERE (lt_where).
ENDIF.
thanks\
Mahesh
Maybe you are looking for
-
Error in Mapping: Huge Payload
Hi, I have got following error in my mapping and the payload is very huge (real time data) When I try to copy this payload to IR test space it hangs. It seems there is a data error for company code but I can't figure out which Details company code ha
-
Registration of Photoshop Elements 13
I bought Photoshop Elements 13 on Amazon but cannot register it because the serial number on the box seems not to be the right one, how can I do ?
-
Registration lady implied there is a work around for re-installing/activating Audition 3.
-
Help-Error message itunes producer
Can somebody help me please. I'm trying to upload something and they're giving me the same error message. I don't know what to do next... I'm exporting from indesign in epub. Thanks for your help.
-
Error in consignment consumption
Hi All, I had done 411k to transfer stock from consignment to unrestricted. now i m doing 201k and is giving error msg "Deficit of VC Unrestricted-use 1 nos : 300000010 FORG SCON K".