cancel
Showing results for 
Search instead for 
Did you mean: 

Sp_Notification

Former Member
0 Kudos

Hallo zusammen,

ich beschäftige mich grad für einen Kunden mit den SP_Notifications und versuche die Bedingung einzufügen, dass ein Auftrag nur dann gespeichert werden kann, wenn ein bestimmter Artikel im Auftrag vorhanden ist. Leider klappt das nicht so ganz wie ich es mir vorstelle.

Hat jemand einen Hinweis für mich? Hier ist mein Code:


Declare @DistRule nvarchar(100)
if @object_type = '13' and @transaction_type = N'A'
begin
	select @DistRule = ItemCode from INV1 where ItemCode = @list_of_cols_val_tab_del    
	if (@DistRule,'') = 'ZA-Druck'
    begin
		set @error = -1
		set @error_message = "Artikel ZA-Druck fehlt."				
    end	
end

Gruß Steffen

Accepted Solutions (1)

Accepted Solutions (1)

former_member204969
Active Contributor
0 Kudos

Try this:

If @object_type = '13' and @transaction_type = N'A'
Begin
If exists (select ItemCode from INV1
  where ItemCode ='ZA-Druck'
    and DocEntry= @list_of_cols_val_tab_del ) 
Select @error = -1, @error_message = 'Artikel ZA-Druck fehlt.'			
End

Former Member
0 Kudos

> Try this:

>

If @object_type = '13' and @transaction_type = N'A'
> Begin
> If exists (select ItemCode from INV1
>   where ItemCode ='ZA-Druck'
>     and DocEntry= @list_of_cols_val_tab_del ) 
> Select @error = -1, @error_message = 'Artikel ZA-Druck fehlt.'			
> End

Der Analyser vom Management Studio führt diese Funktion zwar ohne Fehler aus, aber im B1 passiert im Kundenauftrag leider nichts. Eigentlich soll ja der Auftrag ohne den Artikel "ZA-Druck" nicht gespeichert werden können.

Jemand noch eine Idee?

Former Member
0 Kudos

Wenn ich das richtig sehe (auf die schnelle) müsste es heißen:

If @object_type = '13' and @transaction_type = N'A'
 Begin
    If NOT exists (select ItemCode from INV1 where ItemCode ='ZA-Druck' and DocEntry= @list_of_cols_val_tab_del )   
    Begin
      Select @error = -1, @error_message = 'Artikel ZA-Druck fehlt.'			
    End
End

So wie es ist, kann man keinen Auftrag mehr speichern, in welchem der genannte Artikel vorkommt!

hdh

Andreas

Former Member
0 Kudos

Hallo Andreas,

du hast recht mit dem IF NOT, jedoch passiert trotzdem gar nichts. Gibt es zufällig irgendwo ein Log-File. Ich bin echt ratlos. Die Notification ist in den Functions hinterlegt etc. aber ausgeführt wird rein gar nichts.

Grüß

Former Member
0 Kudos

Das ist äußerst merkwürdig. Bist Du auf der richtigen Datenbank?

Ich würde in so einem fall zunächst eine TN einbauen, die IMMER zuschlägt. Dann weiß man es.

Sonst kannst Du es noch umbauen, so zum beispiel:

declare @Anzahl as int
If @object_type = '13' and @transaction_type = N'A'
 Begin
   select @Anzahl = count(*)  from INV1 t0 where t0.docentry=@list_of_cols_val_tab_del AND ItemCode ='ZA-Druck'
   if @Anzahl = 0
    Begin
      Select @error = -1, @error_message = 'Artikel ZA-Druck fehlt.'			
    End
End

hdh

Andreas

Former Member
0 Kudos

Danke dir, die Abfrage funktioniert ohne Probleme.

Ist zwar jetzt für Beleg Typ 13 / Rechnung, aber die Objekt ID zu ändern wird schon klappen.

Verstehe nur nicht, wieso es vorher nicht wollte.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi.....

Please try this......

if @object_type = '13' and @transaction_type= 'A'
begin
	select T0.ItemCode from INV1 T0 where T0.DocEntry= @list_of_cols_val_tab_del    
	Where T0.ItemCode = 'ZA-Druck'
    begin
		set @error = -1
		set @error_message = "Artikel ZA-Druck fehlt."				
    end	
end

Regards,

Rahul