Muetze
16th July 2004, 10:58
Hallo,
wir arbeiten zwar schon lange mit BaaN, haben aber keine Erfahrungen mit dem Application Function Server.
Hat damit schon jemand grundlegende Erfahrungen gemacht ?
Installation, Bedienbarkeit, wie und wo zu finden.

Ich bin für jede Anregung dankbar.

Gruss
Muetze
:confused:

gentercz
16th July 2004, 15:05
Hi Mütze,

ein vorab: AFS ist einfach (und) genial.
Damit kann man recht leicht BaaN Standard Sessions (incl. verarbeitung) in eigene Programme integrieren.

z.B. Automatisieren von Abläufen: Auslag.vorschl. erstellen drucken und freigeben.

Grundsätzlich gibt es von BaaN eine offizielle Liste mit allen Sessions, die "AFS-enabled" sind, und die werden immer mehr (Link an anderer Stelle im Board).
Jedoch ist immer der aktuelle SP zu empfehlen. Wir sind bei SP12 und AFS funktioniert mittlerweile zum autom. Anlegen von VK und Bestellungen ...

Eine ausführlich AFS Doku findest du im Board (or maile mich an, ich schicke dir eine, ggf. mit ein paar Beispielen).

offtopic: Ich habe an anderer Stelle gelesen, dass su Erfahrung mit einer chinesischer BaaN Installation hast, könntest du mir bitte eine PM oder Email hierzu schicken, damit ich ein paar heisse Fragen loswerden kann ?!?!

Ansonsten wenn noch Hilfe zu AFS gewünscht ist, kann ich gerne helfen.

Gruß
jochen

ulrich.fuchs
19th July 2004, 21:14
Der AFS kann Baan-Sessions "fernsteuern"; er steht in Baan IVc4 ab etwa Servicepack 7 im Standard zur Verfügung, muss also nicht extra zugekauft, installiert, oder freigeschaltet werden. Eine Development-Umgebung ist allerdings Voraussetzung, um sinnvoll mit dem AFS arbeiten zu können.

Alle Funktionen einer Baan-Session lassen sich damit aus einem anderen Baan-Programm heraus ansprechen. Das schafft ungeheure neue Möglichkeiten. Man kann zum Beispiel...

... eine einfache Eingabemaske erzeugen, bei der nur drei Felder einzugeben sind (z.B. Projekt, Artikelnummer und Lager). Danach wird automatisch(!) ein Lagerauftrag erstellt, dafür ein Auslagerungsvorschlag erstellt und der Auslagerungsvorschlag freigegeben. Dabei werden die entsprechenden Standardsessions im Hintergrund angestartet, ohne dass man sie anpassen muss!

... eine einfache Eingabemaske für Produktionsauftrag, Menge und Zeit bauen, die damit automatisch(!) die Standard-Zeiterfassungs-Session füttert und den Produktionsauftrag über die entsprechende Session fertigmeldet. Ohne dass man den Baan Standard dafür anpassen muss!

... Schnittstellen schaffen, die nicht direkt in Tabellen schreiben, sondern die Daten über Baan-Standardsessions einbuchen, ohne dass man diese Sessions anpassen muss!

Das sind nur drei von unendlich vielen Möglichkeiten, die der AFS bietet. Mit ihm lassen sich kostengünstigst Barcode-Lösungen in vielen Bereichen aufsetzen. Mit ihm lassen sich "parametrierbare Jobs" bauen, die man Endbenutzern zur Verfügung stellen kann. Internes EDI in Multisite-Umgebungen kann durch eine wesentlich wartungsärmere Lösung ersetzt werden, etc... Die Zeit, die zur Bearbeitung vieler Geschäftsprozesse nötig ist, lässt sich mit dem AFS dramatisch verkürzen!

Viele bestehenden Anpassungen werden beim Einsatz von AFS überflüssig und können rückgebaut werden: der AFS spart Zeit und Kosten bei Baan-Upgrades.

Der benötigte Programmieraufwand ist minimal: Eine komplette Barcode-Anwendung (Arbeitsgänge fertigmelden, Produktionsauftrag fertigmelden, Zeit erfassen) über eine einzige Baan-Session lässt sich z.B. innerhalb von 2-3 Arbeitstagen realisieren. Dabei werden nur neue Programme erstellt, Standard-Baan-Sessions werden genutzt, aber (außer in ganz seltenen Ausnahmefälllen) nicht verändert!

Ich verwende den AFS erfolgreich in meinen Projekten seit über vier Jahren (seit den ersten Beta-Versionen) und habe auch schon mehrere meiner Kunden in der Anwendung geschult. Am besten geht sowas in einem ein- bis zweitägigen Workshop anhand eines konkreten Projektes, in dem man die wesentlichen Funktionen des AFS mal durchexerzieren kann. Bei Bedarf bin ich hier natürlich gerne zu zivilen Preisen dienlich!

Ulrich Fuchs

vahdani
20th July 2004, 18:25
Hallo Ullrich,

ich schreibe dies da du das Wörtchen "Zeiterfassung" ein paar Mal in deinem Beitrag erwähnt hast, und dabei meintest und ich zitiere:
Der benötigte Programmieraufwand ist minimal: Eine komplette Barcode-Anwendung (Arbeitsgänge fertigmelden, Produktionsauftrag fertigmelden, Zeit erfassen) über eine einzige Baan-Session lässt sich z.B. innerhalb von 2-3 Arbeitstagen realisieren.
Ich hate Mal drei Tage lang versucht die Session "tihra1101m000" per AFS zu steuern, leider ohne Erfolg.
Vorauf ich hinaus will: Wenn du den Trick verraten würdest oder besser noch ein Paar diene Codezeilen den Allgemeinheit zugänglich machen könntest, wäre ich dir seh..rrr dankbar.

Grüße, und.....

ulrich.fuchs
23rd July 2004, 12:25
Menno, mit irgendwas muss ich doch auch mein Geld verdienen... Es gibt keinen Trick, das ganze ist ziemlich simpel. Möglicherweise behandlest Du die Messages nicht, die die Session bringt? Oder Du hast noch einen ganz alten Service-Pack-Stand? Den Code kann ich leider nicht posten, der gehört natürlich - wie allgemein bei Entwicklungen üblich - meinem Kunden. Aber Du kannst Deinen Code ja hier hochladen, vielleicht sehe ich dann, wo das Promlem liegt.

Ulrich

vahdani
23rd July 2004, 13:07
Was mach ich denn hier falsch? (Dies ist glaube ich nur eine der varianten, die ich versucht habe!)

function domain tcbool enter.times( domain tcemno i.emno,
domain tcdate i.date,
domain tckoht i.koht,
domain tcpdno i.pdno,
domain tcopno i.opno,
domain tisfc.prtm i.hrea,
domain tiqep1 i.qcmp,
domain tiqep1 i.qrjc,
ref domain tcmcs.str100 o.emsg)
{
long i.year, i.week, i.weekday, i.yearday
long ret

o.emsg = ""

if i.koht = tckoht.production then
select tisfc010.*
from tisfc010
where _index1 = {:i.pdno, :i.opno}
selectdo
selectempty
o.emsg = "Position in Produktionsplannung nicht vorhanden!"
return(false)
endselect
endif

db.set.to.default(ttihra100)

num.to.week(i.date, i.weekday, i.yearday, i.week, i.year)

tihra100.year = i.year
tihra100.week = i.week
tihra100.dayn = ltoe(i.weekday)
tihra100.emno = i.emno
tihra100.hrdt = i.date
tihra100.koht = i.koht
tihra100.pdno = tisfc010.pdno
tihra100.opno = tisfc010.opno
tihra100.tano = tisfc010.tano

boi.call = "tiboidllbit001.create"
boi.week.day.no = i.weekday

f1101m000.put.Year(i.year)
f1101m000.put.Week(i.week)
f1101m000.put.Employee(i.emno)

ret = f1101m000.set.view( )

f1101m000.put.Transaction_Type(i.koht)
f1101m000.put.tihra100.pdno(i.pdno)
f1101m000.put.tihra100.opno(i.opno)
f1101m000.put.tihra100.tano(tisfc010.tano)
f1101m000.put.Hour_Date(i.date)

f1101m000.put.Start_Day(tihra100.dayn)
f1101m000.put.End_Day(tihra100.dayn)
f1101m000.put.Actual_Man_Hours(i.hrea)
| f1101m000.put.Actual_Machine_Hours(i.hrea)
f1101m000.put.Quantity_Completed(i.qcmp)
f1101m000.put.tihra100.qrjc(i.qrjc)

f1101m000.insert(true, o.emsg)

f1101m000.end( )

return(isspace(o.emsg))
}

ulrich.fuchs
27th July 2004, 19:53
Sorry für die etwas verspätete Antwort, aber ich war die letzten Tage ziemlich eingespannt.

Du scheinst nicht den Application Function Server zu benutzen, sondern eine mit ttstpcreatedll erzeugte DLL. Das funktioniert in der Regel nicht; dieses stpcreatedll erzeugt (meines Wissen auch nur, sofern der Quelltext(!) der zu steuernden Baan-Session vorhanden ist), ein Skript, das die eigentlichen AFS-Aufrufe wrapped. Das muss dann aber meist noch händisch angepasst werden, bei einer komplexen Session wie der Zeitrückmeldung ist es praktisch ausgeschlossen, dass Du diese DLL einfach so benutzen kannst.

Benutzt Du den AFS "klassisch" (was ich immer empfehlen würde, die zwischen-Dll schafft eine überflüssige Softwareebene), dann sind das die Funktionen, die alle mit "stpapi....." anfangen. Wie gesagt, ich biete hier auch Beratung an ;-)

Uli