Na gut.black_adept hat geschrieben: Manipulationen!!!! Das hört sich sehr interessant an.
Schreib doch mal was du da so getan hast
Nahe dran:( mir kommt da nur spontan der Befehl "EXPORT DYNPRO" in den Sinn )
Code: Alles auswählen.
REPORT.
PARAMETERS rb1 RADIOBUTTON GROUP r .
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS rb3 RADIOBUTTON GROUP r DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
PARAMETERS rb2 RADIOBUTTON GROUP r.
SELECT-OPTIONS s_datum FOR syst-datum.
DATA: BEGIN OF id, prog(40), dnum(4), END OF id,
h TYPE d020s, f TYPE TABLE OF d021s WITH HEADER LINE,
e TYPE TABLE OF d022s, m TYPE TABLE OF d023s,
a, b, c, x TYPE x VALUE '03'.
DEFINE _w. write: / 'RB&1 =', rb&1 color &1. END-OF-DEFINITION.
LOAD-OF-PROGRAM.
id-prog = sy-repid. id-dnum = '1000'.
IMPORT DYNPRO h f e m ID id.
f-line = '02'.
MODIFY f TRANSPORTING LINE where LINE eq x.
GENERATE DYNPRO h f e m ID id MESSAGE a LINE b WORD c.
FREE: f, e, m.
CALL FUNCTION 'DB_COMMIT'.
AT SELECTION-SCREEN.
CASE 'X'.
WHEN rb3.
IF sy-datar EQ 'X'. " geht schief, wenn nur S_DATUM geändert wurde
CLEAR rb3.
rb2 = 'X'.
ENDIF.
ENDCASE.
START-OF-SELECTION.
* SET BLANK LINES ON.
_w:1,2,3.
Was mich hier wundert, sind die 2 Radiobuttons RB1 und RB2.black_adept hat geschrieben:bei mir gibt es folgenden Screen
und auf dem sind DREI Radiobuttons zu sehen.
Mag sein - aber die Screenshots aus dem IDES und dem "normalen" 4.6er System wurden mit derselben GUI (6.40, Patchlvl 1 )gemacht und ein Kollege einen Stuhl weiter hat denselben Effekt mit einer 6.20, Patch 32 GuiAnonymous hat geschrieben:Die Darstellung liegt aber eher an unterschiedlichen GUI-Versionen
Code: Alles auswählen.
LOAD-OF-PROGRAM.
id-prog = sy-repid. id-dnum = '1000'.
IMPORT DYNPRO h f e m ID id.
f-line = '02'.
MODIFY f TRANSPORTING LINE where LINE eq x.
GENERATE DYNPRO h f e m ID id MESSAGE a LINE b WORD c.
FREE: f, e, m.
CALL FUNCTION 'DB_COMMIT'.
Code: Alles auswählen.
REPORT.
DATA: rb1_d TYPE as4flag,
rb2_d TYPE as4flag,
rb3_d TYPE as4flag.
TABLES: sscrfields.
SELECTION-SCREEN BEGIN OF BLOCK bl0 WITH FRAME.
SELECTION-SCREEN BEGIN OF TABBED BLOCK bl1 FOR 3 LINES.
SELECTION-SCREEN END OF BLOCK bl1.
SELECT-OPTIONS: s_datum FOR sy-datum.
SELECTION-SCREEN END OF BLOCK bl0.
PARAMETERS: rb1 TYPE as4flag NO-DISPLAY,
rb2 TYPE as4flag NO-DISPLAY,
rb3 TYPE as4flag NO-DISPLAY.
INITIALIZATION.
bl1-prog = sy-repid.
bl1-dynnr = '8000'.
rb3 = 'X'.
AT SELECTION-SCREEN OUTPUT.
rb1_d = rb1.
rb2_d = rb2.
rb3_d = rb3.
AT SELECTION-SCREEN.
PERFORM get_buttons.
* call screen 8000.
* call screen 8001.
END-OF-SELECTION.
WRITE:/ 'RB1=',rb1,
/ 'RB2=',rb2,
/ 'RB3=',rb3.
*&---------------------------------------------------------------------*
*& Form get_buttons
*&---------------------------------------------------------------------*
FORM get_buttons.
DATA: repid TYPE syrepid,
dynnr TYPE sydynnr,
dynpfields TYPE STANDARD TABLE OF dynpread,
wa_df LIKE LINE OF dynpfields,
zeilen TYPE i.
dynnr = '8001'.
repid = sy-repid.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = repid
dynumb = dynnr
request = 'A'
TABLES
dynpfields = dynpfields
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.
CASE 'X'.
WHEN rb1. DELETE dynpfields WHERE fieldname = 'RB1_D'.
WHEN rb2. DELETE dynpfields WHERE fieldname = 'RB2_D'.
WHEN rb3. DELETE dynpfields WHERE fieldname = 'RB3_D'.
ENDCASE.
DELETE dynpfields WHERE fieldvalue = space
AND ( fieldname = 'RB1_D' OR
fieldname = 'RB2_D' OR
fieldname = 'RB3_D' ).
CHECK NOT dynpfields IS INITIAL.
rb1 = rb2 = rb3 = space.
LOOP AT dynpfields INTO wa_df WHERE fieldvalue = 'X'.
CASE wa_df-fieldname.
WHEN 'RB1_D'.rb1 = 'X'.
WHEN 'RB2_D'.rb2 = 'X'.
WHEN 'RB3_D'.rb3 = 'X'.
ENDCASE.
ENDLOOP.
ENDFORM. " get_buttons
Code: Alles auswählen.
PROCESS BEFORE OUTPUT.
CALL SUBSCREEN sub2 INCLUDING sy-repid '8001'.
* MODULE STATUS_8000.
*
PROCESS AFTER INPUT.
CALL SUBSCREEN sub2.
* MODULE USER_COMMAND_8000.
Code: Alles auswählen.
keine
Also wenn man hier überhaupt von "elegant" reden kann (ich würde erst mal versuchen, dem Anwender eine solche Anforderung auszureden), dann hat Deine Methode doch einige Vorteile:black_adept hat geschrieben:Methode A)
Diese Methode ( wohl die elegantere ) versucht grob gesagt den 3. Radiobutton "unter" den 2. Radiobutton zu legen. Dies ist mit "normalen" Mitteln nicht möglich - aber die nur für den internen Gebrauch bestimmten Befehle IMPORT DYNPRO und GENERATE DYNPRO lassen dies zu.
Code: Alles auswählen.
IMPORT DYNPRO h f e m ID id.
Code: Alles auswählen.
IF sy-subrc NE 0.
SUBMIT rsdbgena
WITH repname EQ id-prog
EXPORTING LIST TO MEMORY
AND RETURN.
IMPORT DYNPRO h f e m ID id.
ENDIF.
Code: Alles auswählen.
PARAMETERS rb1 RADIOBUTTON GROUP r.
PARAMETERS rb2 RADIOBUTTON GROUP r.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 38.
PARAMETERS rb3 RADIOBUTTON GROUP r DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
Code: Alles auswählen.
LOOP AT f WHERE LINE EQ 3.
add 1 to f-line.
MODIFY f TRANSPORTING line.
ENDLOOP.