Print carrier labels
With the document output mode 'RETURN', the carrier labels are provided as a byte stream. One can sent this byte stream to a printer from within SAP.
Please note: Responsibility for printers, their settings and proper handling lies is within your IT operation. AEB just provides the label stream in the appropriate format for the printer. Examples provided here just describe one possible approach, technical availabilities may vary dependend on the infrastructure of your SAP system.
There are different options to print the carrier labels, check this document for an overview: https://rz3.aeb.de/docudata/other/carrier-connect/printing-with-carrier-connect/en-US/index.html
This example outlines the printing when executing an output type for an outbound delivery:
*&---------------------------------------------------------------------*
*& Report ZAEB_CCO_DLV_MSG
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zaeb_cco_dlv_msg.
TABLES: nast.
DATA: ls_likp TYPE likp,
lt_lips TYPE /aeb/01_lipss,
lt_vekp TYPE /aeb/01_vekps,
ls_vekp TYPE vekp,
lt_vbpa TYPE /aeb/01_vbpas,
lt_vepo TYPE /aeb/01_vepos,
lt_vepo_total TYPE /aeb/01_vepos,
lt_venums TYPE hum_venum_t,
ls_venum TYPE hum_venum,
lt_objects TYPE hum_object_t,
ls_object TYPE hum_object,
lv_has_error TYPE /aeb/pa_pb_has_error,
lv_has_warning TYPE /aeb/pa_pb_has_warning,
lt_messages TYPE string,
lt_package_results TYPE /aeb/pa_pb_dl_pkg_pr_dos
.
FIELD-SYMBOLS: <ls_package_result> TYPE /aeb/pa_pb_dl_pkg_pr_do,
<ls_document> TYPE /aeb/pa_pb_dl_doc_do
.
START-OF-SELECTION.
FORM export_synchron USING returncode LIKE sy-subrc us_screen TYPE c. "#EC *
"nast-objky
SELECT SINGLE * FROM likp WHERE vbeln = @nast-objky INTO @DATA(ls_likp).
SELECT * FROM lips WHERE vbeln = @nast-objky INTO TABLE @lt_lips.
ls_object-object = '01'.
ls_object-objkey = nast-objky .
APPEND ls_object TO lt_objects.
CALL FUNCTION 'HU_PER_DOCUMENT_READ'
EXPORTING
it_objects = lt_objects
IMPORTING
et_highest = lt_venums
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc = 0.
LOOP AT lt_venums INTO ls_venum.
SELECT SINGLE * FROM vekp WHERE venum = @ls_venum-venum INTO @ls_vekp.
APPEND ls_vekp TO lt_vekp.
SELECT * FROM vepo WHERE venum = @ls_venum-venum INTO TABLE @lt_vepo.
APPEND LINES OF lt_vepo TO lt_vepo_total.
ENDLOOP.
ENDIF.
SELECT * FROM vbpa WHERE vbeln = @nast-objky INTO TABLE @lt_vbpa.
CALL FUNCTION '/AEB/PA_PB_DLV_CR_PKGS_W_PRINT'
EXPORTING
im_likp = ls_likp
im_vekps = lt_vekp
im_lipss = lt_lips
im_vbpas = lt_vbpa
im_is_shp_to_create = 'X'
im_vepos = lt_vepo
IMPORTING
ex_has_error = lv_has_error
ex_has_warning = lv_has_warning
ex_messages = lt_messages
ex_package_results = lt_package_results.
IF lv_has_error = 'X'.
returncode = 4.
RETURN.
ENDIF.
LOOP AT lt_package_results ASSIGNING <ls_package_result>.
LOOP AT <ls_package_result>-documents ASSIGNING <ls_document>.
PERFORM print_single_label USING ls_likp-vbeln <ls_document>.
ENDLOOP.
ENDLOOP.
returncode = sy-subrc.
ENDFORM.
FORM print_single_label USING iv_vbeln TYPE vbeln_vl
is_doc TYPE /aeb/pa_pb_dl_doc_do.
DATA: lv_spool_handle TYPE syst_tabix,
lv_spool TYPE rspoid,
lv_xstring TYPE xstring,
lv_filesize TYPE i,
lt_raw_buffer TYPE solix_tab,
lv_title TYPE rspotitle,
lv_name TYPE rspo0name,
lv_suffix1 TYPE rspo1name,
lv_suffix2 TYPE rspo2name,
lv_ldest TYPE ldest.
" Prepare data for output of the labels
lv_xstring = is_doc-content.
lt_raw_buffer = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_xstring ).
lv_filesize = xstrlen( lv_xstring ).
" Spool-Settings
CONCATENATE 'AEB-Label' iv_vbeln INTO lv_title SEPARATED BY space.
lv_name = 'AEB'.
lv_suffix2 = iv_vbeln.
* lv_ldest = p_ldest. " Proposal value when running as report
" Determination Printer based on AEB-Parameter ID
* PERFORM determine_ldest CHANGING lv_ldest.
IF lv_ldest IS INITIAL.
" No printer determined for output based in AEB-parameter!
* MESSAGE e009 INTO gv_mess.
* PERFORM protocol_update.
RETURN.
ENDIF.
" Create Spool Request
CALL FUNCTION 'RSPO_SR_OPEN'
EXPORTING
dest = lv_ldest
layout = 'G_RAW'
doctype = 'BIN'
titleline = lv_title
suffix1 = lv_suffix1
suffix2 = lv_suffix2
name = lv_name
immediate_print = abap_true " Direct Print
IMPORTING
handle = lv_spool_handle
spoolid = lv_spool
EXCEPTIONS
device_missing = 1
name_twice = 2
no_such_device = 3
operation_failed = 4
OTHERS = 5.
IF sy-subrc NE 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO gv_mess.
* PERFORM protocol_update.
RETURN.
ELSE.
" Spool-Request &1 has been created!
* MESSAGE s008 WITH lv_spool INTO gv_mess.
* PERFORM protocol_update.
ENDIF.
" Add the binary content into Spool Request
CALL FUNCTION 'RSPO_SR_TABLE_WRITE_BINARY'
EXPORTING
handle = lv_spool_handle
total = lv_filesize
TABLES
lines = lt_raw_buffer
EXCEPTIONS
handle_not_valid = 1.
IF sy-subrc NE 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO gv_mess.
* PERFORM protocol_update.
RETURN.
ENDIF.
" Close Spool Request
CALL FUNCTION 'RSPO_SR_CLOSE'
EXPORTING
handle = lv_spool_handle
EXCEPTIONS
handle_not_valid = 1
operation_failed = 2
OTHERS = 3.
IF sy-subrc NE 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO gv_mess.
* PERFORM protocol_update.
RETURN.
ENDIF.
ENDFORM.
Updated about 1 month ago