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


 

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





Excel SAP Download