关键技术:abap2xls-具体的使用方法参考官方提供的demo
HR照片读取-调用函数HR_IMAGE_EXISTS\ALINK_RFC_TABLE_GET等
参考下图关键代码:
具体实现代码:
*&---------------------------------------------------------------------*
*& Form FRM_DOWN_LOAD_XLS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_down_load_xls .
DATA: lv_formkey LIKE wwwdatatab,
lv_dir TYPE string,
lv_rc TYPE sy-subrc,
lv_temp TYPE c,
lv_row TYPE i,
lv_photo TYPE xstring,
lv_dw TYPE char80,
lo_drawing TYPE REF TO zcl_excel_drawing,
lo_reader TYPE REF TO zif_excel_reader,
lo_writer TYPE REF TO zif_excel_writer,
lv_filename LIKE rlgrap-filename,
lo_excel TYPE REF TO zcl_excel.
lv_formkey = 'MIZHRRJT00080_2'.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = '请选择模版存放的路径'
CHANGING
selected_folder = lv_dir.
IF lv_dir IS INITIAL.
RETURN.
ENDIF.
LOOP AT lt_data INTO DATA(ls_data) WHERE flag = 'X'.
CLEAR: lv_filename.
lv_filename = lv_dir && '\' && |员工基本情况登记表_{ ls_data-ename }.XLS|.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lv_formkey
destination = lv_filename
IMPORTING
rc = lv_rc
CHANGING
temp = lv_temp.
IF lv_rc NE 0.
MESSAGE '下载模板失败' TYPE 'E'.
EXIT.
ENDIF.
CONCATENATE '单位:' lt_data-name1
' 填表日期:'sy-datum+0(4) '年' sy-datum+4(2) '月' sy-datum+6(2) '日' INTO lv_dw SEPARATED BY space.
lo_reader = NEW zcl_excel_reader_2007( ).
lo_writer = NEW zcl_excel_writer_2007( ).
lo_excel = lo_reader->load_file( lv_filename ).
"Use template for charts
lo_excel->use_template = abap_true.
DATA(lo_worksheet) = lo_excel->get_active_worksheet( ).
"单位
lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = lv_dw ).
"员工照片
CLEAR: lv_photo.
PERFORM frm_get_photo USING ls_data-pernr CHANGING lv_photo.
IF lv_photo IS NOT INITIAL.
lo_drawing = lo_excel->add_new_drawing( ).