Tabelle an form übergeben

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

Re: Tabelle an form übergeben

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

also was funktioniert nicht - wenn ich deine Beiträge bisher gesehen habe und verstehe - wolltest du in einer Case Anweisung daten aus deinen Tabellen selektieren in eine interne Tabelle und diese interne Tabelle dann an die Routine übergeben und dort mit dem FUBA ausgeben / anzeigen oder ?
Daher die Frage - wieso ist die Datenselektion nun in der Routine ? Ich verstehe langsam nicht was du machen wilst / sollst .
Danke für aufklärende Worte .

Gruss
thanks Jens

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


Re: Tabelle an form übergeben

Beitrag von Tgut (ForumUser / 75 / 3 / 0 ) »
Hey,
ich hab meinen Fehler in der SELECT-Anweisung gefunden.

Ich bekomme beim Aufruf der F4-Hilfe immer eine Fehlermeldung PARAM NOT FOUND.

Es war mein Plan Daten zu selektieren in eine interne Tabelle und diese dann in der F4-Hilfe auszugeben.

Gruß
Tatjana

Re: Tabelle an form übergeben

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

also dieser Thread ist echt anstrengend, weil die Infos immer so wenig aussagekräftig sind. Du bekommst den Fehler beim Aufruf des F$ FUBA - wenn du den so aufrufst wie in deinem Coding weter oben es steht oder ? Der Fehler liegt dann daran, dass du die Strukur nicht mit gibst. In meinem kleinen Testprogramm siehst doch wie es geht und das funktioniert doch bestens - also musst du es doch nur an deine Bedürfnisse anpassen. Du hast doch eine Struktur für die Anzeige der Daten wie du sie haben willst oder - müsste doch diese sein ZPPATMPMASS ?

Gruss
thanks Jens

Re: Tabelle an form übergeben

Beitrag von Tgut (ForumUser / 75 / 3 / 0 ) »
Hallo,
na ja ich kann es nicht besser ausdrücken, ich tu ja schon mein Bestes. Meine value_Tab ist <fs> und meine Struktur ist ZPPATMPMASS in diesem Fall ( da dynamisch), welche dem <fs> zugewiesen wird. Auch wenn ich die Struktur mit übergebe geht es leider nicht.

Im Moment sieht mein Code so aus:

Code: Alles auswählen.

FORM zpdplan_get_atlf4_V01.

  DATA: l_ittab TYPE REF  TO data,
        l_tabname TYPE tabname,
        l_retfield TYPE dfies-fieldname,
        l_it_returntab TYPE TABLE OF ddshretval, "Returntabelle
        l_wa_returntab LIKE LINE OF l_it_returntab,
        dbtab_syntax TYPE string,
        dbtab_syntax1 type string value ' = ',
        dbtab_syntax2 type string,
        dbtab_syntax3 type string,
        dbtab_syntax4 type string.

FIELD-SYMBOLS <fs> TYPE STANDARD TABLE.

*String für Select-Abfrage zusammen setzen
CONCATENATE g_wa_atlstd-dattab 'INNER JOIN' g_wa_atlstd-dattab2 'ON' into dbtab_syntax separated by space.
CONCATENATE g_wa_atlstd-dattab'~'g_wa_atlstd-wert2 into dbtab_syntax1.
CONCATENATE g_wa_atlstd-dattab2'~'g_wa_atlstd-wert2 into dbtab_syntax2.
concatenate 'WHERE' 'ZPPISTANDARD' '=' g_wa_atlstd-kb  into  dbtab_syntax3 separated by space.
concatenate dbtab_syntax dbtab_syntax1 '=' dbtab_syntax2 into dbtab_syntax4 separated by space.

READ TABLE g_atlstd INTO g_wa_atlstd INDEX 1.

CREATE DATA l_ittab TYPE STANDARD TABLE OF (g_wa_atlstd-dattab). 
ASSIGN l_ittab->* TO <fs>. "Tabelle dem FS zuweisen

SELECT (g_wa_atlstd-wert) INTO corresponding fields of TABLE <fs>  FROM (dbtab_syntax4) where ZPPIDSTANDARD = g_wertkb.

  l_tabname = g_wa_atlstd-dattab. 
  l_retfield = g_wa_atlstd-wert. 

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' "bereitstellen
    EXPORTING
     ddic_structure  = l_tabname
      retfield        = l_retfield
      value_org       = 'S'
      display         = 'F'
      value_tab       = <fs>
      return_tab      = l_it_returntab
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


  READ TABLE l_it_returntab INTO l_wa_returntab INDEX 1.

  <pub__this_value> = l_wa_returntab-fieldval. "einsetzen

ENDFORM. "Form zpdplan_get_atlf4_V01

Dieser Code funktionierte heute schon (auch wenn es merkwürdig klingt). Hab aber auch viel dran rumgeschraubt, aber eigentlich in diesem Bereich nichts verändert. Im Moment erhalte ich die Fehlermeldung "Eine Exception vom Typ CX_SY_DYN_CALL_PARAM_NOT_FOUND ist aufgetreten, wurde aber weder lokal behandelt noch durch eine RAISING-Klausel deklariert". Das Programm läuft durch bis zum Aufruf der Funktion CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' hier bricht es ab mit aufgeführter Fehlermeldung. Somit "Ja ich erhalte die Fehlermeldung beim Aufruf der F4-Hilfe im Feld".

Ich hoffe es ist jetzt etwas klarer.

Gruß
Tatjana

Re: Tabelle an form übergeben

Beitrag von Pyro (Specialist / 121 / 14 / 18 ) »
Guten Morgen,

1. Bitte versuch dir generell anzugewöhnen, aus Forms heraus nicht auf globale Variablen zuzugreifen. Das macht den Code unleserlich und unübersichtlich;)
2. Das an den FuBa übergebene l_retfield gibt es sicher in der Struktur, welche in l_tabname steht? In l_tabname steht auch sicher die gleiche Struktur, wie auch value_tab hat?

Versuch evtl. den Aufruf des Funktionsbausteins in einem Separaten kleinen Testprogramm oder in der Se37 mit den Werten von diesem Beispiel als Festwerte und nicht als Variablen/Feldsymbole auszuführen. Bei der dynamischen Programmierung kann sich schnell mal ein kleiner Fehler einschleichen, den man leicht übersieht.

//EDIT: Value_Tab und Return_TAB sollten unter TABLES und nicht unter EXPORTING stehen?!

gruß
Pyro

Re: Tabelle an form übergeben

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Ähm.. moin erstmal..

value_tab und return_tab sind aber keine EXPORTING parameter sondern TABLES parameter.. kann der Hund da schon begraben sein?

EDIT: ich sehe grad Pyro ist das auch schon aufgefallen..
Gruß,
der Matze

Re: Tabelle an form übergeben

Beitrag von Tgut (ForumUser / 75 / 3 / 0 ) »
Hallo,
Pyro hat geschrieben:.... Bei der dynamischen Programmierung kann sich schnell mal ein kleiner Fehler einschleichen, den man leicht übersieht.
Wie recht Du hast, genau da lag der Hund begraben.....der Parameter "retfield" war (dynamisch) falsch gesetzt, irgendwann hab ich den Überblick mit all den dynamischen Parametern verloren, kaum das richtige Feld eingetragen tut es auch :D .

Und Du hast natürlich recht value_tab muss unter TABLES stehen gleich korrigiert.

Gestern hab ich schon den Wald vor lauter Bäumen nicht mehr gesehen glaube ich heute Morgen hab ich's gleich rausgefunden.

Das Problem ist, ich hab dieses Programm von meinem Vorgänger übernommen und es war so halb fertig. Nun muss ich es an die Kundenwünsche anpassen und ich hab erstmal verstehen müssen was er da programmiert hat. Da das Programm sehr umfangreich (über 1000 Zeilen) ist mit zig Db-Tabellen dahinter war das gar nicht so leicht.

Weiß auch, dass gobale Variablen nicht die beste Lösung sind, jedoch ist diese (g_wertkb) wirklich im ganzen Dokument gültig und ehrlich gesagt schien es mir so jetzt mal am einfachsten. Vor allen Dingen in der ganzen Fülle an Daten.

Trotzdem danke für die Tipps.

Grüße
Tatjana

Re: Tabelle an form übergeben

Beitrag von Pyro (Specialist / 121 / 14 / 18 ) »
Tgut hat geschrieben:Weiß auch, dass gobale Variablen nicht die beste Lösung sind, jedoch ist diese (g_wertkb) wirklich im ganzen Dokument gültig und ehrlich gesagt schien es mir so jetzt mal am einfachsten. Vor allen Dingen in der ganzen Fülle an Daten.
Ja, klar ist es einfacher globale Daten direkt anzusprechen, aber wenn du mal ein Programm übernehmen musst, wo in Forms auf globale Daten zugegriffen wird und alles global ist und nichts übergeben wird, wirst du den Programmierer einfach hassen:P
Eine Form sollte mMn immer so aufgebaut sein, dass man in der Form NUR mit Formlokalen Variablen und Parametern arbeiten kann.

Freut mich auf jeden Fall, dass dein Problem gelöst ist. Diese dynamische Programmierung ist (v.a. zu Beginn) schon manchmal ziemlich tricky^^

Re: Tabelle an form übergeben

Beitrag von Tgut (ForumUser / 75 / 3 / 0 ) »
Hallo,
ja nicht so einfach mit der Dynamik, jetzt muss ich "nur" noch eine Mehrfachselektion realisieren.

Mal gucken ob ich das hinkrieg.

Gru
Tatjana

Re: Tabelle an form übergeben

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

wenn du Mehrfachselektion bei F4 meinst - dann Parameter MULTIPLE_CHOICE = abap_true und dann stehen alle selektierten Werte in der Return Tabelle - also kein lesen mehr mit Index 1.

Gruss
thanks Jens

Re: Tabelle an form übergeben

Beitrag von Tgut (ForumUser / 75 / 3 / 0 ) »
Hallo,
das hat auch ganz gut geklappt.

Code: Alles auswählen.

LOOP AT l_it_returntab  INTO l_wa_returntab.
endloop.
Nun muss ich die Werte aus dem l_it_returntab in die Oberfläche des PMD schreiben (immer ein Feld nach unten springen in der Tabelle auf der Useroberfläche).

Das klappt noch nicht, hier erscheint immer wenn ich versuche mit API_SET_VALUE einen Wert zu setzen eine Meldung Exception vom Typ CX_ISHMED_PMD ist aufgetreten.

Gruß
Tatjana

Re: Tabelle an form übergeben

Beitrag von Tgut (ForumUser / 75 / 3 / 0 ) »

Code: Alles auswählen.


data: l_occ TYPE sy-tabix.

LOOP AT l_it_returntab  INTO l_wa_returntab.
 l_occ = l_occ + 1.

CALL METHOD <pub__service>->api__set_value
          EXPORTING
            i_alias = 'ZPPATMZIEL'
            i_occ   = l_occ
            i_value = l_wa_returntab-fieldval.

endloop.
Damit funktioniert es nicht. Der Loop wird zwar durchlaufen aber das Ergebnis nicht an der Oberfläche ausgegeben (felder bleiben einfach leer).

Jemand noch ne Idee?

Gruß
Tatjana

Re: Tabelle an form übergeben

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

ich kenne die Application zwar nicht - aber was besagen die Parameter der aufgerufenen Methode api_set_value ?

Gruss
thanks Jens

Re: Tabelle an form übergeben

Beitrag von Tgut (ForumUser / 75 / 3 / 0 ) »
Hallo,
i_alias = 'ZPPATMZIEL' ist der Name des Feldes welches in der Abbildung zu sehen ist (rot umrahmt).

L_occ ist die Nummer der Zeile in der Tabelle l_it_returntab bzw. im Workarea l_wa_returntab.

i_value enthält das Feld des Workarea's l_wa_returntab welches zuvor aus der F4-Hilfe in die Tabelle l_it_returntab übergeben wurde. Dieses Feld enthält einen Text und heisst l_wa_returntab-fieldval.

Da man in der F4-Hilfe mehrere Zeilen auswählen kann sollen mehrere Zeilen in das Feld 'ZPPATMZIEL' , welches ja als Tabelle auf der Oberfläche implementiert ist ausgegeben werden.

Im Moment übernimmt er immer nur einen Wert in das Feld (also er springt nicht eine Zeile weiter).

Gruß
Tatjana

Re: Tabelle an form übergeben

Beitrag von a-dead-trousers (Top Expert / 4457 / 227 / 1198 ) »
hi!
Tgut hat geschrieben:Damit funktioniert es nicht. Der Loop wird zwar durchlaufen aber das Ergebnis nicht an der Oberfläche ausgegeben (felder bleiben einfach leer).
Jemand noch ne Idee?
Das ist ein "BUG" im PMD-Framework.
Bei Aufruf einer F4-Hilfe wird nur die aktuelle Zeile aktualisiert. Auch das Angeben der Zeilennummer funktioniert nicht.
Das Verhalten stammt aber aus dem Standard, denn auch dort kann man bei F4 nur das aktuelle Feld verändern. Wenn man etwas anderes noch mitverändern wollte, musste man DYNP_VALUES_UPDATE verwenden.

Beim PMD-Framework kommt noch erschwerend hinzu, dass intern, solange man im F4-Modus ist, jeder Versuch der Änderung einer anderen Zeile ausnahmslos unterbunden wird.

Man kann aber mit einem kleinen HACK die Daten trotzdem ändern. Aber man muss sich auch klar sein, dass man dafür keine Unterstützung von der GSD (Entwickler des PMD-FW) erhält und man jederzeit Gefahr laufen kann bei einem Patch oder Releasewechsel, dass die Lösung nicht mehr funktoniert weil man auf "nicht freigegebene", interne Methoden zugreifen muss.

Wenn Interesse besteht, poste ich hier gerne die Lösung, aber da ich diese noch für eine "allgemeine" Verwendbarkeit anpassen müsste was etwas aufwändig ist, frage ich vorher, ob das überhaupt in Frage käme.

lg ADT
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

Vergleichbare Themen

3
Antw.
7198
Views
interne Tabelle an Form übergeben
von Andrzej » 17.05.2017 14:14 • Verfasst in ABAP® für Anfänger
2
Antw.
2234
Views
Nochmal Tabelle übergeben an Form
von Tgut » 12.09.2014 11:13 • Verfasst in ABAP® für Anfänger
1
Antw.
2975
Views
17
Antw.
9723
Views
Interne Tabelle an Form übergeben innerhalb eines FuBa's
von shapoc » 09.05.2006 14:36 • Verfasst in ABAP® Core
3
Antw.
4391
Views
Selektionstabelle als Parameter an Form Routine übergeben
von ronin » 01.08.2008 17:00 • 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.