Acceso desde SAP a procedimientos PL/SQL bajo Oracle

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • poli
    Junior Member
    • abr
    • 15

    #1

    Acceso desde SAP a procedimientos PL/SQL bajo Oracle

    Buenas tardes,

    Necesito hacer consultas desde SAP a un procedimiento PL/SQL que corre bajo Oracle.
    Creo que en lo que respecta a la configuración de los destinos habrá que hacer la definicion en SAP de estos procedimientos.
    Pero en lo que respecta al modo de llamar no tengo ni idea de como hacerlo (entiendomque tengo que hacer una RFC, pero dentro de ella no de que forma codificar).

    Podeis darme alguna orientacion y/o algún ejemplo ??
  • tracer
    Administrator
    • feb
    • 503

    #2
    Hola Poli,

    Lo que necesitas es usar código en SQL NATIVO, además de que el equipo de BASIS debe darte un db link a la base de datos.

    Te pongo un ejemplo:

    Código:
    REPORT demo_native_sql.
     
    DATA: BEGIN OF wa,
            connid   TYPE spfli-connid,
            cityfrom TYPE spfli-cityfrom,
            cityto   TYPE spfli-cityto,
          END OF wa.
     
    DATA c1 TYPE spfli-carrid VALUE 'LH'.
     
    EXEC SQL PERFORMING loop_output.
      SELECT connid, cityfrom, cityto
      INTO   :wa
      FROM   spfli
      WHERE  carrid = :c1
    ENDEXEC.
     
    FORM loop_output.
      WRITE: / wa-connid, wa-cityfrom, wa-cityto.
    ENDFORM.
    Tienes toda la información que necesitas sobre NATIVE sql en este enlace:

    NATIVE SQL DE SAP

    Un saludo, espero haberte sido de utilidad
    Si precisas una mano, recuerda que yo tengo dos.

    Comentario

    • poli
      Junior Member
      • abr
      • 15

      #3
      Originalmente publicado por tracer
      Hola Poli,

      Lo que necesitas es usar código en SQL NATIVO, además de que el equipo de BASIS debe darte un db link a la base de datos.

      Te pongo un ejemplo:

      Código:
      REPORT demo_native_sql.
       
      DATA: BEGIN OF wa,
              connid   TYPE spfli-connid,
              cityfrom TYPE spfli-cityfrom,
              cityto   TYPE spfli-cityto,
            END OF wa.
       
      DATA c1 TYPE spfli-carrid VALUE 'LH'.
       
      EXEC SQL PERFORMING loop_output.
        SELECT connid, cityfrom, cityto
        INTO   :wa
        FROM   spfli
        WHERE  carrid = :c1
      ENDEXEC.
       
      FORM loop_output.
        WRITE: / wa-connid, wa-cityfrom, wa-cityto.
      ENDFORM.
      Tienes toda la información que necesitas sobre NATIVE sql en este enlace:

      NATIVE SQL DE SAP

      Un saludo, espero haberte sido de utilidad
      Gracias Tracer,

      tengo algunas dudas:

      que quieres decir con 'darte un db link a la base de datos' ?
      que el equipo de tecnica de sistemas tiene que definir las vias RFC (SM59)?

      En el ejemplo adjunto, cual es la parte del procedimiento del PL/SQL ?

      Mil gracias.

      Comentario

      • tracer
        Administrator
        • feb
        • 503

        #4
        El SQL Nativo, es lo que pones entre los comandos EXEC SQL y ENDEXEC, varios ejemplos:

        EXEC SQL.
        CONNECT TO
        ENDEXEC.

        EXEC SQL.
        SET CONNECTION
        ENDEXEC.

        EXEC SQL.
        SELECT CUSTOMERID, COMPANYNAME into :CID, :CNAME
        FROM CUSTOMERS
        WHERE CUSTOMERID = :F3
        ENDEXEC.

        Creo que puedes utilizar este método si tienes sap instalado en plataforma Windows. Entonces el equipo de BASIS ( si no me equivoco ya que no es mi area) debe crearte una conexión al servidor SQL usando la transacción DBCO. De todas formas creo que si tienes instalado sap en una plataforma no windows tienes que instalar Busiines Connector o XI.

        Un saludo
        Si precisas una mano, recuerda que yo tengo dos.

        Comentario

        • poli
          Junior Member
          • abr
          • 15

          #5
          Ok, gracias por todo.

          Tengo que asimilarlo.

          Un saludo y muchas gracias.

          Comentario

          • josefon
            Member
            • mar
            • 61

            #6
            creo que lo que POLI quiere es llamar a un stored procedure como en java no??
            algo asi pero en sap

            String strStoredProcedure = "{call DB.PRC_CO_PROCESO_CONCESIONES (?,?,?,?,?,?,?,?)}";

            no ???

            Comentario

            • poli
              Junior Member
              • abr
              • 15

              #7
              hola josefon/tracer

              desde SAP tengo que lanzar una llamada a un sistema externo (RFC) que funciona con procedimientos PL/SQL bajo Oracle, y es a estos a los que debo realizar la RFC. Esta RFC me devuelve unos datos que despues en SAP compruebo.
              yo he hecho rfc's entre sistemas SAP pero no imagina como pueden hacerse entre SAP y un sistema de este otro tipo.
              una premisa de proyecto es que no se implanta XI (por eso tenia que meditar sobre lo que tracer me comento en las respuestas). Por eso la solucion de las RFC's ( claro que el que la dio no es el que lo tiene que hacer....).

              espero haber aclarado un poco el objetivo y planteamiento.

              un saludo

              Comentario

              • josefon
                Member
                • mar
                • 61

                #8
                encontre estos ejemplos en google.. mira

                FORM test_ora.
                **Types
                TYPES: BEGIN OF Y_OUT,
                A(50),
                B(50),
                C(50),
                END OF Y_OUT.
                ** work_area
                DATA: WA_OUT TYPE Y_OUT.
                ** Tables
                DATA: T_OUT TYPE TABLE OF Y_OUT.

                EXEC sql.
                EXECUTE PROCEDURE pkg_sap.p_info_fin
                ( IN :'99213894',
                OUT :WA_OUT )
                ENDEXEC.

                ENDFORM.

                tambien le puedes dar una hojeada a esta pagina ..


                ojala te ayude..

                saludos

                Comentario

                • conrad10ar
                  Banned
                  • mar
                  • 296

                  #9
                  Hola,

                  podrían detallarme los datos que debería poner en la transacción DBCO ?

                  hago esta consulta porque no logro conectarme a la base y creo que pasa por ese lado el problema.

                  Muchas gracias a todos.

                  Comentario

                  • Sandra Milena
                    Junior Member
                    • jun
                    • 3

                    #10
                    Conexion SAP-ORACLE

                    Originalmente publicado por tracer
                    Hola Poli,

                    Lo que necesitas es usar código en SQL NATIVO, además de que el equipo de BASIS debe darte un db link a la base de datos.

                    Te pongo un ejemplo:

                    Código:
                    REPORT demo_native_sql.
                     
                    DATA: BEGIN OF wa,
                            connid   TYPE spfli-connid,
                            cityfrom TYPE spfli-cityfrom,
                            cityto   TYPE spfli-cityto,
                          END OF wa.
                     
                    DATA c1 TYPE spfli-carrid VALUE 'LH'.
                     
                    EXEC SQL PERFORMING loop_output.
                      SELECT connid, cityfrom, cityto
                      INTO   :wa
                      FROM   spfli
                      WHERE  carrid = :c1
                    ENDEXEC.
                     
                    FORM loop_output.
                      WRITE: / wa-connid, wa-cityfrom, wa-cityto.
                    ENDFORM.
                    Tienes toda la información que necesitas sobre NATIVE sql en este enlace:

                    NATIVE SQL DE SAP

                    Un saludo, espero haberte sido de utilidad


                    Hola como estas??

                    Una pregunta sera que tu de casualidad sabes como se hace la conexion SAP-ORACLE de la forma como la hace el basis.

                    te agradeceria mucha tu ayuda

                    Comentario

                    Trabajando...