..3 Программа печати
Создайте отчет Z_FORM_ORDER и поместите в него следующий код:
REPORT z_form_order .
* declare the context
DATA gs_context TYPE zcontext .
* fill the context
PERFORM fill_context .
* call the form
CALL FUNCTION 'ZXLWB_CALLFORM'
EXPORTING
iv_formname = 'FORM_ORDER'
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_header TYPE zcontext_header ,
ls_position TYPE zcontext_position ,
ls_footer TYPE zcontext_footer ,
lv_poscount TYPE char10 .
* -->> header
ls_header-name = 'John Doe' .
ls_header-address = '123 Main street #45' .
ls_header-city = 'Brooklyn' .
ls_header-state = 'NY' .
ls_header-zip = '11201' .
ls_header-phone = '1-234-567-8910' .
ls_header-email = 'John.Doe.12345@gmail.com' .
gs_context-header = ls_header .
* -->> positions
DO 10 TIMES .
ls_position-name(3) = sy-index .
ls_position-name+3 = 'Position' .
ls_position-qty = sy-index .
ls_position-price = sy-index + 555 .
ls_position-total = '=RC[-5]*RC[-3]' . " -->> formula
APPEND ls_position TO gs_context-positions .
ENDDO .
* -->> footer
lv_poscount = LINES( gs_context-positions[] ) .
CONCATENATE '=SUM(R[-' lv_poscount ']C:R[-1]C)' INTO ls_footer-subtotal .
CONDENSE ls_footer-subtotal NO-GAPS . " -->> formula: =SUM(R[-10]C:R[-1]C)
ls_footer-total = '=R[-2]C' . " -->> formula
ls_footer-card_visa = space .
ls_footer-card_mc = 'V' .
ls_footer-card_discover = space .
ls_footer-card_number = '1234567890123456' .
ls_footer-expiry_date = '20140601' .
gs_context-footer = ls_footer .
ENDFORM . "fill_context