<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Send mail in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523003#M571271</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please can anybody provide me a sample code of send mail.&lt;/P&gt;&lt;P&gt;My requirement is, in selection screen I am entering file path in one field and  email id in another field, when I submit the file needs to send to the email id mentioned in the eselction screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Shreekant&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 18 Jul 2007 04:38:16 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-07-18T04:38:16Z</dc:date>
    <item>
      <title>Send mail</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523003#M571271</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please can anybody provide me a sample code of send mail.&lt;/P&gt;&lt;P&gt;My requirement is, in selection screen I am entering file path in one field and  email id in another field, when I submit the file needs to send to the email id mentioned in the eselction screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Shreekant&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2007 04:38:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523003#M571271</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-18T04:38:16Z</dc:date>
    </item>
    <item>
      <title>Re: Send mail</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523004#M571272</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;refer this codes, u may need to create email id in SCOT tcode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZMBJ_EMAIL_ATTACH
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

report  zmbj_email_attach.

tables: ekko.

parameters: p_email type somlreci1-receiver default 'jogdand.machindra@arteriatech.com'.


types: begin of t_ekpo,
ebeln type ekpo-ebeln,
ebelp type ekpo-ebelp,
aedat type ekpo-aedat,
matnr type ekpo-matnr,
end of t_ekpo.
data: it_ekpo type standard table of t_ekpo initial size 0,
wa_ekpo type t_ekpo.

types: begin of t_charekpo,
ebeln(10) type c,
ebelp(5) type c,
aedat(8) type c,
matnr(18) type c,
end of t_charekpo.
data: wa_charekpo type t_charekpo.

data: it_message type standard table of solisti1 initial size 0
with header line.
data: it_attach type standard table of solisti1 initial size 0
with header line.


data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,

w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1,
gd_error type sy-subrc,
gd_reciever type sy-subrc.
t_object_header = 'Text.xls'. append t_object_header.

************************************************************************
*START_OF_SELECTION
start-of-selection.
* Retrieve sample data from table ekpo
perform data_retrieval.

* Populate table with detaisl to be entered into .xls file
perform build_xls_data_table.


************************************************************************
*END-OF-SELECTION
end-of-selection.
* Populate message body text
perform populate_email_message_body.

* Send file by email as .xls speadsheet
perform send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
' '
' '
' '
changing gd_error
gd_reciever.

* Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form DATA_RETRIEVAL
*&amp;amp;---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
form data_retrieval.
select ebeln ebelp aedat matnr
up to 10 rows
from ekpo
into table it_ekpo.
endform. " DATA_RETRIEVAL


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form BUILD_XLS_DATA_TABLE
*&amp;amp;---------------------------------------------------------------------*
* Build data table for .xls document
*----------------------------------------------------------------------*
form build_xls_data_table.
*CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
*con_tab TYPE x VALUE '09'. "OK for non Unicode

*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
constants:
 con_tab type c value cl_abap_char_utilities=&amp;gt;horizontal_tab,
 con_cret type c value cl_abap_char_utilities=&amp;gt;cr_lf.


concatenate 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
into it_attach separated by con_tab.
concatenate con_cret it_attach into it_attach.
append it_attach.

loop at it_ekpo into wa_charekpo.
concatenate wa_charekpo-ebeln wa_charekpo-ebelp
wa_charekpo-aedat wa_charekpo-matnr
into it_attach separated by con_tab.
concatenate con_cret it_attach into it_attach.
append it_attach.
endloop.
endform. " BUILD_XLS_DATA_TABLE


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form SEND_FILE_AS_EMAIL_ATTACHMENT
*&amp;amp;---------------------------------------------------------------------*
* Send email
*----------------------------------------------------------------------*
form send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.


data: ld_error type sy-subrc,
ld_reciever type sy-subrc,
ld_mtitle like sodocchgi1-obj_descr,
ld_email like somlreci1-receiver,
ld_format type so_obj_tp ,
ld_attdescription type so_obj_nam ,
ld_attfilename type so_obj_des ,
ld_sender_address like soextreci1-receiver,
ld_sender_address_type like soextreci1-adr_typ,
ld_receiver like sy-subrc.

ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.


* Fill the document data.
w_doc_data-doc_size = 1.

* Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.

* Fill the document data and get size of attachment
clear w_doc_data.
read table it_attach index w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + strlen( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
clear t_attachment.
refresh t_attachment.
t_attachment[] = pit_attach[].

* Describe the body of the message
clear t_packing_list.
refresh t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
describe table it_message lines t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
append t_packing_list.

* Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.

describe table t_attachment lines t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
append t_packing_list.

* Add the recipients email address
clear t_receivers.
refresh t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
append t_receivers.

call function 'SO_DOCUMENT_SEND_API1'
exporting
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
importing
sent_to_all = w_sent_all
tables
object_header = t_object_header
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
exceptions
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
others = 8.

* Populate zerror return code
ld_error = sy-subrc.

* Populate zreceiver return code
loop at t_receivers.
ld_receiver = t_receivers-retrn_code.
endloop.
endform.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form INITIATE_MAIL_EXECUTE_PROGRAM
*&amp;amp;---------------------------------------------------------------------*
* Instructs mail send program for SAPCONNECT to send email.
*----------------------------------------------------------------------*
form initiate_mail_execute_program.
wait up to 2 seconds.
submit rsconn01 with mode = 'INT'
with output = 'X'
and return.
endform. " INITIATE_MAIL_EXECUTE_PROGRAM


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form POPULATE_EMAIL_MESSAGE_BODY
*&amp;amp;---------------------------------------------------------------------*
* Populate message body text
*----------------------------------------------------------------------*
form populate_email_message_body.
refresh it_message.
it_message = 'Please find attached a list test ekpo records'.
append it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODY&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jogdand M B&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2007 04:41:57 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523004#M571272</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-18T04:41:57Z</dc:date>
    </item>
    <item>
      <title>Re: Send mail</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523005#M571273</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Check this code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS: psubject(40) type c default  &amp;#145;Hello&amp;#146;,&lt;/P&gt;&lt;P&gt;p_email(40)   type c default &amp;#145;test@sapdev.co.uk&amp;#146; .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:   it_packing_list like sopcklsti1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;it_contents like solisti1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;it_receivers like somlreci1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;it_attachment like solisti1 occurs 0 with header line,&lt;/P&gt;&lt;P&gt;gd_cnt type i,&lt;/P&gt;&lt;P&gt;gd_sent_all(1) type c,&lt;/P&gt;&lt;P&gt;gd_doc_data like sodocchgi1,&lt;/P&gt;&lt;P&gt;gd_error type sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:   it_message type standard table of SOLISTI1 initial size 0&lt;/P&gt;&lt;P&gt;with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&lt;/P&gt;&lt;P&gt;*START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Perform populate_message_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Send email message, although is not sent from SAP until mail send&lt;/P&gt;&lt;P&gt;*program has been executed(rsconn01)&lt;/P&gt;&lt;P&gt;PERFORM send_email_message.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Instructs mail send program for SAPCONNECT to send email(rsconn01)&lt;/P&gt;&lt;P&gt;perform initiate_mail_execute_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  POPULATE_MESSAGE_TABLE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Adds text to email text table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;-&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;form populate_message_table.&lt;/P&gt;&lt;P&gt;Append &amp;#145;Email line 1&amp;amp;#8242; to it_message.&lt;/P&gt;&lt;P&gt;Append &amp;#145;Email line 2&amp;amp;#8242; to it_message.&lt;/P&gt;&lt;P&gt;Append &amp;#145;Email line 3&amp;amp;#8242; to it_message.&lt;/P&gt;&lt;P&gt;Append &amp;#145;Email line 4&amp;amp;#8242; to it_message.&lt;/P&gt;&lt;P&gt;endform.                    &amp;#148; POPULATE_MESSAGE_TABLE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SEND_EMAIL_MESSAGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Send email message&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;-&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;form send_email_message.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fill the document data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gd_doc_data-doc_size = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Populate the subject/generic message attributes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gd_doc_data-obj_langu = sy-langu.&lt;/P&gt;&lt;P&gt;gd_doc_data-obj_name  = &amp;#145;SAPRPT&amp;#146;.&lt;/P&gt;&lt;P&gt;gd_doc_data-obj_descr = psubject.&lt;/P&gt;&lt;P&gt;gd_doc_data-sensitivty = &amp;#145;F&amp;#146;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Describe the body of the message&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;clear it_packing_list.&lt;/P&gt;&lt;P&gt;refresh it_packing_list.&lt;/P&gt;&lt;P&gt;it_packing_list-transf_bin = space.&lt;/P&gt;&lt;P&gt;it_packing_list-head_start = 1.&lt;/P&gt;&lt;P&gt;it_packing_list-head_num = 0.&lt;/P&gt;&lt;P&gt;it_packing_list-body_start = 1.&lt;/P&gt;&lt;P&gt;describe table it_message lines it_packing_list-body_num.&lt;/P&gt;&lt;P&gt;it_packing_list-doc_type = &amp;#145;RAW&amp;#146;.&lt;/P&gt;&lt;P&gt;append it_packing_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add the recipients email address&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;clear it_receivers.&lt;/P&gt;&lt;P&gt;refresh it_receivers.&lt;/P&gt;&lt;P&gt;it_receivers-receiver = p_email.&lt;/P&gt;&lt;P&gt;it_receivers-rec_type = &amp;#145;U&amp;#146;.&lt;/P&gt;&lt;P&gt;it_receivers-com_type = &amp;#145;INT&amp;#146;.&lt;/P&gt;&lt;P&gt;it_receivers-notif_del = &amp;#145;X&amp;#146;.&lt;/P&gt;&lt;P&gt;it_receivers-notif_ndel = &amp;#145;X&amp;#146;.&lt;/P&gt;&lt;P&gt;append it_receivers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Call the FM to post the message to SAPMAIL&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;call function &amp;#145;SO_NEW_DOCUMENT_ATT_SEND_API1&amp;amp;#8242;&lt;/P&gt;&lt;P&gt;exporting&lt;/P&gt;&lt;P&gt;document_data              = gd_doc_data&lt;/P&gt;&lt;P&gt;put_in_outbox              = &amp;#145;X&amp;#146;&lt;/P&gt;&lt;P&gt;importing&lt;/P&gt;&lt;P&gt;sent_to_all                = gd_sent_all&lt;/P&gt;&lt;P&gt;tables&lt;/P&gt;&lt;P&gt;packing_list               = it_packing_list&lt;/P&gt;&lt;P&gt;contents_txt               = it_message&lt;/P&gt;&lt;P&gt;receivers                  = it_receivers&lt;/P&gt;&lt;P&gt;exceptions&lt;/P&gt;&lt;P&gt;too_many_receivers         = 1&lt;/P&gt;&lt;P&gt;document_not_sent          = 2&lt;/P&gt;&lt;P&gt;document_type_not_exist    = 3&lt;/P&gt;&lt;P&gt;operation_no_authorization = 4&lt;/P&gt;&lt;P&gt;parameter_error            = 5&lt;/P&gt;&lt;P&gt;x_error                    = 6&lt;/P&gt;&lt;P&gt;enqueue_error              = 7&lt;/P&gt;&lt;P&gt;others                     = 8.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Store function module return code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;gd_error = sy-subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get it_receivers return code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;loop at it_receivers.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;endform.                    &amp;#148; SEND_EMAIL_MESSAGE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  INITIATE_MAIL_EXECUTE_PROGRAM&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Instructs mail send program for SAPCONNECT to send email.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;&amp;#151;-&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;form initiate_mail_execute_program.&lt;/P&gt;&lt;P&gt;wait up to 2 seconds.&lt;/P&gt;&lt;P&gt;if gd_error eq 0.&lt;/P&gt;&lt;P&gt;submit rsconn01 with mode = &amp;#145;INT&amp;#146;&lt;/P&gt;&lt;P&gt;with output = &amp;#145;X&amp;#146;&lt;/P&gt;&lt;P&gt;and return.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;endform.                    &amp;#148; INITIATE_MAIL_EXECUTE_PROGRAM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/articles/SAP_Mail_UNIX_Example_ABAP.asp" target="test_blank"&gt;http://www.thespot4sap.com/articles/SAP_Mail_UNIX_Example_ABAP.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/articles/SAP_Mail_Example_ABAP.asp" target="test_blank"&gt;http://www.thespot4sap.com/articles/SAP_Mail_Example_ABAP.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;also check these thread&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Gaurav&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2007 04:46:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523005#M571273</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-18T04:46:48Z</dc:date>
    </item>
    <item>
      <title>Re: Send mail</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523006#M571274</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shreekant&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; Please find the sample code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Change History&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Programmer   Date     Change Request Description&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FKHURRAM     9/16/02  DU1K920151     Upgrade changes.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                     Use ADRC for Address Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             Print of an order confirmation by SAPscript&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;REPORT rvador01 LINE-COUNT 100 MESSAGE-ID vn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: komk,                          "Communicationarea for conditions&lt;/P&gt;&lt;P&gt;        komp,                          "Communicationarea for conditions&lt;/P&gt;&lt;P&gt;        komvd,                         "Communicationarea for conditions&lt;/P&gt;&lt;P&gt;        vbco3,                         "Communicationarea for view&lt;/P&gt;&lt;P&gt;        vbdka,                         "Headerview&lt;/P&gt;&lt;P&gt;        vbdpa,                         "Itemview&lt;/P&gt;&lt;P&gt;        vbdpau,                        "Subitemnumbers&lt;/P&gt;&lt;P&gt;        conf_out,                      "Configuration data&lt;/P&gt;&lt;P&gt;        sadr,                          "Addresses&lt;/P&gt;&lt;P&gt;        tvag,                          "Reason for rejection&lt;/P&gt;&lt;P&gt;        vedka,                         "Servicecontract head data&lt;/P&gt;&lt;P&gt;        vedpa,                         "Servicecontract position data&lt;/P&gt;&lt;P&gt;        vedkn,                         "Servicecontract head notice data&lt;/P&gt;&lt;P&gt;        vedpn,                         "Servicecontract pos. notice data&lt;/P&gt;&lt;P&gt;        vbpa,                          "Sales Document: Partner&lt;/P&gt;&lt;P&gt;        kna1,                          "General Data in Customer Master&lt;/P&gt;&lt;P&gt;        riserls,                       "Serialnumbers&lt;/P&gt;&lt;P&gt;        komser,                        "Serialnumbers for print&lt;/P&gt;&lt;P&gt;        tvbur,                         "Sales office&lt;/P&gt;&lt;P&gt;        tvko,                          "Sales organisation&lt;/P&gt;&lt;P&gt;        adrs,                          "Communicationarea for Address&lt;/P&gt;&lt;P&gt;        fpltdr.                        "billing schedules&lt;/P&gt;&lt;P&gt;INCLUDE yzrvadtabl.&lt;/P&gt;&lt;P&gt;*INCLUDE RVADTABL.&lt;/P&gt;&lt;P&gt;INCLUDE yzrvdirekt.&lt;/P&gt;&lt;P&gt;*INCLUDE RVDIREKT.&lt;/P&gt;&lt;P&gt;INCLUDE yzvedadata.&lt;/P&gt;&lt;P&gt;*INCLUDE VEDADATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: retcode   LIKE sy-subrc.         "Returncode&lt;/P&gt;&lt;P&gt;DATA: repeat(1) TYPE c.&lt;/P&gt;&lt;P&gt;DATA: xscreen(1) TYPE c.               "Output on printer or screen&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF steu,                   "Controldata for output&lt;/P&gt;&lt;P&gt;        vdkex(1) TYPE c,&lt;/P&gt;&lt;P&gt;        vdpex(1) TYPE c,&lt;/P&gt;&lt;P&gt;        kbkex(1) TYPE c,&lt;/P&gt;&lt;P&gt;        kbpex(1) TYPE c,&lt;/P&gt;&lt;P&gt;      END OF steu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tvbdpa OCCURS 0.        "Internal table for items&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE vbdpa.&lt;/P&gt;&lt;P&gt;DATA: END OF tvbdpa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomv OCCURS 50.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE komv.&lt;/P&gt;&lt;P&gt;DATA: END OF tkomv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomvd OCCURS 50.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE komvd.&lt;/P&gt;&lt;P&gt;DATA: END OF tkomvd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tvbdpau OCCURS 5.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE vbdpau.&lt;/P&gt;&lt;P&gt;DATA: END   OF tvbdpau.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomcon OCCURS 50.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE conf_out.&lt;/P&gt;&lt;P&gt;DATA: END   OF tkomcon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomservh OCCURS 1.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE vedka.&lt;/P&gt;&lt;P&gt;DATA: END   OF tkomservh.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomservp OCCURS 5.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE vedpa.&lt;/P&gt;&lt;P&gt;DATA: END   OF tkomservp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomservhn OCCURS 5.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE vedkn.&lt;/P&gt;&lt;P&gt;DATA: END   OF tkomservhn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomservpn OCCURS 5.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE vedpn.&lt;/P&gt;&lt;P&gt;DATA: END   OF tkomservpn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomser OCCURS 5.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE riserls.&lt;/P&gt;&lt;P&gt;DATA: END   OF tkomser.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tkomser_print OCCURS 5.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE komser.&lt;/P&gt;&lt;P&gt;DATA: END   OF tkomser_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF tfpltdr OCCURS 5.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE fpltdr.&lt;/P&gt;&lt;P&gt;DATA: END   OF tfpltdr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: pr_kappl(01)   TYPE c VALUE 'V'. "Application for pricing&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF char_val OCCURS 0,&lt;/P&gt;&lt;P&gt;        atnam LIKE cabn-atnam,&lt;/P&gt;&lt;P&gt;        atwrt LIKE ausp-atwrt,&lt;/P&gt;&lt;P&gt;      END OF char_val.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM entry USING return_code us_screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR retcode.&lt;/P&gt;&lt;P&gt;  xscreen = us_screen.&lt;/P&gt;&lt;P&gt;  PERFORM processing.&lt;/P&gt;&lt;P&gt;  IF retcode NE 0.&lt;/P&gt;&lt;P&gt;    return_code = 1.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    return_code = 0.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ENTRY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM PROCESSING                                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM processing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_data.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM form_open USING xscreen vbdka-land1.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM logo_selection.&lt;/P&gt;&lt;P&gt;  PERFORM form_title_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM write_header_info.&lt;/P&gt;&lt;P&gt;  PERFORM validity_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM header_data_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM header_serv_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM header_notice_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM header_inter_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM header_text_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM item_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM end_print.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;  PERFORM form_close.&lt;/P&gt;&lt;P&gt;  CHECK retcode = 0.&lt;/P&gt;&lt;P&gt;*********************&lt;STRONG&gt;changes on 12/04/2007&lt;/STRONG&gt;****************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TABLES: tsp01.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TYPES: BEGIN OF t_spool,&lt;/P&gt;&lt;P&gt;         rqident TYPE tsp01-rqident,&lt;/P&gt;&lt;P&gt;        END OF t_spool.&lt;/P&gt;&lt;P&gt;  DATA: i_spool TYPE STANDARD TABLE OF t_spool,&lt;/P&gt;&lt;P&gt;        wa_spool TYPE t_spool.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT  rqident FROM tsp01&lt;/P&gt;&lt;P&gt;  INTO TABLE i_spool&lt;/P&gt;&lt;P&gt; WHERE rqowner = sy-uname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_spool DESCENDING BY rqident.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT i_spool INTO wa_spool.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; data: l_rqident type tsp01-rqident.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; SELECT SINGLE rqident FROM tsp01 INTO l_rqident&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; WHERE rqowner = sy-uname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; DATA: l_spoolno LIKE tsp01-rqident VALUE '0000024884'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TYPES: l_ty_tab_pdf TYPE tline OCCURS 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: l_pdf TYPE l_ty_tab_pdf,&lt;/P&gt;&lt;P&gt;        l_spool TYPE tsp01-rqident.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Type for binary attachment table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TYPES: l_ty_tab_objbin TYPE solisti1 OCCURS 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: l_objbin TYPE l_ty_tab_objbin.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; l_spool = l_spoolno.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  l_spool = l_rqident.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_spool = wa_spool-rqident.&lt;/P&gt;&lt;P&gt;**/ Call the standard function&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'             "#EC ARGCHECKED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        src_spoolid                    = l_spool&lt;/P&gt;&lt;P&gt;        no_dialog                      = ' '&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      DST_DEVICE                     =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      PDF_DESTINATION                =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       pdf_bytecount                  = numbytes&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       pdf_spoolid                    = pdfspoolid&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;      LIST_PAGECOUNT                 =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       btc_jobname                    = jobname&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       btc_jobcount                   = jobcount&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        pdf                            = l_pdf&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        err_no_abap_spooljob           = 1&lt;/P&gt;&lt;P&gt;        err_no_spooljob                = 2&lt;/P&gt;&lt;P&gt;        err_no_permission              = 3&lt;/P&gt;&lt;P&gt;        err_conv_not_possible          = 4&lt;/P&gt;&lt;P&gt;        err_bad_destdevice             = 5&lt;/P&gt;&lt;P&gt;        user_cancelled                 = 6&lt;/P&gt;&lt;P&gt;        err_spoolerror                 = 7&lt;/P&gt;&lt;P&gt;        err_temseerror                 = 8&lt;/P&gt;&lt;P&gt;        err_btcjob_open_failed         = 9&lt;/P&gt;&lt;P&gt;        err_btcjob_submit_failed       = 10&lt;/P&gt;&lt;P&gt;        err_btcjob_close_failed        = 11&lt;/P&gt;&lt;P&gt;        OTHERS                         = 12.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    WRITE: / 'error', sy-subrc.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**/ Convert the PDF format to the table type required for the&lt;/P&gt;&lt;P&gt;*attachment.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'QCE1_CONVERT'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_source_tab         = l_pdf&lt;/P&gt;&lt;P&gt;      t_target_tab         = l_objbin&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      convert_not_possible = 1&lt;/P&gt;&lt;P&gt;      OTHERS               = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    WRITE: / 'error', sy-subrc.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TABLES : soli.&lt;/P&gt;&lt;P&gt;  TABLES : zpsdsalrep.&lt;/P&gt;&lt;P&gt;  DATA: v_email TYPE soli-line.&lt;/P&gt;&lt;P&gt;  DATA: v_email1 TYPE soli-line.&lt;/P&gt;&lt;P&gt;  DATA: l_adrnr LIKE kna1-adrnr.&lt;/P&gt;&lt;P&gt;  DATA: l_objky TYPE nast-objky.&lt;/P&gt;&lt;P&gt;  DATA: l_zzterrmg TYPE zpsdsalrep-zzterrmg.&lt;/P&gt;&lt;P&gt;  DATA: l_zsupervisor TYPE zpsdsalrep-zsupervisor.&lt;/P&gt;&lt;P&gt;  DATA: l_kunnr TYPE kna1-kunnr.&lt;/P&gt;&lt;P&gt;  DATA: l_kunnr1 TYPE vbak-kunnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE kunnr FROM vbak INTO l_kunnr1&lt;/P&gt;&lt;P&gt;         WHERE vbeln = nast-objky.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE adrnr FROM kna1 INTO l_adrnr&lt;/P&gt;&lt;P&gt;         WHERE kunnr = l_kunnr1.&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE smtp_addr FROM adr6 INTO v_email&lt;/P&gt;&lt;P&gt;         WHERE addrnumber = l_adrnr.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE zzterrmg FROM zpsdsalrep INTO l_zzterrmg&lt;/P&gt;&lt;P&gt;         WHERE zzsalesrep = l_kunnr1.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE zsupervisor FROM zpsdsalrep INTO l_zsupervisor&lt;/P&gt;&lt;P&gt;      WHERE  zzterrmg = l_zzterrmg.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE kunnr FROM kna1 INTO l_kunnr&lt;/P&gt;&lt;P&gt;        WHERE sortl = l_zsupervisor.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE adrnr FROM kna1 INTO l_adrnr&lt;/P&gt;&lt;P&gt;         WHERE kunnr = l_kunnr.&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE smtp_addr FROM adr6 INTO v_email1&lt;/P&gt;&lt;P&gt;         WHERE addrnumber = l_adrnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: l_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: l_objtxt    LIKE solisti1 OCCURS   0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: l_objpack   LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: l_doc_chng  LIKE sodocchgi1.&lt;/P&gt;&lt;P&gt;  DATA: l_objhead   LIKE solisti1 OCCURS   0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: l_tab_lines LIKE sy-tabix.&lt;/P&gt;&lt;P&gt;  CONSTANTS: k_true TYPE boolean_flg VALUE 'X'.&lt;/P&gt;&lt;P&gt;  DATA: l_mail TYPE somlreci1-receiver.&lt;/P&gt;&lt;P&gt;  DATA: l_mail1 TYPE somlreci1-receiver.&lt;/P&gt;&lt;P&gt;  DATA: k_mail2 TYPE somlreci1-receiver.&lt;/P&gt;&lt;P&gt;  DATA: k_mail TYPE somlreci1-receiver.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_mail = v_email.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_mail1 = v_email1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  k_mail2 = text-006.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  k_mail = text-007.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creation of the document to be sent&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;File Name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_doc_chng-obj_name = 'SENDFILE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Mail Subject&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_doc_chng-obj_descr = text-001.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Completing the recipient list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_reclist-receiver = l_mail.&lt;/P&gt;&lt;P&gt;  l_reclist-rec_type = 'U'.&lt;/P&gt;&lt;P&gt;  APPEND l_reclist.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_reclist-receiver = l_mail1.&lt;/P&gt;&lt;P&gt;  l_reclist-rec_type = 'U'.&lt;/P&gt;&lt;P&gt;  APPEND l_reclist.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_reclist-receiver = k_mail.&lt;/P&gt;&lt;P&gt;  l_reclist-rec_type = 'U'.&lt;/P&gt;&lt;P&gt;  APPEND l_reclist.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  l_reclist-receiver = k_mail2.&lt;/P&gt;&lt;P&gt;  l_reclist-rec_type = 'U'.&lt;/P&gt;&lt;P&gt;  APPEND l_reclist.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Mail Contents&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  l_objtxt = text-002.&lt;/P&gt;&lt;P&gt;  APPEND l_objtxt.&lt;/P&gt;&lt;P&gt;  CLEAR l_objtxt.     " put in a blank line&lt;/P&gt;&lt;P&gt;  APPEND l_objtxt.&lt;/P&gt;&lt;P&gt;  l_objtxt = text-003.&lt;/P&gt;&lt;P&gt;  APPEND l_objtxt.&lt;/P&gt;&lt;P&gt;  l_objtxt = text-004 .&lt;/P&gt;&lt;P&gt;  APPEND l_objtxt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Calculate email size in bytes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DESCRIBE TABLE l_objtxt LINES l_tab_lines.&lt;/P&gt;&lt;P&gt;  READ TABLE l_objtxt INDEX l_tab_lines.&lt;/P&gt;&lt;P&gt;  l_doc_chng-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( l_objtxt ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creation of the entry for the compressed document&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for the email text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR l_objpack-transf_bin.&lt;/P&gt;&lt;P&gt;  l_objpack-head_start = 1.&lt;/P&gt;&lt;P&gt;  l_objpack-head_num = 0.&lt;/P&gt;&lt;P&gt;  l_objpack-body_start = 1.&lt;/P&gt;&lt;P&gt;  l_objpack-body_num = l_tab_lines.&lt;/P&gt;&lt;P&gt;  l_objpack-doc_type = 'RAW'.&lt;/P&gt;&lt;P&gt;  APPEND l_objpack.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Creation of the document attachment&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(Assume that the data in OBJBIN is in BMP format)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DESCRIBE TABLE l_objbin LINES l_tab_lines.&lt;/P&gt;&lt;P&gt;  l_objhead = text-001  .&lt;/P&gt;&lt;P&gt;  APPEND l_objhead.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR l_objpack.&lt;/P&gt;&lt;P&gt;**/ Creation of the entry for the compressed/attached document&lt;/P&gt;&lt;P&gt;  l_objpack-transf_bin = k_true.&lt;/P&gt;&lt;P&gt;  l_objpack-head_start = 1.&lt;/P&gt;&lt;P&gt;  l_objpack-head_num = 1.&lt;/P&gt;&lt;P&gt;  l_objpack-body_start = 1.&lt;/P&gt;&lt;P&gt;  l_objpack-body_num = l_tab_lines.&lt;/P&gt;&lt;P&gt;  l_objpack-doc_type = 'PDF'.&lt;/P&gt;&lt;P&gt;  l_objpack-obj_name = text-005.&lt;/P&gt;&lt;P&gt;  l_objpack-obj_descr = text-001.&lt;/P&gt;&lt;P&gt;  l_objpack-doc_size = l_tab_lines * 255.&lt;/P&gt;&lt;P&gt;  APPEND l_objpack. "/ .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sending the document&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' "/ .&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      document_data              = l_doc_chng&lt;/P&gt;&lt;P&gt;      put_in_outbox              = 'X'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      packing_list               = l_objpack&lt;/P&gt;&lt;P&gt;      object_header              = l_objhead&lt;/P&gt;&lt;P&gt;      contents_bin               = l_objbin&lt;/P&gt;&lt;P&gt;      contents_txt               = l_objtxt&lt;/P&gt;&lt;P&gt;      receivers                  = l_reclist&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      too_many_receivers         = 1&lt;/P&gt;&lt;P&gt;      document_not_sent          = 2&lt;/P&gt;&lt;P&gt;      operation_no_authorization = 4&lt;/P&gt;&lt;P&gt;      OTHERS                     = 99.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    WRITE: / 'unsuccessful', sy-subrc.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    WRITE:  / 'successful'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**/Take_note it is a requirement to do a commit work for the&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;email to go into transaction SOST.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  COMMIT WORK.   "/Take_note .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "PROCESSING&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      S U B R O U T I N E S                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***********************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALTERNATIVE_ITEM                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      A text is printed, if the item is an alternative item.        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alternative_item.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK vbdpa-grpos CN '0'.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ALTERNATIVE_ITEM'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ALTERNATIVE_ITEM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM CHECK_REPEAT                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      A text is printed, if it is a repeat print for the document.  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM check_repeat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR repeat.&lt;/P&gt;&lt;P&gt;  SELECT * INTO *nast FROM nast WHERE kappl = nast-kappl&lt;/P&gt;&lt;P&gt;                                AND   objky = nast-objky&lt;/P&gt;&lt;P&gt;                                AND   kschl = nast-kschl&lt;/P&gt;&lt;P&gt;                                AND   spras = nast-spras&lt;/P&gt;&lt;P&gt;                                AND   parnr = nast-parnr&lt;/P&gt;&lt;P&gt;                                AND   parvw = nast-parvw&lt;/P&gt;&lt;P&gt;                                AND   nacha BETWEEN '1' AND '4'.&lt;/P&gt;&lt;P&gt;    CHECK *nast-vstat = '1'.&lt;/P&gt;&lt;P&gt;    repeat = 'X'.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "CHECK_REPEAT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM DELIVERY_DATE                                            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      If the delivery date in the item is different to the header   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      date and there are no scheduled quantities, the delivery date *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      is printed in the item block.                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM delivery_date.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF vbdka-lfdat =  space AND&lt;/P&gt;&lt;P&gt;     vbdpa-lfdat NE space AND&lt;/P&gt;&lt;P&gt;     vbdpa-etenr_da = space.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'ITEM_DELIVERY_DATE'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "DELIVERY_DATE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM DIFFERENT_CONSIGNEE                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      If the consignee in the item is different to the header con-  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      signee, it is printed by this routine.                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM different_consignee.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK vbdka-name1_we NE vbdpa-name1_we&lt;/P&gt;&lt;P&gt;    OR  vbdka-name2_we NE vbdpa-name2_we&lt;/P&gt;&lt;P&gt;    OR  vbdka-name3_we NE vbdpa-name3_we&lt;/P&gt;&lt;P&gt;    OR  vbdka-name4_we NE vbdpa-name4_we.&lt;/P&gt;&lt;P&gt;  CHECK vbdpa-name1_we NE space&lt;/P&gt;&lt;P&gt;    OR  vbdpa-name2_we NE space&lt;/P&gt;&lt;P&gt;    OR  vbdpa-name3_we NE space&lt;/P&gt;&lt;P&gt;    OR  vbdpa-name4_we NE space.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ITEM_CONSIGNEE'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "DIFFERENT_CONSIGNEE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM DIFFERENT_REFERENCE_NO                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      If the reference number in the item is different to the header*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      reference number, it is printed by this routine.              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM different_reference_no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK vbdpa-vbeln_vang NE vbdka-vbeln_vang&lt;/P&gt;&lt;P&gt;    OR  vbdpa-vbtyp_vang NE vbdka-vbtyp_vang.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ITEM_REFERENCE_NO'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "DIFFERENT_REFERENCE_NO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM DIFFERENT_TERMS                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      If the terms in the item are different to the header terms,   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      they are printed by this routine.                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM different_terms.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  DATA: us_vposn   LIKE vedpa-vposn.&lt;/P&gt;&lt;P&gt;  DATA: us_text(1) TYPE c.             "Flag for Noticetext was printed&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  IF vbdpa-zterm NE vbdka-zterm AND&lt;/P&gt;&lt;P&gt;     vbdpa-zterm NE space.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'ITEM_TERMS_OF_PAYMENT'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF vbdpa-inco1 NE space.&lt;/P&gt;&lt;P&gt;    IF vbdpa-inco1 NE vbdka-inco1 OR&lt;/P&gt;&lt;P&gt;       vbdpa-inco2 NE vbdka-inco2.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_TERMS_OF_DELIVERY'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Print different validity-data for the position&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE tkomservp WITH KEY vbdpa-posnr.&lt;/P&gt;&lt;P&gt;  IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;    vedpa = tkomservp.&lt;/P&gt;&lt;P&gt;    IF vedpa-vbegdat NE space       AND&lt;/P&gt;&lt;P&gt;       vedpa-venddat NE space       AND&lt;/P&gt;&lt;P&gt;       NOT vedpa-vbegdat IS INITIAL AND&lt;/P&gt;&lt;P&gt;       NOT vedpa-venddat IS INITIAL.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_TERMS_OF_SERV1'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSEIF vedpa-vbegdat NE space AND&lt;/P&gt;&lt;P&gt;           NOT vedpa-vbegdat IS INITIAL.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_TERMS_OF_SERV2'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_TERMS_OF_SERV3'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Notice-rules for the positions.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  MOVE vbdpa-posnr TO us_vposn.&lt;/P&gt;&lt;P&gt;  CLEAR us_text.&lt;/P&gt;&lt;P&gt;  LOOP AT tkomservpn WHERE vposn = us_vposn.&lt;/P&gt;&lt;P&gt;    vedpn = tkomservpn.&lt;/P&gt;&lt;P&gt;    IF us_text IS INITIAL.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_TERMS_OF_NOTTXT'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      us_text = charx.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'ITEM_TERMS_OF_NOTICE'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  IF NOT us_text IS INITIAL.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'EMPTY_LINE'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "DIFFERENT_TERMS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM END_PRINT                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                                                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM end_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_header_prices.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONTROL_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      command = 'PROTECT'.&lt;/P&gt;&lt;P&gt;  PERFORM header_price_print.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'END_VALUES'.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONTROL_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      command = 'ENDPROTECT'.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'SUPPLEMENT_TEXT'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "END_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM FORM_CLOSE                                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      End of printing the form                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM form_close.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CLOSE_FORM'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      OTHERS = 1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    retcode = 1.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  SET COUNTRY space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "FORM_CLOSE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM FORM_OPEN                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Start of printing the form                                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  US_SCREEN  Output on screen                                   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                 ' ' = printer                                      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                 'X' = screen                                       *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  US_COUNTRY County for telecommunication and SET COUNTRY       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM form_open USING us_screen us_country.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  INCLUDE yzrvadopfo.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; INCLUDE RVADOPFO.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "FORM_OPEN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM FORM_TITLE_PRINT                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printing of the form title depending of the field VBTYP       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM form_title_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE vbdka-vbtyp.&lt;/P&gt;&lt;P&gt;    WHEN 'A'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_A'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'B'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_B'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'C'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_C'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'E'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_E'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'F'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_F'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'G'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_F'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'H'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_H'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'K'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_K'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'L'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_L'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TITLE_OTHERS'&lt;/P&gt;&lt;P&gt;          window  = 'TITLE'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  IF repeat NE space.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'REPEAT'&lt;/P&gt;&lt;P&gt;        window  = 'REPEAT'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "FORM_TITLE_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_DATA                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      General provision of data for the form                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_data.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  DATA: us_veda_vbeln     LIKE veda-vbeln.&lt;/P&gt;&lt;P&gt;  DATA: us_veda_posnr_low LIKE veda-vposn.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RV_PRICE_PRINT_REFRESH'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      tkomv = tkomv.&lt;/P&gt;&lt;P&gt;  CLEAR komk.&lt;/P&gt;&lt;P&gt;  CLEAR komp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  vbco3-mandt = sy-mandt.&lt;/P&gt;&lt;P&gt;  vbco3-spras = nast-spras.&lt;/P&gt;&lt;P&gt;  vbco3-vbeln = nast-objky.&lt;/P&gt;&lt;P&gt;  vbco3-kunde = nast-parnr.&lt;/P&gt;&lt;P&gt;  vbco3-parvw = nast-parvw.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RV_DOCUMENT_PRINT_VIEW'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      comwa = vbco3&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      kopf  = vbdka&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      pos   = tvbdpa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fetch servicecontract-data and notice-data for head and position.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  us_veda_vbeln     = vbdka-vbeln.&lt;/P&gt;&lt;P&gt;  us_veda_posnr_low = posnr_low.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SD_VEDA_GET_PRINT_DATA'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_document_number = us_veda_vbeln&lt;/P&gt;&lt;P&gt;      i_language        = sy-langu&lt;/P&gt;&lt;P&gt;      i_posnr_low       = us_veda_posnr_low&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      print_data_pos    = tkomservp&lt;/P&gt;&lt;P&gt;      print_data_head   = tkomservh&lt;/P&gt;&lt;P&gt;      print_notice_pos  = tkomservpn&lt;/P&gt;&lt;P&gt;      print_notice_head = tkomservhn.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_controll_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM sender.&lt;/P&gt;&lt;P&gt;  PERFORM check_repeat.&lt;/P&gt;&lt;P&gt;  PERFORM tvbdpau_create.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "GET_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_ITEM_BILLING_SCHEDULES                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      In this routine the billing schedules are fetched from the    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      database.                                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_item_billing_schedules.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  REFRESH tfpltdr.&lt;/P&gt;&lt;P&gt;  CHECK NOT vbdpa-fplnr IS INITIAL.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'BILLING_SCHED_PRINTVIEW_READ'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_fplnr    = vbdpa-fplnr&lt;/P&gt;&lt;P&gt;      i_language = nast-spras&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      zfpltdr    = tfpltdr.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.                    "GET_ITEM_BILLING_SCHEDULES&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  ITEM_BILLING_SCHEDULES_PRINT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine prints the billing shedules of a salesdocument    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      position.                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM  item_billing_schedules_print.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  DATA: first_line(1) TYPE c.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  first_line = charx.&lt;/P&gt;&lt;P&gt;  LOOP AT tfpltdr.&lt;/P&gt;&lt;P&gt;    fpltdr = tfpltdr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Output of the following printlines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF NOT fpltdr-perio IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    periodische Fakturen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_BILLING_SCHEDULE_PERIODIC'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    bei periodischen nur eine Zeile&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ELSEIF fpltdr-fareg CA '14'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    prozentuale Teilfakturierung&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF NOT first_line IS INITIAL.&lt;/P&gt;&lt;P&gt;        CLEAR first_line.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'ITEM_BILLING_SCHEDULE_PERCENT_HEADER'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'ITEM_BILLING_SCHEDULE_PERCENT'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSEIF fpltdr-fareg CA '235'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    wertmäßige  Teilfakturierung&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF NOT first_line IS INITIAL.&lt;/P&gt;&lt;P&gt;        CLEAR first_line.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'ITEM_BILLING_SCHEDULE_VALUE_HEADER'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'ITEM_BILLING_SCHEDULE_VALUE'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSEIF fpltdr-fareg CA '3'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Schlußrechnung&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ITEM_BILLING_SCHEDULES_PRINT&lt;/P&gt;&lt;P&gt;*eject&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_ITEM_CHARACTERISTICS                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      In this routine the configuration data item is fetched from   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      the database.                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_item_characteristics.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH tkomcon.&lt;/P&gt;&lt;P&gt;  CHECK NOT vbdpa-cuobj IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CUD0_GET_CONFIGURATION'                    "#EC EXISTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      instance      = vbdpa-cuobj&lt;/P&gt;&lt;P&gt;      language      = nast-spras&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      configuration = tkomcon&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      OTHERS        = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "GET_ITEM_CHARACTERISTICS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_ITEM_PRICES                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      In this routine the price data for the item is fetched from   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      the database.                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_item_prices.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR: komp,&lt;/P&gt;&lt;P&gt;         tkomv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF komk-knumv NE vbdka-knumv.&lt;/P&gt;&lt;P&gt;    CLEAR komk.&lt;/P&gt;&lt;P&gt;    komk-mandt = sy-mandt.&lt;/P&gt;&lt;P&gt;    komk-kalsm = vbdka-kalsm.&lt;/P&gt;&lt;P&gt;    komk-kappl = pr_kappl.&lt;/P&gt;&lt;P&gt;    komk-waerk = vbdka-waerk.&lt;/P&gt;&lt;P&gt;    komk-knumv = vbdka-knumv.&lt;/P&gt;&lt;P&gt;    komk-vbtyp = vbdka-vbtyp.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  komp-kposn = vbdpa-posnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RV_PRICE_PRINT_ITEM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      comm_head_i = komk&lt;/P&gt;&lt;P&gt;      comm_item_i = komp&lt;/P&gt;&lt;P&gt;      language    = nast-spras&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      comm_head_e = komk&lt;/P&gt;&lt;P&gt;      comm_item_e = komp&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      tkomv       = tkomv&lt;/P&gt;&lt;P&gt;      tkomvd      = tkomvd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "GET_ITEM_PRICES&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_HEADER_PRICES                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      In this routine the price data for the header is fetched from *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      the database.                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_header_prices.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RV_PRICE_PRINT_HEAD'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      comm_head_i = komk&lt;/P&gt;&lt;P&gt;      language    = nast-spras&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      comm_head_e = komk&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      tkomv       = tkomv&lt;/P&gt;&lt;P&gt;      tkomvd      = tkomvd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "GET_HEADER_PRICES&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  HEADER_DATA_PRINT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printing of header data like terms, weights ....               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM header_data_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'HEADER_DATA'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " HEADER_DATA_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM HEADER_PRICE_PRINT                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printout of the header prices                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM header_price_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT tkomvd.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    AT FIRST.&lt;/P&gt;&lt;P&gt;      IF komk-supos NE 0.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'ITEM_SUM'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'UNDER_LINE'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    komvd = tkomvd.&lt;/P&gt;&lt;P&gt;    IF komvd-koaid = 'D'.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'TAX_LINE'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'SUM_LINE'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE tkomvd LINES sy-tfill.&lt;/P&gt;&lt;P&gt;  IF sy-tfill = 0.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'UNDER_LINE'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "HEADER_PRICE_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM HEADER_TEXT_PRINT                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printout of the headertexts                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM header_text_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'HEADER_TEXT'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "HEADER_TEXT_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ITEM_CHARACERISTICS_PRINT                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printout of the item characteristics -&amp;gt; configuration         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM item_characteristics_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT tkomcon.&lt;/P&gt;&lt;P&gt;    conf_out = tkomcon.&lt;/P&gt;&lt;P&gt;    IF sy-tabix = 1.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_LINE_CONFIGURATION_HEADER'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          OTHERS  = 1.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_LINE_CONFIGURATION'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          OTHERS  = 1.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ITEM_CHARACTERISTICS_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ITEM_DELIVERY_CONFIRMATION                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      If the delivery date is not confirmed, a text is printed      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM item_delivery_confirmation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK vbdpa-lfdat = space.&lt;/P&gt;&lt;P&gt;  CHECK vbdpa-kwmeng NE 0.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ITEM_DELIVERY_CONFIRMATION'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ITEM_DELIVERY_CONFIRMATION&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ITEM_PRICE_PRINT                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printout of the item prices                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM item_price_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT tkomvd.&lt;/P&gt;&lt;P&gt;    komvd = tkomvd.&lt;/P&gt;&lt;P&gt;    IF sy-tabix = 1.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_LINE_PRICE_QUANTITY'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_LINE_PRICE_TEXT'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ITEM_PRICE_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ITEM_PRINT                                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printout of the items                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM item_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: da_subrc LIKE sy-subrc,&lt;/P&gt;&lt;P&gt;        da_dragr LIKE tvag-dragr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'           "First header&lt;/P&gt;&lt;P&gt;       EXPORTING  element = 'ITEM_HEADER'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS OTHERS  = 1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'           "Activate header&lt;/P&gt;&lt;P&gt;       EXPORTING  element = 'ITEM_HEADER'&lt;/P&gt;&lt;P&gt;                  type    = 'TOP'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS OTHERS  = 1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT tvbdpa.&lt;/P&gt;&lt;P&gt;    vbdpa = tvbdpa.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  TVAG lesen um festzustellen ob abgesagte Positionen gedruckt werden&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  sollen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    PERFORM tvag_select(sapmv45a) USING vbdpa-abgru&lt;/P&gt;&lt;P&gt;                                        da_dragr&lt;/P&gt;&lt;P&gt;                                        space&lt;/P&gt;&lt;P&gt;                                        da_subrc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF da_dragr EQ space.              "Print rejected item?&lt;/P&gt;&lt;P&gt;      IF vbdpa-posnr_neu NE space.     "Item&lt;/P&gt;&lt;P&gt;        PERFORM get_item_serials.&lt;/P&gt;&lt;P&gt;        PERFORM get_item_characteristics.&lt;/P&gt;&lt;P&gt;        PERFORM get_item_billing_schedules.&lt;/P&gt;&lt;P&gt;        PERFORM get_item_prices.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'CONTROL_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            command = 'ENDPROTECT'.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'CONTROL_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            command = 'PROTECT'.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'ITEM_LINE'.&lt;/P&gt;&lt;P&gt;        PERFORM item_rejected.&lt;/P&gt;&lt;P&gt;        PERFORM item_price_print.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'CONTROL_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            command = 'ENDPROTECT'.&lt;/P&gt;&lt;P&gt;        PERFORM item_text_print.&lt;/P&gt;&lt;P&gt;        PERFORM item_serials_print.&lt;/P&gt;&lt;P&gt;        PERFORM item_characteristics_print.&lt;/P&gt;&lt;P&gt;        PERFORM alternative_item.&lt;/P&gt;&lt;P&gt;        PERFORM delivery_date.&lt;/P&gt;&lt;P&gt;        PERFORM item_delivery_confirmation.&lt;/P&gt;&lt;P&gt;        PERFORM item_billing_schedules_print.&lt;/P&gt;&lt;P&gt;        PERFORM different_reference_no.&lt;/P&gt;&lt;P&gt;        PERFORM different_terms.&lt;/P&gt;&lt;P&gt;        PERFORM different_consignee.&lt;/P&gt;&lt;P&gt;        PERFORM schedule_header.&lt;/P&gt;&lt;P&gt;        PERFORM main_item.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        PERFORM schedule_print.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'           "Deactivate Header&lt;/P&gt;&lt;P&gt;       EXPORTING  element  = 'ITEM_HEADER'&lt;/P&gt;&lt;P&gt;                  function = 'DELETE'&lt;/P&gt;&lt;P&gt;                  type     = 'TOP'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS OTHERS   = 1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ITEM_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ITEM_REJECTED                                            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      A text is printed, if the item is rejected                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM item_rejected.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK NOT vbdpa-abgru IS INITIAL.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ITEM_REJECTED'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ITEM_REJECTED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM MAIN_ITEM                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      A text is printed, if the item is a main item                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM main_item.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE tvbdpau WITH KEY vbdpa-posnr BINARY SEARCH.&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc = 0.&lt;/P&gt;&lt;P&gt;  vbdpau = tvbdpau.&lt;/P&gt;&lt;P&gt;  IF vbdpau-uposb IS INITIAL.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'ONE_SUBITEM'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'SEVERAL_SUBITEMS'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "MAIN_ITEM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ITEM_TEXT_PRINT                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Printout of the item texts                                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM item_text_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ITEM_TEXT'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "ITEM_TEXT_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM PROTOCOL_UPDATE                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      The messages are collected for the processing protocol.       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM protocol_update.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK xscreen = space.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'NAST_PROTOCOL_UPDATE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      msg_arbgb = syst-msgid&lt;/P&gt;&lt;P&gt;      msg_nr    = syst-msgno&lt;/P&gt;&lt;P&gt;      msg_ty    = syst-msgty&lt;/P&gt;&lt;P&gt;      msg_v1    = syst-msgv1&lt;/P&gt;&lt;P&gt;      msg_v2    = syst-msgv2&lt;/P&gt;&lt;P&gt;      msg_v3    = syst-msgv3&lt;/P&gt;&lt;P&gt;      msg_v4    = syst-msgv4&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      OTHERS    = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "PROTOCOL_UPDATE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM SCHEDULE_HEADER                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      If there are schedules in the item, then here is printed the  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      header for the schedules.                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM schedule_header.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK vbdpa-etenr_da NE space.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'CONTROL_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      command = 'PROTECT'.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ITEM_SCHEDULE_HEADER'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "SCHEDULE_HEADER&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM SCHEDULE_PRINT                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine prints the schedules for an item.                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM schedule_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'ITEM_SCHEDULE_PRINT'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "SCHEDULE_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM SENDER                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine determines the address of the sender (Table VKO) *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM sender.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM tvko  WHERE vkorg = vbdka-vkorg.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    syst-msgid = 'VN'.&lt;/P&gt;&lt;P&gt;    syst-msgno = '203'.&lt;/P&gt;&lt;P&gt;    syst-msgty = 'E'.&lt;/P&gt;&lt;P&gt;    syst-msgv1 = 'TVKO'.&lt;/P&gt;&lt;P&gt;    syst-msgv2 = syst-subrc.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM sadr WHERE adrnr = tvko-adrnr&lt;/P&gt;&lt;P&gt;                            AND   natio = space.&lt;/P&gt;&lt;P&gt;  vbdka-sland = sadr-land1.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    syst-msgid = 'VN'.&lt;/P&gt;&lt;P&gt;    syst-msgno = '203'.&lt;/P&gt;&lt;P&gt;    syst-msgty = 'E'.&lt;/P&gt;&lt;P&gt;    syst-msgv1 = 'SADR'.&lt;/P&gt;&lt;P&gt;    syst-msgv2 = syst-subrc.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM tvbur  WHERE vkbur = vbdka-vkbur.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    syst-msgid = 'VN'.&lt;/P&gt;&lt;P&gt;    syst-msgno = '203'.&lt;/P&gt;&lt;P&gt;    syst-msgty = 'E'.&lt;/P&gt;&lt;P&gt;    syst-msgv1 = 'TVBUR'.&lt;/P&gt;&lt;P&gt;    syst-msgv2 = syst-subrc.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "SENDER&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM TVBDPAU_CREATE                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine is creating a table which includes the subitem-  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      numbers                                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM tvbdpau_create.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR tvbdpau.&lt;/P&gt;&lt;P&gt;  REFRESH tvbdpau.&lt;/P&gt;&lt;P&gt;  LOOP AT tvbdpa.&lt;/P&gt;&lt;P&gt;    IF tvbdpa-uepos IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Eintrag der letzten Positon merken&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF tvbdpau-uposv &amp;gt; 0.&lt;/P&gt;&lt;P&gt;        APPEND tvbdpau.&lt;/P&gt;&lt;P&gt;        CLEAR tvbdpau.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Neuen Eintrag anfangen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      tvbdpau-posnr = tvbdpa-posnr.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      IF tvbdpau-uposv IS INITIAL OR&lt;/P&gt;&lt;P&gt;         tvbdpau-uposv &amp;gt; tvbdpa-posnr.&lt;/P&gt;&lt;P&gt;        tvbdpau-uposv = tvbdpa-posnr.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF tvbdpau-uposb &amp;lt; tvbdpa-posnr AND&lt;/P&gt;&lt;P&gt;         tvbdpau-uposv &amp;lt; tvbdpa-posnr.&lt;/P&gt;&lt;P&gt;        tvbdpau-uposb = tvbdpa-posnr.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  IF tvbdpau-uposv &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    APPEND tvbdpau.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  SORT tvbdpau.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "TVBDPAU_CREATE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM VALIDITY_PRINT                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine is printing the period of validity for offers    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      and contracts                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM validity_print.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK steu-vdkex EQ space.&lt;/P&gt;&lt;P&gt;  CASE vbdka-vbtyp.&lt;/P&gt;&lt;P&gt;    WHEN 'B'.&lt;/P&gt;&lt;P&gt;      IF vbdka-angdt CN '0' OR&lt;/P&gt;&lt;P&gt;         vbdka-bnddt CN '0'.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'VALIDITY_OFFER'&lt;/P&gt;&lt;P&gt;            window  = 'VALIDITY'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'E'.&lt;/P&gt;&lt;P&gt;      IF vbdka-guebg CN '0' OR&lt;/P&gt;&lt;P&gt;         vbdka-gueen CN '0'.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'VALIDITY_CONTRACT'&lt;/P&gt;&lt;P&gt;            window  = 'VALIDITY'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'F'.&lt;/P&gt;&lt;P&gt;      IF vbdka-guebg CN '0' OR&lt;/P&gt;&lt;P&gt;         vbdka-gueen CN '0'.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'VALIDITY_CONTRACT'&lt;/P&gt;&lt;P&gt;            window  = 'VALIDITY'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'G'.&lt;/P&gt;&lt;P&gt;      IF vbdka-guebg CN '0' OR&lt;/P&gt;&lt;P&gt;         vbdka-gueen CN '0'.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            element = 'VALIDITY_CONTRACT'&lt;/P&gt;&lt;P&gt;            window  = 'VALIDITY'&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            element = 1&lt;/P&gt;&lt;P&gt;            window  = 2.&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "VALIDITY_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  HEADER_NOTICE_PRINT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine prints the notice-rules of the contract-header.   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM header_notice_print.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt; DATA: us_text(1) TYPE c.             "Kz. falls Text für Kündigungsbed.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Kündigungsbedingungen auf Kopfebene.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR us_text.&lt;/P&gt;&lt;P&gt;  LOOP AT tkomservhn.&lt;/P&gt;&lt;P&gt;    vedkn = tkomservhn.&lt;/P&gt;&lt;P&gt;    IF us_text IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    For the first time a headertext is printed.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'HEADER_TERMS_OF_NOTTXT'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      us_text = charx.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'HEADER_TERMS_OF_NOTICE'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If notice-rules exists a empty line is printed.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF NOT us_text IS INITIAL.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'EMPTY_LINE'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.                               " HEADER_NOTICE_PRINT&lt;/P&gt;&lt;P&gt;*eject&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_ITEM_SERIALS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine give back the serialnumbers of salesdocument      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      position. The numbers are processed as print-lines in the      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      table KOMSER_PRINT.                                            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  US_VBELN  Salesdocument&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  US_POSNR  Position of the salesdocument&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_item_serials.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the Serialnumbers of a Position.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  REFRESH tkomser.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SERIAL_WV_PRINT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      posnr  = vbdpa-posnr&lt;/P&gt;&lt;P&gt;      vbeln  = vbdka-vbeln&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      isernr = tkomser.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Process the stringtable for Printing.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'PROCESS_SERIALS_FOR_PRINT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_boundary_left             = '(_'&lt;/P&gt;&lt;P&gt;      i_boundary_right            = '_)'&lt;/P&gt;&lt;P&gt;      i_sep_char_strings          = ',_'&lt;/P&gt;&lt;P&gt;      i_sep_char_interval         = '_-_'&lt;/P&gt;&lt;P&gt;      i_use_interval              = 'X'&lt;/P&gt;&lt;P&gt;      i_boundary_method           = 'C'&lt;/P&gt;&lt;P&gt;      i_line_length               = 50&lt;/P&gt;&lt;P&gt;      i_no_zero                   = 'X'&lt;/P&gt;&lt;P&gt;      i_alphabet                  = sy-abcde&lt;/P&gt;&lt;P&gt;      i_digits                    = '0123456789'&lt;/P&gt;&lt;P&gt;      i_special_chars             = '-'&lt;/P&gt;&lt;P&gt;      i_with_second_digit         = ' '&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      serials                     = tkomser&lt;/P&gt;&lt;P&gt;      serials_print               = tkomser_print&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      boundary_missing            = 01&lt;/P&gt;&lt;P&gt;      interval_separation_missing = 02&lt;/P&gt;&lt;P&gt;      length_to_small             = 03&lt;/P&gt;&lt;P&gt;      internal_error              = 04&lt;/P&gt;&lt;P&gt;      wrong_method                = 05&lt;/P&gt;&lt;P&gt;      wrong_serial                = 06&lt;/P&gt;&lt;P&gt;      two_equal_serials           = 07&lt;/P&gt;&lt;P&gt;      serial_with_wrong_char      = 08&lt;/P&gt;&lt;P&gt;      serial_separation_missing   = 09.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_ITEM_SERIALS&lt;/P&gt;&lt;P&gt;*eject&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  ITEM_SERIALS_PRINT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      This routine prints the serialnumbers of a salesdocument       *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      position.                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM item_serials_print.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  DATA: first_line(1) TYPE c.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  first_line = charx.&lt;/P&gt;&lt;P&gt;  LOOP AT tkomser_print.&lt;/P&gt;&lt;P&gt;    komser = tkomser_print.&lt;/P&gt;&lt;P&gt;    IF NOT first_line IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Output of the Headerline&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_LINE_SERIAL_HEADER'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      CLEAR first_line.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Output of the following printlines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          element = 'ITEM_LINE_SERIAL'&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          element = 1&lt;/P&gt;&lt;P&gt;          window  = 2.&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If serialnumbers exists a empty line is printed.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF first_line IS INITIAL.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'EMPTY_LINE'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.                               " ITEM_SERIALS_PRINT&lt;/P&gt;&lt;P&gt;*eject&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  HEADER_INTER_PRINT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Prints the message that if other condition for the positions   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      exists they are printed there.                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM header_inter_print.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  CHECK NOT steu-vdkex IS INITIAL.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'HEADER_TERMS_OF_TXTEND'&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      element = 1&lt;/P&gt;&lt;P&gt;      window  = 2.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.                               " HEADER_INTER_PRINT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_CONTROLL_DATA&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Checks if servicedata for the header exists.                   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Checks if servicedata for the position exists.                 *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Checks if noticedata for the header exists.                    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Checks if noticedata for the position exists.                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_controll_data.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  DATA: lines TYPE i.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exists servicedata for the header?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DESCRIBE TABLE tkomservh LINES lines.&lt;/P&gt;&lt;P&gt;  IF lines GT 0.&lt;/P&gt;&lt;P&gt;    steu-vdkex = 'X'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exists servicedata for the position?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DESCRIBE TABLE tkomservp LINES lines.&lt;/P&gt;&lt;P&gt;  IF lines GT 0.&lt;/P&gt;&lt;P&gt;    steu-vdpex = 'X'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exists noticedata for the header?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DESCRIBE TABLE tkomservhn LINES lines.&lt;/P&gt;&lt;P&gt;  IF lines GT 0.&lt;/P&gt;&lt;P&gt;    steu-kbkex = 'X'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exists noticedata for the position?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DESCRIBE TABLE tkomservpn LINES lines.&lt;/P&gt;&lt;P&gt;  IF lines GT 0.&lt;/P&gt;&lt;P&gt;    steu-kbpex = 'X'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_CONTROLL_DATA&lt;/P&gt;&lt;P&gt;*eject&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  HEADER_SERV_PRINT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Output of the validity of a service-contract.                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM header_serv_print.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  CHECK NOT steu-vdkex IS INITIAL.&lt;/P&gt;&lt;P&gt;  READ TABLE tkomservh INDEX 1.&lt;/P&gt;&lt;P&gt;  MOVE tkomservh TO vedka.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Output of the validity.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF NOT vedka-venddat IS INITIAL OR&lt;/P&gt;&lt;P&gt;     vedka-venddat EQ space.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'HEADER_TERMS_OF_SERV1'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSEIF vedka-vbegdat NE space AND&lt;/P&gt;&lt;P&gt;         NOT vedka-vbegdat IS INITIAL.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'HEADER_TERMS_OF_SERV2'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        element = 'HEADER_TERMS_OF_SERV3'&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        element = 1&lt;/P&gt;&lt;P&gt;        window  = 2.&lt;/P&gt;&lt;P&gt;    IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;      PERFORM protocol_update.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.                               " HEADER_SERV_PRINT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  WRITE_HEADER_INFO&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM write_header_info.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_ship_to_info.&lt;/P&gt;&lt;P&gt;  PERFORM get_dea_number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'HEADER_CONSGNEE'&lt;/P&gt;&lt;P&gt;      window  = 'INFO1'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'DEA_NUM'&lt;/P&gt;&lt;P&gt;      window  = 'DEA_NUM'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WRITE_FORM'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      element = 'INFO'&lt;/P&gt;&lt;P&gt;      window  = 'INFO'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " WRITE_HEADER_INFO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_DEA_NUMBER&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_dea_number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'Z_GET_DEA_NUMBER_CUSTOMER'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      cust_num           = vbco3-kunde&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      char_val           = char_val&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      customer_not_found = 1&lt;/P&gt;&lt;P&gt;      OTHERS             = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT char_val.&lt;/P&gt;&lt;P&gt;    CASE char_val-atnam.&lt;/P&gt;&lt;P&gt;      WHEN 'DEA_NUMBER'.&lt;/P&gt;&lt;P&gt;        PERFORM set_text_symbol USING char_val-atwrt '&amp;amp;DEA_NUM&amp;amp;'.&lt;/P&gt;&lt;P&gt;      WHEN 'DEA_EXPIRATION_DATE'.&lt;/P&gt;&lt;P&gt;        PERFORM set_text_symbol USING char_val-atwrt '&amp;amp;EXP_DATE&amp;amp;'.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_DEA_NUMBER&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SET_TEXT_SYMBOL&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM set_text_symbol USING value name.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'TEXT_SYMBOL_SETVALUE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      name   = name&lt;/P&gt;&lt;P&gt;      value  = value&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      OTHERS = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " SET_TEXT_SYMBOL&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_SHIP_TO_INFO&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM get_ship_to_info.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM vbpa WHERE vbeln = vbdka-vbeln&lt;/P&gt;&lt;P&gt;                            AND   posnr = '000000'&lt;/P&gt;&lt;P&gt;                            AND   parvw = 'WE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT vbpa-adrnr IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*{   REPLACE         DU1K920151&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   SELECT SINGLE * FROM SADR WHERE ADRNR = VBPA-ADRNR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES: addr1_sel.&lt;/P&gt;&lt;P&gt;    CLEAR: addr1_sel, sadr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    addr1_sel-addrnumber = vbpa-adrnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'ADDR_GET'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        address_selection = addr1_sel&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        sadr              = sadr&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        parameter_error   = 1&lt;/P&gt;&lt;P&gt;        address_not_exist = 2&lt;/P&gt;&lt;P&gt;        version_not_exist = 3&lt;/P&gt;&lt;P&gt;        internal_error    = 4&lt;/P&gt;&lt;P&gt;        OTHERS            = 5.&lt;/P&gt;&lt;P&gt;*}   REPLACE&lt;/P&gt;&lt;P&gt;    MOVE: sadr-anred TO vbdka-anred_we,&lt;/P&gt;&lt;P&gt;          sadr-name1 TO vbdka-name1_we,&lt;/P&gt;&lt;P&gt;          sadr-name2 TO vbdka-name2_we,&lt;/P&gt;&lt;P&gt;          sadr-name3 TO vbdka-name3_we,&lt;/P&gt;&lt;P&gt;          sadr-name4 TO vbdka-name4_we,&lt;/P&gt;&lt;P&gt;          sadr-stras TO vbdka-stras_we,&lt;/P&gt;&lt;P&gt;          sadr-pfach TO vbdka-pfach_we,&lt;/P&gt;&lt;P&gt;          sadr-pstl2 TO vbdka-pstl2_we,&lt;/P&gt;&lt;P&gt;          sadr-pfort TO vbdka-pfort,&lt;/P&gt;&lt;P&gt;          sadr-pstlz TO vbdka-pstlz_we,&lt;/P&gt;&lt;P&gt;          sadr-ort01 TO vbdka-ort01_we,&lt;/P&gt;&lt;P&gt;          sadr-ort02 TO vbdka-ort02_we,&lt;/P&gt;&lt;P&gt;          sadr-regio TO vbdka-regio_we,&lt;/P&gt;&lt;P&gt;          sadr-land1 TO vbdka-land1_we,&lt;/P&gt;&lt;P&gt;          sadr-land1 TO vbdka-sland.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE * FROM kna1 WHERE kunnr = vbpa-kunnr.&lt;/P&gt;&lt;P&gt;    MOVE: kna1-anred TO vbdka-anred_we,&lt;/P&gt;&lt;P&gt;          kna1-name1 TO vbdka-name1_we,&lt;/P&gt;&lt;P&gt;          kna1-name2 TO vbdka-name2_we,&lt;/P&gt;&lt;P&gt;          kna1-name3 TO vbdka-name3_we,&lt;/P&gt;&lt;P&gt;          kna1-name4 TO vbdka-name4_we,&lt;/P&gt;&lt;P&gt;          kna1-stras TO vbdka-stras_we,&lt;/P&gt;&lt;P&gt;          kna1-pfach TO vbdka-pfach_we,&lt;/P&gt;&lt;P&gt;          kna1-pstl2 TO vbdka-pstl2_we,&lt;/P&gt;&lt;P&gt;          kna1-pfort TO vbdka-pfort,&lt;/P&gt;&lt;P&gt;          kna1-pstlz TO vbdka-pstlz_we,&lt;/P&gt;&lt;P&gt;          kna1-ort01 TO vbdka-ort01_we,&lt;/P&gt;&lt;P&gt;          kna1-ort02 TO vbdka-ort02_we,&lt;/P&gt;&lt;P&gt;          kna1-regio TO vbdka-regio_we,&lt;/P&gt;&lt;P&gt;          kna1-land1 TO vbdka-land1_we,&lt;/P&gt;&lt;P&gt;          kna1-land1 TO vbdka-sland.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  MOVE vbpa-kunnr TO vbco3-kunde.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_SHIP_TO_INFO&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  LOGO_SELECTION&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM logo_selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'Z_UCB_LOGO_SELECTION'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      vkorg                      = vbdka-vkorg&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      invalid_sales_organization = 1&lt;/P&gt;&lt;P&gt;      OTHERS                     = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " LOGO_SELECTION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sree&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2007 04:54:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523006#M571274</guid>
      <dc:creator>sreeramkumar_madisetty</dc:creator>
      <dc:date>2007-07-18T04:54:25Z</dc:date>
    </item>
    <item>
      <title>Re: Send mail</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523007#M571275</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shreekant,&lt;/P&gt;&lt;P&gt;  Let me share my points with you. &lt;/P&gt;&lt;P&gt;For this just do one thing. Execute SE37 and enter &lt;STRONG&gt;send&lt;/STRONG&gt;mail* in that. Now it will display all the FMs. Select one as per u r requirement. By using where used list we can check how many program are used taht FM. Now observe those program.&lt;/P&gt;&lt;P&gt;Hope this helps you. Reply for queries, shall post the updates. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards.  &lt;/P&gt;&lt;P&gt;Kumar.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2007 05:17:50 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/send-mail/m-p/2523007#M571275</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-18T05:17:50Z</dc:date>
    </item>
  </channel>
</rss>

