Forms
Forms
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[].
ENDFORM.
*&---------------------------------------------------------------------*
*& Form elaboration
*&---------------------------------------------------------------------*
FORM elaboration .
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.
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.
APPEND gt_out.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form show_output
*&---------------------------------------------------------------------*
FORM show_output .
CLEAR ls_layout.
ls_layout-zebra = 'X'.
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.
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.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_BODY
*&---------------------------------------------------------------------*
FORM get_body TABLES pt_body TYPE bcsy_text.
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.
* 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
*<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
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.
*<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.
CHECK ef_retco EQ 0.
CLEAR: fp_docparams.
fp_docparams-langu = gs_nast-spras.
fp_docparams-country = gs_nast-tland.
* IF nast-kappl = 'EF'. *<ET220217_c/> commneted
*<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.
*<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
PERFORM xstring_to_solix
USING
os_formout-pdf.
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.
* 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.
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.
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
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.