Es soll eine Verteilung für drei verschiedene Objekte (drei verschiedene Vorschriftenarten) realisiert werden. Allerdings sollen die Objekte zu jeweils verschiedenen Systemen versendet werden. 

Beispielsweise soll die Vorschriftenart A nur vom System ECE zum System ECP versendet werden, die Vorschriftenart B nur vom System ECE zum System SPG und die Vorschriftenart C vom System ECE an beide Systeme.

Sofern nur die Standard QPPD Mittel verwendet werden, ist dies nicht möglich: Im Verteilungsmodell wäre der Standard Nachrichtentyp /SCT/QP_QVC für die Verbindungen zwischen ECE und SPG/ECP eingetragen. Somit würden alle drei Vorschriftenarten stets an beide Systeme SPG/ECP verteilt werden. 

Eine Möglichkeit wäre sicherlich die Verteilung für A und/oder B mit Z-Redefinitionen im bspw. IDOC-Service zu unterdrücken. Eine weniger komplizierte und elegantere Lösung ist jedoch die folgende:

Da die Vorschriftenart C an beide Systeme versendet werden soll, kann diese weiterhin den Standard-QPPD bzgl. der Verteilung nutzen.

Für die beiden anderen Vorschriftenarten A und B könnte die folgende Lösung implementiert werden: Die Idee ist, die Standard QPPD-Verteilung mit Z-Nachrichtentypen als logische Klammer zu nutzen. Dabei muss für jede verschiedene Verteilung genau ein Z-Nachrichtentyp erstellt werden. Zusätzlich wird zu jedem Z-Nachrichtentyp genau ein korrespondierender Z-Folgeprozess erstellt, welcher mit den benötigten Vorschriftenarten verknüpft wird. 

Technisch gesehen sind also in diesem Beispiel mit den beiden Vorschriftenarten A und B genau zwei neue Z-Nachrichtentypen erforderlich sowie insgesamt zwei neue FUP ABAP-Klassen. Zusätzlich sind Einstellungen im SAP-Standard- als auch im QPPD-Customizing erforderlich. Diese Einstellungen werden im folgenden erklärt.

Nachrichtentypen

Zu Beginn müssen in der WE81 logische Nachrichtentypen für jede verschiedene Verteilung erstellt werden.

Für dieses Beispiel sind die zwei Nachrichtentypen, ZABC_IDOC_OUT_A und ZABC_IDOC_OUT_B, erforderlich. 

Das Ziel ist es die Nachrichtentypen als logische Klammer für eine Verteilung zu verwenden.

  • Der Nachrichtentyp ZABC_IDOC_OUT_A wird ausschließlich für die Verteilung vom ECE zum ECP verwendet.

  • Der Nachrichtentyp ZABC_IDOC_OUT_B ausschließlich für die Verteilung vom ECE zum SPG.

  • Der Standard-QPPD Nachrichtentyp /SCT/QP_QVC wird für die Verteilung an beide Systeme ECP/SPG verwendet.

image-20240604-075158.png

Steuerung der Verteilung

Die Steuerung der Verteilung erfolgt ausschließlich über das Standard-SAP Verteilungsmodell in der BD64. Dort werden die benötigten Nachrichtentypen für die QPPD-Verteilung den sendenden und empfangenden Systemen zugeordnet. Diese Einstellungen werden nicht transportiert und müssen in jedem System adäquat eingestellt werden.

image-20240604-075235.png

Als nächstes ist es notwendig für jeden Z-Nachrichtentypen eine neue Z-ABAP-Klasse für den entsprechenden Folgeprozess zu erstellen. Diese muss von der Standardklasse /SCT/QP_CL_FUP_IDOC_OUT erben. Anschließend muss die Methode /SCT/QP_IF_FUP~PROCESS redefiniert werden, um die Verteilung mit dem Z-Nachrichtentypen durchzuführen.

In diesem Beispiel wurde für den Z-Nachrichtentyp ZABC_IDOC_OUT_A die Klasse ZABC_CL_FUP_IDOC_OUT_A und für den Nachrichtentyp ZABC_FUP_IDOC_OUT_B die Klasse ZABC_CL_FUP_IDOC_OUT_B angelegt. Die redefinierte Methode ändert lediglich den Nachrichtentypen und benötigt daher nur das folgende Coding.

METHOD /sct/qp_if_fup~process.
 
DATA(ls_fup_data) = is_fup_data.
ls_fup_data-msgtype = 'ZABC_IDOC_OUT_A'.
 
super->/sct/qp_if_fup~process( is_fup_data = ls_fup_data ).
 
ENDMETHOD.

Damit triggert diese Z-Klasse ZABC_CL_FUP_IDOC_OUT_A eine QPPD-Datenverteilung mit dem QPPD-Standard-IDOC (Basistyp /SCT/QP_QVC) mit optionaler Z-Erweiterung und dem Z-Nachrichtentypen ZABC_IDOC_OUT_A.

Da der Nachrichtentyp ZABC_IDOC_OUT_A benutzt wird und das Verteilungsmodell diesen Nachrichtentypen nur für die Verbindung von ECE zum ECP vorsieht, werden die vom Standard-QPPD generierten IDOCs nur an das ECP gesendet.

Folgeprozesse

In der C10 wird für die beiden Z-Nachrichtentypen jeweils ein Z-Folgeprozess angelegt und als Klassen die zuvor erstellten ABAP-Klassen eingetragen.

image-20240604-075249.png

Den Vorschriftenarten werden in der C25 die jeweiligen Folgeprozesse zugeordnet. In diesem Beispiel sollen die Objekte der Vorschriftenart CERT vom System ECE nur zum System ECP durch den entsprechenden Folgeprozess ZABC_IDOC_OUT_A verteilt. 

image-20240604-075305.png

Zudem erfolgt eine Verteilung nur dann, wenn der Status der Vorschriftenart FREIGEGEBEN (IZQFR) ist.

image-20240604-075317.png

Die Daten der Vorschriftenart ARBPL sollen nur vom System ECE zum System SPG verteilt werden. Der dafür erstellte Folgeprozess ZABC_IDOC_OUT_B wurde der Vorschriftenart zugeordnet. 

image-20240604-075328.png

Die Verteilung der Daten für diese Vorschriftenart soll für jeden Status erfolgen. Aus diesem Grund wurden keine Status der Vorschriftenart hinzugefügt.

image-20240604-075341.png

Standard IDOC Verteilung

In der WE82 werden die Z-Nachrichtentypen dem Standard-QPPD-Basistypen /SCT/QP_QVC und einer eventuellen vorhandenen Z-Erweiterung zugeordnet.

image-20240604-075353.png

In allen sendenden Systemen muss in der Transaktion WE20 die Partnervereinbarung für die jeweiligen Zielsysteme erweitert werden. In diesem Fall ist das System ECE das sendende System für die beiden Systeme ECP/SPG. Die Nachrichtentypen ZABC_FUP_IDOC_OUT_A und ZABC_FUP_IDOC_OUT_B müssen für das jeweilige Zielsystem als Ausgangsparameter hinzugefügt werden. 

Beispiel die Einstellungen im ECE für das Zielsystem ECP: 

image-20240604-075406.png

Jedoch müssen alle Z-Nachrichtentypen, welche eine QPPD-Verteilung implementieren, dem Standard Vorgangscode /SCT/QP_ALE_IN in der WE42 zugeordnet werden, da diese Einstellungen transportiert werden.

image-20240604-075417.png

In der Transaktion WE20 müssen in den empfangenden Systemen die Eingangsparameter für die Partnervereinbarung für die jeweils sendenden Systeme erweitert werden. In diesem Fall empfangen die Systeme ECP/SPG vom ECE. Dazu werden die Nachrichtentypen ZABC_FUP_IDOC_OUT_A und ZABC_FUP_IDOC_OUT_B für das jeweilige Zielsystem als Eingangsparameter hinzugefügt. Diese benutzen den Standard-Vorgangscode.

image-20240604-075427.png