Application Development 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: 

Table control with dropdown list

0 Kudos

Hi, How to add a dropdown list to table control fields.

and where to write the code i.e. flow logic pbo or in the main programming.

<< Moderator message - Please do not offer points >>

Thanks

Edited by: Rob Burbank on Nov 23, 2010 2:05 PM

11 REPLIES 11

Former Member
0 Kudos

Hi

you do not need to promise points, we will try to help anyway

The right place is POV:

PROCESS ON VALUE-REQUEST

Declaration for top-include

.

TYPE-POOLS VRM.
DATA: NAME    TYPE VRM_ID,
      LIST    TYPE VRM_VALUES,
      VALUE   LIKE LINE OF LIST.

PROCESS ON VALUE-REQUEST.
   
   FIELD <i/o field name> MODULE DROPDOWLIST.

MODULE DROPDOWLIST.
    NAME =  '<i/o field name>'.
    REFRESH LIST.
    
    VALUE-KEY = <value>
    VALUE-TEXT = <value description>.

  CALL FUNCTION 'VRM_SET_VALUES'
       EXPORTING
            ID     = NAME
            VALUES = LIST.
    APPEND VALUE TO LIST.
ENDMODULE.

Max

0 Kudos

Thanks for your response, Can I have an example on this.

I modified the program according to your code but not showing any values.

0 Kudos

Hi Ravindra,


MODULE DROPDOWLIST.
    NAME =  '<i/o field name>'.
    REFRESH LIST.
    
    VALUE-KEY = <value1>
    VALUE-TEXT = <value1 description>.
   APPEND VALUE TO LIST.         " Append the internal table here

    VALUE-KEY = <value2>
    VALUE-TEXT = <value2 description>.
   APPEND VALUE TO LIST.      " Append the internal table here
                                          "LIST internal table will have the dropdown values and description
 
  CALL FUNCTION 'VRM_SET_VALUES'
       EXPORTING
            ID     = NAME
            VALUES = LIST.
   
ENDMODULE.

Please paste your code so that the issue can be figured out.

Regards,

Nisha Vengal.

0 Kudos

Hi

Nisha is right

The APPEND is missing:

APPEND VALUE TO LIST.

Max

0 Kudos

Hey Max,

APPEND was not missing.

It was misplaced in a hurry, I guess .

Regards,

Nisha Vengal

0 Kudos

Hi

Yes you're right

I've tried this sample in my system and it works:

Top-Include

TYPE-POOLS VRM.
DATA: NAME    TYPE VRM_ID,
      LIST    TYPE VRM_VALUES,
      VALUE   LIKE LINE OF LIST.


DATA: P_IO(1). "Input/Output field

Dynpro

PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.

PROCESS ON VALUE-REQUEST.

  FIELD P_IO MODULE DROPDOWNLIST.

Module

MODULE DROPDOWNLIST INPUT.
  NAME =  'P_IO'.
  REFRESH LIST.

  VALUE-KEY = 'A'.
  VALUE-TEXT = 'First value'.
  APPEND VALUE TO LIST.

  VALUE-KEY = 'B'.
  VALUE-TEXT = 'Second value'.
  APPEND VALUE TO LIST.

  VALUE-KEY = 'C'.
  VALUE-TEXT = 'THird value'.
  APPEND VALUE TO LIST


  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      ID     = NAME
      VALUES = LIST.

ENDMODULE.                 " DROPDOWNLIST  INPUT

Just one thing:

When you insert your input/output field in the dynpro, you need to set DROPDOWN LIST in the attribute field by screen painter

Max

0 Kudos

Thanks for your reply Nisha and max

Regards

Ravindra

0 Kudos

Hi

Don't forget to close the post if your issue is solved

Max

0 Kudos

Hi Nisha & max

Scenario:

I created a table control wizard with two internal table fields.

TVTTK-TEXT1

TVTTK-TEXT2.

I need drop down list for tvttk-text1 field. I checked all the attributes like i/o field, list with key or list .

***************DIALOG SCREEN CODE**********************

PROCESS BEFORE OUTPUT.

MODULE SELECTS_RECORD.

*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'CTRL'

MODULE CTRL_CHANGE_TC_ATTR.

*&SPWIZARD: MODULE CTRL_CHANGE_COL_ATTR.

LOOP AT TVTTK

WITH CONTROL CTRL

CURSOR CTRL-CURRENT_LINE.

MODULE CTRL_GET_LINES.

*&SPWIZARD: MODULE CTRL_CHANGE_FIELD_ATTR

ENDLOOP.

MODULE STATUS_0104.

*

PROCESS AFTER INPUT.

*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'CTRL'

LOOP AT TVTTK.

CHAIN.

FIELD TVTTK-TEXT1.

FIELD TVTTK-TEXT2.

MODULE CTRL_MODIFY ON CHAIN-REQUEST.

endchain.

FIELD TVTTK-CH1

MODULE CTRL_MARK ON REQUEST.

ENDLOOP.

MODULE CTRL_USER_COMMAND.

*&SPWIZARD: MODULE CTRL_CHANGE_TC_ATTR.

*&SPWIZARD: MODULE CTRL_CHANGE_COL_ATTR.

MODULE USER_COMMAND_0104.

PROCESS ON VALUE-REQUEST.

FIELD TVTTK-TEXT1 MODULE DROPDOWLIST.

Main Program

TYPE-POOLS VRM.

DATA: NAME TYPE VRM_ID,

LIST TYPE VRM_VALUES,

VALUE1 LIKE LINE OF LIST.

DATA: BEGIN OF TVTTK OCCURS 0,

CH1 TYPE C,

TEXT1 TYPE VTTK-TEXT1,

TEXT2 TYPE VTTK-TEXT2,

END OF TVTTK.

&----


*& Module STATUS_0104 OUTPUT

&----


  • text

----


MODULE STATUS_0104 OUTPUT.

SET PF-STATUS '102'.

SET TITLEBAR 'XXXX'.

SELECT TEXT1 TEXT2 FROM VTTK INTO CORRESPONDING FIELDS OF TABLE TVTTK.

ENDMODULE. " STATUS_0104 OUTPUT

&----


*& Module DROPDOWLIST OUTPUT

&----


  • text

----


MODULE DROPDOWLIST OUTPUT.

NAME = 'TVTTK-TEXT1'.

REFRESH LIST.

value1-key = '1'.

VALUE1-TEXT = '30'.

APPEND VALUE1 TO LIST.

VALUE1-KEY = '2'.

VALUE1-TEXT = '22'.

APPEND VALUE1 TO LIST.

VALUE1-KEY = '3'.

VALUE1-TEXT = '15'.

APPEND VALUE1 TO LIST.

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

ID = NAME

VALUES = LIST

  • EXCEPTIONS

  • ID_ILLEGAL_NAME = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDMODULE. " DROPDOWLIST OUTPUT

But still not showing any values.

I appreciate your help.

Thanks

Ravindra

0 Kudos

just if you can...

make your field table "type" some type with domain with restricted values

(sorry about my english)

0 Kudos

Hi Ravindra,

I have never tried implementing list box in table controls.

Some options you can try:

1. Try giving FIELD name as workarea-fieldname instead of internal table-fieldname

2. Check this link

We have an option to make Value List in Layout to "A from Program"

3. First try to refer to data dictionary object (eg. MARA-MATNR) and see if values appear as dropdown box.

Refer the DEMO program: RSDEMO_TABLE_CONTROL

Regards,

Nisha Vengal.