Problem gelöst, Fehler war, dass ich den DYNP_VALUES_UPDATE zweimal aufgerufen habe, statt gemeinsam für P_ATTR01 und S_VALU01
ich bin gerade am verzweifeln, vielleicht hat jemand eine Idee:
- Auf einem Selektionsbild habe ich einen Parameter P_ATTR01 und eine Select-Option S_VALU01.
- P_ATTR01 kann nur über eine Werthilfe ausgewählt werden.
- Wenn sich P_ATTR01 ändert, soll S_VALU01 initialisiert werden.
Hier mein Coding (Beispiel):
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- *&---------------------------------------------------------------------*
- *& Report Z_TEST_SELOPT
- *&
- *&---------------------------------------------------------------------*
- *&
- *&
- *&---------------------------------------------------------------------*
- REPORT z_test_selopt.
- BEGIN OF ty_selection_s,
- atnam TYPE atnam,
- atwrt TYPE atwrt,
- END OF ty_selection_s,
- BEGIN OF ty_f4_attr_s,
- atinn TYPE atinn,
- atnam TYPE atnam,
- atbez TYPE atbez,
- END OF ty_f4_attr_s,
- tty_f4_attr TYPE STANDARD TABLE OF ty_f4_attr_s,
- ty_range_atwrt TYPE RANGE OF atwrt.
- DATA:
- gv_prog TYPE sy-cprog,
- gv_dynnr TYPE sy-dynnr,
- gs_selection TYPE ty_selection_s.
- SELECT-OPTIONS: s_valu01 FOR gs_selection-atwrt MODIF ID a01.
- gv_prog = sy-cprog.
- gv_dynnr = sy-dynnr.
- gv_prog
- gv_dynnr.
- MODIFY SCREEN.
- *&---------------------------------------------------------------------*
- *& Form f4_attr
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->P_INDEX text
- * -->P_PROG text
- * -->P_DYNNR text
- *----------------------------------------------------------------------*
- FORM f4_attr USING p_index
- p_prog
- p_dynnr.
- DATA:
- lv_num TYPE num02,
- lv_attr TYPE dynfnam,
- lv_comm TYPE dynfnam,
- lv_old_value TYPE dynfieldvalue,
- lt_values TYPE STANDARD TABLE OF M_MERKB,
- ls_value LIKE LINE OF lt_values,
- lt_return TYPE rsdm_f4_return_values,
- ls_return LIKE LINE OF lt_return,
- lt_help_values TYPE wrf_fields,
- ls_help_value TYPE help_value,
- lt_mapping TYPE icl_dselc_t,
- ls_mapping LIKE LINE OF lt_mapping,
- lt_dynpfields TYPE dynpread_tabtype,
- ls_dynpfield LIKE LINE OF lt_dynpfields.
- lv_num = p_index.
- ls_dynpfield-fieldname = lv_attr.
- CALL FUNCTION 'DYNP_VALUES_READ'
- EXPORTING
- dyname = p_prog
- dynumb = p_dynnr
- dynpfields = lt_dynpfields.
- READ TABLE lt_dynpfields INTO ls_dynpfield INDEX 1.
- lv_old_value = ls_dynpfield-fieldvalue.
- ls_value-atnam = 'ATNAM01'.
- ls_value-atbez = 'ATBEZ01'.
- ls_value-atnam = 'ATNAM02'.
- ls_value-atbez = 'ATBEZ02'.
- ls_value-atnam = 'ATNAM03'.
- ls_value-atbez = 'ATBEZ03'.
- ls_mapping-fldname = 'ATBEZ'.
- ls_mapping-dyfldname = lv_comm.
- CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
- EXPORTING
- ddic_structure = 'M_MERKB'
- retfield = 'ATNAM'
- dynpprog = p_prog
- dynpnr = p_dynnr
- dynprofield = lv_attr
- value_org = 'S'
- display = 'F'
- * CALLBACK_PROGRAM = ' '
- * CALLBACK_FORM = ' '
- * MARK_TAB = MARK_TAB
- * IMPORTING
- * USER_RESET = USER_RESET
- value_tab = lt_values
- * field_tab = lt_help_values
- return_tab = lt_return
- dynpfld_mapping = lt_mapping.
- ls_dynpfield,
- lt_dynpfields.
- ls_dynpfield-fieldname = ls_return-retfield.
- ls_dynpfield-fieldvalue = ls_return-fieldval.
- PERFORM clear_s_valu USING p_index
- p_prog
- p_dynnr.
- CALL FUNCTION 'DYNP_VALUES_UPDATE'
- EXPORTING
- dyname = p_prog
- dynumb = p_dynnr
- dynpfields = lt_dynpfields.
- *&---------------------------------------------------------------------*
- *& Form CLEAR_S_VALU
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->P_P_INDEX text
- *----------------------------------------------------------------------*
- p_prog LIKE gv_prog
- p_dynnr LIKE gv_dynnr.
- DATA:
- lv_num TYPE num02,
- lv_idx TYPE num4,
- lv_s_valu TYPE string,
- lt_dynpfields TYPE dynpread_tabtype,
- ls_dynpfield LIKE LINE OF lt_dynpfields.
- <s_valu> TYPE ty_range_atwrt,
- <s_valu_line> LIKE LINE OF <s_valu>.
- *----------------------------------------------------------------------*
- * assigning the corresponding select-option to field-symbol (body)
- *----------------------------------------------------------------------*
- lv_num = p_index.
- *----------------------------------------------------------------------*
- * each filled line of select-option has to be cleared
- *----------------------------------------------------------------------*
- lv_idx = sy-tabix.
- ls_dynpfield,
- lt_dynpfields.
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- *----------------------------------------------------------------------*
- * header line of select-option has to be cleared
- *----------------------------------------------------------------------*
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- ls_dynpfield-fieldname = lv_s_valu.
- ls_dynpfield-fieldvalue = space.
- *----------------------------------------------------------------------*
- * clear dynpro data of select-option
- *----------------------------------------------------------------------*
- CALL FUNCTION 'DYNP_VALUES_UPDATE'
- EXPORTING
- dyname = p_prog
- dynumb = p_dynnr
- dynpfields = lt_dynpfields.
- * CLEAR:
- * ls_dynpfield,
- * lt_dynpfields.
- * ls_dynpfield-fieldname = 'RSCSEL-SLOW_I'.
- * ls_dynpfield-stepl = '1'.
- * ls_dynpfield-fieldvalue = space.
- * APPEND ls_dynpfield TO lt_dynpfields.
- *
- * CALL FUNCTION 'DYNP_VALUES_UPDATE'
- * EXPORTING
- * dyname = 'SAPLALDB'
- * dynumb = '3010'
- * TABLES
- * dynpfields = lt_dynpfields.
- *----------------------------------------------------------------------*
- * clear program data (body and header) of select-option
- *----------------------------------------------------------------------*
- <s_valu>,
- <s_valu_line>.
- *&---------------------------------------------------------------------*
- *& Form f4_valu
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->S_VALU text
- *----------------------------------------------------------------------*
- * PERFORM dynp_values_read.
- GeSHi ©
Das Programm sollte bei euch lauffähig sein, wer sich die Mühe machen möchte
Ich habe mir eine Variante angelegt mit P_ATTR01 = 'ATNAM01'
und S_VALU01 mit 4 Werten A B C und D.
Wenn ich P_ATTR01 über die Werthilfe wechsle, bleibt leider immer Wert A in S_VALU01 stehen.
Vielleicht sehe ich mittlerweile den Wald vor lauter Bäumen nicht mehr
Hat jemand eine Idee?
Gruß
Frank