‎2007 Jul 16 9:47 AM
Hi all,
I am creating one report.
I have Company code and Customer as selection screen.
Now i want that only that customer should come ( when i press F4 on Customer)
whose company code is enterd company code....
Is it posible?
Thanks in advance....
Its quite urgent...
‎2007 Jul 16 1:56 PM
ok list is coming perfact now...
i have made changes like below.
but still i cant fill my parameter,means when i double click on kunnr, its not coming in parameter and what to do to get in kunnr-high?
TYPES : BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF ty_kna1.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE ,
i_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE .
DATA : BEGIN OF value_tab OCCURS 0,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF value_tab.
DATA :field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR kunnr-low.
CHECK NOT bukrs IS INITIAL .
CLEAR: dyfields, dyfields.
REFRESH: dyfields, dyfields.
dyfields-fieldname = 'BUKRS'.
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
READ TABLE dyfields INDEX 1.
SELECT kna1kunnr kna1name1
INTO TABLE i_kna1
FROM kna1 INNER JOIN vbrk
ON kna1kunnr = vbrkkunag
WHERE vbrk~bukrs = dyfields-fieldvalue.
SORT i_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM i_kna1.
CLEAR value_tab.
CLEAR field_tab.
CLEAR return_tab.
REFRESH value_tab.
REFRESH field_tab.
REFRESH return_tab.
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'NAME1'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
LOOP AT i_kna1 .
value_tab-kunnr = i_kna1-kunnr.
APPEND value_tab.
CLEAR value_tab.
value_tab-name1 = i_kna1-name1.
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.
kunnr = return_tab-fieldval.
ENDIF.
Thanks in advance......
‎2007 Jul 16 9:53 AM
Yes Dhwani,
I faced a similiar problem.
What you have to do is to read the value of company code from the selection screen
At selection screen on value request for Customer .
Call function module dynp_values_read .
Reward if useful !!!
‎2007 Jul 16 10:00 AM
‎2007 Jul 16 9:55 AM
Hi...,
Check this program .... which fulfills similar requirement...
tables:mara,makt,mseg.
parameters: p_bukrs type t001-bukrs,
p_butxt type t001-butxt,
p_ort01 type t001-ort01,
p_land1 type t001-land1.
data: dynfields type table of dynpread with header line.
data: return type table of ddshretval with header line.
at selection-screen on value-request for p_bukrs.
call function 'F4IF_FIELD_VALUE_REQUEST'
exporting
tabname = 'T001'
fieldname = 'BUKRS'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'P_BUKRS'
tables
return_tab = return
exceptions
field_not_found = 1
no_help_for_field = 2
inconsistent_help = 3
no_values_found = 4
others = 5.
refresh dynfields.
read table return with key fieldname = 'P_BUKRS'.
Add it back to the dynpro.
dynfields-fieldname = return-retfield.
dynfields-fieldvalue = return-fieldval.
append dynfields.
Get the company code from db and add to dynpro
data: xt001 type t001.
clear xt001.
select single * into xt001
from t001
where bukrs = return-fieldval.
dynfields-fieldname = 'P_BUTXT'.
dynfields-fieldvalue = xt001-butxt.
append dynfields.
dynfields-fieldname = 'P_ORT01'.
dynfields-fieldvalue = xt001-ort01.
append dynfields.
dynfields-fieldname = 'P_LAND1'.
dynfields-fieldvalue = xt001-land1.
append dynfields.
Update the dynpro values.
call function 'DYNP_VALUES_UPDATE'
exporting
dyname = sy-cprog
dynumb = sy-dynnr
tables
dynpfields = dynfields
exceptions
others = 8.
regards,
sai ramesh
‎2007 Jul 16 9:55 AM
‎2007 Jul 16 10:20 AM
Check below program with parameter Country and Customer.
REPORT zpwtest1 NO STANDARD PAGE HEADING LINE-SIZE 200.
TYPES : BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr,
END OF ty_kna1.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE ,
i_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE .
DATA: BEGIN OF value_tab OCCURS 0,
name(10),
END OF value_tab.
DATA :field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
PARAMETERS : p_land1 TYPE kna1-land1 ,
p_kunnr TYPE kna1-kunnr .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_kunnr.
CHECK NOT p_land1 IS INITIAL .
CLEAR: dyfields[], dyfields.
dyfields-fieldname = 'P_LAND1'.
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
READ TABLE dyfields INDEX 1.
SELECT kunnr
INTO TABLE i_kna1
from kna1
WHERE land1 EQ dyfields-fieldvalue.
REFRESH value_tab[].
REFRESH field_tab[].
REFRESH return_tab[].
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
LOOP AT i_kna1 .
value_tab-name = i_kna1-kunnr.
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_kunnr = return_tab-fieldval.
ENDIF.
‎2007 Jul 16 1:47 PM
Hey Thanks a lot...
Its working but with some problem
as i want to display kunnr along with its name so that user can understand which customet he is selecting...
so i have modified ur code
TYPES : BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF ty_kna1.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE ,
i_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE .
DATA : BEGIN OF value_tab OCCURS 0,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF value_tab.
DATA :field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR kunnr-low.
CHECK NOT bukrs IS INITIAL .
CLEAR: dyfields, dyfields.
REFRESH: dyfields, dyfields.
dyfields-fieldname = 'BUKRS'.
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
READ TABLE dyfields INDEX 1.
SELECT kna1kunnr kna1name1
INTO TABLE i_kna1
FROM kna1 INNER JOIN vbrk
ON kna1kunnr = vbrkkunag
WHERE vbrk~bukrs = dyfields-fieldvalue.
SORT i_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM i_kna1.
CLEAR value_tab[].
CLEAR field_tab[].
CLEAR return_tab[].
REFRESH value_tab[].
REFRESH field_tab[].
REFRESH return_tab[].
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'NAME1'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
LOOP AT i_kna1 .
value_tab-kunnr = i_kna1-kunnr.
value_tab-name1 = i_kna1-name1.
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.
but here problem is...
In my second field means in NAME1 kunnr and name1 both coming means i have 6 records which match with condition than i get only 3 rows
like....
Customer Name1
110121 0000110126 HIRAPAN
110129 0000110206 ..............
110252 (Nothing as no more customer)
And when i double click on record (row) ,name1 got selected instead of customer...
Can u tell me What is the problem?
Thanks
‎2007 Jul 16 1:56 PM
ok list is coming perfact now...
i have made changes like below.
but still i cant fill my parameter,means when i double click on kunnr, its not coming in parameter and what to do to get in kunnr-high?
TYPES : BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF ty_kna1.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE ,
i_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE .
DATA : BEGIN OF value_tab OCCURS 0,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF value_tab.
DATA :field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR kunnr-low.
CHECK NOT bukrs IS INITIAL .
CLEAR: dyfields, dyfields.
REFRESH: dyfields, dyfields.
dyfields-fieldname = 'BUKRS'.
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
READ TABLE dyfields INDEX 1.
SELECT kna1kunnr kna1name1
INTO TABLE i_kna1
FROM kna1 INNER JOIN vbrk
ON kna1kunnr = vbrkkunag
WHERE vbrk~bukrs = dyfields-fieldvalue.
SORT i_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM i_kna1.
CLEAR value_tab.
CLEAR field_tab.
CLEAR return_tab.
REFRESH value_tab.
REFRESH field_tab.
REFRESH return_tab.
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'NAME1'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
LOOP AT i_kna1 .
value_tab-kunnr = i_kna1-kunnr.
APPEND value_tab.
CLEAR value_tab.
value_tab-name1 = i_kna1-name1.
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.
kunnr = return_tab-fieldval.
ENDIF.
Thanks in advance......
‎2007 Jul 16 2:37 PM
Try this... u can modularize to reduce the number of lines of code..
REPORT zpwtest .
TABLES : t001, kna1 .
PARAMETERS : bukrs TYPE t001-bukrs .
SELECT-OPTIONS kunnr FOR kna1-kunnr .
TYPES : BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF ty_kna1.
DATA : dyfields LIKE dynpread OCCURS 1 WITH HEADER LINE ,
i_kna1 TYPE TABLE OF ty_kna1 WITH HEADER LINE .
DATA : BEGIN OF value_tab OCCURS 0,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF value_tab.
DATA :field_tab LIKE dfies OCCURS 0 WITH HEADER LINE.
DATA : return_tab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR kunnr-low.
CLEAR: dyfields, dyfields.
REFRESH: dyfields, dyfields.
dyfields-fieldname = 'BUKRS'.
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
READ TABLE dyfields INDEX 1.
CHECK NOT dyfields-fieldvalue IS INITIAL .
TRANSLATE dyfields-fieldvalue TO UPPER CASE .
SELECT kna1~kunnr kna1~name1
INTO TABLE i_kna1
FROM kna1 INNER JOIN vbrk
ON kna1~kunnr = vbrk~kunag
WHERE vbrk~bukrs = dyfields-fieldvalue.
SORT i_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM i_kna1.
CLEAR value_tab.
CLEAR field_tab.
CLEAR return_tab.
REFRESH value_tab.
REFRESH field_tab.
REFRESH return_tab.
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'NAME1'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
LOOP AT i_kna1 .
value_tab-kunnr = i_kna1-kunnr.
APPEND value_tab.
CLEAR value_tab.
value_tab-name1 = i_kna1-name1.
APPEND value_tab.
ENDLOOP.
field_tab-fieldname = 'KUNNR' .
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.
CLEAR: dyfields, dyfields.
REFRESH: dyfields, dyfields.
dyfields-fieldname = 'KUNNR-LOW'.
dyfields-fieldvalue = return_tab-fieldval .
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR kunnr-high .
CLEAR: dyfields, dyfields.
REFRESH: dyfields, dyfields.
dyfields-fieldname = 'BUKRS'.
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
READ TABLE dyfields INDEX 1.
CHECK NOT dyfields-fieldvalue IS INITIAL .
TRANSLATE dyfields-fieldvalue TO UPPER CASE .
SELECT kna1~kunnr kna1~name1
INTO TABLE i_kna1
FROM kna1 INNER JOIN vbrk
ON kna1~kunnr = vbrk~kunag
WHERE vbrk~bukrs = dyfields-fieldvalue.
SORT i_kna1 BY kunnr.
DELETE ADJACENT DUPLICATES FROM i_kna1.
CLEAR value_tab.
CLEAR field_tab.
CLEAR return_tab.
REFRESH value_tab.
REFRESH field_tab.
REFRESH return_tab.
field_tab-fieldname = 'KUNNR'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
field_tab-fieldname = 'NAME1'.
field_tab-tabname = 'KNA1'.
APPEND field_tab.
LOOP AT i_kna1 .
value_tab-kunnr = i_kna1-kunnr.
APPEND value_tab.
CLEAR value_tab.
value_tab-name1 = i_kna1-name1.
APPEND value_tab.
ENDLOOP.
field_tab-fieldname = 'KUNNR' .
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.
CLEAR: dyfields, dyfields.
REFRESH: dyfields, dyfields.
dyfields-fieldname = 'KUNNR-HIGH'.
dyfields-fieldvalue = return_tab-fieldval .
APPEND dyfields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = dyfields.
ENDIF.