AT SELECTION-SCREEN OUTPUT.Kowalski hat geschrieben: Der Lösungsansatz von Unit605 - wie bekomme ich es denn hin, das beim welchseln der Rolle, der Selektionsbildschirm aktuallisiert wird.
Ich habe kein AT SELECTION SCREEN Ereignis gefunden, welches das bewerkstelligt.
André
in etwa so:Kowalski hat geschrieben:Bei dem Lösungsansatz mit dem VALUE-REQUEST FOR zerhaut es mir die Einträge in der Listbox
Code: Alles auswählen.
REPORT ztest_sel.
* Für Listbox
TYPE-POOLS vrm.
DATA: gw_value TYPE vrm_value,
gt_values TYPE vrm_values.
TYPES: BEGIN OF t_key,
fieldname TYPE fieldname,
position TYPE tabfdpos,
END OF t_key.
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_list TYPE c AS LISTBOX
VISIBLE LENGTH 20
DEFAULT 'K'
USER-COMMAND push. "damit die Auswahl immer bei PHR zur verfügung steht
PARAMETERS: p_dktor TYPE kunnr.
SELECTION-SCREEN END OF BLOCK b1.
**********************************************************************
INITIALIZATION.
* Listbox mit Tabellen füllen
gw_value-key = 'K'.
gw_value-text = 'Kunde'.
APPEND gw_value TO gt_values.
gw_value-key = 'L'.
gw_value-text = 'Lieferant'.
APPEND gw_value TO gt_values.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_LIST'
values = gt_values
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dktor.
DATA ls_shlp TYPE shlp_descr.
DATA lt_return_values TYPE TABLE OF ddshretval.
DATA ls_interface TYPE ddshiface.
FIELD-SYMBOLS <ls_return_values> TYPE ddshretval.
* Je nach eingebenen Wert
CASE p_list.
WHEN 'K'.
* Die Beschreibung der Suchhilfe Kunde besorgen
CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
shlpname = 'C_KUNNR'
IMPORTING
shlp = ls_shlp.
* Rückgabefeld markieren.
ls_interface-valtabname = 'X'.
ls_interface-valfield = 'X'.
MODIFY ls_shlp-interface FROM ls_interface
TRANSPORTING valtabname valfield
WHERE shlpfield = 'KUNNR'.
WHEN 'L'.
* Die Beschreibung der Suchhilfe Lieferant besorgen
CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
shlpname = 'KRED_C'
IMPORTING
shlp = ls_shlp.
* Rückgabefeld markieren.
ls_interface-valtabname = 'X'.
ls_interface-valfield = 'X'.
MODIFY ls_shlp-interface FROM ls_interface
TRANSPORTING valtabname valfield
WHERE shlpfield = 'LIFNR'.
WHEN OTHERS.
ENDCASE.
* Den F4-Ablauf starten
CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
EXPORTING
shlp = ls_shlp
TABLES
return_values = lt_return_values.
READ TABLE lt_return_values ASSIGNING <ls_return_values> INDEX 1.
p_dktor = <ls_return_values>-fieldval.
Code: Alles auswählen.
REPORT ztest_sel.
* * Für Listbox
TYPE-POOLS vrm.
DATA: gw_value TYPE vrm_value,
gt_values TYPE vrm_values.
TYPES: BEGIN OF t_key,
fieldname TYPE fieldname,
position TYPE tabfdpos,
END OF t_key.
* **********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_list TYPE c AS LISTBOX
VISIBLE LENGTH 20
DEFAULT 'D'
USER-COMMAND push. "damit die Auswahl immer bei PHR zur verfügung steht
PARAMETERS: p_debi TYPE kna1-kunnr MATCHCODE OBJECT debi MODIF ID D.
PARAMETERS: p_kred TYPE lfa1-lifnr MATCHCODE OBJECT kred_c MODIF ID K.
SELECTION-SCREEN END OF BLOCK b1.
* **********************************************************************
INITIALIZATION.
* * Listbox mit Tabellen füllen
gw_value-key = 'D'.
gw_value-text = 'Debitor'.
APPEND gw_value TO gt_values.
gw_value-key = 'K'.
gw_value-text = 'Kreditor'.
APPEND gw_value TO gt_values.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_LIST'
values = gt_values
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
AT SELECTION-SCREEN OUTPUT.
loop at screen.
if screen-group1 = p_list.
screen-invisible = 0.
else.
if screen-group1 ne p_list and screen-group1 is not initial.
screen-invisible = 1.
endif.
endif.
modify screen.
endloop.
Code: Alles auswählen.
IF screen-group1 NE p_list AND screen-group1 IS NOT INITIAL.
screen-invisible = 1.
screen-input = 0." Das hier fehlte noch
ENDIF.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Unit605
Code: Alles auswählen.
REPORT.
PARAMETERS: p_kred TYPE lfa1-lifnr MATCHCODE OBJECT kred_c.
PARAMETERS: p_kred2 TYPE lfa1-lifnr.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
screen-invisible = 1.
MODIFY SCREEN.
ENDLOOP.
Code: Alles auswählen.
SELECTION-SCREEN BEGIN OF BLOCK stl WITH FRAME TITLE text-001.
PARAMETERS: matnr TYPE mara-matnr OBLIGATORY.
PARAMETERS: werks TYPE marc-werks OBLIGATORY.
PARAMETERS: stlan TYPE mast-stlan.
PARAMETERS: stlal TYPE mast-stlal.
SELECTION-SCREEN END OF BLOCK stl.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR werks.
DATA ls_shlp TYPE shlp_descr.
DATA lt_return_values TYPE TABLE OF ddshretval.
DATA ls_interface TYPE ddshiface.
FIELD-SYMBOLS <ls_return_values> TYPE ddshretval.
CLEAR ls_shlp.
CASE matnr.
WHEN ''.
CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
shlpname = 'H_WERKS_MATNR'"'H_T001W_C'
shlptype = 'SH'
IMPORTING
shlp = ls_shlp.
WHEN OTHERS.
"S_MAT1
CALL FUNCTION 'F4IF_GET_SHLP_DESCR'
EXPORTING
shlpname = 'H_WERKS_MATNR'
shlptype = 'SH'
IMPORTING
shlp = ls_shlp.
ENDCASE.
* Rückgabefeld markieren.
ls_interface-valtabname = 'X'.
ls_interface-valfield = 'X'.
MODIFY ls_shlp-interface FROM ls_interface
TRANSPORTING valtabname valfield
WHERE shlpfield = 'WERKS'.
CALL FUNCTION 'F4IF_START_VALUE_REQUEST'
EXPORTING
shlp = ls_shlp
TABLES
return_values = lt_return_values.
READ TABLE lt_return_values ASSIGNING <ls_return_values> INDEX 1.