Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Selection-screen problem

Former Member
0 Likes
834

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...

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
801

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......

8 REPLIES 8
Read only

Former Member
0 Likes
801

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 !!!

Read only

0 Likes
801

Thanks for ur help...

But what to pass in tht function?

Read only

Former Member
0 Likes
801

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

Read only

Former Member
0 Likes
801

hi,

Use At selection-screen on value request.

Read only

Pawan_Kesari
Active Contributor
0 Likes
801

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.
                  

Read only

0 Likes
801

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

Read only

Former Member
0 Likes
802

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......

Read only

0 Likes
801

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.