Modulos de Funciones - ABAP

  • Upload
    cjmutn

  • View
    239

  • Download
    0

Embed Size (px)

Citation preview

  • 7/31/2019 Modulos de Funciones - ABAP

    1/14

    1. Mdulos de Funciones

    1.1 Introduccin

    Los mdulos de funciones son objetos que realizan operacionesque pueden ser utilizadas en varios programas. Al crear un mdulo

    de funcin con el cdigo que realiza una operacin, se evita tenerque repetirlo en todos los programas que realicen esa operacinaadiendo en ellos una llamada al mdulo de funcin. Adems deevitar que se repita el mismo cdigo en diferentes programas, sefacilita el mantenimiento del proceso, ya que las modificacionesque se realicen en un mdulo de funcin afectan a todos losprogramas que lo utilicen.

    SAP dispone de un gran nmero de mdulos de funcinpredefinidos que se pueden utilizar en nuestros programas, a lasque se aadirn los que se desarrollen a medida.

    Los mdulos de funcin pertenecen a grupos de funciones, que losagrupan segn su funcionalidad. Los mdulos de funciones de unmismo grupo de funciones comparten las definiciones de datosglobales.

    1.2 Creacin de un grupo de funciones.

    Para crear un grupo de funcin iremos por la opcin de men delOBJET NAVIGATORRuta de acceso: ( En el men principal de SAP ) Herramientas

    Workbench ABAP4 Resumen Object Navigator ( SE80).

    Seleccionaremos Grupo de funciones , pondremos el nombre delgrupo de funciones a CrearEjZCXX.

    Aparecer una ventana el la que definir los atributos del grupo defunciones.

    Grupo de funciones: Nombre del grupo de funciones.

  • 7/31/2019 Modulos de Funciones - ABAP

    2/14

    Texto breve: Descripcin del grupo de funciones.Ej: Asignacin de nmeros.

    Respnsable: Usuario responsable del grupo de funciones.

    1.3 Datos de gestin

    Los mdulos de funcin se mantienen utilizando la biblioteca defunciones.Ruta de acceso: ( En el men principal de SAP ) HerramientasWorkbench ABAP4-DesarrolloBiblioteca funciones (SE37).

    Desde esta pantalla se pueden crear, modificar o visualizar todaslas partes de un mdulo de funcin marcando las distintasopciones de objetos parciales.

    Ej.: Se crear una funcin que recibir como parmetro de entradauna sociedad y devolver como parmetro de salida el primernmero de cliente desocupado en la tabla de clientes ZCLIENXXpara esa sociedad.

  • 7/31/2019 Modulos de Funciones - ABAP

    3/14

    Para crear un mdulo de funcin se deber especificar el nombre

    en la pantalla inicial y pulsar el botn de crearcon la opcin Gestin activada.Ej.: Z_OBTENER_NUMERO_CLIENTE_XX.

    Aparecer una pantalla en la que se debe indicar el grupo defunciones a la que pertenece el mdulo de funcin junto con su ladescripcin de la funcin.Ej.: ZCXX..

    Devuelve un nmero de cliente libre.

    Una vez especificado el grupo de funcin se debern informar losdatos de gestin del mdulo de funcin.

    Clasificacin: Aplicacin: Mdulo al que pertenece el programa ( FI ,

    HHRR ).

    Ej.: * Multiaplicacin. Texto breve: Descripcin de la funcionalidad del mdulo de

    funcin.Ej.: Determinacin de nmero de cliente.

    Forma ejec.: Normal: Mdulo de funcin normal. Apoyo Remote Function Call: Funciones de jecucin remota.

    Estas funciones pueden ser ejecutadas desde otrossistemas externos a SAP.

    Actualizable: Funciones de actualizacin asncrona. Se

    puede especificar el modo de tratamiento de la tarea deactualizacin (Inicio inmediato, inicio inmediato sinactualizacin posterior, inico retardado o lanzamientocolectivo.Ej.: Normal.

    Al finalizar la introduccin de los datos de gestin se deber grabarel mdulo de funcin.

  • 7/31/2019 Modulos de Funciones - ABAP

    4/14

    1.4 Parmetros de la funcin.

    1.4.1 Parmetros Import.

    Deberemos indicar la lista de parmetros de entrada de la funcin:

    Parmetro:Nombre de los parmetros de entrada.Tipificacin: Tipo de dato del parmetro.Tipo Ref. Tipo de referencia ( Solo se indicar una de estas dosltimas ).Valor Propuesto: Valor por defecto cuando se declara comoopcional.Flag opc. Indicador de parmetro no obligatorio.Flag.Tras. Indicacin de que el parmetro se recibe porvalor/referencia.

    1.4.2 Parmetros de salida ( Export).Son los parmetros de salida de funcin.

    1.4.3 Parmetros ( changing ):

  • 7/31/2019 Modulos de Funciones - ABAP

    5/14

    Parmetros de entrada y salida del mdulo de funcin. Estosparmetros devuelven el valor de salida al finalizar la ejecucin delmdulo de funcin sin errores, manteniendo el valor de entrada encaso contrario.

    Ej.: Se crea el parmetro import BUKRS con el campo dereferencia ZCLIENXX-BUKRS para recibir la sociedad del cliente,y el parmetro export NCLIE con el campo de referenciaZCLIENXX-NCLIE para devolver el nmero de cliente.

    1.5 Tablas

    Adems de los parmetros de entrada y salida definidosanteriormente, tambin se pueden traspasar tablas por referenciaen la llamada al mdulo de funcin.

    Parmetro tabla: Nombre del parmetro de tabla. Tipificain : Tipo de datos de la tabla Tipo ref.: Estructura de referencia del diccionario de datos

    para especificar la estructura del parmetro de tabla.

  • 7/31/2019 Modulos de Funciones - ABAP

    6/14

    Opcional: Si se activa este flag no ser obligatorio informarel parmetro de tabla en la llamada al mdulo de funcin.

    1.6 Excepciones

    Las excepciones son una serie de errores predefinidos en losmdulos de funcin que pueden devolver como valor de retorno desu ejecucin en la variable del sistema SY-SUBRC.

    Excepcin: Se indicar un nombre descriptivo para cadaposible error predefinido que va a poder retornar el mdulode funcin. La posicin en la tabla de excepciones secorresponder con el valor que devolver en la variable SY-SUBRC (la primera excepcin definida devolver 1, lasiguiente 2, etc.).

    Por defecto siempre existe la excepcin OTHERS, aunqueaparezca definida, que se utiliza para devolver un error genrico ydevuelve en la variable SY-SUBRC el valor siguiente al de la ltimaexcepcin creada.

    Ej.: Se crea la excepcin SOCIEDAD_INEXISTENTE que serdevuelta cuando la sociedad informada en el parmetro de entradacorrespondiente no exista en la tabla estndar de sociedades.

    Para devolver una excepcin desde el cdigo del modulo defuncin se utiliza la sentencia RAISE , finalizando as

    la ejecucin de la funcin y devolviendo el cdigo asociado a laexcepcin en la variable SY-SUBRC. En caso de devolver unaexcepcin no se actualiza el valor de salida de los parmetrosCHANGING.

    Con la clusula RAISING de la instruccin MESSAGE se puededar la posibilidad de que el mdulo de funcin trate el errormostrando el mensaje de error especificado o que devuelva laexcepcin correspondiente sin mostrar el mensaje de error, enfuncin de si se especifica la clusula EXCEPTIONS en sullamada. Si no se expecifica la clusula, el mdulo de funcin

    mostrar los mensajes de error que tengan la clusula RAISING,finalizando as la ejecucin del programa que realiza la llamada, encaso contrario se devolvern las excepciones asociadas a losmensajes traspasando el control de los errores al programa querealiza la llamada al mdulo de funcin.

  • 7/31/2019 Modulos de Funciones - ABAP

    7/14

    1.7 Datos globales

    Las definiciones globales de datos son compartidas por todos losmdulos de funcin de un grupo de funciones. Las definiciones deobjetos globales se mantienen a travs de la opcin de menPasar aDatos globales.

    Nota: Las definiciones globales y el texto fuente del mdulo defuncin se codifican realmente en el editor ABAP/4 utilizando losmismos comandos que en la codificacin de listados.

    Ej.: Se define la tabla estndar de sociedades T001 en la que sechequear que la sociedad recibida como parmetro es correcta, yla tabla de clientes ZCLIENXX para seleccionar los nmeros decliente existentes.

    Include LZCLITOP:

    FUNCTION-POOL ZCLI. "MESSAGE-ID ..************************************************************************* Definicin de tablas************************************************************************

    TABLES: T001, " SociedadesZCLIENXX. " Clientes

    Los parmetros definidos en el mdulo de funcin son locales, porlo tanto solo son visibles en el cuerpo principal de la funcin. Paraque puedan ser utilizados en las subrutinas, sin necesidad depasarlos como parmetros, se debern globalizar utilizando la

    opcin de men TratarInterfaseGlobalizar parm. en lapantalla de mantenimiento de parmetros de entrada/salida. Paraeliminar la globalizacin se utiliza la opcin de menTratarInterfaseLocalizar parm..

    1.8 Cdigo fuente

    Al crear una subrutina, haciendo doble click sobre el nombre en lallamada, el sistema propondr la creacin de un Include quecontendr todas las subrutinas del grupo de funciones.

    Al finalizar la introduccin del texto fuente se deber grabar,verificar y activar el mdulo de funcin.

    Ej.: Se crea la subrutina CHEQUEAR_SOCIEDAD en un nuevoInclude LZCLIF01 pasndole como parmetro de entrada elparmetro de sociedad, que chequear que la sociedad existe en

  • 7/31/2019 Modulos de Funciones - ABAP

    8/14

    la tabla estandar de sociedades, devolviendo la excepcinSOCIEDAD_INEXISTENTE en caso contrario.

    Se crea la subrutina SELECCIONAR_NUMERO_CLIENTEpasndole como parmetro de entrada el parmetro de sociedad,

    que devolver como parmetro de salida el primer nmero decliente desocupado para la sociedad indicada.

    Include LZCLIU01:FUNCTION Z_OBTENER_NUMERO_CLIENTE.*"----------------------------------------------------------------------*"*'Interfase local*" IMPORTING*" VALUE(BUKRS) LIKE ZCLIENXX-BUKRS*" EXPORTING*" VALUE(NCLIE) LIKE ZCLIENXX-NCLIE

    *" EXCEPTIONS*" SOCIEDAD_INEXISTENTE*"----------------------------------------------------------------------

    * Se chequea la sociedadPERFORM CHEQUEAR_SOCIEDAD USING BUKRS.

    * Se selecciona el nmero de cliente para la sociedadPERFORM SELECCIONAR_NUMERO_CLIENTE USING BUKRS

    NCLIE.

    ENDFUNCTION.

    Include LZCLIF01:*-------------------------------------------------------------------***INCLUDE LZCLIF01 .*-------------------------------------------------------------------*&---------------------------------------------------------------------**& Form CHEQUEAR_SOCIEDAD*&---------------------------------------------------------------------** Chequea que la sociedad recibida como parmetro existe en latabla* de sociedades.*----------------------------------------------------------------------** --> PE_BUKRS Sociedad*----------------------------------------------------------------------*FORM CHEQUEAR_SOCIEDAD USING VALUE(PE_BUKRS)LIKE ZCLIENXX-BUKRS.

    * Se selecciona la sociedad en la tabla de sociedades

  • 7/31/2019 Modulos de Funciones - ABAP

    9/14

    SELECT SINGLE BUKRS INTO T001-BUKRSFROM T001

    WHERE BUKRS = PE_BUKRS.

    * Si no se ha seleccionado se devuelve la excepcin

    SOCIEDAD_INEXISTENTEIF SY-SUBRC 0.RAISE SOCIEDAD_INEXISTENTE.

    ENDIF.

    ENDFORM. " CHEQUEAR_SOCIEDAD*&---------------------------------------------------------------------**& Form SELECCIONAR_NUMERO_CLIENTE*&---------------------------------------------------------------------** Devuelve en el parmetro de salida PS_CLIE el primer nmerode cliente

    * desocupado en la tabla de clientes para la sociedad especificadaen el* parmetro de entrada PE_BUKRS.*----------------------------------------------------------------------** -->PE_BUKRS Sociedad* -->PS_NCLIE Nmero de cliente **----------------------------------------------------------------------*FORM SELECCIONAR_NUMERO_CLIENTE

    USING VALUE(PE_BUKRS) LIKE ZCLIENXX-BUKRSPS_NCLIE LIKE ZCLIENXX-NCLIE.

    * Se selecciona el n mayor existente en la tabla

    SELECT MAX( NCLIE )FROM ZCLIENXX INTO (ZCLIENXX-NCLIE)WHERE BUKRS = PE_BUKRS.* Si se encuentra valor mximoIF ( SY-SUBRC = 0 ).

    PS_NCLIE = ZCLIENXX-NCLIE + 1.* Si no se encuentra valor mximo

    PS_NCLIE = 1.ENDIF.* Completamos con ceros por la Izq.UNPACK PS_NCLIE.

    ENDFORM. " SELECCIONAR_NUMERO_CLIENTE

  • 7/31/2019 Modulos de Funciones - ABAP

    10/14

    1.9 Ejecucin

    Para ejecutar un mdulo de funcin desde la biblioteca defunciones se utiliza la opcin de men UtilidadesEntorno test

    (F8) de la biblioteca de funciones o pulsando el botn en lapantalla inicial.

    Ej.: Ejecutar la funcin Z_OBTENER_NUMERO_CLIENTE_XXdesde la biblioteca de funciones.

    Para ejecutar un mdulo de funcin desde un programa se utiliza lasentencia CALL FUNCTION . Para que el sistema nosproponga la sentencia de la llamada a una funcin con todos sus

    parmetros desde el editor ABAP/4 utilizaremos el botn ,marcando la opcin CALL FUNCTION y especificando el nombrede la funcin.

    Nota: Los campos que se utilizan en la llamada a un mdulo defuncin deben ser del mismo tipo que los parmetros a los quehacen referencia (definidos en el mdulo de funcin), sino sepueden producir errores en la ejecucin del programa.

    2. Llamadas a programas y utilizacin de la memoria.

    2.1 Introduccin

    Para intercambiar datos entre diferentes programas se puede utilizar la

    memoria SAP y la memoria ABAP/4.

    o Memoria SAP.Es un rea de memoria especifico para cada usuario que se utilizapara almacenar valores que son retenidos durante toda la sesindel usuario.

    o Memoria ABAP/4.Los valores almacenados en la memoria ABAP/4 solamente sonretenidos durante la ejecucin de un programa. Esta memoria esutilizada para la transferencia de datos entre dos programa cuandouno de ellos realiza una llamada al otro.

    2.2 Parmetros de memoria SAP

    En la memoria SAP se pueden almacenar valores asociados a unidentificador de tres caracteres, que se mantienen disponibles hasta quefinalice la sesin.

  • 7/31/2019 Modulos de Funciones - ABAP

    11/14

    En los campos de las pantallas existen tres atributos relacionados con losparmetros de memoria:

    o Id-parm.: Identificador de parmetro para los valores del campoen la memoria SAP. Si el campo est referenciado al diccionario dedatos, se informar con el identificador asociado al dominio del

    campo del diccionario.o SET Parm.: Al activar este atributo, el sistema almacenar en la

    memoria SAP el valor que contiene al campo bajo el identificadorasociado.

    o GET Parm.: Al activar este atributo, el campo se inicializar con elvalor definido en la memoria SAP bajo el identificador asociado enlugar de utilizar el valor inicial en funcin del tipo de dato delcampo.

    Desde un programa se pueden almacenar y recuperar datos de lamemoria SAP con las siguientes sentencias:

    o

    SET PARAMETER.La sentencia SET PARAMETER ID FIELD almacena el valor del campo en la memoria SAPasociado al identificador especificado.

    o GET PARAMETER.La sentencia GET PARAMETER ID FIELD almacena el valor asociado al identificador en la memoriaSAP en el campo especificado.

    Los parmetros de memoria se inicializan al comenzar una sesin con losvalores almacenados en los parmetros de usuario, que se mantienendesde la opcin de men SistemaValores prefijadosDatos propios(SU3).

  • 7/31/2019 Modulos de Funciones - ABAP

    12/14

    o Idp: Identificador de parmetro.o Valor parmetro: Valor asociado al identificador.

    2.3 Sentencias de llamada a programas

    Para realizar llamadas a otros programas desde un programa se utilizanlas siguientes sentencias:

    o SUBMIT AND RETURN: Realiza una llamada a unlistado. Si no se especifica la clusula AND RETURN finalizar elprograma actual y se ejecutar el listado sin regresar al programaactual.

    o CALL TRANSACTION : Realiza una llamada a unatransaccin.

    Ej.:Se incluir un pulsador en la pantalla de altas de clientes para ejecutarel listado de visualizacin de facturas de clientes.

    Se incluye un pulsador en la barra de pulsadores el Status STA_9000con el cdigo de funcin FACT de tipo E (Comando Exit) y el textoVisualizar clientes asociado a la tecla de funcin F6.

  • 7/31/2019 Modulos de Funciones - ABAP

    13/14

    Se aade el procesamiento del cdigo de funcin FACT en el mduloPAI SALIR_9000, realizando una llamada al listado ZREPO1XX en casode que se selecciones la funcin Visualizar facturas

    WHEN 'FACT'. " Visualizar facturas* Se ejecuta el listado de facturas de clientes

    SUBMIT ZREPO1XX AND RETURN.

    Se ejecuta el listado de facturas de clientes desde la pantalla de altas de

    clientes pulsando el botn .

    2.4 Intercambio de datos a travs de la memoria ABAP/4

    Al realizar una llamada a un programa desde otro programa, se puedenintercambiar datos a travs de la memoria ABAP/4 utilizando lassiguientes sentencias:

    o EXPORT TO MEMORY ID .Almacena el objeto en la memoria ABAP/4 asociado al

    identificador especificado, que puede tener una longitud de 32caracteres. Cada vez que se exportan datos bajo un mismoidentificador se sobreescriben los anteriores.

  • 7/31/2019 Modulos de Funciones - ABAP

    14/14

    o IMPORT FROM MEMORY ID .Recupera el objeto asociado al identificador especificado de

    la memoria ABAP/4.o FREE MEMORY ID .

    Libera de la memoria ABAP/4 los datos almacenados bajo el

    identificador especificado. Si no se especifica la clusula ID seliberar toda la memoria ABAP/4.