Performance when call BAPI_SALESORDER_CHANGE ?
Hi, All:
When I call the following function module to update partner associated to contract.
If there are about 30,000 partner associated this one contract. Updating performance is too bad.
Is there any good idea to improve performance for this case.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = v_vbeln ( contract number)
order_header_inx = li_bapi_ord_indx
TABLES
return = li_bapi_return
partnerchanges = li_partnerchanges. ( partners )
Any help is appreciated!
Hi
30k partners is a very big number, but u should try to understand where are the bottle necks, we can't help you without to know where the problem is.
Perhaps a your custom control in some user-exits could be the problem.
Max
Similar Messages
-
Bad performance when calling a function in where clause
Hi All,
I have a performance problem when executing a query that contains a function call in my where clause.
I have a query with some joins and a where clause with some regular filters. But one of these filters is a function, and its input parameters are columns of the tables used in the query.
When I run it with only a few rows in the tables, it goes ok. But as the number of rows grows, performance falls geometrically, even when my where clause filters the result to only a few rows.
If I take the function call off of the where clause, then run the query and then call the function for each returned row, performance is ok. Even when the number of returned rows is big.
But I need the function call to be in the where clause, because I can't build a procedure to execute it.
Does anyone have any clue on how to improve performance?
Thanks,
RafaelYou have given very little information...
>
If I take the function call off of the where clause, then run the query and then call the function for each returned row, performance is ok. Even when the number of returned rows is big. Can you describe how you measured the performance for a big result set without the function? For example lets say there had been 10.000 rows returned (which is not really big, but it is astarting point). Did you see all 10.000 rows? A typical mistake is to execute the query in some tool like Oracle SQL Developer or TOAD and measure how fast the first couple of rows are returned. Not the performance of the full select.
As you can see from this little detail there are many questions that you need to address first before we can drill down to the root of your problem. Best way is to go through the thread that Centinul linked and provide all that information first. During the cause of that you might discover that you learn things on the way that help a lot for later tuning problems/approaches.
Edited by: Sven W. on Aug 17, 2009 5:16 PM -
HR_INFOTYPE_OPERATION not working when called from Dynamic action
Hi ,
Senario : I would like to execute a form from dynamic action which
creates a record in 0015 (Additional payment IT) .
I have writen the code as shown below am using FM HR_INFOTYPE_OPERATION
. When i execute the program from se38 it is creating a record, however it is
not created when it is called from dynamic action..when i debugged the code in
inside the FM HR_INFOTYPE_OPERATION there is a FM HR_MAINTAIN_MASTERDATA where
they are using call dialog (statement) and
sy-oncom = 'N' when called from Dynamic action and
sy-oncom = 'S' when called executed directly.
I tried to change the sy-oncom to S while run from Dynamic action it created
the record.
So Can anyone explain me abt sy-oncom and how can i resolve the issue..
code..
REPORT ZHRPYENH01 .
perFORM TERMIATION_9000.
INCLUDE DBPNPMAC.
FORM Termiation_9000 *
FORM TERMIATION_9000.
INFOTYPES : 0015.
*data : i .
*i ='c'.
*break-point.
*message i000(000) with i.
TABLES : PRELP.
DATA : P9000 TYPE PA9000." with header line.
DATA : P0000 TYPE STANDARD TABLE OF P0000 WITH HEADER LINE.
DATA : P0015 TYPE STANDARD TABLE OF P0015 WITH HEADER LINE.
DATA : HIRE_DATE LIKE SY-DATUM,
TERM_DATE LIKE SY-DATUM.
DATA : MOLGA LIKE T500L-MOLGA VALUE '25',
SEQNR LIKE PC261-SEQNR.
DATA : RGDIR TYPE STANDARD TABLE OF PC261 WITH HEADER LINE.
DATA : ACTUAL_PERIOD LIKE PA9000-RETENTION.
DATA : PNP-SW-FOUND TYPE SY-SUBRC ,
PNP-SY-TABIX TYPE SY-TABIX.
DATA : TER_PERNR LIKE PA0001-PERNR.
DATA : REF_PERNR LIKE PA0001-PERNR.
data : key type BAPIPAKEY.
data : payed_amount type p0015-BETRG.
data : future_payment_amount type p0015-BETRG.
data : p0002 like pa0002.
types : begin of t_deduction ,
deducation_date like p0015-begda,
future_payment_amount type p0015-BETRG.
types : end of t_deduction.
data : future_deduction type standard table of t_deduction with
*header line.
data : future_deduction type t_deduction .
data : RETURN type BAPIRETURN1.
*data : deduction_p0015 like standard table of p0015 with header line.
data : deduction_p0015 like p0015 .
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
****Prepare 0015 data for deduction
*deduction for payed amount
clear deduction_p0015.
*refresh deduction_p0015.
deduction_p0015-pernr = REF_PERNR.
*deduction_p0015-pernr = TER_PERNR.
deduction_p0015-lgart = 'M120'.
deduction_p0015-begda = sy-datum + 1 .
deduction_p0015-endda = sy-datum + 1 .
deduction_p0015-BETRG = payed_amount.
deduction_p0015-WAERS = 'SGD'.
deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
**deduction for future payment amount
*loop at future_deduction.
*clear deduction_p0015.
*deduction_p0015-pernr = REF_PERNR.
**deduction_p0015-pernr = TER_PERNR.
*deduction_p0015-lgart = 'M120'.
*deduction_p0015-begda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-endda = FUTURE_DEDUCTION-DEDUCATION_DATE.
*deduction_p0015-BETRG = future_deduction-future_payment_amount.
*deduction_p0015-WAERS = 'SGD'.
*deduction_p0015-ZUORD = TER_PERNR.
*append deduction_p0015.
*endloop.
Create a deduction wage type in 0015 for the employee
break-point.
CLEAR RETURN.
CALL FUNCTION 'BAPI_EMPLOYEET_ENQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
if not return is initial.
message E000(000) with
'Referred Employee could not be locked for referal payment deducation,
please try after some time'.
endif.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0015'
NUMBER = REF_PERNR
SUBTYPE = 'M120'
OBJECTID =
LOCKINDICATOR =
VALIDITYEND = SY-DATUM
VALIDITYBEGIN = SY-DATUM
RECORDNUMBER =
RECORD = deduction_p0015
OPERATION = 'COPY'
TCLAS = 'A'
DIALOG_MODE = '2'
NOCOMMIT =
VIEW_IDENTIFIER =
SECONDARY_RECORD =
IMPORTING
RETURN = return
KEY = key
break-point.
COMMIT WORK.
if not return is initial.
*return-TYPE
*ID
*NUMBER
*MESSAGE
message I000(000) with return-MESSAGE.
endif.
CALL FUNCTION 'BAPI_EMPLOYEET_DEQUEUE'
EXPORTING
NUMBER = REF_PERNR
VALIDITYBEGIN = '18000101'
IMPORTING
RETURN = return
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
Thanks and regards
-Senthil Bala
Message was edited by: senthil balaHi Senthil
Why at all U want a subroutine to create a record in IT0015 through Dynamic action.There are some standard codes available to update infotypes.
Let me give U an example
14 9CON BETRG 4 2 I INS,0015 This will create a record in IT0015 when IT0014 is updated with Wagetype 9CON
14 9CON BETRG 4 3 W P0015-LGART='5400' Set wagetype for IT0015(Here U can use a subroutine call to set the wagetype)
14 9CON BETRG 4 4 W P0015-BETRG=P0014-BETRG set amount for IT0015(Here U can use a subroutine call to get the amount)
14 9CON BETRG 4 5 W P0015-BEGDA=P0014-ENDDA set the dates(Here U can use a subroutine call to set the dates)
Hope this will help U.
Please award points if helpful -
Initial Load Error - No generation performed. Call transaction GN_START
Hi Folks,
We are doing middleware configuration for data migration between R3->CRM.Have followed "Best Practies" configuration Guide.
System Using; CRM 2007 and ECC6.0
Issue
While performing initial load, system is throwing the error as
001- No generation performed. Call transaction GN_START
002-Due to system errors the Load is prohibited (check transaction MW_CHECK)!
After calling the transaction GN_START system asks for job scheduling,whereas I have already scheduled it.
A job is already scheduled periodically.
Clicking on 'Continue' will create another job
that starts immediately.
After checking(MW_CHECK),message is displayed as
No generation performed. Call transaction GN_START.
If anybody has encountered the similar issue and has resolved it,their guidence will be greatly appriciated.
Thanks in Advance
VEERA BVeera,
We also faced the same problem when we have done the upgrade from CRM 4.0 to CRM 2007.
For that you go to SMWP where you can see all the errors related to Middleware with the error message so try to remove the error,
Also pls check in RZ20 and activate the middleware trace tree.
Regards
Vinod -
Why are Java SASLFactories missing when called via PL/SQL but not from JRE?
Hi
This may be quite a technical point about SASL and JCE Providers etc OR it may just be a question about how Oracle PL/SQL interfaces with Java.
The background is that I am trying to get a Java opensource library to run in Oracle DB - this is for specialized communication from Database to other servers.
The library uses a SASL mechanism to authenticate with the server and this (appears) to rely on JCE Providers installed and provided by the JRE.
I have some Java code working which uses the library - this runs OK in NetBeans/Windows environment and also using Linux/Oracle JRE directly such as:
+# $ORACLE_HOME/jdk/bin/java -classpath "./MyMain.jar:./OtherSupport.jar" package.TestClient+
However it refuses to work (throws a NullPointerException) when called from PL/SQL.
+FUNCTION send_a_message (iHost IN VARCHAR2,+
iPort IN NUMBER,
+iLogin IN VARCHAR2,+
+iPasswd IN VARCHAR2,+
iRecipient IN VARCHAR2,
iMessage IN VARCHAR2) RETURN NUMBER
AS LANGUAGE JAVA
NAME package.TestClient.sendATextMessage(java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String) return int';
In the Java code this is:
public static int sendATextMessage(String iHost,
int iPort,
String iLogin,
String iPasswd
String iRecipient,
String iMessage)
I've tracked the issue down to there being no SaslClientFactories (via Sasl.getSaslClientFactories()) showing when called from PL/SQL whereas 3 are available when run from within Java directly. This via:
Enumeration<SaslClientFactory> facts = Sasl.getSaslClientFactories();
System.out.println("Found Sasl Factories [" & (facts != null) & "] size[" & Collections.list(facts).size() & "]");
So, is there some aspect of Java initialisation that I'm missing when calling from PL/SQL (which means SASL factories aren't getting loaded into JRE) or is there something different in SASL setup?
Any pointers appreciated.
Thanks
DaveOk, after a bit of reading and general hacking about I have got this working.
What I hadn't initially understood/remembered is that for a Stored Procedure the JVM installed on file system with Oracle isn't actually used - java code is loaded into the database and hence a different set of base functions are available. The following is a good explanation of this http://docs.oracle.com/cd/B14117_01/java.101/b12021/appover.htm#BGBIBDAJ
So "out of the box" the Oracle Database appears to come loaded with only two of the Sun security providers i.e. no com.sum.security.SASL
>
OBJECT_NAME OBJECT_TYPE STATUS TIMESTAMP
com/sun/security/auth/NTSid JAVA CLASS VALID 2013-02-14:14:08:57
com/sun/security/jgss/GSSUtil JAVA CLASS VALID 2013-02-14:14:08:57
>
This is from:
>
SELECT
object_name,
object_type,
status,
timestamp
FROM
user_objects
WHERE
(object_name NOT LIKE 'SYS_%' AND
object_name NOT LIKE 'CREATE$%' AND
object_name NOT LIKE 'JAVA$%' AND
object_name NOT LIKE 'LOADLOB%') AND
object_type LIKE 'JAVA %' AND
object_name LIKE 'com/sun/security%'
ORDER BY
object_type,
object_name;
>
My solution (which may well be a work-around) is the following:
1) Downloaded JDK Source and extracted "com.sun.security.sasl" java code to my project
2) Added following code to my Stored Procedure ()
>
Enumeration<SaslClientFactory> saslFacts = Sasl.getSaslClientFactories();
if (!saslFacts.hasMoreElements()) {
System.out.println("Sasl Provider not pre-loaded");
int added = Security.addProvider(new com.sun.security.sasl.Provider());
if (added == -1) {
System.out.println("Sasl Provider could not be loaded");
System.exit(added);
else {
System.out.println("Sasl Provider added");
>
3) Built my JAR file with the sasl package embedded (note: could only find Java 6 code, so had to comment out some GSS lines - but wasn't intending to use these)
4) Loaded JAR to oracle via "loadjava".
5) Add permissions (only found this out after a couple of failed runs)
>
call dbms_java.grant_permission('XMPP', 'SYS:java.security.SecurityPermission', 'putProviderProperty.SunSASL', '' );
call dbms_java.grant_permission('XMPP', 'SYS:java.security.SecurityPermission', 'insertProvider.SunSASL', '' );
>
6) Run gives the following:
>
Sasl Provider not pre-loaded
Sasl Provider added
...etc...
>
It works!. I confess I'm not sure of the implications of this for multiple calls/performance and if it will need to be added for each stored procedure call - may post back.
For completeness I should point out that after my load the Security providers look like this:
>
OBJECT_NAME OBJECT_TYPE STATUS TIMESTAMP
com/sun/security/auth/NTSid JAVA CLASS INVALID 2013-02-15:09:11:36
com/sun/security/jgss/GSSUtil JAVA CLASS INVALID 2013-02-15:09:11:37
com/sun/security/sasl/Provider JAVA CLASS VALID 2013-02-15:10:03:21
>
i.e. the original couple are "INVALID" !
Dave
Edited by: 946763 on Feb 26, 2013 2:35 AM -
Refcursor not returning rows when called from non SQL*Plus IDE or other
Hi all,
I have a very weird problem.
We have recently performed a minor upgrade to our oracle database and are now using:
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production
5 rows selected.We have a crystal report selecting data from a refcursor returned by a stored procedure.
The stored procedure updates data when called as well as returning the refcursor in question.
Observe the following test scenario executed in SQL*Plus:
SQL> create table testtab (teststr varchar2(100));
Table created.
Elapsed: 00:00:00.00
SQL> insert into testtab values ('X');
1 row created.
Elapsed: 00:00:00.00
SQL> create or replace procedure testtabproc (p_listcur in out sys_refcursor)
2 as
3 begin
4
5 open p_listcur for
6 select *
7 from testtab
8 where teststr = 'X';
9
10
11 update testtab
12 set teststr = 'Y';
13
14 commit;
15
16 end;
17 /
Procedure created.
Elapsed: 00:00:00.00
SQL> declare
2
3 v_list_cur sys_refcursor;
4
5 type t_out_rec is record (teststr varchar2(100) );
6
7
8
9 v_out_rec t_out_rec;
10
11 v_rec_count number := 0;
12 v_count_limit number := 10000;
13
14 begin
15
16 dbms_output.put_line('about to call proc');
17
18 testtabproc(v_list_cur);
19
20 dbms_output.put_line('about to fetch records');
21
22 fetch v_list_cur into v_out_rec;
23 while v_list_cur%found loop
24 v_rec_count := v_rec_count + 1;
25 if v_rec_count <= v_count_limit then
26 dbms_output.put_line(v_out_rec.teststr);
27 end if;
28 fetch v_list_cur into v_out_rec;
29 end loop;
30 dbms_output.put_line('complete. selected '||v_rec_count||' records.');
31
32
33 end;
34 /
about to call proc
about to fetch records
X
complete. selected 1 records.
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
SQL> select * from testtab;
TESTSTR
Y
1 row selected.
Elapsed: 00:00:00.00
SQL> as you can see, the cursor returns data and the table is updated.
now, our problem is with crystal and also when I use the same test case via another IDE like TOAD.
No data is returned from the list but the table is still updated.
We suspect that something is happening that is causing the table to be updated before the refcursor is opened, or at least before the predicates are applied.
has anyone else encountered this problem before?Tubby wrote:
WhiteHat wrote:
nope - it works from sqlplus itermitantly (i.e. we always get the debug output but the cursor only sometimes fetches the rows).
it is almost as if the commit is being executed before the cursor is opened.
I still havn't been able to reproduce it except with the actual scenario that I am working with...Is the code you are dealing with exactly the same as the skeleton you've posted in your original post? Do you perhaps have a generic exception catcher in there somewhere (perhaps catching and hiding an ORA-01555) when the cursor is being fetched?
Not that i expect it to make any difference, but i'm curious as to why you've declared your cursor as IN / OUT ?
p_listcur in out sys_refcursor
the code structure in the real example is almost identical to that test case I produced - the exception handler is only catering for no_data_found, all other errors should be raised as normal.
edit: sorry I forgot to add - it's in/out because apparently that's what crystal reports needs in order to use the refcursor..... I'm not a crystal guy so I can't be any more specific than that sorry......
Edited by: WhiteHat on Oct 11, 2010 9:34 AM -
Error BT616 when calling function module SXPG_COMMAND_EXECUTE in background
Hi All,
We use function module SXPG_COMMAND_EXECUTE with a custom command we defined in SM69 to move files in unix (mv command).
The function module call has worked fine for almost a year and recently we have been seeing an error (BT616) in our job lob (SM37) when the program is run in background. We have not been able to reproduce the error in foreground mode and it seems to be occuring only periodically in the background. (The appropriate SAP authorization objects where assigned to the batch job ID and the steps on the batch job.) We are in the process of setting up the trace flag and performing analysis on the trace log via ST11 to help identify the issue.
After perform analysis on SXPG_COMMAND_EXECUTE, the error is occurring when calling function module SAPXPG_END_XPG for exception 2, system failure, yet function module SAPXPG_END_XPG does not exist. I assume this is a program at the operating system level and is just a signature of the parameters to be passed to the operating system program.
Below is part of the SAP function module SXPG_COMMAND_EXECUTE that is failing.
* Now we have to wait for the termination of the external
* command if the caller wants us to.
IF TERMINATIONWAIT = 'X'.
CALL FUNCTION 'SAPXPG_END_XPG'
DESTINATION DESTINATION
IMPORTING EXITSTAT = STATUS
EXITCODE = EXITCODE
TABLES LOG = LOG
EXCEPTIONS COMMUNICATION_FAILURE = 1 MESSAGE MSG
SYSTEM_FAILURE = 2 MESSAGE MSG.
I performed a where used on function module SXPG_COMMAND_EXECUTE, and most of SAP programs call the function module with the parameter TERMINATIONWAIT = 'X', so I assume we should pass X as well.
Any ideas on what could be causing this issue?
Mike VondranI also remember I have this kind of issue, as I have some UNIX script at OS( UNIX) level . The problem was with the ID , as it dont have proper authorization at OS level ( UNIX ) . Please check this ID authorization. This could be the one of reasons if youre sure from SAP standpoint.
Hope thisll give you some guide line..
Thanks
Bye -
Alternatives to long parameter lists when calling methods
I've heard you shouldn't have more than 3 parameters when calling methods. What are the alternatives to long parameter lists when calling methods? Compounding parameters into new inner classes, declaring them as member fields? Which one is preferable?
Okay, I get it. But since it's late in the day, I'll share my additional wandering thoughts. And I'll just go ahead and preemptively slap myself for doing so. Ouch! There. So the rules are more like this:
1) Only use setters if the values in question are meant to be part of the state of an object.
2) In general, don't let external entities directly set the state of an object.
Which can be combined into:
1) In general, never use setters.
Which could be reworded to:
1) Only use setters in non-general situations.
Or:
1) Only use setters when setters are a good solution...which isn't very often...generally speaking...
Or if I were to infer when it's a good solution:
1) Only use a setter when it is useful to the caller and has no significant negative effects on the operation of the object nor the maintainability, size, or performance of the class...generally speaking...
Actually, you might just infer from here forward that the "generally speaking" is implicit to every rule, and is essentially the "There is an exception to every rule" rule. Which is an interesting rule because it can be applied to itself, resulting in a paradox...generally speaking...but I digress.
And then translated back to the original topic:
1) You can use a setter instead of a constructor argument so long as the value isn't needed at time of construction (or a default value will suffice) and it is useful for the caller to be able to use the setter and using the setter has no significant negative effects on the operation of the object nor the maintainability, size, or performance of the class.
But this won't quite cut it either. With the input of others, we could eventually devise a very concise rule, but it will end up being so long that on one will ever read it...making it an ideal candidate to be included in a legal document. Which will eventually find it's way into a very long scroll pane with a check box at the end exclaiming that you read the document, at which you will not be able to continue unless you check the check box...at which point, what do you do? After all, you are not a liar...generally speaking...
In summary, you could potentially use setters in some limited cases, but in the general sense, that's more of an option than a recommendation. :-) -
8i hangs when calling a complex EJB
Regarding 8i (8.1.6) and EJBs on an NT Server...
We have been working towards deployment of a web application, using 8i, for some time now and have overcome a number of problems encountered with EJBs (remote access via 2481, clientserverserver demo not working when connecting as any other user than the EJB owner etc.). We have found the going hard at times but we have now hit a potential showstopper problem that we can't find a way around.
We have deployed ~25 EJBs and can call them many times from our client, including EJBs calling other EJBs. However, we have a more complex EJB that acts as client to 15 other EJBs and this is hanging intermittently. Sometimes it runs OK but then hangs at different points with ORACLE.EXE taking 100%
CPU. The only recovery is to reboot the server.
In our testing we have noticed the following points...
1. Starting the database up, running some EJBs, shutting down the database and then restarting it leaves ORACLE.EXE taking ever more memory without apparently releasing any. This can be seen to get worse and worse when repeating this loop.
2. When running many EJBs using several different Oracle connections (~10 different Oracle users) ORACLE.EXE takes more and more memory. It occassionally releases some but overtime grows.
3. Deploying EJBs increases the memory usage of ORACLE.EXE significantly. The memory is not released.
Some other points...
1. The EJBs called by the main EJB are the same ones that are called OK from an external client.
2. When the server hangs it tends to be when the main EJB is a). doing the JNDI lookup on another EJB OR b). running a method within another EJB. But it is difficult to spot any clear pattern.
3. We are using //thisServer/:thisSession when calling EJBs serverside.
We suspect that there may be a resource issue that causes problems under more complex scenarios.
Questions...
1. Are there known resource management problems with 8i on NT, or have we missed something ?
2. Has anyone else got problems with ORACLE.EXE hanging when using EJBs ?
3. Does anyone have any suggestions/ solutions ?
Thanks, Andy Blears :(Stefan,
Thanks for the input. We have now applied patches up to 8.1.6.1 (I can't find any more recent) and the problem still occurs. The behaviour may have become more predictable in that it seems to go into an eternal loop whilst trying to load classes. BUT it may work well for periods of time.
Re. the performance it seems to be OK on the small tests we have run so far but because of the problems we're having we haven't run full stress/volume tests yet...I'll let you know - Are you asking because you have experienced poor performance ? -
Error when calling up IGS(listenerrfc: unknown error)
Hello,
We have integrated IGS 640.2 running on os windows 2003 64 bit(BW 3.5) .When i call the IGS chart from the EP portal i am getting the following error messge
Error when calling up IGS(listenerrfc: unknown error)
When i run the report GRAPHICS_IGS_ADMIN i am getting a blank screen.
This is in the case of production server.
I am getting the graph when i run report GRAPHICS_IGS_ADMIN in my BW quality server ( with same version IGS 640.2 os windows 2003 32 bit).
I have followed the below stpes for re-constructionin BW prod:
Followed the Snote 458731
1. Checked the Rfc destination 'GFW_ITS_RFC_DEST' amd 'IGS_RFC_DEST'
2. I can see the monitoring page when i run http://IGSHOST:LISTENERHTTPPORT
3. Program id and gateway is properly maintained
4. It is not generating any dumps when i set the dump status to "dump_on"
but in BW quality - dump file is getting generated
I can't switch on trace because it requires resatrt of teh server which is not possible in production.
I can see service called SAP IGS in BW qualitybut it is missing BW production.
Apart from that evrything looks similar in both quality and production server.
Can anyone advice me on how to fix this issue.
Appreciate your response.
Thanks in advance.
VadiCheck the following Note : 454042
In rz20 you can find the IGS as the Internet Graphics Server in the monitor set SAP CCMS Monitors for Optional Components.
When you double-click on this entry a hierarchy with performance values should be displayed. If no hierarchy is displayed, even though the IGS is running, call transaction se38 and execute the program graphics_igs_admin. Choose Environment ® Switch on CCMS to activate the IGS display in rz20. -
BPM - Crate new Transactio - Error when call another BPM
Hi,
I have an XI application with BPMs and the XI with SP8.
The fist BPM has transformations and send steps and calls the second BPM.
In the DEV environment we are applying SP12, now it's possible to disable the option "Create New Transaction" for Send and Transformation.
I need to disable this option because, my application woks with bad performance and use 100% of the workprocess all the time.
So, when I disabled this option, "Send Stets" whose call another BPMs didn't work fine. The transformations steps and send steps to R/3 worked fine.
Does anybody know why send step to another BPM doesn't work when call another's BPMs?
Best Regards,
FernandoInteresting issue. Have never tried it personally and currently working on a SP 16 XI 3.0 system else would have given this a shot.
If you do get an updates on this issue, pl let us know
Regards
Bhavesh -
I found a bug related to Suspend When Called VIs in LabVIEW 2009.
I've posted the details and a video on LAVA here:
http://lavag.org/topic/11252-suspend-when-called-bug-in-2009/
Basically, suspended VI input changes are ignored in suspend mode -- only the inputs that were set by the caller VI are used. This is different than in previous versions of LabVIEW.Has there been any progress on this? Suspend when called is almost unusable with this issue.
It would appear that the problem is due to inappropriate optimization by the compiler during a suspend-when-called.
During normal operation, LabView re-uses the input data's buffers to store output data when it can. This improves performance and memory utilization, because in many cases it avoids calling a release() on one block of memory just to malloc() another chunk exactly the same size. When this occurs the operation (say, add 1 to each element of a 1024 point array) the computation is done in-place on the input array and the pointer passed to the output array. This violates dataflow but no one is looking :-) so it is ok. Next call, the bogus data in the buffers are wiped out by the caller's data. All is well.
But this optimization is inappropriate when suspend-when-called. Here the inputs and outputs MUST be kept in different buffers (different even from the caller's) so that the user can look at and possibly change them; also the user is allowed to run the VI as many times as desired. Sharing buffers leads to data corruption.
The attached example shows the problem. The subVI is designed make the optimizer extremely happy: it has the same data types at output as input, and the array doesn't change size. "Show buffer allocations" shows that compiler thinks it can re-use all the buffers. Run "RunMe.vi"; when the subVI suspends, keep hitting the run arrow: each time the VI is run, the values of the input array gets bigger and bigger!
There is a partial workaround, which is to place a "Always Copy" compiler hint (the "*" node) on the input wire; this will prevent the output-to-input corruption. You still cannot edit the input control on affected VIs.
(On the feature request side, it would be great if Suspend When Called would have some kind of indication as to whether it has been run or not. When you have half a dozen suspends on, it is hard to remember whether you have run it or not.)
-Rob
Attachments:
BadBufferReuse.PNG 20 KB
BadBufferReuse(192207).zip 13 KB -
SESSION EXPIRED and CPU Utilisation is 100% when called from Pro*C
Dear Colleague
We are having a production system developed using Pro*c and PL/SOL packages in HP Unix.
The system is doing the following,
A file will be decoded using Proc and data will be load into 3 temporary tables (permanent table used for temporary) using SQLLoader. Then it calls a PL/SQL package which will process the data in the temporary tables and will store the summary information in Transaction table and will returns a unique id to the calling Pro*c module. The whole process is completed in a single process/oracle session.
The PL/SQL package, join the 3 Temporary tables and retrieve the data into an Oracle object(Collection) and process it. Then the processing summary will be loaded into Transaction table and return the Primary key.
Now the problem is, when the temporary tables are loaded with more than 200,000 rows, in some cases the system is running for hours before it finish. And during the process the session shows as EXPIRED in the database and CPU utilization for the respective ProcessId in Unix is almost 100%. Then after a while the session comes alive and finishes the process.
And for some other cases, with same row count, the entire process finished in seconds.
If the same process (PL/SQL package) when run directly using a separate session inside the database(and the temporary tables are still available), rather than calling from Pro*c, it finishes in seconds, where it took hours when called from Pro*c.
It will be highly appreciated, if anyone let me know, what actually is wrong. whether it is the resource allocation or should there any known problem in calling huge PL/SQL packages from Pro*C.
we are using Oracle 10g and HP-UX ed42 B.11.31 U System.
regards
SajidDear Colleague
I just want to rephrase the problem again.
We have a Pro*C application. This will read the binary file and dump the data in ascii format to a data file. Then, within from the pro*C, 14 Dynamic tables will be created using EXEC SQL EXECUTE IMMEDIATE statement, each having almost a maximum of 45 columns. Also, created INDEXES to the tables in the same way from Pro*C.
And Control file will be created as follows
OPTIONS (SILENT=(FEEDBACK)) UNRECOVERABLE
LOAD DATA
INTO TABLE FILENAME_BCI_USED
FIELDS TERMINATED BY '|'
TRAILING NULLCOLSColumns Listed
Then Sql loader will be called using system commands (from pro*C itself) to loead the data into the table, as follows.
sprintf(syscommand,"sqlldr %s CONTROL=%s DATA=%s log=%s rows=5000 direct=true", glb_connect_string,ctl_file,data_file, log_file );
ret_value = system(syscommand);data loaded successfully.
Then the Pro*C will call a PL/SQL package for processing the data.
The PL/SQL package, to process the data, dynamically construct the below query and use it for the reference cursor to retrieve data and load into a collection.
v_sql_query := 'SELECT '|| '/*+ index(b '||p_File_Name ||'_1) index(b '||p_File_Name ||'_2) index(s '||p_File_Name ||'_3) index(s '||p_File_Name ||'_4) index(s '||p_File_Name ||'_5) index(s '||p_File_Name ||'_6) index(e '||p_File_Name ||'_7)*/' || '
iot_call_record(b.rec_no ,
b.rec_type ,
substr(b.field1,1,15) ,
nvl(substr((select s0.field1 from ' || SU_Table ||
' s0 where s0.rec_no = s.rec_no and s0.sub_rec_type = 203) ,1, 25),
substr(b.field2, 1, 25)),
substr(b.field3,1,25) ,
b.field4 ,
b.field5 ,
s.field1 ,
s.field2 ,
(select sum(s1.field1) from ' || SU_Table ||
' s1 where s1.field2 = s.rec_no and trim(s1.field2) = ''00'' ) ,
s.field3 ,
e.field2/power(10,e.field3) ,
s.field4 ,
s.field5 ,
s.field6 ,
s.field7 ,
s.field8 ,
s.field9 ,
s.field10 ,
nvl(b.field6,''F'') ,
NULL ,
s.field11 ,
(select sum(s2.field11) from ' || SU_Table || ' s2 where s2.rec_no = s.rec_no) ,
NULL)
FROM ' || BCI_Table || ' b , ' || SU_Table || ' s, ' || EXCH_Table ||
' e WHERE b.filename = s.filename
AND b.rec_no = s.rec_no
AND (b.field7 = 0 OR b.field7 = 1)
AND TRIM(s.chg_type) = ''00''
AND (s.field1 = e.field2_Code )
AND not(s.field4 = ''V'' and s.field12 > 1)
AND not(s.field4 = ''W'' and s.field12 > 1)
AND not(b.rec_type = 75 and s.field12 > 1)
AND not(b.rec_type = 75 and s.field4 =''D'')
AND s.sub_rec_type <> 203
and (s.field12 = 1 or b.rec_type not in (20,30))';
OPEN cur_call_events FOR v_sql_query;
LOOP
g_tab_call_events.DELETE;
-- Execute immediate v_sql_query bulk collect into g_tab_call_events;
FETCH cur_call_events BULK COLLECT
INTO g_tab_call_events limit 5000;
EXIT WHEN g_tab_call_events.COUNT = 0;
BEGIN
SAVEPOINT Block_Begin;
process_records(p_file_name,
g_tab_call_events);
EXCEPTION
WHEN Severe_Error THEN
Write_error('S');
ROLLBACK TO Block_Begin;
WHEN Warning THEN
Write_error('W');
WHEN NO_DATA_FOUND THEN
Write_error('S');
ROLLBACK TO Block_Begin;
END;
END LOOP;And the above module is behaving strangely.
With almost 150K or more rows in BCI_Table & SU_Table each and less than 10 rows in EXCH_Table, the application takes more than 100 minutes to complete the process.
When we checked the session activity, it is showing the same query for a very long time.
Where as files with 100K or less rows are getting processed in a minute.
And the performance for 150K+ rows is inconsistent, that when we isolate the package and run it directly calling from oracle, it is getting executed in less than 4 minutes. Whereas it takes 100+ minutes from Pro*C.
The execution plan for the above query is given below
Object Owner Object Name Cost Cardinality Bytes CPU cost IO cost
SELECT STATEMENT, GOAL = HINT: FIRST_ROWS 494 2497 494406 143334576 483
TABLE ACCESS BY INDEX ROWID SCHEMA1 FILENAME_SU_USED 4 1 21 30610 4
INDEX RANGE SCAN SCHEMA1 FILENAME_3 3 1 21764 3
SORT AGGREGATE 1 13
INDEX RANGE SCAN SCHEMA1 FILENAME_5 3 1 13 22064 3
SORT AGGREGATE 1 7
TABLE ACCESS BY INDEX ROWID SCHEMA1 FILENAME_SU_USED 4 1 7 30706 4
INDEX RANGE SCAN SCHEMA1 FILENAME_3 3 1 21764 3
CONCATENATION
HASH JOIN 355 2496 1307904 103068617 347
TABLE ACCESS FULL SCHEMA1 FILENAME_EXCH_USED 3 2 26 35987 3
HASH JOIN 352 2496 813696 96532618 344
VIEW SYS VW_NSO_1 4 20 880 12549326 3
HASH UNIQUE 4 20 220 12549326 3
TABLE ACCESS FULL SCHEMA2 IOT_SERVICE_MATRIX 3 20 220 45207 3
HASH JOIN 347 15850 2234850 76145180 341
TABLE ACCESS FULL SCHEMA1 FILENAME_SU_USED 130 16584 1111128 33625872 127
TABLE ACCESS FULL SCHEMA1 FILENAME_BCI_USED 217 23757 1758018 31405896 214
NESTED LOOPS 139 1 198 40265959 136
NESTED LOOPS 135 1 154 27716633 133
NESTED LOOPS 132 1 141 27680646 130
TABLE ACCESS FULL SCHEMA1 FILENAME_SU_USED 129 1 67 27655992 127
TABLE ACCESS BY INDEX ROWID SCHEMA1 FILENAME_BCI_USED 3 1 74 24654 3
INDEX RANGE SCAN SCHEMA1 FILENAME_1 2 1 15493 2
TABLE ACCESS FULL SCHEMA1 FILENAME_EXCH_USED 3 1 13 35987 3
VIEW SYS VW_NSO_1 4 1 44 12549326 3
SORT UNIQUE 4 20 220 12549326 3
TABLE ACCESS FULL SCHEMA2 IOT_SERVICE_MATRIX 3 20 220 45207 3Regards
Sajid
Edited by: user12039545 on Jul 11, 2010 12:05 AM
Edited by: user12039545 on Jul 11, 2010 12:15 AM
Edited by: user12039545 on Jul 11, 2010 12:32 AM
Edited by: user12039545 on Jul 11, 2010 12:34 AM
Edited by: user12039545 on Jul 11, 2010 12:37 AM -
DOI - I_OI_SPREADSHEET, poor performance when reading more than 9999 record
Hi,
Please read this message in the [ABAP Performance and Tuning|DOI - I_OI_SPREADSHEET, poor performance when reading more than 9999 record; section and see if you have any advise.
Best Regards,
MarjoHi,
I met this issue when I tried to write vaule to massive fields of excel range.
And I solve this issue by using CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT.
So, I think you may fix it in the same way.
1. Select range in by the I_OI_SPREADSHEET
2. Call method I_OI_DOCUMENT_PROXY->COPY_SELECTION
3. Call method CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT
Cheers, -
URL show password when calling a new form
Forms 10.1.2.0.2
Java 6.22
Windows XP
FireFox 4.0 and IE 8.0
Hi. When calling another form from within an existing form the new form shows the URL I'm calling, but also includes the parameters I'm passing which happen to include my username and password. Like this:
http://9.35.32.205:7777/forms/frmservlet?pageTitle=Dropper%20E/M&config=TTMSMENU&form=dropper_em&userid=MYUSER/MYPASS@SPARC20
{code)
Is there anyway to suppress the display of the URL or the parameters?
Any help would be greatly appreciated.You said:
...When calling another form from within an existing form... Are you calling another form from an already open form using WEB.SHOW? If so, why? There are probably more reasons why you should not do this than the number of reasons to do this. Most importantly is that by opening a new browser to launch another Forms instance, you increase the resource usage on the client, thereby degrading performance.
Why not use CALL_FORM, OPEN_FORM, or NEW_FORM? With any of these, the next form to open will display in the same browser and no login will be required since the user has already logged in at the first form. If the goal is to achieve multiple instances of the same "first" form, well for security sake, I would recommend the user log in manually each time anyway.
Maybe you are looking for
-
How can I "share" or "move" iPhoto content between two acounts on PowerBook
I share my PowerBook with my wife and we both have separate accounts. Problem is that all iPhoto content and iTunes content is on "my" account and she is having to switch from her account to mine in order to utilize content. I rarely use both applica
-
HP Color LaserJet 2605n main circuit
Hello. I recently bought an HP Color LaserJet 2605nd and was very satisfied for a short time. Then it failed. A repair company diagnosed main circuit board failure and that no replacement is possible. I am convinced that there will be secondhand sour
-
Im going to hong kong do i need an adaptor
As it says above Im going to HK and bringing my 3 year old powerbook. Do I need an adapter to plug my PB into an outlet. It appears it will take the voltage (220) per specs. I have a 0 - 1875 converter but it says not to use it with computers. Any ad
-
How to disable frm messages in oracle forms
Hi, I am getting a form error, FRM-41830:List of values contains no entries. whereas I dont want this message to be displayed instead i want a user specified msg like "No entries for specific location!".. I have even tried using, :system.message_leve
-
Is it possible to use the drag and drop APIs in applets? thanks jim