Ayuda SAP

Conector para ser usado en CrystalReport SAPB1 SQL

Buenos días estimados

Necesito su ayuda en lo siguiente tengo un reporte en Crystal Report que me genera un balance de comprobación desde SAP B1, que me funciona correctamente, pero ocupo poderlo poner a disposición de usuarios que un tienen usuario de SAP, por lo cual necesito un conector que me permita incluirle el servidor, la base de datos, el Usuario y la Clave, para que el usuario no tenga que incluirlo, que solo tenga que incluir los datos que son necesarios para generar el reporte

Esta información de conexión es la que necesito que se cargue de forma automática sin intervensión del usuario

Estos son los únicos parámetros que debería incluir los usuarios

Estoy usando SAP B1 en SQL server 2016.

En mi anterior trabajo tenia los reportes programados con conectores que cargaban las credenciales automáticamente, pero usaba SAP B1 for Hana, trate de usar el mismo conector, pero no me funciono.

De antemano agradezco la colaboración.

Saludos

Estimado
En Crystal Reports deberias crear el enlace como un comando o como una consulta sql y luego la conectas con tu reporte, asi los usuarios solo tendrian que ejecutar la consultas en B1.

Saludos

Estimado gracias por tu respuesta.

No tengo claro cómo crear el enlace; creo entender lo del comando o una consulta sql, exactamente conozco la sintaxis para crear el enlace a la base de datos.

Por lo cual te agradecería si me guías donde puedo obtener la información crear un enlace a la base de datos

Yo hice el siguiente query para la extracción de la data:

En el asistente de base de tatos en Tablas seleccionadas, cree un comando que me extrae la data por medio de una query o consulta, como se ve en las imágenes que siguen:

Esta es la consulta completa que hice:

declare @dbegbs datetime --Ingresar Fecha Año Anterior BC para BS--
set @dbegbs = {?1dbegbs}
declare @dendbs datetime --Ingresar Fecha Año Actual BC para BS--
set @dendbs = {?2dendbs}
declare @dbeger datetime --Ingresar Fecha Inicial BC Año Actual para ER--
set @dbeger = {?3dbger}
declare @dender datetime --Ingresar Fecha Final BC Año Actual para ER--
set @dender = {?4dender}

SELECT
T0.AcctCode AS Cuenta,

T0.acctName AS Nombre,

( SELECT ISNULL(SUM(B.Debit - B.Credit),0) 
  FROM OJDT A INNER JOIN JDT1 B ON A.TransId = B.TransId 
  WHERE B.Account = T0.AcctCode and A.RefDate <= @dbegbs AND B.Account <> '36001011' ) AS Inicial,

( SELECT ISNULL(SUM(B.Debit),0) 
  FROM OJDT A INNER JOIN JDT1 B ON A.TransId = B.TransId 
  WHERE B.Account = T0.AcctCode AND A.RefDate >= @dbeger AND A.RefDate <= @dender AND B.Account <> '35001014' ) AS Debito,

( SELECT ISNULL(SUM(B.Credit),0) 
  FROM OJDT A INNER JOIN JDT1 B ON A.TransId = B.TransId 
  WHERE B.Account = T0.AcctCode AND A.RefDate >= @dbeger AND A.RefDate <= @dender AND B.Account <> '35001014' ) AS Credito,

( SELECT ISNULL(SUM(B.Debit - B.Credit),0) 
  FROM OJDT A INNER JOIN JDT1 B ON A.TransId = B.TransId 
  WHERE B.Account = T0.AcctCode and A.RefDate <= @dendbs AND B.Account <> '36001011' AND B.Account <> '35001014') AS Final

FROM OACT T0

WHERE T0.Postable = 'Y' AND T0.GroupMask IN (1,2,3)

UNION ALL

SELECT
T0.AcctCode AS Cuenta,

T0.acctName AS Nombre,

'0' AS Inicial,

( SELECT ISNULL(SUM(B.Debit),0) 
  FROM OJDT A INNER JOIN JDT1 B ON A.TransId = B.TransId 
  WHERE B.Account = T0.AcctCode AND A.RefDate >= @dbeger AND A.RefDate <= @dender AND A.TransType <> -3 ) AS Debito,

( SELECT ISNULL(SUM(B.Credit),0) 
  FROM OJDT A INNER JOIN JDT1 B ON A.TransId = B.TransId 
  WHERE B.Account = T0.AcctCode AND A.RefDate >= @dbeger AND A.RefDate <= @dender AND A.TransType <> -3 ) AS Credito,

( SELECT ISNULL(SUM(B.Debit - B.Credit),0) 
  FROM OJDT A INNER JOIN JDT1 B ON A.TransId = B.TransId 
  WHERE B.Account = T0.AcctCode AND A.RefDate >= @dbeger AND A.RefDate <= @dender AND A.TransType <> -3 ) AS Final

FROM OACT T0

WHERE T0.Postable = 'Y' AND T0.GroupMask IN (4,5,6,7,8,9,10)

ORDER BY T0.AcctCode

muchas gracias por tu ayuda de antemano

Saludos

Hola, yo he diseñado varios report para diferentes usuarios de SAP BO para SQL.
Según observo en tus imágenes, yo diría que al importar el report en SAP, y luego ejecutarlo desde SAP, solo debe pedir los parámetros.

No llego a observar el problema.

Estimado ocupo que sea ejecutado desde fuera de SAP (desde un visor de informes de Crystal), tengo usuarios que lo utilizan, pero no tienen usuario en SAP, ellos con el reporte realizar análisis y varios informes usando Power BI, y no se quiere comprarles licencias, cuando mucho se compraría una licencia indirecta de SAP.

Tienes razón este reporte en SAP funciona perfectamente. Normalmente yo diseño los reportes de Crystal para que sean ejecutados dentro de SAP.

Saludos

La solución económica es instalar en ese puesto cliente el crystal reports y colocarle el fichero rpt en algún directorio (bien sea del equipo o unidad de red con permisos), en el escirtorio crearle un acceso directo a dicho informe .rpt

Los parámetros de base de datos y usuario los fijas en la primera ejecución y luego en posteriores solo te pedirá el usuario de conexión.

Para ese usuario creas uno nuevo a nivel de sql de solo lectura para que lo usen en esa ejecución…usuario: crystal - constraseña: crystal

Para cualquier otra solución necesitarás un desarrollo.

Hola @betojavicr Es común que haya más usuarios que consulten los informes que los “oficiales con licencia” de SAP. Lo que yo he hecho en mi trabajo para solventar esto es lo siguiente, espero que te sirva alguna de las opciones.

Para usuarios con licencia, SAP WEB. Esto es lo más sencillo ya que se es como si conectaras con SAP B1 desde cualquier lugar.

Dentro de la misma RED: Generas desde Excel una conexión OLE DB Provider for SQL Server, le pides que recuerde tus credenciales, generas tu consulta SQL y el usuario tiene acceso a los datos sin necesidad de tener SAP instalado en su equipo ni tampoco estarse identificando cada vez que lo requiera.

Hay opciones menos ortodoxas pero al final solo estás leyendo, por lo que podrías vincular tu informe ya generado con Google Sheet o Studio.

Saludines

1 me gusta