Puede darse el caso que, tras
añadir nuevos SWCV a un producto, no se vea reflejado en el ESR. Por ejemplo,
al definir un Application Component dentro de un Process Integration Scenario,
el SWCV no aparezca en el cuadro de Associated Software Coponent Versions del
producto seleccionado.
Tykall's blog
SAP, ABAP, XI, PI, Netweaver,...
viernes, enero 04, 2013
martes, agosto 28, 2012
Acceder al contenido de cualquier tabla remota
El siguiente programa muestra el contenido de cualquier tabla que se encuentre en un sistema remoto (y cuya estructura sea conocida para el sistema actual). Esto es útil si se desea hacer una copia de los datos de una tabla de producción en el entorno de desarrollo, por ejemplo.
Como requisito, es necesario tener definida en el sistema local la conexión a la BD del sistema remoto. Esto se hace a través de la transacción DBACOCKPIT. Una vez configurada y probada, podemos probar el siguiente código:
Como requisito, es necesario tener definida en el sistema local la conexión a la BD del sistema remoto. Esto se hace a través de la transacción DBACOCKPIT. Una vez configurada y probada, podemos probar el siguiente código:
Etiquetas:
ABAP,
ADBC,
DBACOCKPIT,
SQL
viernes, agosto 24, 2012
Devolver mensajes de error estándar de proxies
Cuando se definen interfaces con Fault Message Type, para rellenar la estructura estándar cuando se han producido errores existe el siguiente método:
data: standard_data type zpi_exchange_fault_data,
detail_data type zpi_exchange_log_data,
ls_return type bapiret2.
data: standard_data type zpi_exchange_fault_data,
detail_data type zpi_exchange_log_data,
ls_return type bapiret2.
miércoles, junio 27, 2012
XML en CDATA
Es común encontrarse con interfaces que se comunican
mediante mensajes XML en un campo de texto. Esto suele complicar la definición
del escenario, requiriendo de mapeos externos mediante JAVA o XSLT.
A continuación muestro una propuesta, que considero sencilla
desde mi punto de vista, para abordar este tipo de escenarios.
Partimos del siguiente mensaje de petición:
<?xml version="1.0" encoding="UTF-8"?>
<ns1:ObtenerDatos
xmlns:ns1="http://ejemplo.es/appnetws">
<ns1:sToken>
<![CDATA[
<?xml version="1.0"
encoding="UTF-8"?>
<TOKEN>
<AppName>APPNAME</AppName>
<AppToken>APPTOKEN</AppToken>
</TOKEN>
]]>
</ns1:sToken>
</ns1:ObtenerDatos>
Etiquetas:
CDATA,
SOAP,
SOAPaction,
XSLT
jueves, junio 21, 2012
Incluir SOAPaction en mensaje
Una manera de indicar la acción SOAP del mensaje es mediante la siguiente UDF:
DynamicConfiguration conf = (DynamicConfiguration) container
.getTransformationParameters( )
.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create(
"http:/"+"/sap.com/xi/XI/System/SOAP",
"THeaderSOAPACTION");
conf.put(key, action[0]);
result.addValue(action[0]);
Dicha UDF espera como parámetro de entrada una string llamada "action" que contendrá el valor de la acción que corresponda. El mapeo deberá ir directo contra la cabecera del mensaje destino.
DynamicConfiguration conf = (DynamicConfiguration) container
.getTransformationParameters( )
.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create(
"http:/"+"/sap.com/xi/XI/System/SOAP",
"THeaderSOAPACTION");
conf.put(key, action[0]);
result.addValue(action[0]);
Dicha UDF espera como parámetro de entrada una string llamada "action" que contendrá el valor de la acción que corresponda. El mapeo deberá ir directo contra la cabecera del mensaje destino.
Etiquetas:
JAVA MAPPING,
SOAP,
SOAPaction,
XI
miércoles, mayo 09, 2012
SOAP: call failed: java.io.IOException: invalid content type for SOAP: TEXT/HTML; HTTP 401 Unauthorized
Recientemente cambiaron el entorno de desarrollo de host. A raíz de esto empecé a tener problemas con la conexión entre PI y el sistema ECC actualizado, a pesar de que los passwords y usuarios permanecían iguales. Tras reiniciar PI y realizar varios intentos de conexión, comprobaba que, aunque me aseguraba de que el password estaba bien introducido, veía que el usuario se terminaba bloqueando. Al final, le asigné un password nuevo al usuario en el ECC y conseguí que se conectara correctamente.
Según me comentan, el motivo puede venir por el SAP Secure Store, ya que ahí se guarda algún tipo de relación entre USUARIO - CLAVE - SISTEMA por lo que, aunque el usuario y la clave permanezcan igual, al haber cambiado el ID del sistema, existe una incoherencia en el acceso.
Según me comentan, el motivo puede venir por el SAP Secure Store, ya que ahí se guarda algún tipo de relación entre USUARIO - CLAVE - SISTEMA por lo que, aunque el usuario y la clave permanezcan igual, al haber cambiado el ID del sistema, existe una incoherencia en el acceso.
miércoles, abril 25, 2012
Redondeos en ABAP
Este es un ejemplo de cómo se comportan los distintos tipos de redondeo en ABAP:
imp_round = round( val = imp_total
dec = 2
mode = cl_abap_math=>round_up ).
*--------------------------------------------------------------------*
* Ejemplo: 438,7648
*--------------------------------------------------------------------*
* ROUND_HALF_UP 438,7600
* ROUND_HALF_DOWN 438,7600
* ROUND_HALF_EVEN 438,7600
* ROUND_UP 438,7700 <-- Es lo mismo
* ROUND_DOWN 438,7600
* ROUND_CEILING 438,7700 <-- No es igual
* ROUND_FLOOR 438,7600*--------------------------------------------------------------------*
* Ejemplo: 438,7648-
*--------------------------------------------------------------------* * ROUND_HALF_UP 438,7600-
* ROUND_HALF_DOWN 438,7600-
* ROUND_HALF_EVEN 438,7600-
* ROUND_UP 438,7700- <-- Es lo mismo
* ROUND_DOWN 438,7600-
* ROUND_CEILING 438,7600- <-- No es igual (tira hacia positivo)
* ROUND_FLOOR 438,7700-
*--------------------------------------------------------------------*
imp_round = round( val = imp_total
dec = 2
mode = cl_abap_math=>round_up ).
*--------------------------------------------------------------------*
* Ejemplo: 438,7648
*--------------------------------------------------------------------*
* ROUND_HALF_UP 438,7600
* ROUND_HALF_DOWN 438,7600
* ROUND_HALF_EVEN 438,7600
* ROUND_UP 438,7700 <-- Es lo mismo
* ROUND_DOWN 438,7600
* ROUND_CEILING 438,7700 <-- No es igual
* ROUND_FLOOR 438,7600*--------------------------------------------------------------------*
* Ejemplo: 438,7648-
*--------------------------------------------------------------------* * ROUND_HALF_UP 438,7600-
* ROUND_HALF_DOWN 438,7600-
* ROUND_HALF_EVEN 438,7600-
* ROUND_UP 438,7700- <-- Es lo mismo
* ROUND_DOWN 438,7600-
* ROUND_CEILING 438,7600- <-- No es igual (tira hacia positivo)
* ROUND_FLOOR 438,7700-
*--------------------------------------------------------------------*
Suscribirse a:
Entradas (Atom)