ā2013 Nov 17 7:25 PM
Hi,
I have create a program if i will give value for P_VKORG and select-options as vbeln for dynamic F4 but it tracking wrongly..please check the below codes.
*&---------------------------------------------------------------------*
*& Report ZSHAN_DYN1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSHAN_DYN1.
tables: vbak.
types: begin of t_vbak,
vbeln type vbak-vbeln,
vkorg type vbak-vkorg,
end of t_vbak.
*--------------------------------------------------------------*
*Data Declaration
*--------------------------------------------------------------*
data:it_vbak type table of t_vbak,
wa_vbak type t_vbak,
it_return type table of ddshretval,
wa_return type ddshretval,
it_dynpfields type table of dynpread,
wa_dynpfields type dynpread.
*--------------------------------------------------------------*
*Selection-Screen
*--------------------------------------------------------------*
selection-screen: begin of block b1 with frame.
PARAMETERS: p_vkorg TYPE vbak-vkorg OBLIGATORY.
select-options: so_vbeln for vbak-vbeln.
selection-screen: end of block b1.
*--------------------------------------------------------------*
*Selection-Screen on Value-Request
*--------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_VBELN-LOW.
REFRESH it_dynpfields.
wa_dynpfields-fieldname = 'P_VKORG'.
APPEND wa_dynpfields TO it_dynpfields.
*Get plant value on the selection screen
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = it_dynpfields
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.
READ TABLE it_dynpfields INTO wa_dynpfields
WITH KEY fieldname = 'P_VKORG'.
IF sy-subrc = 0.
wa_vbak-vbeln = wa_dynpfields-fieldvalue.
ENDIF.
*Get values from the database based on plant
SELECT vbeln
vkorg
UP TO 10 ROWS
INTO TABLE it_vbak
FROM vbak where vkorg eq p_vkorg and vbeln in so_vbeln.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'VBELN'
value_org = 'S'
TABLES
value_tab = it_vbak
return_tab = it_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE it_return INTO wa_return INDEX 1.
IF sy-subrc = 0.
so_vbeln = wa_return-fieldval.
ENDIF.
ā2013 Nov 18 12:18 AM
Hi,
So what exactly is the problem? What do you mean by 'tracking wrongly'? More info please.
cheers
Paul
ā2013 Nov 18 1:48 AM
Hi,
Please write a code below.
SELECT vbeln
vkorg
UP TO 10 ROWS
INTO TABLE it_vbak
FROM vbak where vkorg eq wa_dynpfields-fieldvalue and vbeln in so_vbeln.
P_VKORG value is getting clear here.
So pass value like above vkorg eq wa_dynpfields-fieldvalue.
Arivazhagan S
ā2013 Nov 18 1:57 AM
ā2013 Nov 18 5:07 AM
Hi shanmuga,
Just do some changes in statement after read .
READ TABLE it_dynpfields INTO wa_dynpfields
WITH KEY fieldname = 'P_VKORG'.
IF sy-subrc = 0.
p_vkorg = wa_dynpfields-fieldvalue.
ENDIF.
*Get values from the database based on plant
SELECT vbeln
vkorg
UP TO 10 ROWS
INTO TABLE it_vbak
FROM vbak where vkorg eq p_vkorg and vbeln in so_vbeln.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'VBELN'
value_org = 'S'
TABLES
value_tab = it_vbak
return_tab = it_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE it_return INTO wa_return INDEX 1.
IF sy-subrc = 0.
so_vbeln-low = wa_return-fieldval.
ENDIF.
Regards,
Sivaganesh.
ā2013 Nov 18 5:11 AM
Hi Shanmuga R
Try like this
TABLES: vbak.
TYPES: BEGIN OF t_vbak,
vbeln TYPE vbak-vbeln,
vkorg TYPE vbak-vkorg,
END OF t_vbak.
*--------------------------------------------------------------*
*Data Declaration
*--------------------------------------------------------------*
DATA:it_vbak TYPE TABLE OF t_vbak,
wa_vbak TYPE t_vbak,
lt_dynp TYPE TABLE OF dynpread,
lt_return TYPE TABLE OF ddshretval.
FIELD-SYMBOLS: <fs_dynp> TYPE dynpread,
<fs_return> TYPE ddshretval.
*--------------------------------------------------------------*
*Selection-Screen
*--------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_vkorg TYPE vbak-vkorg OBLIGATORY.
SELECT-OPTIONS: so_vbeln FOR vbak-vbeln.
SELECTION-SCREEN: END OF BLOCK b1.
*--------------------------------------------------------------*
*Selection-Screen on Value-Request
*--------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_vbeln-low.
* Fill parameters to get values
APPEND INITIAL LINE TO lt_dynp ASSIGNING <fs_dynp>.
<fs_dynp>-fieldname = 'P_VKORG'.
*Get plant value on the selection screen
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynp
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.
READ TABLE lt_dynp ASSIGNING <fs_dynp> WITH KEY fieldname = 'P_VKORG'.
IF sy-subrc = 0.
IF <fs_dynp>-fieldvalue IS NOT INITIAL.
*Get values from the database based on plant
SELECT vbeln
vkorg
UP TO 10 ROWS
INTO TABLE it_vbak
FROM vbak WHERE vkorg EQ <fs_dynp>-fieldvalue.
IF sy-subrc = 0.
* Show Help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'VBELN'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = it_vbak
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
others = 3.
IF sy-subrc = 0.
READ TABLE lt_return ASSIGNING <fs_return> INDEX 1.
IF sy-subrc = 0.
so_vbeln-low = <fs_return>-fieldval.
ENDIF.
ENDIF.
ELSE.
MESSAGE s888(sabapdocu) WITH 'There is no Sales Document for Sales Organization' <fs_dynp>-fieldvalue.
ENDIF.
ELSE.
MESSAGE s888(sabapdocu) WITH 'Enter Sales Organization'.
ENDIF.
ENDIF.
ENDIF.
START-OF-SELECTION.
ā2013 Nov 18 5:15 AM
Hi Shan,,
Instead of this Read Statement.
READ TABLE it_dynpfields INTO wa_dynpfields
WITH KEY fieldname = 'P_VKORG'.
IF sy-subrc = 0.
wa_vbak-vbeln = wa_dynpfields-fieldvalue.
ENDIF.
Chek this if it Works,
READ TABLE it_dynpfields INTO wa_dynpfields
WITH KEY fieldname = 'P_VKORG'.
IF sy-subrc = 0.
wa_vbak-vkorg = wa_dynpfields-fieldvalue.
ENDIF.
Thanks & Regards,
Raghunadh Kodali.