#1
|
|||
|
|||
call transaction con batch
Hola,
estaba haciendo un call transaction con batch previo que va dentro de una función. Veo que va bien al principio, navega a la pantalla y mete los datos pero no ejecuta el f8. A ver si alguien me puede decir la linia que falta en esté código: algo tipo así ,creo: i_bdc_data-fval = '/EE'. Os paso el código, GRACIAS DE ANTEMANO!! *Llenamos la tabla refresh i_bdc_data. i_bdc_data-program = 'ZN140061'. i_bdc_data-dynpro = '1000'. i_bdc_data-dynbegin = 'X'. append i_bdc_data. clear i_bdc_data. i_bdc_data-fnam = 'P_NUDRM'. *obj = P_NUDRM. i_bdc_data-fval = p_nudrm. append i_bdc_data. clear i_bdc_data. i_bdc_data-fnam = 'P_CODOP'. *obj = P_CODOP. i_bdc_data-fval = p_drmcodop. append i_bdc_data. clear i_bdc_data. i_bdc_data-fnam = 'P_SBCOD'. *obj = P_SBCOD. i_bdc_data-fval = p_drmsbcod. append i_bdc_data. clear i_bdc_data. i_bdc_data-fval = '/EE'. append i_bdc_data. clear i_bdc_data. opt-dismode = 'E'. call transaction 'ZNG8' using i_bdc_data mode 'A' update 'S'. |
#2
|
|||
|
|||
¿Es un reporte?
¿Si solo ejecutas la pantalla de seleccion porque mejor no usas la instruccion submit report? |
#3
|
|||
|
|||
call transaction
En el diseño me ha dicho que lo haga con un call transaction. Está dentro de una función,no un report, solo me queda el pequeño detalle que comenté....
|
#4
|
|||
|
|||
Buenas!!
Cómo has generado el código del batch input? Lo has realizado con la sm35? |
#5
|
||||
|
||||
Te falta el OK_CODE; en el ultimo append te falta esto:
i_bdc_data-fnam = 'BDC_OKCODE'. i_bdc_data-fval = '/EE'. append i_bdc_data. clear i_bdc_data. |
#6
|
|||
|
|||
gracias pero..
Gracias compañero
pero este tema del ok_code que comentas ya lo resolví. En efecto ahora navega y hace el ok, pero no se actualizan datos en la base de datos :-( ¿Alguién conoce el motivo? Saludos abaperos |
#7
|
|||
|
|||
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. |
#8
|
|||
|
|||
merci
Hola compañero,
agradezco mucho tu información. Hice la gestión de los mensajes de una forma parecida a la tuya. Aunque de momento solo me puse a mirar los mensajes por debuger. Ahora entiendo que tengo que procesarlos y meterlos en una tabla de LOG, verdad? Saludos abaperos! |
#9
|
|||
|
|||
Deberías mostrar los errores, yo por experiencia digo que los batch son un poco "puñeteros", puede que no te devuelva un E y si haya sucedido un error.
Por cierto con lo que te puse ya te actualiza la base de datos? Saludos. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|