Ayuda SAP

Factura Deudores condición


#1

Muy buenos días estimado amigos de esta linda comunidad,
Necesito de su apoyo, resulta que tengo un requerimiento a nivel de Factura deudores, se necesita que el prefijo de la factura quede amarrado a la ciudad automaticamente. Me explico cuando uno realiza la factura llena los datos del cliente, luego se continua con el cargue del articulo en esta linea hay una columna que tengo que dice ciudad el cual ya están configuradas previamente,¿Como puedo hacer para unir estos dos campos esto con el fin de que sea automático y obligatorio?
Les dejo una imagen para que me puedan entender un poco mas lo que se desea

Gracias


#2

Hola @GiancarloB puedes crear una tabla de referencia y después en el campo CIUDAD crear una búsqueda formateada que se ejecute de manera automática al ingresar el número de articulo.

Tabla

Code Name Serie CIUDAD
1 1 4 1
2 2 5 2
3 3 6 3
4 4 7 4

Debes tener en cuenta que para que exista una relación la serie que coloques en la tabla de referencia deberá ser el valor series de la tabla OINV o hacer una union a la tabla NNM1 para poder mandar llamar el campo seriesName

Y la búsqueda formateada sería mas o menos así

SELECT A.U_CIUDAD from TuTabla A where A.U_serie = $[$OINV.Series]

Desde mi punto de vistas esta es la opción mas sencilla, otra seria hacer un query mas complejo que tome la lógica de la tabla de referencia, (utilizar case when o crear un cursor) te ahorras la tabla pero pondrás código fijo (se les corta los dedos a quienes hagan eso).

De esta manera se solventa la necesidad de unir y que sea automático, para que sea obligatorio podrías poner una validación en el TN para impedir la creación del documento si carece de este valor, validación que no se ejecutará porque al ser automático se pretende que siempre tenga un valor, pero podrá ser un candado más por si alguien realiza una manipulación manual.

Saludos,


#3

:astonished::disappointed_relieved:ops, @pcarrasco, te soy sincero nunca he manejado una busqueda formateada buuuu.


#4

Hola

Checa este video https://www.youtube.com/watch?v=-v1HVzKe-8o y esta dirección
h_tp://www.qualityinfosolutions.com/crear-busquedas-formateadas-en-sap-business-one/

Otra cosa que puedes hacer es apoyarte con tu partner y plantear tu necesidad, pon atención en lo que hacen y en futuras ocasiones lo podrás realizar tu mismo.

Saludos.


#5

Mil gracias @pcarrasco, como siempre por tu apoyo, voy a chequearlo.


#6

Hola @Pcarrasco, una pregunta, si se realizara por SBO_SP_TransactionNotification el cual obliga al usuario a colocar la ciudad y asi no le permita crear la factura al crearla ¿tambien serviria?, trate de realizar como el código pero no funciona, me podrias dar una ayuda por favor, mira este es el codigo

IF ((@object_type = '4') AND (@transaction_type = 'A'))
BEGIN
IF 
(SELECT OcrName from OOCR WHERE DocEntry = @list_of_cols_val_tab_del) IS NULL
BEGIN
SELECT @error = 1
SELECT @error_message = 'VERIFICAR CODIGO DE CIUDAD'
END
END

Gracias


#7

Hola @GiancarloB

De entrada tu ObjetType es incorrecto, puedes verificar con un query cual es el correspondiente de acuerdo al documento en cuestión, para factura deudor es el 13

SELECT "ObjType" from OINV

Hecha un vistazo a esta dirección h_tps://blogs.sap.com/2017/04/27/list-of-object-types/

Ahora en tu consulta colocas la tabla OCCR debería ser la INV1, no ? verifica también que OcrName sea tu CIUDAD

Por lo demás se ve bien.

Saludos.


#8

Hola @pcarrasco

Bueno te cuento realice el proceso por SBO_SP_TransactionNotification, y me quedo asi:

IF ((@object_type = ‘13’) AND (@transaction_type = ‘A’))
BEGIN
IF
(SELECT ObjType From OINV WHERE DocType = @list_of_cols_val_tab_del) IS NULL
BEGIN
SELECT @error = 1
SELECT @error_message = ‘VERIFICAR CODIGO DE CIUDAD’
END
END

Al generar la factura me obliga a colocarle la cuidad genial, pero se me presento un problema y es que a pesar de que se le asigno la ciudad, no me permite crearla, no se si estoy haciendo algo mal, me podrias sugerir algo por fa, mira la imagen.
Gracias
Imagen_01


#9

Hola @GiancarloB No tengo SQL para probar la consulta pero mas o menos podría funcionar así

declare @ciudad  -- Declaras una variable 

If object_type = '13' AND  @transaction_type IN  ('A','U')

Select @ciudad = T1.ObjType  
        from OINV T0
        inner join INV1 T1 on T0.DocNum = T1.DocNum
       where  T0.DocNum = @list_of_cols_val_tab_del 
if @ciudad is null
	  begin 
	  	    select @error = -000
        select @error_message = 'Error - El campo ciudad es obligatorio'
     end
end 

O verifica este vídeo https://www.youtube.com/watch?v=GFmG7pKIM8U
Saludos.


#10

Como complemento a la respuesta de @pcarrasco, podrías intentar también con un count