..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


 

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