Utworzyłem sobie ekran (0100) na którym mam m.in. listboxa zasilanego zawartością jednej z tabel. Generowany był przez "okno słownika/pól programu", a dodatkowo w PBO zapełniam listę wartościami:
Kod: Zaznacz cały
TYPE-POOLS : VRM.
DATA: ld_field TYPE VRM_ID ,
it_listbox TYPE VRM_VALUES,
wa_listbox LIKE LINE OF it_listbox.
DATA: it_ZKC26_T_WN_STAN type STANDARD TABLE OF ZKC26_T_WN_STAN,
wa_ZKC26_T_WN_STAN type ZKC26_T_WN_STAN.
SELECT * from ZKC26_T_WN_STAN
into table it_ZKC26_T_WN_STAN.
loop at it_ZKC26_T_WN_STAN into wa_ZKC26_T_WN_STAN.
wa_listbox-key = wa_ZKC26_T_WN_STAN-STATUS_ID.
wa_listbox-text = wa_ZKC26_T_WN_STAN-STATUS_NAME.
append wa_listbox to it_listbox.
endloop.
ld_field = 'ZKC26_T_WN_STAN-STATUS_NAME'.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = ld_field
values = it_listbox.
Na ekranie jest także przycisk, który w PAI uruchamia działanie performa USTAW:
Kod: Zaznacz cały
MODULE user_command_0100 INPUT.
DATA:
lv_ok_code LIKE sy-ucomm.
MOVE ok_code TO lv_ok_code.
CLEAR ok_code.
CASE lv_ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'CONT' OR 'GET'.
PERFORM get_data.
WHEN 'USTAW'.
perform ustaw_status.
WHEN 'HISTORIA_WNIOSKU'.
PERFORM historia_wniosku.
ENDCASE.
ENDMODULE.
Wg wszelkich porad w necie, teoretycznie powinienem dostać się do wybranej wartości przez odwołanie się w ld_field, ale niestety ten zwraca mi nazwę elementu który został przypisany, czyli ld_field = 'ZKC26_T_WN_STAN-STATUS_NAME'.
Najwyrwaźniej gdzieś w założeniach musiałem zrobić błąd, co jest dla mnie o tyle dziwne, że przy tej samej konstrukcji nie mam problemów z dobraniem się do wartości z innych pól wypełnianych na ekranie 0100, np z całkiem innego programu form wywoływany performem w PAI (patrz-> im_id):
Kod: Zaznacz cały
* "dorzucamy notatkę do do logu, wykorzystując FM
* CALL FUNCTION 'ZY_KC26_NOTE_ADD'
* EXPORTING
* im_id = zkc26_t_wn_head-nr_wn_id
* im_zdarzenie = 'AKCEPTACJA WNIOSKU'
* im_notatka = lv_uzasadnienie
* im_wew_it = '0'.