‎2008 May 14 8:28 AM
how to write at selection screen process on value request on a field
‎2008 May 14 8:32 AM
Hi Srinivas,
Sample code,
PARAMETERS : p_carr(2) TYPE c.
DATA: BEGIN OF fs_sflight OCCURS 0,
carrid TYPE dfies-fieldname,
END OF fs_sflight.
DATA : r_carr TYPE TABLE OF ddshretval WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carr.
APPEND 'AA' TO fs_sflight.
APPEND 'LH' TO fs_sflight.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CARRID'
dynpprog = sy-repid
dynpnr = '1000'
dynprofield = 'P_CARR'
window_title = 'carrier'
value_org = 'S'
TABLES
value_tab = fs_sflight[]
return_tab = r_carr[].
Regards
Adil
‎2008 May 14 8:35 AM
check this code
**********************************************************************************************************************************************
*TO GET THE DOCUMENT TYPE AND CREATION DATE BASED ON THE PURCHASE DOCUMENT NO
********************************************************************************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DOC.
CHECK NOT SO_DOC IS INITIAL.
SELECT BSART FROM EKKO INTO TABLE I_TYP
WHERE EBELN IN SO_DOC.
SORT I_TYP BY BSART.
DELETE ADJACENT DUPLICATES FROM I_TYP.
CLEAR:VALUE_TAB,FIELD_TAB,RETURN_TAB.
REFRESH:VALUE_TAB,FIELD_TAB,RETURN_TAB.
FIELD_TAB-FIELDNAME = 'BSART'.
FIELD_TAB-TABNAME = 'EKKO'.
APPEND FIELD_TAB.
LOOP AT I_TYP.
VALUE_TAB-BSART = I_TYP-BSART.
APPEND VALUE_TAB.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = FIELD_TAB-FIELDNAME
TABLES
VALUE_TAB = VALUE_TAB
FIELD_TAB = FIELD_TAB
RETURN_TAB = RETURN_TAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
P_DOC = RETURN_TAB-FIELDVAL.
ENDIF.
***********************************************************************************************************************************************
* TO GET THE CREATION DATE BASED ON THE PURCHASE DOCUMENT NO
*********************************************************************************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_DATE-LOW.
CHECK NOT SO_DOC IS INITIAL.
SELECT AEDAT FROM EKKO INTO TABLE I_DATE
WHERE EBELN IN SO_DOC.
SORT I_DATE BY AEDAT.
DELETE ADJACENT DUPLICATES FROM I_DATE.
CLEAR:VALUE_TAB1,FIELD_TAB,RETURN_TAB.
REFRESH: VALUE_TAB1,FIELD_TAB,RETURN_TAB.
FIELD_TAB-FIELDNAME = 'AEDAT'.
FIELD_TAB-TABNAME = 'EKKO'.
APPEND FIELD_TAB.
LOOP AT I_DATE.
VALUE_TAB1-AEDAT = I_DATE-AEDAT.
APPEND VALUE_TAB1.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = FIELD_TAB-FIELDNAME
TABLES
VALUE_TAB = VALUE_TAB1
FIELD_TAB = FIELD_TAB
RETURN_TAB = RETURN_TAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_INPUT'
EXPORTING
INPUT = RETURN_TAB-FIELDVAL
IMPORTING
OUTPUT = RETURN_TAB-FIELDVAL.
IF SY-SUBRC = 0.
SO_DATE-LOW = RETURN_TAB-FIELDVAL.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_DATE-HIGH.
CHECK NOT SO_DOC IS INITIAL.
SELECT AEDAT FROM EKKO INTO TABLE I_DATE
WHERE EBELN IN SO_DOC.
SORT I_DATE BY AEDAT.
DELETE ADJACENT DUPLICATES FROM I_DATE.
CLEAR:VALUE_TAB1,FIELD_TAB,RETURN_TAB.
REFRESH: VALUE_TAB1,FIELD_TAB,RETURN_TAB.
FIELD_TAB-FIELDNAME = 'AEDAT'.
FIELD_TAB-TABNAME = 'EKKO'.
APPEND FIELD_TAB.
LOOP AT I_DATE.
VALUE_TAB1-AEDAT = I_DATE-AEDAT.
APPEND VALUE_TAB1.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = FIELD_TAB-FIELDNAME
TABLES
VALUE_TAB = VALUE_TAB1
FIELD_TAB = FIELD_TAB
RETURN_TAB = RETURN_TAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
SO_DATE-HIGH = RETURN_TAB-FIELDVAL.
ENDIF.
********************************************************************************************************************************************
* INITIALIZATION OF VALUES
********************************************************************************************************************************************
INITIALIZATION.
SO_DOC-LOW = '3000000004'.
SO_DOC-HIGH = '6000000004'.
SO_DOC-OPTION = 'BT'.
SO_DOC-SIGN = 'I'.
APPEND SO_DOC.
‎2008 May 14 8:35 AM
Hi,
This event is fired when the user hits F4 on the field. This is used to provide F4 Help for the field. Here is a sample program.
code
report zrich_0001 .
tables: t001.
data: begin of it001 occurs 0,
bukrs type t001-bukrs,
butxt type t001-butxt,
ort01 type t001-ort01,
land1 type t001-land1,
end of it001.
select-options s_bukrs for t001-bukrs.
initialization.
select bukrs butxt ort01 land1 into table it001 from t001.
at selection-screen on value-request for s_bukrs-low.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'BUKRS'
dynprofield = 'S_BUKRS'
dynpprog = sy-cprog
dynpnr = sy-dynnr
value_org = 'S'
tables
value_tab = it001.
start-of-selection.
[/code]
Regards,
Raj.