‎2009 Mar 04 1:01 PM
Hi,
I'm using a listbox in my program.
When I choose a value from the list, I can't catch its value in my program.
I'm using the name I named the listbox in the screen.
What's wrong?
Hagit
‎2009 Mar 04 1:51 PM
Hi friend,
I hope u are telling about module pool programming.
If so, for getting values from listbox into program, u have to use FM 'DYNP_VALUES_READ' for reading screen values.
Ex:
DATA: dyname LIKE d020s-prog VALUE 'ZASSIGN',
dynumb LIKE d020s-dnum VALUE '2000',
str type string,
listbox.
DATA: BEGIN OF t_dynpfields OCCURS 0.
INCLUDE STRUCTURE dynpread.
DATA: END OF t_dynpfields.
MOVE 'LISTBOX' TO t_dynpfields-fieldname. <--'LISTBOX' - name of screen field, declare inside program
APPEND t_dynpfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = dyname
dynumb = dynumb
TABLES
dynpfields = t_dynpfields
MOVE t_dynpfields-fieldvalue to str. <---- str contains selected value of list box, use it inside program.
Use above code in PBO of screen
Hope it helps.
Thanks.
Edited by: Sap Fan on Mar 4, 2009 2:52 PM
Edited by: Sap Fan on Mar 4, 2009 2:54 PM
‎2009 Mar 04 1:37 PM
try this code ...then compare your program with it..
REPORT zpwtest3.
TYPE-POOLS : vrm .
DATA : gt_values TYPE TABLE OF vrm_value .
PARAMETER : p_mestyp TYPE edidc-mestyp OBLIGATORY
AS LISTBOX VISIBLE LENGTH 30 .
INITIALIZATION .
DATA ls_value TYPE vrm_value .
CLEAR ls_value .
ls_value-key = 'INVOIC' .
ls_value-text = 'INVOIC Text' .
APPEND ls_value TO gt_values .
CLEAR ls_value .
ls_value-key = 'DESADV' .
ls_value-text = 'DESADV Text' .
APPEND ls_value TO gt_values .
CLEAR ls_value .
ls_value-key = 'ORDERS' .
ls_value-text = 'ORDERS Text' .
APPEND ls_value TO gt_values .
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_MESTYP'
values = gt_values.
START-OF-SELECTION .
WRITE : p_mestyp .
‎2009 Mar 04 1:41 PM
‎2009 Mar 04 1:51 PM
Hi friend,
I hope u are telling about module pool programming.
If so, for getting values from listbox into program, u have to use FM 'DYNP_VALUES_READ' for reading screen values.
Ex:
DATA: dyname LIKE d020s-prog VALUE 'ZASSIGN',
dynumb LIKE d020s-dnum VALUE '2000',
str type string,
listbox.
DATA: BEGIN OF t_dynpfields OCCURS 0.
INCLUDE STRUCTURE dynpread.
DATA: END OF t_dynpfields.
MOVE 'LISTBOX' TO t_dynpfields-fieldname. <--'LISTBOX' - name of screen field, declare inside program
APPEND t_dynpfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = dyname
dynumb = dynumb
TABLES
dynpfields = t_dynpfields
MOVE t_dynpfields-fieldvalue to str. <---- str contains selected value of list box, use it inside program.
Use above code in PBO of screen
Hope it helps.
Thanks.
Edited by: Sap Fan on Mar 4, 2009 2:52 PM
Edited by: Sap Fan on Mar 4, 2009 2:54 PM
‎2009 Mar 04 2:03 PM
Hi,
If you are using PBO the value should be visible there. Ensure you have created a data object in your program with the same name as listbox in the screen, otherwise the data will not be transported.
As for fm DYNP_VALUES_READ it is only relevant to POV module, as there the values are not visible. If you are using your listbox in POV, then this approach is the right one.
Regards
Marcin
‎2009 Mar 04 3:09 PM
Hi,
Refer code:-
TABLES : Y_MOVIE.
TYPE-POOLS: VRM.
TYPES : BEGIN OF MOVIE,
YR LIKE Y_MOVIE-YR,
CATEGORY LIKE Y_MOVIE-CATEGORY,
WINNER LIKE Y_MOVIE-WINNER,
NOTES LIKE Y_MOVIE-NOTES,
END OF MOVIE.
DATA: NAME TYPE VRM_ID,
LIST TYPE VRM_VALUES,
VALUE LIKE LINE OF LIST,
MOVIETAB TYPE STANDARD TABLE OF MOVIE INITIAL SIZE 10 WITH HEADER LINE.
PARAMETERS: CATEGORY(10) AS LISTBOX VISIBLE LENGTH 10.
AT SELECTION-SCREEN.
IF CATEGORY EQ ''.
MESSAGE E006.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
NAME = 'CATEGORY'.
VALUE-KEY = 'PIC'.
VALUE-TEXT = 'PIC'.
APPEND VALUE TO LIST.
VALUE-KEY = 'MAL'.
VALUE-TEXT = 'MAL'.
APPEND VALUE TO LIST.
VALUE-KEY = 'FEM'.
VALUE-TEXT = 'FEM'.
APPEND VALUE TO LIST.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = NAME
VALUES = LIST.
START-OF-SELECTION.
WRITE : / 'Category Selected :', CATEGORY.
ULINE.
SELECT *
FROM Y_MOVIE INTO CORRESPONDING FIELDS OF TABLE MOVIETAB
WHERE CATEGORY = CATEGORY.
END-OF-SELECTION.
WRITE : /1 'Year', 6 'Category', 16 'Winner', 50 'Notes'.
ULINE.
LOOP AT MOVIETAB.
WRITE : /1 MOVIETAB-YR, 8 MOVIETAB-CATEGORY, 16 MOVIETAB-WINNER, 50 MOVIETAB-NOTES.
ULINE.
ENDLOOP.
IF SY-SUBRC <> 0.
MESSAGE I005.
ENDIF.
Hope this helps you.
Regards,
Tarun