Skip to Content
0
Former Member
Mar 21, 2013 at 07:13 AM

Message_TYPE_X in VA01 when run via BDC Call Transaction

209 Views

Dear Experts,

User is getting an error message while they RUN their recording which they recorded for VA01 header text update in Non Batch mode.

They get an error called "Message_Type_X". This is coming after they upgraded ECC 6.0 to EHP4 to EHP6.

Earlier user was not getting any issue.

Now user have applied the latest patch also for their GUI but still get the same issue.

Can any one please suggest some solution?

Note -Procedure for updating text will remain same (via BDC only). It cannot be changed.I mean alternate method like BAPI etc can not be used.

Some of ST22 texts are as follows

Error analysis

Short text of error message:

Error number -2 receiving the results of an OLE call

Long text of error message:

Diagnosis

The system could not assign the results of an OLE Automation call

to the correct program variables.

Meanings of the error number " "

o -1: The event memory of the automation queue is destroyed -

internal error

o 1: There is no valid link to the program variables

(PcbInvalidId)

o 2: The link cannot be expanded (PcbInternal)

o 3: The link points to an internal table that has been cleared

(PcbItabFreed)

o 4: The link points to a local variable whose stack frame has

been released (PcbStackFreed).

Note: Errors 3 and 4 indicate a programming error. When you program

with controls, you must ensure that the return value (for example,

the selected node of a tree) is not written into a local variable.

For performance reasons, control calls are not necessarily sent to

the front end imnmediately, but are placed in a queue instead. The

queue may be sent to the frontend at a point where the local

variable no longer exists because, for example, the call occurred

in a subroutine that had ended by the time the queue was flushed.

Avoid control calls with local importing parameters.

System Response

The system assumes that correct processing is no longer possible

without the return value. To be on the safe side, it stops

processing.

Procedure

Depending on the kind of error, the application program may need

correcting (error number 3 or 4) or a system error occurred while

processing the automation queue (SAP Automation Controller).

How to correct the error

Probably the only way to eliminate the error is to correct the program.

-

If the error occures in a non-modified SAP program, you may be able to

find an interim solution in an SAP Note.

If you have access to SAP Notes, carry out a search with the following

keywords:

"MESSAGE_TYPE_X" " "

"SAPLOLEA" or "LOLEAU10"

"AC_FLUSH_CALL_INTERNAL"

If you cannot solve the problem yourself and want to send an error

notification to SAP, include the following information:

1. The description of the current problem (short dump)

To save the description, choose "System->List->Save->Local File

(Unconverted)".

2. Corresponding system log

Display the system log by calling transaction SM21.

Restrict the time interval to 10 minutes before and five minutes

after the short dump. Then choose "System->List->Save->Local File

(Unconverted)".

3. If the problem occurs in a problem of your own or a modified SAP

program: The source code of the program

In the editor, choose "Utilities->More

Utilities->Upload/Download->Download".

4. Details about the conditions under which the error occurred or which

actions and input led to the error.

SAP Release..... 731

SAP Basis Level. 0004

SAP kernel....... 721

Patch level. 100

Information on where terminated

Termination occurred in the ABAP program "SAPLOLEA" - in

"AC_FLUSH_CALL_INTERNAL".

The main program was "SAPMV45A ".

In the source code you have the termination point in line 526

of the (Include) program "LOLEAU10".

Error occurred during batch input processing

Source Code Extract

Line SourceCde

496 IF ref->absolute_name = '\TYPE-POOL=OLE2\TYPE=OLE2_OBJECT' OR

497 ref->absolute_name = '\TYPE-POOL=CNTL\TYPE=CNTL_HANDLE' OR

498 ref->absolute_name = '\TYPE=OBJ_RECORD'.

499 IS_OLE_OBJECT = 'X'.

500 MOVE <D> TO OBJECT.

501 ELSE.

502 CLEAR: IS_OLE_OBJECT.

503 ENDIF.

504 *- check the header

505 IF NOT IS_OLE_OBJECT IS INITIAL.

506 *- its a ole2_object, so restore clsid value for later search in type-

507 *- library. This is neccessary to support old automation server which

508 *- do not support a standard language

509

510 * special UNICODE handling

511 ASSIGN vars-value TO <AC_X1> casting.

512 ASSIGN TEMP_OBJECT TO <AC_X2> casting.

513 MOVE <AC_X1> TO <AC_X2>.

514 MOVE OBJECT-CLSID TO TEMP_OBJECT-CLSID.

515

516 SYSTEM-CALL SOLID POINTER

517 MOVE RESULT_VARS_WA-POINTER FROM TEMP_OBJECT.

518 ELSE.

519 if VARS-ELEMENT = '_SRESULT'.

520 * If there is a long (>255) return value

521 read table svars into SVARS_RECORD index vars-value.

522 if sy-subrc = 0.

523 SYSTEM-CALL SOLID POINTER

524 MOVE RESULT_VARS_WA-POINTER FROM SVARS_RECORD-VALUE.

525 else.

>>>>> MESSAGE X373 WITH '-2'. "=================> Error

527 endif.

528 else.

529 SYSTEM-CALL SOLID POINTER

530 MOVE RESULT_VARS_WA-POINTER FROM VARS-VALUE.

531 endif.

532 ENDIF.

533 IF SY-SUBRC <> 0.

534 MESSAGE X373 WITH SY-SUBRC."==========================> Error

535 ENDIF.

536 ENDIF.

537 ELSE.

538 MESSAGE X373 WITH '-1'. "==============================> Error

539 ENDIF.

540 ENDLOOP.

541

542 * clear tables and free solid pointers

543 PERFORM RESET_BUFFER.

544

545 * return sy-subrc to calling function