* Version 0003                                      Date: 20-Oct-2004
* Subroutine pool. Supports ON VALUE REQUEST FOR activity group (role)
program zf4agr.

constants:
  c_prgr_show_agr value 'A'
, c_prgr_edit_agr value 'X'
.
*-----------------------------------------------------------------------
form on_value_request_role using repid   like sy-repid
                                 dynpro  like sy-dynnr
                                 fldname like dynpread-fieldname
                        changing role    like agr_define-agr_name
                                 .
  data:
    answer     like smensapnew-customized
* , g_agr_name like agr_define-agr_name
  .
  perform dynpro_get_agr using repid dynpro fldname changing role.
  call function 'PRGN_F4_HELP_FOR_SEL_AGR'
       exporting
         ranges_parameter_for_select =  role
         single_activity_groups      = 'X'
         collective_activity_groups  = 'X'
*        target_system               =  global_rfc_dest
*        restrict_to_this_child_agr  =  g_agr_name
*        show_popup                  = 'X'
       importing
         agr_name                    =  role
         answer                      =  answer
         .
  if answer = 'A' or role = space.
*--'Action was cancelled'
    message s232(s#).
    exit.
  endif.
endform. "ON_VALUE_REQUEST_ROLE
*-----------------------------------------------------------------------
form dynpro_get_agr using repid        like sy-repid
                          dynpro       like sy-dynnr
                          fldname      like dynpread-fieldname
                 changing dyn_agr_name like agr_define-agr_name
                          .
  data dynpfields like dynpread occurs 0 with header line.

  dynpfields-fieldname =  fldname.         append dynpfields.
* dynpfields-fieldname = 'AGR_NAME_NEU'.   append dynpfields.
* dynpfields-fieldname = 'SINGLE_AGR'.     append dynpfields.
* dynpfields-fieldname = 'COLLECTIVE_AGR'. append dynpfields.

  call function 'DYNP_VALUES_READ'
       exporting
         dyname                   =  repid
         dynumb                   =  dynpro
         translate_to_upper       = 'X'
*        request                  = ' '
*        perform_conversion_exits = ' '
*        perform_input_conversion = ' '
       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
         others                   = 10
         .
  if sy-subrc <> 0.
*---Do nothing...
  endif.

  read table dynpfields index 1. dyn_agr_name   = dynpfields-fieldvalue.
* read table dynpfields index 2. single_agr     = dynpfields-fieldvalue.
* read table dynpfields index 3. collective_agr = dynpfields-fieldvalue.

  set locale language sy-langu.
  translate dynpfields-fieldvalue to upper case.    "#EC TRANSLANG
  set locale language space.
endform. "DYNPRO_GET_AGR
*-----------------------------------------------------------------------
form show_edit_role using v_role like agr_define-agr_name
                          v_mode type c
                          .
  call function 'PRGN_SHOW_EDIT_AGR'
       exporting
         agr_name      =  v_role
         mode          =  v_mode " '1' - ?, 'X' - Change, 'A' - Display
         screen        = '1'
*        sicht         = '1'
       exceptions
         agr_not_found =  1
         others        =  2
         .
  if sy-subrc <> 0.
*   fehler
    if sy-subrc = 1.
      message w410(s#) with v_role. "In list type 'W' = 'E' (Stop here)
    endif.
  endif.
endform. "SHOW_EDIT_ROLE
*-----------------------------------------------------------------------
form view_role using v_role like agr_define-agr_name.
  perform show_edit_role using v_role c_prgr_show_agr.
endform. "VIEW_ROLE
*-----------------------------------------------------------------------
form edit_role using v_role like agr_define-agr_name.
  perform show_edit_role using v_role c_prgr_edit_agr.
endform. "EDIT_ROLE
*-----------------------------------------------------------------------
