*&---------------------------------------------------------------------* *& Report ZSD_DELIVERYDOC_FLOE - Copy of RVADDN01 *&---------------------------------------------------------------------* *& Print Program for Delivery Documents *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * Print of a delivery note by SAPscript * *----------------------------------------------------------------------* REPORT ZSD_DELIVERYDOC_FLOE LINE-COUNT 100. TABLES: vbco3, "Communicationarea for view vbdkl, "Headerview vbdpl, "Itemview komser, "Communicationarea Serialnumbers conf_out, "Configuration data tvko, "Sales organization tvst, "Shipping points t001g, "Company codes dependend texts rdgprint, "Dangerous goods All of Data rdgtxtprt, "undepend. Texts komk, "Communicationarea for conditions komp, "Communicationarea for conditions komvd. "Communicationarea for conditions INCLUDE rvadtabl. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DATA: retcode LIKE sy-subrc. "Returncode DATA: xscreen(1) TYPE c. "Output on printer or screen DATA: BEGIN OF tvbdpl OCCURS 0. "Internal table for items INCLUDE STRUCTURE vbdpl. DATA: END OF tvbdpl. DATA: BEGIN OF tkomv OCCURS 50. INCLUDE STRUCTURE komv. DATA: END OF tkomv. DATA: BEGIN OF tkomvd OCCURS 50. INCLUDE STRUCTURE komvd. DATA: END OF tkomvd. DATA: BEGIN OF tkomcon OCCURS 50. "... for configuration data INCLUDE STRUCTURE conf_out. DATA: END OF tkomcon. DATA: BEGIN OF tkomser OCCURS 5. INCLUDE STRUCTURE riserls. DATA: END OF tkomser. DATA: BEGIN OF tkomser_print OCCURS 5. INCLUDE STRUCTURE komser. DATA: END OF tkomser_print. DATA: BEGIN OF tkombat OCCURS 50. " configuration data for batches INCLUDE STRUCTURE conf_out. DATA: END OF tkombat. DATA: address_selection LIKE addr1_sel. "MOS DATA: pr_kappl(01) TYPE c VALUE 'V'. "Application for pricing DATA: print_mwskz. DATA: price(1) TYPE c. "price switch DATA: BEGIN OF rdgprint_tab OCCURS 0. INCLUDE STRUCTURE rdgprint. DATA: END OF rdgprint_tab. DATA: i_undep_txt LIKE rdgtxtprt OCCURS 0 WITH HEADER LINE, "undepend Tex l_spras_txt LIKE rdgtxtprt OCCURS 0 WITH HEADER LINE, "undepend Tex i_idname_text LIKE rdgtxtprt OCCURS 0 WITH HEADER LINE. DATA: "gv_fp_outputparams type sfpoutputparams, " Output parameters gv_fp_docparams TYPE sfpdocparams, gv_w_cx_root TYPE REF TO cx_root, " Form Output gv_fm_name TYPE rs38l_fnam, " Function Name gv_interface_type TYPE fpinterfacetype, " interface name gv_form TYPE fpwbformname, " Form name gv_fpformoutput TYPE fpformoutput, " Form Output gv_mesg TYPE string, print_opts TYPE itcpo. DATA : gt_vbdpl TYPE STANDARD TABLE OF vbdpl, gs_vbdpl TYPE vbdpl. DATA : gt_komser TYPE STANDARD TABLE OF leshp_pdf_komser_pdf, gs_komser TYPE leshp_pdf_komser_pdf. DATA : gt_rdgtxtprt TYPE STANDARD TABLE OF rdgtxtprt, gs_rdgtxtprt TYPE rdgtxtprt. DATA : gt_conf_out TYPE STANDARD TABLE OF leshp_pdf_conf_out_pdf, gs_conf_out TYPE leshp_pdf_conf_out_pdf. DATA : gs_shipment TYPE vbdkl, gs_addr_info TYPE vbdkl, gs_inc_text TYPE tvko, gv_repeat TYPE char2. DATA : gt_dg TYPE STANDARD TABLE OF rdgtxtprt, gs_dg TYPE rdgtxtprt. CONSTANTS: gc_english TYPE char1 VALUE 'E'. "Output Control Enhancements DATA: gv_enhemail TYPE char1, gv_address TYPE adsmtp, gv_pdf TYPE fpcontent, gv_dummy TYPE char1, go_badi_mapper TYPE REF TO badi_sd_obj_mapper, go_badi_sd_sls_email TYPE REF TO badi_sd_sls_email. DATA: otf_data TYPE TABLE OF itcoo. **************************Start of Note changes 1503297********************************* * * DATA: gv_inupd TYPE i. * **External Send * DATA: gv_comm_type TYPE ad_comm, * gv_comm_values TYPE szadr_comm_values, * gs_recipient TYPE swotobjid, * gs_sender TYPE swotobjid, * gs_intnast TYPE snast, * gv_xdevice(10), * gv_xprogramm TYPE tdprogram, * gv_xdialog. * ** sending output vai mail *DATA: gv_pdf_content TYPE solix_tab. * **************************End of Note changes 1503297********************************* DATA: lv_pdf TYPE xstring, ls_fpe TYPE /flm/fpe, lv_doc TYPE text40, lv_ccode TYPE /flm/cust_code, lv_ftype TYPE /flm/ftype_code, lv_template TYPE /flm/flang, lv_fver TYPE /flm/fver, lv_fid TYPE /flm/fid, lv_fidvar TYPE /flm/id_var, ls_mess TYPE bapiret2, lt_variables TYPE /flm/vars_t, ls_variables TYPE /flm/vars_s, lv_reprint TYPE flag, ls_nast TYPE nast. * *----------------------------------------------------------------------* * Floe declarations *----------------------------------------------------------------------* TYPES: BEGIN OF ty_floe_rec_email_s, email TYPE ad_smtpadr, type TYPE char1, END OF ty_floe_rec_email_s. TYPES: ty_floe_rec_email_t TYPE TABLE OF ty_floe_rec_email_s. TYPES: BEGIN OF ty_floe_var_code_s, var_code TYPE char30, value TYPE string, row_num TYPE numc3, parent_row_num TYPE numc3, END OF ty_floe_var_code_s. TYPES: ty_floe_var_code_t TYPE TABLE OF ty_floe_var_code_s. DATA: gt_rec_emails TYPE ty_floe_rec_email_t, gs_rec_email TYPE ty_floe_rec_email_s, gt_vars TYPE ty_floe_var_code_t, gs_vars TYPE ty_floe_var_code_s, gv_subrc TYPE sysubrc. DATA: ls_attach TYPE /floe/att_s, lt_attach TYPE /floe/att_t, l_im_doc TYPE /floe/doc_ref, gv_etype TYPE /floe/etype_code, l_order TYPE string. DATA: lt_lines TYPE TABLE OF tline, ls_lines TYPE tline, l_text TYPE string, l_tdname TYPE tdobname. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *----------------------------------------------------------------------- * *----------------------------------------------------------------------- FORM entry USING return_code us_screen. CLEAR retcode. CLEAR price. xscreen = us_screen. PERFORM processing USING us_screen. IF retcode NE 0. return_code = 1. ELSE. return_code = 0. ENDIF. ENDFORM. "ENTRY *&---------------------------------------------------------------------* *& Form ENTRY_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->RETURN_CODE text * -->US_SCREEN text *----------------------------------------------------------------------* FORM entry_pdf USING return_code us_screen. CLEAR retcode. CLEAR price. CLEAR gv_fp_outputparams. "n_1782166 CLEAR gv_comm_type. "n_1787700 CLEAR gv_comm_values. "n_1787700 CLEAR gt_vbdpl. "n_2483048 xscreen = us_screen. PERFORM processing_pdf USING us_screen. IF retcode NE 0. return_code = 1. ELSE. return_code = 0. ENDIF. ENDFORM. "ENTRY_PDF *&---------------------------------------------------------------------* *& Form ENTRY_VARO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->RETURN_CODE text * -->US_SCREEN text *----------------------------------------------------------------------* FORM entry_varo USING return_code us_screen. CLEAR retcode. CLEAR price. CLEAR gv_fp_outputparams. "n_1782166 CLEAR gv_comm_type. "n_1787700 CLEAR gv_comm_values. "n_1787700 CLEAR gt_vbdpl. "n_2483048 xscreen = us_screen. PERFORM processing_varo. IF retcode NE 0. return_code = 1. ELSE. return_code = 0. ENDIF. ENDFORM. "ENTRY_VARO *---------------------------------------------------------------------* * FORM ENTRY FLOE * *---------------------------------------------------------------------* FORM entry_floe USING return_code us_screen. CLEAR retcode. CLEAR price. CLEAR gv_fp_outputparams. "n_1782166 CLEAR gv_comm_type. "n_1787700 CLEAR gv_comm_values. "n_1787700 CLEAR gt_vbdpl. "n_2483048 xscreen = us_screen. PERFORM processing_floe. IF retcode NE 0. return_code = 1. ELSE. return_code = 0. ENDIF. ENDFORM. "entry_floe *&---------------------------------------------------------------------* *& Form ENTRY_PRICE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->RETURN_CODE text * -->US_SCREEN text *----------------------------------------------------------------------* FORM entry_price USING return_code us_screen. CLEAR retcode. price = 'X'. xscreen = us_screen. PERFORM processing USING us_screen. IF retcode NE 0. return_code = 1. ELSE. return_code = 0. ENDIF. ENDFORM. "ENTRY_PRICE *---------------------------------------------------------------------* * FORM PROCESSING * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> PROC_SCREEN * *---------------------------------------------------------------------* FORM processing USING proc_screen. *End Email output control enhancements. PERFORM get_data. CHECK retcode = 0. *Email Output Control Enhancements - check only if type is External Send IF nast-nacha EQ '5'. PERFORM check_email_badi_impl. ENDIF. IF gv_enhemail EQ abap_true. PERFORM form_open_new USING proc_screen vbdkl-land1. ELSE. PERFORM form_open USING proc_screen vbdkl-land1. ENDIF. CHECK retcode = 0. PERFORM check_repeat. PERFORM header_data_print. CHECK retcode = 0. PERFORM header_text_print. CHECK retcode = 0. PERFORM item_print. CHECK retcode = 0. PERFORM end_print. CHECK retcode = 0. *Email output control enhancements IF gv_enhemail EQ abap_true. PERFORM form_close_new. ELSE. PERFORM form_close. ENDIF. CHECK retcode = 0. PERFORM archive_data. ENDFORM. "PROCESSING *&---------------------------------------------------------------------* *& Form PROCESSING_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PROC_SCREEN text *----------------------------------------------------------------------* FORM processing_pdf USING proc_screen. PERFORM get_data_pdf. CHECK retcode = 0. PERFORM form_open_pdf USING proc_screen vbdkl-land1. CHECK retcode = 0. PERFORM check_repeat_pdf. CHECK retcode = 0. PERFORM item_print_pdf. PERFORM dg_print_undep_text_pdf. PERFORM write_pdf. PERFORM form_close_pdf. CHECK retcode = 0. ENDFORM. "PROCESSING_PDF *&---------------------------------------------------------------------* *& Form PROCESSING_VARO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PROC_SCREEN text *----------------------------------------------------------------------* FORM processing_varo. PERFORM get_data_pdf. CHECK retcode = 0. * perform item_print_pdf. * perform dg_print_undep_text_pdf. * Get output parameters PERFORM get_output_params. CHECK retcode = 0. * * Set up defaults lv_ftype = tnapr-sform. lv_template = nast-spras. lv_fver = '00'. lv_doc = nast-objky. CLEAR lv_reprint. *----------------------------------------------------------------------* * Check Repeat print * SELECT * INTO ls_nast FROM nast WHERE kappl = nast-kappl AND objky = nast-objky AND kschl = nast-kschl AND spras = nast-spras AND parnr = nast-parnr AND parvw = nast-parvw AND nacha BETWEEN '1' AND '4' AND vstat = '1'. IF nast-aende IS INITIAL. lv_reprint = 'X'. ENDIF. ENDSELECT. * * Find previous output for reprint. * IF lv_reprint = 'X'. * SELECT * FROM /flm/fpe UP TO 1 ROWS INTO ls_fpe WHERE ftype = lv_ftype AND flang = lv_template AND document = lv_doc ORDER BY id DESCENDING. ENDSELECT. * IF sy-subrc EQ 0. * Previous output found * lv_ftype = ls_fpe-ftype. lv_fver = ls_fpe-fver. lv_template = ls_fpe-template. lv_fid = ls_fpe-id. lv_doc = ls_fpe-document. ELSE. * No previous form found CLEAR lv_reprint. ENDIF. * ENDIF. *----------------------------------------------------------------------* * Fill variables *----------------------------------------------------------------------* CLEAR ls_variables. ls_variables-var_code = 'REPRINT'. ls_variables-value = lv_reprint. APPEND ls_variables TO lt_variables. CLEAR ls_variables. * ls_variables-var_code = 'KSCHL'. ls_variables-value = nast-kschl. APPEND ls_variables TO lt_variables. CLEAR ls_variables. * ls_variables-var_code = 'SPRAS'. ls_variables-value = nast-spras. APPEND ls_variables TO lt_variables. * *----------------------------------------------------------------------* * Handle output scenario *----------------------------------------------------------------------* IF xscreen NE 'X'. * CALL FUNCTION '/FLM/PDF_PRINT' EXPORTING im_ftype = lv_ftype im_outputparams = gv_fp_outputparams im_toption = lv_template im_fver = lv_fver im_fid = lv_fid im_document = lv_doc im_variables = lt_variables IMPORTING ex_pdf = lv_pdf ex_subrc = retcode ex_mess = ls_mess. * CALL FUNCTION 'NAST_PROTOCOL_UPDATE' EXPORTING msg_arbgb = ls_mess-id msg_nr = ls_mess-number msg_ty = ls_mess-type msg_v1 = ls_mess-message_v1 msg_v2 = ls_mess-message_v2 msg_v3 = ls_mess-message_v3 msg_v4 = ls_mess-message_v4 EXCEPTIONS OTHERS = 0. IF retcode <> 0. RETURN. ENDIF. * ELSE. *----------------------------------------------------------------------* * Call screen to preview PDF form *----------------------------------------------------------------------* CALL FUNCTION '/FLM/PREVIEW_OUTPUT_PDF' EXPORTING im_ftype = lv_ftype im_fid = lv_fid im_fver = lv_fver im_toption = lv_template im_document = lv_doc im_variables = lt_variables * IM_DNS_SUB = * IM_HTTPS = IMPORTING ex_subrc = retcode ex_mess = ls_mess. * ENDIF. * ENDFORM. "PROCESSING_VARO *&---------------------------------------------------------------------* *& Form processing_floe *&---------------------------------------------------------------------* FORM processing_floe. * Check email type gv_etype = tnapr-fonam. CHECK gv_etype IS NOT INITIAL. PERFORM get_data_pdf. CHECK retcode = 0. * Generate email PERFORM send_data_floe. CHECK retcode = 0. ENDFORM. " processing_floe *&---------------------------------------------------------------------* *& Form send_data_floe *&---------------------------------------------------------------------* FORM send_data_floe. DATA: lv_cms_doc TYPE /flm/cms_doc, ls_outputparams TYPE sfpoutputparams, ls_docparams TYPE sfpdocparams, lv_device TYPE output_device, ls_fpe TYPE /flm/fpe, lv_delivery TYPE char12. DATA: lt_mess TYPE bapiret2_t, ls_mess TYPE bapiret2. DATA: ev_ebody TYPE string, et_rec_emails TYPE /floe/rec_email_t, et_attachments TYPE /floe/att_t, ev_esubject_long TYPE /floe/esubject_long, lv_emailaddr TYPE adr6-smtp_addr, lv_inupd TYPE i, lv_no_commit TYPE flag. *-----------------------------------------* * Fill recipient * Add additional recipients in recipient user-exit *---------------------------------------------------------------------* * get Email id from address no SELECT SINGLE smtp_addr FROM adr6 INTO lv_emailaddr WHERE addrnumber = addr_key-addrnumber AND flgdefault = abap_true. gs_rec_email-email = lv_emailaddr. gs_rec_email-type = '1'. APPEND gs_rec_email TO gt_rec_emails. *----------------------------------------------------------------------* * Add variables * Add additional variables in email data user-exit *----------------------------------------------------------------------* CLEAR ls_variables. ls_variables-var_code = 'REPRINT'. ls_variables-value = lv_reprint. APPEND ls_variables TO lt_variables. "Varo APPEND ls_variables TO gt_vars. "Floe * CLEAR ls_variables. ls_variables-var_code = 'KSCHL'. ls_variables-value = nast-kschl. APPEND ls_variables TO lt_variables. "Varo APPEND ls_variables TO gt_vars. "Floe * CLEAR ls_variables. ls_variables-var_code = 'SPRAS'. ls_variables-value = nast-spras. APPEND ls_variables TO lt_variables. "Varo APPEND ls_variables TO gt_vars. "Floe IF xscreen IS INITIAL. CLEAR ls_variables. ls_variables-var_code = 'FLOE_SEND'. ls_variables-value = 'X'. APPEND ls_variables TO gt_vars. "Floe ENDIF. *---------------------------------------------------------------------* * Get PDF details if required *---------------------------------------------------------------------* lv_ftype = tnapr-sform. IF lv_ftype IS NOT INITIAL. * Generate PDF attachment with Varo, form type ftype. * * Set up defaults lv_ftype = tnapr-sform. lv_template = nast-spras. lv_fver = '00'. lv_doc = nast-objky. lv_delivery = nast-objky. *----------------------------------------------------------------------* * Check if this is a re-print and set form id * SELECT * FROM /flm/fpe UP TO 1 ROWS INTO ls_fpe WHERE ftype = lv_ftype AND flang = lv_template AND document = lv_doc ORDER BY id DESCENDING. ENDSELECT. * IF sy-subrc EQ 0 AND nast-aende IS INITIAL. * Previous output found * lv_ftype = ls_fpe-ftype. lv_fver = ls_fpe-fver. lv_template = ls_fpe-template. lv_fid = ls_fpe-id. lv_doc = ls_fpe-document. lv_reprint = 'X'. ENDIF. * IF xscreen = 'X'. *----------------------------------------------------------------------* * Preview the PDF * CALL FUNCTION '/FLM/PREVIEW_OUTPUT_PDF' EXPORTING im_ftype = lv_ftype im_fid = lv_fid im_fver = lv_fver im_toption = lv_template im_document = lv_doc im_variables = lt_variables * IM_DNS_SUB = * IM_HTTPS = IMPORTING ex_subrc = retcode ex_mess = ls_mess. RETURN. * ELSE. * *----------------------------------------------------------------------* * Call Varo to generate the PDF * CALL FUNCTION '/FLM/OUTPUT_PDF_PDL_OUT' EXPORTING im_ftype = lv_ftype im_fid = lv_fid im_fver = lv_fver im_toption = lv_template im_document = lv_doc im_variables = lt_variables im_no_print = 'X' * IM_PDLTYPE = * IM_XDCNAME = IMPORTING ex_pdf = lv_pdf * EX_PDL = * EX_PAGECOUNT = * EX_JOB_ID = ex_subrc = retcode ex_mess = ls_mess. * IF retcode <> 0. CALL FUNCTION 'NAST_PROTOCOL_UPDATE' EXPORTING msg_arbgb = ls_mess-id msg_nr = ls_mess-number msg_ty = ls_mess-type msg_v1 = ls_mess-message_v1 msg_v2 = ls_mess-message_v2 msg_v3 = ls_mess-message_v3 msg_v4 = ls_mess-message_v4 EXCEPTIONS OTHERS = 0. RETURN. ENDIF. * * Get new form id etc. lv_cms_doc = ls_mess-parameter. * CALL METHOD /flm/core=>split_xdp_cms_doc EXPORTING im_cms_doc = lv_cms_doc IMPORTING ex_ccode = lv_ccode ex_ftype = lv_ftype ex_fver = lv_fver ex_flang = lv_template ex_fid = lv_fid ex_fid_var = lv_fidvar. * *------------------------------------------------------------------- * Fill attachment * CONCATENATE lv_delivery '.pdf' INTO ls_attach-att_filename. ls_attach-att_description = 'Delivery'. ls_attach-att_data = lv_pdf. APPEND ls_attach TO lt_attach. ENDIF. ENDIF. * *------------------------------------------------------------------- * Determine whether this is run as update task * CLEAR: lv_inupd, lv_no_commit. CALL METHOD cl_system_transaction_state=>get_in_update_task RECEIVING in_update_task = lv_inupd. * IF lv_inupd = 1. lv_no_commit = 'X'. ENDIF. * *----------------------------------------------------------------------* * Call Floe API *----------------------------------------------------------------------* CLEAR ev_ebody. * l_im_doc = lv_delivery. * CALL FUNCTION '/FLOE/EMAIL_OUT' EXPORTING im_etype = gv_etype im_elang = nast-spras im_document = l_im_doc im_rec_emails = gt_rec_emails im_variables = gt_vars im_send_immediately = 'X' im_attachments = lt_attach im_preview = xscreen im_no_commit = lv_no_commit IMPORTING ex_subrc = retcode ex_ebody = ev_ebody ex_mess = lt_mess ex_rec_emails = et_rec_emails ex_attachments = et_attachments ex_esubject_long = ev_esubject_long. LOOP AT lt_mess INTO ls_mess. CALL FUNCTION 'NAST_PROTOCOL_UPDATE' EXPORTING msg_arbgb = ls_mess-id msg_nr = ls_mess-number msg_ty = ls_mess-type msg_v1 = ls_mess-message_v1 msg_v2 = ls_mess-message_v2 msg_v3 = ls_mess-message_v3 msg_v4 = ls_mess-message_v4 EXCEPTIONS OTHERS = 0. ENDLOOP. * * Drop out if API has thrown an error IF retcode NE 0. RETURN. ENDIF. * *----------------------------------------------------------------------* * Preview Email if required. *----------------------------------------------------------------------* IF NOT xscreen IS INITIAL. * CALL FUNCTION '/FLOE/EMAIL_VIEWER' EXPORTING im_preview = 'X' * IM_ETYPE = * IM_EID = im_esubject = 'FLOE Preview' im_ebody = ev_ebody im_rec_emails = et_rec_emails im_attachments = et_attachments IMPORTING ex_subrc = retcode. * ENDIF. * ENDFORM. " send_data_floe *********************************************************************** * S U B R O U T I N E S * *********************************************************************** *---------------------------------------------------------------------* * FORM CHECK_REPEAT * *---------------------------------------------------------------------* * A text is printed, if it is a repeat print for the document. * *---------------------------------------------------------------------* FORM check_repeat. SELECT * INTO *nast FROM nast WHERE kappl = nast-kappl AND objky = nast-objky AND kschl = nast-kschl AND spras = nast-spras AND parnr = nast-parnr AND parvw = nast-parvw AND nacha BETWEEN '1' AND '4' AND vstat = '1'. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'REPEAT' window = 'REPEAT' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. EXIT. ENDSELECT. ENDFORM. "CHECK_REPEAT *---------------------------------------------------------------------* * FORM END_PRINT * *---------------------------------------------------------------------* * * *---------------------------------------------------------------------* FORM check_repeat_pdf. SELECT * INTO *nast FROM nast WHERE kappl = nast-kappl AND objky = nast-objky AND kschl = nast-kschl AND spras = nast-spras AND parnr = nast-parnr AND parvw = nast-parvw AND nacha BETWEEN '1' AND '4' AND vstat = '1'. gv_repeat = 1. EXIT. ENDSELECT. ENDFORM. "CHECK_REPEAT_PDF *&---------------------------------------------------------------------* *& Form END_PRINT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM end_print. IF price = 'X'. PERFORM get_header_prices. CALL FUNCTION 'CONTROL_FORM' EXPORTING command = 'PROTECT'. PERFORM header_price_print. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'END_VALUES' EXCEPTIONS OTHERS = 1. CALL FUNCTION 'CONTROL_FORM' EXPORTING command = 'ENDPROTECT'. ENDIF. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'SUPPLEMENT_TEXT' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. * print standard texts for dangerous goods PERFORM dg_print_undep_text. ENDFORM. "END_PRINT *---------------------------------------------------------------------* * FORM FORM_CLOSE * *---------------------------------------------------------------------* * End of printing the form * *---------------------------------------------------------------------* FORM form_close. DATA: lt_otfdata TYPE TABLE OF itcoo. IF cl_ops_switch_check=>sd_sfws_sc3( ) EQ abap_true AND xscreen EQ 'W'. CALL FUNCTION 'CLOSE_FORM' TABLES otfdata = lt_otfdata EXCEPTIONS OTHERS = 1. IF sy-subrc IS INITIAL. PERFORM convert_otf_to_pdf TABLES lt_otfdata. ENDIF. ELSE. CALL FUNCTION 'CLOSE_FORM' "...Ende Formulardruck EXCEPTIONS OTHERS = 1. ENDIF. IF sy-subrc NE 0. retcode = 1. PERFORM protocol_update. ENDIF. SET COUNTRY space. ENDFORM. "FORM_CLOSE *---------------------------------------------------------------------* * FORM FORM_OPEN * *---------------------------------------------------------------------* * Start of printing the form * *---------------------------------------------------------------------* * --> US_SCREEN Output on screen * * ' ' = printer * * 'X' = screen * * --> US_COUNTRY County for telecommunication and SET COUNTRY * *---------------------------------------------------------------------* FORM form_open USING us_screen us_country. INCLUDE rvadopfo. ENDFORM. "FORM_OPEN *---------------------------------------------------------------------* * FORM GET_DATA * *---------------------------------------------------------------------* * General provision of data for the form * *---------------------------------------------------------------------* FORM get_data. CALL FUNCTION 'RV_PRICE_PRINT_REFRESH' TABLES tkomv = tkomv. CLEAR komk. CLEAR komp. vbco3-spras = nast-spras. vbco3-vbeln = nast-objky. vbco3-kunde = nast-parnr. vbco3-parvw = nast-parvw. CALL FUNCTION 'RV_DELIVERY_PRINT_VIEW' EXPORTING comwa = vbco3 IMPORTING kopf = vbdkl TABLES pos = tvbdpl. * fill address key --> necessary for emails addr_key-addrnumber = vbdkl-adrnr. addr_key-persnumber = vbdkl-adrnp. addr_key-addr_type = vbdkl-address_type. * Data selection for dangerous goods PERFORM dg_data_select USING vbdkl. PERFORM sender. ENDFORM. "GET_DATA *&---------------------------------------------------------------------* *& Form GET_DATA_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM get_data_pdf. CALL FUNCTION 'RV_PRICE_PRINT_REFRESH' TABLES tkomv = tkomv. CLEAR komk. CLEAR komp. vbco3-spras = nast-spras. vbco3-vbeln = nast-objky. vbco3-kunde = nast-parnr. vbco3-parvw = nast-parvw. CALL FUNCTION 'RV_DELIVERY_PRINT_VIEW' EXPORTING comwa = vbco3 IMPORTING kopf = vbdkl TABLES pos = tvbdpl. MOVE-CORRESPONDING vbdkl TO gs_shipment. LOOP AT tvbdpl. MOVE-CORRESPONDING tvbdpl TO gs_vbdpl. CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = gs_vbdpl-matnr IMPORTING output = gs_vbdpl-matnr. APPEND gs_vbdpl TO gt_vbdpl. CLEAR gs_vbdpl. ENDLOOP. * fill address key --> necessary for emails addr_key-addrnumber = vbdkl-adrnr. addr_key-persnumber = vbdkl-adrnp. addr_key-addr_type = vbdkl-address_type. * Data selection for dangerous goods PERFORM dg_data_select USING vbdkl. * PERFORM sender. MOVE-CORRESPONDING tvko TO gs_inc_text. *---------------------------------------------------------------------* * fill_floe_variables *---------------------------------------------------------------------* DATA: lt_comp TYPE abap_compdescr_tab, ls_comp_a LIKE LINE OF lt_comp, ld_type TYPE abap_typekind, ls_item_detail TYPE vbdpl, l_row_num TYPE numc3, l_parent_num TYPE numc3, l_item_num TYPE numc3, l_schl_num TYPE numc3, l_old_posnr TYPE posnr. DATA: lo_struct TYPE REF TO cl_abap_structdescr, lo_table TYPE REF TO cl_abap_tabledescr, ldo_data TYPE REF TO data. FIELD-SYMBOLS: TYPE table, . *---------------------------------------------------------------------* * Convert data into floe variables. *---------------------------------------------------------------------* * * Only for Floe CHECK gv_etype IS NOT INITIAL. * Take header data from structure . GET REFERENCE OF vbdkl INTO ldo_data . lo_struct ?= cl_abap_structdescr=>describe_by_data_ref( ldo_data ). lt_comp = lo_struct->components. * LOOP AT lt_comp INTO ls_comp_a. ASSIGN COMPONENT ls_comp_a-name OF STRUCTURE vbdkl TO . gs_vars-var_code = ls_comp_a-name. gs_vars-value = . APPEND gs_vars TO gt_vars. ENDLOOP. * * Take item data and schedule line data from table vbdpa. GET REFERENCE OF gt_vbdpl INTO ldo_data . ASSIGN ldo_data->* TO . lo_table ?= cl_abap_structdescr=>describe_by_data_ref( ldo_data ). lo_struct ?= lo_table->get_table_line_type( ). lt_comp = lo_struct->components. * * l_item_num = 0. LOOP AT gt_vbdpl INTO ls_item_detail. * IF sy-tabix EQ 1 OR l_old_posnr NE ls_item_detail-posnr. l_schl_num = 0. l_parent_num = 0. l_item_num = l_item_num + 1. l_row_num = l_item_num. l_old_posnr = ls_item_detail-posnr. ELSE. * New schedule line l_schl_num = l_schl_num + 1. l_parent_num = l_item_num. l_row_num = l_schl_num. ENDIF. * LOOP AT lt_comp INTO ls_comp_a. ASSIGN COMPONENT ls_comp_a-name OF STRUCTURE ls_item_detail TO . * gs_vars-var_code = ls_comp_a-name. gs_vars-value = . gs_vars-row_num = l_row_num. gs_vars-parent_row_num = l_parent_num. APPEND gs_vars TO gt_vars. ENDLOOP. * ENDLOOP. ENDFORM. "GET_DATA_PDF *---------------------------------------------------------------------* * FORM GET_HEADER_PRICES * *---------------------------------------------------------------------* * In this routine the price data for the header is fetched from * * the database. * *---------------------------------------------------------------------* FORM get_header_prices. CALL FUNCTION 'RV_PRICE_PRINT_HEAD' EXPORTING comm_head_i = komk language = nast-spras IMPORTING comm_head_e = komk comm_mwskz = print_mwskz TABLES tkomv = tkomv tkomvd = tkomvd. ENDFORM. "GET_HEADER_PRICES *---------------------------------------------------------------------* * FORM GET_ITEM_CHARACTERISTICS * *---------------------------------------------------------------------* * In this routine the configuration data item is fetched from * * the database. * *---------------------------------------------------------------------* FORM get_item_characteristics. DATA da_t_cabn LIKE cabn OCCURS 10 WITH HEADER LINE. DATA: BEGIN OF da_key, mandt LIKE cabn-mandt, atinn LIKE cabn-atinn, END OF da_key. REFRESH tkomcon. CHECK NOT vbdpl-cuobj IS INITIAL. CALL FUNCTION 'VC_I_GET_CONFIGURATION' EXPORTING instance = vbdpl-cuobj language = nast-spras print_sales = 'X' TABLES configuration = tkomcon EXCEPTIONS OTHERS = 4. RANGES : da_in_cabn FOR da_t_cabn-atinn. CLEAR da_in_cabn. REFRESH da_in_cabn. LOOP AT tkomcon. da_in_cabn-option = 'EQ'. da_in_cabn-sign = 'I'. da_in_cabn-low = tkomcon-atinn. APPEND da_in_cabn. ENDLOOP. CLEAR da_t_cabn. REFRESH da_t_cabn. CALL FUNCTION 'CLSE_SELECT_CABN' TABLES in_cabn = da_in_cabn t_cabn = da_t_cabn EXCEPTIONS no_entry_found = 1 OTHERS = 2. * Preisfindungsmerkmale / Merkmale auf VCSD_UPDATE herausnehmen SORT da_t_cabn. LOOP AT tkomcon. da_key-mandt = sy-mandt. da_key-atinn = tkomcon-atinn. READ TABLE da_t_cabn WITH KEY da_key BINARY SEARCH. IF sy-subrc <> 0 OR ( ( da_t_cabn-attab = 'SDCOM' AND da_t_cabn-atfel = 'VKOND' ) OR ( da_t_cabn-attab = 'VCSD_UPDATE' ) ) . DELETE tkomcon. ENDIF. ENDLOOP. ENDFORM. "GET_ITEM_CHARACTERISTICS *---------------------------------------------------------------------* * FORM GET_ITEM_CHARACTERISTICS_BATCH * *---------------------------------------------------------------------* * In this routine the configuration data for batches is fetched * * from the database * *---------------------------------------------------------------------* FORM get_item_characteristics_batch. REFRESH tkombat. CHECK NOT vbdpl-charg IS INITIAL. CALL FUNCTION 'VB_BATCH_VALUES_FOR_OUTPUT' EXPORTING material = vbdpl-matnr plant = vbdpl-werks batch = vbdpl-charg language = nast-spras TABLES classification = tkombat EXCEPTIONS OTHERS = 4. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDFORM. "GET_ITEM_CHARACTERISTICS_BATCH *---------------------------------------------------------------------* * FORM GET_ITEM_PRICES * *---------------------------------------------------------------------* * In this routine the price data for the item is fetched from * * the database. * *---------------------------------------------------------------------* FORM get_item_prices. CLEAR: komp, tkomv. IF komk-knumv NE vbdkl-knump. CLEAR komk. komk-mandt = sy-mandt. komk-kalsm = vbdkl-kalsp. komk-kappl = pr_kappl. komk-waerk = vbdkl-waerk. komk-knumv = vbdkl-knump. komk-vbtyp = vbdkl-vbtyp. ENDIF. komp-kposn = vbdpl-posnr. CALL FUNCTION 'RV_PRICE_PRINT_ITEM' EXPORTING comm_head_i = komk comm_item_i = komp language = nast-spras IMPORTING comm_head_e = komk comm_item_e = komp TABLES tkomv = tkomv tkomvd = tkomvd. ENDFORM. "GET_ITEM_PRICES *---------------------------------------------------------------------* * FORM GET_SERIAL_NO * *---------------------------------------------------------------------* * In this routine the serialnumbers are fetched from the * * database. * *---------------------------------------------------------------------* FORM get_serial_no. REFRESH tkomser. REFRESH tkomser_print. CHECK vbdpl-anzsn > 0. * Read the Serialnumbers of a Position. CALL FUNCTION 'SERIAL_LS_PRINT' EXPORTING vbeln = vbdkl-vbeln posnr = vbdpl-posnr TABLES iserls = tkomser. * Process the stringtable for Printing. CALL FUNCTION 'PROCESS_SERIALS_FOR_PRINT' EXPORTING i_boundary_left = '(_' i_boundary_right = '_)' i_sep_char_strings = ',_' i_sep_char_interval = '_-_' i_use_interval = 'X' i_boundary_method = 'C' i_line_length = 50 i_no_zero = 'X' i_alphabet = sy-abcde i_digits = '0123456789' i_special_chars = '-' i_with_second_digit = ' ' TABLES serials = tkomser serials_print = tkomser_print EXCEPTIONS boundary_missing = 01 interval_separation_missing = 02 length_to_small = 03 internal_error = 04 wrong_method = 05 wrong_serial = 06 two_equal_serials = 07 serial_with_wrong_char = 08 serial_separation_missing = 09. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDFORM. "GET_SERIAL_NO *&---------------------------------------------------------------------* *& Form HEADER_DATA_PRINT *&---------------------------------------------------------------------* * Printing of the header data like terms, weights * *----------------------------------------------------------------------* FORM header_data_print. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'HEADER_DATA' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDFORM. " HEADER_DATA_PRINT *---------------------------------------------------------------------* * FORM HEADER_PRICE_PRINT * *---------------------------------------------------------------------* * Printout of the header prices * *---------------------------------------------------------------------* FORM header_price_print. LOOP AT tkomvd. AT FIRST. IF komk-supos NE 0. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_SUM' EXCEPTIONS element = 1 window = 2. ELSE. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'UNDER_LINE' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDIF. ENDAT. komvd = tkomvd. IF print_mwskz = space. CLEAR komvd-mwskz. ENDIF. IF komvd-koaid = 'D'. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'TAX_LINE' EXCEPTIONS element = 1 window = 2. ELSE. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'SUM_LINE' EXCEPTIONS element = 1 window = 2. ENDIF. ENDLOOP. DESCRIBE TABLE tkomvd LINES sy-tfill. IF sy-tfill = 0. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'UNDER_LINE' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDIF. ENDFORM. "HEADER_PRICE_PRINT *---------------------------------------------------------------------* * FORM HEADER_TEXT_PRINT * *---------------------------------------------------------------------* * Printout of the headertexts * *---------------------------------------------------------------------* FORM header_text_print. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'HEADER_TEXT' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDFORM. "HEADER_TEXT_PRINT *---------------------------------------------------------------------* * FORM ITEM_PRINT * *---------------------------------------------------------------------* * Printout of the items * *---------------------------------------------------------------------* FORM item_print. * <<< START_OF_INSERTION_HP_327026 >>> DATA: lf_init_characteristics_done TYPE xfeld. * <<< END_OF_INSERTION_HP_327026 >>> CALL FUNCTION 'WRITE_FORM' "First header EXPORTING element = 'ITEM_HEADER' EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. CALL FUNCTION 'WRITE_FORM' "Activate header EXPORTING element = 'ITEM_HEADER' type = 'TOP' EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. LOOP AT tvbdpl. vbdpl = tvbdpl. * <<< START_OF_INSERTION_HP_327026 >>> IF ( lf_init_characteristics_done IS INITIAL ) AND ( ( NOT vbdpl-charg IS INITIAL ) OR ( NOT vbdpl-cuobj IS INITIAL ) ). CALL FUNCTION 'CTMS_DDB_INIT'. lf_init_characteristics_done = 'X'. ENDIF. * <<< END_OF_INSERTION_HP_327026 >>> IF vbdpl-uecha IS INITIAL. * <<< START_OF_INSERTION_HP_377469 >>> PERFORM item_print_oi. * <<< END_OF_INSERTION_HP_377469 >>> CALL FUNCTION 'CONTROL_FORM' EXPORTING command = 'PROTECT'. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE'. CALL FUNCTION 'CONTROL_FORM' EXPORTING command = 'ENDPROTECT'. * Seitenumbruch, wenn Positionstexte nicht auf eine Seite passen. CALL FUNCTION 'CONTROL_FORM' EXPORTING command = 'PROTECT'. PERFORM item_text_print. PERFORM dg_print_data_get. PERFORM dg_data_print. IF price = 'X'. PERFORM get_item_prices. PERFORM item_price_print. ENDIF. PERFORM get_serial_no. PERFORM item_serial_no_print. PERFORM get_item_characteristics. PERFORM item_characteristics_print. PERFORM get_item_characteristics_batch. PERFORM item_characteristics_batch. IF vbdpl-vbeln_vauf NE space AND vbdpl-vbeln_vauf NE vbdkl-vbeln_vauf. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_REFERENCE' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDIF. IF vbdpl-qmnum NE space AND vbdpl-qmnum NE vbdkl-qmnum. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_QNUMBER' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDIF. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_PURCHASE_DATA' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. CALL FUNCTION 'CONTROL_FORM' EXPORTING command = 'ENDPROTECT'. ELSE. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_BATCH' EXCEPTIONS "v_n_709399 element = 1 window = 2. "^_n_709399 IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. IF price = 'X'. "v_n_577292 PERFORM get_item_prices. PERFORM item_price_print. ENDIF. "^_n_577292 PERFORM get_serial_no. PERFORM item_serial_no_print. PERFORM get_item_characteristics_batch. PERFORM item_characteristics_batch. ENDIF. ENDLOOP. CALL FUNCTION 'WRITE_FORM' "Deactivate Header EXPORTING element = 'ITEM_HEADER' function = 'DELETE' type = 'TOP' EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDFORM. "ITEM_PRINT *&---------------------------------------------------------------------* *& Form ITEM_PRINT_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM item_print_pdf. * <<< START_OF_INSERTION_HP_327026 >>> DATA: lf_init_characteristics_done TYPE xfeld. * <<< END_OF_INSERTION_HP_327026 >>> * Move Data IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. LOOP AT tvbdpl. vbdpl = tvbdpl. * <<< START_OF_INSERTION_HP_327026 >>> IF ( lf_init_characteristics_done IS INITIAL ) AND ( ( NOT vbdpl-charg IS INITIAL ) OR ( NOT vbdpl-cuobj IS INITIAL ) ). CALL FUNCTION 'CTMS_DDB_INIT'. lf_init_characteristics_done = 'X'. ENDIF. * <<< END_OF_INSERTION_HP_327026 >>> IF vbdpl-uecha IS INITIAL. * <<< START_OF_INSERTION_HP_377469 >>> PERFORM item_print_oi. * <<< END_OF_INSERTION_HP_377469 >>> * Seitenumbruch, wenn Positionstexte nicht auf eine Seite passen. PERFORM dg_print_data_get_pdf. PERFORM dg_data_print_pdf. PERFORM get_serial_no. PERFORM item_serial_no_print_pdf. PERFORM get_item_characteristics. PERFORM item_characteristics_print_pdf. PERFORM get_item_characteristics_batch. PERFORM item_characteristics_batch_pdf. ELSE. PERFORM get_serial_no. PERFORM item_serial_no_print_pdf. PERFORM get_item_characteristics_batch. PERFORM item_characteristics_batch_pdf. ENDIF. ENDLOOP. ENDFORM. "ITEM_PRINT_PDF *---------------------------------------------------------------------* * FORM ITEM_CHARACERISTICS_BATCH * *---------------------------------------------------------------------* * Printout of the item characteristics for batches * *---------------------------------------------------------------------* FORM item_characteristics_batch. LOOP AT tkombat. conf_out = tkombat. IF sy-tabix = 1. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_CONFIGURATION_BATCH_HEADER' EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ELSE. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_CONFIGURATION_BATCH' EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDIF. ENDLOOP. ENDFORM. "ITEM_CHARACTERISTICS_BATCH *---------------------------------------------------------------------* * FORM ITEM_CHARACERISTICS_PRINT * *---------------------------------------------------------------------* * Printout of the item characteristics -> configuration * *---------------------------------------------------------------------* FORM item_characteristics_batch_pdf. LOOP AT tkombat. conf_out = tkombat. MOVE-CORRESPONDING conf_out TO gs_conf_out. MOVE-CORRESPONDING tvbdpl TO gs_conf_out. gs_conf_out-flag = 'B'. APPEND gs_conf_out TO gt_conf_out. CLEAR gs_conf_out. ENDLOOP. ENDFORM. "ITEM_CHARACTERISTICS_ *&---------------------------------------------------------------------* *& Form ITEM_CHARACTERISTICS_PRINT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM item_characteristics_print. LOOP AT tkomcon. conf_out = tkomcon. IF sy-tabix = 1. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_CONFIGURATION_HEADER' EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ELSE. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_CONFIGURATION' EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDIF. ENDLOOP. ENDFORM. "ITEM_CHARACTERISTICS_PRINT *&---------------------------------------------------------------------* *& Form ITEM_CHARACTERISTICS_PRINT_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM item_characteristics_print_pdf. LOOP AT tkomcon. conf_out = tkomcon. MOVE: conf_out-atbez TO gs_conf_out-atbez, conf_out-atwtb TO gs_conf_out-atwtb, tvbdpl-vbeln TO gs_conf_out-vbeln, tvbdpl-posnr TO gs_conf_out-posnr. gs_conf_out-flag = 'C'. APPEND gs_conf_out TO gt_conf_out. CLEAR gs_conf_out. ENDLOOP. ENDFORM. "ITEM_CHARACTERISTICS_PRINT_PDF *---------------------------------------------------------------------* * FORM ITEM_PRICE_PRINT * *---------------------------------------------------------------------* * Printout of the item prices * *---------------------------------------------------------------------* FORM item_price_print. LOOP AT tkomvd. komvd = tkomvd. IF print_mwskz = space. CLEAR komvd-mwskz. ENDIF. IF sy-tabix = 1. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_PRICE_QUANTITY' EXCEPTIONS element = 1 window = 2. ELSE. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_PRICE_TEXT' EXCEPTIONS element = 1 window = 2. ENDIF. ENDLOOP. ENDFORM. "ITEM_PRICE_PRINT *---------------------------------------------------------------------* * FORM ITEM_SERIAL_NO_PRINT * *---------------------------------------------------------------------* * Printout of the item serialnumbers * *---------------------------------------------------------------------* FORM item_serial_no_print. LOOP AT tkomser_print. komser = tkomser_print. IF sy-tabix = 1. * Output of the Headerline CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_SERIAL_NO_HEADER' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ELSE. * Output of the following printlines CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_LINE_SERIAL_NO' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDIF. AT LAST. CALL FUNCTION 'CONTROL_FORM' EXPORTING command = 'NEW-LINE'. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDAT. ENDLOOP. ENDFORM. "ITEM_SERIAL_NO_PRINT *&---------------------------------------------------------------------* *& Form ITEM_SERIAL_NO_PRINT_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM item_serial_no_print_pdf. LOOP AT tkomser_print. komser = tkomser_print. MOVE-CORRESPONDING komser TO gs_komser. MOVE-CORRESPONDING tvbdpl TO gs_komser. APPEND gs_komser TO gt_komser. CLEAR gs_komser. ENDLOOP. ENDFORM. "ITEM_SERIAL_NO_PRINT_PDF *---------------------------------------------------------------------* * FORM PROTOCOL_UPDATE * *---------------------------------------------------------------------* * The messages are collected for the processing protocol. * *---------------------------------------------------------------------* FORM protocol_update. CHECK xscreen = space. CALL FUNCTION 'NAST_PROTOCOL_UPDATE' EXPORTING msg_arbgb = syst-msgid msg_nr = syst-msgno msg_ty = syst-msgty msg_v1 = syst-msgv1 msg_v2 = syst-msgv2 msg_v3 = syst-msgv3 msg_v4 = syst-msgv4 EXCEPTIONS OTHERS = 1. ENDFORM. "PROTOCOL_UPDATE *---------------------------------------------------------------------* * FORM SENDER * *---------------------------------------------------------------------* * This routine determines the address of the sender * *---------------------------------------------------------------------* FORM sender. SELECT SINGLE * FROM tvko WHERE vkorg = vbdkl-vkorg. IF sy-subrc NE 0. syst-msgid = 'VN'. syst-msgno = '203'. syst-msgty = 'W'. syst-msgv1 = 'TVKO'. syst-msgv2 = syst-subrc. PERFORM protocol_update. ENDIF. SELECT SINGLE * FROM tvst WHERE vstel = vbdkl-vstel. IF sy-subrc NE 0. syst-msgid = 'VN'. syst-msgno = '203'. syst-msgty = 'W'. syst-msgv1 = 'TVST'. syst-msgv2 = syst-subrc. PERFORM protocol_update. ENDIF. SELECT SINGLE * FROM t001g WHERE bukrs = vbdkl-bukrs AND programm = 'RVADDN01' AND txtid = space. IF sy-subrc NE 0. syst-msgid = 'VN'. syst-msgno = '203'. syst-msgty = 'W'. syst-msgv1 = 'T001G'. syst-msgv2 = syst-subrc. PERFORM protocol_update. ENDIF. ENDFORM. "SENDER *&---------------------------------------------------------------------* *& Form ITEM_TEXT_PRINT *&---------------------------------------------------------------------* FORM item_text_print. CALL FUNCTION 'WRITE_FORM' EXPORTING element = 'ITEM_TEXT' EXCEPTIONS element = 1 window = 2. IF sy-subrc NE 0. PERFORM protocol_update. ENDIF. ENDFORM. " ITEM_TEXT_PRINT * <<< START_OF_INSERTION_HP_377469 >>> INCLUDE rvaddn01_dg. INCLUDE rvaddn01_oi. * <<< END_OF_INSERTION_HP_377469 >>> INCLUDE rvaddn01_dg_pdf. "#EC ***** End of PDF Changes by C5065471 ***** * <<< END_OF_INSERTION_HP_377469 >>> FORM write_pdf . DATA: st_formular_pdf TYPE fpname. *************************Start of Note changes 1503297********************************* DATA: ls_pdf_file TYPE fpformoutput, lv_emailaddr TYPE adr6-smtp_addr. * Setting for sending FAX DATA : lv_cam_address TYPE REF TO cl_cam_address_bcs, lv_outputparams_fax TYPE sfpoutpar, lv_vend_cntry TYPE lfa1-land1. * BCS data DATA: send_request TYPE REF TO cl_bcs, document TYPE REF TO cl_document_bcs, recipient TYPE REF TO if_recipient_bcs, bcs_exception TYPE REF TO cx_bcs, lv_sent_to_all TYPE os_boolean, lp_pdf_size TYPE so_obj_len, lv_subject TYPE so_obj_des, lv_add_nr TYPE adr6-addrnumber. * Archiving specific data declaration DATA: lv_pdf_size TYPE i, lv_archiveformat LIKE toadd-doc_type, "PDF or OTF lv_documentclass LIKE toadv-doc_type. *************************End of Note changes 1503297********************************* *Email Enhancment BADI Impl Check IF nast-nacha EQ '5'. PERFORM check_email_badi_impl. ENDIF. gv_form = tnapr-sform. IF tnapr-formtype = 2. TRY. * Function to find the FM name. CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' EXPORTING i_name = gv_form IMPORTING e_funcname = gv_fm_name e_interface_type = gv_interface_type. CATCH cx_root INTO gv_w_cx_root. gv_mesg = gv_w_cx_root->get_text( ). MESSAGE gv_mesg TYPE 'E'. ENDTRY. * gv_fp_docparams-langu = vbdkl-spras. "v_n_1676779 gv_fp_docparams-langu = nast-spras. gv_fp_docparams-replangu1 = vbdkl-spras_vko. "sales org language gv_fp_docparams-replangu2 = gc_english. "^_n_1676779 gv_fp_docparams-country = vbdkl-land1. CALL FUNCTION gv_fm_name EXPORTING /1bcdwb/docparams = gv_fp_docparams vbdpl = gt_vbdpl deliveryheader = gs_shipment conf_out = gt_conf_out rdgtxtprt = gt_rdgtxtprt komser = gt_komser include_text = gs_inc_text dg_text = gt_dg repeat = gv_repeat IMPORTING "EHP5 /1bcdwb/formoutput = ls_pdf_file "EHP5 EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. * Enhancements for web dynpro pdf output ****EHP5 IF xscreen = 'W'. EXPORT lv_pdf_file = ls_pdf_file-pdf TO MEMORY ID 'PDF_FILE'. ELSE. *****************************Start of Note 1503297************************************************************ *sending Document out via mail or FAX IF xscreen IS INITIAL "In case of preview message should be displayed only AND ( nast-nacha EQ 5 OR nast-nacha EQ 2 ) AND ls_pdf_file IS NOT INITIAL. * get Email id from address no SELECT SINGLE smtp_addr FROM adr6 INTO lv_emailaddr WHERE addrnumber = addr_key-addrnumber AND flgdefault = abap_true. " When more than one address is maintained default address should be selected. " When there is only one mail id then that will have default flag set * Set FAX specific setting IF gv_comm_type EQ 'FAX' OR nast-nacha EQ 2. "n_2058966 IF nast-telfx IS INITIAL. "n_2058966 CONCATENATE gv_comm_values-adfax-fax_number "n_2058966 gv_comm_values-adfax-fax_extens INTO lv_outputparams_fax-telenum. ELSE. lv_outputparams_fax-telenum = nast-telfx. ENDIF. IF nast-tland IS INITIAL. lv_outputparams_fax-teleland = vbdkl-land1. ELSE. lv_outputparams_fax-teleland = nast-tland. ENDIF. ENDIF. IF gv_comm_type EQ 'FAX' OR gv_comm_type EQ 'INT' OR nast-nacha EQ 2. IF gv_comm_type = 'INT' AND gv_enhemail = abap_true. PERFORM send_data_int USING lv_emailaddr ls_pdf_file-pdf. ELSE. * ------------ Call BCS interface ---------------------------------- TRY. * ---------- create persistent send request ---------------------- send_request = cl_bcs=>create_persistent( ). * ---------- add document ---------------------------------------- * get PDF xstring and convert it to BCS format lp_pdf_size = xstrlen( ls_pdf_file-pdf ). PERFORM xstring_to_solix USING ls_pdf_file-pdf. lv_subject = gv_fp_outputparams-covtitle. document = cl_document_bcs=>create_document( i_type = 'PDF' " cf. RAW, DOC i_hex = gv_pdf_content i_length = lp_pdf_size i_subject = lv_subject ). "#EC NOTEXT * add document to send request send_request->set_document( document ). * --------- set sender ------------------------------------------- * note: this is necessary only if you want to set the sender * different from actual user (SY-UNAME). Otherwise sender is * set automatically with actual user. * * ---------- add recipient (e-mail address) ---------------------- CASE nast-nacha. WHEN 5. IF gv_comm_type EQ 'INT'. * add recipient (e-mail address) recipient = cl_cam_address_bcs=>create_internet_address( i_address_string = lv_emailaddr ). ELSE. * add recipient (fax address) recipient = cl_cam_address_bcs=>create_fax_address( i_country = lv_outputparams_fax-teleland i_number = lv_outputparams_fax-telenum ). ENDIF. WHEN 2. * add recipient (fax address) recipient = cl_cam_address_bcs=>create_fax_address( i_country = lv_outputparams_fax-teleland i_number = lv_outputparams_fax-telenum ). ENDCASE. * add recipient to send request send_request->add_recipient( i_recipient = recipient ). * ---------- send document --------------------------------------- lv_sent_to_all = send_request->send( i_with_error_screen = 'X' ). * Issue message and COMMINT only if the subroutine is not called in update task IF gv_inupd = 0. IF lv_sent_to_all = 'X'. MESSAGE i022(so). ENDIF. * ---------- explicit 'commit work' is mandatory! ---------------- COMMIT WORK. ENDIF. * ------------------------------------------------------------------ * * exception handling * ------------------------------------------------------------------ CATCH cx_bcs INTO bcs_exception. MESSAGE e451(so) WITH lv_outputparams_fax-telenum. retcode = 1. EXIT. ENDTRY. ENDIF. ENDIF. ENDIF. * Arching for adobe forms IF nast-tdarmod = 2 OR nast-tdarmod = 3. * Get the PDF length lp_pdf_size = xstrlen( ls_pdf_file-pdf ). * defaults for archive IF toa_dara-function = space. toa_dara-function = 'DARA'. ENDIF. * which format to be used for archiving: OTF or PDF? CALL FUNCTION 'ARCHIV_GET_PRINTFORMAT' EXPORTING application = 'PDF' IMPORTING printformat = lv_archiveformat. IF lv_archiveformat EQ 'PDF'. lv_documentclass = 'PDF'. CALL FUNCTION 'ARCHIV_CREATE_OUTGOINGDOCUMENT' EXPORTING arc_p = arc_params arc_i = toa_dara pdflen = lv_pdf_size documentclass = lv_documentclass "Since the output is in PDF document class is also PDF document = ls_pdf_file-pdf EXCEPTIONS error_archiv = 1 error_communicationtable = 2 error_connectiontable = 3 error_kernel = 4 error_parameter = 5 OTHERS = 6. CASE sy-subrc. WHEN 0. " o.k. WHEN 1. RAISE error_archiv. WHEN 2. RAISE error_communicationtable. WHEN 3. RAISE error_connectiontable. WHEN 4. RAISE error_kernel. WHEN 5. RAISE error_parameter. WHEN 6. RAISE error_archiv. "? ENDCASE. ELSE. " Other than PDF format raise error. MESSAGE e789(po) WITH lv_archiveformat. retcode = 1. ENDIF. ENDIF. ENDIF. *****************************End of Note 1503297************************************************************** *--------------------------------------------------------EHP5 REFRESH: gt_vbdpl,gt_conf_out,gt_rdgtxtprt,gt_komser. CLEAR : gv_repeat, gt_dg, gs_dg. ELSE. MESSAGE 'PDF form not available' TYPE 'I'. "#EC NOTEXT CALL FUNCTION 'AUTHORITY_CHECK_TCODE' "v_n_2127378 EXPORTING tcode = 'VL71' EXCEPTIONS ok = 1 not_ok = 2 OTHERS = 3. IF sy-subrc NE 1. MESSAGE e172(00) WITH 'VL71'. ENDIF. "^_n_2127378 CALL TRANSACTION 'VL71'. ENDIF. ENDFORM. " WRITE_PDF *&---------------------------------------------------------------------* *& Form FORM_OPEN_PDF *&---------------------------------------------------------------------* FORM form_open_pdf USING us_screen us_country . INCLUDE rvadopfo_pdf. ENDFORM. " FORM_OPEN_PDF *&---------------------------------------------------------------------* *& Form FORM_CLOSE_PDF *&---------------------------------------------------------------------* FORM form_close_pdf . CALL FUNCTION 'FP_JOB_CLOSE' EXCEPTIONS usage_error = 1 system_error = 2 internal_error = 3 OTHERS = 4. IF sy-subrc NE 0. retcode = 1. PERFORM protocol_update. ENDIF. SET COUNTRY space. ENDFORM. " FORM_CLOSE_PDF *************************Start of Note changes 1503297********************************* *&---------------------------------------------------------------------* *& Form xstring_to_solix *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->IP_XSTRING text *----------------------------------------------------------------------* FORM xstring_to_solix USING ip_xstring TYPE xstring. DATA: lp_offset TYPE i, lt_solix TYPE solix_tab, ls_solix_line TYPE solix, lp_pdf_string_len TYPE i, lp_solix_rows TYPE i, lp_last_row_length TYPE i, lp_row_length TYPE i. CLEAR gv_pdf_content. * transform xstring to SOLIX DESCRIBE TABLE lt_solix. lp_row_length = sy-tleng. lp_offset = 0. lp_pdf_string_len = xstrlen( ip_xstring ). lp_solix_rows = lp_pdf_string_len DIV lp_row_length. lp_last_row_length = lp_pdf_string_len MOD lp_row_length. DO lp_solix_rows TIMES. ls_solix_line-line = ip_xstring+lp_offset(lp_row_length). APPEND ls_solix_line TO gv_pdf_content. ADD lp_row_length TO lp_offset. ENDDO. IF lp_last_row_length > 0. CLEAR ls_solix_line-line. ls_solix_line-line = ip_xstring+lp_offset(lp_last_row_length). APPEND ls_solix_line TO gv_pdf_content. ENDIF. ENDFORM. "XSTRING_TO_SOLIX FORM check_email_badi_impl. gv_enhemail = abap_false. TRY. GET BADI go_badi_sd_sls_email FILTERS sd_email_progs = if_sd_email_process_constant=>delv_prt. IF go_badi_sd_sls_email IS BOUND. IF go_badi_sd_sls_email->imps IS NOT INITIAL. gv_enhemail = abap_true. ENDIF. ENDIF. * Catch not implemented exception or multiple implementation CATCH cx_badi_not_implemented. gv_enhemail = abap_false. CLEAR go_badi_sd_sls_email. CATCH cx_badi_multiply_implemented. CLEAR go_badi_sd_sls_email. ENDTRY. IF gv_enhemail EQ abap_true. TRY. * get Badi handle for obj mapper * filters any filters implement here GET BADI go_badi_mapper FILTERS sd_process_filter = if_sd_email_process_constant=>delv_prt. * Catch not implemented exception or multiple implementation CATCH cx_badi_not_implemented. CLEAR go_badi_mapper. CATCH cx_badi_multiply_implemented. CLEAR go_badi_mapper. ENDTRY. ENDIF. ENDFORM. *&------------------------------------------------------------------* * Output Control Email-Enhancement - New Form open * using screen, country. *&------------------------------------------------------------------* FORM form_open_new USING us_screen us_country. DATA: lvs_recipient LIKE swotobjid, lvs_sender LIKE swotobjid, lvf_device(30) TYPE c, ls_addr_key TYPE addr_key, lvs_itcpo TYPE itcpo. *set address key data for FM call ls_addr_key-addr_type = vbdkl-address_type. ls_addr_key-addrnumber = vbdkl-adrnr. ls_addr_key-persnumber = vbdkl-adrnp. *calling FM to get address data CALL FUNCTION 'SD_PDF_HELPER' EXPORTING is_addr_key = ls_addr_key is_nast = nast iv_prog_id = sy-repid iv_country = vbdkl-land1 iv_screen = us_screen IMPORTING es_address = gv_address es_recipient = lvs_recipient es_sender = lvs_sender es_itcpo = lvs_itcpo ev_device = lvf_device EXCEPTIONS otf_data_exception = 1 address_exception = 2 comm_type_exception = 3 OTHERS = 4. IF sy-subrc <> 0. * Implement suitable error handling here PERFORM protocol_update. retcode = 1. ENDIF. *Before calling open_form - set device to printer which will not trigger email send * and request OTF data by setting itcpo table - tdgetotf lvf_device = 'PRINTER'. lvs_itcpo-tdgetotf = 'X'. * open form CALL FUNCTION 'OPEN_FORM' EXPORTING * APPLICATION = 'TX' archive_index = toa_dara archive_params = arc_params device = lvf_device dialog = ' ' form = tnapr-fonam language = nast-spras options = lvs_itcpo mail_sender = lvs_sender mail_recipient = lvs_recipient * MAIL_APPL_OBJECT = ' ' * RAW_DATA_INTERFACE = '*' * IMPORTING * LANGUAGE = * NEW_ARCHIVE_PARAMS = * RESULT = EXCEPTIONS canceled = 1 device = 2 form = 3 options = 4 unclosed = 5 mail_options = 6 archive_error = 7 OTHERS = 8. IF sy-subrc NE 0. CASE sy-subrc. WHEN 7. retcode = sy-subrc. syst-msgid = 'VN'. syst-msgno = '096'. syst-msgty = 'E'. syst-msgv1 = nast-kschl. syst-msgv2 = nast-kappl. PERFORM protocol_update. WHEN OTHERS. retcode = sy-subrc. PERFORM protocol_update. ENDCASE. ENDIF. ENDFORM. *&------------------------------------------------------------------* * Output Control Email-Enhancement - New Form close * *&------------------------------------------------------------------* FORM form_close_new. DATA: i_itcpp LIKE itcpp, t_lines LIKE tline OCCURS 100 WITH HEADER LINE. CALL FUNCTION 'CLOSE_FORM' IMPORTING result = i_itcpp TABLES otfdata = otf_data. SET COUNTRY space. *calling FM to get otf data CALL FUNCTION 'SD_PDF_HELPER' EXPORTING is_otf_data = otf_data is_nast = nast IMPORTING es_pdf_file = gv_pdf EXCEPTIONS otf_data_exception = 1 address_exception = 2 comm_type_exception = 3 OTHERS = 4. IF sy-subrc <> 0. * Implement suitable error handling here PERFORM protocol_update. retcode = 1. ENDIF. PERFORM send_data_int USING gv_address-smtp_addr gv_pdf. CHECK retcode = 0. ENDFORM. FORM send_data_int USING uv_emailaddr TYPE adr6-smtp_addr us_pdf_file TYPE fpcontent. DATA: ls_ztype TYPE type_sd_s_map, lt_mail_text TYPE bcsy_text, lt_adsmtp TYPE TABLE OF adsmtp, lt_adfax TYPE TABLE OF adfax, ls_adsmtp TYPE adsmtp, ls_adfax TYPE adfax, ls_address TYPE sdprt_addr_s, lv_date(14) TYPE c, lv_mail_subject TYPE so_obj_des, lv_send_to_all TYPE os_boolean, ls_enh_flag TYPE char1, ls_email_rcp TYPE smtp_sd_sls_addr_s, ls_email_sendr TYPE smtp_sd_sls_addr_s, lo_cl_bcs TYPE REF TO cl_bcs, ls_file_attribs TYPE file_attributes_s, lv_dummy TYPE char1, ls_item_vbdpl TYPE vbdpl, lt_item_vbdpl TYPE ops_rvaddn01_vbdpl_t_pdf, lv_vbeln TYPE vbeln. CONSTANTS: lc_true TYPE char1 VALUE 'X'. ls_email_rcp-email_addr = uv_emailaddr. DATA: lt_email_addr TYPE adr6_tt. "select * from adr6 into table lt_email_addr where addrnumber = -adrnr. IF go_badi_sd_sls_email IS BOUND. IF go_badi_mapper IS BOUND. IF go_badi_mapper->imps IS NOT INITIAL. *Move all items to item table type for Badi use LOOP AT tvbdpl. CLEAR ls_item_vbdpl. ls_item_vbdpl = tvbdpl. APPEND ls_item_vbdpl TO lt_item_vbdpl. ENDLOOP. CALL BADI go_badi_mapper->set_dlv_to_generic EXPORTING is_header_details = vbdkl it_item_details = lt_item_vbdpl. * Call BAdI for modify email details CALL BADI go_badi_sd_sls_email->set_mapper EXPORTING io_mapper = go_badi_mapper->imp. IF sy-subrc <> 0. RETURN. ENDIF. ENDIF. ENDIF. CALL BADI go_badi_sd_sls_email->modify_email EXPORTING iv_language = nast-spras is_email_rcp = ls_email_rcp is_email_sendr = ls_email_sendr CHANGING io_cl_bcs = lo_cl_bcs EXCEPTIONS exc_send_req_bcs = 1 exc_address_bcs = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE e000(so) WITH vbdkl-tdname INTO gv_dummy. PERFORM protocol_update. retcode = 99. RETURN. ENDIF. * add Exceptions for process document method and check response. ls_file_attribs-pdf_file-pdf = us_pdf_file. lv_mail_subject = gv_fp_outputparams-covtitle. CALL BADI go_badi_sd_sls_email->process_document EXPORTING iv_language = nast-spras iv_text = lt_mail_text iv_subject = lv_mail_subject is_file_attribs = ls_file_attribs CHANGING io_cl_bcs = lo_cl_bcs EXCEPTIONS exc_send_req_bcs = 1 exc_document_bcs = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE e000(so) WITH vbdkl-tdname INTO gv_dummy. PERFORM protocol_update. retcode = 99. RETURN. ENDIF. * Send Document CALL BADI go_badi_sd_sls_email->send_document EXPORTING io_cl_bcs = lo_cl_bcs CHANGING ev_send_to_all = lv_send_to_all EXCEPTIONS exc_send_req_bcs = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE e000(so) WITH vbdkl-vgbel INTO gv_dummy. PERFORM protocol_update. retcode = 99. RETURN. ENDIF. IF lv_send_to_all = lc_true. * Write success message into log MESSAGE i022(so) INTO gv_dummy. PERFORM protocol_update. ELSE. * Write fail message into log MESSAGE i023(so) WITH vbdkl-tdname INTO gv_dummy. PERFORM protocol_update. ENDIF. ENDIF. ENDFORM. *************************End of Note changes 1503297********************************* *&------------------------------------------------------------------* * Output Control Email-Enhancement - Archiving * *&------------------------------------------------------------------* FORM archive_data. FIELD-SYMBOLS: TYPE arc_params. FIELD-SYMBOLS: . DATA: lv_arc TYPE string VALUE '(SAPLSTXC)ARC_PARAMS'. DATA: BEGIN OF archive_otf OCCURS 0. INCLUDE STRUCTURE itcoo. DATA: END OF archive_otf. DATA: archive_params TYPE arc_params. DATA: length(2) TYPE n. DATA: offset TYPE i. DATA: new_form TYPE abap_bool. CHECK ( gv_enhemail = abap_true ). CHECK ( otf_data[] IS NOT INITIAL ). CHECK ( ( nast-tdarmod = 2 ) OR ( nast-tdarmod = 3 ) ). ASSIGN (lv_arc) TO . CHECK sy-subrc = 0. archive_params = . IF IS ASSIGNED. UNASSIGN . ENDIF. LOOP AT otf_data ASSIGNING FIELD-SYMBOL(). archive_otf = . IF archive_otf-tdprintcom = 'MC'. IF new_form = abap_true. * next form starts, archive current form PERFORM otf_archive(saplstxc) TABLES archive_otf USING archive_params toa_dara. REFRESH archive_otf. archive_otf = . CLEAR: toa_dara, length, offset, new_form. ENDIF. * collect data from MC... cmds into TOA_DARA structure length = archive_otf-tdprintpar+1(2). "length of MC_xx... data IF length > 0. ASSIGN toa_dara+offset(length) TO . = archive_otf-tdprintpar+3. ADD length TO offset. ENDIF. IF archive_otf-tdprintpar(1) = 'X'. * this is the end of MC... archive index data new_form = abap_true. ENDIF. ENDIF. APPEND archive_otf. ENDLOOP. IF new_form = abap_true. * archive last form PERFORM otf_archive(saplstxc) TABLES archive_otf USING archive_params toa_dara. FREE archive_otf. CLEAR: toa_dara, length, offset, new_form. ENDIF. ENDFORM. INCLUDE dor01_f01. *&---------------------------------------------------------------------* *& Form get_output_params *&---------------------------------------------------------------------* FORM get_output_params. DATA: ls_itcpo TYPE itcpo, lvf_device(30) TYPE c, lvf_dialog(1) TYPE c VALUE ' ', lvf_program LIKE sy-repid. * reset return code retcode = 0. * convert communication data MOVE-CORRESPONDING nast TO gs_intnast. MOVE sy-repid TO gv_xprogramm. CALL FUNCTION 'CONVERT_COMM_TYPE_DATA' EXPORTING pi_comm_type = gv_comm_type pi_comm_values = gv_comm_values pi_country = vbdkl-land1 pi_screen = xscreen pi_repid = gv_xprogramm pi_snast = gs_intnast IMPORTING pe_itcpo = ls_itcpo pe_device = gv_fp_outputparams-device pe_mail_recipient = gs_recipient pe_mail_sender = gs_sender EXCEPTIONS comm_type_not_supported = 1 recipient_creation_failed = 2 sender_creation_failed = 3 OTHERS = 4. IF sy-subrc <> 0. CALL FUNCTION 'NAST_PROTOCOL_UPDATE' EXPORTING msg_arbgb = sy-msgid msg_nr = sy-msgno msg_ty = sy-msgty msg_v1 = sy-msgv1 msg_v2 = sy-msgv2 msg_v3 = sy-msgv3 msg_v4 = sy-msgv4 EXCEPTIONS OTHERS = 1. retcode = 1. EXIT. ENDIF. * if there is no communication type IF gv_comm_type IS INITIAL. * set device gv_fp_outputparams-device = 'PRINTER'. IF ls_itcpo-tdpreview EQ 'X'. gv_fp_outputparams-nodialog = 'X'. ENDIF. ENDIF. gv_fp_outputparams-preview = ls_itcpo-tdpreview. gv_fp_outputparams-dest = ls_itcpo-tddest. gv_fp_outputparams-reqnew = ls_itcpo-tdnewid. gv_fp_outputparams-reqimm = ls_itcpo-tdimmed. gv_fp_outputparams-reqdel = ls_itcpo-tddelete. gv_fp_outputparams-reqfinal = ls_itcpo-tdfinal. gv_fp_outputparams-senddate = ls_itcpo-tdsenddate. gv_fp_outputparams-sendtime = ls_itcpo-tdsendtime. gv_fp_outputparams-schedule = ls_itcpo-tdschedule. gv_fp_outputparams-copies = ls_itcpo-tdcopies. gv_fp_outputparams-dataset = ls_itcpo-tddataset. gv_fp_outputparams-suffix1 = ls_itcpo-tdsuffix1. gv_fp_outputparams-suffix2 = ls_itcpo-tdsuffix2. gv_fp_outputparams-covtitle = ls_itcpo-tdcovtitle. gv_fp_outputparams-cover = ls_itcpo-tdcover. gv_fp_outputparams-receiver = ls_itcpo-tdreceiver. gv_fp_outputparams-division = ls_itcpo-tddivision. gv_fp_outputparams-lifetime = ls_itcpo-tdlifetime. gv_fp_outputparams-authority = ls_itcpo-tdautority. gv_fp_outputparams-rqposname = ls_itcpo-rqposname. gv_fp_outputparams-arcmode = ls_itcpo-tdarmod. gv_fp_outputparams-noarmch = ls_itcpo-tdnoarmch. gv_fp_outputparams-title = ls_itcpo-tdtitle. gv_fp_outputparams-nopreview = ls_itcpo-tdnoprev. gv_fp_outputparams-noprint = ls_itcpo-tdnoprint. ENDFORM. " get_output_params