Skip to Content
0
Former Member
Oct 11, 2006 at 09:04 PM

Performance issue with BUPA_ADDRESS_ADD

85 Views

Has anyone ever had a performance problem with calling FM BUPA_ADDRESS_ADD?

We have a custom program that calls this FM and then executes a COMMIT AND WAIT. The transaction time-outs in the foreground. The time-out limit is set at 30 minutes. Below is the first page of the ABAP dump.

Any insights will be greatly appreciated. Thanks.

Runtime errors         TIME_OUT
       Occurred on     09/20/2006 at   10:35:04
------------------------------------------------------------------------------------------

Time limit exceeded.

--------------
What happened?
--------------

The program "SAPLBUPA_MWX_BDOC_OUTBOUND" has exceeded the maximum permitted
 runtime without
interruption, and has therefore been terminated.


----------------
What can you do?
----------------

Print out the error message (using the "Print" function)
and make a note of the actions and input that caused the
error.

To resolve the problem, contact your SAP system administrator.
You can use transaction ST22 (ABAP Dump Analysis) to view and administer
 termination messages, especially those beyond their normal deletion
date.

is especially useful if you want to keep a particular message.

--------------
Error analysis
--------------

After a certain length of time, the program is terminated. In the case
of a work area, this means that
- endless loops (DO, WHILE, ...),
- database accesses producing an excessively large result set,
- database accesses without a suitable index (full table scan)
do not block the processing for too long.

The system profile "rdisp/max_wprun_time" contains the maximum runtime of a
 program. The
current setting is 600 seconds. Once this time limit has been exceeded,
the system tries to terminate any SQL statements that are currently
being executed and tells the ABAP processor to terminate the current
program. Then it waits for a maximum of 60 seconds. If the program is
still active, the work process is restarted.

successfully processed, the system gives it another 600 seconds.
Hence the maximum runtime of a program is at least twice the value of
the system profile parameter "rdisp/max_wprun_time".



------------------------
How to correct the error
------------------------

You should usually execute long-running programs as batch jobs.
If this is not possible, increase the system profile parameter
 "rdisp/max_wprun_time".

Depending on the cause of the error, you may have to take one of the
following measures:
- Endless loop: Correct program;
- Dataset resulting from database access is too large:
  Instead of "SELECT * ... ENDSELECT", use "SELECT * INTO internal table
  (for example);
- Database has an unsuitable index: Check index generation.

You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
use the following search criteria:

------------------------------------------------------------------------
"TIME_OUT" C
"SAPLBUPA_MWX_BDOC_OUTBOUND" or "LBUPA_MWX_BDOC_OUTBOUNDF30"
"GET_ADDRESS_STRUCT"
------------------------------------------------------------------------
----------------------------------------------------------------
If you cannot solve the problem yourself, please send the
following documents to SAP:

1. A hard copy print describing the problem.
   To obtain this, select the "Print" function on the current screen.
-

2. A suitable hardcopy prinout of the system log.
   To obtain this, call the system log with Transaction SM21
   and select the "Print" function to print out the relevant
   part.

3. If the programs are your own programs or modified SAP programs,
   supply the source code.
   To do this, you can either use the "PRINT" command in the editor or
   print the programs using the report RSINCL00.

4. Details regarding the conditions under which the error occurred
   or which actions and input led to the error.


------------------
System environment
------------------

SAP Release.............. "620"

Application server....... "tlsrv100"
Network address.......... "153.7.7.100"
Operating system......... "AIX"
Release.................. "5.2"
Hardware type............ "0009ACDF4C00"
Character length......... 8 Bits
Pointer length........... 64 Bits
Work process number...... 0
Short dump setting....... "full"

Database server.......... "tlsrv123"
Database type............ "DB6"
Database name............ "EQA"
Database owner........... "SAPR3"

Character set............ "en_US.ISO8859-1"

SAP kernel............... "640"
Created on............... "Jan 15 2006 20:35:42"
Created in............... "AIX 1 5 00538A4A4C00"
Database version......... "DB6_81 "

Patch level.............. "109"
Patch text............... " "

Supported environment....
Database................. "DB6 09.*, DB6 08.*"
SAP database version..... "640"
Operating system......... "AIX 1 5, AIX 2 5, AIX 3 5"

--------------------
User, transaction...
--------------------

Client.............. 400
User................ "WUH006"
Language key........ "E"
Transaction......... "ZPTP_ADDR_USER "
Program............. "SAPLBUPA_MWX_BDOC_OUTBOUND"
Screen.............. "ZPTP_ADDR_USER 0100"
Screen line......... 30

-------------------------------
Information on where terminated
-------------------------------

The termination occurred in the ABAP program "SAPLBUPA_MWX_BDOC_OUTBOUND" in
 "GET_ADDRESS_STRUCT".
The main program was "ZPTP_ADDR_USER ".

The termination occurred in line 932 of the source code of the (Include)
 program "LBUPA_MWX_BDOC_OUTBOUNDF30"
of the source code of program "LBUPA_MWX_BDOC_OUTBOUNDF30" (when calling the
 editor 9320).

-------------------
Source code extract
-------------------

009020       ENDIF.
009030
009040   *   Adressverwendung übernehmen
009050       ls_addr-data-addr_usage-addr_usages = lt_bupa_addressusage.
009060
009070   *   Nur wenn mindestens ein Datenteil gefüllt ist, gibt es einen
009080   *   Eintrag in der Struktur.
009090       IF NOT ls_addr-data-addr_usage-addr_usages IS INITIAL OR
009100          NOT lv_remark_changed         IS INITIAL OR
009110          NOT lv_version_changed        IS INITIAL OR
009120          NOT ls_addr-data-postal-datax IS INITIAL OR
009130          NOT lv_communication_changed  IS INITIAL OR
009140          NOT lv_user_exit_found        IS INITIAL.
009150   *      Clear X-flags for ISO-codes for initial values
009160          IF ls_addr-data-postal-data-countryiso IS INITIAL.
009170            CLEAR ls_addr-data-postal-datax-countryiso.
009180          ENDIF.
009190          IF ls_addr-data-postal-data-languiso IS INITIAL.
009200            CLEAR ls_addr-data-postal-datax-langu_iso.
009210          ENDIF.
009220          IF ls_addr-data-postal-data-po_ctryiso IS INITIAL.
009230            CLEAR ls_addr-data-postal-datax-po_ctryiso.
009240          ENDIF.
009250
009260         APPEND ls_addr TO lt_addr.
009270       ENDIF.
009280     ENDLOOP.
009290
009300     LOOP AT ltab_but020_old INTO ls_but020 WHERE
009310        partner = p_partner.
----->       READ TABLE ltab_but020_new WITH KEY
009330        partner = ls_but020-partner
009340        addrnumber = ls_but020-addrnumber
009350       TRANSPORTING NO FIELDS.
009360       IF sy-subrc <> 0.
009370         CLEAR ls_addr.
009380         ls_addr-task = 'D'.
009390
009400         lv_char32_guid =  ls_but020-address_guid.
009410         ls_addr-data_key-guid = lv_char32_guid.
009420
009430         ls_addr-data-postal-data-standardaddress = ls_but020-xdfadr.
009440         ls_addr-data-postal-data-extaddressnumber = ls_but020-adext.
009450         ls_addr-data-postal-datax-standardaddress = 'X'.
009460         ls_addr-data-postal-datax-extaddressnumber = 'X'.
009470
009480   *     Auf besonderen Wunsch der Mobile-Bridge kennzeichnen wir beim
009490   *     Löschen jetzt auch die Komm.daten
009500         ls_addr-data-communication-phone-current_state = 'X'.
009510         ls_addr-data-communication-fax-current_state = 'X'.