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

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

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


REPORT z_admission_form.


* declare parameters

PARAMETERS p_pernr TYPE pernr_d OBLIGATORY .


* declare the context

DATA gs_context TYPE zcontext_admission_form .


* fill the context

PERFORM fill_context .


* call the form

CALL FUNCTION 'ZXLWB_CALLFORM'

EXPORTING

iv_formname = 'ADMISSION_FORM'

iv_context_ref = gs_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_pa0002 TYPE pa0002 ,

ls_pa0006 TYPE pa0006 ,

lv_years TYPE i .


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

SELECT SINGLE *

INTO ls_pa0002

FROM pa0002

WHERE pernr EQ p_pernr

AND begda LE sy-datum

AND endda GE sy-datum .


*------------ read address

SELECT SINGLE *

INTO ls_pa0006

FROM pa0006

WHERE pernr EQ p_pernr

AND begda LE sy-datum

AND endda GE sy-datum .



*------------ form fields


* field: Name

CONCATENATE ls_pa0002-vorna

ls_pa0002-nachn

INTO gs_context-name SEPARATED BY space .

TRANSLATE gs_context-name TO UPPER CASE .


* field: Name at birth

gs_context-name_at_birth = ls_pa0002-name2 .

TRANSLATE gs_context-name_at_birth TO UPPER CASE .


* field: Date of birth

CONCATENATE ls_pa0002-gbdat+6(2)

ls_pa0002-gbdat+4(2)

ls_pa0002-gbdat+0(4)

INTO gs_context-date_of_birth .


* field: Age

CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'

EXPORTING

begda = ls_pa0002-gbdat

endda = sy-datum

IMPORTING

c_years = lv_years.

gs_context-age = lv_years .


* field: Sex

CASE ls_pa0002-gesch .

WHEN '1' . gs_context-sex = 'M' . " -->> Male

WHEN '2' . gs_context-sex = 'F' . " -->> Female

ENDCASE .


* field: Personal address

CONCATENATE ls_pa0006-stras

ls_pa0006-locat

ls_pa0006-ort01

ls_pa0006-ort02

ls_pa0006-state

ls_pa0006-pstlz

ls_pa0006-land1

INTO gs_context-personal_address SEPARATED BY space .


CONDENSE gs_context-personal_address .

TRANSLATE gs_context-personal_address TO UPPER CASE .


* field: Contact number

gs_context-contact_number = ls_pa0006-telnr .


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

PERFORM get_photo_rawdata

USING p_pernr

CHANGING gs_context-photo_rawdata .


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

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