09-26-2007 4:04 PM
Team,
I want to create listbox for screen field S_CUST. Listbox box values will be read from a z_zipcodes table where zipcode = S_ZIPCODE.
(There is alot of material on sdn - but somehow it is mixed with se38 and se80 programming). I am only interested in SE80 since both fields S_CUST and S_ZIPCODE are on screen 0100. I want the user to choose values for field S_CUST only from listbox. The listbox is created by select statement where zipcode = S_ZIPCODE.
I know I have to declare the following in TOP module:
TYPE-POOLS : VRM.
DATA: param TYPE vrm_id,
values TYPE vrm_values,
value LIKE LINE OF values.
and there is a FM involved:
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'i/o screen field'
values = values.
I also know that following code will be in PAI module:
PROCESS ON VALUE-REQUEST
field S_CUST module CUST_LBOX. "List box
****
How to code module CUST_LBOX.
I want to know how to put all this together (And If I am missing anything). (Please do not refer to another post for suggestions or reading - I want solution to my scenario)
Thanks
Message was edited by:
SAPna2000
09-26-2007 4:24 PM
I have code for providing F4 help to a field based on another field.
Try manipulating this code....and populate listbox instead....
*******************************************************
REPORT Z50651_F4 MESSAGE-ID ZMSG_50651.
******************TABLES DECLARATION*********************
TABLES : VBAP.
******************DATA DECLARATIONS********************
DATA : PGMNAME LIKE SY-REPID.
DATA : DYNNO LIKE SY-DYNNR.
*****************INTERNAL TABLES*************************
DATA : BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
END OF IT_VBAP.
DATA : DYNVALUE TYPE TABLE OF DYNPREAD,
FIELD_VALUE LIKE LINE OF DYNVALUE.
************INITIALIZATION*************************
INITIALIZATION.
PGMNAME = SY-REPID.
DYNNO = SY-DYNNR.
*************SELECTION SCREEN**********
PARAMETERS : P_VBELN LIKE VBAP-VBELN,
P_POSNR LIKE VBAP-POSNR.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_POSNR.
PERFORM GET_ENTERED_VBELN.
PERFORM POPULATE_IT_VBAP.
PERFORM PROVIDE_F4_VBELN.
&----
*& Form PROVIDE_F4_VBELN
&----
text
----
--> p1 text
<-- p2 text
----
FORM PROVIDE_F4_VBELN .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
RETFIELD = 'P_POSNR'
PVALKEY = ' '
DYNPPROG = PGMNAME
DYNPNR = DYNNO
DYNPROFIELD = 'P_POSNR'
STEPL = 0
WINDOW_TITLE =
VALUE = ' '
VALUE_ORG = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
TABLES
VALUE_TAB = IT_VBAP
FIELD_TAB =
RETURN_TAB =
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " PROVIDE_F4_VBELN
&----
*& Form POPULATE_IT_VBAP
&----
text
----
--> p1 text
<-- p2 text
----
FORM POPULATE_IT_VBAP .
READ TABLE DYNVALUE INDEX 1 INTO FIELD_VALUE.
SELECT VBELN
POSNR
FROM VBAP
INTO TABLE IT_VBAP
WHERE VBELN = FIELD_VALUE-FIELDVALUE.
ENDFORM. " POPULATE_IT_VBAP
&----
*& Form GET_ENTERED_VBELN
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_ENTERED_VBELN .
CLEAR : DYNVALUE,FIELD_VALUE.
FIELD_VALUE-FIELDNAME = 'P_VBELN'.
APPEND FIELD_VALUE TO DYNVALUE.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = PGMNAME
DYNUMB = DYNNO
TRANSLATE_TO_UPPER = 'X'
REQUEST = ' '
PERFORM_CONVERSION_EXITS = ' '
PERFORM_INPUT_CONVERSION = ' '
DETERMINE_LOOP_INDEX = ' '
TABLES
DYNPFIELDS = DYNVALUE
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
INVALID_PARAMETER = 7
UNDEFIND_ERROR = 8
DOUBLE_CONVERSION = 9
STEPL_NOT_FOUND = 10
OTHERS = 11
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GET_ENTERED_VBELN
***********************************************************
Regards
Vasu
09-26-2007 4:45 PM
Vasu,
Thanks for your response. It gives solution for SE38. I am interested in module pool solutions only, i.e. SE80.
Thanks
09-26-2007 5:03 PM
Try using this type of code.....in event Process On Value Request (POV).
But u can use this type of code even in module pool programs i guess....
Regards
Vasu