Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas

miércoles, 6 de octubre de 2010

Autorizaciones dentro de SAP Business One con stored procedures



Dentro de un sistema de gestión es importante decir hasta donde podrá acceder el poder de un usuario. Dentro de nuestro ERP tenemos algunos modelos de autorización predefinidos. Dentro de Gestion/Procedimientos de autorización/modelos de autorización, éstos modelos deben de ser autorizados por usuarios superiores, estos se registran en una etapa de autorización la cual se crea agregando su nombre, que usuarios serán los autorizadores y de que departamento.

Dentro de modelos de autorización encontramos 4 pestañas





El modelo de autorización puede estar o no activo. esto cuando marcas la casilla.

Autor: Donde agregaremos a los usuarios que intentaran crear el documento a autorizar.
Documentos: Donde encontraras los documentos a los que se puede agregar el modelo de autorización.
Etapas: Que es donde agregaras la etapa que antes creaste, es decir quienes autorizaran, estos usuarios están dentro de la etapa o etapas que agregaras aquí.
Condiciones: Aqui ya hay condiciones predefinidas, como el límite de crédito o el límite de comprometido, el total del documento, etc. pero en esta parte esta lo interesante por que también puedes agregar tus propias autorizaciones por medio de stored procedures o consultas.




Para poder utilizarlo la condición debe de ser de vencimiento tipo indefinido,ratio mayor o igual y valor a 0.01





El stored procedure se invoca desde el query manager con código de SQL y se traspasa los datos requeridos con las variables de SAP.




y las variables se pasan al area de programación de sql dentro de la base de datos.


Y las variables que llegan pueden ser procesadas mediante T-SQL. Lo he utilizado y es una manera mas de personalizar el sistema.


Espero que les pueda servir.

martes, 22 de septiembre de 2009

more work with SQL SERVER 2005 & Win Server 2003 ent a 32 bits.

Bueno, hace casi 6 meses instale el windows server 2003 enterprise a 64 bits por que tenía problemas de ralentización con mi sistema. Bueno, tuve que mover ciertos parámetros dentro del SQL server 2005, es decir tuve que tunearlo.
Algo muy importante fue activar el AWE. Primero definiré para y por que sirve. El AWE es un modo que se establece para el manejo de memoria dentro de las parametrizaciones de SQL SERVER 2005.
Lo que hace el AWE es asignar mas memoria física independientemente de cuanto espacio de direcciones virtuales tenga, (al menos así lo entendí yo).
Por ejemplo los sistemas que trabajan a 32 bits es decir 2^4 no pueden trabajar a mas de 4 GB, entonces al habilitar el AWE el sistema operativo puede reconocer si tu hardware tiene mas de esa cantidad de memoria física.
Aunque una CPU puede ser internamente de 64 bits, su bus de datos o bus de direcciones externos pueden tener un tamaño diferente, más grande o más pequeño y el término se utiliza habitualmente para describir también el tamaño de estos buses.
básicamente de ahi viene el termino de 86x(32bits) o 64x.
Bueno, como lo dije antes estas diferencias hacen que tu sistema operativo independientemente si tu hardware tiene N ranuras de N mb No te reconozca a mas Gb. :(, una lástima verdad? de ahi se vale el windows server 2003 std edition para bloquearte la memoria y hacer que compres otro sistema operativo mas caro para poder manejar el total de capacidad de tu server ... ejeje:P como dice Juan (eso es su negocio!), pues si, pero yo insisto que chale.
mmm Wueno.

Algo que aprendí tambien es que cuando habilitas el AWE en SQL SERVER 2005, tienes que habilitar las opciones de max y min memory puesto que si no lo habilitas el server "inteligentemente" bloqueará la memoria necesaria para que tu sistema operativo funcione correctamente. ah ah.
Les pondre el código para habilitar estas opciones de manera manual, ya que si les da hueva pueden habilitarlo desde el Interfaz gráfica del manejador.

sp_configure 'min server memory', 1024
RECONFIGURE
GO
sp_configure 'max server memory', 6144
RECONFIGURE GO

Es importante tambien configurarlo si tienes mas de una instancia de SQL.

Wueno, ahi no acaba todo.

Ese cambio lo hice y parametrice y todo quedo funcionando perfecto, pero mi version de windows server enterprise era trial, así es que generosamente microsoft me dio 120 días para probar su software. Los cuales aproveche al 100%.

Hace practicamente casi un mes venía programando el cambio del software, pero como esto no se puede hacer entre semana tenía que hacerlo un fin ycomo no dependo de mi misma para abrir y cerrar la oficina y mucho menos para mi server de licencias de mi sistema pues tuve que esperar 3 semanas para esto hasta cuando mi sistema operativo me decía, -"ya tienes que cambiarme por que te quedan solo 7 días"-, para este entonces yo habíamos comprado la versión enterprise de windows. y había pedido los medios de instalación en windows server ent 2008, lo bueno que me enviaron a 64bits y a 86x.
Siguiendo, sabado día maratónico, primero había bajado los archivos de la pagina de microsoft eopen para bajar las versiones de 2003 por cualquier cosa pasará, pero baje el 64bits y 32 bits. ya tenía todo listo empece, el respaldo tardo horas :s sí un moustrito de 17 GB y con una conexión a 100Mbs teóricos es una lentitud total :s. ya una vez pasados los respaldos a otra maquina para que no hubiere pérdida, pues mis archivos estan en un disco RAID 5 y el SO en un RAID 0. pues bueno mi server es un dell y esos vienen con un disco Started, pero bueno el chiste es que no quería, por si las moscas, hubiera por ahí algún evento desagradable.
Primero inserte el disco boot, sí todo bien y sí dejar intacto los arreglos RAID así como estan, sí ... luego next next next, después inserte el disco win srvr 2003 ent 64bits, pero no al momento de instalación del SO me marco un error. Ah bueno, mejor le meto el Disco del 2008, este no debe de fallar, todo bien, todo bien, instale sql me marco algunos errores de incompatibilidad con el visual debugger, pero bueno ahi vamos, si todo quedo bien y ya habia instalado office, sql server, hice el restore y pum el servidor de licencias no era compatible, fregadoooooooo por que me dan un documento que dice que si y no me dicen que solo después del parche 49. fregado. ya eran las 9 de la noche, plan emergente, instalar win srvr 2003 ent de 32 bits, sí, este sí jalo, todo bien y solo me falto instalar las licencias para poder seguir trabajando. eso ya lo hice el domingo en la noche, pero ah no, algo me faltooo... el win solo reconoce 3.5 GB, no mas??¡cielos!... mi sistema esta lento, -mary el sistema se trabo!- chiale...nooooooooooo no puede ser!!!, sí es enterprise el enterprise maneja hasta 64 Gb... por que no mas me reconoce 3?? por que sí tengo 8.5 Gb.???... ah wueno buscaba y buscaba pero no había algo que me dijera... pero no recorde que sí moví el boot ini pero no reinicie el server, ahhh, wueno mi plan era resinstalar todo pero con el de 64bits... pero no... dije bueno habilito el /PAE y a ver si me reconoce y reinicio no sin antes hacer mi respaldo.. para esto mejor lo conecte directo a una pc que tuviera tarjeta de red de 1Gb así la transferencia fue mas rápida, por supueste tengo un switch 3com que me maneja 10/100/1000 Mbs ...AJAJA... BUENO.. teóricamente 1 Gb. pero sí reinicie y por fin ví en las propiedades de mi PC los 8.5 Y AHORA ya veo con gusto que el SQL y lahabilitación del AWE me dan mas de 6.87 YEAAAAAAA!, AHORA SI SOY FELIZ. a ver a quien le sirve la anecdota. espero que si.

martes, 11 de agosto de 2009

SP, TRANSACT SQL Y UDF AND VIEW...

Bueno, en el mundo de la bases de datos podemos encontrarnos con diversos manejadores que tienen herramientas muy buenas para ayudarnos a salir de los problemas que crea el tener tanta información en los sistemas de gestión. Los cuales no sirven de nada si no sabes realizar unos buenos reportes, además de que éstos mismos sean útiles para el fin que son creados.

Bueno empezaré por definir cada una de estas valiosas herramientas que trae SQL server 2005 dentro de ella.

STORED PROCEDURE. Este nombre se le da por ser procedimiento que se ejecuta dentro del motor de la base de datos, son muy efectivos para no sobrecargar la red cuando se ejecutan, ya que todo el resultado se envía al cliente y no sobrecarga la red con las operaciones de extracción y devolución de datos.

VIEWs: en mi definición las vistas son pequeñas tablas que se pueden generar apartir de las tablas principales de la base de datos. Éstas pueden ser utilizadas para tener reportes sin necesidad de un código extra y sin necesidad de disminuir el rendimiento del servidor al momento de ejecutarlos. Las vistas, según entendí yo, se estan actualizando continuamente con los procesos de consulta que se hacen a éstas. Pero a la par de ser ventaja esto viene tambien a disminuir también un poco al rendimiento de los procesos de update, delete, etc. de los registros. pues no solo escriben en la tabla principal, si no los datos se reflejan en las vistas.

UDF. User defined function. En español funciones definidas por el usuario, estas utilizan código de transact sql. Las funciones definidas por el usuario se crean con la instrucción CREATE FUNCTION, se modifican con la instrucción ALTER FUNCTION y se quitan con la instrucción DROP FUNCTION. Los nombres completos de las funciones definidas por el usuario (schema_name.function_name) deben ser únicos. Además de que en teoría dan mas rendimiento que las vistas.

Bueno, estos son algunos conceptos que en estos días he aprendido.

Ahorita estoy definiendo que es lo que tendré que hacer con un reporte que me arroje ventas reales por sucursal, familias de artículos y me arroje el promedio.

Ahora, el código que tengo es el siguiente:

declare @familia as varchar
set @familia=(select distinct(itmsgrpcod) from vtaxfam where itmsgrpnam='[%0]')
SELECT itemcode,sum(quantity) as 'total ventas', sum(quantity)/12 as 'total promedio'
FROM vtaxfam
WHERE itemcode IS NOT NULL and docdate>'2008/05/02' and docdate<'2009/05/31' and @familia=itmsgrpcod group BY itemcode Tengo que hacer unos joins o unas uniones para que me salgacomo quiero, pero ahi voy, trataré de entender bien como sacar esto. :) cuando lo haga lo posteo.