2014 Jun 02 7:17 AM
Dear All,
I make search help for field ARBPL in selection screen are not excepted selected value.
Code is
----------------------------------------------------------------------------------------
SELECT-OPTIONS: p_arbpl FOR zdmde-arbpl MODIF ID two.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arbpl-low.
REFRESH sh_arbpl.
SELECT * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'P_ARBPL'
DYNPROFIELD = 'P_ARBPL'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = sh_arbpl.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arbpl-high.
REFRESH sh_arbpl.
SELECT * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'P_ARBPL'
DYNPROFIELD = 'P_ARBPL'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = sh_arbpl.
Please tell how to input selected field from search help into input field in both low and high.
Would appreciate your reply .
Regards,
Pooja
2014 Jun 02 7:36 AM
Hi Pooja,
Your parameter value in FM for RETFIELD seems to be wrong.
DATA: it_ret TYPE ddshretval OCCURS 0 WITH HEADER LINE.
DATA: wa_fieldname TYPE fieldname.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arbpl-low.
wa_fieldname = 'ARBPL'
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = wa_fieldname "field name in your value tab i.e sh_arbpl.
value_org = 'S'
TABLES
value_tab = sh_arbpl[]
return_tab = it_ret[].
IF sy-subrc EQ 0.
READ TABLE it_ret INDEX 1.
p_arbpl-low = it_ret-fieldval.
ENDIF.
Here wa_fieldname should be the name of the field in the value table sh_arbpl corresponding to p_arbpl.
Then you need to give the return table it_ret also in the FM and pass the value in this to the screen.
Else, another option would be to give the program name and screen number also in the FM.
wa_fieldname = 'ARBPL'
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = wa_fieldname "field name in your value tab i.e sh_arbpl.
DYNPROFIELD = 'P_ARBPL'
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR
value_org = 'S'
TABLES
value_tab = sh_arbpl[].
Similarly, do the same for p_arbpl-high.
2014 Jun 02 7:33 AM
2014 Jun 02 7:36 AM
Hi Pooja,
Your parameter value in FM for RETFIELD seems to be wrong.
DATA: it_ret TYPE ddshretval OCCURS 0 WITH HEADER LINE.
DATA: wa_fieldname TYPE fieldname.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arbpl-low.
wa_fieldname = 'ARBPL'
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = wa_fieldname "field name in your value tab i.e sh_arbpl.
value_org = 'S'
TABLES
value_tab = sh_arbpl[]
return_tab = it_ret[].
IF sy-subrc EQ 0.
READ TABLE it_ret INDEX 1.
p_arbpl-low = it_ret-fieldval.
ENDIF.
Here wa_fieldname should be the name of the field in the value table sh_arbpl corresponding to p_arbpl.
Then you need to give the return table it_ret also in the FM and pass the value in this to the screen.
Else, another option would be to give the program name and screen number also in the FM.
wa_fieldname = 'ARBPL'
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = wa_fieldname "field name in your value tab i.e sh_arbpl.
DYNPROFIELD = 'P_ARBPL'
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR
value_org = 'S'
TABLES
value_tab = sh_arbpl[].
Similarly, do the same for p_arbpl-high.
2014 Jun 02 7:40 AM
Hi,
Some code that use F4IF_INT_TABLE_VALUE_REQUEST:
REPORT y_r_eitan_test_30_07.
TYPE-POOLS: abap .
TABLES: sflight .
SELECT-OPTIONS: s_carrid FOR sflight-carrid NO-EXTENSION NO INTERVALS OBLIGATORY .
SELECT-OPTIONS: s_connid FOR sflight-connid NO-EXTENSION NO INTERVALS OBLIGATORY .
SELECT-OPTIONS: s_fldate FOR sflight-fldate .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_fldate-low .
PERFORM at_value_request_for_fldate USING 'S_FLDATE-LOW' CHANGING s_fldate-low .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_fldate-high .
PERFORM at_value_request_for_fldate USING 'S_FLDATE-HIGH' CHANGING s_fldate-high .
FORM at_value_request_for_fldate
USING
fieldname TYPE dynpread-fieldname
CHANGING
fldate TYPE sflight-fldate .
DATA: it_dynfields TYPE TABLE OF dynpread ,
st_dynfields LIKE LINE OF it_dynfields .
* GET CURSOR FIELD st_dynfields-fieldname .
* APPEND st_dynfields TO it_dynfields .
st_dynfields-fieldname = 'S_CARRID-LOW'.
APPEND st_dynfields TO it_dynfields.
st_dynfields-fieldname = 'S_CONNID-LOW'.
APPEND st_dynfields TO it_dynfields.
st_dynfields-fieldname = fieldname .
APPEND st_dynfields TO it_dynfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
translate_to_upper = abap_true
TABLES
dynpfields = it_dynfields
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.
DATA: st_sflight TYPE sflight .
FIELD-SYMBOLS: <st_dynfields> LIKE LINE OF it_dynfields .
LOOP AT it_dynfields ASSIGNING <st_dynfields> .
CASE <st_dynfields>-fieldname .
WHEN 'S_CARRID-LOW' .
st_sflight-carrid = <st_dynfields>-fieldvalue .
WHEN 'S_CONNID-LOW' .
st_sflight-connid = <st_dynfields>-fieldvalue .
WHEN OTHERS.
ENDCASE.
ENDLOOP.
DATA: it_sflight TYPE TABLE OF sflight WITH HEADER LINE .
SELECT * INTO TABLE it_sflight
FROM sflight
WHERE
carrid EQ st_sflight-carrid AND
connid EQ st_sflight-connid .
DATA: it_return TYPE TABLE OF ddshretval WITH HEADER LINE .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'FLDATE'
value_org = 'S'
TABLES
value_tab = it_sflight
return_tab = it_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE it_return INDEX 1 .
CHECK sy-subrc EQ 0 .
LOOP AT it_dynfields ASSIGNING <st_dynfields> .
CASE <st_dynfields>-fieldname .
WHEN fieldname .
<st_dynfields>-fieldvalue = it_return-fieldval .
WHEN OTHERS.
ENDCASE.
ENDLOOP .
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = it_dynfields
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
ENDFORM . "at_value_request_for_fldate
*----------------------------------------------------------------------*
Regards.
2014 Jun 02 7:46 AM
Hello Pooja,
As Susmitha Susan Thomas suggested please pass values from the return table to input field.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arbpl-low.
REFRESH sh_arbpl.
SELECT * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'P_ARBPL'
DYNPROFIELD = 'P_ARBPL'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = sh_arbpl.
Write sh_arbpl-FIELDVAL TO p_arbpl-low.
Same applies to p_arbpl-high field also.
2014 Jun 02 7:52 AM
Hi Pooja,
For getting the response back from the user selection , please get the return code too. Before that instead of directly using the table crhd structure.. please do create a type declaration of that table , make sure that the field that you wanted to get using search help be specified at last of declaration type like this
TYPES: BEGIN OF ty,
OBJTY TYPE CR_OBJTY,
ARBPL TYPE ARBPL,
END OF ty.
this is because the return parameter t_rtn will holds the last value of type which been selected by user.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'P_ARBPL'
DYNPROFIELD = 'P_ARBPL'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = sh_arbpl
return_tab = t_rtn.
LOOP AT t_rtn INTO x_rtn .
ENDLOOP.
try executing this code.
TABLES crhd.
TYPES: BEGIN OF ty,
OBJTY TYPE CR_OBJTY,
ARBPL TYPE ARBPL,
END OF ty.
DATA: sh_arbpl TYPE TABLE OF ty.
DATA: dynpfields TYPE TABLE OF DYNPREAD,
x_dynpfields TYPE dynpread,
t_rtn TYPE STANDARD TABLE OF DDSHRETVAL ,
x_rtn TYPE DDSHRETVAL.
SELECT-OPTIONS: p_arbpl FOR crhd-ARBPL MODIF ID two.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_arbpl-low.
REFRESH sh_arbpl.
SELECT * from crhd into CORRESPONDING FIELDS OF TABLE sh_arbpl WHERE werks eq '1000'.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'P_ARBPL'
DYNPROFIELD = 'P_ARBPL'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = sh_arbpl
return_tab = t_rtn.
LOOP AT t_rtn INTO x_rtn .
ENDLOOP.
x_dynpfields-fieldname = 'P_ARBPL-LOW' .
x_dynpfields-fieldvalue = x_rtn-fieldval.
APPEND x_dynpfields TO dynpfields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dynpfields
* EXCEPTIONS
* INVALID_ABAPWORKAREA = 1
* INVALID_DYNPROFIELD = 2
* INVALID_DYNPRONAME = 3
* INVALID_DYNPRONUMMER = 4
* INVALID_REQUEST = 5
* NO_FIELDDESCRIPTION = 6
* UNDEFIND_ERROR = 7
* OTHERS = 8
.
Regards,
Sivaganesh
2014 Jun 02 8:03 AM
2014 Jun 02 8:17 AM
Hi Pooja,
Pass two more exporting parameters like below.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'P_ARBPL'
DYNPROFIELD = 'P_ARBPL'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT.
Check this. now it'll work.
Regards,
jack.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |