sábado, 28 de abril de 2007

Una forma sencilla de aprender y practicar ABAP es instalar MiniSAP.

MiniSAP es un release 4.6D de SAP totalmente funcional durante 1 mes (ampliable 90 días más) con el que practicar la creación de Reports, ALVs, módulos de función, Module Pool, etc. (No aplicable para desarrollar aplicaciones "de nueva generación", como BSPs, Web Dynpro ABAP, etc.; para ello se debe instalar MiniWAS o SAP NetWeaver SneakPreview ABAP)

MiniSAP es un pequeño BASIS que contiene una completa base de datos sobre agencias de vuelo. Pero también proporciona la posibilidad de crear nuestros objetos de diccionario.

Aunque es una versión reducida de SAP y con un instaler típico de Windows, no son pocas las personas a las que se les presentan multitud de problemas a la hora de instalarlo. En este blog, intentaré ofrecer una guia step-by-step del procedimiento de instalación de MiniSAP, basado en mi experiencia personal, por supuesto, aunque podréis encontrar más información en el CD de MiniSAP (archivo install.htm) y en los foros especializados, como SAP4 o SDN.

Lo primero a tener en cuenta debe ser los requisitos hardware y software necesarios para su instalación:
  • Windows 2000 ó superior
  • Internet Explorer 4.01 o superior
  • Min. 128 MB RAM
  • Min. 256 MB de archivo de paginación
  • Al menos 2.2 GB de espacio libre en el disco duro
    (60 MB para la Base Datos, 1.9 GB SAP, 100 MB SAP Gui + espacio temporal para la instalación)
  • El archivo C:\Windows\system32\drivers\etc\services no debe tener una entrada para el puerto 3600

Si cumplimos con los requisitos mínimos (con los ordenadores actuales no será gran problema) podemos comenzar a utilizar nuestra versión de MiniSAP.

El proceso de instalación es:

Verificar que tenemos un nombre de equipo válido. Para ello, vamos al Panel de control. Un nombre de equipo válido es, por ejemplo, "JAVI".



Vamos a nuestro archivo hosts (
C:\Windows\system32\drivers\etc\hosts) y modificamos la entrada 127.0.0.1 para que se llame como nuestro nombre de equipo.



Ejecutamos el archivo "setup.bat" que se encuentra en el CD KERNEL para comenzar la instalación, primero se instalará la base de datos SQL (Veremos como se van creando los archivos temporales necesarios para la instalación).



Elegimos el directorio destino de MiniSAP. Se recomienda dejar el que aparece por defecto, "C:\MBS". Y pulsar sobre
.



En la siguiente pantalla, escribimos la ruta donde se encuentran los CDs de instalación (No os preocupeis por indicar la misma unidad para los 2 CDs; el programa de instalación nos solicitará el 2º CD cuando sea necesario) y pulsaremos sobre
.



Comenzará el proceso de instalación.



Si queremos ver el log de instalación, pulsaremos sobre
.



Tras una espera razonable, y viendo como se desplaza lentamente la barra de progreso de instalación, el proceso finalizará correctamente.



Pulsaremos sobre
para salir de la instación. Veremos que en el escritorio ha aparecido un nuevo icono y un nuevo grupo de programas en el menú "Inicio".



A continuación, accedemos al registro de Windows para modificar la entrada "
NtfsDisable8dot3NameCreation" de la ruta "HKEY_LOCAL_MACHINE\SYSTEM\CurrentSetControl\FileSystem" (la ruta variará dependiendo de la versión de Windows). Establecemos esa propiedad a "0" (cero).



Reiniciaremos, para que se haga efectivo este cambio en el registro.

Continuaremos con la instalación instalación de SAP GUI (si nuestro equipo no dispone ya de una versión) SAP GUI se encuentra en el directorio "MINIGUI" del CD KERNEL.

En este blog, procederemos a la instalación de la ultima versión de SAP GUI.



Elegimos los componentes que deseamos instalar de SAP GUI.



Un nuevo icono aparecerá en nuestro escritorio, es el SAP Logon
. Arrancamos el SAP GUI (SAP Logon) y añadimos la entrada necesaria para nuestro MiniSAP.

El campo "Servidor Aplicación" debe corresponder con el nombre de nuestro equipo.



Arrancamos "Start SAP MBS" y accedemos al SAP Logon. (Si nos aparece la pantalla del FireWall de Windows, pulsar sobre "Desbloquear").

Entramos con el usuario BCUSER,



Ir a la transacción SE38 y ejecutar el report
S_FLIGHT_MODEL_DATA_GENERATOR para generar las tablas y datos necesarios para poder trabajar.

En la siguiente pantalla de selección, elegir el número de datos que desamos generar.





Procedemos, sin solución de continuidad, a la instalación de la ayuda (en inglés). La ayuda esta disponible en la ruta
D:\HTMLHELP\HELPDATA\EN del CD KERNEL. Copiamos ese directorio a nuestro disco duro y ejecutamos la transacción SR13.

En la pestaña "
HtmlHelpFile" modificamos la ruta por defecto por la de nuestra copia de la carpeta de ayuda. Grabamos los cambios.



Por ultimo, procedemos a registrar nuestra copia de MiniSAP y obtener la ampliación de 90 días. Para este paso, desde el simbolo del sistema, ejecutamos el comando
saplicense –get dentro del directorio donde hemos instalado MiniSAP (C:\MBS).



Accedemos a la url "Obtener licencia" e introducimos los datos que nos solicitan.



Una vez que disponemos del número de licencia, ejecutamos la transacción "slicense". Pulsamos sobre
e introducimos el número que nos ha proporcionado SAP en el mail y aceptamos.



Despues de realizar esta pequeña parametrización, ya podemos "darle caña" a nuestro MiniSAP.

Nota: Para cerrar MiniSAP, cerramos SAP Logon de la forma habitual y en la ventana "Start SAP MBS" tecleamos "Ctrl+C" y aceptamos.



Technorati tags: ,

domingo, 8 de abril de 2007

Technorati tags: ,


Algunos de nosotros ya estamos sufriendo este cambio en el mundo empresarial. La tecnología SOA se esta empezando a implantar con fuerza dentro de SAP; y debemos estar preparados.

En este blog quiero mostrar la forma de consumir un Servicio Web externo a SAP desde un report / función, sin utilizar XI/PI. Debemos tener en cuenta, que para poder realizar esta práctica, debemos tener en nuestro sistema WAS >6.10

El procedimiento es el siguiente:

Entramos en la web http://www.webserviceX.NET, donde hay disponibles algunos servicios para que podamos probar.



Pulsamos sobre . A continuación accedemos a . Buscamos la categoría de servicios .

Nos muestra los servicios disponibles dentro de esa categoría:

Nos aparece una pantalla donde podremos probar el servicio web, y así tener una referencia de la respuesta que deberemos obtener:



Introducimos “Spain” y pulsamos sobre .

Nos aparecerá una pantalla mostrándonos un mensaje XML con los resultados:




Muy bien, ahora nosotros vamos a programar muestro cliente para consumir ese Web Service.

Los datos que necesitamos serán los siguientes:

  • WSDL, donde se indica la estructura del servicio y todos los datos relevantes
    • Location, localización del servicio
    • SOAPAction, acción que debe realizar el servicio

Localizamos esos datos en el WSDL:

que nos muestra la localización del servicio y


que indica la operación.

Una vez recopilados todos estos datos, procedemos a nuestra programación, desde la SE38.



*--- Declaracion
DATA: rlength TYPE i,
txlen TYPE string ,
http_client TYPE REF TO if_http_client,
wf_string TYPE string ,
wf_string1 TYPE string .

pais = 'Spain'.

*----Creamos el Soap Envelope
CLEAR wf_string.

CONCATENATE
'<?xml version="1.0" encoding="utf-8"?>'
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.
xmlsoap.org/soap/envelope/">'
'<soap:Body>'
'<GetAirportInformationByCountry xmlns="http://www.webserviceX.NET">'
'<country>' pais '</country>'
'</GetAirportInformationByCountry>'
'</soap:Body>'
'</soap:Envelope>'
INTO wf_string.

CLEAR :rlength , txlen .

rlength = STRLEN( wf_string ) .

MOVE: rlength TO txlen.

CLEAR: wf_proxy, wf_port .

CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = 'http://www.webservicex.net'
proxy_service = '8080'
IMPORTING
client = http_client.

CALL METHOD http_client->request->set_header_field
EXPORTING
name = '~request_method'
value = 'POST'.

CALL METHOD http_client->request->set_header_field
EXPORTING
name = '~server_protocol'
value = 'HTTP/1.1'.

CALL METHOD http_client->request->set_header_field
EXPORTING
name = '~request_uri'
value = '/airport.asmx'.

CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'text/xml; charset=utf-8'.

CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'Content-Length'
value = txlen.

CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'SOAPAction'
value = 'http://www.webserviceX.NET/GetAirportInformationByCountry'.

CALL METHOD http_client->request->set_cdata
EXPORTING
data = wf_string
offset = 0
length = rlength.

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 wf_string1 .

wf_string1 = http_client->response->get_cdata( ).

WRITE:/ wf_string1.