Has probado con un "COMMIT WORK." o con la función BAPI_TRANSACTION_COMMIT despues de la llamada a la transacción?
Apuntar que deberías comprobar los mensajes de vuelta de la transacción, para controlar posibles errores, aunque con esa tabla y todo, algun batch input te la puede jugar y no devolver error cuando si lo hubo.
La instrucción te quedaría así:
DATA: it_messages TYPE STANDARD TABLE OF bdcmsgcoll.
call transaction 'ZNG8' using i_bdc_data
MESSAGES INTO it_messages
mode 'A'
update 'S'.
y para recuperar el texto explicativo de cada mensaje, ya que sino pueden sonar a chino, sería de la siguiente manera:
data: lw_msgid LIKE sy-msgid,
lw_msgno LIKE sy-msgno,
lw_msgv1 LIKE sy-msgv1,
lw_msgv2 LIKE sy-msgv2,
lw_msgv3 LIKE sy-msgv3,
lw_msgv4 LIKE sy-msgv4.
LOOP AT it_messages INTO gw_messages.
MOVE-CORRESPONDING gw_messages TO gw_mensajes.
lw_msgid = gw_mensajes-msgid.
lw_msgno = gw_mensajes-msgnr.
lw_msgv1 = gw_mensajes-msgv1.
lw_msgv2 = gw_mensajes-msgv2.
lw_msgv3 = gw_mensajes-msgv3.
lw_msgv4 = gw_mensajes-msgv4.
CALL FUNCTION '/SAPTRX/GET_MESSAGE_TEXT'
EXPORTING
msgid = lw_msgid
msgno = lw_msgno
msgv1 = lw_msgv1
msgv2 = lw_msgv2
msgv3 = lw_msgv3
msgv4 = lw_msgv4
IMPORTING
messagetext = lw_respon
EXCEPTIONS
no_message_retrieved = 1
OTHERS = 2.
MOVE: lw_respon TO gw_mensajes-msgv1.
APPEND gw_mensajes TO it_mensajes.
ENDLOOP.
Saludos. Espero te sirva
Úlima edición por jarabas fecha: 25/01/11 a las 09:40:17.
|