How-To: Materialstamm Feldanpassung Dynprosteuerung

Posten Sie hier Tutorials & Cookbooks.

How-To: Materialstamm Feldanpassung Dynprosteuerung

Postby Tron » Wed Oct 20, 2010 12:44 pm

Feldanpassung im Materialstamm

Beispiel: Eingabebereitschaft des Feldes MARA-MSTAE unterbinden

Bitte unbedingt im Einführungsleitfaden (SPRO) den Punkt:
So wird's gemacht (Quick-Guide anhand eines Beispiels) durchlesen !

Das markierte Feld soll nicht mehr Eingabebereit sein.
Bild
Nachdem Du eine Funktionsgruppe angelegt hast und via Customizing die
Funktionsgruppe kopiert wurde,
kopierst Du nun:
Bild
in Deine neue Funktionsgruppe und aktivierst das Dynpro (erstmal).
Bild

Jetzt musst Du die Bildsequenz anpassen.(aber bitte die RICHTIGE !)
Bild
Bild

und trägst das kopierte Programm(die Funktionsgruppe) plus Dynpro ein.

Bild
(Der "Ergonomische" Aufbau dieses Pflegeviews ist doch immer wieder ein Genuß)

wenn alles richtig läuft (kleiner Scherz):
Bild

Nun noch PBO des neuen Dynpros (e.g.8001) anpassen:
Zurück zu Deinem kopierten Dynpro.
Jetzt fügst Du ein Modul (e.g.module user_spec) ein.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. PROCESS BEFORE OUTPUT.
  2. *                      Verarbeitung vor der Ausgabe
  3.  
  4.   MODULE INIT_SUB.
  5.   MODULE GET_DATEN_SUB.
  6.   MODULE FELDAUSWAHL.
  7.   MODULE SONDERFAUS.
  8.   MODULE SONFAUSW_IN_FGRUPPEN.
  9.   MODULE FAUSW_BEZEICHNUNGEN.
  10.   MODULE BILDSTATUS.
  11.   MODULE FELDHISTORIE.                         "Aenderungsdienst
  12.   MODULE ZUSREF_VORSCHLAGEN_B.
  13.   MODULE REFDATEN_VORSCHLAGEN.
  14.   MODULE ZUSREF_VORSCHLAGEN_A.
  15.   MODULE BEZEICHNUNGEN_LESEN.
  16. *********************************************
  17. * ÄNDERUNG Customer Screen modification ÄNDERUNG
  18.   module user_spec.
  19. *********************************************
  20.   MODULE SET_DATEN_SUB.
  21.  
  22.  
  23. PROCESS AFTER INPUT.
  24. *                      Verarbeitung nach der Eingabe
  25.  
  26.   MODULE GET_DATEN_SUB.
  27.   FIELD: MARA-KOSCH.       "mk/3.1H fehlte
  28.  
  29.   CHAIN.
  30.      FIELD MARA-MEINS.
  31.            MODULE MARA-MEINS.
  32.   ENDCHAIN.
  33.  
  34. * AHE: 07.04.99 - A (4.6a) HW 181769
  35.   CHAIN.
  36.      FIELD MARA-EXTWG.
  37.            MODULE MARA-EXTWG.
  38.   ENDCHAIN.
  39. * AHE: 07.04.99 - E
  40.  
  41.   CHAIN.
  42.      FIELD MARA-MATKL.
  43. *          MODULE MARA-MATKL ON CHAIN-REQUEST. "nicht benutzen wg Vorsch
  44.                                                "/cf/11.5.95/
  45.            MODULE MARA-MATKL.
  46.   ENDCHAIN.
  47.   FIELD MARA-BISMT.
  48.   FIELD MARA-LABOR.
  49. * chain.                                deaktiviert zu 3.0
  50. *     FIELD MARA-SPART.
  51. *           MODULE MARA-SPART.
  52. *  ENDCHAIN.
  53.  
  54. *JB/4.6B: wieder aktiviert
  55. *Prüfung, ob Spartenwechsel erlaubt bei ungleichen Geschäftsbereichen
  56.   CHAIN.
  57.      FIELD MARA-SPART.
  58.            MODULE MARA-SPART.
  59.   ENDCHAIN.
  60. *JB/4.6B
  61.  
  62.   CHAIN.
  63.      FIELD MARA-PRDHA.
  64.            MODULE MARA-PRDHA.
  65.   ENDCHAIN.
  66.   CHAIN.                   "ch zu 4.0
  67.      FIELD MARA-MSTDE.
  68.      FIELD MARA-MSTAE.
  69.            MODULE MARA-MSTDE.
  70.   ENDCHAIN.
  71.  
  72. * AHE: 05.02.98 - A (4.0c)
  73. * neues Feld
  74.   CHAIN.
  75.      FIELD MARA-KZEFF.
  76. *          MODULE MARA-KZEFF.  " nicht nötig !
  77.   ENDCHAIN.
  78. * AHE: 05.02.98 - E
  79.  
  80. * AHE: 07.05.98 - A (4.0c)
  81. * neues Feld
  82.   FIELD MARA-MTPOS_MARA.
  83. * AHE: 07.05.98 - E
  84. *
  85.   MODULE SET_DATEN_SUB.
  86. *
  87.  
  88. PROCESS ON VALUE-REQUEST.
  89. * Selbstprogrammierte Eingabehilfen
  90.      FIELD MARA-MEINS  MODULE MEKFM_HELP.
  91.      FIELD MARA-PRDHA  MODULE MARA-PRDHA_HELP.
  92. *    FIELD MARA-SPART  MODULE MARA-SPART_HELP.   "//zu3.0 deaktiviert
  93.                                                  "br / ch
  94.  
  95.  
GeSHi ©


Einfügen Module module user_spec und via Doppelcklick einen Include dafür anlegen.
Beispiel INCLUDE : 'MARA-MSTAE' immer nur Anzeigen!

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *----------------------------------------------------------------------*
  2. ***INCLUDE LZMATSTAMMO07 .
  3. *----------------------------------------------------------------------*
  4. *&---------------------------------------------------------------------*
  5. *&      Module  USER_SPEC  OUTPUT
  6. *&---------------------------------------------------------------------*
  7. *       text
  8. *----------------------------------------------------------------------*
  9. module USER_SPEC output.
  10. * ex Dynpro 2001
  11.  
  12. *break sapuser.
  13.  
  14.  
  15. ** Beim Hinzufügen oder Ändern
  16.   IF t130m-aktyp = aktyph OR
  17.      t130m-aktyp = aktypv.
  18.  
  19.       LOOP AT SCREEN.
  20.  
  21.         IF screen-name = 'MARA-MSTAE'.
  22. *          screen-required = 1.
  23.           screen-INPUT = 0.
  24.           MODIFY SCREEN.
  25.         ENDIF.
  26.       ENDLOOP.
  27.  
  28.   ENDIF.
  29.  
  30. endmodule.                 " USER_SPEC  OUTPUT
GeSHi ©


so "einfach" ist das Ganze. :wink:

Mit dieser Technik kann man auch Felder VORBELEGEN !
z.B. Muss-Felder, die nur einen Wert zulassen. (der User wird es danken !)

gruß TRon
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Postby Alma59 » Wed Oct 20, 2010 1:19 pm

Wenn wir die Eingabebereitschaft eines Feldes Userabhängig vornehmen, gehen wir genauso vor.

Ansonsten könnte man auch mit den Feldauswahlgruppen arbeiten:
Logistik Allgemein -> Materialstamm -> Feldauswahl ->

MARA-MSTAE ist bei uns in der Feldgruppe 155
und auf dieser Ebene kann man dann angeben ob das Feld ausgeblendet werden soll, ob es ein Muss- oder Kannfeld oder ob es Eingabebereit ist.
Alma59
...
...
 
Posts: 134
Joined: Tue Jul 08, 2008 10:35 am

Postby Tron » Wed Oct 20, 2010 1:26 pm

Moin,
ja stimmt, wenn man ein Feld für alle (konditionslos) z.B. sperren will, sollte man lediglich die Feldauswahlgruppenzuordnung anpassen.
Danke.
gruß TRon
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Postby Bent173 » Tue Oct 26, 2010 8:34 pm

Hört sich interessant an.

Könnte man darüber auch eine F4-Hilfe an das Feld NORMT hängen?

Albert
Bent173
..
..
 
Posts: 18
Joined: Thu Jul 15, 2010 6:28 pm

Postby Tron » Wed Oct 27, 2010 1:14 am

Ja, man kann :
F4-Hilfen , Felder mit Konvertierungs-Exits - ganz neue Reiter mit eigenen Inhalt/Felder , oder Befüllen von Appendfeldern der MARA / MARC / MBEW etc realisieren.
gruß TRon
(PS. Blende doch mal alle Felder aus, die gar nicht benötigt werden !) :wink:
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

How-To: Materialstamm Feldanpassung Dynprosteuerung

Postby Tron » Thu Jan 03, 2019 6:18 pm

Materialstamm anpassen : Teil II
Matstamm "Reloaded"

Im 2-ten Teil möchte ich den Einbau eines Zusatzfeldes näher beleuchten.
Dabei soll :

- die Grunddatentabelle MARA um ein Textfeld erweitert werden.
- Das neue Feld (e.g. ZUSATZTEXT/CHAR40) soll beschreibbar sein
- Es soll im INITIAL-Fall bei Anlegen/ Ändern mit einem Text vorbelegt werden.

Als erstes ermitteln wir das gewünschte Dynpro und die Stelle, die wir mit unserem Zusatzfeld ergänzen möchten. (e.g. FUGR MGD1 / Dynpro 1002)
Image

nun denn:

MARA erweitern mit der Transaktion SE11
Image

wir legen einen APPEND an und tragen den neuen Feldnamen und das Datenelement ein. Den bereits vorhanden Daten der MARA passiert so nichts.

Image

Bei dem Datenelement haken wir Änderungsbelege an. (für MM04)
Image

Das Aktivieren dauert etwas(keine Panik), da der Materialstamm an sehr vielen Stellen verwendet wird und viele Abhängigkeiten existieren.
Der Transport des WB-Auftrags in das Produktivsystem sollte in der Nachtzeit erfolgen, da ansonsten die Transaktion ST22 als "Highscore-Counter" fungiert. ;)
(wer es dennoch vergeigt... Einfach Hand hoch und laut rufen "Die Dumps gehen heute alle auf mich" !!.... vielleicht hilfts ;) )

Das Ergebnis dieser Aktion:
Image

Im Customizing (SPRO) Programm für benutzereigene Subscreens anlegen
wird eine Funktionsgruppe(e.g. YMATSTAMM) mit allen Programmen und den Grund-Dynpros durch das Customizing angelegt.
Bitte ein Paket wählen (<> $TMP), damit ein Transportauftrag angelegt wird.
(Falls wir nicht die Ersten sind, die hier gewirkt haben, kann man prüfen, ob es nicht schon eine Kopie gibt, die man ggf. mitbenutzen könnte.)
Image
Dann sieht´s so aus.
Image

Über den Customizing Punkt Aufbau der Datenbilder pro Bildsequenz definieren
kann man sich die Inhalte der Reiter/Dynpros anzeigen lassen. (e.g. Bildsequenz 21)
Diese Info benötigen wir später zum Kopieren .
Image

Nun kopieren wir das Dynpro (eg.1002) in unsere neue Funktionsgruppe.
Image

Image

Image
ein guter Zeitpunkt mal zu aktivieren, falls noch nicht geschehen.

..Wieder im customizing Aufbau der Datenbilder pro Bildsequenz definieren
KOPIEREN wir die Bildsequenz (e.g. 21 auf Y1) Da wir natürlich nicht die Sequenzen der SAP ändern wollen !
Image

Image

Image

Unsere neue Bildsequenz (e.g.Y1) die wir nun anpassen.
Image

Damit das System die neu Bildsequenz auch benutzt, tragen wir im Customizing Bildsequenzen zu Benutzern/Materialarten/Transaktionen/Branchen zuordnen
die NEUE Bildsequenz (e.g. Y1) ein. (An dieser Stelle bitte nicht "gierig" werden und jedem User seine persönliche Sicht des Matstamms spendieren... )
Image

Da wir schon in der SPRO sind, sollten wir das Zusatzfeld in eine FELDAUSWAHLGRUPPE (e.g. 111) aufnehmen. Das erfolgt unter: Felder zu Feldauswahlgruppen zuordnen
Image

Image

... kleiner Test mit Label (kann auch übersprungen werden)
Image

Nun holen wir unser "Appendfeld" auf das Dynpro.
Image

Fehlt also nur noch die Dynpro-Logik.
Image

Image

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * DYNPRO 1002
  2. PROCESS BEFORE OUTPUT.
  3. *                      Verarbeitung vor der Ausgabe
  4.  
  5.   MODULE init_sub.
  6.   MODULE get_daten_sub.
  7.   MODULE feldauswahl.
  8.   MODULE sonderfaus.
  9.   MODULE sonfausw_in_fgruppen.
  10.   MODULE feldhistorie.                         "Aenderungsdienst
  11.   MODULE bildstatus.
  12.   MODULE zusref_vorschlagen_b.
  13.   MODULE refdaten_vorschlagen.
  14.   MODULE zusref_vorschlagen_a.
  15.  
  16. *== EINGEFÜGT =============
  17. * Vorbelegung falls INITIAL
  18.   MODULE zusatztext.
  19. *==========================
  20.  
  21.   MODULE set_daten_sub.
  22.  
  23.  
  24.  
  25. PROCESS AFTER INPUT.
  26. *                      Verarbeitung nach der Eingabe
  27.   MODULE get_daten_sub.
  28.   CHAIN.
  29. *    FIELD MAKT-SPRAS.
  30.     FIELD makt-maktx.
  31.     MODULE makt-maktx.
  32.  
  33. *== EINGEFÜGT =============
  34.     FIELD mara-zzusatztext.
  35. *==========================
  36.  
  37.   ENDCHAIN.
  38. *
  39.   MODULE set_daten_sub.
  40. *
  41.  
GeSHi ©


... und der INCLUDE

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *----------------------------------------------------------------------*
  2. ***INCLUDE LYMATSTAMMO01 .
  3. *----------------------------------------------------------------------*
  4. *&---------------------------------------------------------------------*
  5. *&      Module  ZUSATZTEXT  OUTPUT
  6. *&---------------------------------------------------------------------*
  7. *       text
  8. *----------------------------------------------------------------------*
  9. MODULE zusatztext OUTPUT.
  10.  
  11.   break sapuser.
  12.  
  13.  
  14. ** Beim Hinzufügen oder Ändern
  15.   IF t130m-aktyp = aktyph OR
  16.      t130m-aktyp = aktypv.
  17.  
  18.     IF mara-zzusatztext IS INITIAL.
  19.       mara-zzusatztext = '*** bitte ausfüllen ***'.
  20.     ENDIF.
  21.   ENDIF.
  22.  
  23. ENDMODULE.                 " ZUSATZTEXT  OUTPUT
GeSHi ©


zu guter Letzt, der abschliessende Test (spricht wohl für sich)
Image

Image

Image

Image

Image

viel Erfolg
Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

How-To: Materialstamm Feldanpassung Dynprosteuerung

Postby Tron » Thu Jan 03, 2019 6:21 pm

Materialstamm anpassen : Teil III


Im 3-ten Teil möchte ich die Massenpflege eines Zusatzfeldes näher beleuchten.

Da die MM17 / MASS unser Zusatzfeld ignoriert, ergibt sich die Frage, wie man das neue Feld autom. nachträglich befüllt.
Unter den allseits beliebten BAPI - Funktionsbausteinen gibt es dazu BAPI_MATERIAL_SAVEDATA, welcher sich sehr gut eignet.

In Vorbereitung für den Aufruf des BAPIs muß unser Zusatzfeld(e.g. MARA-ZZUSATZTEXT) in die Erweiterungsstruktur BAPI_TE_MARA und BAPI_TE_MARAX aufgenommen werden.
(Für ein Zusatzfeld in der MARC wäre das analog BAPI_TE_MARC und BAPI_TE_MARCX etc.)
Image

Image

Eine weitere Voraussetzung für das erfolgreiche Ändern mit BAPI ist, daß das Zusatzfeld einer FELDAUSWAHLGRUPPE zugeordnet ist ! (siehe Teil II)

Hier nun das Codingmuster.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZTEST_MATSTAMM_ZZUSATZTEXT2                                 *
  3. *&                                                                     *
  4. *&---------------------------------------------------------------------*
  5. *&                                                                     *
  6. *&                                                                     *
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT  ztest_matstamm_zzusatztext2.
  10.  
  11. DATA  gv_material TYPE mara-matnr.
  12.  
  13.  
  14. PARAMETERS: p_matnr TYPE mara-matnr DEFAULT 'B1139'.
  15. PARAMETERS: p_text TYPE mara-zzusatztext LOWER CASE DEFAULT '<<Mein Text !>>'.
  16.  
  17. CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
  18.   EXPORTING
  19.     input  = p_matnr
  20.   IMPORTING
  21.     output = gv_material.
  22.  
  23.  
  24. PERFORM xtendmat USING gv_material p_text.
  25.  
  26. *&--------------------------------------------------------------------*
  27. *&      Form  Xtendmat
  28. *&--------------------------------------------------------------------*
  29. *       text
  30. *---------------------------------------------------------------------*
  31. FORM xtendmat USING material TYPE matnr ztext TYPE mara-zzusatztext.
  32.   DATA headdata type bapimathead.
  33.   DATA return   type bapiret2.
  34.  
  35.   DATA returnmessages           type bapi_matreturn2 OCCURS 0.
  36.   DATA:  e_rol_return           type bapiret2.
  37.   DATA:  e_com_return           type bapiret2.
  38.  
  39.  
  40. * EXTENSION Strukturen
  41.   DATA: extensionin type TABLE OF bapiparex .
  42.   DATA: ls_extensionin type bapiparex.
  43.   DATA: extensioninx type TABLE OF bapiparexx .
  44.   DATA: ls_extensioninx type bapiparexx.
  45.  
  46. * EXTENSION MARA
  47.   DATA ls_bapi_te_mara TYPE bapi_te_mara.
  48.   DATA ls_bapi_te_marax TYPE bapi_te_marax.
  49.  
  50.   CLEAR ls_bapi_te_mara.
  51.   ls_bapi_te_mara-material = material.
  52.   ls_bapi_te_mara-zzusatztext = ztext.
  53.  
  54.   ls_extensionin-structure = 'BAPI_TE_MARA'.
  55.   ls_extensionin-valuepart1 = ls_bapi_te_mara.
  56.   APPEND ls_extensionin to extensionin.
  57.  
  58.  
  59.   CLEAR ls_bapi_te_marax.
  60.   ls_bapi_te_marax-material = material.
  61.   ls_bapi_te_marax-zzusatztext = 'X'.
  62.  
  63.   ls_extensioninx-structure = 'BAPI_TE_MARAX'.
  64.   ls_extensioninx-valuepart1 = ls_bapi_te_marax.
  65.   APPEND ls_extensioninx to extensioninx.
  66.  
  67. * KOPF Daten (Sichten) ************************************************
  68.   headdata-material = material.
  69.   headdata-basic_view ='X'.
  70.  
  71.   CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  72.     EXPORTING
  73.       headdata       = headdata
  74.     IMPORTING
  75.       return         = return
  76.     TABLES
  77.       returnmessages = returnmessages
  78.       extensionin    = extensionin
  79.       extensioninx   = extensioninx.
  80.  
  81.   IF return-type = 'E' OR return-type = 'A'.
  82.     WRITE:/ 'Fehler Bapi'.
  83.     WRITE:/ 'Type       ', return-type.
  84.     WRITE:/ 'ID         ', return-id.
  85.     WRITE:/ 'NUMBER     ', return-number.
  86.     WRITE:/ return-message.
  87.     WRITE:/ '-----------------------------------------'.
  88.  
  89.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
  90.       IMPORTING
  91.         return = e_rol_return.
  92.     WRITE:/ 'Rollback', e_rol_return-type.
  93.   ELSE.
  94.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  95.       EXPORTING
  96.         wait   = 'X'
  97.       IMPORTING
  98.         return = e_com_return.
  99.  
  100.   ENDIF.
  101.  
  102.  
  103. ENDFORM.                    "Xtendmat
GeSHi ©


viel Erfolg
gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm


Return to Tutorials & Cookbooks

Who is online

Users browsing this forum: No registered users and 0 guests

cron