Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-At-S

Benutzeroberflächen in SAP®-Systemen.
25 Beiträge • Vorherige Seite 2 von 2 (current)
25 Beiträge Vorherige Seite 2 von 2 (current)

Re: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

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

ich zäume das Pferd jetzt von einer anderen Seite auf. Badi: N1_CORDER_USER_COMM, Methode BEFORE_UCOMM.

Bild

Im Importparameter lt_cordpos erhalte ich gefüllte Referenzen, u. a. auf CL_ISHMED_PREREG, Attribut G_N1VKG.

Bild

Aus diesem Attribut benötige ich nur die blau markierte VKGID (Auftragsposition), um mit ihr als Exportparameter I_VKGID in die folgende Methode CL_ISH_UTL_CORD=> CHANGE_STATE zu. gelangen und den Status zu setzen.

Die für dich sicher einfache Frage lautet, wie ich an diese Nummer 99000000 ohne große Umstände herankomme?

VD!
sapdepp

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


Re: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »

Code: Alles auswählen.

data:ls_n1vkg type n1vkg.
field-symbols: <lr_cordpos> type ref to cl_ish_cordpos.
* Mehrfachverarbeitung über alle Einträge
loop at lt_cordpos assigning <lr_cordpos>.
  <lr_cordpos>->get_data( importing e_n1vkg = ls_n1vkg ).
  ...
endloop.
* oder Einfachverarbeitung
read table  lt_cordpos assigning <lr_cordpos> index 1.
if sy-subrc eq 0.
  <lr_cordpos>->get_data( importing e_n1vkg = ls_n1vkg ).
  ...
endif.
Aber du kannst eigentlich direkt <lr_cordpos>-set_status aufrufen 8)
Ich würde die Loop-Variante empfehlen und wie gesagt zusätzlich noch den Typ der Cordpos abfragen um sicherzugehen, dass du wirklich auch den Status der richtigen Position änderst.

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: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

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

vielen Dank. LT_CORDPOS hat den Datentyp ISH_T_CORDPOS (referierter Typ: CL_ISHMED_PREREG), LR_CORDPOS hatte ich schon deklariert mit TYPE REF TO CL_ISHMED_PREREG bzw. hatte ich es so aus dem Bsp.coding des Badis übernommen. Dein Feldsymbol <LR_CORDPOS> hat den TYPE REF TO CL_ISHMED_CORDPOS.

LT_CORDPOS und <LR_CORDPOS> sind zueinander inkompatibel wegen des falschen Zeilentyps. Ich liebe ABAP OO. ;-)
Ich habe also statt

Code: Alles auswählen.

 field-symbols: <lr_cordpos> type ref to cl_ishmed_cordpos.

Code: Alles auswählen.

 field-symbols: <lr_cordpos> type ref to cl_ishmed_prereg.
gemacht. Das läuft sogar ohne Dump durch - welch Wunder -, und auch meine VKGID bekomme ich über LS_N1VKGID-VKGID.

Nun kommt ein Folgeproblem, was wieder das Lesen der Dynprowerte betrifft:

Code: Alles auswählen.

* Diagnosetext gefüllt?
  dyname = 'SAPLN1_SDY_MED_DATA'.
  dynumb = '0100'.
  DYFIELD = 'RN1_DYNP_MED_DATA-DITXT'.

  CALL FUNCTION 'GET_DYNP_VALUE'
    EXPORTING
      I_FIELD       = dyfield
      I_REPID       = dyname
      I_DYNNR       = dynumb
*     I_CONV_INPUT  = ' '
*     I_CONV_OUTPUT = ' '
    CHANGING
      O_VALUE       = DIA_VALUE.

* Wunschdatum gefüllt?
  dyname = 'ISH_WORKPLACE_START'.
  dynumb = '0100'.
  DYFIELD = 'RN1_DYNP_CSRV-DATE_APCN'.

  CALL FUNCTION 'GET_DYNP_VALUE'
    EXPORTING
      I_FIELD       = dyfield
      I_REPID       = dyname
      I_DYNNR       = dynumb
*     I_CONV_INPUT  = ' '
*     I_CONV_OUTPUT = ' '
    CHANGING
      O_VALUE       = DAT_VALUE.
Zum einen lese ich aus dem KLAT-Dynpro einen Diagnosetext, zum anderen möchte ich aus einem ALV Grid nur die Spalte (Zelle) mit dem Datum auslesen und prüfen, ob was Brauchbares drinsteht. Die Diagnose geht super, doch wie komme ich an die Datumsspalte bzw. das Feld DATE_APCN? Denn ein Dynprofeld ist das ja nicht im eigentlichen Sinne, sondern eine Tabellenstruktur (Bild), die ich durchloopen muss, fürchte ich.

Bild

Weiß ADT da Rat? ;-)

VD!

Re: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
LASS DAS MIT DEN DYNPRO LESEN WEG! BITTE!
Jedes Feld eines KLAT kann auf die eine oder andere Weise über die beteiligten Objekte gelesen werden. Du musst halt nur schauen wie du rankommst.
Ist das Feld in einem Positionsbaustein -> GET_T_CORDPOS, dann GET_COMPONENTS und dann GET_DATA
Das gleiche funktioniert auch mit Kopfbausteinen. (GET_T_CORDHEAD oder so ähnlich)
Wichtig ist, dass man mit dem Debugger mal reinschaut welchen Typ die zurückgegebenen Objekte haben und man diese entsprechend mit einem cast ( ?= ) umwandelt.

Ich geb zu, das ganze Framework ist anfangs etwas gewöhnungsbedürftig aber irgendwie kommt man an alles ran.
Man muss sich halt ein wenig reinfuchsen aber dann gehts.

P.S.: Der Casting-Operator ?= ist in KLATs dein bester Freund!
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: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Ich habe nun einige Methoden von CL_ISH_CORDER ausprobiert:

GET_T_CORDPOS
GET_COMPHEAD_MED_DATA
GET_T_COMPHEAD
GET_COMPONENT
GET_DATA

Darüber hinaus noch andere Referenzen wie CL_ISH_COMPDEF, IF_ISH_COMPONENT und deren Methoden.

Ich komme zwar an die Positionsbausteine und deren Felder ran, nicht aber zum Inhalt der Felder. Verzweifel. Das Einzige, was zumindest bei Dynprofeldern klappt, ist halt GET_DYNP_VALUES. Die Feldinhalte sind zum PBO und PAI des KLATs noch nicht in der DB, ich muss also wie gesagt nur aktuell eingegebene Feldinhalte abgrasen ohne SELECT FROM DB.
Ich träume davon, eines Morgens aufzuwachen und mir es wie Schuppen von den Augen fällt und ich weiß, was ich casten kann, was nicht, welche Klassen ich wie einsetzen muss, welche völlig für den A... sind usw. ;-)

Re: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
So bin ich gerade vorgeganen:
1) Suche nach Verwendung von RN1_DYNP_CSRV in Klassen
2) Klasse CL_ISHMED_SCR_CSRV gefunden (Screen-Klasse der Leistungen im KLAT)
3) Verwendungsnachweis findet die Klasse CL_ISHMED_COMP_SERVICES (Componenten-Klasse der Leistungen im KLAT)

Und jetzt von der anderen Seite:
1) Alle Positionen ermitteln: CL_ISH_CORDER->GET_T_CORDPOS
2) LOOP AT über das Ergebnis
3) Alle Komponenten einer Position ermitteln: CL_ISHMED_PREREG->GET_T_COMPPOS
4) LOOP AT über das Ergebnis
5) Wenn sich einer der Einträge in CL_ISHMED_COMP_SERVICES casten lässt, hast du deinen Baustein gefunden.

Code: Alles auswählen.

data: lr_service type ref to CL_ISHMED_COMP_SERVICES.
try.
  lr_service ?= lr_component.
* Alles in Ordnung
  catch cx_root.
* Nicht gefunden
endtry.
btw. Hab ich grad eben gefunden: CL_ISHMED_PREREG=>GET_SERVICES_FOR_PREREG
Vielleicht reicht das ja schon ;)

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: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

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

wir kommen der Sache näher, obwohl es mit dem Casting nichts wird. Hätte mich auch gewundert, denn ich habe noch nie erfolgreich irgendwas gecastet in ABAP OO. Lotterie.

Folgendes Coding habe ich eingemeißelt:

Code: Alles auswählen.

  
DATA: lr_cordpos       TYPE REF TO cl_ishmed_prereg,
       lt_cordpos       TYPE ish_t_cordpos,
       lt_services      TYPE ish_objectlist,
       ls_nlei          TYPE nlei,
       lr_service      TYPE REF TO cl_ishmed_service.

Field-symbols: <lr_cordpos> type ref to cl_ishmed_prereg,
               <ls_services> LIKE LINE OF lt_services.

loop at lt_cordpos assigning <lr_cordpos>.

    <lr_cordpos>->get_services_for_prereg( EXPORTING i_prereg  = <lr_cordpos>
                                           IMPORTING et_services = lt_services ).

endloop.
Hier erhalte ich in der LT_SERVICES zu meiner Freude folgende Beziehung:

Bild

Im Attribut G_NLEI (Typ NLEI) erhalte ich in LEIST meine eingebene Leistung ADM_01:

Bild
Bild

Leider erhalte ich hier noch nicht das eingegebene Wunschdatum 31.07.2014. Schade.

Ich tue mich wieder schwer, mit einem Loop über LT_SERVICES an G_NLEI-LEIST heranzukommen. Kannst du mir hilfreich in die Seite treten? Muss ich hier vor dem Loop über die LT_SERVICES noch casten LR_SERVICE ?= LR_CORDPOS?

VG
sapdepp

Re: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »

Code: Alles auswählen.

loop at lt_services assigning <ls_services>.
  try.
    lr_service ?= <ls_services>-object.
    lr_service->get_data( importing e_nlei = ls_nlei ).
* Oder irgendeine andere von den GET_... Methoden
  catch cx_root.
  endtry.
endloop.
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: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Besten Dank für die Hilfe. Sowohl das Lesen der Leistung als auch das Lesen des Wunschdatums klappt (Klasse CL_ISH_APP_CONSTRAINT). :D
Wie verhält es sich aber mit eigenen Positionsbausteinen (Z-Namensraum), die in einem Custom Control ein Langtextfeld eingebaut haben, dessen Inhalt gelesen werden soll? Ich sitze hier schon wieder eine Weile dran herum, finde aber im Debugging keine Referenz auf meinen Posbaustein mit dem Langtextfeld und dessen Inhalt.

Bild

Hast du so was auch schon mal ausprogrammiert, also die Prüfung, ob ein Langtextfeld einen Text enthält, der noch nicht in der DB steht, sondern nur erst einmal eingegeben wurde?

LG
sapdepp

Re: Inhalte von Dynprofeldern (Dropdown) ohne PAI oder LOOP-

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Tja, da muss dein Komponentenbaustein eine Methode dafür anbieten den Text auszulesen.
Zu deinem Komponentenbaustein kommst du von CORDER aus auf diese Weise
http://www.abapforum.com/forum/viewtopi ... 024#p71984

Die Dirty-Lösung wäre über den Komponentenbaustein auf den Screen-Baustein zuzugreifen und über diesen auf das instanziert Control.
Wobei dann sowohl der Screenbaustein als auch das Control als Public-Attribute zur Verfügung stehen müssten.
Ich würde eher die Variante mit eigener Methode zum Auslesen/Verändern vorschlagen.
Da du ja eh in einem Z-Baustein unterwegs bist, sollte eine Erweiterung kein Problem sein.

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

1
Antw.
721
Views
2
Antw.
3205
Views
Vorzeichen in Dynprofeldern. (sign lost)
von asano » 09.06.2004 09:41 • Verfasst in Dialogprogrammierung
1
Antw.
1533
Views
SAP Inhalte ins web?
von Chrisu » 23.05.2005 11:55 • Verfasst in Web Application Server
5
Antw.
2980
Views
SAP Web Inhalte und Internet Explorer 7
von Kaiwalker » 22.11.2006 08:20 • Verfasst in SAP - Allgemeines
4
Antw.
2865
Views
TableView-Inhalte auslesen
von Kona » 04.05.2006 09:52 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140