Campo CardCode alfanumerico

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.

2 Me gusta

@anon81684510, muevo tu consulta a SAP B1,el equipo de @businessone puede ayudarte mejor con esta consulta.

Saludos.

1 me gusta

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;

1 me gusta

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
2 Me gusta

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.