Eingabehilfe für Dynpro: zwei Felder aus versch. Tabellen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Eingabehilfe für Dynpro: zwei Felder aus versch. Tabellen

Beitrag von ManMan (ForumUser / 26 / 10 / 0 ) »
Hallo zusammen,

ich habe mein eigenes Dynpro angelegt. Es enthält zwei Eingabefelder Lifnr aus der Tabelle lfa1 und Kunnr aus der Tabelle kfa1. Zu diesen Felder habe ich die Eingabehilfe gemacht. Aber die funktioniert nicht richtig. Die Werte aus den Tabelle lfa1 und kfa1 stimmen mit der Werten aus der Eingabehilfe nicht überein. Eigentlich in der Eingabehilfe gibt es überhaupt keine Lieferantennummer und keine Kundennummer wie in der Tabellen. Und noch möchte ich in der Eingabehilfe nur die Liferantennummer und die Kundennummer auswählen, ohne andere Optionen. Wie ich es mit SELECT mache funktioniert nicht. Wie kann ich es machen? Bin sehr dankbar für die Hilfe.

Code: Alles auswählen.

TYPES: BEGIN OF ts_values,
         carrid TYPE spfli-carrid,
         connid TYPE spfli-connid,
       END OF ts_values.

data: gv_lifnr type lfa1-lifnr,
      gv_kunnr type kna1-kunnr.



DATA: progname TYPE sy-repid,
      dynnum   TYPE sy-dynnr,
      dynpro_values TYPE TABLE OF dynpread,
      field_value LIKE LINE OF dynpro_values,
      gt_values TYPE TABLE OF ts_values.



MODULE init OUTPUT.
  progname = sy-repid.
  dynnum   = sy-dynnr.
  CLEAR: field_value, dynpro_values.
  field_value-fieldname = 'GV_LIFNR'.
  APPEND field_value TO dynpro_values.
  CLEAR: field_value, dynpro_values.
  field_value-fieldname = 'GV_KUNNR'.
  APPEND field_value TO dynpro_values. 
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE value_carrier INPUT.

  CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
       EXPORTING
            tabname     = 'LFA1'
            fieldname   = 'LIFNR'
            dynpprog    = progname
            dynpnr      = dynnum
            dynprofield = 'GV_LIFNR'.
  
   CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
       EXPORTING
            tabname     = 'KNA1'
            fieldname   = 'KUNNR'
            dynpprog    = progname
            dynpnr      = dynnum
            dynprofield = 'GV_KUNNR'.

ENDMODULE.

MODULE value_connection INPUT.

  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            dyname             = progname
            dynumb             = dynnum
            translate_to_upper = 'X'
       TABLES
            dynpfields         = dynpro_values.

  field_value = dynpro_values[ 1 ].

  SELECT  lifnr
    FROM  lfa1
    INTO  CORRESPONDING FIELDS OF TABLE gt_lfa1
    WHERE lifnr = gv_lifnr.
    
    SELECT kunnr
    FROM  kfa1
    INTO  CORRESPONDING FIELDS OF TABLE gt_kfa1
    WHERE kunnr = gv_kunnr.


  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
       EXPORTING
            retfield    = 'LIFNR'
            dynpprog    = progname
            dynpnr      = dynnum
            dynprofield = 'GV_LIFNR'
            value_org   = 'S'
       TABLES
            value_tab   = values_tab.
  
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
       EXPORTING
            retfield    = 'KUNNR'
            dynpprog    = progname
            dynpnr      = dynnum
            dynprofield = 'GV_KUNNR'
            value_org   = 'S'
       TABLES
            value_tab   = values_tab.

ENDMODULE.

process before output.
module status_8000.
module init.
  
process after input.
module user_command_8000.
  
process on value-request.
field gv_lifnr module value_carrier.
field gv_lifnr module value_connection.

field gv_kunnr module value_carrier.
field gv_kunnr module value_connection.

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


Re: Eingabehilfe für Dynpro: zwei Felder aus versch. Tabelle

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 412 ) »
Also wenn Du eine Werthilfe für ein bestimmtes Feld haben möchtest und für dieses Feld aber nacheinander zwei verschiedene Werthilfen für unterschiedliche Felder aufrufst, dann kann das offensichtlich nicht funktionieren.

Du brauchst also im "process on value-request"-Block ein module für die Lieferantennummer und ein module für die Kundennummer und nicht so, wie Du es gemacht hast, ein Module, in dem Du beides machst und dann noch ein Module, in dem Du auch beides machst.

Im übrigen musst Du Dich entscheiden, ob Du mit F4IF_FIELD_VALUE_REQUEST oder mit F4IF_INT_TABLE_VALUE_REQUEST arbeiten möchtest. Beides durcheinandergewürfelt kann auch nicht funktionieren. Schau Dir am besten mal Beispiele an, in denen diese Funktionsbausteine verwendet Werden (Transaktion EWK1, das Z* rausnehmen und unten den Namen des Funktionsbausteins eingeben und Abfahrt. Dauert etwas, aber dann bekommst Du alle Stellen angezeigt, bei denen die SAP selber damit arbeitet.)

Tatsächlich glaube ich, dass Du in Deinem Fall überhaupt keinen process on value-request-Block benötigst, weil Lieferantennummer und Kundennummer ja Standard-DDIC-Felder sind, für die es garantiert einen Matchcode gibt, den Du im Dynpro bei dem Feld als "Suchhilfe" eintragen kannst, und dann ist das gut. Leider ist meine SD-Zeit schon einige Jahre her, aber da reicht in einem SAP-Standard-Dynpro zu schauen, welchen Matchcode die SAP dafür nimmt.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ManMan


Re: Eingabehilfe für Dynpro: zwei Felder aus versch. Tabelle

Beitrag von ManMan (ForumUser / 26 / 10 / 0 ) »
Danke schön für die Hilfe! Und ich habe noch eine Frage: was ist ein Matchcode und wie kann man es für die Eingabehilfe benutzen. Ich habe die Funktionen komplett weggemacht. Habe einfach zwei Module für jedes Feld angelegt und danach in meinem Dynpro für jeden Modul eine SELECT-Anweisung implementiert. Jetzt geht es mit den Tabelln LFA1 und KNA1.
Und ich habe noch eine Frage, kannst Du mir bitte noch weiter helfen. Auf dem Dynpro habe ich auch einen Speichern-Button. Die Logik ist folgende: auf dem Dynpro selektiert man die Daten aus den Tabellen LFA1 und KNA1. Dann soll der Speichern-Button geklickt werden und Lieferantennummer oder Kundennummer müssen in der dritten DB-Tabelle gespeichert werden. Wenn ich das einfach auf dem Selection-Screen mache, funktioniert es. Aber auf dem Dynpro geht es nicht. Woran kann es liegen?

Code: Alles auswählen.


form save_data.

    select single lifnr name1 into (tablex-lifnr, linam)
      from lfa1 where lifnr = lifnr.
        if sy-subrc = 4.
          select single lifnr name1 into (tablex-lifnr, linam)
          from kna1 where kunnr = lifnr.
            if sy-subrc = 4.
              fehler
            endif.
        endif.

    select single lifnr name1 into (tablex-lifnr, kunam)
      from lfa1 where lifnr = kunnr.
        if sy-subrc = 4.
          select single lifnr name1 into (tablex-lifnr, kunam)
          from kna1 where kunnr = kunnr.
		if sy-subrc = 4
		  fehler
            endif.
        endif.
    select single * from tablex where lifnr = lifnr.
      if sy-subrc = 4.
        tablex -lifnr = lifnr.
        tablex -linam = linam.
        tablex -kunnr = kunnr.
        tablex -Kunam = kunam.
        modify tablex.
      else.
        fehler
      endif.
endform.

MODULE zuser_command_8000 INPUT.
  case sy-ucomm."ok_code.
    when 'SAVE'.
      if lifnr is not initial.
       perform save_data.
      else.
        Geben Sie Daten ein!
      endif.
    when 'CANCEL'.
....
ENDMODULE.
class lcl_handle_events implementation.
	method on_user_command.
		case e_salv_function.
			when 'SAVE'.
				perform save_data.
	endmethod.
endclass.

Re: Eingabehilfe für Dynpro: zwei Felder aus versch. Tabelle

Beitrag von PeterPaletti (Specialist / 348 / 32 / 97 ) »
Die Suchhilfe für LIFNR heißt KRED und die Suchhilfe für KUNNR heißt DEBI.
Die beiden Suchhilfen bindest du einfach im Screen-Painter an das jeweilige passende Feld.
Da machst du im grafischen Screen-Painter einen Doppelklick auf dein Feld, dann geht ein Popup auf und da gibt es ein Feld, in das du die Suchhilfe eintragen kannst.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
ManMan


Re: Eingabehilfe für Dynpro: zwei Felder aus versch. Tabelle

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 412 ) »
Was die Suchhilfe angeht, so PeterPaletti das gut erklärt. Für solche Standardfelder solltest Du keine Wertehilfe im Dynpro manuell programmieren. Zum einen ist das ganz schlechter Stil, und zum anderen sind bei so elementaren Feldern die Matchcode-Suchhilfen der SAP meist wesentlich ausgefeilter und leistungsfähiger als das, was Du da auf die Schnelle zusammenhacken kannst.
was ist ein Matchcode
Der Begriff "Matchcode" stammt eigentlich noch aus Release 3.x. Heutzutage spricht man von "Suchhilfen", aber in unseren Kreisen ist "Matchcode" noch verbreitet, und im ABAP findet sich der Begriff auch noch. Lies Dir mal die ABAP-F1-Hilfe zu dem Befehl

PARAMETERS lief LIKE LFA1-LIFNR MATCHCODE OBJECT KRED.

durch. :wink:
Und ich habe noch eine Frage, kannst Du mir bitte noch weiter helfen. Auf dem Dynpro habe ich auch einen Speichern-Button. Die Logik ist folgende: auf dem Dynpro selektiert man die Daten aus den Tabellen LFA1 und KNA1. Dann soll der Speichern-Button geklickt werden und Lieferantennummer oder Kundennummer müssen in der dritten DB-Tabelle gespeichert werden. Wenn ich das einfach auf dem Selection-Screen mache, funktioniert es. Aber auf dem Dynpro geht es nicht. Woran kann es liegen?
Da finde ich es zunächst einmal erstaunlich, dass das auf "dem Selection-Screen" funktionieren soll. Wenn Du bei einem Report auf dem Selektionsbild den Speichern-Knopf (oder F11) drückst, dann geht ein Dialog auf, der Dir anbietet, die derzeite Ausfüllung des Selektionsbildes als Variante zu speichern.

Grundsätzlich definierst Du bei eigenen Dynpros die zur Verfügung stehenden Knöpfe und Menüs per SE41 in einem sog. GUI-Status (oder "Oberfläche"). Diesen musst Du dann im PBO Deines Dynpros per Befehl SET PF-STATUS einbinden. Im PAI wertest Du dann den SY-UCOMM aus und verzweigst in entsprechenden Folgecode.

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ManMan


Seite 1 von 1

Vergleichbare Themen

9
Antw.
5684
Views
Daten aus zwei versch. Tabellen
von bohne » 01.03.2006 16:28 • Verfasst in ABAP® für Anfänger
3
Antw.
4847
Views
Suchhilfe: Zwei Dynpro-Felder aus 1 Suchhilfe beschicken
von meinrad » 03.03.2006 15:24 • Verfasst in Dialogprogrammierung
4
Antw.
3520
Views
Wertübernahme aus Eingabehilfe für Dynpro Feld
von Jozi » 29.01.2006 19:42 • Verfasst in Dialogprogrammierung
3
Antw.
2750
Views
Dynpro mit Eingabehilfe und Datum konvertieren?
von Basler84 » 28.09.2012 11:08 • Verfasst in ABAP® für Anfänger
1
Antw.
1468
Views
Im Dynpro ohne Eingabehilfe Liste anzeigen
von kaim77 » 29.06.2014 21:22 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2404
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8987