Kundenstamm erweitern

Hier geben wir Ihnen ein Tutorial an die Hand, mit dem Sie in einem 4.6C-System ein eigenes Dynpro in den Kundenstamm implementieren können. Diese Funktionalität ist noch nicht komplett durch Customizing einzustellen, man muss etwas tricksen… Komplett verfügbar ist die Erweiterungsmöglichkeit unter Release 4.7.

Ziel

Am Ende der Anleitung sollen Sie einen neuen Tabreiter (Tabstrip) auf den allgemeinen Daten im Kundenstamm haben, in dem Sie eigene Felder zu einem Append der KNA1 anzeigen und ändern können.

Einschränkungen

Die folgenden Anweisungen beziehen sich auf das Release 4.6C. Hierzu müssen Sie als erstes eine Modifikation machen. Zudem müssen Sie eine Funktionsgruppe im Z-Namensraum anlegen. Bei der Verwendung von Funktionsgruppen im erweiterten Namensraum (mit Schrägstrich “/”) funktioniert es leider nicht!!

Es können lediglich drei zusätzliche Tabreiter angelegt werden!

Alternativen

Seit Release 4.7 besteht die Möglichkeit, einen BAdI zu nutzen:

CUSTOMER_ADD_DATA_CS
Zusätzliche Daten bei den Debitoren (Trägerdynpro 4000)

BAdI’s können über Transaktion SE18 angesehen werden. Der BAdI ist gut dokumentiert.

Die Implementierung erfolgt über Transaktion SE19.

Siehe SAP-Hinweis 577502.

Modifikation Include MF02DFT0

In diesem Fall gehen wir davon aus, dass die Funktionsgruppe ZV_KUNDENSTAMMEXIT heisst.

FORM TABSTRIP_INVISIBLE_TABS. 
... 
  CHECK NOT TABSTRIP_ACTIVE IS INITIAL. 
  CHECK NOT TABSTRIP-TEST IS INITIAL.  " Nur im Testfall testen 
  LOOP AT TABSTRIP_SCREENS. " enthält alle Gruppenrahmen des Tabstrips 
    TABSTRIP-DYNP  = TABSTRIP_SCREENS-SUBSC. "Dynpronummer 
    TABSTRIP-GBOX  = TABSTRIP_SCREENS-GBOX.  "Gruppenrahmennummer 
*{   INSERT BEGINN
*** Vorabkorrektur 
*** Kundenfunktionsgruppe, die in Tabelle TAMLAYA definiert ist 
    if tabstrip_screens-prog = 'SAPLZV_KUNDENSTAMMEXIT'. 
      continue. 
    endif. 
*}   INSERT ENDE
*   Adresse immer zeigen, alles andere überprüfen 
    IF TABSTRIP-GBOX NE '0001' OR TABSTRIP-ACTUALSEG NE 'LOSEG' 
    AND NOT TABSTRIP-DYNP IS INITIAL 
    AND NOT ( TABSTRIP-APPL = 'LOMDBPC-CS' AND 
              TABSTRIP-GBOX EQ '0016' ). 
      CALL SCREEN '7999'.   " Dummy-Screen für Bestimmung 
                            " der Feldstatus 
    ENDIF. 
  ENDLOOP.

  CLEAR TABSTRIP-TEST.
  TABSTRIP-GBOX = SAVE_GBOX.

ENDFORM.                               ” tabstrip_invisible_tabs 

Anlegen der Funktionsgruppe

Bitte legen Sie die Funktionsgruppe ZV_KUNDENSTAMMEXIT an. In der Funktionsgruppe legen Sie bitte den Subscreen 9000 an. Binden Sie hier die gewünschten Kundenfelder ein.

Tabellenpflege

Die folgenden Tabellen sind von Bedeutung:

  • TAMLAY0
  • TAMLAY1
  • TAMLAYA

Gegebenenfalls müssen die Tabellen mit der SE16 gepflegt werden.

TAMLAYA General Data

Applikation  LOMDBPC-GD
Transaktion BPMDGD
In das Feld TAMLAYA-FUNCG ZV_KUNDENSTAMMEXIT eintragen

Mit Transaktion BPMDGD das Layout SAP auf ZNEU kopieren.
Das Layout muss in den Benutzerparametern bekannt gemacht werden. Tragen Sie deswegen unter “System – Eigene Daten” den Parameter DEBITOR_LAYOUT_GD mit dem Wert “ZNEU” ein.

TAMLAY1 Tabreiter

Tragen Sie den neuen Tabreiter 08 “Additional Data” in der Tabelle ein.
(Die Texte stehen in der Tabelle TAMLAY1T).

TAMLAY2 Zuordnung

In der Tabelle TAMLAY2 müssen Sie nun die Zuordnung des Subscreens zum Tabreiter vornehmen:
APPL LOMDBPC-GD
LAYOUT ZNEU
TAB 08
LFD_SUBSCR 1
MGROUP U9000
  –> U = Userscreen,
  –> 9000 = Dynpronummer in der Funktionsgruppe

Zugriff

Um in der Funktionsgruppe auf die Daten zugreifen zu können, müssen wir uns eines Tricks bedienen, da es leider keine Möglichkeit gibt, an die Daten der KNA1 zu kommen. Wir werden den Dirty-Assign verwenden.

TOP-Include

Als erstes müssen Sie im TOP-Include der Funktionsgruppe ZV_KUNDENSTAMMEXIT die folgenden Anweisungen aufnehmen:

tables kna1. 
field-symbols <kna1> structure kna1 default kna1.

Ablauflogik des Subscreen 9000

PROCESS BEFORE OUTPUT. 
  MODULE STATUS_9000.
*
PROCESS AFTER INPUT.
  field kna1-kukla.
  MODULE USER_COMMAND_9000.

Coding der Module

MODULE STATUS_9000 output. 
  PERFORM dynpro_modifizieren_ar IN PROGRAM sapmf02d.
  PERFORM rein_pbo.
ENDMODULE.                 " STATUS_9000  OUTPUT
MODULE user_command_9000 INPUT. 
  PERFORM raus_pai.
ENDMODULE.                 " USER_COMMAND_9000  INPUT 
FORM rein_pbo. 
  ASSIGN ('(SAPMF02D)KNA1') TO <kna1>.
  kna1 = <kna1>.
ENDFORM.
FORM raus_pai. 
  <kna1> = kna1.
ENDFORM.
Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)