Ayuda SAP

Realizar un sp_trasactionnotification en sap


#1

buen día amigos alguien me puede ayudar con este caso estoy tratando de realizar una SP en sap para validar dos campos por ejemplo el método de pago de una factura que si en condiciones de pago selecciono (45 dias) en un campo llamado tipo de venta quede crédito o que si en condiciones de pago escogió (1 dia) en tipo de venta quede (contado)

image

image


#2

Buen día @jeisson_tria1 y no te funciona una búsqueda formateada, así cada vez que seleccionan alguna condición de pago, se actualiza el campo tipo de venta.


#3

gracias por tu pronta respuesta no sabría como realizarlo con una búsqueda formateada ya que he realizado algunas búsquedas muy básicas y conozco muy poco su funcionamiento


#4

En el campo de búsqueda puedes ver muchos temas relacionados a BF.

Captura


#5

Hola @jeisson_tria1 te voy a dejar un ejemplo, es algo muy parecido creería yo, si no eres capaz de hacerlo nos avisas.

–(Leonardo70338)La lista de precios debe ser igual al campo de usuario Perfil del Cliente.Sp

/IF :object_type=‘2’ AND (:transaction_type=‘A’ OR :transaction_type=‘U’) THEN
SELECT count(
) into cont FROM OCRD T0
INNER JOIN “@GVS_PERFIL” T1 ON T0.“U_GVS_PerfClie” = T1.“Code”
WHERE T1.“U_GVS_ListP”<>T0.“ListNum” and T0.“CardCode” =:list_of_cols_val_tab_del;

  IF :cont>0 THEN
        error := 1;
        error_message := 'SP: La lista de precios debe ser igual al campo Perfil Cliente';
  END IF;

END IF;*/


#6
La lista de precios debe ser igual al campo de usuario Perfil del Cliente.Sp

/*IF :object_type='2' AND (:transaction_type='A' OR :transaction_type='U') THEN
    SELECT count(*) into cont FROM OCRD T0
    INNER JOIN "@GVS_PERFIL" T1 ON T0."U_GVS_PerfClie" = T1."Code" 
    WHERE T1."U_GVS_ListP"<>T0."ListNum" and T0."CardCode" =:list_of_cols_val_tab_del;
     
      IF :cont>0 THEN
            error := 1;
            error_message := 'SP: La lista de precios debe ser igual al campo Perfil Cliente';
      END IF;
 END IF;*/

#7

hola leonardo70338 muchas gracias por tu respuesta, una pregunta sera que no existe una manera de realizarlo con campos diferentes ya que el campo condiciones de pago es diferente a tipo de venta como lo muestro en la imagen


#8

@jeisson_tria1 una pregunta, o sea en Tipo de Venta debe aparecer contado solamente cuando se elija en condiciones de pago 1 día verdad? y si en condiciones de pago se elije cualquier otra opción distinta a 1 día, debe entonces validar que en Tipo de Venta ponga crédito, es así?

otra pregunta en Tipo de Venta el contado es el que aparece como 1D?


#9

si señor algo así, la idea es que si condiciones de pago esta a 1 día en tipo de venta debe seleccionar mostrador ya que el pago es inmediato si escoje 2 días o mas es a en condiciones de pago entonces el tipo de venta es crédito


#10

Vale @jeisson_tria1 creería que hay dos formas:

1. Hacer dos SP uno que controle el contado (mostrador) y otro que controle el crédito, sería mas o menos de esta forma:

  • suponiendo que el GroupNum de 1 Día fuera 1 yo haría lo siguiente para controlar el contado.
/*IF :object_type='2' AND (:transaction_type='A' OR :transaction_type='U') THEN
    SELECT count(*) into cont FROM OCRD T0
    WHERE T0."CardCode" =:list_of_cols_val_tab_del
	AND T0."GroupNum"=1 AND T0."U_TipoVenta"<>'FM';
     
      IF :cont>0 THEN
            error := 1;
            error_message := 'SP: El Tipo de Venta seleccionado no corresponde a la condición de pago';
      END IF;
 END IF;*/
  • Para el crédito lo controlaría de esta manera:
/*IF :object_type='2' AND (:transaction_type='A' OR :transaction_type='U') THEN
    SELECT count(*) into cont FROM OCRD T0
    WHERE T0."CardCode" =:list_of_cols_val_tab_del
	AND T0."GroupNum"<>1 AND T0."U_TipoVenta"<>'FC';
     
      IF :cont>0 THEN
            error := 1;
            error_message := 'SP: El Tipo de Venta seleccionado no corresponde a la condición de pago';
      END IF;
 END IF;*/

Por favor valídame si el siguiente código que te voy a poner me logra controlar las dos formas de pago en un solo SP

 /*IF :object_type='2' AND (:transaction_type='A' OR :transaction_type='U') THEN
    SELECT count(*) into cont FROM OCRD T0
    WHERE T0."CardCode" =:list_of_cols_val_tab_del
	AND (T0."GroupNum"=1 AND T0."U_TipoVenta"<>'FM')
	OR (T0."GroupNum"<>1 AND T0."U_TipoVenta"<>'FC');
     
      IF :cont>0 THEN
            error := 1;
            error_message := 'SP: El Tipo de Venta seleccionado no corresponde a la condición de pago';
      END IF;
 END IF;*/

Me avisas por favor si te sirve, obviamente debes hacer las modificaciones de los nombre del campo de usuario como tú lo manejas.


#11

El siguiente ejemplo es una query formateada , Para SAP BO en SQL,
Donde los valores de mi base para las condiciones de pago son :
6 = Efectivo y cheque a 45 dias
120 = efectivo a 30 dias
123 = cheque al dia

y los valores 1,2,3,4 son del campo de usuario que quiero que tome un valor segun la condicion seleccionada.

Debes crear la query en el query manager , guardarla y luego asignarla al formulario de ordenes de ventas, en el campo de usuario que quieres que cambie. (se asigna seleccionando el campo y presionando Ctrl + Alt + F2)

Declare @CondPago nvarchar(10)
set @CondPago = isnull($[ORDR.GroupNum] ,’’)
if(@CondPago = ‘6’)
Begin
Select 1
end
if(@CondPago = ‘120’)
Begin
Select 2
end
if(@CondPago = ‘123’)
Begin
Select 3
end
else
begin
Select 4
end

Observación: Respecto de los transaction que postearon , son transaction escritos para SAP BO for HANA, para SAP BO for SQL cambia un poco la sintaxis