'Search' slow for common entries
Good morning! I'm using RoboHelp HTML 8.0.2.208, and generating a FlashHelp online user manual. I have several words/phrases in the manual that are very common, and if/when these items are entered into the 'Search' bar it seems to bog down the system - the system shows a glowing "searching" indicator, but I've waited several minutes without any results before having to close the search window. Is there a way to optimize this function without excluding many of the topics from search?
Hi,
I have the same exact problem, with one little twist. I have 76 topics in all, 38 in English and 38 in French. I generate Flash Help based on a conditional build with a specific TOC and index. The Search works fine in English, but the issue you are describing (glowing ''searching'' indicator for several minutes, no results) comes up in French, even though both versions are defined the same way. I've looked all around and can't seem to find a solution. Can anyone help with this? Thanks!
Similar Messages
-
Search help for custom entries in selection screen
Hi Gurus,
I have a requirement of adding four entries as a search help to a selection screen field P_TABLE.I tried using the function module F4IF_INT_ TABLE_VALUE_REQUEST as below.I want to add four entries Revenue,Cost,RIH and Summarised WBS Actual Data for the selection screen field P_TABLE but the problem is the function module is not getting triggered.
See the code below.
REPORT Z_DEL_OHTABLE.
DATA: V_RESPONSES(6),
V_TEXTS LIKE ALDBOUT,
V_PROG TYPE SY-REPID,
V_DYNNR TYPE SY-DYNNR.
DATA: begin of it_openhubs occurs 0,
v_tabname type c length 30,
end of it_openhubs.
DATA:
it_return type STANDARD TABLE OF DDSHRETVAL,
wa_return like line of it_return,
l_i_field_tab TYPE STANDARD TABLE OF dfies INITIAL SIZE 0,
l_i_dynpfld_mapping TYPE STANDARD TABLE OF dselc INITIAL SIZE 0.
SELECTION-SCREEN BEGIN OF BLOCK B0 WITH FRAME TITLE title.
parameters:P_TABLE(30) type c. " USER-COMMAND UPD,
SELECTION-SCREEN END OF BLOCK B0.
V_PROG = SY-REPID.
V_DYNNR = SY-DYNNR.
it_openhubs-v_tabname = 'Cost and Expense'.
append it_openhubs.
it_openhubs-v_tabname = 'Revenue'.
append it_openhubs.
it_openhubs-v_tabname = 'Revenue in Hand'.
append it_openhubs.
it_openhubs-v_tabname = 'Summarised WBS Actual Data'.
append it_openhubs.
CLEAR IT_OPENHUBS.
INITIALIZATION.
title = 'OH TABLE DELETION- DELETE CAREFULLY'.
START-OF-SELECTION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_TABLE.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
RETFIELD = 'v_tabname'
PVALKEY = ' '
DYNPPROG = V_PROG
DYNPNR = V_DYNNR
DYNPROFIELD = 'P_TABLE'
STEPL = 0
WINDOW_TITLE =
VALUE = ' '
VALUE_ORG = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
TABLES
VALUE_TAB = it_openhubs
FIELD_TAB = l_i_field_tab
RETURN_TAB = it_return
DYNPFLD_MAPPING = l_i_dynpfld_mapping
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
IF SY-SUBRC <> 0.
READ TABLE it_return INTO wa_return INDEX 1.
IF sy-subrc EQ 0.
p_table = wa_return-fieldval.
endif.
Please help me out.
Thanks,
Srini.
Edited by: Srinivasan Ganapathy on Jan 28, 2010 6:05 AMHi ,
Change your code as below:
1. Fill the internal table it_openhubs inside the event "at selection screen on value request".
2. Always follow the below sequence:
Initialisation
At selection screen
Start of selection.
3. The declaration of variable v_tabname is changed from type c length 30 to type char30.
I tried the below code , its working fine.
DATA: V_RESPONSES(6),
V_TEXTS LIKE ALDBOUT,
V_PROG TYPE SY-REPID,
V_DYNNR TYPE SY-DYNNR.
DATA: begin of it_openhubs occurs 0,
v_tabname type char30, " length 30,
end of it_openhubs.
DATA:
it_return type STANDARD TABLE OF DDSHRETVAL,
wa_return like line of it_return,
l_i_field_tab TYPE STANDARD TABLE OF dfies INITIAL SIZE 0,
l_i_dynpfld_mapping TYPE STANDARD TABLE OF dselc INITIAL SIZE 0.
SELECTION-SCREEN BEGIN OF BLOCK B0 WITH FRAME TITLE title.
parameters:P_TABLE(30) type c. " USER-COMMAND UPD,
SELECTION-SCREEN END OF BLOCK B0.
INITIALIZATION.
title = 'OH TABLE DELETION- DELETE CAREFULLY'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_TABLE.
V_PROG = SY-REPID.
V_DYNNR = SY-DYNNR.
clear IT_OPENHUBS.
it_openhubs-v_tabname = 'Cost and Expense'.
append it_openhubs.
it_openhubs-v_tabname = 'Revenue'.
append it_openhubs.
it_openhubs-v_tabname = 'Revenue in Hand'.
append it_openhubs.
it_openhubs-v_tabname = 'Summarised WBS Actual Data'.
append it_openhubs.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'v_tabname'
dynpprog = v_prog
dynpnr = v_dynnr
dynprofield = 'P_TABLE'
value_org = 'S'
TABLES
value_tab = it_openhubs
return_tab = it_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
READ TABLE it_return INTO wa_return INDEX 1.
IF sy-subrc EQ 0.
p_table = wa_return-fieldval.
ENDIF.
ENDIF -
I need to able to search for calendar entries that are over one year old.
I am an old Palm OS user and have used the calendar on it to track my clients visits/service for the last 15 years. By searching the customers name on the palm, it would bring up every entry I had keyed in for them, so I could immediately know how old their equipment was, what service had been done, etc. I also used the calendar to track my daily and weekly sales. I was disappointed to find that the ipad does not search for any entries older than one year. Is there something that can fix this or is there an app that could be used in the way the palm was? Thanks
Well, that would depend on what calendar you are using.
If you are simply relying on the calendar on the device, well, that's not very smart. Restoring from backup should put everything back.
If the calendar is synced with another service, like Google, iCloud, Exchange, do the entires still exist there?
If the calendar is synced with Outlook or iCal on your computer, do the entries still exist there? -
For all entries from 2 tables that have no common key
Hello
I have the next querry that i want to write in abap
AUFK -
>aufk-aufnr = afko- aufnr----> AFKO
AUFK---->aufk-pspel = afvc-projn -
>AFVC
AFKO-----> afko-rsnum = resb-rsnum -
> RESB
AFVC-----> afvc-aufpl = resb-aufpl -
> RESB
AFVC-----> afvc-vornr = resb-vornr -
> RESB
So that i have to start with AUFK and from there i read AFKO and AFVC and with the entries from AFKO and AFVC i have to do a select on RESB.
How can i do this
select from RESB
for all entries in AFKO
where ...
for all entries in AFVC
where... ?
I do not have any common key between AFVC and AFKO. How can i select the correct entries from RESB?
I have to mention that i have 1-1 entries for AUFK and AFKO
and 1-N entries for AUFK and AFVC
Thank youWhy don't you use afko-aufpl = afvc-aufpl ?
Regards,
Raymond -
Error: Common entries are not permitted for plan queries and input queries
Hi,
I have a 2 selections in the column struct:
1. year = 2005, version = actual
2. year = 2006, version = plan, marked as data can be changed using user entry or planning function
row has posting periods from 1-12
in the workbook I have inserted this query in the workbook in analysis grid. it runs good.
now i added a button and assigned planning function to it. this planning function copies 2005, actuals to 2006, plan.
when i execute the workbook and hit this button, it gives me following error:
"Common entries are not permitted for plan queries and input queries"
please can anyone provide me assistance with this issue.
thanks,
samwhen i go to diagnosis it displays following:
Diagnosis
InfoProvider ZIP_PLAN2 must be described in this application by both a plan query and by a input-ready query, which is directly defined on the InfoProvider ZIP_PLAN2.
System Response
This is not permitted. -
I am using Firefox 5.0.1.4205 with Windows 7 Home Premium Service pack1. My new tabs in Firefox open with a search engine for imvu rather than google as I would prefer. I can't find an answer to my problem so far because when I try the recommended use of about:config and finding browser.newtab.url; it is not listed. Is this version of firefox to old to have that, or is it just missing? What can I do to get my new tabs to open with a Google search engine. This is on my 80 year old father's computer so he is not likely to upgrade browsers as I would on my home computer. Thank you for any help with this.
The new tab page (about:newtab) wasn't introduced until a later version of Firefox (iirc, ''Firefox 10'') , which is why that pref can't be found.
Sounds like your father picked up some Malware.
Maybe this is what you're dealing with.
http://www.shouldiremoveit.com/IMVU-Inc-Toolbar-34367-program.aspx
Also, I see a number of Plugins listed to bee concerned about.
Toolbar Plugin
MindSpark Toolbar Platform Plugin Stub for 32-bit Windows
WildTangent Games App V2 Presence Detector -
Doubt regarding FOR ALL ENTRIES and INDEXES
Hi iam Aslam ..
and i have a doubt ..regrding .. .
1) what are the disadvs of using FOR ALL ENTRIES
2) what are the disadvs of using INDEXES
3) what is the disadvs of using Binary search ..
4) . how can u do performance tuning ...if u have more than one SELECT statements between ... Loop and Endloop .......
please answer to these questions or reply me to [email protected] ..
thanks in advance ..
byeHI
<b>1) what are the disadvs of using FOR ALL ENTRIES</b>
if there is no data available for you condition mentioned in the where condition then it will retrive all the data from the database table , which we don't want , but we can solve that easily
Ways of Performance Tuning
1. Selection Criteria
2. Select Statements
Select Queries
SQL Interface
Aggregate Functions
For all Entries
Select Over more than one Internal table
Selection Criteria
1. Restrict the data to the selection criteria itself, rather than filtering it out using the ABAP code using CHECK statement.
2. Select with selection list.
Points # 1/2
SELECT * FROM SBOOK INTO SBOOK_WA.
CHECK: SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
ENDSELECT.
The above code can be much more optimized by the code written below which avoids CHECK, selects with selection list
SELECT CARRID CONNID FLDATE BOOKID FROM SBOOK INTO TABLE T_SBOOK
WHERE SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
Select Statements Select Queries
1. Avoid nested selects
2. Select all the records in a single shot using into table clause of select statement rather than to use Append statements.
3. When a base table has multiple indices, the where clause should be in the order of the index, either a primary or a secondary index.
4. For testing existence , use Select.. Up to 1 rows statement instead of a Select-Endselect-loop with an Exit.
5. Use Select Single if all primary key fields are supplied in the Where condition .
Point # 1
SELECT * FROM EKKO INTO EKKO_WA.
SELECT * FROM EKAN INTO EKAN_WA
WHERE EBELN = EKKO_WA-EBELN.
ENDSELECT.
ENDSELECT.
The above code can be much more optimized by the code written below.
SELECT PF1 PF2 FF3 FF4 INTO TABLE ITAB
FROM EKKO AS P INNER JOIN EKAN AS F
ON PEBELN = FEBELN.
Note: A simple SELECT loop is a single database access whose result is passed to the ABAP program line by line. Nested SELECT loops mean that the number of accesses in the inner loop is multiplied by the number of accesses in the outer loop. One should therefore use nested SELECT loops only if the selection in the outer loop contains very few lines or the outer loop is a SELECT SINGLE statement.
Point # 2
SELECT * FROM SBOOK INTO SBOOK_WA.
CHECK: SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
ENDSELECT.
The above code can be much more optimized by the code written below which avoids CHECK, selects with selection list and puts the data in one shot using into table
SELECT CARRID CONNID FLDATE BOOKID FROM SBOOK INTO TABLE T_SBOOK
WHERE SBOOK_WA-CARRID = 'LH' AND
SBOOK_WA-CONNID = '0400'.
Point # 3
To choose an index, the optimizer checks the field names specified in the where clause and then uses an index that has the same order of the fields . In certain scenarios, it is advisable to check whether a new index can speed up the performance of a program. This will come handy in programs that access data from the finance tables.
Point # 4
SELECT * FROM SBOOK INTO SBOOK_WA
UP TO 1 ROWS
WHERE CARRID = 'LH'.
ENDSELECT.
The above code is more optimized as compared to the code mentioned below for testing existence of a record.
SELECT * FROM SBOOK INTO SBOOK_WA
WHERE CARRID = 'LH'.
EXIT.
ENDSELECT.
Point # 5
If all primary key fields are supplied in the Where condition you can even use Select Single.
Select Single requires one communication with the database system, whereas Select-Endselect needs two.
Select Statements contd.. SQL Interface
1. Use column updates instead of single-row updates
to update your database tables.
2. For all frequently used Select statements, try to use an index.
3. Using buffered tables improves the performance considerably.
Point # 1
SELECT * FROM SFLIGHT INTO SFLIGHT_WA.
SFLIGHT_WA-SEATSOCC =
SFLIGHT_WA-SEATSOCC - 1.
UPDATE SFLIGHT FROM SFLIGHT_WA.
ENDSELECT.
The above mentioned code can be more optimized by using the following code
UPDATE SFLIGHT
SET SEATSOCC = SEATSOCC - 1.
Point # 2
SELECT * FROM SBOOK CLIENT SPECIFIED INTO SBOOK_WA
WHERE CARRID = 'LH'
AND CONNID = '0400'.
ENDSELECT.
The above mentioned code can be more optimized by using the following code
SELECT * FROM SBOOK CLIENT SPECIFIED INTO SBOOK_WA
WHERE MANDT IN ( SELECT MANDT FROM T000 )
AND CARRID = 'LH'
AND CONNID = '0400'.
ENDSELECT.
Point # 3
Bypassing the buffer increases the network considerably
SELECT SINGLE * FROM T100 INTO T100_WA
BYPASSING BUFFER
WHERE SPRSL = 'D'
AND ARBGB = '00'
AND MSGNR = '999'.
The above mentioned code can be more optimized by using the following code
SELECT SINGLE * FROM T100 INTO T100_WA
WHERE SPRSL = 'D'
AND ARBGB = '00'
AND MSGNR = '999'.
Select Statements contd Aggregate Functions
If you want to find the maximum, minimum, sum and average value or the count of a database column, use a select list with aggregate functions instead of computing the aggregates yourself.
Some of the Aggregate functions allowed in SAP are MAX, MIN, AVG, SUM, COUNT, COUNT( * )
Consider the following extract.
Maxno = 0.
Select * from zflight where airln = LF and cntry = IN.
Check zflight-fligh > maxno.
Maxno = zflight-fligh.
Endselect.
The above mentioned code can be much more optimized by using the following code.
Select max( fligh ) from zflight into maxno where airln = LF and cntry = IN.
Select Statements contd For All Entries
The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of entries in the driver table is larger than rsdb/max_blocking_factor, several similar SQL statements are executed to limit the length of the WHERE clause.
The plus
Large amount of data
Mixing processing and reading of data
Fast internal reprocessing of data
Fast
The Minus
Difficult to program/understand
Memory could be critical (use FREE or PACKAGE size)
Points to be must considered FOR ALL ENTRIES
Check that data is present in the driver table
Sorting the driver table
Removing duplicates from the driver table
Consider the following piece of extract
Loop at int_cntry.
Select single * from zfligh into int_fligh
where cntry = int_cntry-cntry.
Append int_fligh.
Endloop.
The above mentioned can be more optimized by using the following code.
Sort int_cntry by cntry.
Delete adjacent duplicates from int_cntry.
If NOT int_cntry[] is INITIAL.
Select * from zfligh appending table int_fligh
For all entries in int_cntry
Where cntry = int_cntry-cntry.
Endif.
Select Statements contd Select Over more than one Internal table
1. Its better to use a views instead of nested Select statements.
2. To read data from several logically connected tables use a join instead of nested Select statements. Joins are preferred only if all the primary key are available in WHERE clause for the tables that are joined. If the primary keys are not provided in join the Joining of tables itself takes time.
3. Instead of using nested Select loops it is often better to use subqueries.
Point # 1
SELECT * FROM DD01L INTO DD01L_WA
WHERE DOMNAME LIKE 'CHAR%'
AND AS4LOCAL = 'A'.
SELECT SINGLE * FROM DD01T INTO DD01T_WA
WHERE DOMNAME = DD01L_WA-DOMNAME
AND AS4LOCAL = 'A'
AND AS4VERS = DD01L_WA-AS4VERS
AND DDLANGUAGE = SY-LANGU.
ENDSELECT.
The above code can be more optimized by extracting all the data from view DD01V_WA
SELECT * FROM DD01V INTO DD01V_WA
WHERE DOMNAME LIKE 'CHAR%'
AND DDLANGUAGE = SY-LANGU.
ENDSELECT
Point # 2
SELECT * FROM EKKO INTO EKKO_WA.
SELECT * FROM EKAN INTO EKAN_WA
WHERE EBELN = EKKO_WA-EBELN.
ENDSELECT.
ENDSELECT.
The above code can be much more optimized by the code written below.
SELECT PF1 PF2 FF3 FF4 INTO TABLE ITAB
FROM EKKO AS P INNER JOIN EKAN AS F
ON PEBELN = FEBELN.
Point # 3
SELECT * FROM SPFLI
INTO TABLE T_SPFLI
WHERE CITYFROM = 'FRANKFURT'
AND CITYTO = 'NEW YORK'.
SELECT * FROM SFLIGHT AS F
INTO SFLIGHT_WA
FOR ALL ENTRIES IN T_SPFLI
WHERE SEATSOCC < F~SEATSMAX
AND CARRID = T_SPFLI-CARRID
AND CONNID = T_SPFLI-CONNID
AND FLDATE BETWEEN '19990101' AND '19990331'.
ENDSELECT.
The above mentioned code can be even more optimized by using subqueries instead of for all entries.
SELECT * FROM SFLIGHT AS F INTO SFLIGHT_WA
WHERE SEATSOCC < F~SEATSMAX
AND EXISTS ( SELECT * FROM SPFLI
WHERE CARRID = F~CARRID
AND CONNID = F~CONNID
AND CITYFROM = 'FRANKFURT'
AND CITYTO = 'NEW YORK' )
AND FLDATE BETWEEN '19990101' AND '19990331'.
ENDSELECT.
1. Table operations should be done using explicit work areas rather than via header lines.
2. Always try to use binary search instead of linear search. But dont forget to sort your internal table before that.
3. A dynamic key access is slower than a static one, since the key specification must be evaluated at runtime.
4. A binary search using secondary index takes considerably less time.
5. LOOP ... WHERE is faster than LOOP/CHECK because LOOP ... WHERE evaluates the specified condition internally.
6. Modifying selected components using MODIFY itab TRANSPORTING f1 f2.. accelerates the task of updating a line of an internal table.
Point # 2
READ TABLE ITAB INTO WA WITH KEY K = 'X BINARY SEARCH.
IS MUCH FASTER THAN USING
READ TABLE ITAB INTO WA WITH KEY K = 'X'.
If TAB has n entries, linear search runs in O( n ) time, whereas binary search takes only O( log2( n ) ).
Point # 3
READ TABLE ITAB INTO WA WITH KEY K = 'X'. IS FASTER THAN USING
READ TABLE ITAB INTO WA WITH KEY (NAME) = 'X'.
Point # 5
LOOP AT ITAB INTO WA WHERE K = 'X'.
ENDLOOP.
The above code is much faster than using
LOOP AT ITAB INTO WA.
CHECK WA-K = 'X'.
ENDLOOP.
Point # 6
WA-DATE = SY-DATUM.
MODIFY ITAB FROM WA INDEX 1 TRANSPORTING DATE.
The above code is more optimized as compared to
WA-DATE = SY-DATUM.
MODIFY ITAB FROM WA INDEX 1.
7. Accessing the table entries directly in a "LOOP ... ASSIGNING ..." accelerates the task of updating a set of lines of an internal table considerably
8. If collect semantics is required, it is always better to use to COLLECT rather than READ BINARY and then ADD.
9. "APPEND LINES OF itab1 TO itab2" accelerates the task of appending a table to another table considerably as compared to LOOP-APPEND-ENDLOOP.
10. DELETE ADJACENT DUPLICATES accelerates the task of deleting duplicate entries considerably as compared to READ-LOOP-DELETE-ENDLOOP.
11. "DELETE itab FROM ... TO ..." accelerates the task of deleting a sequence of lines considerably as compared to DO -DELETE-ENDDO.
Point # 7
Modifying selected components only makes the program faster as compared to Modifying all lines completely.
e.g,
LOOP AT ITAB ASSIGNING <WA>.
I = SY-TABIX MOD 2.
IF I = 0.
<WA>-FLAG = 'X'.
ENDIF.
ENDLOOP.
The above code works faster as compared to
LOOP AT ITAB INTO WA.
I = SY-TABIX MOD 2.
IF I = 0.
WA-FLAG = 'X'.
MODIFY ITAB FROM WA.
ENDIF.
ENDLOOP.
Point # 8
LOOP AT ITAB1 INTO WA1.
READ TABLE ITAB2 INTO WA2 WITH KEY K = WA1-K BINARY SEARCH.
IF SY-SUBRC = 0.
ADD: WA1-VAL1 TO WA2-VAL1,
WA1-VAL2 TO WA2-VAL2.
MODIFY ITAB2 FROM WA2 INDEX SY-TABIX TRANSPORTING VAL1 VAL2.
ELSE.
INSERT WA1 INTO ITAB2 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
The above code uses BINARY SEARCH for collect semantics. READ BINARY runs in O( log2(n) ) time. The above piece of code can be more optimized by
LOOP AT ITAB1 INTO WA.
COLLECT WA INTO ITAB2.
ENDLOOP.
SORT ITAB2 BY K.
COLLECT, however, uses a hash algorithm and is therefore independent
of the number of entries (i.e. O(1)) .
Point # 9
APPEND LINES OF ITAB1 TO ITAB2.
This is more optimized as compared to
LOOP AT ITAB1 INTO WA.
APPEND WA TO ITAB2.
ENDLOOP.
Point # 10
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING K.
This is much more optimized as compared to
READ TABLE ITAB INDEX 1 INTO PREV_LINE.
LOOP AT ITAB FROM 2 INTO WA.
IF WA = PREV_LINE.
DELETE ITAB.
ELSE.
PREV_LINE = WA.
ENDIF.
ENDLOOP.
Point # 11
DELETE ITAB FROM 450 TO 550.
This is much more optimized as compared to
DO 101 TIMES.
DELETE ITAB INDEX 450.
ENDDO.
12. Copying internal tables by using ITAB2[ ] = ITAB1[ ] as compared to LOOP-APPEND-ENDLOOP.
13. Specify the sort key as restrictively as possible to run the program faster.
Point # 12
ITAB2[] = ITAB1[].
This is much more optimized as compared to
REFRESH ITAB2.
LOOP AT ITAB1 INTO WA.
APPEND WA TO ITAB2.
ENDLOOP.
Point # 13
SORT ITAB BY K. makes the program runs faster as compared to SORT ITAB.
Internal Tables contd
Hashed and Sorted tables
1. For single read access hashed tables are more optimized as compared to sorted tables.
2. For partial sequential access sorted tables are more optimized as compared to hashed tables
Hashed And Sorted Tables
Point # 1
Consider the following example where HTAB is a hashed table and STAB is a sorted table
DO 250 TIMES.
N = 4 * SY-INDEX.
READ TABLE HTAB INTO WA WITH TABLE KEY K = N.
IF SY-SUBRC = 0.
ENDIF.
ENDDO.
This runs faster for single read access as compared to the following same code for sorted table
DO 250 TIMES.
N = 4 * SY-INDEX.
READ TABLE STAB INTO WA WITH TABLE KEY K = N.
IF SY-SUBRC = 0.
ENDIF.
ENDDO.
Point # 2
Similarly for Partial Sequential access the STAB runs faster as compared to HTAB
LOOP AT STAB INTO WA WHERE K = SUBKEY.
ENDLOOP.
This runs faster as compared to
LOOP AT HTAB INTO WA WHERE K = SUBKEY.
ENDLOOP. -
Enhancing standard (single select)search help for Multiple value selection
Hi,
Standard search help for Business Partner (in cProjects) allows only single value selection for input fields. I want to make this multiple selection.
Is there a way to do it.
I used an OVS and built a similar search but its difficult to get the standard options like saving to personal value list etc in it.
It would be good if there is a way to modify the standard search help to allow multiple selection. Any ideas??
Appreciate your help,
Thanks,
Sri
Edited by: Sri on Sep 9, 2010 8:50 PM
Edited by: Sri on Sep 9, 2010 8:52 PMAs far as I know you can't make a standard ABAP dictionary search help return multiple entries - where you get this sort of functionality the searches don't use the standard Elementary search help framework (e.g. organisational structure searches)
Given that the WDA search help relies on these dictionary based searches, I'd think very much that you couldn't enhance it to return multiple. how you could even return multiple entries into a single UI element input field is also confusing to me.
I'd suggest creating a freely programmed value help, it would certainly take quite some effort to recreate those personal value lists etc, but it could be done - I don't like OVS, but that just me. -
How can I add a "search" field for web pages content-not blogs or podcasts?
This seems to be such a basic function, I can't believe I'm having so much trouble. I don't have a blog or a podcast on my new website that I'm in the process of designing. So how do I allow people who'll visit my site to search there for specified content? The only instructions I find are for the RSS in inspector for blogs or podcasts. All I want is for people to be able to search my site/web pages (that have no blogs or podcasts on them). This must be a common request... or am I crazy? How do I do that?
Thanks for your help.I think I've answered my own question after a few hours of searching:
http://services.google.com/searchcode2.html?accept=on
Thank you Google. -
How can I create a search plugin for multiple fields
There are a number of sites that have search capabilities but they require entries into multiple fields.
One such site is for instance the IBM Employee directory.
(http://www.ibm.com/contact/employees/servlets/lookup)
On this site - in order to get usable results - I have to enter both First name and Last name of the employee I'm looking for.
I created a search plugin for the site, however I wasn't able to split the entered text into two parts and provide them as separate fields for the form.
Is there a way to do this?
Regards,
ImreHi,
This is excellent. Not search-plugin though but but this is as good as a search-plugin. (Even better, as I haven't seen any solution with the plugins for the problem.)
I didn't know that it was possible to use javascript as bookmark location.
Thanks,
Imre -
For All Entries is NOT better than INNER JOIN in most cases
I quote from Siegfried Boes' excellent post here: Will writing an inner join be better or creating a view?
For all the FOR ALL ENTRIES lovers ... there is no proof for these reappearing recommendation.
There is nearly nobody who receives forum points, who recommends FOR ALL ENTRIES instead of Joins. What is the reason ???
It is easier to prove the opposite. A Join is a nested loop inside the database, a FOR ALL ENTRIES is partly outside of the database. FOR ALL ENTRIES works in blocks, joins on totals.
FOR ALL ENTRIES are not recommded on really large tables, because the chances are too high that
too many records are transferred.
People prefer FOR ALL ENTRIES, because JOINs are not so easy to understand. Joins can go wrong, but with a bit of understanding they can be fixed.
Some Joins are slow and can not be fixed, but then the FOR ALL ENTRIES would be extremely slow.
There are several kinds of views:
- projection views, i.e. only one table involved just fields reduced
- join views, several tables, joins conditions stored in dictionary
- materialized views, here the joined data are actually stored in the database. Storing and synchronisation has to be done manually.
Only the last one creates real overhead. It should be the exception.
Join Views and Joins are nearly identical. The view is better for reuse. The join is better in complicated, becuase if the access goes wrong, it can often be fixed by adding a hint. Hints can not be added to views.
Abraham Bukit points out:
If it is cluster table, (you can't use join). If it is buffered table, I would also say avoid join.
If they all are transaction table which are not buffered and are not cluster tables.
He further supports Siegfried's statement that FAE is easier to undestand than INNER JOINs.
Thomas Zloch says, regarding buffered tables:
At least think twice, maybe compare runtimes if in doubt.
So, unless someone has some EVIDENCE that FOR ALL ENTRIES is better, I don't think we want to see this discussed further.
Kind regards
MattTo give food for thought here's an example I gave in a thread:
If you have a statement like
SELECT ... FOR ALL ENTRIES IN FAE_itab WHERE f = FAE_itab-f.
SAP sends it to the database depending how the parameter rsdb/prefer_union_all is set:
rsdb/prefer_union_all = 0 =>
SELECT ... WHERE f = FAE_itab[1]-f
OR f = FAE_itab[2]-f
OR f = FAE_itab[N]-f
You have some influence of the generated statement type: Instead of OR'ed fields an IN list can be used
if you have only a single coulmn N to compare:
rsdb/prefer_in_itab_opt parameter:
SELECT ... WHERE f IN (itab[1]-f, itab[2]-f, ..., itab[N]-f)
rsdb/prefer_union_all = 1 =>
SELECT ... WHERE f = FAE_itab[1]-f
UNION ALL SELECT ... WHERE f = FAE_itab[2]-f
UNION ALL SELECT ... WHERE f = FAE_itab[N]-f
see: Note 48230 - Parameters for the SELECT ... FOR ALL ENTRIES statement
As you can see for the 2nd parameter several statements are generated and combined with a UNION ALL,
the first setting generates statements with OR's (or uses IN if possible) for the entries in FAE_itab.
I give you a little example here (my parameters are set in a way that the OR's are translated to IN lists; i traced the execution in ST05)
Select myid into table t_tabcount from mydbtable
for all entries in t_table " 484 entries
where myid = t_table-myid .
ST05 trace:
|Transaction SEU_INT|Work process no 0|Proc.type DIA|Client 200|User |
|Duration |Obj. name |Op. |Recs.|RC |Statement|
| 640|mydbtable |PREPARE| | 0|SELECT WHERE "myid" IN ( :A0 , :A1 , :A2 , :A3 , :A4 ) AND "myid" = :A5|
| 2|mydbtable |OPEN | | 0|SELECT WHERE "myid" IN ( 1 , 2 , 3 , 4 , 5 ) AND "myid" = 72 |
| 2.536|mydbtable |FETCH | 0| 1403| |
| 3|mydbtable |REOPEN | | 0|SELECT WHERE "myid" IN ( 6 , 7 , 8 , 9 , 10 ) AND "myid" = 72 |
| 118|mydbtable |FETCH | 0| |
| 2|mydbtable |REOPEN | | 0|SELECT WHERE "myid" IN ( 11 , 12 , 13 , 14 , 15 ) AND "myid" = 72 |
| 3|mydbtable |REOPEN | | 0|SELECT WHERE "myid" IN ( 475 , 476 , 477 , 478 , 479 ) AND "myid" = 72 |
| 94|mydbtable |FETCH | 0| 1403| |
| 2|mydbtable |REOPEN | | 0|SELECT WHERE "myid" IN ( 480 , 481 , 482 , 483 , 484 ) AND "myid" = 72 |
You see the IN list contained 5 entries each , wich made up about 97 statements for all 484 entries.
For every statment you have a single fetch operation wich means a separate access to the database.
If you would replace the FAE with a join you would only have one fetch to the database.
With the example above we can derive these observations:
1. From database point of view these settings kill performance when you access a big table and/or have a lot of entries or columns in your FAE_itab. Furthermore, you hide information what data you will access
at all and thus you block the database from creating a more efficient execution plan because it DOESN'T KNOW wich data you will select in the next step. I.e. it may be more efficient to scan the table in one shot instead of having many index accesses - but the database can make this decision only if it can examine ONE statement that has ALL the information of what data to retrieve.
2. A second impact is that with every statement execution you trigger the allocation of database resources
wich will contribute to the overhead described above.
Said that, FAE can never be a replacement for joining big tables (think of having a table with thousands of records in a FAE table )
Edited by: kishan P on Nov 2, 2010 2:16 PM - Format Fixed -
Need some help in creating Search Help for standard screen/field
I need some help in adding a search-help to a standard screen-field.
Transaction Code - PP01,
Plan Version - Current Plan (PLVAR = '01'),
Object Type - Position ( OTYPE = 'S'),
Click on Infotype Name - Object ( Infotype 1000) and Create.
I need to add search help to fields Object Abbr (P1000-SHORT) / Object Name (P1000-STEXT).
I want to create one custom table with fields, Position Abb, Position Name, Job. Position Abb should be Primary Key. And when object type is Position (S), I should be able to press F4 for Object Abb/Object Name fields and should return Position Abbr and Position Name.
I specify again, I have to add a new search help to standard screen/field and not to enhance it.
This is HR specific transaction. If someone has done similar thing with some other transation, please let me know.
There is no existing search help for these fields. If sm1 ever tried or has an idea how to add new search help to a standard screen/field.
It's urgent.
Thanks in advace. Suitable answers will be rewardedHi Pradeep,
Please have a look into the below site which might be useful
Enhancing a Standard Search Help
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/daeda0d7-0701-0010-8caa-
edc983384237
http://help.sap.com/saphelp_nw04/helpdata/en/cf/21ee93446011d189700000e8322d00/frameset.htm
A search help exit is a function module for making the input help process described by the search help more flexible than possible with the standard version.
This function module must have the same interface as function module F4IF_SHLP_EXIT_EXAMPLE. The search help exit may also have further optional parameters (in particular any EXPORTING parameters).
A search help exit is called at certain timepoints in the input help process.
Note: The source text and long documentation of the above-specified function module (including the long documentation about the parameters) contain information about using search help exits.
Function modules are provided in the function library for operations that are frequently executed in search help exits. The names of these function modules begin with the prefix F4UT_. These function modules can either be used directly as search help exits or used within other search help exits. You can find precise instructions for use in the long documentation for the corresponding function module.
During the input help process, a number of timepoints are defined that each define the beginning of an important operation of the input help process.
If the input help process is defined with a search help having a search help exit, this search help exit is called at each of these timepoints. If required, the search help exit can also influence the process and even determine that the process should be continued at a different timepoint.
timepoints
The following timepoints are defined:
1. SELONE
Call before selecting an elementary search help. The possible elementary search helps are already in SHLP_TAB. This timepoint can be used in a search help exit of a collective search help to restrict the selection possibilities for the elementary search helps.
Entries that are deleted from SHLP_TAB in this step are not offered in the elementary search help selection. If there is only one entry remaining in SHLP_TAB, the dialog box for selecting elementary search helps is skipped. You may not change the next timepoint.
The timepoint is not accessed again if another elementary search help is to be selected during the dialog.
2. PRESEL1
After selecting an elementary search help. Table INTERFACE has not yet been copied to table SELOPT at this timepoint in the definition of the search help (type SHLP_DESCR_T). This means that you can still influence the attachment of the search help to the screen here. (Table INTERFACE contains the information about how the search help parameters are related to the screen fields).
3. PRESEL
Before sending the dialog box for restricting values. This timepoint is suitable for predefining the value restriction or for completely suppressing or copying the dialog.
4. SELECT
Before selecting the values. If you do not want the default selection, you should copy this timepoint with a search help exit. DISP should be set as the next timepoint.
5. DISP
Before displaying the hit list. This timepoint is suitable for restricting the values to be displayed, e.g. depending on authorizations.
6. RETURN (usually as return value for the next timepoint)
The RETURN timepoint should be returned as the next step if a single hit was selected in a search help exit.
It can make sense to change the F4 flow at this timepoint if control of the process sequence of the Transaction should depend on the selected value (typical example: setting SET/GET parameters). However, you should note that the process will then depend on whether a value was entered manually or with an input help.
7. RETTOP
You only go to this timepoint if the input help is controlled by a collective search help. It directly follows the timepoint RETURN. The search help exit of the collective search help, however, is called at timepoint RETTOP.
8. EXIT (only for return as next timepoint)
The EXIT timepoint should be returned as the next step if the user had the opportunity to terminate the dialog within the search help exit.
9. CREATE
The CREATE timepoint is only accessed if the user selects the function "Create new values". This function is only available if field CUSTTAB of the control string CALLCONTROL was given a value not equal to SPACE earlier on.
The name of the (customizing) table to be maintained is normally entered there. The next step returned after CREATE should be SELECT so that the newly entered value can be selected and then displayed.
10. APP1, APP2, APP3
If further pushbuttons are introduced in the hit list with function module F4UT_LIST_EXIT, these timepoints are introduced. They are accessed when the user presses the corresponding pushbutton.
Note: If the F4 help is controlled by a collective search help, the search help exit of the collective search help is called at timepoints SELONE and RETTOP. (RETTOP only if the user selects a value.) At all other timepoints the search help exit of the selected elementary search help is called.
If the F4 help is controlled by an elementary search help, timepoint RETTOP is not executed. The search help exit of the elementary search help is called at timepoint SELONE (at the
F4IF_SHLP_EXIT_EXAMPLE
This module has been created as an example for the interface and design of Search help exits in Search help.
All the interface parameters defined here are mandatory for a function module to be used as a search help exit, because the calling program does not know which parameters are actually used internally.
A search help exit is called repeatedly in connection with several
events during the F4 process. The relevant step of the process is passed on in the CALLCONTROL step. If the module is intended to perform only a few modifications before the step, CALLCONTROL-STEP should remain unchanged.
However, if the step is performed completely by the module, the following step must be returned in CALLCONTROL-STEP.
The module must react with an immediate EXIT to all steps that it does not know or does not want to handle.
Hope this info will help you.
***Reward points if found useful
Regards,
Naresh -
Search help for input fields in a screen
Hi,
Pls help me
how to set search help property for the I/O fields in screen in se80?
1. do we want to add any property for search help in the property window?
2.do we want to create a MODULE PROCESS ON VALUE REQUEST ?
PLS tell me how to set search for the I/O field in se80?pls tell me the process?
i want to set the search help for more I/O fields in se80 but all the fields belongs to the same table?
can i create a single search for all these fields and use that for all the I/O fields ?
elementary search help or collective search help?
thanks & regards in advance,
vsnl.Hi,
Input Help on the Screen
Within the Screen Painter, you can define two types of input help:
1. The FIELD statement with one of the additions VALUES or SELECT.
2. Linking a search help directly to a screen field.
If you link a search help directly to a screen field, it overrides the additions of the FIELD
statement. However, the input check [Page 581] functions of the FIELD statement remain
unaffected.
Input Help in Flow Logic
The following input help methods are obsolete and should not be used. They are still supported
for compatibility reasons.
In the screen flow logic, you can specify a value list for a screen field <f> as follows:
FIELD <f> VALUES (<val1>, <val2>,...).
The value list contains a series of single values <vali>. The NOT and BETWEEN additions for the
input check [Page 581] are not appropriate for input help.
You can also create a value list by accessing a database table as follows:
FIELD <f> SELECT *
FROM <dbtab>
WHERE <k1> = <f1> AND <k2> = <f2> AND...
In the WHERE condition, the fields of the primary key <ki> of the database table <dbtab> are
checked against the screen fields <fi>. The WHENEVER addition, used with input checks [Page
581], is not necessary for input help.
If you have used a ABAP Dictionary reference for field <f>, the selection and the hit list formatting
may be affected by any check table attached to the field.
Attaching a Search Help
Search helps from the ABAP Dictionary can be attached to a screen field [Ext.]. To do this, enter
the name of the search help in the corresponding field in the attributes of the screen field in the
Screen Painter. This assigns the first parameter of the search help to the screen field. It is only
possible to place a value from the hit list onto the screen.
Input help on a screen.
REPORT DEMO_DYNPRO_F4_HELP_DYNPRO MESSAGE-ID AT.
DATA: CARRIER(3) TYPE C,
CONNECTION(4) TYPE C.
CALL SCREEN 100.
MODULE CANCEL INPUT.
LEAVE PROGRAM.
ENDMODULE.
The next screen (statically defined) for screen 100 is itself. It has the following layout:
602 April 2001
Cancel
Airline
Flight number
Screen field with search help
Input help in the flow logic
The input fields have been adopted from the program fields CARRIER and
CONNECTION. The function code of the pushbutton is CANCEL, with function type
E. The search help DEMO_F4_DE with the search help parameter CARRID is
assigned to the screen field CARRIER. The search help uses the database table
SCARR.
The screen flow logic is as follows:
PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.
FIELD CARRIER VALUES ('AA', 'LH').
FIELD CONNECTION SELECT *
FROM SPFLI
WHERE CARRID = CARRIER
AND CONNID = CONNECTION.
When the user chooses the input help for the individual fields, the following input
help is displayed:
For the Airline field, the search help displays the names of the airlines and places the airline
code in the input field for the chosen line. If the airline code is not one of those listed in the
VALUES list of the screen flow logic, the input check triggers an error message in the PAI
event. So the search help overrides the VALUES addition for the input help, but not for the
input checks. This is therefore not an appropriate place to use the VALUE addition.
For the Flight number field, the flow logic displays the selected entries from the database
table SPFLI and places the selected line in the input field.
Regards,
Bhaskar -
Hi Experts,
This is a Z table with first field as GROUP and second field as KEY.
User can select values for first field using a search help. It has three possibel entries
1. Purchasing Org
2. Region
3. Coutnry
In second field the user has to enetr value based on selection in first field, for eg. if 1 is chosen in 1st field user will enter name of a purchasing organisation.
Can we dispay a search help for second field based on the selection in first field?
Like if 1 is selected in 1st field second field should display search help for Purchasing Org
if 2 is selected in 1st field second field should display search help for Region....in SM30?
How can we achieve this?
Thank you,
AnubhavHi Anubhav,
1.Go to the table maintenance generator screen from SE11 (Utilities -> Table Maintenance Generator).
2. In the Table maintenance generator screen , navigate to Environment -> Modifications -> Maintenance Screens
3. Select and Edit the screen where you need this new search help
4. Create a Process on Value Request module for your second field at the end of the screen flow logic after MODULE LISTE_AFTER_LOOP.
5. In the POV module, use funcntion DYNP_VALUES_READ to read the value of field 1 on the screen
6. Fill your own table with the values for field 2 based on field 1 and display selection using the function F4IF_INT_TABLE_VALUE_REQUEST
Hope this helps.
- Puneet -
Search Help for input field2 based on value entered in input field 1
Hi All,
I have a requirement where in my view, i have two fields.
1. PO
2. PO Item
For PO i could get the standard search help from DDIC, but i need to provide search help for PO Item based on PO selected.
How can i do that. Any help is highly appreciated.
Thanks,
AjayHi Ajay ,
following steps cn help u :
1 Declare the WDR_OVS Component in the used component list in your WD component .
2 Now go to the View, in the Properties Tab click the Create Controller Usage Button.
3 It will open a screen with Component Use Entries. There select the Component Use OVS with Interface Controller . Press Enter.
4 Go to the Context Tab, Right Click the Context and select Create à Attribute , for PO item in ur case .
5 In the Input Help Mode Field, Select u2018Object Value Selectoru2019 from the dropdown. Then press F4 in the Field OVS Component Usage.
6 Declare one event handler method with Name ON_OVS in the Method tab of the view. Then Press F4 in the Column Event.
Select the Event OVS as shown below and Press Enter.
for more info and illustration , also refer :
http://help.sap.com/saphelp_erp2005/helpdata/EN/30/d7fa41c915da6fe10000000a1550b0/content.htm
https://wiki.sdn.sap.com/wiki/display/WDABAP/ABAPWDObjectValueSelector(OVS)
http://wiki.sdn.sap.com/wiki/display/Snippets/OVSSearchHelpinWebDynproAbap
regrds,
amit
Maybe you are looking for
-
How to create a textfile dynamically(with in the loop) with given data?
Hi all, Can anyone Please guide me how to create a text file in the given path dynamically? (with in the loop) with given data. For example: <% String data1="name"; String data2="address"; for(int i=0;i<10;i++) create the textfile at c:/test/sample.t
-
I can't open Adobe Photoshop CS6 because it is not "supported" on my type of Mac
For some reason after downloading Adobe Photoshop CS6 from the Creative Cloud it is saying that I cannot open the application because it is not supported by my type of Mac. Is there a way to resolve this? The Mac is on Mac OS X version 10.6.8 I thoug
-
My 2010 MBP has 8GB of RAM and plenty of free disc space but I am getting hung up constantly, where the spinning beach ball will go for a minute or two, and not let me access any apps. It is happening across a range of apps including Chrome and Offic
-
Can anyone help with Interactive docs in ID CS5?
I am creatiing an ineractive document in ID CS5 and it is going well. However, suddenly my Object States panel has stopped functioning - I select an object and the panel is blank, the menu items are greyed out and there are no icons at the bottom of
-
How to apply clock to a ADC from NI ELVIS II+ board
How to apply a clock to a ADC for ADC conversion from NI ELVIS II+. The input signal to ADC for conversion is 50 Hz applied from the function generator, now how to apply a CLOCK to this ADC for working. Please help....