Skip to end of metadata
Go to start of metadata

Loading Dropdown value in HCM Forms from Generic Services

 In design process HRASR_DT create the field for the dropdown for example to load the vacant position PLANS.

Create a Generic service for your process and bind the service to your process.

 

Add the following interfaces into the Class.

IF_BADI_INTERFACE

IF_HRASR00GEN_SERVICE

Create an attribute for the dropdown in the generic service attribute.
Create a method GET_FIELDS_OF_OPERATION in the Generic service with following parameter.


Do the following coding in GET_FIELDS_OF_OPERATION method.

  CLEAR fieldnames.
  CASE operation.
    WHEN c_oper_set_init_data. "operation for the
      APPEND c_fieldname_position_new TO fieldnames.
    WHEN OTHERS.
      ASSERT 1 = 0"called for an operation, that is not supported

  ENDCASE.

Do the following coding in IF_HRASR00GEN_SERVICE~GET_FIELD_INFO

  DATA field_info TYPE hrasr00gs_field_info.
  DATA service_field TYPE fieldname.

  CLEAR field_infos.

  LOOP AT service_fields INTO service_field.

    CASE service_field.
      WHEN c_fieldname_position_new.
        field_info-fieldname = c_fieldname_position_new.
        field_info-field_data_element_name = c_dtel_position_new.
        field_info-supports_value_help = false.
        field_info-supports_default_value = true.
        APPEND field_info TO field_infos.
    ENDCASE.

  ENDLOOP.

You have to build custom function module to retrieve the vacant list of positions for OM. In the generic service class in the method

IF_HRASR00GEN_SERVICE~GET_HELP_VALUES load the value for the dropdown with the help of the function module.

Define the following in private section

  types:
    begin of t_position,
           position_id type plans,
           position_text type stext,
         end of t_position .
  types:
    t_position_tab type standard table of t_position .

Do the coding in IF_HRASR00GEN_SERVICE~GET_HELP_VALUES.

  DATA service_field_value_wa TYPE hrasr00gensrv_dataset.
  DATA field_catalog TYPE hrpad_f4help_table_column_tab.
  DATA field_catalog_wa TYPE hrpad_f4help_table_column.

  DATA positions TYPE t_position_tab.
  DATA positions_wa TYPE t_position.
  DATA positions_ref TYPE REF TO data.
  FIELD-SYMBOLS <positions> TYPE ANY.

  FIELD-SYMBOLS <help_dataset_waTYPE hrasr00gs_help_dataset.
  FIELD-SYMBOLS <service_field_value_waTYPE hrasr00gensrv_dataset.

  LOOP AT help_datasets ASSIGNING <help_dataset_wa>.
    CASE <help_dataset_wa>-fieldname.
      WHEN c_fieldname_position_new.              "open positions

*       create field catalog
        CLEAR field_catalog.
        CLEAR field_catalog_wa.
        field_catalog_wa-fieldname = c_column_name_pos_id.
        field_catalog_wa-headertitle = 'Position No'.
        APPEND field_catalog_wa TO field_catalog.

        CLEAR field_catalog_wa.
        field_catalog_wa-fieldname = c_column_name_pos_text.
        field_catalog_wa-headertitle = 'Description'.
        APPEND field_catalog_wa TO field_catalog.

        <help_dataset_wa>-field_catalog = field_catalog.

        CALL FUNCTION 'ZF_VACANCY_LIST' "Custom Function Module
          EXPORTING
            i_user_id      = sy-uname
*          IMPORTING
*            {}e_return       = bapi_return
          TABLES
            t_vacancy_list = positions.

        LOOP AT positions INTO positions_wa.
          CONCATENATE positions_wa-position_id positions_wa-position_text INTO positions_wa-position_text SEPARATED BY space.
          MODIFY positions FROM positions_wa.
        ENDLOOP.

*       create reference to table with positions (available outside this method)
        CREATE DATA positions_ref TYPE t_position_tab.
        ASSIGN positions_ref->* TO <positions>.
        <positions> = positions.
        <help_dataset_wa>-data = positions_ref.

*       column names in data table
        <help_dataset_wa>-keycolumnname = c_column_name_pos_id.
        <help_dataset_wa>-valuecolumnname = c_column_name_pos_text.
    ENDCASE.
  ENDLOOP.

Bind the attribute in the dropdown in SFP transaction.

3 Comments

  1. Former Member

    Hi,

    Thanks for the nice blog. I could see that a new method GET_FIELDS_OF_OPERATION is defined and implemented.

    But I didn't understand how / when does this method get called? You didn't call this method explicitly.

    Thanks,

    Somu

    1. Former Member

      Hi Somu,

      This method is designed just to make life easier and can be used in other methods such as IF_HRASR00GEN_SERVICE~DO_OPERATIONS and IF_HRASR00GEN_SERVICE~GET_OPERATIONS to get relevant fields for current operation. It is simple for changing if your relevant fields will be described only once.

      Best Regards,
      Michael

       

    2. Former Member

      Hi again Somu,

      Please use http://scn.sap.com/docs/DOC-35622 as example of using GET_FIELDS_OF_OPERATION.

       Best Regards,
      Michael