Aktualisierung des COMMENT's

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

Aktualisierung des COMMENT's

Beitrag von cschmoel (ForumUser / 84 / 26 / 0 ) »
Hallo :) so jetzt habe ich mal ein anspruchsvolleres Problem :P ist schwierig zu erklären, aber ich geb mein Bestes ^^

Und zwar folgendes,

ich habe im vorgefertigten Dynpro (1000) 2 Eingabefelder untereinander definiert, zu jedem Eingabefeld habe ich rechts daneben noch 1 Kommentarfeld definiert.
Meine Werte pro Eingabefeld hole ich mit dem Funktionsbaustein 'F4IF_INT_TABLE_VALUE_REQUEST', nachdem ich meinen Wert mit einem Maus Doppelklick ausgewählt habe,
verschwindet die Suchhilfe, schreibt die ausgewählte ID in das jeweilige Eingabefeld UND füllt auch wie gewollt das Kommentarfeld :)

(kleine Veranschaulichkeit)

Code: Alles auswählen.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_bps_to.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'PARTNER'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
      dynprofield     = 'P_BPS_TO'
      value_org       = 'S'
    TABLES
      value_tab       = lt_bpid
      return_tab      = lt_return_to
    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 lt_return_to INTO ls_return_to INDEX 1.
  lv_partner_to = ls_return_to-fieldval.

  IF lv_partner_to IS NOT INITIAL.
    CLEAR t_bps_to.
    CLEAR ls_name.
    SELECT SINGLE but000~name_first but000~name_last INTO ls_name
          FROM but000
          INNER JOIN but100 ON but000~partner = but100~partner
          WHERE but100~partner = lv_partner_to.

    CONCATENATE ls_name-name_first ` ` ls_name-name_last INTO t_bps_to.
    SUPPRESS DIALOG. "Fire PAI

  ENDIF. 
Bis hier hin funktioniert alles.

Dank SUPPRESS DIALOG wird das Kommentarfeld gefüllt ohne das ich erst ENTER drücke, bzw. feuert direkt das PAI ab :)


So und jetzt komme ich zu meinen Problem....

Führe ich das Programm aus, erscheint mein Selektionsbildschirm :) klicke ich auf zurück (grüner Pfeil), komme ich wieder in mein Dynpro 1000.
Die Eingabefelder enthalten zwar noch meine vorher ausgewählte ID, aber erkennen sie anscheinend nicht mehr ... auch das Kommentarfeld ist wieder leer obwohl es noch mit dem
Vorausgewählten Vor- und Nachname befüllt sein sollte und erst, wenn ich einen neuen auswähle, das Kommentarfeld auch neu befüllt werden soll :/

Ich hoffe die Erklärungen reicht bis hier hin mal und fände es super wenn mir da jemand helden könnte :)

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


Re: Aktualisierung des COMMENT's

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
cschmoel hat geschrieben:Ich hoffe die Erklärungen reicht bis hier hin mal und fände es super wenn mir da jemand helden könnte :)

Die Partnerdaten sind noch gefüllt, da die Datenelemente ein SET/GET-Parameter haben.

Lies mal die Doku zum Programmereignis INITIALIZATION durch. Dies wäre der geeignete Zeitpunkt, um bei Rückkehr aus der Verarbeitung die Kommentare zu den Partner zu lesen.

Code: Alles auswählen.

INITIALIZATION.

IF P_BPS_TO IS NOT INITIAL.
    CLEAR t_bps_to.
    CLEAR ls_name.
    SELECT SINGLE but000~name_first but000~name_last INTO ls_name
          FROM but000
          INNER JOIN but100 ON but000~partner = but100~partner
          WHERE but100~partner = lv_partner_to.

    CONCATENATE ls_name-name_first ` ` ls_name-name_last INTO t_bps_to.
ENDIF.
      
Gruß Hendrik

Re: Aktualisierung des COMMENT's

Beitrag von cschmoel (ForumUser / 84 / 26 / 0 ) »
Joa das habe ich auch schon probiert, aber funktioniert jedoch leider nicht :(

Re: Aktualisierung des COMMENT's

Beitrag von cschmoel (ForumUser / 84 / 26 / 0 ) »
Seltsammerweise springt er auch rein laut Debugger und arbeitet Zeile für Zeile ab .... aber er zeigt danach trotzdem nicht an :(

Re: Aktualisierung des COMMENT's

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Dann löschst du das Feld vielleicht wieder irgendwo?
Oder macht du explizit noch mal einen SET SCREEN, LEAVE TO TRANSACTION, SUBMIT...?
Bei mir funktioniert's:

Code: Alles auswählen.

DATA lt_return TYPE STANDARD TABLE OF ddshretval.
DATA ls_return TYPE ddshretval.
DATA lt_t001w  TYPE STANDARD TABLE OF t001w.
DATA ls_t001w  TYPE t001w.

PARAMETERS p_werks TYPE werks_d.
PARAMETERS p_wname TYPE name1 MODIF ID dis.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF screen-group1 = 'DIS'.
      screen-input = '0'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

INITIALIZATION.
  SELECT * FROM t001w INTO TABLE lt_t001w UP TO 10 ROWS.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'WERKS'
      dynpprog        = sy-cprog
      dynpnr          = sy-dynnr
      dynprofield     = 'P_WERKS'
      value_org       = 'S'
    TABLES
      value_tab       = lt_t001w
      return_tab      = lt_return
    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.
  ELSE.
    READ TABLE lt_return INTO ls_return INDEX 1.
    READ TABLE lt_t001w INTO ls_t001w INDEX ls_return-recordpos.
    p_wname = ls_t001w-name1.
    CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
      EXPORTING
        functioncode = '=00'.
  ENDIF.


START-OF-SELECTION.

  WRITE: ls_t001w-name1.

Re: Aktualisierung des COMMENT's

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
@Enno:

Code: Alles auswählen.

    READ TABLE lt_t001w INTO ls_t001w INDEX ls_return-recordpos.
muss ersetzt werden durch

Code: Alles auswählen.

 READ TABLE lt_t001w INTO ls_t001w with key werks = ls_return-fieldval.
@Chris:
Du gehst das Ganze falsch an. Auch wenn es so halbwegs funktioniert, so dann doch nur, weil es sich hier um ein triviales Beispiel handelt.

1.) Bisher wird der Kommentar nur gezogen, wenn du den Wert über die F4-Hilfe selektierst. Wenn jemand manuell einen Wert eingibt, so wird das Kommentarfeld nicht gefüllt - auch nicht, wenn ENTER gedrückt wird.
2.) Beim Start des Programms werden eventuell vorhande SET/GET-Parameter nicht berücksichtigt. ( Das ist übrigens der komplizierteste Fall ).
3.) SUPPRESS DIALOG ( oder auch SAPGUI_SET_FUNCTIONCODE ) ist keine allgemeine Lösung. Sie funktionieren hier zwar - aber auch nur, weil du kein (ungefülltes) Pflichtfeld auf dem Dynpro hast.

Lösungsansätze:
ad 1.) Schau dir mal die Zeitpunkte an, die bei einem Selektionsbildschirm durchlaufen werden und überlege dir, welcher von diesen wohl am Besten passt.
ad 2.) Das solltest du erst angehen, wenn 1.) und 3.) vernünftig laufen
ad 3.) Im Tricktresor wird dir gezeigt, wie es richtig geht. http://www.tricktresor.de/content/index ... 25&aID=176
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Aktualisierung des COMMENT's

Beitrag von cschmoel (ForumUser / 84 / 26 / 0 ) »
Da hast du absolut Recht!!!!

Ok dann versuch ich das mal so ;)

Seite 1 von 1

Vergleichbare Themen

4
Antw.
3649
Views
Selection-screen comment
von KleinerEisbaer » 08.08.2008 12:18 • Verfasst in Dialogprogrammierung
5
Antw.
3161
Views
Ausführungsfehler bei selection-screen comment
von K-Traxx » 14.07.2005 09:32 • Verfasst in ABAP® für Anfänger
4
Antw.
2772
Views
Selection-Screen Comment Felder ausblenden
von brunsdo » 19.02.2016 16:16 • Verfasst in ABAP® für Anfänger
8
Antw.
8121
Views
Aktualisierung von Daten in TreeControl
von Paul » 09.07.2004 13:28 • Verfasst in Dialogprogrammierung
2
Antw.
1693
Views
ALV-Liste - periodische Aktualisierung möglich?
von TGL » 20.06.2009 00:56 • Verfasst in ABAP® Core

Über diesen Beitrag


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.