RSRT & RSRV
Hello,
What r these transactions and when and for what are they used? in which scenarios they are used?
regards,
Hi Aby,
RSRT is used for monitoring query execution (performance, debug, etc.)
RSRV is used to analyse consistency and repairing of BW objects (InfoCubes, ODS, PSA, Master Data, etc.).
You will use RSRT to get technical information on a query when you perform some tuning for instance (use of cache and related aspects).
You will use RSRV to check objects when you get errors (example: missing SID's) or when you want to make an audit of your BW system for possible problems or before a major upgrade, etc.
Hope it helps a bit.
LauQ
Similar Messages
-
Hi Friends,
Can any one please tell me.
Do we have any danger if we use all sort of functionality in RSRV , RSRT for BW objects or Report in Production server. Some times i am feeling that it is harmful when i do things things like repiar..But i donot know..
Please tell me if any limitations are available??
Thanks
TonyIt depends on what you are changing or playing around with.
For RSRT, it's great for testing Queries with. You can also change the performance of a query under the 'Properties' tab.
If you switch the Read Mode to 'A' - 'Query to Read All Data at Once', it can really kill the query performance. Instead of reading data with each navigation, it reads it all before it loads. It will speed up navigation after the report has rendered, but kill the load time.
The 'Generate Report' button can be used with the report has become corrupt. It will regenerate the report. It hasn't happened many times, but I've had reports that just failed to run when no change has been made. Regenerating the report fixed it.
Execute + Debug is a lifesaver when you need to trace user exits in your report. It has a lot of neat options.
RSRV can help you find problems with your InfoProviders. Just last week, one of my ODS objects had a bad activation. I was able to run an analysis and allow the system to correct my error. If you are unsure of the change, you can always not 'correct error' and view the log of the analysis.
Michael
Assign pts if you found any of that useful. -
Hello Everybody
My question is I have to run few queries and my feilds are scatterd in couple of ods's and they are all business content(can i should i modify them if need be). So what should i do create infosets out of them or should i like update the ods and include the feilds that they are missing. On the other hand if the feild is even present in one ods is it the rule to join that one with the others you need. Also whats a good way to test if we are joining right feilds and that the results are going to be correct records.
Thanks
MarkHi Mark
There are two kinds of joins
1. Inner join
2. Outer join
Inner join needs all the fields in the table 1 should be connected to some fields in the table 2
Outer join enables a results set even though you connect table 1 and table 2 with single common field
http://help.sap.com/saphelp_nw70/helpdata/en/f1/713c3b35703079e10000000a114084/content.htm
Your situation suggests you may need more infosets ...you can segregate your queries and group them based on source ODSes and create more than one infosets
The reason is data fetching in infoset queries can be time consuming as everything is done at the runtime. To avoid potentially long runtime you can use more than one infosets to achieve the intended results
Check whether this transactions RSRT/ RSRV helps you, moreover you can even create a test variable to chose very few records for testing purposes
Regards
N Ganesh -
How do we use RSRV & RSRT for performance tuning?
which specific information is used in decision making (I know that RSRV & RSRT provides lot of performance tuning related information)
Thanx in advance...points will be granted
MonicaHi,
RSRV is basically used for index, database statistics. This has combined tests as well as elementary tests for master data, transaction data, PSA tables, etc. Ex if you are facing any load performance issues with a cube , you can check the database indices for the cube as well as for aggregates if any. Another ex is there are tests which give you comparision between table sizes.
RSRT is mainly used for queries. You can use the debug option to trace the queries to see why the query is taking a long time to execute and so on.
Cheers,
Kedar -
Document related to t codes RSRT, RSRT1 and RSRV
Hi Gurus,
As This is urgent requirment for me, please help me full points will be awarded.
I want to know what are the difference between T codes RSRT, RSRT1 and their usability.
can any one help me in this regard with documentation part.
advance tanks
sekharhi sekhar,
RSRT is to scan the query as to how the query gets executed, whether it uses aggregates or cubes, full table scan or uses index, etc.
You can also change the performance of a query under the 'Properties' tab.
If you switch the Read Mode to 'A' - 'Query to Read All Data at Once', it can really kill the query performance. Instead of reading data with each navigation, it reads it all before it loads. It will speed up navigation after the report has rendered, but kill the load time.
The 'Generate Report' button can be used with the report has become corrupt. It will regenerate the report. It hasn't happened many times, but I've had reports that just failed to run when no change has been made. Regenerating the report fixed it.
Execute + Debug is a lifesaver when you need to trace user exits in your report. It has a lot of neat options.
RSRV can help you find problems with your InfoProviders. Just last week, one of my ODS objects had a bad activation. I was able to run an analysis and allow the system to correct my error. If you are unsure of the change, you can always not 'correct error' and view the log of the analysis.
hope this helps,
partha -
RSRV? Drilling through Report times out sometimes
Hi,
I have reviewed several documents on RSRV on SDN but I have some specific questions.
1. While drilling down on a particular report, sometimes it would timeout. Can you direct me how to use RSRV to figure out the problem and fix?
2. Also, I saw a caution in one of the postings to be careful running RSRV on production. Does RSRV automatically begins the repairs or you get the chance after the diagnoses to make a decision to repair or not? What really can go wrong during the repairs?
3. Also, I know RSRV has these options:
a. Master Data Consistency Checks
b. Transaction Data Consistency Checks
c. Size of Dimension tables
d. Checking SID values
e. PSA duplicate record check
f. Checking Aggregates
g. Partitions of Info cubes etc...
Which of these options really will help me identify the intermittent problem I am having with the report? I will appreciate some stepwise guidelines on how to step through to figure out the problem.
ThanksHi,
I tried RSRT; entered Query name; Query Display: List
Parameter 1 or 2 (I chose 1)
I then selected:
Display run schedule
Do not use cache
Do not suppress messages/warning
The selection screen of the report came up report and I completed it. After execute+Debug I get the data below.
What do I do from this point to figure out the problem and fix it:
SQL Statement
SELECT
/*+
STAR_TRANSFORMATION FACT(F)
"DT"."SID_0CALMONTH" AS "S____022" ,"D5"."SID_0DOC_TYPE" AS "S____130" ,
"DU"."SID_0CURRENCY" AS "S____023" ,"S1"."MATL_GRP_4" AS "K____404" ,
SUM ( "F"."G_AVV010" ) AS "Z____084" , SUM ( "F"."G_AVV140" ) AS "Z____093" ,
SUM ( "F"."G_AVV150" ) AS "Z____223" , COUNT( * ) AS "Z____030"
FROM
"/BIC/FATRUMMNP" "F" JOIN "/BIC/DATRUMMNP3" "D3" ON "F" . "KEY_ATRUMMNP3" = "D3" . "DIMID" JO
N "/BI0/SMATL_GRP_4" "S1" ON "D3" . "SID_0MATL_GRP_4" = "S1" . "SID" JOIN "/BIC/DATRUMMNPP" "DP
Execution Plan
SELECT STATEMENT ( Estimated Costs = 42 , Estimated #Rows = 1 )
5 30 HASH GROUP BY
( Estim. Costs = 42 , Estim. #Rows = 1 )
Estim. CPU-Costs = 15,234,394 Estim. IO-Costs = 34
5 29 HASH JOIN
( Estim. Costs = 41 , Estim. #Rows = 1 )
Estim. CPU-Costs = 13,191,632 Estim. IO-Costs = 34
Access Predicates Filter Predicates
5 12 PARTITION RANGE SINGLE
( Estim. Costs = 5 , Estim. #Rows = 0 )
Pstart: KEY Pstop: KEY
Estim. CPU-Costs = 19,122 Estim. IO-Costs = 4
5 11 TABLE ACCESS BY LOCAL INDEX ROWID /BIC/FATRUMMNP
( Estim. Costs = 5 , Estim. #Rows = 0 )
Pstart: KEY Pstop: KEY
Estim. CPU-Costs = 19,122 Estim. IO-Costs = 4
5 10 BITMAP CONVERSION TO ROWIDS
5 9 BITMAP AND
5 4 BITMAP MERGE
5 3 BITMAP KEY ITERATION
Thanks -
Full text not getting displayed while using RSRT
Hi,
I am facing issue while downloading data using RSRT in BI system.
When I go to RSRT and execute a report the output doesn't display full text for a characteristic. i.e. the characteristic has a size of 60 characters, but only 30 chars ( approx) are being displayed as report output in RSRT.
COuld anyone here please help me in getting the full text using RSRT transaction?
I am not using Bex here for the reason that the output has more than 1.8 lac records and hence I get an error while using Bex
WHen I try to execute this report using Bex for a small selection I could see full text there.
And there is no text master data maintained for this characteristic.
Thanks in advance for your replies.Hi,
As you said you have 1.8 Lac records, There is no point in increasing the size to maximum number possible i.e 65K .
You have following three options to satisfy your requirement.:
1. Usage of web reporting for export of more than 65k rows. According the note: 1127156 - Safety belt: Result set is too large, in BW version 7.x it I possible to set parameters that would allow such a massive export of data.
2. Functionality of OpenHubs. Data can be placed directly into the files (e.g. in CSV format) on application server. Be careful here OpenHubs are specially licensed and by using it there are additional fees.
3. Coding of custom ABAP report which runs BW query and gets all its output and saves it in the flat files.
Please let me know if this info is helpful.
Regards,
Krishna Tangudu -
Doubt in RSRT regarding generate query.
Hi All,
I have a doubt in transaction code RSRT (Query monitor). Under the tab environment, there are 2 options.
1) Generate queries.
2) Gen.Queries directly as shown below.
i.e in RSRT> Environment> Generate Query
and RSRT> Environment> Gen. Query directly.
I would like to know what the functions of these two options are and what they do?
And also would like to know how these 2 are different from generate report.
I know generate report means regeneration of query, but what does regeneration of query actually do?1) generate queries = generate the query @ next call.
This means it does not gets generated unless the query is called by a workbook, web template,...
2) Directly: generates the selected queries directly.
Generation of a query: a query is in fact an ABAP program. This program is created by the BI system.
To generate a query is to 'create' the ABAP program for the query.
You can also delete the old ABAP's (old versions):
environment -> delete old ABAPs -
Transaction RSRT and agregattes.
When I execute transaction RSRT, To execute + Debuging, I select to show aggregates, the process generates dump with the following legend:
If the error occures in a non-modified SAP program, you may be able to
find an interim solution in an SAP Note.
If you have access to SAP Notes, carry out a search with the following
keywords:
"RAISE_EXCEPTION" " "
"SAPLRRSV" or "LRRSVF03"
"RAISE"
or
"SAPLRRSV" "IOBJ_VALUE_NOT_VALID"
or
"WRITEQUERY " "IOBJ_VALUE_NOT_VALID"
Query is on multiprovider.
Thanks for yuor help.Hi,
Please check the OSS Note:
877308
-Vikram -
F4 help Not Working in Portal but working in RSRT and BEx
Hi All,
We have a report in which a customized infoobject is used as one of the selection criteria. This field is a navigational attribute of main infoobject. There are other two navigational attributes of this infoobjects as well in the selection critera.
When we run the report using portal and click on F4 for this variable, it is not reading master data whereas it is working fine if we are using RSRT or BEx.
The other two variables are working fine in the portal as well.
Please help us incase if you have encountered such problem.
Thanks,
DineshHi Imran,
thanks for the reply.
I will explain the problem in detail
We have a query Q1 and its web template WT_Q1. We have the infoobjects a, b, c and d. the infoobjects b,c and d are the navigational attributes of the infoobject a. We have a cube C01 where all of these infoobjects are used.
All the Infobjects are the selection variables in the Query Q1 which are actually the navigational attributes.
When we F4 on c or d, it is picking up the master data and displaying it iin portal as well as BEx or RSRT.
But the F4 on "B", it is not displaying in portal whereas in BEX or RSRT we are able to get the master data values.
On further analysis, i have found that it is not hitting the specific SQL code from where the master data objects are read.
Hope this is clear.
Thanks,
Dinesh -
Huge Performance issue and RSRT
Hi BW Gurus,
We are using BCS cube for our consolidation queries and reports . There is a huge prformance problem.
I need to know that wht should be the appropriate size of the Global cache as compared to Local Cache. My global cache size is 100 MB and Global Cache size is 200 MB.
Also when I go to RSRT properties
Read Mode is H: Query to read when you navigate or expand hierarchy .
Cache Mode is : 4 persistent cache across each application server
persistence mode : 3 transparent table (BLOB).
Do I have to change these settings ....please give your suggestions
will appreciated with lot of points
ThanksHi Folks,..
Could you'll please tell me where exactly we put the break point I will paste my code. I did Run SE30 and the list cube extraction simaltaneoulsy and gave me a message error generating the test frame
tatics:
FUNCTION RSSEM_CONSOLIDATION_INFOPROV3.
""Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(I_INFOPROV) TYPE RSINFOPROV
*" REFERENCE(I_KEYDATE) TYPE RSDRC_SRDATE
*" REFERENCE(I_TH_SFC) TYPE RSDD_TH_SFC
*" REFERENCE(I_TH_SFK) TYPE RSDD_TH_SFK
*" REFERENCE(I_TSX_SELDR) TYPE RSDD_TSX_SELDR
*" REFERENCE(I_FIRST_CALL) TYPE RS_BOOL
*" REFERENCE(I_PACKAGESIZE) TYPE I
*" EXPORTING
*" REFERENCE(E_T_DATA) TYPE STANDARD TABLE
*" REFERENCE(E_END_OF_DATA) TYPE RS_BOOL
*" REFERENCE(E_T_MSG) TYPE RS_T_MSG
*" EXCEPTIONS
*" ERROR_IN_BCS
statics:
UT begin:
this flag is switched in order to record data returned by the current query in UT
it can only be switched on/off in debug mode.
s_record_mode type rs_bool,
s_qry_memo type char256, " at the moment, for query name
package No, UUID, for unit testing
s_packageno type i,
s_guid type guid_22,
UT end.
s_first_call like i_first_call,
s_destination type rfcdest,
s_basiccube type rsinfoprov,
s_dest_back type rfcdest,
s_report type programm,
s_bw_local type rs_bool,
sr_data type ref to data,
sr_data_p type ref to data,
st_sfc type t_sfc,
st_sfk type t_sfk,
st_range type t_seqnr_range,
st_hienode type t_seqnr_hienode,
st_hienodename type t_seqnr_hienodename,
st_seltype type t_seqnr_seltype,
st_datadescr type T_DATADESCR,
s_end_of_data type rs_bool
data:
l_ucr_data_read_3 type funcname value 'UCR_DATA_READ_3',
l_packagesize like i_packagesize,
lt_message type t_message,
ls_message like line of e_t_msg,
l_xstring type xstring,
l_nr type i.
field-symbols:
<ls_message> type s_message,
<lt_data> type standard table,
<ls_data> type any,"nos100804
<lt_data_p> type hashed table."nos100804
clear: e_t_data, e_end_of_data, e_t_msg.
react on packagesize -1
if i_packagesize le 0. "nos050705
l_packagesize = rssem_cs_integer-max.
else.
l_packagesize = i_packagesize.
endif.
if i_first_call = rs_c_true.
s_first_call = rs_c_true.
clear s_end_of_data.
begin "nos100804
data:
lo_structdescr type ref to cl_abap_structdescr
,lo_tabledescr type ref to cl_abap_tabledescr
,lo_typedescr type ref to cl_abap_typedescr
data:
lt_key type table of abap_compname.
field-symbols <ls_component> type abap_compdescr.
create data sr_data_p like line of e_t_data.
assign sr_data_p->* to <ls_data>.
CALL METHOD CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA
EXPORTING
P_DATA = <ls_data>
RECEIVING
P_DESCR_REF = lo_typedescr.
lo_structdescr ?= lo_typedescr.
collect all key components to lt_key
loop at lo_structdescr->components assigning <ls_component>.
insert <ls_component>-name into table lt_key.
if <ls_component>-name = '&KEYEND'.
exit.
endif.
endloop.
data ls_sfk like line of i_th_sfk.
data l_key type abap_compname.
loop at i_th_sfk into ls_sfk.
l_key = ls_sfk-kyfnm.
if l_key is not initial.
delete table lt_key from l_key.
endif.
l_key = ls_sfk-value_returnnm.
if l_key is not initial.
delete table lt_key from l_key.
endif.
endloop.
create data sr_data_p like hashed table of <ls_data>
with unique key (lt_key).
create data sr_data_p like e_t_data.
create data sr_data like e_t_data.
end "nos100804
perform determine_destinations using i_infoprov
changing s_destination
s_dest_back
s_report
s_basiccube.
perform is_bw_local changing s_bw_local.
***--> convert the selection, enhance non-Sid-values.
--> Handle fiscper7
data:
lt_SFC TYPE RSDRI_TH_SFC
,lt_sfk TYPE RSDRI_TH_SFK
,lt_range TYPE RSDRI_T_RANGE
,lt_RANGETAB TYPE RSDRI_TX_RANGETAB
,lt_HIER TYPE RSDRI_TSX_HIER
,lt_adj_hier type t_sfc "nos290704
statics: so_convert type ref to lcl_sid_no_sid
, sx_seldr_fp34 type xstring
, s_fieldname_fp7 type RSALIAS
, st_sfc_fp34 TYPE RSDD_TH_SFC
create object so_convert type lcl_sid_no_sid
exporting i_infoprov = i_infoprov.
Transform SIDs...
perform convert_importing_parameter
using i_th_sfc
i_th_sfk
i_tsx_seldr
so_convert
e_t_data
changing lt_sfc
lt_sfk
lt_range
lt_rangetab
lt_hier
sx_seldr_fp34
"Complete SELDR as XSTRING
st_sfc_fp34
"SFC of a selection with
"FISCPER3/FISCYEAR
s_fieldname_fp7
"Name of Field for 0FISCPER
"(if requested)
This is the old routine, but ST_HIENDODE and ST_HIENODENAME can
be neglected, since they are not used at all.
perform prepare_selections
using lt_sfc
lt_sfk
lt_range
lt_rangetab
lt_hier
changing st_sfc
st_sfk
st_range
st_hienode
st_hienodename
st_seltype.
endif.
assign sr_data->* to <lt_data>.
assign sr_data_p->* to <lt_data_p>.
describe table <lt_data_p> lines l_nr.
while l_nr < l_packagesize and s_end_of_data is initial.
if s_dest_back is initial and s_bw_local = rs_c_true.
Local call
call function l_UCR_DATA_READ_3
EXPORTING
IT_SELTYPE = sT_SELTYPE
IT_HIENODE = sT_HIENODE "not used
IT_HIENODENAME = sT_HIENODENAME "not used
IT_RANGE = sT_RANGE
I_PACKAGESIZE = i_packagesize
I_KEYDATE = i_Keydate
IT_SFC = sT_SFC
IT_SFK = sT_SFK
i_infoprov = i_infoprov
i_rfcdest = s_destination
ix_seldr = sx_seldr_fp34
it_bw_sfc = st_sfc_fp34
it_bw_sfk = i_th_sfk
i_fieldname_fp7 = s_fieldname_fp7
IMPORTING
ET_DATA = <lT_DATA>
E_END_OF_DATA = s_END_OF_DATA
ET_MESSAGE = lT_MESSAGE
et_adj_hier = lt_adj_hier "nos290704
CHANGING
c_first_call = s_first_call.
elseif s_dest_back is initial and s_bw_local = rs_c_false.
!!! Error !!! No SEM-BCS destination registered for infoprovider!
if 1 = 2.
message e151(rssem) with i_infoprov.
endif.
ls_message-msgty = 'E'.
ls_message-msgid = 'RSSEM'.
ls_message-msgno = '151'.
ls_message-msgv1 = i_infoprov.
insert ls_message into table e_t_msg.
else.
remote call to SEM-BCS
** Call UCR_DATA_READ_3 ...
if s_first_call is not initial.
get the datadescription to create the requested return-structure
in the RFC-System.
perform get_datadescr
using <lt_data>
changing st_datadescr
endif.
call function 'UCR_DATA_READ_4'
destination s_dest_back
exporting i_infoprov = i_infoprov
i_rfcdest = s_destination
i_first_call = s_first_call
i_packagesize = i_packagesize
i_keydate = i_keydate
ix_seldr = sx_seldr_fp34
it_bw_sfc = st_sfc_fp34
it_bw_sfk = i_th_sfk
it_datadescr = st_datadescr
i_fieldname_fp7 = s_fieldname_fp7
importing c_first_call = s_first_call
e_end_of_data = s_end_of_data
e_xstring = l_xstring
tables it_seltype = st_seltype
it_range = st_range
it_hienode = st_hienode "not used
it_hienodename = st_hienodename "not used
it_sfc = st_sfc
it_sfk = st_sfk
et_message = lt_message
et_adj_hier = lt_adj_hier. "nos290704.
clear <lt_data>.
if lt_message is initial.
call function 'RSSEM_UCR_DATA_UNWRAP'
EXPORTING
i_xstring = l_xstring
CHANGING
ct_data = <lt_data>.
endif.
endif.
convert the returned data (SID & Hierarchy).
call method so_convert->convert_nosid2sid
exporting it_adj_hier = lt_adj_hier[] "nos290704
CHANGING
ct_data = <lt_data>.
e_t_data = <lt_data>.
Begin "nos100804
data l_collect type sy-subrc.
l_collect = 1.
if <lt_data_p> is initial and
<lt_data> is not initial.
call function 'ABL_TABLE_HASH_STATE'
exporting
itab = <lt_data>
IMPORTING
HASH_RC = l_collect "returns 0 if hash key exist.
endif.
if l_collect is initial.
<lt_data_p> = <lt_data>.
else.
loop at <lt_data> assigning <ls_data>.
collect <ls_data> into <lt_data_p>.
endloop.
endif.
append lines of <lt_data> to <lt_data_p>.
End "nos100804
messages
loop at lt_message assigning <ls_message>.
move-corresponding <ls_message> to ls_message.
insert ls_message into table e_t_msg.
endloop.
if e_t_msg is not initial.
raise error_in_bcs.
endif.
describe table <lt_data_p> lines l_nr.
endwhile.
if l_nr <= l_packagesize.
e_t_data = <lt_data_p>.
clear <lt_data_p>.
e_end_of_data = s_end_of_data.
else.
Begin "nos100804
<lt_data> = <lt_data_p>.
append lines of <lt_data> to l_packagesize to e_t_data.
data l_from type i.
l_from = l_packagesize + 1.
clear <lt_data_p>.
insert lines of <lt_data> from l_from into table <lt_data_p>.
clear <lt_data>.
End "nos100804
endif.
UT begin: start to record data
if s_record_mode = rs_c_true.
if i_first_call = rs_c_true.
clear: s_guid, s_packageno.
perform prepare_unit_test_rec_param
using
e_end_of_data
i_infoprov
i_keydate
i_th_sfc
i_th_sfk
i_tsx_seldr
i_packagesize
lt_key
e_t_data
s_qry_memo
changing
s_guid.
endif.
add 1 to s_packageno.
perform prepare_unit_test_rec_data
using
s_guid
s_packageno
e_t_data
i_infoprov
e_end_of_data.
endif. "s_record_mode = rs_c_true
UT end.
if not e_end_of_data is initial.
clean-up
clear: s_first_call, s_destination, s_report, s_bw_local,
st_sfc, st_sfk, st_range, st_hienode, s_basiccube,
st_hienodename, st_seltype, s_dest_back, sr_data,
so_convert , s_end_of_data, sr_data_p."nos100804
free: <lt_data> , <lt_data_p>.
endif.
endfunction.
It stores query parameters into cluster table
form prepare_unit_test_rec_param using i_end_of_data type rs_bool
i_infoprov type rsinfoprov
i_keydate type rrsrdate
i_th_sfc type RSDD_TH_SFC
i_th_sfk type RSDD_TH_SFk
i_tsx_seldr type rsdd_tsx_seldr
i_packagesize type i
it_key type standard table
it_retdata type standard table
i_s_memo type char256
changing c_guid type guid_22.
data:
ls_key type g_rssem_typ_key,
ls_cluster type rssem_rfcpack,
l_timestamp type timestampl.
get GUID, ret component type
call function 'GUID_CREATE'
importing
ev_guid_22 = c_guid.
ls_key-idxrid = c_guid.
clear ls_key-packno.
cluster record
get time stamp field l_timestamp.
ls_cluster-infoprov = i_infoprov.
ls_cluster-end_of_data = i_end_of_data.
ls_cluster-system_time = l_timestamp.
ls_cluster-username = sy-uname.
return data type
data:
lo_tabtype type ref to cl_abap_tabledescr,
lo_linetype type ref to cl_abap_structdescr,
lt_datadescr type t_datadescr,
ls_datadescr like line of lt_datadescr,
lt_retcomptab type abap_compdescr_tab,
ls_retcomptab like line of lt_retcomptab,
lt_rangetab type t_seqnr_range.
lo_tabtype ?= cl_abap_typedescr=>describe_by_data( it_retdata ).
lo_linetype ?= lo_tabtype->get_table_line_type( ).
lt_retcomptab = lo_linetype->components.
call the sub procedure to use external format of C, instead of interal format (unicode).
otherwise, when create data type from internal format, it won't be the same length as stored in cluster.
PERFORM get_datadescr USING it_retdata
CHANGING lt_datadescr.
loop at lt_datadescr into ls_datadescr.
move-corresponding ls_datadescr to ls_retcomptab.
append ls_retcomptab to lt_retcomptab.
endloop.
range, excluding
record param
export p_infoprov from i_infoprov
p_keydate from i_keydate
p_th_sfc from i_th_sfc
p_th_sfk from i_th_sfk
p_txs_seldr from i_tsx_seldr
p_packagesize from i_packagesize
p_t_retcomptab from lt_retcomptab
p_t_key from it_key
p_memo from i_s_memo
to database rssem_rfcpack(ut)
from ls_cluster
client sy-mandt
id ls_key.
endform.
It stores return data to cluster table
form prepare_unit_test_rec_data using
i_guid type guid_22
i_packageno type i
it_retdata type standard table
i_infoprov type rsinfoprov
i_end_of_data type rs_bool.
data:
l_lines type i,
ls_key type g_rssem_typ_key,
ls_cluster type rssem_rfcpack,
l_timestamp type timestampl.
ls_key-idxrid = i_guid.
ls_key-packno = i_packageno.
describe table it_retdata lines l_lines.
if l_lines = 0.
clear it_retdata.
endif.
cluster record
get time stamp field l_timestamp.
ls_cluster-infoprov = i_infoprov.
ls_cluster-end_of_data = i_end_of_data.
ls_cluster-system_time = l_timestamp.
ls_cluster-username = sy-uname.
export p_t_retdata from it_retdata
to database rssem_rfcpack(ut)
from ls_cluster
client sy-mandt
id ls_key.
endform.
form convert_importing_parameter
using i_th_sfc TYPE RSDD_TH_SFC
i_th_sfk TYPE RSDD_TH_SFK
i_tsx_seldr TYPE RSDD_TSX_SELDR
io_convert type ref to lcl_sid_no_sid
i_t_data type any table
changing et_sfc TYPE RSDRI_TH_SFC
et_sfk TYPE RSDRI_TH_SFK
et_range TYPE RSDRI_T_RANGE
et_rangetab TYPE RSDRI_TX_RANGETAB
et_hier TYPE RSDRI_TSX_HIER
ex_seldr type xstring
e_th_sfc TYPE RSDD_TH_SFC
e_fieldname_fp7 type rsalias
data lt_seldr TYPE RSDD_TSX_SELDR.
data ls_th_sfc type RRSFC01.
0) rename 0BCSREQUID > 0REQUID
data l_tsx_seldr like i_tsx_seldr.
data l_th_sfc like i_th_sfc.
data l_th_sfc2 like i_th_sfc. "nos070605
l_tsx_seldr = i_tsx_seldr.
l_th_sfc = i_th_sfc.
data ls_sfc_requid type RRSFC01.
data ls_seldr_requid type RSDD_SX_SELDR.
ls_sfc_requid-chanm = '0BCS_REQUID'.
read table l_th_sfc from ls_sfc_requid into ls_sfc_requid.
if sy-subrc = 0.
delete table l_th_sfc from ls_sfc_requid.
ls_sfc_requid-chanm = '0REQUID'.
insert ls_sfc_requid into table l_th_sfc.
endif.
ls_seldr_requid-chanm = '0BCS_REQUID'.
read table l_tsx_seldr from ls_seldr_requid into ls_seldr_requid.
if sy-subrc = 0.
delete table l_tsx_seldr from ls_seldr_requid.
ls_seldr_requid-chanm = '0REQUID'.
field-symbols: <ls_range> like line of ls_seldr_requid-range-range.
loop at ls_seldr_requid-range-range assigning <ls_range>.
check <ls_range>-keyfl is not initial. "jhn190106
if <ls_range>-sidlow is initial and <ls_range>-low is not initial.
<ls_range>-sidlow = <ls_range>-low.
clear <ls_range>-low.
endif.
if <ls_range>-sidhigh is initial and <ls_range>-high is not initial.
<ls_range>-sidhigh = <ls_range>-high.
clear <ls_range>-high.
endif.
clear <ls_range>-keyfl. "jhn190106
endloop.
insert ls_seldr_requid into table l_tsx_seldr.
endif.
*1) Convert SIDs..., so that all parameter look like the old ones.
call method io_convert->convert_sid2nosid
EXPORTING
it_sfc = l_th_sfc
it_sfk = i_th_sfk
it_seldr = l_tsx_seldr
it_data = i_t_data
IMPORTING
et_sfc = et_sfc
et_sfk = et_sfk
et_range = et_range
et_rangetab = et_rangetab
e_th_sfc = l_th_sfc2 "nos070605
Ignore the old hierachy information:
clear et_hier.
delete et_range where chanm = '0REQUID'.
delete table et_sfc with table key chanm = '0REQUID'.
*2) Eliminate FISCPER7, from new strucutres:
lt_seldr = i_tsx_seldr. "nos131004
e_th_sfc = l_th_sfc.
the fiscper7 can be deleted completly from the SID-selection, because
it is also treated within et_range...
clear e_fieldname_fp7.
delete lt_seldr where chanm = cs_iobj_time-fiscper7."nos131004
Begin "nos131004
Ensure that there is no gap in the seldr.
data:
ls_seldr like line of lt_seldr
,l_fems_act like ls_seldr-fems
,l_fems_new like ls_seldr-fems
loop at l_tsx_seldr into ls_seldr
where chanm ne cs_iobj_time-fiscper7.
if ls_seldr-fems ne l_fems_act.
l_fems_act = ls_seldr-fems.
add 1 to l_fems_new.
endif.
ls_seldr-fems = l_fems_new.
insert ls_seldr into table lt_seldr.
endloop.
end "nos131004
e_th_sfc = l_th_sfc2. "nos070605
Is fiscper7 in the query? (BCS requires allways two fields)
read table e_th_sfc with key chanm = cs_iobj_time-fiscper7
into ls_th_sfc.
if sy-subrc = 0.
==> YES
--> change the SFC, so that FISCPER3 and FISCYEAR is requested.
The table ET_RANGE does contain also the selection for
FISCPER3/FISCYEAR
But since also E_FIELDNAME_FP7 is transferred to BCS, the
transformation of the data, back to FISCPER7 is done on BCS-side.
e_fieldname_fp7 = ls_th_sfc-KEYRETURNNM.
"begin nos17060
if e_fieldname_fp7 is initial.
e_fieldname_fp7 = ls_th_sfc-sidRETURNNM.
translate e_fieldname_fp7 using 'SK'.
endif.
"end nos17060
delete table e_th_sfc from ls_th_sfc.
ls_th_sfc-chanm = cs_iobj_time-fiscper3.
ls_th_sfc-keyreturnnm = ls_th_sfc-chanm.
insert ls_th_sfc into table e_th_sfc.
ls_th_sfc-chanm = cs_iobj_time-fiscyear.
ls_th_sfc-keyreturnnm = ls_th_sfc-chanm.
insert ls_th_sfc into table e_th_sfc.
endif.
Store the SELDR in a XSTRING and unpack it just before selecting data
in BW. It is not interpreted in BCS!
export t_seldr = lt_seldr
Store also the SFC, because the BW-Systems migth be differrnt rel./SP.
t_bw_sfc = e_th_sfc to data buffer ex_seldr compression on.
endform. "convert_importing_parameter
*& Form get_datadescr
text
-->IT_DATA text
-->ET_DATADESCtext
form get_datadescr
using it_data type any table
changing et_datadescr type t_datadescr
data: lr_data type ref to data
, lo_descr TYPE REF TO CL_ABAP_TYPEDESCR
, lo_elemdescr TYPE REF TO CL_ABAP_elemDESCR
, lo_structdescr TYPE REF TO CL_ABAP_structDESCR
, lt_components type abap_component_tab
, ls_components type abap_componentdescr
, ls_datadescr type s_datadescr
field-symbols: <ls_data> type any
, <ls_components> type abap_compdescr
clear et_datadescr.
create data lr_data like line of it_data.
assign lr_data->* to <ls_data>.
CALL METHOD CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA
EXPORTING
P_DATA = <ls_data>
RECEIVING
P_DESCR_REF = lo_descr.
lo_structdescr ?= lo_descr.
CALL METHOD lo_structdescr->GET_COMPONENTS
RECEIVING
P_RESULT = lt_components.
loop at lo_structdescr->components assigning <ls_components>.
move-corresponding <ls_components> to ls_datadescr.
if ls_datadescr-type_kind = cl_abap_elemdescr=>typekind_char
or ls_datadescr-type_kind = cl_abap_elemdescr=>typekind_num
read table lt_components with key name = <ls_components>-name
into ls_components.
if sy-subrc = 0.
lo_elemdescr ?= ls_components-type.
ls_datadescr-length = lo_elemdescr->output_length.
endif.
endif.
append ls_datadescr to et_datadescr.
endloop.
endform. "get_datadescr
Try to give your inputs will appreciate that
thanks -
Questions on cache and general RSRT settings for plancube
Hi,
we would like to:
1) set request status 1 in RSRT for our planqueries, in order to automatically refresh the query after executing a planfunction (problem we have now is that the results of a planfunction are not automatically updated in the query. Only when doing something else like executing other function, saving, check locks, ... the results are visible).
2) activate delta cache for our planqueries
we have read OSS note 1136163 on RSRT settings. It says:
Aggregation level "A" is implemented internally by the automatically created query "P/!!1P" (plan buffer query). This query acts like an InfoProvider. It reads the data of the database or provides the data from InfoProvider "P", it adds the data of the delta buffer "Dp" (or the delta buffer Dpi if P is a MultiProvider with several PartProviders Pi that can be planned) and transfers the data manager as data of the InfoProvider "A" of type "ALVL". The query "P/!!1P" can use aggregates and the cache; this is exactly like each normal query in "P". If "P" is a MultiProvider, it is useful to set PARTITIONMODE to "1".
For the query "P/!!1P" that is created automatically for an aggregation level or for all aggregation levels using the InfoProvider P, we recommend the following setting:
Read mode "H", request status "1", cache mode "1" or higher, delta cache "true" and SP grouping "1".
Furthermore, the selection to use the structure element (KIDSEL) should be "true".
The input-ready queries in "A" should not, and cannot, use a cache. The request status is irrelevant since queries in "A" are automatically set to current data. The delta buffer does not currently support hierarchy processing. Therefore, aggregation level "A" cannot completely support read mode "H". For input-ready queries at A:
Read mode "X", request status "0", cache mode "0".
The delta cache and SP grouping are not visible
Problems we have:
1) for query P/!!1P (PCA_AGQF/!!1PCA_AGQF in our example) does not allow changing the request status (greyed out). It now has value 0 instead of 1. It also does not allow to activate the delta cache flag. How to change this? In RSDIPROP we have set partitionmode to 1 for the multiprovider and activated the delta cache flag...
2) can we use the cache / delta cache principle for our planqueries? If so, how to ensure these settings remain activated in RSRT?
regards
Dries
regards
driesHi,
To change the cache settings for your cube.
Open the cube in RSA1 and click in 'Chance'.
- click in the 'Environment' menu;
- expand 'InfoProvider Properties'
- select the option 'Change'.
You will be able to set the cache mode for this provider.
I don't think it will be possible use cache for a multiprovider, it is
not possible.
Regards,
Amit -
Link to Web Analyzer from rsrt or query designer does not work.
If I start with the transaction RSRT a query in the Java Web would get the following error message:
Java Runtime Error
But if I had started earlier browser, the portal there is no problem. Is this a SSO problem?
The same problem I have when I would run in the Bex Query Designer the query.
Greetings
KerimHi,
Do you have all the parameters correct in SPRO? Take a look at this, under the BW Customizing -> REporting relevant settings or BW Customizing -> SAP Web Application Server.
I dont remember the right place where you have to configure this, but it should be there.
The error is just "Java Runtime Error"? Try to talk with your Basis team, maybe there is a log to help you.
Regards, Federico -
Error while executing query in query designer and RSRT.
Hello All,
At none of the places (BI--> RSRT or via query designer GUI) my query is executing properly .
At RSRT the error message ---
At Bex Query designer the error msg--
Checked the data at the sales-infocube level , the data is absolutely ok.
Regards
DeblinaHi,
Have checked both the places, backend cube as well as the filter conditions of the query ,everything is in sync.
to make the query more simple i have removed the charateristics restrictions then ran the query , but still getting the same error.
Am just attaching the screenshot of the query layout, for your reference.
Regarding connectivity to access the portal, how it can be established.
Many Thanks
Regards
Deblina. -
Error while executing the query in RSRT
Hi to all,
I am executing the query in client development system in RSRT.
Error coming (Query could not open Genun id is invalid)
I shall be thankfull to you for this.
Regards
Pavneet RanaHi,
Plz check ur report and execute at the designer and take its technical name and go to RSRT. log out and log in and try..
if not check ur authorisation.
Regards....KP
Maybe you are looking for
-
If my husband add a new iCloud account to his iPhone 5, will he be "locked out" because he's using a new Apple ID to do it? Does he have to use a new Apple ID to create a new iCloud account? He set up his phone using my Apple ID because we didn't kno
-
I am a TB newbie, and did something unintentional: while trying to add one folder to the subscription list, I touched some key --- and there they all go. Cannot tell what happened. The panel subscribe still shows checks for the 40 or so I wanted to d
-
CS4 Flash. First attempt to save a file creates an unknown error.
I bought CS4 when I bought my first Mac. I started building an inventory of production software but had only used Photoshop and Adobe. I tried to do my first Flash project today and following a tutorial, I tried to save the initial file and it erro
-
Itunes freezes playing back movie
This is the first time I have used itunes I purchased the kids movie Ratatouille this morning. It downloaded just fine. When I tried to play it this evening, after 22 seonds, itunes just completely freezes up. I also tried to play it using quicktime
-
How to replace hard drive on 700Mhz iBook?
I have an iBook 700Mhz G3 (16 VRAM, I think), and am ready to replace its hard drive with a larger Seagate. I was hoping this would be easy, but I have a funny feeling it is not. Does anyone have a step by step set of instructions to replace the driv