*&---------------------------------------------------------------------*
*& Date : 14/02/2022 *
*& Task ID : #10877 - Dunning Project *
*& Company : Sydea *
*& Programmer : Elena Tanska *
*&-------------------------------------------------------------------- *
*&---------------------------------------------------------------------*
*& Include ZDUNNING_EMAIL_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form init
*&---------------------------------------------------------------------*
FORM init .
REFRESH: gt_ekpo, gt_adr, gt_makt.
CLEAR: gs_adr, gs_ekko, gs_makt,gs_ekpo, gs_nast, gs_tnapr.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form extraction
*&---------------------------------------------------------------------**
FORM extraction .
SELECT ek~ebeln,
ep~ebelp,
ek~bedat,
ek~lifnr,
ep~matnr
FROM ekko AS ek INNER JOIN ekpo AS ep
ON ek~ebeln EQ ep~ebeln
LEFT OUTER JOIN ekes AS es
ON es~ebeln EQ ep~ebeln
AND es~ebelp EQ ep~ebelp
LEFT OUTER JOIN ekbe AS eb
ON eb~ebeln EQ ep~ebeln
AND eb~ebelp EQ ep~ebelp
WHERE ek~bsart IN @p_bsart
AND ek~bedat IN @p_bedat
AND ek~lifnr IN @p_lifnr
AND ep~bstae IN @p_bstae
AND ep~loekz IS INITIAL
AND ep~kzabs EQ @abap_true
AND es~ebeln IS NULL
AND es~ebelp IS NULL
AND eb~ebeln IS NULL
AND eb~ebelp IS NULL
INTO CORRESPONDING FIELDS OF TABLE @gt_ekpo[].
IF gt_ekpo[] IS NOT INITIAL.
SELECT matnr, maktx
FROM makt
FOR ALL ENTRIES IN @gt_ekpo[]
WHERE matnr EQ @gt_ekpo-matnr
AND spras EQ @sy-langu
INTO TABLE @gt_makt.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form elaboration
*&---------------------------------------------------------------------*
FORM elaboration .
DATA lv_subrc TYPE sy-subrc.
DATA lt_mail_address TYPE TABLE OF spopli.
DATA: lv_date TYPE sy-datum,
ls_tnapr TYPE tnapr,
lv_string TYPE string,
ent_retco LIKE sy-subrc,
ent_screen TYPE c,
lv_msg TYPE string.
DATA: lt_solix TYPE solix_tab,
lv_sf_name TYPE na_fname.
DATA: iv_retco TYPE sy-subrc VALUE '0',
iv_screen,
iv_druvo TYPE druvo,
iv_xfz TYPE char1.
DATA: lt_allegato_bin LIKE solisti1 OCCURS 10 WITH HEADER LINE.
DATA: lf_fm_name TYPE rs38l_fnam,
ls_control_param TYPE ssfctrlop,
ls_composer_param TYPE ssfcompop,
ls_job_info TYPE ssfcrescl.
DATA: ls_recipient TYPE swotobjid,
ls_sender TYPE swotobjid,
l_from_memory,
l_doc TYPE meein_purchase_doc_print,
l_xkomk TYPE TABLE OF komk.
DATA: lt_otf TYPE TABLE OF itcoo,
lt_pdf TYPE TABLE OF tline,
lv_bsz TYPE i.
PERFORM read_form_name. "From processing programs table TNAPR
REFRESH: gt_out[].
LOOP AT gt_ekpo INTO gs_ekpo.
gt_out = gs_ekpo.
AT NEW ebeln.
PERFORM calculate_date USING gt_out-bedat
CHANGING lv_date.
IF lv_date NE sy-datum.
CONTINUE.
ELSE.
PERFORM message_title. "retrieve from nast
IF chx_test IS INITIAL.
PERFORM send_mail_pdf USING ent_screen CHANGING lv_subrc.
ENDIF.
ENDIF.
ENDAT.
*Check if record is valid
IF lv_date NE sy-datum.
CONTINUE.
ENDIF.
*Material description reading
READ TABLE gt_makt INTO DATA(ls_makt)
WITH KEY matnr = gs_ekpo-matnr.
IF sy-subrc IS INITIAL.
gt_out-maktx = ls_makt-maktx.
ENDIF.
APPEND gt_out.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form show_output
*&---------------------------------------------------------------------*
FORM show_output .
DATA: lv_program_name TYPE sy-repid,
lv_int_tabname TYPE slis_tabname.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_layout TYPE slis_layout_alv.
FIELD-SYMBOLS: <lfs_cat> LIKE LINE OF lt_fieldcat.
CLEAR: lv_program_name, lv_int_tabname.
lv_program_name = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = lv_program_name
i_internal_tabname = gcs_alv-tab_name
i_inclname = gcs_alv-inclname
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = lt_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CLEAR ls_layout.
ls_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_bypassing_buffer = 'X'
i_callback_program = sy-repid
is_layout = ls_layout
it_fieldcat = lt_fieldcat[]
i_default = 'X'
TABLES
t_outtab = gt_out[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form calculate_date
*&---------------------------------------------------------------------*
*& Add days from input params to date to check if needs email sending
*&---------------------------------------------------------------------*
FORM calculate_date USING pv_bedat
CHANGING pv_date.
pv_date = pv_bedat.
PERFORM add_days USING p_start
CHANGING pv_date.
IF pv_date NE sy-datum.
PERFORM add_days USING p_int
CHANGING pv_date.
ENDIF.
IF pv_date NE sy-datum.
PERFORM add_days USING p_int
CHANGING pv_date.
ENDIF.
IF pv_date NE sy-datum.
PERFORM add_days USING p_int
CHANGING pv_date.
ENDIF.
IF pv_date NE sy-datum.
PERFORM add_days USING p_int
CHANGING pv_date.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form add_days
*&---------------------------------------------------------------------*
FORM add_days USING pv_days
CHANGING pv_date.
DATA lv_iprkz TYPE mara-iprkz.
lv_iprkz = ' '.
CALL FUNCTION 'ADD_TIME_TO_DATE'
EXPORTING
i_idate = pv_date
i_time = pv_days
i_iprkz = lv_iprkz
IMPORTING
o_idate = pv_date
EXCEPTIONS
invalid_period = 1
invalid_round_up_rule = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_BODY
*&---------------------------------------------------------------------*
FORM get_body TABLES pt_body TYPE bcsy_text.
DATA: lv_name TYPE thead-tdname,
lt_lines TYPE STANDARD TABLE OF tline,
ls_body LIKE LINE OF pt_body,
lv_sender_mail TYPE ad_smtpadr,
lv_sender_name TYPE adrp-name_text,
lv_receiver_mail TYPE ad_smtpadr.
SELECT SINGLE * FROM usr21 INTO @DATA(ls_usr21) WHERE bname = @sy-uname.
IF sy-subrc = 0.
SELECT SINGLE smtp_addr FROM adr6 INTO lv_sender_mail
WHERE addrnumber = ls_usr21-addrnumber
AND persnumber = ls_usr21-persnumber.
SELECT SINGLE name_text FROM adrp INTO lv_sender_name
WHERE persnumber = ls_usr21-persnumber.
ENDIF.
*<ET220122_i> insert start Read from SO10 te4xt - body email
lv_name = 'ZMAIL_PO_DUNNING_MAIL_BODY_4010'.
CALL FUNCTION 'READ_STDTEXT'
EXPORTING
id = 'ST'
language = sy-langu
name = lv_name
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
reference_check = 5
OTHERS = 6.
*</ET220122_i> insert end
*<ET220122_c> comment start
*Read from AUFB output type the text body
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* client = sy-mandt
* id = 'STAM'
* language = sy-langu
* name = 'EFAUFB'
* object = 'OCS'
* TABLES
* lines = lt_lines
* EXCEPTIONS
* id = 1
* language = 2
* name = 3
* not_found = 4
* reference_check = 5
* OTHERS = 6.
*</ET220122_c> comment end
LOOP AT lt_lines[] INTO DATA(ls_line).
REPLACE FIRST OCCURRENCE OF '&SENDER&' IN ls_line-tdline WITH lv_sender_name.
REPLACE FIRST OCCURRENCE OF '&SENDER_MAIL&' IN ls_line-tdline WITH
lv_sender_mail.
ls_body = ls_line-tdline.
APPEND ls_body TO pt_body.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form xstring_to_solix
*&---------------------------------------------------------------------*
* Convert to pdf content
*----------------------------------------------------------------------*
FORM xstring_to_solix
USING ip_xstring TYPE xstring.
DATA:
lp_offset TYPE i,
lt_solix TYPE solix_tab,
ls_solix_line TYPE solix,
lp_pdf_string_len TYPE i,
lp_solix_rows TYPE i,
lp_last_row_length TYPE i,
lp_row_length TYPE i.
CLEAR pdf_content.
* transform xstring to SOLIX
DESCRIBE TABLE lt_solix.
lp_row_length = sy-tleng.
lp_offset = 0.
lp_pdf_string_len = xstrlen( ip_xstring ).
lp_solix_rows = lp_pdf_string_len DIV lp_row_length.
lp_last_row_length = lp_pdf_string_len MOD lp_row_length.
DO lp_solix_rows TIMES.
ls_solix_line-line =
ip_xstring+lp_offset(lp_row_length).
APPEND ls_solix_line TO pdf_content.
ADD lp_row_length TO lp_offset.
ENDDO.
IF lp_last_row_length > 0.
CLEAR ls_solix_line-line.
ls_solix_line-line = ip_xstring+lp_offset(lp_last_row_length).
APPEND ls_solix_line TO pdf_content.
ENDIF.
ENDFORM. "XSTRING_TO_SOLIX
*&---------------------------------------------------------------------*
*& Form send_mail_pdf
*&---------------------------------------------------------------------*
*& Copied from Adobe_entry_neu (/JA41/MEDRUCK_PO_PRINT) - enhanced
*&---------------------------------------------------------------------*
FORM send_mail_pdf USING VALUE(if_preview) TYPE c
CHANGING ef_retco.
DATA: cl_output_po TYPE REF TO cl_purchase_order_output,
cl_output_knt TYPE REF TO cl_purchase_contract_output,
cl_output_schedagr TYPE REF TO cl_purchase_sched_agr_output,
cl_output_rfq TYPE REF TO cl_purchase_rfq_output, "object
for rfq
cl_output_schedagr_rel TYPE REF TO cl_purchase_sched_rel_output, "object
for agree with release
fp_docparams TYPE sfpdocparams,
fp_outputparams TYPE sfpoutputparams,
fp_formoutput TYPE fpformoutput,
fp_interfacetype TYPE fpinterfacetype,
lf_formname TYPE fpname,
l_errstr TYPE string,
l_ebeln TYPE ebeln,
ls_ekko TYPE ekko,
w_cx_root TYPE REF TO cx_root,
mesg TYPE string,
ls_function TYPE rs38l_fnam,
ls_options TYPE ssfcompop,
ls_control TYPE ssfctrlop.
* Setting for sending document vai E-mail.
DATA: lv_emailaddr TYPE adr6-smtp_addr,
os_formout TYPE fpformoutput.
* Setting for sending FAX
DATA : lv_cam_address TYPE REF TO cl_cam_address_bcs,
lv_outputparams_fax TYPE sfpoutpar,
lv_vend_cntry TYPE lfa1-land1.
DATA: if_druvo TYPE c. "<ET220217_i/>
* BCS data
DATA:
send_request TYPE REF TO cl_bcs,
document TYPE REF TO cl_document_bcs,
recipient TYPE REF TO if_recipient_bcs,
bcs_exception TYPE REF TO cx_bcs,
lv_sent_to_all TYPE os_boolean,
lp_pdf_size TYPE so_obj_len,
lv_subject TYPE so_obj_des,
lv_add_nr TYPE adr6-addrnumber,
lv_inupd TYPE i.
* Archiving specific data declaration
DATA: lv_pdf_size TYPE i,
lv_archiveformat LIKE toadd-doc_type, "PDF or OTF
lv_documentclass LIKE toadv-doc_type.
*External Send
DATA: lvs_comm_type TYPE ad_comm,
lvs_comm_values TYPE szadr_comm_values,
lvs_recipient TYPE swotobjid,
lvs_sender TYPE swotobjid,
intnast TYPE snast,
xdevice(10),
xprogramm TYPE tdprogram,
xdialog.
*eMail enhancements
DATA:
lt_body TYPE bcsy_text,
lo_sender TYPE REF TO if_sender_bcs,
lv_sender_user TYPE syst_uname,
lv_attachment_subject TYPE so_obj_des.
CLEAR: ef_retco.
if_druvo = 1. "<ET220216_i/> comment start
* PERFORM check_sfw CHANGING ef_retco. "<ET220217_c/> commented
CHECK ef_retco IS INITIAL.
* Check if the subroutine is called in update task.
CALL METHOD cl_system_transaction_state=>get_in_update_task
RECEIVING
in_update_task = lv_inupd.
* IF nast-kappl = 'EF'. "<ET220217_c/> commented
* Purchase order
CREATE OBJECT cl_output_po
TYPE
cl_purchase_order_output
EXPORTING
c_mode = if_druvo
es_nast = gs_nast
iv_preview = if_preview.
CALL METHOD cl_output_po->read.
* If the medium is external send this address no is used for fetching email-id
lv_add_nr = cl_output_po->is_ekko-adrnr.
* if the medium is FAX then we need vendor Country details
lv_vend_cntry = cl_output_po->is_ekko-land_vend.
*<ET220217_c> commneted
* ELSEIF nast-kappl = 'EL'.
**Sceduling Agreement with release
*
* CREATE OBJECT cl_output_schedagr_rel
* TYPE
* cl_purchase_sched_rel_output
* EXPORTING
* c_mode = if_druvo
* xfz = xfz
* es_nast = nast.
*
* CALL METHOD cl_output_schedagr_rel->read.
** If the medium is external send this address no is used for fetching email-id
* lv_add_nr = cl_output_schedagr_rel->is_ekko-adrnr.
** if the medium is FAX then we need vendor Country details
* lv_vend_cntry = cl_output_schedagr_rel->is_ekko-land_vend.
*
* ELSE.
* MOVE nast-objky(10) TO l_ebeln.
*
* SELECT SINGLE * FROM ekko INTO ls_ekko
* WHERE ebeln EQ l_ebeln.
*
* IF ls_ekko-bstyp = 'K'.
** Contract
* CREATE OBJECT cl_output_knt
* TYPE
* cl_purchase_contract_output
* EXPORTING
* c_mode = if_druvo
* es_nast = nast.
*
* CALL METHOD cl_output_knt->read.
** If the medium is external send this address no is used for fetching email-id
* lv_add_nr = cl_output_knt->is_ekko-adrnr.
** if the medium is FAX then we need vendor Country details
* lv_vend_cntry = cl_output_knt->is_ekko-land_vend.
*
* ELSEIF ls_ekko-bstyp = 'A'.
**RFQ
* CREATE OBJECT cl_output_rfq
* TYPE
* cl_purchase_rfq_output
* EXPORTING
* c_mode = if_druvo
* es_nast = nast.
*
* CALL METHOD cl_output_rfq->read.
** If the medium is external send this address no is used for fetching email-id
* lv_add_nr = cl_output_rfq->is_ekko-adrnr.
** if the medium is FAX then we need vendor Country details
* lv_vend_cntry = cl_output_rfq->is_ekko-land_vend.
*
* ELSE.
** Scheduling Agreement
* CREATE OBJECT cl_output_schedagr
* TYPE
* cl_purchase_sched_agr_output
* EXPORTING
* c_mode = if_druvo
* es_nast = nast.
*
* CALL METHOD cl_output_schedagr->read.
** If the medium is external send this address no is used for fetching email-id
* lv_add_nr = cl_output_schedagr->is_ekko-adrnr.
** if the medium is FAX then we need vendor Country details
* lv_vend_cntry = cl_output_schedagr->is_ekko-land_vend.
*
* ENDIF.
* ENDIF.
*</ET220217_c> commneted
* Check for external send
* IF nast-nacha EQ 5. *<ET220217_c/> commneted
* ... use stratagy to get communication type
CALL FUNCTION 'ADDR_GET_NEXT_COMM_TYPE'
EXPORTING
strategy = gs_nast-tcode
address_number = lv_add_nr
IMPORTING
comm_type = lvs_comm_type
comm_values = lvs_comm_values
EXCEPTIONS
address_not_exist = 1
person_not_exist = 2
no_comm_type_found = 3
internal_error = 4
parameter_error = 5
OTHERS = 6.
* convert communication data
MOVE-CORRESPONDING gs_nast TO intnast.
MOVE sy-repid TO xprogramm.
CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'
EXPORTING
pi_comm_type = lvs_comm_type
pi_comm_values = lvs_comm_values
pi_country = lv_vend_cntry
pi_repid = xprogramm
pi_snast = intnast
IMPORTING
pe_itcpo = itcpo
pe_device = fp_outputparams-device
pe_mail_recipient = lvs_recipient
pe_mail_sender = lvs_sender
EXCEPTIONS
comm_type_not_supported = 1
recipient_creation_failed = 2
sender_creation_failed = 3
OTHERS = 4.
IF sy-subrc <> 0. " Note 1477015
*<ET220217_c> commneted
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
* EXPORTING
* msg_arbgb = sy-msgid
* msg_nr = sy-msgno
* msg_ty = sy-msgty
* msg_v1 = sy-msgv1
* msg_v2 = sy-msgv2
* msg_v3 = sy-msgv3
* msg_v4 = sy-msgv4
* EXCEPTIONS
* OTHERS = 1.
*</ET220217_c> commneted
ef_retco = 1.
EXIT.
ENDIF.
IF fp_outputparams-device = 'MAIL'.
CALL FUNCTION 'SX_ADDRESS_TO_DEVTYPE'
EXPORTING
recipient_id = lvs_recipient
sender_id = lvs_sender
EXCEPTIONS
err_invalid_route = 1
err_system = 2
OTHERS = 3.
IF sy-subrc <> 0.
**<ET220217_c> commneted
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
* EXPORTING
* msg_arbgb = sy-msgid
* msg_nr = sy-msgno
* msg_ty = sy-msgty
* msg_v1 = sy-msgv1
* msg_v2 = sy-msgv2
* msg_v3 = sy-msgv3
* msg_v4 = sy-msgv4
* EXCEPTIONS
* OTHERS = 1.
*</ET220217_c> commneted
ef_retco = 1.
EXIT.
ENDIF.
ENDIF.
* ENDIF.
ls_function = gs_tnapr-funcname.
IF NOT gs_tnapr-sform IS INITIAL.
lf_formname = gs_tnapr-sform.
TRY.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
EXPORTING
i_name = lf_formname
IMPORTING
e_funcname = ls_function
e_interface_type = fp_interfacetype.
CATCH cx_root INTO w_cx_root.
mesg = w_cx_root->get_text( ).
*<ET220217_c> commneted
* MESSAGE e000 WITH mesg INTO mesg. "*2287056
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
*</ET220217_c> commneted
ef_retco = 1.
EXIT.
ENDTRY.
ELSE.
*<ET220217_c> commneted
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
* EXPORTING
* msg_arbgb = 'VN'
* msg_nr = '027'
* msg_ty = 'E'
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
*</ET220217_c> commneted
ef_retco = 1.
EXIT. "v2287056
ENDIF.
PERFORM fill_control_structure USING gs_nast
if_preview
CHANGING fp_outputparams.
*<ET220217_c> commneted
* Do FP_JOB_OPEN only if RET_CODE is 0.
* IF nast-kappl = 'EF'.
* ef_retco = cl_output_po->ret_code.
* IF ef_retco IS NOT INITIAL. " 1468512
*
* syst-msgv1 = ls_ekko-ebeln.
* syst-msgno = '140'.
* ENDIF.
*
* ELSEIF nast-kappl = 'EL'.
* ef_retco = cl_output_schedagr_rel->ret_code.
* IF ef_retco IS NOT INITIAL. " 1468512
*
* syst-msgv1 = ls_ekko-ebeln.
* syst-msgno = '140'.
* ENDIF.
*
* ELSE.
*
* IF ls_ekko-bstyp = 'K'.
* ef_retco = cl_output_knt->ret_code.
* IF ef_retco IS NOT INITIAL. " 1468512
*
* syst-msgv1 = ls_ekko-ebeln.
* syst-msgno = '140'.
* ENDIF.
*
* ELSEIF ls_ekko-bstyp = 'A'.
* ef_retco = cl_output_rfq->ret_code.
* IF ef_retco IS NOT INITIAL. " 1468512
*
* syst-msgv1 = ls_ekko-ebeln.
* syst-msgno = '140'.
* ENDIF.
*
* ELSE .
* ef_retco = cl_output_schedagr->ret_code.
* IF ef_retco IS NOT INITIAL. " 1468512
*
* syst-msgv1 = ls_ekko-ebeln.
* syst-msgno = '140'.
* ENDIF.
*
* ENDIF.
* ENDIF.
* IF ef_retco IS NOT INITIAL.
*
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = 'W'
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
* ENDIF.
*</ET220217_c> commneted
CHECK ef_retco EQ 0.
* sending Po via Mail or archiving the PDF output
* IF if_preview IS INITIAL "In case of preview message should be displayed only
*<ET220217_c> commneted
* AND ( nast-nacha EQ 5 OR nast-tdarmod = 2 OR nast-nacha EQ 2 ).
*<ET220217_c> commneted
* Setting output parameters only if communication type is fax or email.
* IF gs_nast-nacha EQ 5.
*<ET220217_c> commneted
IF ( lvs_comm_type EQ 'FAX' OR lvs_comm_type EQ 'INT' ).
fp_outputparams-getpdf = abap_true.
IF itcpo-tdtelenum EQ space.
fp_outputparams-nodialog = ' '.
ENDIF.
ENDIF.
*<ET220217_c> commneted
* ELSE.
* fp_outputparams-getpdf = abap_true.
* ENDIF.
* Specific setting for FAX
* IF nast-nacha EQ 2.
** Setting output parameters
* fp_outputparams-device = 'TELEFAX'.
* IF nast-telfx EQ space.
* fp_outputparams-nodialog = ' '.
* ENDIF.
* ENDIF.
* ENDIF.
*</ET220217_c> commneted
IF if_preview = 'W'. "web dynpro output
* Setting output parameters
fp_outputparams-getpdf = 'X'.
fp_outputparams-device = ''.
fp_outputparams-noprint = ''. "1704638
ENDIF.
CALL FUNCTION 'FP_JOB_OPEN'
CHANGING
ie_outputparams = fp_outputparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
*<ET220217_c> commneted
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
*</ET220217_c> commneted
ef_retco = 1.
EXIT. "v2287056
ENDIF.
* To handle print and archive scenario
* IF nast-tdarmod EQ 3. *<ET220217_c/> commneted
* fp_outputparams-getpdf = abap_true.
* ENDIF.
CLEAR: fp_docparams.
fp_docparams-langu = gs_nast-spras.
fp_docparams-country = gs_nast-tland.
* IF nast-kappl = 'EF'. *<ET220217_c/> commneted
cl_output_po->is_t166u-drtyp = gs_nast-tdcovtitle. "<ET220200_i/>
CALL FUNCTION ls_function
EXPORTING
/1bcdwb/docparams = fp_docparams
mode = cl_output_po->mode
header = cl_output_po->is_ekko
addressinfo = cl_output_po->is_t024e
headerinfo = cl_output_po->is_t166u
contactinfo = cl_output_po->is_t024
headertext = cl_output_po->it_t166k
paymentterms = cl_output_po->it_payment
item = cl_output_po->it_ekpo
itemline = cl_output_po->it_item
schedule = cl_output_po->it_eket
conditions = cl_output_po->it_komvd
manfdetails = cl_output_po->it_htnmat
changetext = cl_output_po->it_t166t
account = cl_output_po->it_ekkn
qmtext = cl_output_po->it_qmtext
texts = cl_output_po->it_t166p
documents = cl_output_po->it_drad
komk = cl_output_po->is_komk
componentshdr = cl_output_po->it_complist_hdr
components = cl_output_po->it_complist
invoice = cl_output_po->it_fpltdr
invoiceper = cl_output_po->it_fpltdr_per
invoiceval = cl_output_po->it_fpltdr_val
appendixtext = cl_output_po->it_t166a
shipinstr = cl_output_po->it_t027b
variants = cl_output_po->it_pekpov
configmat = cl_output_po->it_econf_out
services = cl_output_po->it_ml_esll
srvlines = cl_output_po->it_srvlines
srvtyp = cl_output_po->it_srvtyp
srvhdr = cl_output_po->it_srvhdr
srvtime = cl_output_po->it_time
srvvalue = cl_output_po->it_esuh
formulahdr = cl_output_po->it_formel
formulabody = cl_output_po->it_variablen
srvconditions = cl_output_po->it_komvd_srv
srvtext = cl_output_po->it_t166p_srv
chngtxtsrv = cl_output_po->it_t166t_srv
mainthdr = cl_output_po->it_mmpt
maintpos = cl_output_po->it_mpos
serialnumber = cl_output_po->it_objk
conditions_hdr = cl_output_po->it_komvd_hdr
IMPORTING
/1bcdwb/formoutput = os_formout
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
*<ET220217_c> commneted
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
*</ET220217_c> commneted
ef_retco = 1.
EXIT. "v2287056
ENDIF.
*<ET220217_c> commneted
* ELSEIF nast-kappl = 'EL'.
*
* CALL FUNCTION ls_function
* EXPORTING
* /1bcdwb/docparams = fp_docparams
* mode = cl_output_schedagr_rel->mode
* header = cl_output_schedagr_rel->is_ekko
* addressinfo = cl_output_schedagr_rel->is_t024e
* headerinfo = cl_output_schedagr_rel->is_t166u
* contactinfo = cl_output_schedagr_rel->is_t024
* headertext = cl_output_schedagr_rel->it_t166k
* item = cl_output_schedagr_rel->it_ekpo
* schedule = cl_output_schedagr_rel->it_eket
* ekek = cl_output_schedagr_rel->it_ekek
* changetext = cl_output_schedagr_rel->it_t166t
* shipinstr = cl_output_schedagr_rel->it_t027b
* componentshdr = cl_output_schedagr_rel->it_complist_hdr
* components = cl_output_schedagr_rel->it_complist
* xfz = cl_output_schedagr_rel->lv_xfz
* IMPORTING
* /1bcdwb/formoutput = os_formout
* EXCEPTIONS
* usage_error = 1
* system_error = 2
* internal_error = 3
* OTHERS = 4.
* IF sy-subrc <> 0.
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
* ef_retco = 1.
* EXIT. "v2287056
* ENDIF.
*
* ELSE.
* IF ls_ekko-bstyp = 'K'.
*
* CALL FUNCTION ls_function
* EXPORTING
* /1bcdwb/docparams = fp_docparams
* mode = cl_output_knt->mode
* header = cl_output_knt->is_ekko
* addressinfo = cl_output_knt->is_t024e
* headerinfo = cl_output_knt->is_t166u
* contactinfo = cl_output_knt->is_t024
* headertext = cl_output_knt->it_t166k
* paymentterms = cl_output_knt->it_payment
* item = cl_output_knt->it_ekpo
* itemline = cl_output_knt->it_item
* schedule = cl_output_knt->it_eket
* contconditions = cl_output_knt->it_ekomd
* quanconditions = cl_output_knt->it_ekomd_quant
* valueconditions = cl_output_knt->it_ekomd_value
* lineconditions = cl_output_knt->it_ekomd_cond
* manfdetails = cl_output_knt->it_htnmat
* changetext = cl_output_knt->it_t166t
* account = cl_output_knt->it_ekkn
* qmtext = cl_output_knt->it_qmtext
* texts = cl_output_knt->it_t166p
* documents = cl_output_knt->it_drad
* komk = cl_output_knt->is_komk
* invoice = cl_output_knt->it_fpltdr
* invoiceper = cl_output_knt->it_fpltdr_per
* invoiceval = cl_output_knt->it_fpltdr_val
* appendixtext = cl_output_knt->it_t166a
* shipinstr = cl_output_knt->it_t027b
* variants = cl_output_knt->it_pekpov
* configmat = cl_output_knt->it_econf_out
* services = cl_output_knt->it_ml_esll
* srvlines = cl_output_knt->it_srvlines
* srvtyp = cl_output_knt->it_srvtyp
* srvhdr = cl_output_knt->it_srvhdr
* srvtime = cl_output_knt->it_time
* srvvalue = cl_output_knt->it_esuh
* formulahdr = cl_output_knt->it_formel
* formulabody = cl_output_knt->it_variablen
* srvconditions = cl_output_knt->it_komvd_srv
* srvtext = cl_output_knt->it_t166p_srv
* chngtxtsrv = cl_output_knt->it_t166t_srv
* mainthdr = cl_output_knt->it_mmpt
* maintpos = cl_output_knt->it_mpos
* IMPORTING
* /1bcdwb/formoutput = os_formout
* EXCEPTIONS
* usage_error = 1
* system_error = 2
* internal_error = 3
* OTHERS = 4.
* IF sy-subrc <> 0.
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
* ef_retco = 1.
* EXIT. "v2287056
* ENDIF.
* ELSEIF ls_ekko-bstyp = 'A'. "rfq
*
* CALL FUNCTION ls_function
* EXPORTING
* /1bcdwb/docparams = fp_docparams
* mode = cl_output_rfq->mode
* header = cl_output_rfq->is_ekko
* addressinfo = cl_output_rfq->is_t024e
* headerinfo = cl_output_rfq->is_t166u
* contactinfo = cl_output_rfq->is_t024
* headertext = cl_output_rfq->it_t166k
* paymentterms = cl_output_rfq->it_payment
* item = cl_output_rfq->it_ekpo
* itemline = cl_output_rfq->it_item
* schedule = cl_output_rfq->it_eket
* manfdetails = cl_output_rfq->it_htnmat
* changetext = cl_output_rfq->it_t166t
* qmtext = cl_output_rfq->it_qmtext
* texts = cl_output_rfq->it_t166p
* documents = cl_output_rfq->it_drad
* komk = cl_output_rfq->is_komk
* invoice = cl_output_rfq->it_fpltdr
* invoiceper = cl_output_rfq->it_fpltdr_per
* invoiceval = cl_output_rfq->it_fpltdr_val
* appendixtext = cl_output_rfq->it_t166a
* shipinstr = cl_output_rfq->it_t027b
* variants = cl_output_rfq->it_pekpov
* configmat = cl_output_rfq->it_econf_out
* services = cl_output_rfq->it_ml_esll
* srvlines = cl_output_rfq->it_srvlines
* srvtyp = cl_output_rfq->it_srvtyp
* srvhdr = cl_output_rfq->it_srvhdr
* srvtime = cl_output_rfq->it_time
* srvvalue = cl_output_rfq->it_esuh
* formulahdr = cl_output_rfq->it_formel
* formulabody = cl_output_rfq->it_variablen
* srvtext = cl_output_rfq->it_t166p_srv
* chngtxtsrv = cl_output_rfq->it_t166t_srv
* mainthdr = cl_output_rfq->it_mmpt
* maintpos = cl_output_rfq->it_mpos
* IMPORTING
* /1bcdwb/formoutput = os_formout
* EXCEPTIONS
* usage_error = 1
* system_error = 2
* internal_error = 3
* OTHERS = 4.
* IF sy-subrc <> 0.
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
* ef_retco = 1.
* EXIT. "v2287056
* ENDIF.
*
* ELSE.
*
* CALL FUNCTION ls_function
* EXPORTING
* /1bcdwb/docparams = fp_docparams
* mode = cl_output_schedagr->mode
* header = cl_output_schedagr->is_ekko
* addressinfo = cl_output_schedagr->is_t024e
* headerinfo = cl_output_schedagr->is_t166u
* contactinfo = cl_output_schedagr->is_t024
* headertext = cl_output_schedagr->it_t166k
* paymentterms = cl_output_schedagr->it_payment
* item = cl_output_schedagr->it_ekpo
* itemline = cl_output_schedagr->it_item
* schedule = cl_output_schedagr->it_eket
* conditions = cl_output_schedagr->it_komvd
* contconditions = cl_output_schedagr->it_ekomd
* quanconditions = cl_output_schedagr->it_ekomd_quant
* valueconditions = cl_output_schedagr->it_ekomd_value
* lineconditions = cl_output_schedagr->it_ekomd_cond
* manfdetails = cl_output_schedagr->it_htnmat
* changetext = cl_output_schedagr->it_t166t
* account = cl_output_schedagr->it_ekkn
* qmtext = cl_output_schedagr->it_qmtext
* texts = cl_output_schedagr->it_t166p
* documents = cl_output_schedagr->it_drad
* komk = cl_output_schedagr->is_komk
* invoice = cl_output_schedagr->it_fpltdr
* invoiceper = cl_output_schedagr->it_fpltdr_per
* invoiceval = cl_output_schedagr->it_fpltdr_val
* appendixtext = cl_output_schedagr->it_t166a
* shipinstr = cl_output_schedagr->it_t027b
* variants = cl_output_schedagr->it_pekpov
* configmat = cl_output_schedagr->it_econf_out
* services = cl_output_schedagr->it_ml_esll
* srvlines = cl_output_schedagr->it_srvlines
* srvtyp = cl_output_schedagr->it_srvtyp
* srvhdr = cl_output_schedagr->it_srvhdr
* srvtime = cl_output_schedagr->it_time
* srvvalue = cl_output_schedagr->it_esuh
* formulahdr = cl_output_schedagr->it_formel
* formulabody = cl_output_schedagr->it_variablen
* srvconditions = cl_output_schedagr->it_komvd_srv
* srvtext = cl_output_schedagr->it_t166p_srv
* chngtxtsrv = cl_output_schedagr->it_t166t_srv
* mainthdr = cl_output_schedagr->it_mmpt
* maintpos = cl_output_schedagr->it_mpos
* IMPORTING
* /1bcdwb/formoutput = os_formout
* EXCEPTIONS
* usage_error = 1
* system_error = 2
* internal_error = 3
* OTHERS = 4.
* IF sy-subrc <> 0.
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
* ef_retco = 1.
* EXIT. "v2287056
* ENDIF.
* ENDIF.
* ENDIF.
*</ET220217_c> commneted
*sending Document out via mail or FAX
IF if_preview IS INITIAL "In case of preview message should be displayed only
* AND ( nast-nacha EQ 5 OR nast-nacha EQ 2 )
AND os_formout IS NOT INITIAL.
* AND nast-tdarmod NE 2. "2243519
* get Email id from address no
SELECT SINGLE smtp_addr FROM adr6 INTO lv_emailaddr WHERE addrnumber =
lv_add_nr AND flgdefault = abap_true. "#EC CI_NOORDER
" When more than one address is maintained default address should be selected.
" When there is only one mail id then that will have default flag set
* Set FAX specific setting
* IF gs_nast-nacha EQ 5. *<ET220217_c/> commneted
lv_outputparams_fax-telenum = itcpo-tdtelenum.
lv_outputparams_fax-teleland = itcpo-tdteleland.
*<ET220217_c> commneted
* ELSE.
* IF nast-telfx NE space.
* lv_outputparams_fax-telenum = nast-telfx.
* IF nast-tland IS INITIAL.
* lv_outputparams_fax-teleland = lv_vend_cntry.
* ELSE.
* lv_outputparams_fax-teleland = nast-tland.
* ENDIF.
* ENDIF.
* ENDIF.
*<ET220217_c> commneted
IF lvs_comm_type EQ 'FAX' OR lvs_comm_type EQ 'INT'.
* "OR nast-nacha EQ 2. *<ET220217_c/> commneted
lv_subject = lv_attachment_subject = fp_outputparams-covtitle.
** call eMail change Badi
lv_sender_user = sy-uname.
* ------------ Call BCS interface ----------------------------------
TRY.
* ---------- create persistent send request ----------------------
send_request = cl_bcs=>create_persistent( ).
* ---------- add document ----------------------------------------
* get PDF xstring and convert it to BCS format
lp_pdf_size = xstrlen( os_formout-pdf ).
PERFORM xstring_to_solix
USING
os_formout-pdf.
*<ET220216_i> insert start
PERFORM get_body IN PROGRAM zdunning_email
TABLES lt_body
IF FOUND.
lv_subject = fp_outputparams-covtitle.
CALL METHOD cl_document_bcs=>create_document
EXPORTING
i_type = 'HTM'
i_subject = lv_subject
* i_language = lv_language
i_text = lt_body
RECEIVING
result = document.
*--- Add the document as an attachment
CALL METHOD document->add_attachment
EXPORTING
i_attachment_type = 'PDF'
* i_attachment_size = lp_pdf_size
i_attachment_subject = |{ lv_subject } { cl_output_po->is_ekko-
ebeln }|
* i_attachment_language = lv_language
i_att_content_hex = pdf_content.
*</ET220216_i> insert end
*<ET220216_c> comment start
* lv_subject = fp_outputparams-covtitle.
* document = cl_document_bcs=>create_document(
* i_type = 'PDF' " cf. RAW, DOC
* i_hex = pdf_content
* i_length = lp_pdf_size
* i_subject = lv_subject ). "#EC NOTEXT
* ENDIF.
"</ET2202016_c> end
* add document to send request
send_request->set_document( document ).
lo_sender = cl_sapuser_bcs=>create( lv_sender_user ) .
CALL METHOD send_request->set_sender
EXPORTING
i_sender = lo_sender.
* --------- set sender -------------------------------------------
* note: this is necessary only if you want to set the sender
* different from actual user (SY-UNAME). Otherwise sender is
* set automatically with actual user.
*
* sender = cl_sapuser_bcs=>create( sy-uname ).
* CALL METHOD send_request->set_sender
* EXPORTING i_sender = sender.
* ---------- add recipient (e-mail address) ----------------------
* CASE nast-nacha.
* WHEN 5.
* IF lvs_comm_type EQ 'INT'.
* add recipient to send request
recipient = cl_cam_address_bcs=>create_internet_address(
i_address_string = lv_emailaddr ).
send_request->add_recipient( i_recipient = recipient ).
* ENDIF.
* ELSE.
* add recipient (fax address)
* recipient = cl_cam_address_bcs=>create_fax_address(
* i_country = lv_outputparams_fax-teleland
* i_number = lv_outputparams_fax-telenum ).
* send_request->add_recipient( i_recipient = recipient ).
* ENDIF.
* WHEN 2.
** add recipient (fax address)
* recipient = cl_cam_address_bcs=>create_fax_address(
* i_country = lv_outputparams_fax-teleland
* i_number = lv_outputparams_fax-telenum ).
* send_request->add_recipient( i_recipient = recipient ).
* ENDCASE.
* ---------- send document ---------------------------------------
lv_sent_to_all = send_request->send(
i_with_error_screen = 'X' ).
* Issue message and COMMINT only if the subroutine is not called in update task
IF lv_inupd = 0.
IF lv_sent_to_all = 'X'.
MESSAGE s022(so). "1945749
ENDIF.
* ---------- explicit 'commit work' is mandatory! ----------------
COMMIT WORK.
ENDIF.
* ------------------------------------------------------------------
* * exception handling
* ------------------------------------------------------------------
CATCH cx_bcs INTO bcs_exception.
MESSAGE e451(so) WITH lv_outputparams_fax-telenum INTO mesg.
* Sending fax/mail failed
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
ef_retco = 1.
EXIT. "v2287056
ENDTRY.
ENDIF.
ENDIF.
*<ET220216_c> comment start
** Arching for adobe forms
* IF if_preview IS INITIAL "In case of preview message should be displayed only
* AND ( nast-tdarmod = 2 OR nast-tdarmod = 3 ) AND os_formout IS NOT INITIAL.
"1604020
*
** Get the PDF length
* lp_pdf_size = xstrlen( os_formout-pdf ).
*
** defaults for archive
* IF toa_dara-function = space.
* toa_dara-function = 'DARA'.
* ENDIF.
* "tdv20210122>>>
* IF toa_dara-sap_object = 'EKKO'.
* toa_dara-sap_object = 'BUS2012'.
* arc_params-sap_object = 'BUS2012'.
* ENDIF.
* "tdv<<<
** which format to be used for archiving: OTF or PDF?
* CALL FUNCTION 'ARCHIV_GET_PRINTFORMAT'
* EXPORTING
* application = 'PDF'
* IMPORTING
* printformat = lv_archiveformat.
*
* IF lv_archiveformat EQ 'PDF'.
* lv_documentclass = 'PDF'.
*
* CALL FUNCTION 'ARCHIV_CREATE_OUTGOINGDOCUMENT'
* EXPORTING
* arc_p = arc_params
* arc_i = toa_dara
* pdflen = lv_pdf_size
* documentclass = lv_documentclass "Since the
output is in PDF document class is also PDF
* document = os_formout-pdf
* EXCEPTIONS
* error_archiv = 1
* error_communicationtable = 2
* error_connectiontable = 3
* error_kernel = 4
* error_parameter = 5
* OTHERS = 6.
* CASE sy-subrc.
* WHEN 0. " o.k.
* WHEN 1. RAISE error_archiv.
* WHEN 2. RAISE error_communicationtable.
* WHEN 3. RAISE error_connectiontable.
* WHEN 4. RAISE error_kernel.
* WHEN 5. RAISE error_parameter.
* WHEN 6. RAISE error_archiv. "?
* ENDCASE.
*
* ELSE.
* " Other than PDF format raise error.
* MESSAGE e789(po) WITH lv_archiveformat INTO mesg.
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
* ef_retco = 1.
* EXIT. "v2287056
* ENDIF.
* ENDIF.
* CALL FUNCTION 'FP_GET_LAST_ADS_ERRSTR'
* IMPORTING
* e_adserrstr = l_errstr.
*
** To handle print and archive scenario
* IF nast-tdarmod EQ 3.
* fp_outputparams-getpdf = abap_false.
* ENDIF.
*<ET220216_c> comment end
CALL FUNCTION 'FP_JOB_CLOSE'
* IMPORTING
* E_RESULT =
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
*<ET220216_c> comment start
* CALL FUNCTION 'NAST_PROTOCOL_UPDATE' "^2287056
* EXPORTING
* msg_arbgb = 'ME'
* msg_nr = syst-msgno
* msg_ty = syst-msgty
* msg_v1 = syst-msgv1
* msg_v2 = syst-msgv2
* msg_v3 = syst-msgv3
* msg_v4 = syst-msgv4
* EXCEPTIONS
* OTHERS = 1.
*<ET220216_c> comment end
ef_retco = 1.
EXIT. "v2287056
ENDIF.
*<ET220216_c> comment start
* IF nast-kappl EQ 'EL' AND nast-sndex IS INITIAL AND if_preview IS INITIAL.
"^1536566
** missing environment for limiting update print dependend data
* IF sy-ucomm NE '9ANZ' AND sy-ucomm NE '9DPR'.
* PERFORM update_release(saplmedruck) TABLES cl_output_schedagr_rel->it_ekpo
* cl_output_schedagr_rel->it_ekek
* cl_output_schedagr_rel->it_ekeh
* USING if_druvo nast-kschl.
* ENDIF.
* ENDIF. "v1536566
*
* IF if_preview = 'W'. "web dynpro output
* EXPORT lv_pdf_file = os_formout-pdf TO MEMORY ID 'PDF_FILE'.
* ENDIF.
*<ET220216_c> comment end
ENDFORM.
*&---------------------------------------------------------------------*
*& Form fill_control_structure
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fill_control_structure USING VALUE(is_nast) TYPE nast
VALUE(if_preview) TYPE c
CHANGING es_outparms TYPE sfpoutputparams.
CLEAR: es_outparms.
IF if_preview IS INITIAL.
CLEAR: es_outparms-preview.
ELSE.
es_outparms-preview = abap_true.
es_outparms-noprint = abap_true.
ENDIF.
es_outparms-nodialog = 'X'.
es_outparms-dest = is_nast-ldest.
es_outparms-reqimm = is_nast-dimme.
es_outparms-reqdel = is_nast-delet.
es_outparms-copies = is_nast-anzal.
es_outparms-dataset = is_nast-dsnam.
es_outparms-suffix1 = is_nast-dsuf1.
es_outparms-suffix2 = is_nast-dsuf2.
es_outparms-covtitle = is_nast-tdcovtitle.
es_outparms-cover = is_nast-tdocover.
es_outparms-receiver = is_nast-tdreceiver.
es_outparms-division = is_nast-tddivision.
es_outparms-reqfinal = 'X'.
es_outparms-arcmode = is_nast-tdarmod.
es_outparms-schedule = is_nast-tdschedule.
es_outparms-senddate = is_nast-vsdat.
es_outparms-sendtime = is_nast-vsura.
ENDFORM. " fill_control_structure
*&---------------------------------------------------------------------*
*& Form message_title
*&---------------------------------------------------------------------*
*& *Extract AUFB with title from NAST
*&---------------------------------------------------------------------*
FORM message_title .
DATA: lv_name TYPE thead-tdname,
lt_lines TYPE STANDARD TABLE OF tline.
CLEAR gs_nast.
*<ET220121_c> comment start
* Reqad Document Title From NACE - AUFB
* SELECT SINGLE objdes FROM tnati
* INTO @DATA(lv_desc)
* WHERE spras EQ @sy-langu
* AND kappl EQ @gc_ef
* AND kschl EQ @gc_aufb.
*</ET220121_c> comment end
*<ET220121_i> insert start: Read Tittle from SO10 text
lv_name = 'ZMAIL_PO_DUNNING_MAIL_SUBJ_4010'.
CALL FUNCTION 'READ_STDTEXT'
EXPORTING
id = 'ST'
language = sy-langu
name = lv_name
TABLES
lines = lt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
reference_check = 5
OTHERS = 6.
LOOP AT lt_lines[] INTO DATA(ls_line).
CONCATENATE gs_nast-tdcovtitle ls_line-tdline
INTO gs_nast-tdcovtitle SEPARATED BY space.
ENDLOOP.
*</ET220121_i> insert end
*Fill out key and tcode( for emailing )
gs_nast-objky(10) = gt_out-ebeln.
* gs_nast-nacha = 5.
gs_nast-tcode = gc_cs01.
* gs_nast-tdcovtitle = lv_desc. "<ET220221_c/>
gs_nast-spras = sy-langu.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form read_form_name
*&---------------------------------------------------------------------*
*& *Extract external send record from TNAPR (take formname etc..)
*&---------------------------------------------------------------------*
FORM read_form_name .
CLEAR gs_tnapr.
SELECT SINGLE * FROM tnapr
INTO gs_tnapr
WHERE kschl EQ gc_aufb
AND kappl EQ gc_ef
AND nacha EQ '5'. ""External send
ENDFORM.