cancel
Showing results for 
Search instead for 
Did you mean: 

Appraisal template download upload in excel

Former Member
0 Kudos

Hi All

We have the download upload functionality of appraisal template in PDF by offline layout setting in phap_catalog_pa. My query is can the upload and download of the template can be done in excel also. Our requirement is to download the appraisal template as configured in phap_catalog_pa in excel and then uploading back the same through portal. Please suggest if this can be done and how to proceed further.

Thanks

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi yury

Thanks a lot. Your blog is very helpful. My major concern is uploading dynamic fields which gets generated at run time . Let me know if you find any solution for the same.

Thanks

Smriti

yury_sichov
Active Contributor
0 Kudos

I have found a solution. FM HRHAP_DOC_BODY_ENHANCE

In this example the program add two dynamic elements for qualification.

REPORT  ZYS_APR_UPLOAD_DYN.

DATA:  wa_prepare TYPE zys_upload,
        g_template_id           TYPE hap_template_id,
        g_header_defaulting     TYPE flag,
        gs_return               TYPE bal_s_msg,
        gs_menu                 TYPE hap_s_menu,           "for status
        gs_appraisal_id         TYPE hap_s_appraisal_id,
        gs_doc_processing       TYPE hap_s_doc_processing,
        gs_header_texts         TYPE hap_s_header_texts,
        gs_header_status        TYPE hap_s_header_status,
        gs_header_dates         TYPE hap_s_header_dates,
        gt_header_add_data      TYPE hap_t_header_add_data,
        gs_header_display       TYPE hap_s_header_display,
        gt_header_appraiser     TYPE hap_t_header_appraiser ,
        gt_header_appraisee     TYPE hap_t_header_appraisee ,
        gt_header_p_appraiser   TYPE hap_t_header_part_appraisers ,
        gt_header_others        TYPE hap_t_header_others,
        gt_buttons              TYPE hap_t_buttons,
        gt_body_columns         TYPE hap_t_body_columns,
        gs_body_columns         LIKE LINE of gt_body_columns,
        gt_body_elements        TYPE hap_t_body_elements,
        gs_body_elements        LIKE LINE of gt_body_elements,
        gt_body_element_descr   TYPE hap_t_body_element_descr,
        gt_body_element_buttons TYPE hap_t_body_element_buttons,
        gt_body_cells           TYPE hap_t_body_cells,
        gs_body_cells           like line of gt_body_cells,
        gt_body_cell_val_values TYPE hap_t_body_cell_val_values,
        gt_body_cell_val_ranges TYPE hap_t_body_cell_val_ranges,
        gt_body_cell_val_c_like TYPE hap_t_body_cell_val_c_like,
        gt_body_cell_val_descr  TYPE hap_t_body_cell_val_descr,
        gt_body_cell_notes      TYPE hap_t_body_cell_notes,
        ls_header_appraiser TYPE hap_s_header_appraiser,
        ls_header_appraisee TYPE hap_s_header_appraisee.

  DATA: COUNTER(5) type n VALUE '00003',
         lv_template_id    TYPE  objektid,
         date type sy-datum,
         lv_pernr TYPE pernr_d,
         s_return TYPE  bal_s_msg,
         lt_status_notes TYPE  hap_t_status_note,
         lv_error TYPE flag,
         ls_wd_return   TYPE bal_s_msg,
         ET_BODY_ELEMENTS_ADD  type  HAP_T_BODY_ELEMENTS_ADD,
         wa_BODY_ELEMENTS_ADD like line of ET_BODY_ELEMENTS_ADD.

START-OF-SELECTION.

     gs_header_dates-ap_start_date     = '01.01.2014'.
     "endda
     gs_header_dates-ap_end_date      = '31.12.2014'.
     gs_header_dates-ap_date_set      = '31.12.2014'.
     "APPRAISER
     FREE gt_header_appraiser.
     ls_header_appraiser-plan_version = '01'.
     ls_header_appraiser-type         = 'P'.
     lv_pernr = '1000800'."wa_prepare-value.
     ls_header_appraiser-id = lv_pernr.
     APPEND ls_header_appraiser TO gt_header_appraiser .
     "APPRAISEE
     FREE gt_header_appraisee.
     ls_header_appraisee-plan_version = '01'.
     ls_header_appraisee-type         = 'P'.
     lv_pernr = '1000800'."wa_prepare-value.
     ls_header_appraisee-id = lv_pernr.
     APPEND ls_header_appraisee TO gt_header_appraisee .

wa_BODY_ELEMENTS_ADD-NEW_ELEMENT_TYPE = 'Q'.
wa_BODY_ELEMENTS_ADD-NEW_ELEMENT_ID = '50000392'.
APPEND wa_BODY_ELEMENTS_ADD to et_BODY_ELEMENTS_ADD.
wa_BODY_ELEMENTS_ADD-NEW_ELEMENT_ID = '50000399'.
APPEND wa_BODY_ELEMENTS_ADD to et_BODY_ELEMENTS_ADD.
   CALL FUNCTION 'HRHAP_DOC_BODY_ENHANCE'
     EXPORTING
       row_iid                   = '0001'"wd_comp_controller->enhance_row_iid
       plan_version              = '01'
       s_appraisal_id            = gs_appraisal_id
       t_header_appraiser        = gt_header_appraiser
       t_header_appraisee        = gt_header_appraisee
       t_header_part_appraisers  = gt_header_p_appraiser
       t_header_others           = gt_header_others
       s_header_dates            = gs_header_dates
       s_header_status           = gs_header_status
       t_body_columns            = gt_body_columns
*     FREE_ENHANCEMENT          = ' '
       trusted_call              = 'X'
       enhancement_type          = ' '
       t_body_elements_add       = et_body_elements_add
*     T_BODY_ELEMENTS_STRUC_ADD =
     IMPORTING
       s_return                  = ls_wd_return
     CHANGING
       s_doc_processing          = gs_doc_processing
       t_body_elements           = gt_body_elements
       t_body_element_descr      = gt_body_element_descr
       t_body_element_buttons    = gt_body_element_buttons
       t_body_cells              = gt_body_cells
       t_body_cell_notes         = gt_body_cell_notes
       t_body_cell_val_values    = gt_body_cell_val_values
       t_body_cell_val_ranges    = gt_body_cell_val_ranges
       t_body_cell_val_c_like    = gt_body_cell_val_c_like
       t_body_cell_val_descr     = gt_body_cell_val_descr.
     "Saving document
     CALL FUNCTION 'HRHAP_DOC_UPDATE_BODY_AND_SAVE'
       EXPORTING
         plan_version             = '01'
       IMPORTING
         s_return                 = s_return
       CHANGING
         s_appraisal_id           = gs_appraisal_id
         s_doc_processing         = gs_doc_processing
         t_header_appraiser       = gt_header_appraiser[]
         t_header_appraisee       = gt_header_appraisee[]
         t_header_part_appraisers = gt_header_p_appraiser[]
         t_header_others          = gt_header_others
         s_header_texts           = gs_header_texts
         s_header_dates           = gs_header_dates
         s_header_status          = gs_header_status
         s_header_display         = gs_header_display
         t_body_columns           = gt_body_columns
         t_body_elements          = gt_body_elements
         t_body_cells             = gt_body_cells[]
         t_body_cell_notes        = gt_body_cell_notes
         t_status_notes           = lt_status_notes.
     IF s_return IS NOT INITIAL  .
       WRITE: / s_return-msgid , s_return-msgty ,s_return-msgno  ,s_return-msgv1,  s_return-msgv2, s_return-msgv3 .
     ENDIF.
     counter = counter + 1.

Former Member
0 Kudos

Hi Yury

I have few dynamic fields in the template , for example , training and qualification catalog , which gets open up after clicking on add button . Can that be build in the excel as well.

Thanks

MartinHastik
Active Participant
0 Kudos

Hi.

You have to create a report which reads all fields of your appraisal template: You can do it e.g with function module HRHAP_DOCUMENT_GET_DETAIL ( all dynamic fields will be included ) . After that this report has to create a excel. There are a view ways to create excel from abap...PLease search in scn to find the way which fits best for you.

best regards

Martin Hastik

yury_sichov
Active Contributor
0 Kudos

You can do this. We uploaded appraisal documents from Excel to SAP and vise versa.

yury_sichov
Active Contributor
0 Kudos

I wrote a simple sample program to upload appraisal documents from XLS to SAP.

Dynamic fields are not supported now,  i can find out...

yury_sichov
Active Contributor
0 Kudos

You need to develop this feature.