Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden sechs neue Funktionen beschrieben, mit denen Entwickler vorhandene Report Writer-Berichte ändern können, anstatt alternative Berichte in ihren Drittanbieterverzeichnissen zu erstellen.
Gilt für: Microsoft Dynamics GP
Ursprüngliche KB-Nummer: 888884
Einführung
Drittanbieterintegrationen können jetzt Funktionstrigger verwenden, um Drittanbieterdaten an Report Writer-Berichte in Dexterity in Microsoft Dynamics GP und in Microsoft Business Solutions - Great Plains 8.0 zurückzugeben. Entwickler können diese Trigger verwenden, anstatt alternative Berichte zu erstellen.
Weitere Informationen
Entwickler, die Integrationen in Microsoft Dynamics GP-Fenster schreiben, speichern ihre Daten in Tabellen, die parallel zur Microsoft Dynamics GP-Tabelle sind. Die neuen Felder werden häufig zum Microsoft Dynamics GP-Fenster oder zu einem neuen Fenster hinzugefügt, das sich neben dem ursprünglichen Fenster befindet. Um die Daten zu drucken, kann der Benutzer die parallele Tabelle zu einem vorhandenen Bericht hinzufügen. Oder häufiger erstellt der Entwickler Report Writer-Funktionen, um die benutzerdefinierten Daten an den Bericht zurückzugeben. In beiden Fällen muss der Bericht als alternativer Bericht zum Drittanbieterprodukt erstellt werden.
Leider wurden im Bericht bereits große Anpassungen vorgenommen, und diese Änderungen müssen im alternativen Bericht im Wörterbuch für Berichte von Drittanbietern neu erstellt werden. Um dieses Problem zu beheben, wurden sechs neue Funktionen speziell eingeführt, um einen Integrationspunkt eines Drittanbieters mit Microsoft Dynamics GP 9.0 Dexterity und mit Report Writer zu erstellen.
Diese Skripts sind so konzipiert, dass generische Funktionsaufrufe in Report Writer bereitgestellt werden, die der Drittanbieter auslösen kann, um die angeforderten Daten zurückzugeben. Wenn der Entwickler diese Skripts verwendet, ist kein alternativer Bericht erforderlich. Darüber hinaus kann der Kunde den zuvor angepassten Bericht weiterhin verwenden.
Neue Funktionen des Report Writers sollen vornehmlich Zeichenfolgen- oder Währungsdaten für parallele Tabellen zurückgeben, die in das Sales Order Processing (SOP) oder in die Purchase Order Processing (POP) integriert sind. Diese Funktionen können jedoch für jeden Datentyp verwendet werden. Die Parameter der Funktionen haben vordefinierte Verwendungsmöglichkeiten. Der Entwickler kann diese Parameter jedoch auch für andere Zwecke verwenden.
Die Funktion rw_TableHeaderCurrency
function returns currency sData;
in integer dict_id;{Dictionary ID}
in string report_name;{Report Name}
in string sNumber;{control field}
in integer sType;{control field}
in integer iControl;{which piece of data to return}
Diese Funktion gibt einen Währungsbetrag oder eine ganze Zahl an das berechnete Feld zurück.
Der erste Parameter ist die Wörterbuch-ID des Drittanbieterprodukts, das das berechnete Feld verwenden muss. Die Absicht besteht darin, dass das Drittanbieterprodukt den dict_id Parameter anhand seiner eigenen Wörterbuch-ID überprüft und dann beendet, wenn die Funktion nicht diesem Produkt entspricht.
Der zweite Parameter ist der Name des Berichts, von dem diese Funktion aufgerufen wurde. Dieser Parameter kann in allen Situationen nicht verwendet werden, aber der Berichtsname wird an die Funktion übergeben, wenn er erforderlich ist.
Der dritte Parameter ist eine Zeichenfolge, die Teil des Steuerelementfelds ist. Für die typische SOP- oder POP-Integration sind es das Feld "SOP-Nummer" oder "Auftragsnummer".
Der vierte Parameter ist eine ganze Zahl, die Teil des Steuerelementfelds ist. Für die typische SOP- oder POP-Integration ist es der SOP-Typ oder das Feld "PO-Typ".
Der fünfte Parameter ist eine ganze Zahl, die verwendet wird, um zu bestimmen, welche Daten zurückgegeben werden sollen. In der Regel verfügt eine integrationsanwendung über mehrere neue Felder, die einer Microsoft Dynamics GP-Tabelle entsprechen. Da die Report Writer-Funktionen jeweils nur ein Datenstück zurückgeben können, erfordert das Abrufen von drei separaten Feldern drei berechnete Felder, um die gleiche Funktion dreimal aufzurufen. Der iControl-Parameter teilt der Funktion mit, welches Feld zurückgegeben werden soll.
Die funktion rw_TableHeaderString:
function returns string sData;
in integer dict_id;{Dictionary ID}
in string report_name;{Report Name}
in string sNumber;{control field}
in integer sType;{control field}
in integer iControl;{which piece of data to return}
Diese Funktion ist identisch mit der rw TableHeaderCurrency-Funktion. Sie gibt jedoch eine Zeichenfolge anstelle eines Währungsfelds zurück.
Die rw_TableLineCurrency-Funktion:
function returns currency sData;
in integer dict_id;{Dictionary ID}
in string report_name;{Report Name}
in string sNumber;{control field 1}
in integer sType;{control field 2}
in currency cSequenceOne;{control field 3}
in currency cSequenceTwo;{control field 4}
in integer iControl;{which piece of data to get}
Diese Funktion gibt einen Währungsbetrag oder eine ganze Zahl an das berechnete Feld zurück, aus dem sie aufgerufen wird.
Die ersten vier Parameter sind identisch mit der funktion rw_TableHeaderCurrency.
Der fünfte Parameter ist ein Währungsfeld, das Teil des Steuerelementfelds ist. Für die typische SOP-Integration ist es das Feld "Component Sequence ". Für die typische POP-Integration ist es das Break Field 1-Feld.
Der sechste Parameter ist ein Währungsfeld, das Teil des Steuerelementfelds ist. Für die typische SOP-Integration ist dieses Feld das Feld "Zeilenelementsequenz" . Für die typische POP-Integration bleibt dieses Feld leer, da die POP_POLine Tabelle nur drei Schlüsselsegmente enthält.
Der siebte Parameter ist identisch mit der funktion rw_TableHeaderCurrency.
Die funktion rw_TableLineString:
function returns string sData;
in integer dict_id;{Dictionary ID}
in string report_name;{Report Name}
in string sNumber;{control field 1}
in integer sType;{control field 2}
in currency cSequenceOne;{control field 3}
in currency cSequenceTwo;{control field 4}
in integer iControl;{which piece of data to get}
Diese Funktion ist identisch mit der funktion rw_TableLineCurrency. Sie gibt jedoch eine Zeichenfolge anstelle eines Währungsfelds zurück.
Die rw_ReportStart-Funktion:
function returns string Status;
in integer dict_id;{Dictionary ID}
in string report_name;{Report Name}
Diese Funktion kann aus einem berechneten Feld in einem Berichtskopfabschnitt aufgerufen werden. Diese Funktion kann verwendet werden, um die Drittanbieteranwendung darüber zu informieren, dass der Bericht gestartet wurde.
Die rw_ReportEnd-Funktion:
function returns string Status;
in integer dict_id;{Dictionary ID}
in string report_name;{Report Name}
Diese Funktion kann aus einem berechneten Feld in einem Berichtsfußabschnitt aufgerufen werden. Diese Funktion kann verwendet werden, um die Drittanbieteranwendung darüber zu informieren, dass der Bericht beendet wurde.
Nehmen Sie das folgende Szenario als Beispiel:
Sie erstellen eine SOP_Ship_Weight Tabelle, die parallel zur Microsoft Dynamics GP SOP_LINE_WORK Tabelle ist. In dieser neuen Tabelle werden das Element "Artikelversandgewichtung" und das Element "Vendor ID" gespeichert. Das Feld "Artikelversandgewicht" verwendet die ganze Zahl 1, um die zu übergebenden Felddaten zu bestimmen. Das Feld "Anbieter-ID " verwendet die ganze Zahl 2, um die Felddaten zu bestimmen, die zurückgegeben werden sollen. Die Primärschlüsselstruktur für die SOP_Ship_Weight Tabelle ist die gleiche Primärschlüsselstruktur für die SOP_LINE_WORK Tabelle.
Fügen Sie Daten aus der Tabelle SOP_Ship_Weight zum Bericht "Leere Rechnung" von SOP hinzu. Sie sollten Trigger in Report Writer-Funktionen verwenden, um Daten aus der SOP_Ship_Weight Tabelle abzurufen, die im Bericht verwendet werden sollen.
In diesem Szenario führt der Benutzer die folgenden Schritte auf dem Microsoft Dynamics GP-Clientcomputer aus:
Starten Sie auf dem Clientcomputer den Report Writer in Microsoft Dynamics GP und öffnen Sie dann den SOP-Bericht über leere Rechnung.
Fügen Sie ein neues berechnetes Feld hinzu, und nennen Sie dann das Feld "LineSequence". Wählen Sie in der Ergebnistypliste "Währung" aus. Fügen Sie das Feld "Zeilenelementsequenz " aus der Tabelle "SOP-Zeilenarbeit" in das Feld "Ausdruck " ein. Wählen Sie 'OK' aus, um das Feld zu speichern.
Notiz
Der Zweck dieses berechneten Felds besteht darin, das Feld "Zeilenelementsequenz " als Währungsfeld festzulegen, damit Sie es an die Report Writer-Funktion übergeben können.
Wiederholen Sie Schritt 2 für das Feld "Component Sequence " in der Tabelle "SOP Line Work". Benennen Sie das neue Feld ComponentSequence.
Fügen Sie dem Bericht ein berechnetes Feld hinzu, wählen Sie die benutzerdefinierte Funktion rw_TableLineString aus, und klicken Sie dann auf Hinzufügen.
- Wählen Sie im Typ-Dropdown die Option Ganzzahl für den ersten Parameter aus, geben Sie die Produkt-ID für das Produkt ein, und wählen Sie dann Hinzufügen aus. Stattdessen können Sie eine Konstante von 0 einfügen.
- Wählen Sie für den zweiten Parameter auf der Registerkarte Konstanten in der Dropdownliste TypZeichenfolge aus, geben Sie "Rechnung" in das Feld Konstante ein und wählen Sie dann Hinzufügen aus.
- Wählen Sie für den dritten Parameter das Feld "SOP-Zahl" in der Tabelle "SOP-Zeilenarbeit" aus, und wählen Sie dann "Hinzufügen" aus.
- Wählen Sie für den vierten Parameter das Feld "SOP-Typ" in der Tabelle "SOP-Zeilenarbeit" aus, und wählen Sie dann "Hinzufügen" aus.
- Wählen Sie für den fünften Parameter das berechnete LineSequence-Feld aus, das in Schritt 2 erstellt wurde, und wählen Sie dann "Hinzufügen" aus.
- Wählen Sie für den sechsten Parameter das berechnete ComponentSequence-Feld aus, das in Schritt 3 erstellt wurde, und wählen Sie dann "Hinzufügen" aus.
- Wählen Sie für den letzten Parameter in der Dropdownliste "Typ" die Option "Ganzzahl" aus, geben Sie eine Konstante von 1 ein, und wählen Sie dann "Hinzufügen" aus. Wählen Sie 'OK' aus, um das berechnete Feld zu speichern. Dieses Feld ruft das Versandgewicht des Artikels aus der Tabelle SOP_Ship_Weight ab.
Notiz
In Schritt 4 wird ein berechnetes Feld erstellt, das die rw_TableLineString-Funktion aufruft. Die rw_TableLineString-Funktion ist im Microsoft Dynamics GP-Basiswörterbuch vorhanden und führt nichts aus. Es handelt sich um eine Funktion, die Parameter enthält. Es ist im Microsoft Dynamics GP-Wörterbuch vorhanden, damit Entwickler einen Trigger an diese Funktion anfügen können.
Wiederholen Sie die Schritte 1 bis 4 in einem anderen berechneten Feld. Wählen Sie für den letzten Parameter jedoch in der Dropdownliste "Typ" die Option "Ganzzahl" aus, geben Sie eine Konstante von 2 ein, und wählen Sie dann "Hinzufügen" aus. Wählen Sie 'OK' aus, um das berechnete Feld zu speichern. Dieses berechnete Feld ruft die Anbieter-ID-Daten aus der SOP_Ship_Weight Tabelle ab.
Das berechnete Feld im Bericht ruft die rw_TableLineString-Funktion auf und übergibt die Parameter. Die rw_TableLineString-Funktion wird in Microsoft Dynamics GP ausgeführt. Es ist jedoch eine Shell. Die Funktion wird also ausgeführt, aber sie führt nichts aus. Wenn die Funktion in Microsoft Dynamics GP ausgeführt wird, tritt der Trigger in der Drittanbieteranwendung auf. Sie rufen die Daten in der Triggerverarbeitungsfunktion ab und übergeben sie durch den Rückgabeparameter der Funktion weiter. Diese Daten sind die Daten, die im Bericht gedruckt werden.
Die letzten Schritte werden vom Entwickler in Dexterity in Microsoft Dynamics GP abgeschlossen. Der Entwickler platziert einen Funktionsauslöser in der Drittanbieteranwendung in der rw_TableLineString-Funktion . Anschließend ruft der Entwickler im Skript für die Triggerbehandlung den entsprechenden Datensatz ab, bestimmt die zurückzugebenden Daten und gibt dann die formatierten Daten zurück. Dieser Prozess wird im folgenden Beispielcode gezeigt.
{Startup script for trigger registration}
local integer l_result;
l_result = Trigger_RegisterFunction(function rw_TableLineString, TRIGGER_AFTER_ORIGINAL, function gpTriggerTableLineString);
if l_result <> SY_NOERR then
warning "The rw_TableLineString trigger is not registered.";
end if;
{function gpTriggerTableLineString to return the data}
function returns string sData;
in integer dict_id;{Dictionary ID}
in string report_name;{Report Name}
in string sNumber;{control field 1}
in integer sType;{control field 2}
in currency cSequenceOne;{control field 3}
in currency cSequenceTwo;{control field 4}
in integer iControl;{which piece of data to get}
{If this function is not for our product then quit}
if dict_id <> Runtime_GetCurrentProductID() then
abort script;
end if;
{The SOP_Ship_Weight table is a parallel table to the SOP_LINE_WORK
table and has the same primary key structure as that table: SOP Number,
SOP Type, Component Sequence, Line Item Sequence. The report_name parameter
is not referenced here as we want to return the field data regardless of which
report it comes from.}
'SOP Number' of table SOP_Ship_Weight = sNumber;
'SOP Type' of table SOP_Ship_Weight = sType;
'Component Sequence' of table SOP_Ship_Weight = cSequenceOne;
'Line Item Sequence' of table SOP_Ship_Weight = cSequenceTwo;
get table SOP_Ship_Weight;
if err() = OKAY then
{There are two additional pieces of data in this table,
Item Shipping Weight, and 'Vendor ID'. Integer values 1 and 2 will be used
respectively to identify the fields}
case iControl
in [1]
{Item Shipping Weight is stored as an integer. Divide by
100.0 to force decimal places and then convert to a string}
sData= str('Item Shipping Weight' of table SOP_Ship_Weight /100.0);
in [2]
sData = 'Vendor ID' of table SOP_Ship_Weight;
end case;
else
clear sData;
end if;