Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Listbox problem

Former Member
0 Likes
775

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

1 ACCEPTED SOLUTION
Read only

awin_prabhu
Active Contributor
0 Likes
717

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

5 REPLIES 5
Read only

Pawan_Kesari
Active Contributor
0 Likes
717

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 .

Read only

former_member156446
Active Contributor
0 Likes
717

[List Box Usage|http://sap.niraj.tripod.com/id38.html]

Read only

awin_prabhu
Active Contributor
0 Likes
718

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

Read only

MarcinPciak
Active Contributor
0 Likes
717

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

Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
717

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