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'. |
¿Es un reporte?
¿Si solo ejecutas la pantalla de seleccion porque mejor no usas la instruccion submit report? |
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é....
|
Buenas!!
Cómo has generado el código del batch input? Lo has realizado con la sm35? |
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. |
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 |
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 |
merci
:D 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!;) |
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. |
Husos Horarios son GMT. La hora en este momento es 13:20:44. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web