Actualmente me encuentro implementando un desarrollo custom. Este desarrollo hace una llamada al sitio web de ARBA (Agencia de Recaudación de Bs As).
La llamada tiene ciertas especificaciones definidas por ARBA:
el programa debe realizar un POST,
de un FORM multipart compuesto por: user, password, file con todos los datos.
Se envía un archivo txt con determinados campos y ARBA responde con un file xml que contiene OK o KO y mensajes de errores en el 2do caso.
Esto lo hacemos con un web service (segun los tecnicos no web serv porque ARBA no tiene la web app y hay que hacer la llamada emulando un data entry que ingresa al sitio web).
Para hacer la llamada se configuró un user RFC x cuestiones de políticas del cliente.
Mi diseño (más allá del programa custom que hace todo y arma el file, se conecta con ARBA y se lo manda) consiste en que esta llamada debe ser disparada automáticamente a través del customizing standard de Output Message Determination, para un tipo de mensaje de Shiping (V2), con un procedimiento “x” y una secuencia de acceso 0004 (SlsOrg/DocType). El transmission medium seleccioné el “8” special function porque imaginé que de esa forma, cuando hago la P.G.I. del O.D. se dispara automáticamente y el programa custom dentro del mensaje hace todo.
La respuesta esta soportada por un desarrollo de monitor que capta todos los datos q manda ARBA Y te los muestra y te permite ciertas otras funcionalidades.
EL PROBLEMA
Es que este mensaje se dispara automáticamente, pero.con.mensaje de warning. Y efectivamente cuando lo salvo, me da el clásico mensaje de error de output message, y borra la linea de este tipo de mensaje del HEADER del O.D.
PREGUNTO
saben como se debería configurar el tipo de mensaje para llamar a este programa?
haría falta meter el user RFC como destinatario dentro de la config del tipo de mensaje?
Mi objetivo es que el usuario pueda ver que efectivamente se disparó el mensaje.
Todo lo demás lo maneja desde el monitor desarrollado.
Desde ya, muchas gracias y saludos!
N.
Lo que necesitas es que cuando se cree el mensaje, se haga una llamada a un programa/función/X. ¿Es así?
En la transacción NACE configuras los tipos de mensaje, tablas de acceso, secuencia de acceso, salida del mensaje. Lo que comentas nunca lo he probado así que no sé si funcionará o no. Normalmente lo he utilizado para imprimir documentos (formulario sapscript, smartfors o adobe forms) o para enviar mensajes ALE a otro sistema.
Cuando configuras el medio de envío (transmission medium) creo que el campo formulario NO es obligatorio. Puedes probar que ese tipo de mensaje haga la llamada a la rutina del programa que quieras. Y ahí dentro hacer lo que tengas que hacer. Algo del siguiente estilo:
FORM entry USING return_code us_screen.
PERFORM inicializacion.
CLEAR retcode.
xscreen = us_screen.
PERFORM processing USING us_screen.
CASE retcode.
WHEN 0.
return_code = 0.
WHEN 3.
return_code = 3.
WHEN OTHERS.
return_code = 1.
ENDCASE.
*
ENDFORM. "ENTRY
Claro, debes acordarte de devolver el código de retorno (0 quiere decir que todo OK, diferente de 0 quiere decir que ha habido algún problema).
Luego creo que habría que configurar los registros de condición para ese tipo de mensaje. Dices que utilizas la secuencia de acceso 0004, por lo que para la organización de ventas y clase de documento que sean deberás tener un registro de condición con el medio igual a 8 (función especial) y modalidad de envío 4 (para que se envíe inmediatamente).
Sobre si haría falta meter el user RFC. Yo creo que no hace falta. Es en la configuración de la RFC donde se especifica el destino, el usuario y la contraseña.
A ver si tengo un poco de tiempo y puedo probar todo lo que he dicho. Porque, como decía, nunca había hecho algo así.
Estimados todos,
Voy leywndo vuestros comentarios. Les agradezco mucho vuestra colaboración. Pido hasta el fin de semana para actualizar los datos consultados en las primeras respuestas. Estoy tapado de trabajo. Si llego antes, con mucho gusto contestaré a la brevedad posible.
Roberto, entendiste bien la necesidad. Hago la post good issue, y se dispara un output message “zcow” con transmission medium 8, 4 immediate, lenguaje EN o el que sea. El programa lo cargo en el segundo grupo del control data, el qur no tiene sapscript/smart form. Cargo programa xxxx, y form ENTRY. La tabla de access seq 0004 se completa con el cod de sales org y deliv type, y como vos decis.
En cuanto pueda envio más datos a todos.
Dwsde ya agreadezco nuevamente vuestra colaboración.
Saludos.
N.
“Mail Title & Texts” y Partner functions, no lo paso porque el primero son dos renglones para los idiomas y el segundo no configuré nada, ya que entiendo que no tiene que llamar a un partner function.
Selecciono el tipo de mensaje en el HEADER del O.D. en la tx: VL02N:
me tira un mensaje de WARNING:
…
Output ZCOW for medium 8, partner function is not defined
Message no. VN025
Diagnosis
You have selected a combination of output and partner function which has not been defined.
Procedure
Make sure your entries are correct.
This is a warning message. You can proceed by pressing ENTER.
To prevent the warning message from appearing again, assign the required partner function to your output type in table TNAPN.
Execute function
…
Pero me deja grabar.
Ejecuto la P.G.I.
Salgo de la tx, y cuando vuelvo a entrar, me tira el tipico mensaje:
Empecemos por el customizing: Alguno sabe indicarme si el programa Z y la form routine ENTRY los tengo que meter en algùn grupo en particular, dentro del customizing? o puede ir en cualquiera de los grupos?
Por grupo me refiero a:
Este grupo en los details?
Cualquiera o uno especifico de estos grupos en Processing routines?