11-23-2010 6:56 PM
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-23-2010 7:04 PM
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
11-23-2010 7:50 PM
Thanks for your response, Can I have an example on this.
I modified the program according to your code but not showing any values.
11-24-2010 3:24 AM
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.
11-24-2010 4:00 AM
11-24-2010 4:19 AM
Hey Max,
APPEND was not missing.
It was misplaced in a hurry, I guess .
Regards,
Nisha Vengal
11-24-2010 8:57 AM
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
11-24-2010 4:21 PM
11-24-2010 4:28 PM
11-24-2010 6:28 PM
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
11-24-2010 6:47 PM
just if you can...
make your field table "type" some type with domain with restricted values
(sorry about my english)
11-25-2010 6:21 AM
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.