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

Doubt in selection screen

Former Member
0 Likes
522

I have a requirement that when i select a personnel number from a search help in the selection screen,the name of that person should be displayed next to that personnel number field in the selection screen.how to go abt this.can anyone please provide help on this.

Thanks.

1 ACCEPTED SOLUTION
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
431

Check this one out too. I got it to update the name when user picks the employee from F4 help.



report zrich_0002 .

data dynpfields like dynpread occurs 0 with header line.

data: xpa0002 type pa0002.

selection-screen begin of block b3 with frame title text-010.
selection-screen begin of line.
selection-screen comment 1(20) text-012 for field p_pernr.
selection-screen position 32.
parameters: p_pernr type pa0002-pernr.
selection-screen position 52.
parameters: p_name(30) type c.
selection-screen end of line.
selection-screen end of block b3.


at selection-screen output.

  if not p_pernr is initial.
    select single * from pa0002 into xpa0002
                  where pernr = p_pernr.
    if sy-subrc  = 0.
      concatenate xpa0002-vorna xpa0002-nachn into p_name
                   separated by space.
    endif.
  endif.

  loop at screen.
    if screen-name = 'P_NAME'.
      screen-input = '0'.
      modify screen.
    endif.
  endloop.

at selection-screen on value-request for p_pernr.

* Internal Table for employee help
  data: begin of help_pernr occurs 0,
         pernr type pa0002-pernr,
         vorna type pa0002-vorna,
         nachn type pa0002-nachn,
        end of help_pernr.

  data: return type table of ddshretval with header line.

  select * from pa0002
           into corresponding fields of table help_pernr.

  call function 'F4IF_INT_TABLE_VALUE_REQUEST'
       exporting
            retfield         = 'PERNR'
            dynprofield      = 'P_PERNR'
            dynpprog         = sy-cprog
            dynpnr           = sy-dynnr
            value_org        = 'S'
       tables
            value_tab        = help_pernr
            return_tab       = return.


  dynpfields-fieldname = 'P_PERNR'.
  append dynpfields.
  dynpfields-fieldname = 'P_NAME'.
  append dynpfields.

  call function 'DYNP_VALUES_READ'
       exporting
            dyname               = sy-cprog
            dynumb               = sy-dynnr
            translate_to_upper   = 'X'
       tables
            dynpfields           = 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 return index 1.
  if sy-subrc = 0.

    select single * from pa0002 into xpa0002
                  where pernr = return-fieldval.
    if sy-subrc  = 0.
      concatenate xpa0002-vorna xpa0002-nachn into p_name
                   separated by space.
    endif.

    loop at dynpfields.
      case dynpfields-fieldname.
        when 'P_PERNR'.
          dynpfields-fieldvalue = return-fieldval.
        when 'P_NAME'.
          dynpfields-fieldvalue = p_name.
      endcase.
      modify dynpfields.

    endloop.

    call function 'DYNP_VALUES_UPDATE'
         exporting
              dyname     = sy-cprog
              dynumb     = sy-dynnr
         tables
              dynpfields = dynpfields
         exceptions
              others     = 8.

  endif.

Regards,

Rich Heilman

3 REPLIES 3
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
431

Here is some sample code. User will have to press enter for the name to show up.



report zrich_0002 .

data: xpa0002 type pa0002.

selection-screen begin of block b3 with frame title text-010.
selection-screen begin of line.
selection-screen comment 1(20) text-012 for field p_pernr.
selection-screen position 32.
parameters: p_pernr type pa0002-pernr.
selection-screen position 52.
parameters: p_name(30) type c.
selection-screen end of line.
selection-screen end of block b3.


at selection-screen output.

  if not p_pernr is initial.
    select single * from pa0002 into xpa0002
                  where pernr = p_pernr.
    if sy-subrc  = 0.
      concatenate xpa0002-vorna xpa0002-nachn into p_name
                   separated by space.
    endif.
  endif.

  loop at screen.
    if screen-name = 'P_NAME'.
      screen-input = '0'.
      modify screen.
    endif.
  endloop.

Regards,

Rich Heilman

Read only

0 Likes
431

Create a serach help through SE11 say ZPERNR as per your requirement.

Having fields pernr, vorna & nachn but exporting only pernr. See a few example search helps to create a search help. Test your new search help using single test.

Then use code below to declare parameter in your report.


PARAMETERS: p_pernr type pa0002-pernr 
            MATCHCODE OBJECT ZPERNR.

Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
432

Check this one out too. I got it to update the name when user picks the employee from F4 help.



report zrich_0002 .

data dynpfields like dynpread occurs 0 with header line.

data: xpa0002 type pa0002.

selection-screen begin of block b3 with frame title text-010.
selection-screen begin of line.
selection-screen comment 1(20) text-012 for field p_pernr.
selection-screen position 32.
parameters: p_pernr type pa0002-pernr.
selection-screen position 52.
parameters: p_name(30) type c.
selection-screen end of line.
selection-screen end of block b3.


at selection-screen output.

  if not p_pernr is initial.
    select single * from pa0002 into xpa0002
                  where pernr = p_pernr.
    if sy-subrc  = 0.
      concatenate xpa0002-vorna xpa0002-nachn into p_name
                   separated by space.
    endif.
  endif.

  loop at screen.
    if screen-name = 'P_NAME'.
      screen-input = '0'.
      modify screen.
    endif.
  endloop.

at selection-screen on value-request for p_pernr.

* Internal Table for employee help
  data: begin of help_pernr occurs 0,
         pernr type pa0002-pernr,
         vorna type pa0002-vorna,
         nachn type pa0002-nachn,
        end of help_pernr.

  data: return type table of ddshretval with header line.

  select * from pa0002
           into corresponding fields of table help_pernr.

  call function 'F4IF_INT_TABLE_VALUE_REQUEST'
       exporting
            retfield         = 'PERNR'
            dynprofield      = 'P_PERNR'
            dynpprog         = sy-cprog
            dynpnr           = sy-dynnr
            value_org        = 'S'
       tables
            value_tab        = help_pernr
            return_tab       = return.


  dynpfields-fieldname = 'P_PERNR'.
  append dynpfields.
  dynpfields-fieldname = 'P_NAME'.
  append dynpfields.

  call function 'DYNP_VALUES_READ'
       exporting
            dyname               = sy-cprog
            dynumb               = sy-dynnr
            translate_to_upper   = 'X'
       tables
            dynpfields           = 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 return index 1.
  if sy-subrc = 0.

    select single * from pa0002 into xpa0002
                  where pernr = return-fieldval.
    if sy-subrc  = 0.
      concatenate xpa0002-vorna xpa0002-nachn into p_name
                   separated by space.
    endif.

    loop at dynpfields.
      case dynpfields-fieldname.
        when 'P_PERNR'.
          dynpfields-fieldvalue = return-fieldval.
        when 'P_NAME'.
          dynpfields-fieldvalue = p_name.
      endcase.
      modify dynpfields.

    endloop.

    call function 'DYNP_VALUES_UPDATE'
         exporting
              dyname     = sy-cprog
              dynumb     = sy-dynnr
         tables
              dynpfields = dynpfields
         exceptions
              others     = 8.

  endif.

Regards,

Rich Heilman