..3 Программа печати

Здесь находится nugget для инсталляции объектов через SAPLINK .

Создайте отчет Z_EMPLOYEELIST и скопируйте в него этот код:


REPORT z_employeelist .


* declare the context

DATA gt_context TYPE zcontext_employeelist .


* fill the context

PERFORM fill_context .


* call the form

CALL FUNCTION 'ZXLWB_CALLFORM'

EXPORTING

iv_formname = 'EMPLOYEELIST'

iv_context_ref = gt_context

EXCEPTIONS

process_terminated = 1

OTHERS = 2.

IF sy-subrc NE 0 .

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 .

ENDIF .


*&---------------------------------------------------------------------*

*& Form fill_context

*&---------------------------------------------------------------------*

FORM fill_context .

DATA:

ls_pa0001 TYPE pa0001 ,

lt_pa0001 TYPE STANDARD TABLE OF pa0001 ,

ls_pa0002 TYPE pa0002 ,

lv_plvar TYPE objec-plvar ,

ls_context_row TYPE zcontext_employeelist_row .


CALL FUNCTION 'RH_GET_PLVAR'

IMPORTING

plvar = lv_plvar

EXCEPTIONS

OTHERS = 1.


* loop at personal assignment

SELECT *

INTO TABLE lt_pa0001

FROM pa0001

WHERE begda LE sy-datum

AND endda GE sy-datum .


LOOP AT lt_pa0001 INTO ls_pa0001 .

CLEAR ls_context_row .


*------------ read text of position

CALL FUNCTION 'RH_READ_OBJECT'

EXPORTING

plvar = lv_plvar

otype = 'S'

objid = ls_pa0001-plans

begda = ls_pa0001-begda

endda = ls_pa0001-endda

IMPORTING

stext = ls_context_row-position

EXCEPTIONS

OTHERS = 0.


*------------ read personal data

SELECT SINGLE *

INTO ls_pa0002

FROM pa0002

WHERE pernr EQ ls_pa0001-pernr

AND begda LE sy-datum

AND endda GE sy-datum .

ls_context_row-emp_number = ls_pa0002-pernr .

ls_context_row-last_name = ls_pa0002-nachn .

ls_context_row-first_name = ls_pa0002-vorna .

ls_context_row-birth_date = ls_pa0002-gbdat .

ls_context_row-nationality = ls_pa0002-natio .


*------------ read photo of the employee (get JPG-file as rawdata)

PERFORM get_photo_rawdata

USING ls_pa0002-pernr

CHANGING ls_context_row-photo_rawdata .


CHECK ls_context_row-photo_rawdata IS NOT INITIAL .

APPEND ls_context_row TO gt_context .


ENDLOOP .


ENDFORM . "fill_context


*&---------------------------------------------------------------------*

*& Form get_photo_rawdata

*&---------------------------------------------------------------------*

* read photo of the employee (get JPG-file as rawdata)

*----------------------------------------------------------------------*

FORM get_photo_rawdata USING pv_pernr TYPE pernr-pernr

CHANGING cv_photo_rawdata TYPE xstring .


CLEAR cv_photo_rawdata .

DATA:

lv_objkey TYPE swotobjid-objkey ,

ls_connections TYPE bdn_con ,

lt_connections TYPE STANDARD TABLE OF bdn_con .

DATA:

lv_archiv_id TYPE toaar-archiv_id ,

lv_document_class TYPE toadv-doc_type ,

lv_document_type TYPE toav0-ar_object ,

lv_archiv_doc_id TYPE sapb-sapadokid ,

lv_fullpath TYPE char255 .

DATA:

lv_fullpath_string TYPE string ,

lt_photo_rawdata TYPE STANDARD TABLE OF w3mime ,

lv_photo_filelength TYPE i ,

lv_rc TYPE i .


lv_objkey = pv_pernr .

CALL FUNCTION 'BDS_ALL_CONNECTIONS_GET'

EXPORTING

classname = 'PREL'

classtype = 'CL'

objkey = lv_objkey

TABLES

all_connections = lt_connections

EXCEPTIONS

OTHERS = 5.


CHECK sy-subrc EQ 0 .

LOOP AT lt_connections INTO ls_connections

WHERE doc_type EQ 'HRICOLFOTO'

OR doc_type EQ 'HRIEMPFOTO' .

lv_archiv_id = ls_connections-contrep .

lv_document_class = ls_connections-docuclass .

lv_document_type = ls_connections-doc_type .

lv_archiv_doc_id = ls_connections-bds_docid .

EXIT .

ENDLOOP .

CHECK sy-subrc EQ 0 .


CALL FUNCTION 'ALINK_DOCUMENTS_GET_CLIENT'

EXPORTING

archiv_id = lv_archiv_id

document_class = lv_document_class

document_type = lv_document_type

archiv_doc_id = lv_archiv_doc_id

IMPORTING

retfilename = lv_fullpath

EXCEPTIONS

OTHERS = 2.

CHECK sy-subrc EQ 0

AND lv_fullpath IS NOT INITIAL .


lv_fullpath_string = lv_fullpath .

cl_gui_frontend_services=>gui_upload(

EXPORTING filename = lv_fullpath_string

filetype = 'BIN'

IMPORTING filelength = lv_photo_filelength

CHANGING data_tab = lt_photo_rawdata ) .


CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'

EXPORTING

input_length = lv_photo_filelength

IMPORTING

buffer = cv_photo_rawdata

TABLES

binary_tab = lt_photo_rawdata.


cl_gui_frontend_services=>file_delete(

EXPORTING filename = lv_fullpath_string

CHANGING rc = lv_rc ) .


ENDFORM . "get_photo_rawdata

Результат работы программы: