‎2007 Dec 29 5:29 AM
Hi all
In the code below am debugging at the select statement.I can see both my values of p_gjahr and p_bukrs but the field s_belnr is not showeing any value though i gave a input range in the input screen.I also tried using the START-OF-SELECTION but its not working.Please help.
Vijay
REPORT ZABAP9.
TABLES:BKPF.
TYPES:BEGIN OF t_bkpf ,
usnam type BKPF-USNAM,
belnr TYPE BKPF-belnr,
END OF t_bkpf.
DATA : t_return TYPE STANDARD TABLE OF ddshretval WITH HEADER LINE.
DATA:it_bkpf TYPE STANDARD TABLE OF t_bkpf WITH HEADER LINE.
PARAMETERS : P_BUKRS TYPE BKPF-BUKRS OBLIGATORY.
PARAMETERS : P_GJAHR TYPE BKPF-GJAHR OBLIGATORY.
DATA:belnr TYPE bkpf-belnr.
SELECT-OPTIONS : s_belnr FOR bkpf-belnr.
PARAMETERS : P_USNAM TYPE BKPF-USNAM .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_USNAM.
PERFORM read_selection_screen.
SELECT * FROM BKPF
INTO CORRESPONDING FIELDS OF TABLE it_bkpf
WHERE bukrs eq p_bukrs AND gjahr eq p_gjahr
and belnr IN s_belnr.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'USNAM'
dynpprog = SY-REPID
dynpnr = '1000'
dynprofield = 'P_USNAM'
value_org = 'S'
TABLES
value_tab = it_bkpf
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF NOT it_bkpf[] IS INITIAL.
SORT it_bkpf BY belnr.
DELETE ADJACENT DUPLICATES FROM it_bkpf COMPARING USNAM.
IF sy-subrc = 0.
READ TABLE it_bkpf INDEX 1.
ENDIF.
ENDIF.
FORM read_selection_screen.
DATA: lv_dyname LIKE d020s-prog VALUE 'ZABAP9',
lv_dynumb LIKE d020s-dnum VALUE '1000'.
DATA: BEGIN OF lt_dynpfields OCCURS 3.
INCLUDE STRUCTURE dynpread.
DATA: END OF lt_dynpfields.
lt_dynpfields-fieldname = 'P_BUKRS'.
APPEND lt_dynpfields.
lt_dynpfields-fieldname = 'P_GJAHR'.
APPEND lt_dynpfields.
lt_dynpfields-fieldname = 'S_BELNR-LOW'.
APPEND lt_dynpfields.
lt_dynpfields-fieldname = 'S_BELNR-HIGH'.
APPEND lt_dynpfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = lv_dyname
dynumb = lv_dynumb
translate_to_upper = 'X'
TABLES
dynpfields = lt_dynpfields
EXCEPTIONS
invalid_abapworkarea = 01
invalid_dynprofield = 02
invalid_dynproname = 03
invalid_dynpronummer = 04
invalid_request = 05
no_fielddescription = 06
invalid_parameter = 07
undefind_error = 08
double_conversion = 09
stepl_not_found = 10
OTHERS = 11.
if sy-subrc eq 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
CLEAR: lt_dynpfields.
LOOP AT lt_dynpfields.
CASE lt_dynpfields-fieldname.
WHEN 'P_BUKRS'.
p_bukrs = lt_dynpfields-fieldvalue.
WHEN 'P_GJAHR'.
p_gjahr = lt_dynpfields-fieldvalue.
WHEN 'S_BELNR-LOW'.
p_usnam = lt_dynpfields-fieldvalue.
WHEN 'S_BELNR-HIGH'.
p_usnam = lt_dynpfields-fieldvalue.
ENDCASE.
ENDLOOP.
ENDFORM. " read_selection_screen
‎2007 Dec 29 6:10 AM
Hi evryone,
AFter entering the values if i hit enter then if i debug and diuble click on s_belnr i can see that s_belnr is taking its value.Please help
VIjay
‎2008 Jan 02 7:41 AM
hi,
i observed the following problem
TYPES:BEGIN OF t_bkpf ,
usnam type BKPF-USNAM,
belnr TYPE BKPF-belnr,
END OF t_bkpf.
DATA:it_bkpf TYPE STANDARD TABLE OF t_bkpf WITH HEADER LINE
SELECT * FROM BKPF
INTO CORRESPONDING FIELDS OF TABLE it_bkpf
WHERE bukrs eq p_bukrs AND gjahr eq p_gjahr
and belnr IN s_belnr
when you need only two fields only why u r selecting all fields of the table?
This is a performance issue
‎2008 Jan 02 11:03 AM
Hi,
i think you are trying to prvode the F4 help based on the other filed values in your selection screen field.
use the function module"DYNP_VALUES_READ" which is used to read the input selection screen field values (entered), without pressing the enter key you can read the selection screen fields and their values.
Reward if useful.
Thanks,
Sreeram.
Edited by: Sreeram Prasad on Jan 2, 2008 12:03 PM