Llamado De Una Rutina Dentro De Un Modulo De Funcion

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • acha3318
    Senior Member
    • abr
    • 182

    #1

    Llamado De Una Rutina Dentro De Un Modulo De Funcion

    Hola Mundo SAP,

    Tengo una rutina escrita dentro de un modulo de función, pero necesito llamar esa rutina desde otro programa externo.

    Dentro del Modulo de funcion solo hago el llamado con el PERFORM.

    Alguien me puede dar una luz, de como hacer ese llamado a esa rutina ??

    Gracias, de ante mano por su colaboración.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola ... el programa de un modulo de funciones viene a ser el grupo de funciones concatenado con un SAPL, ejemplo si tengo una funcion llamada ZPRUEBA que se encuentra dentro del grupo de funciones ZTEST y dentro de ZPRUEBA creo una subrutina llamada rutina1 la puedo llamar desde otro programa asi

    Código:
    PERFORM rutina(SAPLZTEST) USING par1 par2 ....
    Espero te pueda servir
    David Carballido Córdova

    Comentario

    • Mauricio Hidalgo
      Senior Member
      • may
      • 481

      #3
      Borré mi post por que DAVIDXD_XD dió una respuesta mucho más acertada para la problemática. Lo que yo indiqué puede inducir a confusión y no ayudaba en nada al amigo que lo requería.

      Comentario

      • acha3318
        Senior Member
        • abr
        • 182

        #4
        Gracias David funcionó a la perfección....

        Un abrazo.

        Originalmente publicado por DavidXD_XD
        Hola ... el programa de un modulo de funciones viene a ser el grupo de funciones concatenado con un SAPL, ejemplo si tengo una funcion llamada ZPRUEBA que se encuentra dentro del grupo de funciones ZTEST y dentro de ZPRUEBA creo una subrutina llamada rutina1 la puedo llamar desde otro programa asi

        Código:
        PERFORM rutina(SAPLZTEST) USING par1 par2 ....
        Espero te pueda servir

        Comentario

        • cosagaucha
          Member
          • ago
          • 64

          #5
          hola, una consulta con respecto a las funciones y los performs..

          tengo que desarrollar una funcion -dentro de un grupo de funciones- que debe procesar un batch imput, y el tema es que para hacerlo algo mas legible, dividi el BI en varios performs, como es el uso comun de toda BI en los programas..

          El tema es que DENTRO de los forms, no me reconoce variables o tablas que las he definido en el cuerpo "principal" de la funcion...y obviamente si las defino dentro de la funcion las reconoce, pero necesito que esas definiciones sean "globales", y no propias de cada perform..

          alguien me podria orientar en como resolver esto? No estoy utilizando includes, solo genero los performs en el cuerpo de la funcion tambien.

          gracias!

          Comentario

          • Abaunus
            Senior Member
            • nov
            • 119

            #6
            Originalmente publicado por cosagaucha
            hola, una consulta con respecto a las funciones y los performs..

            tengo que desarrollar una funcion -dentro de un grupo de funciones- que debe procesar un batch imput, y el tema es que para hacerlo algo mas legible, dividi el BI en varios performs, como es el uso comun de toda BI en los programas..

            El tema es que DENTRO de los forms, no me reconoce variables o tablas que las he definido en el cuerpo "principal" de la funcion...y obviamente si las defino dentro de la funcion las reconoce, pero necesito que esas definiciones sean "globales", y no propias de cada perform..

            alguien me podria orientar en como resolver esto? No estoy utilizando includes, solo genero los performs en el cuerpo de la funcion tambien.

            gracias!

            ¿Podrías subir el código? Sobre todo de la declaración de variables en el programa principal, y de los Forms que no las reconocen, y así vamos viendo, porque no debería suceder....

            Comentario

            • cosagaucha
              Member
              • ago
              • 64

              #7
              Codigo dentro de la funcion:

              *Typos
              types: begin of ty_bdc_tab,
              program type bdcdata-program,
              dynpro type bdcdata-dynpro,
              dynbegin type bdcdata-dynbegin,
              fnam type bdcdata-fnam,
              fval type bdcdata-fval.
              types: end of ty_bdc_tab.

              *Tablas
              data: gt_bdc_tab type ty_bdc_tab.

              *Variables
              DATA: x_l(10) TYPE c.

              CASE p_codigo.

              WHEN 'C'. "Creación de Equipos

              PERFORM ztest USING 'C'
              CHANGING x_l.

              WHEN 'M'. "Modificacion de datos del Equipo

              PERFORM ztest USING 'M'
              CHANGING x_l.
              ENDCASE.


              ENDFUNCTION.


              *&---------------------------------------------------------------------*
              *& Form ztest
              *&---------------------------------------------------------------------*
              * text
              *----------------------------------------------------------------------*
              * -->CL_A text
              * -->CL_L text
              *----------------------------------------------------------------------*
              FORM ztest USING cl_a
              CHANGING cl_l TYPE c.
              IF cl_a EQ 'C'.
              MOVE 'Creacion' TO cl_l.
              ELSE.
              MOVE 'Modificacion' TO cl_l.
              ENDIF.

              ENDFORM. "ztest

              *&--------------------------------------------------------------------*
              *& Form dynpro
              *&--------------------------------------------------------------------*
              * -->MODO Modo de ejecución
              * -->NOMBRE Nombre de programa
              * -->VALOR Valor de la dynpro
              *---------------------------------------------------------------------*
              form dynpro using modo nombre valor
              changing wa_tabla type ty_bdc_tab.
              * ACA DA EL ERROR, en la linea del changing,
              * donde pone que el "type ty_bdc_tab is unknown"

              clear wa_tabla.
              if modo = 'X'.
              move: nombre to wa_tabla-program,
              valor to wa_tabla-dynpro,
              'X' to wa_tabla-dynbegin.
              else.
              move: nombre to wa_tabla-fnam,
              valor to wa_tabla-fval.
              endif.
              append wa_tabla.
              endform. "dynpro

              Comentario

              • jmenendez
                Member
                • may
                • 54

                #8
                Originalmente publicado por cosagaucha
                hola, una consulta con respecto a las funciones y los performs..

                tengo que desarrollar una funcion -dentro de un grupo de funciones- que debe procesar un batch imput, y el tema es que para hacerlo algo mas legible, dividi el BI en varios performs, como es el uso comun de toda BI en los programas..

                El tema es que DENTRO de los forms, no me reconoce variables o tablas que las he definido en el cuerpo "principal" de la funcion...y obviamente si las defino dentro de la funcion las reconoce, pero necesito que esas definiciones sean "globales", y no propias de cada perform..

                alguien me podria orientar en como resolver esto? No estoy utilizando includes, solo genero los performs en el cuerpo de la funcion tambien.

                gracias!

                No se si te entendí bien. En realidad el cuerpo de la función no es una definisión global.
                Para poder establecer parámetros globales debés usar el include TOP del grupo de funciones.

                Creo :P

                Comentario

                • Abaunus
                  Senior Member
                  • nov
                  • 119

                  #9
                  Originalmente publicado por cosagaucha
                  Codigo dentro de la funcion:

                  *Typos
                  types: begin of ty_bdc_tab,
                  program type bdcdata-program,
                  dynpro type bdcdata-dynpro,
                  dynbegin type bdcdata-dynbegin,
                  fnam type bdcdata-fnam,
                  fval type bdcdata-fval.
                  types: end of ty_bdc_tab.

                  *Tablas
                  data: gt_bdc_tab type ty_bdc_tab.

                  *Variables
                  DATA: x_l(10) TYPE c.

                  CASE p_codigo.

                  WHEN 'C'. "Creación de Equipos

                  PERFORM ztest USING 'C'
                  CHANGING x_l.

                  WHEN 'M'. "Modificacion de datos del Equipo

                  PERFORM ztest USING 'M'
                  CHANGING x_l.
                  ENDCASE.


                  ENDFUNCTION.


                  *&---------------------------------------------------------------------*
                  *& Form ztest
                  *&---------------------------------------------------------------------*
                  * text
                  *----------------------------------------------------------------------*
                  * -->CL_A text
                  * -->CL_L text
                  *----------------------------------------------------------------------*
                  FORM ztest USING cl_a
                  CHANGING cl_l TYPE c.
                  IF cl_a EQ 'C'.
                  MOVE 'Creacion' TO cl_l.
                  ELSE.
                  MOVE 'Modificacion' TO cl_l.
                  ENDIF.

                  ENDFORM. "ztest

                  *&--------------------------------------------------------------------*
                  *& Form dynpro
                  *&--------------------------------------------------------------------*
                  * -->MODO Modo de ejecución
                  * -->NOMBRE Nombre de programa
                  * -->VALOR Valor de la dynpro
                  *---------------------------------------------------------------------*
                  form dynpro using modo nombre valor
                  changing wa_tabla type ty_bdc_tab.
                  * ACA DA EL ERROR, en la linea del changing,
                  * donde pone que el "type ty_bdc_tab is unknown"

                  clear wa_tabla.
                  if modo = 'X'.
                  move: nombre to wa_tabla-program,
                  valor to wa_tabla-dynpro,
                  'X' to wa_tabla-dynbegin.
                  else.
                  move: nombre to wa_tabla-fnam,
                  valor to wa_tabla-fval.
                  endif.
                  append wa_tabla.
                  endform. "dynpro

                  Por qué no probás poniendo:

                  form dynpro using modo nombre valor
                  changing wa_tabla LIKE gt_bdc_tab.


                  Por otro lado, si tu wa_tabla es una tabla, fijáte que ty_bdc_tab es una estructura.
                  Deberías declarar el tipo de tabla. Quizá así funcione:

                  types tabla_bdc_tab type table of ty_bdc_tab.
                  Una vez a mi me pasó que me daba error al llamar una rutina, si no me equivoco era usando CHANGING, y si mal no recuerdo lo solucioné cambiándolo por el TABLES.

                  Espero algo de todo este enriedo te sirva, jaja
                  Editado por última vez por Abaunus; 02/07/2009, 19:16:47.

                  Comentario

                  • DavidXD_XD
                    Moderator
                    • ago
                    • 1255

                    #10
                    Hola, cuando creas variables dale doble click y sap te preguntara en que INCLUDE quieres crearla, normalmente ese INCLUDE para el usuario (en ese caso tu usuario) dira un formato mas o menos asi:

                    LZ........TOP

                    Ese include esta disponible para los desarrolladores para poder crear las variables globales que nos serviran asi como tbm crear MODULES, FORMS, tienen la misma forma

                    LZ........I01
                    LZ........O01
                    LZ........F00

                    Si te das cuenta esos son los que en el segundo caracter tienen la Z, los de SAP (donde no se puede escribir) tienen una S u otra letra.

                    La razon es porque ese grupo de funciones puede ser generado, por ejemplo, por un mantenimiento de una tabla y cuando queramos regenerar el grupo de funciones no se modificara los INCLUDES LZ...... ya que son nuestros y no de SAP, espero te pueda ayudar la INFO
                    David Carballido Córdova

                    Comentario

                    Trabajando...