jueves, julio 31, 2008

Crear un fichero de texto comprimido en ZIP

Existe una clase estándard en SAP, CL_ABAP_ZIP, que permite crear archivos de texto comprimidos en ZIP. Existen varios modos de conseguir dicho fin. Un objeto de la clase CL_ABAP_ZIP puede contener más de un archivo. Todos los archivos que contengan deben estar codificados en binario (XSTRING).

A continuación se muestra un ejemplo de cómo convertir el contenido de una tabla interna a un fichero ZIP.



Si lo que se desea es comprimir un archivo que se encuentra en una ubicación determinada, lo que deberemos hacer es, en primer lugar, leer el contenido del archivo en una variable de tipo binaria (xstring) y a continuación pasarle el contenido de esa variable al objeto de la clase CL_ABAP_ZIP que la vaya a contener.


miércoles, julio 30, 2008

SAP Netweaver Developer Studio

Se trata de una herramienta de utilidad para el desarrollo en XI. Se puede descargar, junto a una serie de herramientas complementarias, desde los siguientes enlaces:



martes, julio 29, 2008

RFC vs. Proxy

En el presente post he querido reflejar las ventajas y contras que aparecen al utilizar RFCs y al utilizar ABAP Proxies. Es por ello que antes de decirdir qué método utilizar será recomendable que tengamos en cuenta las siguientes caracteríscitas:

ABAP Proxies

Ventajas

  • Permite definir todas las estructuras necesarias a partir de esquemas XSD o ficheros WSDL.
  • Funcionan sin problemas con estructuras anidadas (tablas dentro de otras tablas).

    Inconvenientes

    • Al importar el proxy en el ERP se generan numerosos objetos con nombres muy largos. Si se desea renombrar dichos objetos habrá que tener en cuenta que cada vez que sea necesario importar de nuevo el proxy (debido a cambios) los nombres de los objetos deberán ser cambiados de nuevo.
    • Es necesario configurar la conexión desde el sistema ERP al sistema XI para que la transacción SPROXY pueda importar los proxies correctamente.
    • El acceso a los métodos de las clases y las llamadas a éstos es más tediosa que con las RFCs.

      RFCs

      Ventajas

      • La definición del código es mucho más directa que a través de los proxies.
      • La llamada a las funciones RFCs es más sencilla.
      • La actualización de las estructuras que utiliza es más directa.

        Desventajas

        • Requiere que definamos las estructuras enteras en el sistema ERP a pelo. Si éstas disponen de muchos campos, la cosa se complica.
        • No funciona bien con estructuras de tipo tabla que contienen campos que a la vez son de tipo tabla.

          A continuación muestro 2 enlaces que pueden ser de interés:

            lunes, julio 28, 2008

            Controlar tiempos de ejecución

            Si lo que se desea conocer es cuánto se tarda en ejecutar una porción de código, la sentecia GET RUN TIME FIELD nos vendrá como anillo al dedo. A continuación muestro un ejemplo de utilización:



            Los tiempos t1 y t2 vienen dado en microsegundos por lo que será necesario dividirlos por 1.000 para pasarlos a milisegundos y por 1.000.000 si se desea tener en segundos.

            miércoles, julio 09, 2008

            EAN-128

            A la hora de tratar con códigos EAN-128 existen módulos de funciones estándar que permiten tanto codificar como decodificar de este modo.

            Dentro del grupo de funciones LE_EAN128 se encuentran los módulos:
            • LE_EAN128_ENCODE: Crear un código de barras estándar para ean128
            • LE_EAN128_DECODE: Descodificación de un código de barras estándar para ean128
            • LE_EAN128_LABEL_OUTPUT: EAN128 etiqueta: Edición impresa
            • LE_EAN128_LABEL_READ: EAN128 etiqueta: datos

              Hay que tener en cuenta que para que el proceso de codificación se realice correctamente será necesario tener parametrizado de forma correcta las secciones comprendidas en el área de customizing (SPRO) Logistics - General --> Handling Unit Management --> Basics --> Define EAN128.

              Existe otro grupo de funciones que también debe tenerse en cuenta y es el LE_BARCODE. Dentro del cual el módulo de función más significativo es el:
              • LE_BARCODE_AI_READ: Lee la descripción de códigos de barras
              Los datos referentes a los códigos AI (longitud, tipo, etc.) definidos en el sistema se encuentran en la tabla T313D, mientras que la tabla T313G recoge los caracteres especiales (prefijos y delimitadores) utilizados en cada tipo de codificación. Por ejemplo, partiendo del siguiente código EAN128 :
              • (02)08470006043066(17)150400(37)006(10)1022134
              El código EAN128 tiene definido, por defecto, el código ']C1' como prefijo y el código hexadecimal '1D' (group separator) como separador de campos de longitud variable. Esto quiere decir que para que la función de decodificación reconozca el anterior código, este se debería pasar de habría que pasar el código EAN de la siguiente manera:
              • ]C102084700060430661715040037006#101022134
              Donde '#' representa el carácter no imprimible "group separator".

                Más info: http://www.scribd.com/doc/3262714/EAN128-E

                jueves, julio 03, 2008

                ccBPM

                A través del cross-component BPM se permiten definir procesos de negocios automatizados ampliando así la potencia de componente de integración de procesos de SAP. El ccBPM permite, entre otras cosas, recibir mensajes individuales a través de una determinada interfaz para postermiormente unificarlos en una lista y distribuirlos a las máquinas correspondiente, por ejemplo.

                Los procesos definidos a través del ccBPM están basados en el estándard BPEL4WS, definido entre otros por SAP, IBM y Microsoft. Es por ello que dichos procesos pueden ser exportados a otros sistemas y, por otra parte, se pueden importar procesos de negocios definidos en otros sistemas, siempre y cuando sigan este estándar.

                Antes de definir los procesos de integración mediante el ccBPM, se deberá configurar el entorno XI de manera correcta (diseño y configuración), tal como se especifica en éste enlace.

                Para más información: http://help.sap.com/saphelp_nw04/helpdata/en/3c/831620a4f1044dba38b370f77835cc/frameset.htm

                Anteponer el signo de los números

                El siguiente código vuelca el contenido de un número real (negativo) a una variable alfanumérica, poniendo el signo como prefijo de la misma.