Table Control im PMD abfragen

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

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Table Control im PMD abfragen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Ich muss mich wieder ans geschätzte Forum wenden, weil ich hängenbleibe bei folgendem Problem:

Stichwort PMD, DokElement "KONBLEIS".
Bild

Bild

Bild

Die im 2. Bild gezeigte Untersuchungstabelle enthält 5 Zeilen, die bei Klick auf den Checkbutton auf Eingabe geprüft werden sollen in Datum, von, bis. Die Daten der Tabelle in Klarschrift finde ich übers Debugging per Vorwärtsnavigation letztlich wie folgt pub__service->api__...
Bild

Bild

Bild

Bild

Bild

Die Methoden von pub__service (CL_ISHMED_PMD_SERVICES) liefern mir leider keine direkte Zugriffsmöglichkeit auf die PMD-Untersuchungstabelle, auch api__get_value mit dem Exportparameter i_alias = 'KONBLEIS' leider nicht bzw. nicht wie erhofft. Ich habe auch schon andere Dinge erfolglos probiert. Wie komme ich an die gewünschten Einträge heran? Sollten Grafiken nicht komplett sichtbar sein, bitte mit der RMT auf Grafik und dann "Grafik anzeigen".

Vielen Dank für eure Hilfe.

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


Re: Table Control im PMD abfragen

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
Mit API__GET_MAX_OCCURRENCES die Anzahl der Zeilen der Tabelle ermitteln und mit API__GET_VALUE Zeile für Zeile und Spalte für Spalte auslesen.
Mit den generierten Druckstrukturen in GenV2 (EHP5?) kann man alternativ die ganze Tabelle oder auch nur eine Zeile auslesen.
Dazu muss man wie gesagt die Strukturen zuerst generieren und kann dann mit zusätzlichen Zeichen im ALIAS-Parameter diese Daten ansprechen.

Wenn du willst kann ich dir morgen die Werte raussuchen bzw. wo die Liste im Coding zu finden ist. Natürlich nur sofern ihr die richtige Generatorversion mit Druckstrukturen habt.

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

Re: Table Control im PMD abfragen

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
Okay, die Methode heißt API__MAX_OCCURRENCE und nicht API__GET_MAX_OCCURRENCES :oops:

Welche möglichen Sonderabfragen es gibt ist in CL_ISHMED_PMD=>API__GET_VALUE (wird von CL_ISHMED_PMD_SERVICES aufgerufen) aufgeführt:
:CONTENT = Abfragen aller Inhalte des Dokuments in der Haupt-Druckstruktur
:ARCHIVE = Abfragen aller Inhalte des Dokuments in der Haupt-Archivstruktur
:ADDITIONAL = Abfragen aller Inhalte aus der Zusatzstruktur
=<Alias_der_multiplen_Struktur> = Abfragen einer Zeile (mit I_OCC) oder der gesamten Tabelle (ohne I_OCC)

Einfach beim API__GET_VALUE beim I_ALIAS mitangeben.
Also in deinem Fall:

Code: Alles auswählen.

<pub_service>->api__get_value( exporting i_alias = '=KONBLEIT' importing ea_value = lt_table ).
Wobei lt_table vom Typ des generierten Tabellentyps sein muss.

Natürlich gilt hier, dass ihr das richtige Release dafür braucht.

Ansonsten bleibt nur der Weg über API__MAX_OCCURRENCE und API__GET_VALUE um jede Zelle des Tabelcontrols damit einzeln abzufragen.

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

Re: Table Control im PMD abfragen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Hallo, ADT,

vielen Dank für die Antwort. Wir haben die GenV2 (EHP 6.06). ;-)

Das andere probiere ich in Kürze aus und melde mich ...

Bis dahin viele Grüße.

Re: Table Control im PMD abfragen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
So, mein erster Test ist durch.

Folgendes:

Code: Alles auswählen.

  data:
        lt_konbleit type TABLE OF ZKONBEF_00000001,
*        ls_konbleit type ZKONBEF_00000001,
*        lr_services TYPE REF TO cl_ishmed_pmd_services,
*        lt_elements type n2pmdelemdefs,
*        ls_elements TYPE n2pmdelemdef,
        l_alias     TYPE n2_alias1,
*        ls_ndoc      TYPE ndoc,
*        ls_RN2DOC_KEY TYPE RN2DOC_KEY,
*        lt_ndoc     TYPE ishmed_t_ndoc,
*        l_typename  TYPE string,
        l_occ       TYPE sytabix.

  l_alias = 'KONBLEIT'.

  TRY.
      CALL METHOD pub__service->API__MAX_OCCURRENCE
        EXPORTING
          I_ALIAS = l_alias
        RECEIVING
          R_OCC   = l_occ.
    CATCH CX_DYNAMIC_CHECK .
  ENDTRY.

  TRY.
      CALL METHOD pub__service->API__GET_VALUE
        EXPORTING
          I_ALIAS   = l_alias
*          I_OCC     = l_occ
        IMPORTING
          E_VALUE   = lt_konbleit
*         E_DECODED =
        .
    CATCH CX_DYNAMIC_CHECK .
  ENDTRY.
Mir wird bei API__GET_VALUE allerdings eine Ausnahme CX_ISHMED_PMD angezeigt, die Import-Tabelle lt_konbleit bleibt leer. Die zugrunde liegende generierte Tabelle des PMDs lautet ZKONBEF_00000001.

Bild

Bild

Habe ich noch was vergessen, bzw. ist die Tabelle lt_konbleit falsch definiert?

VG
sapdepp

Re: Table Control im PMD abfragen

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
Schau mal deinen ersten Screenshot an:
Da steht "Typen für Druckstruktur" und die sind leer. Das sagt mir, dass du die "richtigen" Typen noch nicht generiert hast.
Zu finden im Menü unter Werkzeuge->Generieren->Datenstruktur
Die Typen werden dann im DDIC unter $TMP abgelegt. d.H. du musst das vor dem Transport noch umhängen (gleich wie Dokumenttabellen)
Auch wenn in Zukunft neue Felder zum Dokument hinzukommen darfst du nicht vergessen die Druckstrukturen ebenfalls neu zu gnerieren und transportieren.

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

Re: Table Control im PMD abfragen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Okay, das wusste ich noch nicht. Muss mich mal für einen Kurs anmelden. Den Eintrag zum Generieren der Datenstruktur gibt es leider nicht, du meinst sicher die Druckstruktur. Das habe ich getan.
Bild

Das Coding lautet nun unter Verwendung des neuen Tabellentyps wie folgt:

Code: Alles auswählen.

  data:
        lt_konbleit type TABLE OF ZKONBEF_0000000000000000000T, "ZKONBEF_00000001,
*        ls_konbleit type ZKONBEF_0000000000000000000L, "ZKONBEF_00000001,
*        lr_services TYPE REF TO cl_ishmed_pmd_services,
*        lt_elements type n2pmdelemdefs,
*        ls_elements TYPE n2pmdelemdef,
        l_alias     TYPE n2_alias1,
*        ls_ndoc      TYPE ndoc,
*        ls_RN2DOC_KEY TYPE RN2DOC_KEY,
*        lt_ndoc     TYPE ishmed_t_ndoc,
*        l_typename  TYPE string,
        l_occ       TYPE sytabix.

  l_alias = 'KONBLEIT'.

  TRY.
      CALL METHOD pub__service->API__MAX_OCCURRENCE
        EXPORTING
          I_ALIAS = l_alias
        RECEIVING
          R_OCC   = l_occ.
    CATCH CX_DYNAMIC_CHECK .
  ENDTRY.

  TRY.
      CALL METHOD pub__service->API__GET_VALUE
        EXPORTING
          I_ALIAS   = l_alias
*          I_OCC     = l_occ
        IMPORTING
          E_VALUE   = lt_konbleit
*         E_DECODED =
        .
    CATCH CX_DYNAMIC_CHECK .
  ENDTRY.
Nach wie vor schmiert mir API__GET_VALUE mit CX-Error ab. Auch wenn ich statt TYPE TABLE OF nur TYPE für die Tabellenstruktur verwende, bekomme ich den CX-Error.
Ich befinde mich noch im E-System und habe die generierten DDIC-Strukturen noch nicht von $TMP ins Kundenpaket umgehängt. Das nur als Info.

VG
sapdepp

Re: Table Control im PMD abfragen

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
ZKONBEF_0000000000000000000T ist bereits ein Tabellentyp, daher:

Code: Alles auswählen.

data:
  lt_konbleit type ZKONBEF_0000000000000000000T.
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: Table Control im PMD abfragen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Wie schon vorhin geschrieben:

"Auch wenn ich statt TYPE TABLE OF nur TYPE für die Tabellenstruktur verwende, bekomme ich den CX-Error."

Schade. Der Compiler will nicht so recht. ;-)

Re: Table Control im PMD abfragen

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
Upsi... Hab ich übersehen:

Code: Alles auswählen.

l_alias = 'KONBLEIT'. "<-- Für API__MAX_OCCURRENCE
l_alias = '=KONBLEIT'. "<-- Für API__GET_VALUE
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

Re: Table Control im PMD abfragen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Hallo, ADT,

kein Problem, ich übersehe viel mehr. ;-)

Der CX-Error ist mit l_alias = '=KONBLEIT' nun Geschichte, juhu, dennoch hat die Import-Tabelle lt_konbleit null Einträge, obwohl im PMD Daten drin stehen. Da fehlt leider noch was. Und warum bei dem einen API ein "=" stehen muss und bei dem anderen nicht, muss ich jetzt nicht verstehen, oder? ;-)

LG
sapdepp

Re: Table Control im PMD abfragen

Beitrag von a-dead-trousers (Top Expert / 4267 / 213 / 1140 ) »
sapdepp hat geschrieben:Und warum bei dem einen API ein "=" stehen muss und bei dem anderen nicht, muss ich jetzt nicht verstehen, oder? ;-)
Ist quasi der "magische" Schalter um die früheren eingeschränkten Zugriffe via API__GET_VALUE und jedes einzelne Feld extra abzufragen von der neuen effizienteren Methode zu unterscheiden.
sapdepp hat geschrieben:Der CX-Error ist mit l_alias = '=KONBLEIT' nun Geschichte, juhu, dennoch hat die Import-Tabelle lt_konbleit null Einträge, obwohl im PMD Daten drin stehen. Da fehlt leider noch was.
Hmmm... Nur so ein wild-guess: Probier mal das Programm neu zu generieren. Oft hilft das bei den PMDs wenn was nicht geht. Möglich, dass zum Generierungszeitpunkt die Druckstrukturen vorhanden sein müssen, damit die interne Logik diese auch verarbeiten kann. Ansonsten kann ich dir nur raten den API__GET_VALUE Aufruf zu debuggen.
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: Table Control im PMD abfragen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Juhu, du bist mein Held. Nach dem Generieren klappt das Ganze.

Danke dir!!!

Seite 1 von 1

Vergleichbare Themen

16
Antw.
7824
Views
Table Control in Custom Control?
von ralf.wenzel » 29.11.2013 21:21 • Verfasst in ABAP Objects®
6
Antw.
2955
Views
Table Control
von khb » 16.02.2016 10:27 • Verfasst in ABAP® für Anfänger
3
Antw.
2258
Views
Table Control in OO
von chris690 » 27.02.2005 10:16 • Verfasst in ABAP Objects®
2
Antw.
2253
Views
Table Control
von scharlie » 01.02.2008 18:20 • Verfasst in ABAP Objects®
1
Antw.
1879
Views
Table Control
von amjahid » 22.11.2007 13:57 • 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.