Archivo

Archivo para Marzo, 2009

300 – Un sistema de sorteo en AS3

Jueves, 19 de Marzo de 2009 Nessy Sin comentarios

Comparto la experiencia que me toco al realizar una pequeña aplicación que sortea números ganadores.

La consigna: mostrar números aleatorios (300) que no se repitan en ninguna caso y que los muestres con un efecto de suspenso parecido a los números de los paneles de los aeropuertos.

La dificultad: El panel tenia que tener 7 dígitos en el cual giraban los números consecutivamente del 1 al 10 al mismo tiempo, esto provocaba un gran consumo de procesador lo cual lo hacia inutilizable en una computadora con bajo recursos.

Mas dificultad: La computadora donde tenia que correr era una Notebook con un procesador de 1.7 Ghz y memoria de 512 Mb.

Intentos: Mi primera prueba para efectuar el "Flip" de los números fue de utilizar el eje Z introducido en el nuevo Player del flash. Este método resulto tedioso para posicionar correctamente los números en la pantalla a lo cual decidí usar Papervision3D. Esa tecnología me resulto efectiva para mostrar en pantalla los números pero fue fatal para el procesador de computadoras de bajo recursos.

La solución: engañar el ojo humano simulando el 3D con un efecto “Blur” en cada numero cuando van bajando (es un viejo truco pero sigue siendo efectivo). Esto me permitio girar los numero a alta velocidad y a agregarle sonido para cada numero.

Foto del sistema de sorteo

Categories: Actionscript Tags:

Consumir Webservice con SAP / ABAP

Miércoles, 18 de Marzo de 2009 Nessy 6 comentarios

Un ejemplo simple de como consumir Webservice (hecho en .NET) con SAP / ABAP, ya que los ejemplos encontrados en la web en general no me resultaron muy didáctico.

El Webservice a titulo de ejemplo tiene los sigientes parametros: title y details.

REPORT zwebconsume.

DATA: http_client TYPE REF TO if_http_client .

DATA: w_string TYPE string ,
w_result
TYPE string ,
r_str
TYPE string .

DATA: result_tab TYPE TABLE OF string.

START-OF-SELECTION .
CLEAR w_string .
w_string = 'http://urlhost/Logs/main.asmx/SetLog'.

CALL METHOD cl_http_client=>create_by_url
EXPORTING
url                = w_string
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found =
1
plugin_not_active  =
2
internal_error     =
3
OTHERS = 4.

CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME =
'~request_method'
VALUE = 'POST'.

CALL METHOD http_client->REQUEST->SET_FORM_FIELD
EXPORTING
NAME =
'title'
VALUE = 'Mail sistema'.

CALL METHOD http_client->REQUEST->SET_FORM_FIELD
EXPORTING
NAME =
'details'
VALUE = 'Funcion 1234'.

CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure =
1
http_invalid_state         =
2.

CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure =
1
http_invalid_state         =
2
http_processing_failed     =
3.
CLEAR w_result .
w_result = http_client->response->get_cdata( ).

REFRESH result_tab .
SPLIT w_result AT cl_abap_char_utilities=>cr_lf INTO TABLE
result_tab .

READ TABLE result_tab INTO r_str INDEX 2.

Lo que hay que tener en cuenta es que el envio de parametros se efectua con REQUEST->SET_FORM_FIELD y no con REQUEST->SET_DATA ya que este es para enviar todo el encabezado.

Tambien la invocación siguiente es para pasar los parametros por el metodo POST:

CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME =
'~request_method'
VALUE = 'POST'.