TN Socios de negocio SAP HANA

Cordial saludo
Debo hacer un TN para que no se dejen vacios algunos campos en la creación de socios de negocio, tengo el siguiente código pero siempre me deja crear o actualizar el tercero aun cuando el campo esta vacío.
Ya hice la prueba con:

 T0."Phone1" IS NULL  -- el campo es null
 T0."Phone1" = ''           -- el campo esta vacio
LENGTH(T0."Phone1") IS NULL  -- el conteo del campo es menor a cero o es vacio

Pero nada me funciona, espero me puedan colaborar.

CNT:= 0;
IF object_type = '2' AND (:transaction_type='A' OR :transaction_type='U') THEN

	SELECT COUNT(*) INTO CNT 
	FROM OCRD T0
	WHERE    T0."CardCode" = :list_of_cols_val_tab_del   AND
	(LENGTH(T0."Phone1") IS NULL)
	;
	
	IF :CNT > 1 THEN
		error := 2;   
        error_message := '**** AMS - 009 Pestaña general: Los campos: Teléfono 1, Teléfono Móvil y Correo electrónico no pueden estar vacíos';           
	END IF;
END IF;

Hola

¿y si pruebas a que la longitud sea 0 en lugar de nulo?

Un saludo
Agustín

2 Me gusta

Prueba esto en tu where:

IFNULL(T0."Phone1",0)  = 0
2 Me gusta

Hola @juliancab
Lo agregue asi pero no funciona :frowning:

CNT:= 0;
IF object_type = '2' AND (:transaction_type='A' OR :transaction_type='U') THEN

	SELECT COUNT(*) INTO CNT 
	FROM OCRD T0
	WHERE    T0."CardCode" = :list_of_cols_val_tab_del   AND
	IFNULL(T0."Phone1",0)  = 0
	;
	
	IF :CNT > 1 THEN
		error := 2;   
        error_message := '**** AMS - 009 Pestaña general: Los campos: Teléfono 1, Teléfono Móvil y Correo electrónico no pueden estar vacíos';           
	END IF;
END IF;


Hola @Amarcos
No lo toma en cuenta, cuando hago LENGTH no me trae el cero.

Hola @camilog puedes intentar con algo así (pongo la estructura y lo reemplazas con tus campos reales):

SELECT IFNULL ("Campo",'XX') INTO variable FROM X
WHERE X

IF Variable == 'XX' THEN
END IF;

Saludos.

Hola @JhosserRomero

La he hecho así y ahora el problema es que cuando ingreso datos no toma en cuenta el valor ingresado y siempre lo toma como campo null

CNT:= 0;
IF object_type = '2' AND (:transaction_type='A' OR :transaction_type='U') THEN

	SELECT IFNULL(T0."Phone1",2) INTO CNT 
	FROM OCRD T0
	WHERE T0."CardCode" = :list_of_cols_val_tab_del  ;
	
	IF :CNT > 1 THEN
		error := 2;   
        error_message := '**** AMS - 009 Pestaña general: Los campos: Teléfono 1, Teléfono Móvil y Correo electrónico no pueden estar vacíos';           
	END IF;
END IF;

1 me gusta

Hola @camilog

El problema está en lo anterior. Validando un tercero, la cantidad nunca va ser mayor a 1.
Reemplaza lo anterior por lo siguiente:

IF :CNT > 0 THEN

Andres Ramirez Jaramillo :colombia:

3 Me gusta

Hola @camilog, a mi me funcionó con lo que te sugerí, te lo envío completo para que lo pruebes:

IF object_type = '2' AND (:transaction_type='A' OR :transaction_type='U') THEN
DECLARE var1 nvarchar(20);

	SELECT IFNULL(T0."Phone1",'XX') INTO var1 
	FROM OCRD T0
	WHERE T0."CardCode" = :list_of_cols_val_tab_del  ;
	
	IF :var1 ='XX' THEN
		error := 2;   
        error_message := '**** AMS - 009 Pestaña general: Los campos: Teléfono 1, Teléfono Móvil y Correo electrónico no pueden estar vacíos';           
	END IF;
END IF;

Saludos.

1 me gusta

Hola @andresramirez
Es correcto, no había notado eso jaja así nunca me iba a funcionar >.< muchas gracias!

1 me gusta

Desde tu primer script cuando corregiste con IFNULL hubiese funcionado, acabo de ver los mensajes. Pero que bueno lo solucionaste

Jaja @juliancab gracias
Si le hice el cambio al primer código y funcionó correctamente, todos pasamos por encima de ese pequeño detalle pero tan importante jajaja