buenas compañeros una consulta alguien sabe como exigir al asesor de ventas que cuando cree el cliente en la tabla OCRD campo CardCode no le permita segir si es numérico solamente ya que en la compañía los creamos con una letra inicial pero algunos no lo tienen presente y lo crean solo numerico por ejemplo B1922222 y ello ponen solo 1922222 sin la B quisiera crear un sp transactions procedure que no los deje seguir si no esta correcto gracias
Hola @anon81684510, en que transacción haces este proceso, podrías explicarnos un poco mas, a que modulo pertenece.
Saludos
OCRD - Esto es definitivamente Business One. Get out of here.
@anon81684510, muevo tu consulta a SAP B1,el equipo de @businessone puede ayudarte mejor con esta consulta.
Saludos.
hola nuevamente nosotros manejamos Sap Business One con base de datos en HANA STUDIO yo he creado uno sp transactionNotification en HANA para bloquear algunos campos y obligar al asesor de ventas que llene cierta información pero ahora requiero que cuando el campo sea solo numérico genere un error no se si existe alguna otra forma de hacerlo por ejemplo yo tengo un SP que genera error si no coloca correo del cliente
IF @object_type = '2' AND @transaction_type IN ('A','U')
BEGIN
IF (SELECT Cments FROM OCRD WHERE DocEntry = @list_of_cols_val_tab_de ) IS NULL
BEGIN
SET @Error = 1
SET @Error = 'error corregir'
END
END
IF :object_type = '2' and (:transaction_type = 'A' or :transaction_type = 'U')
THEN
SELECT COUNT(*)
INTO rs
FROM "PRUEBASMARZO28".OCRD AS T0
WHERE COALESCE (T0."CardCode",'')=''
AND :list_of_cols_val_tab_del = T0."CardCode";
IF :rs >0
THEN error := 107;
error_message := '*****...SP......SP...Se requiere Correo Electronico*****';
END IF;
END IF;
No he trabajado aun con SAP HANA, pero segun veo la sintaxis no es tan diferente. Aca te dejo la validacion del CardCode segun tu requerimiento en el SBO_SP_TransactionNotification para SQL SERVER:
if (@object_type = '2' and @transaction_type in ('A','U'))
begin
declare @CardCode varchar(15), @CardType varchar(1)
select @CardCode = T0.[CardCode]
, @CardType = T0.[CardType]
from OCRD T0
where T0.[CardCode] = @list_of_cols_val_tab_del
if (@CardType = 'C') -- PARA CLIENTES
begin
if (ISNUMERIC(LEFT(LTRIM(@CardCode),1))) -- VERIFICA SI LA PRIMERA LETRA DEL CODIGO ES NUMERICO
begin
select @error = -1
select @error_message = N'El Codigo de Cliente debe Iniciar con Letra.'
goto MensajeError
end
end
end
-- Select the return values
MensajeError:
select @error, @error_message
hola mira este es el código que genere pero el la sentencia LIKE no me funciona cuando le pongo un rango de letras por ejemplo que me valide A al Z solo me lo recibe si tiene la letra C
if :object_type='2' and (:transaction_type='A' or :transaction_type='U') then
rst := 0;
select count(*) into rst from "pruebas"."OCRD"
where "CardType" = 'C' and "CardCode" = :list_of_cols_val_tab_del and not("CardCode" like 'C%');
if :rst>0 then
error := -112;
error_message := 'el codigo usuario debe empezar por la letra C';
end if;
END if;
como están todos alguien me puede colaborar tengo un error en el then el ultimo y no se cual se el problema
if :object_type='2' and (:transaction_type='A' or :transaction_type='U')
then
declare CODE varchar(15);
declare TIPE varchar(1);
rs := 0;
select count (*)
into rs
from "PRUEBASMARZO28"."OCRD"
where :list_of_cols_val_tab_del = T0."CardCode";
if (CardType = 'C') -- PARA CLIENTES
then
if (ISNUMERIC(LEFT(LTRIM(CardCode),1)))
then
IF :rs >0
THEN error := 107;
error_message := '******Sp codigo cliente debe ser alfanumerico******';
end if;
end if;
end if;
ESTO ES PARA SQL SERVER:
if (ISNUMERIC(LEFT(LTRIM(CardCode),1)))
PARA HANA NO EXISTE FUNCION NATIVA DE ISNUMERIC POR LO TANTO PODRIAMOS HACERLO ASI:
if ( leftstr(ltrim(CardCode),1)) IN ('1','2','3','4','5','6','7','8','9','0') )
muchas gracias caballero
Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.