0% found this document useful (0 votes)
232 views26 pages

Forms

This document contains an ABAP program for sending dunning emails. It includes forms for initializing the program, extracting data from database tables, elaborating on the data, and displaying output. Key steps are extracting order data, calculating due dates, reading an email body text, converting a PDF attachment to binary format, and sending the email with PDF attachment.

Uploaded by

EEE
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
232 views26 pages

Forms

This document contains an ABAP program for sending dunning emails. It includes forms for initializing the program, extracting data from database tables, elaborating on the data, and displaying output. Key steps are extracting order data, calculating due dates, reading an email body text, converting a PDF attachment to binary format, and sending the email with PDF attachment.

Uploaded by

EEE
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 26

*&---------------------------------------------------------------------*

*& 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.

You might also like