Inhalt von nem TC (ohne PBO,PAI)

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

Inhalt von nem TC (ohne PBO,PAI)

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Hallo liebe Abap-Gemeinde.

Gibt es ne Möglichkeit zum Zeitpunkt POV den Inhalt eines Table-Controls auszulesen??? (um z.b. in einer internen Tabelle zu speichern)

Ich kann zwar mit 'Loop at Screen' die Felder durchlaufen...aber ich komm net an den Inhalt...ich glaub ich steh mal wieder auf ner Leitung.

Thx 4 Help.

Gruß
Markus

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


Re: Inhalt von nem TC (ohne PBO,PAI)

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
MarkusW hat geschrieben:Gibt es ne Möglichkeit zum Zeitpunkt POV den Inhalt eines Table-Controls auszulesen??? (um z.b. in einer internen Tabelle zu speichern)
FuBa: DYNP_VALUES_READ

Wenn du nur die aktuelle Zeile bestimmen willst FuBa: DYNP_GET_STEPL
Gruß Hendrik

Re: Inhalt von nem TC (ohne PBO,PAI)

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
JHM hat geschrieben:
MarkusW hat geschrieben:Gibt es ne Möglichkeit zum Zeitpunkt POV den Inhalt eines Table-Controls auszulesen??? (um z.b. in einer internen Tabelle zu speichern)
FuBa: DYNP_VALUES_READ

Wenn du nur die aktuelle Zeile bestimmen willst FuBa: DYNP_GET_STEPL
Ne will schon das komplette TC auslesen. den genannten FuBa hab ich schon gefunden, gibt aber keine Werte zurück...deshalb hab ich den nicht erwähnt.

Hier mein Coding:

Code: Alles auswählen.

 DATA: lt_test    TYPE TABLE OF dynpread.


  lf_sycprog = sy-cprog.
  lf_sydynnr = sy-dynnr.


  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname                         = lf_sycprog
      dynumb                         = lf_sydynnr
*   TRANSLATE_TO_UPPER             = ' '
*   REQUEST                        = ' '
*   PERFORM_CONVERSION_EXITS       = ' '
*   PERFORM_INPUT_CONVERSION       = ' '
*   DETERMINE_LOOP_INDEX           = ' '
    TABLES
      dynpfields                     = lt_test
* EXCEPTIONS
*   INVALID_ABAPWORKAREA           = 1
*   INVALID_DYNPROFIELD            = 2
*   INVALID_DYNPRONAME             = 3
*   INVALID_DYNPRONUMMER           = 4
*   INVALID_REQUEST                = 5
*   NO_FIELDDESCRIPTION            = 6
*   INVALID_PARAMETER              = 7
*   UNDEFIND_ERROR                 = 8
*   DOUBLE_CONVERSION              = 9
*   STEPL_NOT_FOUND                = 10
*   OTHERS                         = 11
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

auf dem Dynpro ist nur ein Table-Control...2 Spalten, davon ist nur die erste befüllt (nicht immer, kann auch leer sein).

Das ganze wird zu POV abgearbeitet (lt. Doku funzt der Fuba auch nur zu POV).

Wo hab ich den Fehler? in meiner Tabelle lt_test steht nix drin...egal wieviel im TC drinsteht. Es gibt keine TABLES Anweisung für TC oder sonst ne Verbindung zum DDIC...die Texte im TC werden durch F4 von einer DB-Tab ausgewählt...aber die Felder im TC selbst haben keine Verb. zum DDIC.

Gruß
Markus

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Hab noch folgendes hinzugefügt.

Code: Alles auswählen.

 
  DATA: lt_test    TYPE TABLE OF dynpread,
        ls_test    LIKE LINE OF lt_test.

MOVE 'GS_MCDON-MCDONPR' TO ls_test-fieldname.
  APPEND ls_test TO lt_test.

Dennoch stehen keine Werte mit in der Tabelle nach dem ausführen des FuBa. :cry:

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Hab den Fehler schon herausgefunden,
der FuBa kann keine Tabelle einlesen...also ist für TC nicht geeignet, werde das mal noch versuchen und so tun als würds nen SteepLoop sein.

EDIT: klappt nicht :x




Aber wenn jemand ne Lösung parat hat, ich hab immer noch ein offenes Ohr dafür ;)

Gruß
Markus

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Habs geschafft.

Für die die es wissen wollen, hier das Module: (Erklärung zum Module am Ende)

Code: Alles auswählen.

MODULE create_f4_wertehilfe INPUT.

* Eigene Datenstruktur
  TYPES: BEGIN OF ls_mcd_line,
          mcdonpr  TYPE /xxxx/mcdonpr,
          mcdontx  TYPE char80s,
         END OF ls_mcd_line.

  DATA: lt_mcdon_tab TYPE STANDARD TABLE OF ls_mcd_line.
  DATA: lt_ret_tab   TYPE STANDARD TABLE OF ddshretval,
        ls_ret_tab   LIKE LINE OF lt_ret_tab.

  DATA: lt_test    TYPE TABLE OF dynpread,
        ls_test    LIKE LINE OF lt_test.

  DATA: lf_sycprog LIKE sy-cprog,
        lf_sydynnr LIKE sy-dynnr.

  DATA: h_feld    TYPE /xxxx/mcdonpr,
        lf_merk    TYPE c,
        lf_zaehl   TYPE i VALUE 1.

  CLEAR gt_mcd_seltab.

  lf_sycprog = sy-cprog.
  lf_sydynnr = sy-dynnr.

  IF lf_merk = ' '.
    MOVE 'GS_MCDON-MCDONPR' TO ls_test-fieldname.
    APPEND ls_test TO lt_test.
    lf_merk = 'X'.
  ENDIF.

  DO 13 TIMES.
    MOVE lf_zaehl TO ls_test-stepl.
    MODIFY TABLE lt_test FROM ls_test .

    CALL FUNCTION 'DYNP_VALUES_READ'
      EXPORTING
        dyname                         = lf_sycprog
        dynumb                         = lf_sydynnr
     translate_to_upper             = 'X'
      TABLES
        dynpfields                     = lt_test.

    READ TABLE lt_test INTO ls_test INDEX 1.

    IF NOT ls_test-fieldvalue IS INITIAL.
      MOVE 'E'                 TO gs_mcd_seltab-sign.
      MOVE 'EQ'                TO gs_mcd_seltab-option.
      MOVE ls_test-fieldvalue  TO gs_mcd_seltab-low.
      APPEND gs_mcd_seltab TO gt_mcd_seltab.
    ENDIF.

    lf_zaehl = lf_zaehl + 1.
  ENDDO.

  lf_zaehl = 1.

  SELECT t~mcdonpr b~mcdontx
           FROM /xxxx/tmcdo AS t
           INNER JOIN /xxxx/bmcdo AS b
           ON t~mcdonpr = b~mcdonpr
           INTO CORRESPONDING FIELDS OF TABLE lt_mcdon_tab
           WHERE b~spras = sy-langu
           AND   t~mcdonpr IN gt_mcd_seltab.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
        retfield               = 'MCDONPR'
      dynpprog               = lf_sycprog
      dynpnr                 = lf_sydynnr
    dynprofield            = 'mcdonpr'    "bis jetzt,egal was drin steht
        value_org              = 'S'
      TABLES
        value_tab              = lt_mcdon_tab
        return_tab             = lt_ret_tab  .


ENDMODULE.                 " create_f4_wertehilfe  INPUT
Das Module wird zum Zeitpunkt POV (Process on Value-Request), auf einem bestimmten Feld wo F4 gedrückt wird,ausgeführt.

Die erste IF Abfrage verhindet, dass in der Tabelle für die Dynprofelder immer wieder das gleiche appended wird.

Die DO-Schleife ist dann das 'Herzstück'.
Auf dem Dynpro ist ein Table-Control mit 13 Zeilen. (Die Zeilenanzahl kann man zum Zeitpunkt POV nicht auslesen, deshalb hartcodiert ->Wer was besseres kennt, bitte sagen <- )

zaehler wird auf das Feld stepl geschrieben, um alle Zeilen des TC abzufragen.
Es gibt ein Parameter

Code: Alles auswählen.

determine_loop_index           = 'X'
dieser zählt den Wert von Stepl selber mit...allerdings steht da immer nur der Wert drin, von der Zeile die aktuell markiert war/ist.

Der FuBa sollte bekannt sein.

Die IF Abfrage füllt eine int. Tabelle, um sich zu merken welche Werte schon in der Tabelle stehen.

Der Select liest den Inhalt der Tabelle(n) ohne die schon vorhandenen am Bildschirm

Code: Alles auswählen.

AND   t~mcdonpr IN gt_mcd_seltab.
Nächster FuBa gibt die F4-Hilfe aus.


Gruß
Markus

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Auch wenn du das Problem schon gelöst hast:

Im Tricktresor gibt es einen Hinweis zu genau diesem Fall.

Pfad: SAP R/3 -> Entwicklung -> Programmierung -> Dynpros -> Feldwerte im PAI auslesen.

Schau dir mal den dort hervorgehobenen Hinweis an - damit kannst du mit einem einzigen Aufruf des DYNP_VALUES_READ alle TAblecontrolzeilen auf einmal lesen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Hallo black_adept,

danke, das Ding erspart mir die DO-Schleife ;)


Allerdings hab ich gerade noch ein Problem festgestellt...vllt kann mir da einer helfen.

Das TC kann man scrollen, sprich hat mehr Zeilen als man auf dem Bildschirm sieht.

Wenn nun gescrollt wurde, dann werden die Zeilen, die nicht am Bildschirm zu sehen sind, auch nicht berücksichtigt bei den FuBa´s. Aber dort stehen schon Daten drin, die ich auch wissen muss...

Wie kann ich das bewerkstelligen, dass zu dem Zeitpunkt des FuBa´s 'DYNP_VALUES_READ' alle TC-Zeilen gelesen werden auch die, die zum Zeitpunkt vom F4 drücken nicht sichtbar sind?

Das Coding sieht derzeit so aus:

Code: Alles auswählen.

 CLEAR gt_mcd_seltab.

  lf_sycprog = sy-cprog.
  lf_sydynnr = sy-dynnr.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname                         = lf_sycprog
      dynumb                         = lf_sydynnr
      translate_to_upper             = 'X'
      request                        = 'A'
    TABLES
      dynpfields                     = lt_test
EXCEPTIONS
      invalid_dynprofield            = 2
      OTHERS                         = 11.

  IF sy-subrc = 2.
*      MESSAGE s000 WITH 'Dynprofeld nicht vorhanden.'.
    EXIT.
  ELSEIF sy-subrc <> 0.
    MESSAGE x000 WITH 'Nicht nachvollziehbarer Fehler.'.
  ENDIF.

  LOOP AT lt_test INTO ls_test.
    IF ls_test-fieldname = 'GS_MCDON-MCDONPR'.
      IF NOT ls_test-fieldvalue IS INITIAL.
        MOVE 'E'                 TO gs_mcd_seltab-sign.
        MOVE 'EQ'                TO gs_mcd_seltab-option.
        MOVE ls_test-fieldvalue  TO gs_mcd_seltab-low.
        APPEND gs_mcd_seltab TO gt_mcd_seltab.
      ENDIF.
    ENDIF.
  ENDLOOP.
Der Rest istgleich wie schon vor 2 oder 3 postings vorher gezeigt.


Wäre super wenn da jemand nen Tip hätte.

THX.

Gruß
Markus

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1952
Views
Email-Inhalt
von Bugfix13 » 17.07.2014 10:35 • Verfasst in ABAP® für Anfänger
0
Antw.
1044
Views
Datenträger-Inhalt
von Gottschall » 19.12.2016 13:57 • Verfasst in ABAP® für Anfänger
3
Antw.
1530
Views
Inhalt analysieren
von cschmoel » 04.09.2012 10:11 • Verfasst in ABAP® für Anfänger
3
Antw.
7183
Views
Inhalt Tabelle DEVACCESS
von Matthias_L. » 24.10.2006 20:03 • Verfasst in Basis
0
Antw.
1361
Views
Verteiler-Liste Inhalt
von Mr. ABAP » 30.10.2006 13:38 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2800
Daten an Tabelle binden
vor 10 Stunden von Lukas Sanders 2 / 876
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

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.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2800
Daten an Tabelle binden
vor 10 Stunden von Lukas Sanders 2 / 876
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

Unbeantwortete Forenbeiträge

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