Materialnotiz Button programmieren

Getting started ... Alles für einen gelungenen Start.
45 Beiträge • Vorherige Seite 2 von 3 (current) Nächste
45 Beiträge Vorherige Seite 2 von 3 (current) Nächste

Re: Materialnotiz Button programmieren

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Wahrscheinlich ja
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Materialnotiz Button programmieren

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hmm jetzt muss ich doch nochmal blöd fragen, wie genau meinst du ein "Feld". Der User bräuchte ja in der Spalte etwas zum anklicken für das jeweilige Material.

Re: Materialnotiz Button programmieren

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
L0w-RiDer hat geschrieben:
22.09.2021 14:26
Hmm jetzt muss ich doch nochmal blöd fragen, wie genau meinst du ein "Feld". Der User bräuchte ja in der Spalte etwas zum anklicken für das jeweilige Material.
Dabei handelt es sich (in einer Tabelle) um ein Feld vom Typ "Button" 😉
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Materialnotiz Button programmieren

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Low-Rider,
gib doch einfach mal ein paar Informationen.
  1. Beantworte die Frage, ob man in der Ausgabeliste navigieren kann. D.h., ob man via Doppelklick irgendwo hinspringen kann.
  2. Wenn du die obige Frage mit "JA" ( bei "NEIN" müsste weiter geforscht werden was geht ) beantworten kannst, probier doch erst mal aus, ein Zusatzfeld dort anzeigen zu lassen- egal ob es nachher ein Button ist oder nicht. Den zugehörigen BADI hast du ja gefunden und ich hoffe, dass er auch angesprungen wird ( Explizit den ABAP-Befehl Break-Point in die auszuprogrammierenden Methoden setzen ) . Schlimmstenfalls aktivierst du ein Textfeld wo du, falls eine Materialnotiz zum Material vorhanden ist, einen Text à la "hübsches Icon + Materialnotiz" ausgibst.
  3. Letztendlich wirst du, wenn du obiges beides machen kannst, auch in die Materialnotiz springen wollen. Schreib dir ein Mikroprogramm, welches zu einem Parameter, welche eine Materialnummer enthält, die Materialnotiz anzeigt.
    Auch hier gilt: Zeig doch bitte auch mal einen Screenshot aus dem Materialstamm, wie du dort die Materialnotiz angezeigt bekommst wenn du das nicht hinbekommst
Im Endeffekt musst du alle 3 obigen Sachen beantworten können oder uns zeigen was du bisher zu Stande bekommen hast, damit dir sinnvoll geholfen werden kann. Du lässt uns doch völlig im Nebel stehen, aber die meisten von uns sind im RL keine Spökenkieker.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Materialnotiz Button programmieren

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo black_adept,

Also zu 1) Ja, man kann z.B. in den Materialtext reinspringen (navigieren) (Siehe Bild1 ) und erhält folgende Ansicht (siehe Bild 2).

Meinst du das man z.B. neben dem Material ein Feld anlegen sollte, also in der gleichen Spalte oder habe ich dich da falsch verstanden?

Wenn ich in die Materialnotiz reinklicke, dann bekomme ich folgendes Fenster angezeigt (Siehe Bild 3 ) und so sollte es eigentlich auch sein. Ein Button auf welchen man klicken kann und dann sollte das entsprechende Fenster erscheinen, in welchem man einen Text zu dem Material pflegen kann.

Ich steh leider komplett auf dem Schlauch.

Vielen Dank im Voraus : ).

Re: Materialnotiz Button programmieren

Beitrag von Alpmann (ForumUser / 62 / 5 / 19 ) »
Hallo L0w-RiDer,

ich habe mich bisher zurückgehalten, weil ich nicht viel zu deinem bisher eingeschlagenen Weg sagen kann. Ich habe bisher noch keine Standardtransaktionen um Felder erweitert. Ich habe auch noch keine Dialog-Anwendungen geschrieben - Reports mit Selektion + ALV Ausgabe schon :-).

Mit dem Fuba MD_SELECTION_MDKP kannst du dir die passenden Daten aus der MD06 besorgen.

Wenn du die Ausgabestruktur um ein CHAR1 Feld erweiterst, bei dem du ein 'X' setzten kannst, wenn ein entsprechenden Text (Selektion Tabelle STXH) vorhanden ist, dann könntest du mit dem FuBa RECA_GUI_TEXTEDIT_POPUP den Text anlegen/anzeigen/editieren lassen.

Ich hatte mal so etwas für eine Saldenliste gemacht

Code: Alles auswählen.

 if column = 'KZ_LANGTEXT'.

       if zt_saldenliste-KZ_LANGTEXT = 'X'.

           concatenate 'Langtext aus Beleg ' zt_saldenliste-belnr into z_text respecting blanks.
            CALL FUNCTION 'RECA_GUI_TEXTEDIT_POPUP'
              EXPORTING
                ID_TDOBJECT                 = zt_saldenliste-langtext_TDOBJECT
                ID_TDNAME                   = zt_saldenliste-langtext_TDNAME
                ID_TDID                     = zt_saldenliste-langtext_TDID
                ID_TDSPRAS                  = zt_saldenliste-langtext_TDSPRAS
                ID_ACTIVITY                 = '02'
                ID_TITLE                    = Z_TEXT
             EXCEPTIONS
               TEXT_INCONSISTENT           = 1
               FOREIGN_LOCK                = 2
               OTHERS                      = 3.
       endif.
  endif.
Am besten schilderst du am besten im Vorfeld mal ein wenig mehr, was du vorhast, was du schon versucht hast. Am besten auch erst einmal nicht so technisch orientiert - das lässt dann auch andere Lösungen zu und man verzweifelt dann nicht so schnell, weil man mit "der eingeschlagenen Lösung" nicht direkt weiter kommt. Hier im Forum gibt es genug fitte, die dich bei der technischen Seite unterstützen können. Ich stimme black_adept schon zu, dass ist schon ein bisschen nebelig...

Vor solchen Aktionen am besten immer eine Kiste Bier trinken. Das macht kreativ 😁 .

Mit freundlichen Grüßen
Matthias Alpmann

Re: Materialnotiz Button programmieren

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin L0w-RiDer,

wir machen das jetzt häppchenweise.

Du hast jetzt also Frage 1 von mir mit "ja" beantwortet. Das ist schon mal gut.

Dann mach dich jetzt bitte an den Punkt 2. Du hast in einigen deiner ersten Posts in diesem Thread einen Screenshot von einem BADI gezeigt. ( Transaktion SE18, BADI MD_ADD_COL_OVERVIEW ) Lege dort dann eine Implementierung zu diesem BADI an oder schau, dass die derzeit vorhandene Implementierung aktiv ist ( der BADI ist nicht mehrfach implementierbar ).
Danach liest du dir die (recht extensive) Dokumentation der beiden Methoden des im BADI definierten Interface IF_EX_MD_ADD_COL_OVERVIEW durch.
Wenn dir das noch nichts sagt, hat SAP im BADI sogar eine Beispielimplementierung angelegt, aus der du abschreiben kannst ( Klasse CL_EXM_IM_MD_ADD_COL_OVERVIEW ). Diese erläutert noch genauer was gemacht wird.
Wenn alles nichts hilft: Setze EX_COL_CHAR1_ACTIVE auf "X" und EX_COL_CHAR1_NAME auf "Fred".
Wenn du das geschafft hast, sollte jetzt in der MD06 ein weiteres Feld auftauchen und du meldest dich wieder wenn du das geschafft hast oder dabei Probleme hast.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Materialnotiz Button programmieren

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo black_adept,

also ich hätte das Badi jetzt implementiert (Siehe Bild 1) und ein weiteres Feld erzeugt (Siehe Bild 2).

Ich wäre jetzt also bereit für den nächsten Schritt : ).

Re: Materialnotiz Button programmieren

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Und jetzt bräuchte ich für das Feld eigentlich einen Button mit der ich die Materialnotiz erscheinen lassen kann, wie hier in dem Beispiel (Siehe Bild 1).

Hier wäre der Code dazu:

Code: Alles auswählen.

DATA: it_editor TYPE STANDARD TABLE OF char1024.

* Button Pos 2 Länge 20, sendet Kommando 'CMD_SHOW'
SELECTION-SCREEN: PUSHBUTTON 2(20) btn1 USER-COMMAND cmd_show.

* Popup-Fenster (Selektionsbild 100) deklarieren
SELECTION-SCREEN BEGIN OF SCREEN 100 TITLE title.
SELECTION-SCREEN END OF SCREEN 100.

INITIALIZATION.
* Fenstertitel
  title = 'Texteditor'.
* Button-Text setzen
  btn1 = |{ icon_activity }Popup anzeigen|.

AT SELECTION-SCREEN.
* wenn Button-Kommando 'CMD_SHOW'
  IF sy-ucomm = 'CMD_SHOW'.
* cl_gui_container=>screen1 == SELECTION-SCREEN 100
    DATA(o_edit) = NEW cl_gui_textedit( wordwrap_mode = cl_gui_textedit=>wordwrap_at_windowborder
                                        wordwrap_to_linebreak_mode = cl_gui_textedit=>true
                                        parent = cl_gui_container=>screen1 ).

* feste Zeichenbreite
    o_edit->set_font_fixed( mode = cl_gui_textedit=>true ).

* Popup-Fenster (Selektionsbild 100) anzeigen -> cl_gui_container=>screen1 wird erzeugt
    CALL SELECTION-SCREEN 100 STARTING AT 10 5 ENDING AT 100 20.

* Text aus dem Editor holen
    o_edit->get_text_as_stream( IMPORTING text = it_editor ).

* Editorobjekt freigeben
    FREE: o_edit.
  ENDIF.

START-OF-SELECTION.
  LOOP AT it_editor ASSIGNING FIELD-SYMBOL(<l>).
    WRITE: / <l>.
  ENDLOOP.
bloß da macht mir das Badi mit Selection-Screen ja einen Strich durch die Rechnung.

Könnte mir bitte jemand für Schritt 2 helfen ? : )

Re: Materialnotiz Button programmieren

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin LoW-RiDeR,

jetzt geht's erst mal zur Navigation: Ich habe kurz in die MD06 geschaut und es gibt dort leider keinen Exit, mit dem du dich da einklinken könntest, um die Kontrolle zu übernehmen.
Aber wenn man einen Doppelklick in der Liste macht, landet man auf einem Detailbild ( Navigation ) und das machst du dir zu Nutze.
  1. Lege eine neue Klasse an. Nenne diese ZCL_MD06_ENHANCEMENTS oder so ähnlich und lege dort eine statische Methode namens "MD06_NAVIGATION" an. Diese Methode hat 3 Parameter:
    Eingabeparameter 1 is_mdke vom Typ MDKE
    Eingabeparameter 2 iv_fname vom Typ FNAME_D
    Returningparameter rv_own_navigation vom Type ABAP_BOOL
    Diese Methode wird zunächst nur folgenden Code enthalten:

    Code: Alles auswählen.

    rv_own_navigation = abap_false.
    IF SY-UNAME <> 'deinBenutzer'.RETURN.ENDIF.
    BREAK-POINT.
  2. Lege einen impliziten Enhancementspot am Anfang der FORM-Routine "show_liste_var" im Programm LM61RF5L an und setze dort einen Break-Point rein.
    Sobald du die MD06 aufrufst und auf deinem Break-point landest geht es weiter mit Punkt 3.
  3. Jetzt tausche den Break-point in dem Enhancementspot durch einen Aufruf der neuen Methode aus. Damit du nicht allzu viel kaputt machst hier der Aufruf ( falls du die Klasse oder Methode anders benennst halt anpassen

    Code: Alles auswählen.

    IF cr61t-lsmod = space.
      IF ZCL_MD06_ENHANCEMENTS=>MD06_NAVIGATION( is_mdke  = mdkex
                                                 iv_fname = am61r-fname ). 
    
        RETURN.
      ENDIF.
    ENDIF.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Materialnotiz Button programmieren

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo black_adept,

okay, ich hätte das Ganze wie von dir beschrieben nun implementiert und wenn ich die Materialnotiz(Siehe Bild ) in der MD06 reinklicke, dann springt er den Breakpoint auch an mit dem Enhancement Point und wird fehlerfrei durchlaufen.


Ich wäre nun bereit für den nächsten Schritt : ).

Vielen Dank schon mal .

Re: Materialnotiz Button programmieren

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin LoW-RiDeR,

jetzt wirst du an mehreren Fronten kämpfen.
  1. Finde heraus, ob ein Material eine Materialnotiz hat oder nicht. Baue dafür eine Methode in der eben angelegten Klasse, welche du "ANGELWINGS_TO_DUST" nennst, Eingabeparameter Materialnummer und Werk, Returnparameter vom Typ ABAP_BOOL.
    Das zugehörige Coding überlasse ich dir oder wir hören weitere Fragen wenn du nicht weißt wie das geht.
  2. Baue eine Methode in der eben angelegten Klasse, welche du "DISPLAY_MATERIAL_MEMO" nennst, Eingabeparameter Materialnummer und Werk.
    Das zugehörige Coding überlasse ich dir oder du machst es später. Dann nur einen BREAK-POINT da reinsetzen.
  3. Im Badi, wo du das neue Feld füllst rufst du die Methode "ANGELWINGS_TO_DUST" auf und wenn das Material eine Materialnotiz hat schreibst du als Text in das Feld so was wie TEXT = |{ icon_deceased_patient } MaterialMemo|, sonst lässt du das Feld leer. ( Hier ist es später wichtig den Fachbereich zu schulen, dass er auf das Feld doppelklicken kann um sich die Materialnotiz anzeigen zu lassen )
  4. In der Methode MD06_NAVIGATION schaust du nach, ob der User einen Doppelklick auf das neue Feld gemacht hat. Wenn ja, setzt du den Returnparameter rv_own_navigation auf abap_true und rufst die Methode "DISPLAY_MATERIAL_MEMO" auf.
  5. Falls du nicht weißt, wie man eine Materialnotiz anlegt, lege ein Testprogramm an, welches Parameter für Material und Werk hat. Dieses ruft auch die DISPLAY_MATERIAL_MEMO auf. Das ist einfacher als immer über die MD06 zu gehen und wenn es im Testprogramm klappt, ist die MD06 auch fertig
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Materialnotiz Button programmieren

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo black_adept,

also die Methode ANGELWINGS_TO_DUST hätte ich, wie von dir beschrieben, nun angelegt (Siehe Bild 1 und 2).

Die Methode "DISPLAY_MATERIAL_MEMO" hätte ich auch schon angelegt, allerdings das Coding noch leer gelassen (Siehe Bild 3).

Re: Materialnotiz Button programmieren

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Bei dem Punkt 3 hätte ich nun allerdings das Problem, dass ich nun ja zur Prüfung ob bei einem Material bereits eine Materialnotiz vorhanden ist, nun die Klassenmethode ja in der Klasse mit der Methode aufrufen müsste, in welcher ich das neue Feld programmiert habe (Siehe Bild 4). Leider habe ich aber in dieser Methode keinen Zugriff auf die interne Tabelle, mit den ganzen Materialien welchen später als ALV-Liste in der MD06 ausgegeben werden (Siehe Bild 5). Ich müsste ja vor der Ausgabe der ALV-Liste prüfen, ob es zu den ganzen Materialien bereits eine Materialnotiz existiert. Ich habe das ganze mal debuggt, habe aber in der Methode leider keinen Zugriff auf die Daten von den Materialien in der Methode in welcher ich die Klassenmethode für die Matrialnotiz aufrufen würde : /.

Re: Materialnotiz Button programmieren

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin LoW-RiDeR,
ad 3.) Die Method FILL_ADD_COLUMNS hat diverse Inputparameter, die die gewünschten Parameter enthalten.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Vergleichbare Themen

2
Antw.
673
Views
(Exportieren Tabellenkalkulation) Button programmieren Wie ??
von Armin93 » 03.09.2019 12:46 • Verfasst in ABAP® für Anfänger
1
Antw.
139
Views
statt Button F8 Button Close setzen
von HH_ABAP » 18.05.2023 21:16 • Verfasst in ABAP® für Anfänger
5
Antw.
4119
Views
Per Button klick ein symbol in den Button einfügen
von alex1986 » 03.08.2011 15:57 • Verfasst in ABAP® für Anfänger
4
Antw.
2972
Views
Uhr programmieren
von donossi » 17.11.2011 11:50 • Verfasst in ABAP® für Anfänger
1
Antw.
4932
Views
Rekursives Programmieren
von SaskuAc » 03.08.2015 14:14 • Verfasst in ABAP® für Anfänger

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.