PDA

Ver la Versión Completa : Call transaction no me guarda mensaje de error


chisto
05/11/15, 15:37:05
Hola

Estoy realizando un Call transaction 'KO88 ' el cual le estoy dando todos los parámetros correctos pero no me esta trayendo los mensajes de error. Como se que hay un mensaje de error? y es porque le pongo al Upmode 'N' para poder visualizarlo y además el Sy-subrc me trae '1001' lo cual es error en el proceso. No entiendo por qué mi tabla de mensaje no los trae. He leído que los Call transaction no son buenos trayendo los mensajes de error, pero no me había ocurrido antes. También he leído que es mejor usar una BAPI, alguna que sugieran para usar la KO88 ??

Muchas gracias.

joau_fedipe
11/11/15, 19:06:29
Hola Chisto,
1. para ir paso a paso visualizando la ejecución el modo debe ser igual a 'A'.
2. el call transaction que haces en el programa debería tener más o menos esta estructura:

DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: L_MSTRING(480).

REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE CTUMODE
UPDATE CUPDATE
MESSAGES INTO MESSTAB.
IF SY-SUBRC NE 0.

LOOP AT MESSTAB.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ELSE.
WRITE: / MESSTAB.
ENDIF.
ENDLOOP.

ENDIF.

en la tabla interna MESSTAB debe registrarse todos los mensajes de error.

Espero que lo enviado te ayude en algo.

Saludos.