Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

email issue

Former Member
0 Likes
974

Guy's

i have one print program ,that is able to send email

to customer ,i am not sure ,how these print program

is able to send email to user ,when functional guy

trigeer message type or output type assign to these

program ,it send email to user,which i can verify in

sost

transcation,but these program is cloned
and modified ,but these particular program is not able
to send any email.when i check old program ,there is one
function module

ADDR_GET_NEXT_COMM_TYPE

in program
which is able to trigger email,is this is the function module,that is causing email to trigger,that is getting reflected in

sost

transcation,following is the

program that is able to send email to customer

TABLES: komk ,

komp ,

komvd ,

vbco3 ,

vbdkr ,

t052u ,

vbdpr ,

vbdre ,

conf_out,

sadr ,

tvko ,

adrs ,

t005 ,

t001 ,

t001g ,

konh ,

tlic ,

kna1,

knvv,

knvp,

vbpa,

vbap,

vbak,

lips,

likp,

bkpf,

bseg,

makt,

t006,

t007s,

tcurr,

tcurx,

tcurf,

vbuk,

vbfa,

t001w,

adrc,

t005t,

ekpo,

vbkd, "MOD03

edp12, "MOD05

vbrl,

zcaopauth, "MOD08

edp13, "MOD08

edp21. "MOD08

***********************************************************************

  • Additional definitions of tables for general issues *

***********************************************************************

INCLUDE rvadtabl.

***********************************************************************

  • Definition of internal tables *

***********************************************************************

DATA: BEGIN OF tvbdpr OCCURS 100. "Internal table for items

INCLUDE STRUCTURE vbdpr.

DATA: END OF tvbdpr.

DATA: BEGIN OF tkomv OCCURS 50.

INCLUDE STRUCTURE komv.

DATA: END OF tkomv.

DATA: BEGIN OF tkomvd OCCURS 50.

INCLUDE STRUCTURE komvd.

DATA: END OF tkomvd.

DATA: BEGIN OF *tkomvd OCCURS 50.

INCLUDE STRUCTURE komvd.

DATA: END OF *tkomvd.

DATA: BEGIN OF hkomv OCCURS 50.

INCLUDE STRUCTURE komv.

DATA: END OF hkomv.

DATA: BEGIN OF hkomvd OCCURS 50.

INCLUDE STRUCTURE komvd.

DATA: END OF hkomvd.

DATA: BEGIN OF tkomcon OCCURS 50.

INCLUDE STRUCTURE conf_out.

DATA: END OF tkomcon.

DATA: BEGIN OF tiaddr1_sel. "PDA

INCLUDE STRUCTURE addr1_sel. "PDA

DATA: END OF tiaddr1_sel. "PDA

DATA: BEGIN OF tisadr. "PDA

INCLUDE STRUCTURE sadr. "PDA

DATA: END OF tisadr. "PDA

*MOD04MOD04 *MOD05MOD05

*MOD07

  • Definition of internal variables *
MOD07 TYPE-POOLS szadr. "MED1 DATA: ti_addr1 TYPE szadr_addr1_line. "MED1 DATA: ti_adtel TYPE szadr_adtel_line. "MED1 DATA: ti_adfax TYPE szadr_adfax_line. "MED1 DATA: BEGIN OF ti_t005t. "MED1 INCLUDE STRUCTURE t005t. "MED1 DATA: END OF ti_t005t. "MED1 DATA: BEGIN OF ti_t001. "MED1 INCLUDE STRUCTURE t001. "MED1 DATA: END OF ti_t001. "MED1 DATA: cpaval01 LIKE t001z-paval. "MED1 DATA: cpaval02 LIKE t001z-paval. "MED1 DATA: cpaval03 LIKE t001z-paval. "MED1 DATA: zname LIKE adrc-name1. DATA: zname2 LIKE adrc-name2. DATA: zcity LIKE adrc-city1. DATA: zstreet LIKE adrc-street. DATA: zcountry LIKE t005t-landx. *********************************************************************** *********************************************************************** DATA: retcode LIKE sy-subrc. "Returncode DATA: repeat(1) TYPE c. DATA: xscreen(1) TYPE c. "Output on printer or screen DATA: xvbeln LIKE vbrk-vbeln. DATA: xposnr LIKE vbrl-posnr. DATA: pr_kappl(01) TYPE c VALUE 'V'. "Application for pricing DATA: print_mwskz. "Mehrwertsteuer-Kz drucken *{MOD01 DATA: z_vslflight LIKE tline-tdline, z_portload LIKE tline-tdline, z_portdisc LIKE tline-tdline, z_placedely LIKE tline-tdline, z_stlocn LIKE lips-lgort, z_commcode LIKE marc-stawn. *MOD01} *MOD02

*MOD03MOD03

*MOD08MOD08

***********************************************************************

  • Definition of variables for calling customer subroutines dynamically*

***********************************************************************

DATA : header_userexit LIKE tnapr-ronam,

item_userexit LIKE tnapr-ronam,

header_print_userexit LIKE tnapr-ronam,

item_print_userexit LIKE tnapr-ronam,

get_data_userexit LIKE tnapr-ronam.

***********************************************************************

  • Specific data of ENTRY_CH

***********************************************************************

DATA print_local_curr_ch.

DATA: komvdk_ch LIKE komvd OCCURS 10 WITH HEADER LINE.

DATA: komvdp_ch LIKE komvd OCCURS 10 WITH HEADER LINE.

***********************************************************************

  • Variabili aggiunte

***********************************************************************

DATA:

spkna1 LIKE kna1,

bpkna1 LIKE kna1,

shkna1 LIKE kna1,

pykna1 LIKE kna1,

iva LIKE komvd-kbetr,

toteuro TYPE p DECIMALS 2,

totpos_euro TYPE p DECIMALS 2,

totiva_euro TYPE p DECIMALS 2,

netto LIKE vbdpr-ntgew,

lordo LIKE vbdpr-brgew,

ddt LIKE vbak-bstnk,

ordacq LIKE vbak-bstnk.

    • Atlas Change Starts

DATA: it_print LIKE zsd_inv_atlas OCCURS 0 WITH HEADER LINE.

DATA: l_frm_name TYPE tdsfname.

DATA: l_fnmod TYPE rs38l_fnam, "Function module name

l_wa_control_parameters TYPE ssfctrlop, "Cntl par for SF

l_wa_output_options TYPE ssfcompop. "O/P opt for SF

    • Atlas Change Ends

***********************************************************************

  • Standard Routine ENTRY *

***********************************************************************

FORM entry USING return_code us_screen.

CLEAR retcode.

xscreen = us_screen.

PERFORM processing USING us_screen.

CASE retcode.

WHEN 0.

return_code = 0.

WHEN 3.

return_code = 3.

WHEN OTHERS.

return_code = 1.

ENDCASE.

ENDFORM. "entry

***********************************************************************

  • Standard Routine ENTRY_ESR *

***********************************************************************

FORM entry_esr USING return_code us_screen.

CLEAR retcode.

xscreen = us_screen.

PERFORM processing_esr USING us_screen.

CASE retcode.

WHEN 0.

return_code = 0.

WHEN 3.

return_code = 3.

WHEN OTHERS.

return_code = 1.

ENDCASE.

ENDFORM. "entry_esr

***********************************************************************

  • Standard Routine ENTRY_ITALY *

***********************************************************************

FORM entry_italy USING return_code us_screen.

CLEAR retcode.

xscreen = us_screen.

PERFORM processing_italy USING us_screen.

CASE retcode.

WHEN 0.

return_code = 0.

WHEN 3.

return_code = 3.

WHEN OTHERS.

return_code = 1.

ENDCASE.

ENDFORM. "entry_italy

***********************************************************************

  • Standard Routine ENTRY_CH *

***********************************************************************

FORM entry_ch USING return_code us_screen.

CLEAR retcode.

xscreen = us_screen.

header_userexit = 'HEADER_CH'.

item_userexit = 'ITEM_CH'.

header_print_userexit = 'HEADER_PRINT_CH'.

item_print_userexit = 'ITEM_PRINT_CH'.

PERFORM processing USING us_screen.

CASE retcode.

WHEN 0.

return_code = 0.

WHEN 3.

return_code = 3.

WHEN OTHERS.

return_code = 1.

ENDCASE.

ENDFORM. "entry_ch

***********************************************************************

  • Customer Entry-Routines *

***********************************************************************

***********************************************************************

  • Standard Routine PROCESSING *

***********************************************************************

FORM processing USING proc_screen.

    • Atlas Change Starts

PERFORM sf_workarea.

  • Authorization Check not Required.

*Mod06

  • PERFORM authorization_check.

  • CHECK retcode = 0.

*Mod06

    • Atlas Change Ends

PERFORM get_data.

CHECK retcode = 0.

PERFORM check_duplicate. "MOD08

PERFORM ics_invoice. "MOD03

    • Atlas Change Starts

  • PERFORM form_open USING proc_screen vbdkr-land1.

  • CHECK retcode = 0.

    • Atlas Change Ends

PERFORM indirizzi.

CHECK retcode = 0.

PERFORM dati.

PERFORM item_print.

CHECK retcode = 0.

    • Atlas Change Starts

  • PERFORM end_print.

  • CHECK retcode = 0.

  • PERFORM form_close.

  • CHECK retcode = 0.

    • Atlas Change Ends

    • Atlas Change Starts

l_frm_name = tnapr-sform. "Move the Smartform Name

l_wa_output_options-tdcopies = nast-anzal.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = l_frm_name

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

fm_name = l_fnmod

EXCEPTIONS

no_form = 1

no_function_module = 2

OTHERS = 3

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IF nast-nacha EQ 1.

l_wa_control_parameters-device = 'PRINTER'.

l_wa_output_options-tddest = nast-ldest.

l_wa_output_options-tdimmed = nast-dimme.

l_wa_control_parameters-no_dialog = 'X'. "No dialog

l_wa_control_parameters-preview = xscreen.

ELSEIF nast-nacha EQ 2.

l_wa_control_parameters-device = 'TELEFAX'.

l_wa_output_options-bcs_commit = 'X'.

"SAP-SF General flag

l_wa_output_options-tdtelenum = nast-telfx. " Telecommuni part

l_wa_output_options-tdteleland = nast-tland. "'AU' Country Key

CONCATENATE text-m02

vbdkr-vbeln

text-m03

sy-datum

INTO l_wa_output_options-tdtitle SEPARATED BY space.

ENDIF.

IF nast-nacha EQ 1 OR nast-nacha EQ 2.

PERFORM call_smart_form.

ENDIF.

    • Atlas Change Ends

ENDFORM. "processing

***********************************************************************

  • Standard Routine PROCESSING_ESR *

***********************************************************************

FORM processing_esr USING proc_screen.

*Mod08

PERFORM authorization_check.

CHECK retcode = 0.

*Mod08

PERFORM get_data.

PERFORM get_data_esr.

CHECK retcode = 0.

PERFORM form_open USING proc_screen vbdkr-land1.

CHECK retcode = 0.

PERFORM start_form.

CHECK retcode = 0.

PERFORM header_consgnee.

CHECK retcode = 0.

PERFORM header_text_print.

CHECK retcode = 0.

PERFORM item_print.

CHECK retcode = 0.

PERFORM end_print.

CHECK retcode = 0.

PERFORM form_close.

CHECK retcode = 0.

ENDFORM. "processing_esr

***********************************************************************

  • Standard Routine PROCESSING_ITALY *

***********************************************************************

FORM processing_italy USING proc_screen.

*Mod08

PERFORM authorization_check.

CHECK retcode = 0.

*Mod08

PERFORM get_data.

PERFORM get_data_italy USING proc_screen.

CHECK retcode = 0.

PERFORM form_open USING proc_screen vbdkr-land1.

CHECK retcode = 0.

PERFORM form_title_print.

CHECK retcode = 0.

PERFORM header_consgnee.

CHECK retcode = 0.

PERFORM reference_number.

CHECK retcode = 0.

PERFORM tax_text_print.

CHECK retcode = 0.

PERFORM header_data_print.

CHECK retcode = 0.

PERFORM header_text_print.

CHECK retcode = 0.

PERFORM item_print.

CHECK retcode = 0.

PERFORM end_print.

CHECK retcode = 0.

PERFORM form_close.

CHECK retcode = 0.

ENDFORM. "processing_italy

***********************************************************************

  • SAP STANDARD-SUBROUTINES *

***********************************************************************

*----


*

  • FORM AMOUNT_FOR_CASH_DISCOUNT *

*----


*

  • This routine prints the amount qualifying for cash discount. *

*----


*

FORM amount_for_cash_discount.

CHECK vbdkr-skfbk NE 0.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'AMOUNT_QUALIFYING_FOR_CASH_DISCOUNT'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "amount_for_cash_discount

*----


*

  • FORM PAYMENT_SPLIT *

*----


*

  • This routine prints the payment split *

*----


*

FORM payment_split.

DATA: h_skfbt LIKE acccr-skfbt.

DATA: h_fkdat LIKE vbrk-fkdat.

DATA: h_fkwrt LIKE acccr-wrbtr.

DATA : BEGIN OF payment_split OCCURS 3.

INCLUDE STRUCTURE vtopis.

DATA : END OF payment_split.

CHECK vbdkr-zterm NE space.

h_skfbt = vbdkr-skfbk.

h_fkwrt = komk-fkwrt.

h_fkdat = vbdkr-fkdat.

IF vbdkr-valdt NE 0.

h_fkdat = vbdkr-valdt.

ENDIF.

IF vbdkr-valtg NE 0.

h_fkdat = vbdkr-fkdat + vbdkr-valtg.

ENDIF.

CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT_SPLI'

EXPORTING

bldat = vbdkr-fkdat

budat = h_fkdat

cpudt = vbdkr-erdat

language = sy-langu

terms_of_payment = vbdkr-zterm

wert = h_fkwrt "Warenwert + Tax

waerk = vbdkr-waerk

fkdat = vbdkr-fkdat

skfbt = h_skfbt

TABLES

top_text_split = payment_split

EXCEPTIONS

terms_of_payment_not_in_t052 = 01

terms_of_payment_not_in_t052s = 02.

LOOP AT payment_split.

AT FIRST.

CALL FUNCTION 'CONTROL_FORM'

EXPORTING

command = 'PROTECT'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TERMS_OF_PAYMENT_SPLIT_HEADER'.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDAT.

vbdkr-text = payment_split-line.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TERMS_OF_PAYMENT_SPLIT'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

AT LAST.

CALL FUNCTION 'CONTROL_FORM'

EXPORTING

command = 'ENDPROTECT'.

ENDAT.

ENDLOOP.

ENDFORM. "payment_split

*----


*

  • FORM CHECK_REPEAT *

*----


*

  • A text is printed, if it is a repeat print for the document. *

*----


*

FORM check_repeat.

CLEAR repeat.

SELECT * INTO *nast FROM nast WHERE kappl = nast-kappl

AND objky = nast-objky

AND kschl = nast-kschl

AND spras = nast-spras

AND parnr = nast-parnr

AND parvw = nast-parvw

AND nacha BETWEEN '1' AND '4'.

CHECK *nast-vstat = '1'.

repeat = 'X'.

EXIT.

ENDSELECT.

ENDFORM. "check_repeat

*----


*

  • FORM DIFFERENT_CONSIGNEE *

*----


*

  • If the consignee in the item is different to the header con- *

  • signee, it is printed by this routine. *

*----


*

FORM different_consignee.

CHECK vbdkr-name1_we NE vbdpr-name1_we

OR vbdkr-name2_we NE vbdpr-name2_we

OR vbdkr-name3_we NE vbdpr-name3_we

OR vbdkr-name4_we NE vbdpr-name4_we.

CHECK vbdpr-name1_we NE space

OR vbdpr-name2_we NE space

OR vbdpr-name3_we NE space

OR vbdpr-name4_we NE space.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_CONSIGNEE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "different_consignee

*----


*

  • FORM DIFFERENT_DELIVERY_NO *

*----


*

  • If the delivery number is different to number in the header, *

  • it is printed by this routine. *

*----


*

FORM different_delivery_no.

CHECK vbdkr-vbtyp CA 'MUN'.

CHECK vbdpr-vbeln_vl NE vbdpr-vbeln_vauf.

CHECK vbdkr-vbeln_vl NE vbdpr-vbeln_vl.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_DELIVERY_NO'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "different_delivery_no

*----


*

  • FORM DIFFERENT_ORDER_NO *

*----


*

  • If the order number is different to number in the header, *

  • it is printed by this routine. *

*----


*

FORM different_order_no.

CHECK vbdkr-vbtyp CA 'MUN'.

CHECK vbdkr-vbeln_vauf NE vbdpr-vbeln_vauf.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_ORDER_NO'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "different_order_no

*----


*

  • FORM DIFFERENT_EXTERN_NO *

*----


*

  • If the extern number is different to number in the header, *

  • it is printed by this routine. *

*----


*

FORM different_extern_no.

CHECK vbdkr-vbtyp CA 'MUN'.

CHECK vbdkr-vbeln_vauf EQ space.

CHECK vbdkr-vbeln_vl EQ space.

CHECK vbdpr-vbeln_vauf EQ space.

CHECK vbdpr-vbeln_vl EQ space.

CHECK vbdkr-vgbel NE vbdpr-vgbel.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_EXTERN_NO'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "different_extern_no

*----


*

  • FORM DIFFERENT_PURCHASE_ORDER_NO *

*----


*

  • If the purchase order number is different to number in the *

  • header, it is printed by this routine. *

*----


*

FORM different_purchase_order_no.

CHECK vbdkr-vbtyp CA 'MUN'.

CHECK vbdkr-bstnk NE vbdpr-bstnk

OR vbdkr-bstdk NE vbdpr-bstdk.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_PURCHASE_ORDER_NO'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "different_purchase_order_no

*----


*

  • FORM END_PRINT *

*----


*

  • *

*----


*

FORM end_print.

  • call function 'CONTROL_FORM'

  • exporting

  • command = 'PROTECT'.

PERFORM header_price_print.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TOTALE_FATT'

function = 'APPEND'

window = 'TOTALI'.

PERFORM euro.

PERFORM cond_pagamento.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'EURO-BONIFICO'

function = 'APPEND'

window = 'BON-EURO'.

  • call function 'WRITE_FORM'

  • exporting

  • element = 'END_VALUES'.

  • perform amount_for_cash_discount.

  • call function 'CONTROL_FORM'

  • exporting

  • command = 'ENDPROTECT'.

  • perform payment_split.

  • call function 'WRITE_FORM'

  • exporting

  • element = 'SUPPLEMENT_TEXT'

  • exceptions

  • element = 1

  • window = 2.

  • if sy-subrc ne 0.

  • perform protocol_update.

  • endif.

ENDFORM. "end_print

*----


*

  • FORM FORM_CLOSE *

*----


*

  • End of printing the form *

*----


*

FORM form_close.

CALL FUNCTION 'CLOSE_FORM'

EXCEPTIONS

OTHERS = 1.

IF sy-subrc NE 0.

retcode = sy-subrc.

PERFORM protocol_update.

ENDIF.

SET COUNTRY space.

ENDFORM. "form_close

*----


*

  • FORM FORM_OPEN *

*----


*

  • Start of printing the form *

*----


*

  • --> US_SCREEN Output on screen *

  • ' ' = Printer *

  • 'X' = Screen *

  • --> US_COUNTRY County for telecommunication and SET COUNTRY *

*----


*

FORM form_open USING us_screen us_country.

INCLUDE zvadopfo.

ENDFORM. "form_open

*----


*

  • FORM FORM_TITLE_PRINT *

*----


*

  • Printing of the form title depending of the field VBTYP *

*----


*

FORM form_title_print.

CASE vbdkr-vbtyp.

WHEN 'M'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TITLE_M'

window = 'TITLE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

WHEN 'N'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TITLE_N'

window = 'TITLE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

WHEN 'O'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TITLE_O'

window = 'TITLE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

WHEN 'P'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TITLE_P'

window = 'TITLE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

WHEN 'S'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TITLE_S'

window = 'TITLE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

WHEN 'U'.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TITLE_U'

window = 'TITLE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

WHEN OTHERS.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TITLE_M'

window = 'TITLE'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDCASE.

IF repeat NE space.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'REPEAT'

window = 'REPEAT'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDIF.

ENDFORM. "form_title_print

*----


*

  • FORM GET_DATA *

*----


*

  • General provision of data for the form *

*----


*

FORM get_data.

CALL FUNCTION 'RV_PRICE_PRINT_REFRESH'

TABLES

tkomv = tkomv.

CLEAR komk.

CLEAR komp.

IF nast-objky+10(6) NE space.

vbco3-vbeln = nast-objky+16(10).

ELSE.

vbco3-vbeln = nast-objky.

ENDIF.

vbco3-mandt = sy-mandt.

  • VBCO3-SPRAS = 'I'. "nast-spras.

vbco3-kunde = nast-parnr.

vbco3-parvw = nast-parvw.

CALL FUNCTION 'RV_BILLING_PRINT_VIEW'

EXPORTING

comwa = vbco3

IMPORTING

kopf = vbdkr

TABLES

pos = tvbdpr

EXCEPTIONS

terms_of_payment_not_in_t052 = 1

  • OTHERS = 4

error_message = 5

OTHERS = 4.

IF NOT sy-subrc IS INITIAL.

IF sy-subrc = 1.

syst-msgty = 'I'.

PERFORM protocol_update.

ENDIF.

ENDIF.

    • Atlas Changes Starts -(11/04/2006)

  • PERFORM sender.

    • Atlas Changes Ends

PERFORM check_repeat.

PERFORM get_header_prices.

  • Calling customer subroutine dynamically for additional data transfer

IF NOT get_data_userexit IS INITIAL.

PERFORM (get_data_userexit) IN PROGRAM rvadin01 IF FOUND.

ENDIF.

PERFORM company_name. "MED1

*{Mod01

PERFORM std_text_others_population.

*Mod01}

*MOD02{

SELECT vbeln

anzpk

btgew

vstel

FROM likp

INTO TABLE i_likp

FOR ALL ENTRIES IN tvbdpr

WHERE vbeln = tvbdpr-vgbel.

CLEAR: w_anzpk,

w_btgew.

LOOP AT i_likp.

w_anzpk = w_anzpk + i_likp-anzpk.

w_btgew = w_btgew + i_likp-btgew.

ENDLOOP.

w_vstel = i_likp-vstel. "MOD06

*}MOD02

ENDFORM. "get_data

*----


*

  • FORM GET_ITEM_CHARACTERISTICS *

*----


*

  • In this routine the configuration data item is fetched from *

  • the database. *

*----


*

FORM get_item_characteristics.

REFRESH tkomcon.

CHECK NOT vbdpr-cuobj IS INITIAL.

CALL FUNCTION 'CUD0_GET_CONFIGURATION'

EXPORTING

instance = vbdpr-cuobj

language = nast-spras

TABLES

configuration = tkomcon

EXCEPTIONS

OTHERS = 4.

ENDFORM. "get_item_characteristics

*----


*

  • FORM GET_ITEM_PRICES *

*----


*

  • In this routine the price data for the item is fetched from *

  • the database. *

*----


*

FORM get_item_prices.

CLEAR: komp,

tkomv.

IF komk-knumv NE vbdkr-knumv.

CLEAR komk.

komk-mandt = sy-mandt.

komk-kalsm = vbdkr-kalsm.

komk-fkart = vbdkr-fkart.

komk-kappl = pr_kappl.

IF vbdkr-kappl NE space.

komk-kappl = vbdkr-kappl.

ENDIF.

komk-waerk = vbdkr-waerk.

komk-knumv = vbdkr-knumv.

komk-vbtyp = vbdkr-vbtyp.

ENDIF.

komp-kposn = vbdpr-posnr.

CALL FUNCTION 'RV_PRICE_PRINT_ITEM'

EXPORTING

comm_head_i = komk

comm_item_i = komp

language = nast-spras

IMPORTING

comm_head_e = komk

comm_item_e = komp

TABLES

tkomv = tkomv

tkomvd = tkomvd.

  • Calling customer subroutine dynamically for handling item prices

IF NOT item_userexit IS INITIAL.

PERFORM (item_userexit) IN PROGRAM rvadin01 IF FOUND.

ENDIF.

ENDFORM. "get_item_prices

*----


*

  • FORM GET_HEADER_PRICES *

*----


*

  • In this routine the price data for the header is fetched from *

  • the database. *

*----


*

FORM get_header_prices.

IF komk-knumv NE vbdkr-knumv.

CLEAR komk.

komk-mandt = sy-mandt.

komk-kalsm = vbdkr-kalsm.

komk-fkart = vbdkr-fkart.

komk-kappl = pr_kappl.

IF vbdkr-kappl NE space.

komk-kappl = vbdkr-kappl.

ENDIF.

komk-waerk = vbdkr-waerk.

komk-knumv = vbdkr-knumv.

komk-vbtyp = vbdkr-vbtyp.

komk-knuma = vbdkr-knuma.

ENDIF.

CALL FUNCTION 'RV_PRICE_PRINT_HEAD'

EXPORTING

comm_head_i = komk

language = nast-spras

IMPORTING

comm_head_e = komk

comm_mwskz = print_mwskz

TABLES

tkomv = tkomv

tkomvd = hkomvd.

  • Calling customer subroutine dynamically for handling header prices

IF NOT header_userexit IS INITIAL.

PERFORM (header_userexit) IN PROGRAM rvadin01 IF FOUND.

ENDIF.

ENDFORM. "get_header_prices

*----


*

  • FORM HEADER_PRICE_PRINT *

*----


*

  • Printout of the header prices *

*----


*

FORM header_price_print.

LOOP AT hkomvd.

AT FIRST.

IF komk-supos NE 0.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TOTALI_POS'

function = 'APPEND'

window = 'TOTALI'.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • ELEMENT = 'ITEM_SUM'.

ELSE.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • ELEMENT = 'UNDER_LINE'

  • EXCEPTIONS

  • ELEMENT = 1

  • WINDOW = 2.

  • IF SY-SUBRC NE 0.

  • PERFORM PROTOCOL_UPDATE.

  • ENDIF.

ENDIF.

ENDAT.

komvd = hkomvd.

IF print_mwskz = space.

CLEAR komvd-mwskz.

ENDIF.

  • if komvd-koaid = 'D'.

  • call function 'WRITE_FORM'

  • exporting

  • element = 'TAX_LINE'.

  • else.

  • call function 'WRITE_FORM'

  • exporting

  • element = 'SUM_LINE'.

  • endif.

*MOD02{

IF komvd-kschl = 'MWST'.

w_kwert = komvd-kwert.

*}MOD02

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'IVA'

function = 'APPEND'

window = 'TOTALI'.

ENDIF. "MOD02

IF hkomvd-mwskz = 'K0' OR

hkomvd-mwskz = 'K1' OR

hkomvd-mwskz = 'K2' OR

hkomvd-mwskz = 'K4' OR

hkomvd-mwskz = 'K5' OR

hkomvd-mwskz = 'K6' OR

hkomvd-mwskz = 'K7' OR

hkomvd-mwskz = 'K8'.

SELECT SINGLE * FROM t007s WHERE

spras = 'IT' AND

kalsm = 'TAXCH' AND

mwskz = hkomvd-mwskz.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'CODIVA'

window = 'MAIN'.

ENDIF.

ENDLOOP.

DESCRIBE TABLE hkomvd LINES sy-tfill.

IF sy-tfill = 0.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • ELEMENT = 'UNDER_LINE'

  • EXCEPTIONS

  • ELEMENT = 1

  • WINDOW = 2.

  • IF SY-SUBRC NE 0.

  • PERFORM PROTOCOL_UPDATE.

  • ENDIF.

ENDIF.

  • Calling customer subroutine dynamically for handling header price

  • printing

IF NOT header_print_userexit IS INITIAL.

PERFORM (header_print_userexit) IN PROGRAM rvadin01 IF FOUND.

ENDIF.

ENDFORM. "header_price_print

*----


*

  • FORM HEADER_TEXT_PRINT *

*----


*

  • Printout of the headertexts *

*----


*

FORM header_text_print.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'HEADER_TEXT'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "header_text_print

*----


*

  • FORM ITEM_CHARACERISTICS_PRINT *

*----


*

  • Printout of the item characteristics -> configuration *

*----


*

FORM item_characteristics_print.

LOOP AT tkomcon.

conf_out = tkomcon.

IF sy-tabix = 1.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_LINE_CONFIGURATION_HEADER'

EXCEPTIONS

OTHERS = 1.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ELSE.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_LINE_CONFIGURATION'

EXCEPTIONS

OTHERS = 1.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. "item_characteristics_print

*----


*

  • FORM ITEM_PRICE_PRINT *

*----


*

  • Printout of the item prices *

*----


*

FORM item_price_print.

PERFORM address_plant_abroad.

LOOP AT tkomvd.

komvd = tkomvd.

IF ( vbdkr-fkart NE 'ICS ' ) AND ( vbdkr-fkart NE 'ICR ' ).

komvd-kwert = vbdpr-netwr.

komvd-kbetr = vbdpr-netwr / ( vbdpr-fkimg / 1000 ).

ENDIF.

IF print_mwskz EQ space.

CLEAR komvd-mwskz.

ENDIF.

ENDLOOP.

  • Calling customer subroutine dynamically for handling item price

  • printing

IF NOT item_print_userexit IS INITIAL.

PERFORM (item_print_userexit) IN PROGRAM rvadin01 IF FOUND.

ENDIF.

ENDFORM. "item_price_print

*----


*

  • FORM ITEM_PRINT *

*----


*

  • Printout of the items *

*----


*

FORM item_print.

CLEAR: netto,

lordo.

LOOP AT tvbdpr.

ADD tvbdpr-ntgew TO netto.

ADD tvbdpr-brgew TO lordo.

vbdpr = tvbdpr.

SELECT SINGLE * FROM makt WHERE

  • SPRAS = 'I' AND

spras = sy-langu AND

matnr = vbdpr-matnr.

IF sy-subrc = 0.

vbdpr-arktx = makt-maktx.

ELSE.

CLEAR vbdpr-arktx.

ENDIF.

IF tvbdpr-uecha EQ vbdpr-posnr OR

tvbdpr-uecha IS INITIAL.

PERFORM get_item_prices.

PERFORM get_item_characteristics.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • element = 'ITEM_LINE'.

PERFORM iva.

PERFORM item_price_print.

    • Atlas Change Starts

    • Fill the Item Details to be Printed

PERFORM fill_print_sf.

    • Atlas Change Ends

ELSE.

IF NOT tvbdpr-fkimg IS INITIAL.

PERFORM get_item_prices.

  • CALL FUNCTION 'WRITE_FORM'

  • EXPORTING

  • element = 'ITEM_LINE'.

PERFORM iva.

PERFORM item_price_print.

    • Atlas Change Starts

    • Fill the Item Details to be Printed

PERFORM fill_print_sf.

    • Atlas Change Ends

ENDIF.

ENDIF.

ENDLOOP.

      • Atlas Change Starts

      • Commented Not Required,

    • IF vbdkr-fkart = c_ics OR vbdkr-fkart = c_icr.

**

    • CALL FUNCTION 'WRITE_FORM'

    • EXPORTING

    • element = 'ICS_DEL_NO'

    • EXCEPTIONS

    • element = 1

    • function = 2

    • type = 3

    • unopened = 4

    • unstarted = 5

    • window = 6

    • bad_pageformat_for_print = 7

    • OTHERS = 8.

    • IF sy-subrc <> 0.

      • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

      • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    • ENDIF.

**

    • LOOP AT i_lips.

**

    • READ TABLE i_makt WITH KEY matnr = i_lips-matnr.

**

    • CALL FUNCTION 'WRITE_FORM'

    • EXPORTING

    • element = 'ICS_ITEM_DESC'

    • EXCEPTIONS

    • element = 1

    • function = 2

    • type = 3

    • unopened = 4

    • unstarted = 5

    • window = 6

    • bad_pageformat_for_print = 7

    • OTHERS = 8.

    • IF sy-subrc <> 0.

      • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

      • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    • ENDIF.

**

    • ENDLOOP.

    • ENDIF.

      • Atlas Change Ends

ENDFORM. "item_print

*----


*

  • FORM ITEM_TEXT_PRINT *

*----


*

  • Printout of the item texts *

*----


*

FORM item_text_print.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_TEXT'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "item_text_print

*----


*

  • FORM PROTOCOL_UPDATE *

*----


*

  • The messages are collected for the processing protocol. *

*----


*

FORM protocol_update.

CHECK xscreen = space.

CALL FUNCTION 'NAST_PROTOCOL_UPDATE'

EXPORTING

msg_arbgb = syst-msgid

msg_nr = syst-msgno

msg_ty = syst-msgty

msg_v1 = syst-msgv1

msg_v2 = syst-msgv2

msg_v3 = syst-msgv3

msg_v4 = syst-msgv4

EXCEPTIONS

OTHERS = 1.

ENDFORM. "protocol_update

*----


*

  • FORM REFERENCE_NUMBER *

*----


*

  • Printing of the reference numbers *

*----


*

FORM reference_number.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'REFERENCE_NUMBER'

window = 'REFNUMB'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. "reference_number

*----


*

  • FORM SENDER *

*----


*

  • This routine determines the address of the sender (Table VKO) *

*----


*

FORM sender.

SELECT SINGLE * FROM tvko WHERE vkorg = vbdkr-vkorg.

IF sy-subrc NE 0.

syst-msgid = 'VN'.

syst-msgno = '203'.

syst-msgty = 'E'.

syst-msgv1 = 'TVKO'.

syst-msgv2 = syst-subrc.

PERFORM protocol_update.

EXIT.

ENDIF.

SELECT SINGLE * FROM sadr WHERE adrnr = tvko-adrnr

AND natio = space.

vbdkr-sland = sadr-land1.

IF sy-subrc NE 0.

syst-msgid = 'VN'.

syst-msgno = '203'.

syst-msgty = 'E'.

syst-msgv1 = 'SADR'.

syst-msgv2 = syst-subrc.

PERFORM protocol_update.

ENDIF.

  • Interne Verrechnung: Adresse des Buchungskreises lesen

  • Richiamo della Finestra 'ADDRESS'.

IF vbdkr-vbtyp CA '56'.

CLEAR t001g.

SELECT SINGLE * FROM t001g WHERE bukrs = vbdkr-bukrs

AND programm EQ sy-repid

AND txtid EQ 'SD'.

ENDIF.

ENDFORM. "sender

*&----


*

*& Form HEADER_CONSGNEE

*&----


*

  • text *

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM header_consgnee.

IF vbdkr-name1 NE vbdkr-name1_we OR

vbdkr-name2 NE vbdkr-name2_we OR

vbdkr-name3 NE vbdkr-name3_we OR

vbdkr-name4 NE vbdkr-name4_we .

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'HEADER_CONSGNEE'

window = 'CONSGNEE'

EXCEPTIONS

element = 1

window = 2.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'HEADER_CONSGNEE'

window = 'INFO1'

EXCEPTIONS

element = 1

window = 2.

ENDIF.

ENDFORM. " HEADER_CONSGNEE

*&----


*

*& Form DIFFERENT_REFERENCE_NO

*&----


*

  • text *

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM different_reference_no.

CHECK vbdkr-vbtyp CA 'OP'.

CHECK vbdkr-vbeln_vg2 NE vbdpr-vbeln_vg2.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_REFERENCE_NO'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. " DIFFERENT_REFERENCE_NO

*&----


*

*& Form HEADER_DATA_PRINT

*&----


*

  • text *

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM header_data_print.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'HEADER_DATA'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. " HEADER_DATA_PRINT

*&----


*

*& Form GET_DATA_ESR

*&----


*

  • text *

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM get_data_esr.

CALL FUNCTION 'SD_ESR_GET_DATA'

EXPORTING

vbdkr_bukrs = vbdkr-bukrs

vbdkr_vkorg = vbdkr-vkorg

komk_fkwrt = komk-fkwrt

vbdkr_vbeln = vbdkr-vbeln

vbdkr_kunrg = vbdkr-kunrg

CHANGING

ivbdre = vbdre

EXCEPTIONS

t049e_no_entry = 1

t001_no_entry = 2

bnka_no_entry = 3

sadr_no_entry = 4

fkwrt_not_valid = 5

esr_digits_to_check_not_valid = 6

esr_check_method_not_valid = 7

OTHERS = 8.

IF sy-subrc NE 0.

retcode = sy-subrc.

PERFORM protocol_update.

ENDIF.

ENDFORM. " GET_DATA_ESR

*----


*

  • Form GET_DATA_ITALY

*----


*

  • *

*----


*

*

*

*----


*

FORM get_data_italy USING proc_screen.

CLEAR konh.

CLEAR tlic.

LOOP AT tkomv WHERE koaid = 'D'

AND kntyp ='+'.

SELECT SINGLE * FROM konh WHERE knumh = tkomv-knumh.

IF sy-subrc EQ 0.

IF NOT konh-licno IS INITIAL AND NOT konh-licdt IS INITIAL.

SELECT SINGLE * FROM tlic WHERE licno = konh-licno.

IF sy-subrc EQ 0.

IF NOT tlic-prnum_nr IS INITIAL AND

NOT tlic-prnum_dt IS INITIAL.

MOVE:

konh-licno TO vbdkr-licno,

konh-licdt TO vbdkr-licdt.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF vbdkr-licno IS INITIAL OR

vbdkr-licdt IS INITIAL OR

tlic-prnum_nr IS INITIAL OR

tlic-prnum_dt IS INITIAL.

IF proc_screen = space.

retcode = 3.

syst-msgno = '205'.

syst-msgid = 'VN'.

syst-msgty = 'I'.

PERFORM protocol_update.

ELSE.

MESSAGE i205.

ENDIF.

ENDIF.

EXIT.

ENDLOOP.

ENDFORM. " get_data_italy

*&----


*

*& Form START_FORM

*&----


*

  • text *

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM start_form.

DATA : startseite TYPE c VALUE 'FIRSTBSR'.

DATA : sprache LIKE sy-langu.

IF vbdre-verfa = '04' OR vbdre-verfa = '08'.

CALL FUNCTION 'START_FORM'

EXPORTING

startpage = startseite

IMPORTING

language = sprache

EXCEPTIONS

form = 1

format = 2

unended = 3

unopened = 4

unused = 5

OTHERS = 6.

IF sy-subrc NE 0.

retcode = sy-subrc.

PERFORM protocol_update.

ENDIF.

ENDIF.

ENDFORM. " START_OPEN

*&----


*

*& Form TAX_TEXT_PRINT

*&----


*

  • text *

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM tax_text_print.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'TAX_TEXT'

EXCEPTIONS

element = 1

window = 2.

IF sy-subrc NE 0.

PERFORM protocol_update.

ENDIF.

ENDFORM. " TAX_TEXT_PRINT

***********************************************************************

  • SUBROUTINES OF ENTRY_CH *

***********************************************************************

FORM header_ch.

CLEAR print_local_curr_ch.

  • Hauswährung <> Belegwährung ?

SELECT SINGLE * FROM t001 WHERE bukrs EQ vbdkr-bukrs.

CHECK sy-subrc = 0.

CHECK t001-waers <> vbdkr-waerk.

MOVE 'X' TO print_local_curr_ch.

REFRESH komvdk_ch.

LOOP AT hkomvd WHERE koaid = 'D'.

CLEAR komvdk_ch.

CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'

EXPORTING

date = vbdkr-fkdat

foreign_amount = hkomvd-kwert

foreign_currency = vbdkr-waerk

local_currency = t001-waers

rate = vbdkr-kurrf

IMPORTING

local_amount = komvdk_ch-kwert

EXCEPTIONS

no_rate_found = 1

overflow = 2

no_factors_found = 3

no_spread_found = 4

OTHERS = 5.

CHECK sy-subrc = 0.

MOVE: t001-waers TO komvdk_ch-awein,

t001-waers TO komvdk_ch-awei1,

hkomvd-vtext TO komvdk_ch-vtext,

vbdkr-kurrf TO hkomvd-kkurs.

APPEND komvdk_ch.

ENDLOOP.

ENDFORM. "header_ch

*----


*

  • FORM ITEM_CH *

*----


*

  • ........ *

*----


*

FORM item_ch.

CHECK print_local_curr_ch EQ 'X'.

REFRESH komvdp_ch.

  • Suche die Steuerkonditionen der Position und rechne Hauswährung aus.

LOOP AT tkomvd WHERE koaid = 'D'.

CLEAR komvdp_ch.

CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'

EXPORTING

date = vbdkr-fkdat

foreign_amount = tkomvd-kwert

foreign_currency = vbdkr-waerk

local_currency = t001-waers

rate = vbdkr-kurrf

IMPORTING

local_amount = komvdp_ch-kwert

EXCEPTIONS

no_rate_found = 1

overflow = 2

no_factors_found = 3

no_spread_found = 4

OTHERS = 5.

CHECK sy-subrc = 0.

MOVE: t001-waers TO komvdp_ch-awein,

t001-waers TO komvdp_ch-awei1,

tkomvd-vtext TO komvdp_ch-vtext,

vbdkr-kurrf TO komvdp_ch-kkurs.

APPEND komvdp_ch.

ENDLOOP.

ENDFORM. "item_ch

*----


*

  • FORM ITEM_PRINT_CH *

*----


*

  • ........ *

*----


*

FORM item_print_ch.

LOOP AT komvdp_ch.

komvd = komvdp_ch.

IF print_mwskz EQ space.

CLEAR komvd-mwskz.

ENDIF.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'ITEM_LINE_TAX_HAUSWAEHRUNG'.

ENDLOOP.

ENDFORM. "item_print_ch

*----


*

  • FORM HEADER_PRINT_CH *

*----


*

  • ........ *

*----


*

FORM header_print_ch.

LOOP AT komvdk_ch.

komvd = komvdk_ch.

IF print_mwskz = space.

CLEAR komvd-mwskz.

ENDIF.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

element = 'SUM_LINE_TAX_HAUSWAEHRUNG'.

ENDLOOP.

ENDFORM. "header_print_ch

***********************************************************************

  • CUSTOMER SUBROUTINES *

***********************************************************************

*&----


*

*& Form INDIRIZZI

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM indirizzi.

DATA: pos LIKE vbpa-posnr.

CLEAR pos.

*MOD07{

  • Select unloading point from VBPA for the ship-to-party(WE) for line

  • item 10 .

SELECT ablad FROM vbpa

INTO w_ablad

UP TO 1 ROWS

WHERE vbeln = vbdkr-vbeln

AND posnr = '000010'

AND parvw = 'WE'.

ENDSELECT.

IF sy-subrc NE 0.

SELECT ablad FROM vbpa

INTO w_ablad

UP TO 1 ROWS

WHERE vbeln = vbdkr-vbeln

AND posnr = '000000'

AND parvw = 'WE'.

ENDSELECT.

ENDIF.

*}MOD07

SELECT * FROM vbpa WHERE

vbeln = vbdkr-vbeln.

IF pos = '00000' OR pos = vbpa-posnr.

pos = vbpa-posnr.

IF vbpa-adrnr <> ' ' AND vbpa-xcpdk = 'X'.

CASE vbpa-parvw.

CLEAR tiaddr1_sel. "PDA

CLEAR tisadr. "PDA

tiaddr1_sel-addrnumber = vbpa-adrnr. "PDA

CALL FUNCTION 'ADDR_GET' "PDA

EXPORTING "PDA

address_selection = tiaddr1_sel "PDA

IMPORTING "PDA

sadr = tisadr "PDA

EXCEPTIONS "PDA

parameter_error = 1 "PDA

address_not_exist = 2 "PDA

version_not_exist = 3 "PDA

internal_error = 4 "PDA

OTHERS = 5. "PDA

IF sy-subrc <> 0. "PDA

CLEAR tisadr. "PDA

ENDIF. "PDA

WHEN 'AG'. " 'SP'. " Committente

  • SELECT SINGLE * FROM SADR WHERE "PD*

  • ADRNR = VBPA-ADRNR. "PD*

  • MOVE-CORRESPONDING SADR TO SPKNA1. "PD*

MOVE-CORRESPONDING tisadr TO spkna1. "PDA

WHEN 'RE'. " 'BP'. " Destinatario Fattura

  • SELECT SINGLE * FROM SADR WHERE "PD*

  • ADRNR = VBPA-ADRNR. "PD*

  • MOVE-CORRESPONDING SADR TO BPKNA1. "PD*

MOVE-CORRESPONDING tisadr TO bpkna1. "PDA

WHEN 'WE'. " 'SH'. " Destinatario Merci

  • SELECT SINGLE * FROM SADR WHERE "PD*

  • ADRNR = VBPA-ADRNR. "PD*

  • MOVE-CORRESPONDING SADR TO SHKNA1. "PD*

MOVE-CORRESPONDING tisadr TO shkna1. "PDA

WHEN 'RG'. " 'PY'. " Esecutore Pagamento

  • SELECT SINGLE * FROM SADR WHERE "PD*

  • ADRNR = VBPA-ADRNR. "PD*

  • MOVE-CORRESPONDING SADR TO PYKNA1. "PD*

MOVE-CORRESPONDING tisadr TO pykna1. "PDA

ENDCASE.

ELSE.

CASE vbpa-parvw.

WHEN 'AG'. " 'SP'. " Committente

SELECT * INTO spkna1 FROM kna1 WHERE

kunnr = vbpa-kunnr.

ENDSELECT.

WHEN 'RE'. " 'BP'. " Destinatario Fattura

SELECT * INTO bpkna1 FROM kna1 WHERE

kunnr = vbpa-kunnr.

ENDSELECT.

WHEN 'WE'. " 'SH'. " Destinatario Merci

SELECT * INTO shkna1 FROM kna1 WHERE

kunnr = vbpa-kunnr.

ENDSELECT.

WHEN 'RG'. " 'PY'. " Esecutore Pagamento

SELECT * INTO pykna1 FROM kna1 WHERE

kunnr = vbpa-kunnr.

ENDSELECT.

ENDCASE.

ENDIF.

ELSE.

EXIT.

ENDIF.

ENDSELECT.

  • "PDA

IF vbdkr-fkart = 'ZF1'. "PDA

spkna1-kunnr = bpkna1-kunnr. "PDA

spkna1-stceg = bpkna1-stceg. "PDA

ENDIF. "PDA

  • "PDA

    • Atlas Changes Starts - (11/04/2006)

  • Now if the delivery type is a replenshment delivery (NL) you need to *

  • read the original purchasing docoment type LU And from here if the *

  • storage location is 92RP, then the delivery address must be the

  • address of the ship-to 84921.

DATA: wa_likp_lfart TYPE lfart,

wa_ekpo_lgort TYPE lgort_d.

CLEAR tvbdpr.

READ TABLE tvbdpr INDEX 1.

CLEAR wa_likp_lfart.

SELECT SINGLE lfart INTO wa_likp_lfart

FROM likp

WHERE vbeln = tvbdpr-vbeln_vl.

IF sy-subrc EQ 0.

IF wa_likp_lfart EQ 'NL'.

CLEAR wa_ekpo_lgort.

SELECT SINGLE lgort INTO wa_ekpo_lgort

FROM ekpo

WHERE ebeln = tvbdpr-vbeln_vauf

AND ebelp = tvbdpr-posnr_vauf.

IF wa_ekpo_lgort EQ '92RP' OR wa_ekpo_lgort EQ '92FR'.

CLEAR shkna1.

SELECT SINGLE * INTO shkna1

FROM kna1

WHERE kunnr = '0000084921'.

CLEAR vbdkr-stceg.

vbdkr-stceg = shkna1-stceg.

ENDIF.

ENDIF.

ENDIF.

    • Atlas Changes Ends

ENDFORM. " INDIRIZZI

*&----


*

*& Form DATI

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM dati.

DATA:

contpos TYPE i,

contdoc TYPE i.

CLEAR :

vbak,

likp,

bkpf.

SELECT SINGLE * FROM vbak WHERE

vbeln = vbdkr-vbeln_vauf.

SELECT SINGLE * FROM likp WHERE

vbeln = vbdkr-vbeln_vl.

IF sy-subrc = 0.

IF likp-lfart <> 'LF'.

SELECT SINGLE bstnk INTO (ordacq) FROM vbak WHERE

vbeln = vbak-vgbel.

SELECT SINGLE * FROM vbak WHERE

vbeln = vbdkr-vbeln_vauf.

IF sy-subrc = 0.

ddt = vbak-bstnk.

ELSE.

CLEAR ddt.

ENDIF.

ELSE.

ddt = likp-xabln.

ordacq = vbak-bstnk.

ENDIF.

  • MCH 27/10/04 : if no delivery, manage also po nb

ELSE.

ordacq = vbak-bstnk.

  • MCH 27/10/04 : end

ENDIF.

SELECT SINGLE * FROM vbuk WHERE

vbeln = vbdkr-vbeln.

IF vbuk-relik = ''. " Fattura singola

SELECT SINGLE * FROM bkpf WHERE

xblnr = vbdkr-vbeln.

ELSE. " Lista fatture

SELECT SINGLE * FROM vbfa WHERE

vbelv = vbdkr-vbeln.

IF sy-subrc = 0.

CLEAR contpos.

SELECT * FROM vbrl WHERE

vbeln = vbfa-vbeln.

ADD 1 TO contpos.

IF vbrl-vbeln_vf = vbdkr-vbeln.

EXIT.

ENDIF.

ENDSELECT.

CLEAR contdoc.

SELECT * FROM bkpf WHERE

xblnr = vbfa-vbeln.

ADD 1 TO contdoc.

IF contdoc = contpos.

EXIT.

ENDIF.

ENDSELECT.

ENDIF.

ENDIF.

SELECT SINGLE * FROM knvv WHERE

kunnr = pykna1-kunnr AND

vkorg = '8490' AND

vtweg = '01' AND

spart = '01'.

SELECT SINGLE * FROM knvp WHERE

kunnr = pykna1-kunnr AND

vkorg = '8490' AND

vtweg = '01' AND

spart = '01' AND

parvw = 'RG'.

*MOD05{

SELECT SINGLE * FROM knvv

INTO t_knvv

WHERE

kunnr = spkna1-kunnr AND

vkorg = '8490' AND

vtweg = '01' AND

spart = '01'.

SELECT SINGLE * FROM knvp

INTO t_knvp

WHERE

kunnr = spkna1-kunnr AND

vkorg = '8490' AND

vtweg = '01' AND

spart = '01' AND

parvw = 'RG'.

*}MOD05

ENDFORM. " DATI

*&----


*

*& Form IVA

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM iva.

READ TABLE hkomvd WITH KEY kschl = 'MWST'.

komvd = hkomvd.

iva = komvd-kbetr.

DIVIDE iva BY 10.

ENDFORM. " IVA

*&----


*

*& Form EURO

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM euro.

DATA:

cambio_sup,

v_cambio TYPE p DECIMALS 5,

w_rate LIKE tcurr-ukurs,

compl LIKE tcurr-gdatu,

complday LIKE tcurr-gdatu,

molt LIKE komk-fkwrt,

molt1 LIKE komk-supos,

molt2 LIKE komvd-kwert,

l_curr LIKE tcurr-fcurr.

IF komk-waerk <> 'EUR'.

SELECT SINGLE * FROM tcurf WHERE

kurst = 'M' AND

fcurr = komk-waerk AND

tcurr = 'EUR'.

IF sy-subrc <> 0.

tcurf-abwct = 'M'.

ELSE.

IF tcurf-abwct = ' '.

tcurf-abwct = 'M'.

ENDIF.

ENDIF.

CALL FUNCTION 'READ_EXCHANGE_RATE'

EXPORTING

date = sy-datum

foreign_currency = 'EUR'

local_currency = komk-waerk

type_of_rate = tcurf-abwct

IMPORTING

exchange_rate = w_rate

EXCEPTIONS

no_rate_found = 1

no_factors_found = 2

no_spread_found = 3

OTHERS = 4.

IF sy-subrc = 0.

CLEAR cambio_sup.

molt = komk-fkwrt.

molt1 = komk-supos.

molt2 = komvd-kwert.

  • if w_rate >= 100000.

  • divide w_rate by 100000.

  • else.

  • cambio_sup = 'X'.

  • endif.

SELECT SINGLE * FROM tcurx WHERE currkey = komk-waerk.

IF sy-subrc = 0.

IF tcurx-currdec = 0.

toteuro = molt * 100 * 100000 / w_rate.

totpos_euro = molt1 * 100 * 100000 / w_rate.

totiva_euro = molt2 * 100 * 100000 / w_rate.

ELSE.

toteuro = molt * 100000 / w_rate.

totpos_euro = molt1 * 100000 / w_rate.

totiva_euro = molt2 * 100000 / w_rate.

ENDIF.

ELSE.

toteuro = molt * 100000 / w_rate.

totpos_euro = molt1 * 100000 / w_rate.

totiva_euro = molt2 * 100000 / w_rate.

ENDIF.

ELSE.

toteuro = komk-fkwrt.

totpos_euro = komk-supos.

totiva_euro = komvd-kwert.

ENDIF.

ELSE.

toteuro = komk-fkwrt.

totpos_euro = komk-supos.

totiva_euro = komvd-kwert.

ENDIF.

*{MOD06 - Begin

  • convert the currency in the billing document to GBP in the bottom

  • middle box of the output (ZD00). This modification will only apply

  • when the delivery is shipped from shipping point (LIKP-VSTEL) EQ

*'HGUK' or 'ATUK'. Exchange rate is "M" and date is invoice date

*(VBRK-FKDAT).

IF w_vstel = 'HGUK' OR

w_vstel = 'ATUK'.

w_lcurr = 'GBP'.

w_fcurr = 'EUR'.

w_kurst = 'M'.

  • Convert Total Amount

PERFORM currency_conversion USING toteuro

w_totgbp.

  • Convert Total Goods Amount

PERFORM currency_conversion USING totpos_euro

w_totpos_gbp.

  • Convert Total VAT Amount

PERFORM currency_conversion USING totiva_euro

w_totiva_gbp.

ENDIF.

*MOD06 - End}

.

ENDFORM. " EURO

*&----


*

*& Form COND_PAGAMENTO

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM cond_pagamento.

IF vbdkr-zterm_bez = ' '.

SELECT SINGLE * FROM t052u WHERE

  • SPRAS = 'I' AND " ekko-spras and

spras = vbco3-spras AND

zterm = vbdkr-zterm AND

ztagg = '00'.

IF sy-subrc = 0.

vbdkr-zterm_bez = t052u-text1.

ENDIF.

ENDIF.

ENDFORM. " COND_PAGAMENTO

*&----


*

*& Form COMPANY_NAME

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM company_name. "MED1

  • "MED1

CLEAR: ti_addr1, ti_t005t, ti_t001, ti_adtel, ti_adfax, "MED1

cpaval01, cpaval02, cpaval03. "MED1

CALL FUNCTION 'Z_GET_COMPANY_NAME' "MED1

EXPORTING "MED1

  • I_BUKRS = "MED1

  • i_werks = "MED1

i_vkorg = vbdkr-vkorg "MED1

IMPORTING "MED1

e_addr1 = ti_addr1 "MED1

e_adtel = ti_adtel "MED1

e_adfax = ti_adfax "MED1

  • E_ADSMTP = "MED1

e_t001 = ti_t001 "MED1

e_t005t = ti_t005t "MED1

e_paval01 = cpaval01 "MED1

e_paval02 = cpaval02 "MED1

e_paval03 = cpaval03 "MED1

EXCEPTIONS "MED1

name_not_found = 1 "MED1

company_not_found = 2 "MED1

OTHERS = 3 "MED1

. "MED1

ENDFORM. " COMPANY_NAME "MED1

*&----


*

*& Form ADDRESS_PLANT_ABROAD

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM address_plant_abroad.

IF NOT vbdpr-werks IS INITIAL.

SELECT SINGLE * FROM t001w WHERE

werks = vbdpr-werks.

SELECT SINGLE * FROM adrc WHERE

addrnumber = t001w-adrnr.

SELECT SINGLE * FROM t005t WHERE

land1 = adrc-country AND

spras = sy-langu.

IF sy-subrc = 0.

zname = adrc-name1.

zname2 = adrc-name2.

zcity = adrc-city1.

zstreet = adrc-street.

zcountry = t005t-landx.

ENDIF.

ENDIF.

ENDFORM. " COND_PAGAMENTO

*&----


*

*& Form STD_TEXT_OTHERS_POPULATION

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM std_text_others_population.

DATA: objid LIKE thead-tdid.

objid = 'ZPF1'.

PERFORM get_std_text USING objid

CHANGING z_vslflight.

objid = 'ZPF2'.

PERFORM get_std_text USING objid

CHANGING z_portload.

objid = 'ZPF3'.

PERFORM get_std_text USING objid

CHANGING z_portdisc.

objid = 'ZPF4'.

PERFORM get_std_text USING objid

CHANGING z_placedely.

PERFORM get_comm_code.

PERFORM get_storage_locn.

ENDFORM. " STD_TEXT_POPULATION

*&----


*

*& Form GET_STD_TEXT

*&----


*

  • text

*----


*

  • -->P_OBJID text

  • <--P_text text

*----


*

FORM get_std_text USING p_objid

CHANGING p_text.

DATA: l_name TYPE thead-tdname,

l_obj TYPE thead-tdobject,

l_langu TYPE sy-langu VALUE 'F'.

*To store the text read using READ_TEXT

DATA: BEGIN OF tlinetab OCCURS 30.

INCLUDE STRUCTURE tline.

DATA: END OF tlinetab.

DO 3 TIMES.

MOVE vbdkr-vbeln TO l_name.

MOVE 'VBBK' TO l_obj.

CLEAR tlinetab.

REFRESH tlinetab.

CALL FUNCTION 'READ_TEXT'

EXPORTING

id = p_objid

language = l_langu

name = l_name

object = l_obj

  • IMPORTING

  • HEADER = THEAD

TABLES

lines = tlinetab

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5.

READ TABLE tlinetab INDEX 1.

IF sy-subrc EQ 0.

MOVE tlinetab-tdline TO p_text.

EXIT.

ELSE.

IF l_langu = 'F'.

l_langu = 'E'.

ELSE.

l_langu = 'I'.

ENDIF.

ENDIF.

ENDDO.

ENDFORM. " GET_STD_TEXT

*&----


*

*& Form GET_STORAGE_LOCN

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM get_storage_locn.

CLEAR: z_stlocn.

  • select single lgort from ekpo into z_stlocn

  • where ebeln = lips-vgbel.

SELECT SINGLE lgort FROM lips INTO z_stlocn

WHERE vbeln = vbdkr-vbeln_vl.

ENDFORM. " GET_STORAGE_LOCN

*&----


*

*& Form GET_COMM_CODE

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM get_comm_code.

DATA: l_matnr LIKE vbrp-matnr,

l_werks LIKE vbrp-werks.

CLEAR: z_commcode.

SELECT SINGLE matnr werks

INTO (l_matnr,l_werks)

FROM vbrp

WHERE vbeln = vbdkr-vbeln.

SELECT SINGLE stawn FROM marc

INTO z_commcode

WHERE matnr = l_matnr

AND werks = l_werks.

ENDFORM. " GET_COMM_CODE

*MOD03{

*&----


*

*& Form ICS_INVOICE

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM ics_invoice.

DATA: l_vbeln LIKE likp-vbeln.

IF vbdkr-fkart = c_ics OR vbdkr-fkart = c_icr.

  • SELECT SINGLE * FROM VBKD

  • INTO T_VBKD

  • WHERE VBELN = VBDKR-VBELN_VAUF

  • AND POSNR = C_HEAD.

l_vbeln = vbdkr-bstkd.

UNPACK l_vbeln TO l_vbeln.

SELECT SINGLE * FROM likp

INTO t_likp

WHERE vbeln = l_vbeln.

IF sy-subrc = 0.

SELECT * FROM lips

INTO TABLE i_lips

WHERE vbeln = t_likp-vbeln

AND matkl NE c_suppkg.

SELECT SINGLE * FROM kna1

INTO t_kna1

WHERE kunnr = t_likp-kunnr.

SELECT * FROM makt

INTO TABLE i_makt

FOR ALL ENTRIES IN i_lips

WHERE matnr = i_lips-matnr

AND spras = 'EN'.

  • MCH 06/01/05 : add Z_STLOCN determination

LOOP AT i_lips.

EXIT.

ENDLOOP.

SELECT SINGLE lgort FROM ekpo INTO z_stlocn

WHERE ebeln = i_lips-vgbel.

ENDIF.

ENDIF.

ENDFORM. " ICS_INVOICE

*}MOD03

*MOD04{

*----


*

  • FORM TEXT_INV_HEADER *

*----


*

  • Sébastien LEROY 09/10/97 Récupération texte entete facture *

*----


*

FORM text_inv_header TABLES winput STRUCTURE itcsy

woutput STRUCTURE itcsy.

CLEAR tab_texte.

REFRESH tab_texte.

CLEAR tlinetab. REFRESH tlinetab. "MOD01

CLEAR woutput. REFRESH woutput.

DATA : wname LIKE thead-tdname.

MOVE vbdkr-vbeln TO wname.

MOVE 'Z002' TO z_object.

MOVE 'VBBK' TO z_txt_object.

SELECT SINGLE * FROM kna1 CLIENT SPECIFIED

WHERE mandt = sy-mandt

AND kunnr = vbdkr-kunre.

PERFORM selection IN PROGRAM zsdsread TABLES tlinetab USING flag

z_object wname z_txt_object.

MOVE tlinetab[] TO tab_texte[].

READ TABLE tab_texte INDEX 1.

woutput-name = 'TEXT1'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 2.

woutput-name = 'TEXT2'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 3.

woutput-name = 'TEXT3'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

REFRESH tab_texte. CLEAR tab_texte.

CLEAR tlinetab. REFRESH tlinetab.

MOVE 'Z003' TO z_object.

MOVE 'VBBK' TO z_txt_object.

PERFORM selection IN PROGRAM zsdsread TABLES tlinetab USING flag

z_object wname z_txt_object.

CLEAR woutput.

MOVE tlinetab[] TO tab_texte[].

READ TABLE tab_texte INDEX 1.

woutput-name = 'TEXT4'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput .

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 2.

woutput-name = 'TEXT5'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 3.

woutput-name = 'TEXT6'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

ENDFORM. "text_inv_header

*----


*

  • FORM TEXT_INV_ITEM *

*----


*

  • ........ *

*----


*

  • --> WINPUT *

  • --> WOUTPUT *

*----


*

FORM text_inv_item TABLES winput STRUCTURE itcsy

woutput STRUCTURE itcsy.

CLEAR tab_texte.

REFRESH tab_texte.

CLEAR tlinetab.

REFRESH tlinetab.

CLEAR woutput. REFRESH woutput.

DATA : wname LIKE thead-tdname.

CONCATENATE vbdkr-vbeln vbdpr-posnr INTO wname.

MOVE 'Z009' TO z_object.

MOVE 'VBBP' TO z_txt_object.

SELECT SINGLE * FROM kna1 CLIENT SPECIFIED

WHERE mandt = sy-mandt

AND kunnr = vbdkr-kunre.

PERFORM selection IN PROGRAM zsdsread TABLES tlinetab USING flag

z_object wname z_txt_object.

MOVE tlinetab[] TO tab_texte[].

READ TABLE tab_texte INDEX 1.

woutput-name = 'TEXTP1'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 2.

woutput-name = 'TEXTP2'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 3.

woutput-name = 'TEXTP3'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

REFRESH tab_texte.

CLEAR tab_texte.

CLEAR tlinetab.

REFRESH tlinetab.

MOVE 'Z011' TO z_object.

MOVE 'VBBP' TO z_txt_object.

PERFORM selection IN PROGRAM zsdsread TABLES tlinetab USING flag

z_object wname z_txt_object.

CLEAR woutput.

MOVE tlinetab[] TO tab_texte[]. "MOD01

READ TABLE tab_texte INDEX 1.

woutput-name = 'TEXTP4'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 2.

woutput-name = 'TEXTP5'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

CLEAR woutput. CLEAR tab_texte.

READ TABLE tab_texte INDEX 3.

woutput-name = 'TEXTP6'.

MOVE tab_texte-tdline TO woutput-value.

APPEND woutput.

ENDFORM. "text_inv_item

*}MOD04

*MOD05{

*----


*

  • FORM GET_EDIINFO *

*----


*

  • ........ *

*----


*

  • --> WINPUT *

  • --> WOUTPUT *

*----


*

FORM get_ediinfo TABLES winput STRUCTURE itcsy

woutput STRUCTURE itcsy.

SELECT SINGLE * FROM edp12

WHERE rcvprn = vbdkr-kunre

AND rcvprt = 'KU'

AND rcvpfc = 'RE'

AND kappl = 'V3'

AND kschl = 'ZRD2'

AND aende = ' ' .

CHECK sy-subrc EQ 0.

READ TABLE woutput WITH KEY name = 'EDIINFO'.

MOVE 'X' TO woutput-value.

MODIFY woutput INDEX 1.

ENDFORM. "get_ediinfo

*}MOD05

*MOD08{

*&----


*

*& Form AUTHORIZATION_CHECK

*&----


*

  • This routine checks whether the user has authorization to use the

  • selected output type or not. It not, then process log will get

  • updated with error message and processing stopped.

*----


*

FORM authorization_check.

IF ( nast-kappl NE space ) AND ( nast-kschl NE space ).

IF nast-kschl = 'ZD00'. "MOD09

SELECT SINGLE * FROM zcaopauth

WHERE kappl = nast-kappl

AND kschl = nast-kschl

AND bname = sy-uname.

IF sy-subrc NE 0.

retcode = 1.

syst-msgno = '050'.

syst-msgid = 'ZZ'.

syst-msgty = 'E'.

syst-msgv1 = 'No authorization to use output type'.

syst-msgv2 = nast-kschl.

xscreen = space.

PERFORM protocol_update.

ENDIF.

ENDIF. "MOD09

ENDIF.

ENDFORM. " AUTHORIZATION_CHECK

*}MOD06

*&----


*

*& Form CURRENCY_CONVERSION

*&----


*

  • Currency conversion.

*----


*

  • -->P_Foreign Foreign Amount

  • -->P_Local Local Amount (after the conversion)

*----


*

FORM currency_conversion USING p_foreign

p_local.

CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'

EXPORTING

  • CLIENT = SY-MANDT

date = vbdkr-fkdat

foreign_amount = p_foreign

foreign_currency = w_fcurr

local_currency = w_lcurr

  • RATE = 0

type_of_rate = w_kurst

  • READ_TCURR = 'X'

IMPORTING

  • EXCHANGE_RATE =

  • FOREIGN_FACTOR =

local_amount = p_local

  • LOCAL_FACTOR =

  • EXCHANGE_RATEX =

  • FIXED_RATE =

  • DERIVED_RATE_TYPE =

EXCEPTIONS

no_rate_found = 1

overflow = 2

no_factors_found = 3

no_spread_found = 4

derived_2_times = 5

OTHERS = 6

.

ENDFORM. " CURRENCY_CONVERSION

*MOD08{

*&----


*

*& Form Check_Duplicate

*&----


*

  • Check whether this invoice sent through EDI already if yes,

  • Print 'Duplicate'.

*----


*

FORM check_duplicate.

SELECT SINGLE * FROM edp13

WHERE rcvprn = vbdkr-kunre

AND rcvprt = 'KU'

AND rcvpfc = 'RE'

AND mestyp = 'INVOIC'.

IF sy-subrc = 0.

w_watermark = 'INVOICE ALREADY SENT VIA EDI / DUPLICATE INVOICE'.

ELSE.

SELECT SINGLE * FROM edp21

WHERE sndprn = vbdkr-kunag

AND sndprt = 'KU'

AND sndpfc = 'AG'

AND mestyp = 'SBWAP'.

IF sy-subrc = 0.

w_watermark = 'DUPLICATE INVOICE'.

ELSE.

CLEAR w_watermark.

ENDIF.

ENDIF.

ENDFORM. " CHECK_DUPLICATE

*}MOD08

    • Atlas Changes Starts

*&----


*

*& Form SF_Workarea

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM sf_workarea .

REFRESH: it_print,

tvbdpr.

CLEAR: l_frm_name,

l_fnmod,

l_wa_control_parameters,

l_wa_output_options.

ENDFORM. " SF_Workarea

*&----


*

*& Form fill_print_sf

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM fill_print_sf .

DATA: l_qty TYPE i.

CLEAR it_print.

it_print-vbeln = vbdkr-vbeln.

it_print-posnr = vbdpr-posnr.

it_print-kdmat = vbdpr-idnkd.

SELECT SINGLE postx INTO it_print-postx

FROM knmt

WHERE vkorg = vbdkr-vkorg

AND vtweg = vbdkr-vtweg

AND kunnr = vbdkr-kunag

AND matnr = vbdpr-matnr

AND kdmat = vbdpr-idnkd.

it_print-matnr = vbdpr-matnr.

it_print-arktx = vbdpr-arktx.

it_print-fkimg = vbdpr-fkimg.

it_print-vrkme = vbdpr-vrkme.

it_print-currp = komvd-koein.

it_print-unitp = komvd-kbetr.

it_print-iva = iva.

CLEAR l_qty.

l_qty = vbdpr-fkimg / 1000.

it_print-pervat = vbdpr-mwsbp / l_qty.

it_print-netitm = komvd-kwert.

it_print-vatitm = komvd-kwert + vbdpr-mwsbp.

APPEND it_print.

ENDFORM. " fill_print_sf

*&----


*

*& Form call_smart_form

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM call_smart_form .

CALL FUNCTION l_fnmod " '/1BCDWB/SF00000099'

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

control_parameters = l_wa_control_parameters

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

output_options = l_wa_output_options

  • user_settings = ' '

vbdkr = vbdkr

spkna1 = spkna1

bpkna1 = bpkna1

shkna1 = shkna1

pykna1 = pykna1

wa_likp = likp

lordo = lordo

netto = netto

ordacq = ordacq

t_knvv = t_knvv

t_knvp = t_knvp

w_ablad = w_ablad

TABLES

tvbdpr = tvbdpr

t_print = it_print

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " call_smart_form

3 REPLIES 3
Read only

Former Member
0 Likes
687

Hi,

It seems that the Form/Script is calling the FM for Mail.

Best regards,

Prashant

Read only

0 Likes
687

Guy's

just tell me ,wether following function module has anything to do with trigerring mail

1)ADDR_GET_NEXT_COMM_TYPE

2)CONVERT_COMM_TYPE_DATA

Read only

0 Likes
687

Hi ,

Those FM are used to fectch communication details and hence the mail dteails based on the address no we passed to them .See the following code how it works .

My requirement is , It is workijng for customer contact persons whose addres no can be found in KNVK table . But FM saying that communication data not found for the Address number passed for internal employees rather to Customer contact persons .

If you find any relevant info , Please let me know . My ID is dharma_techno@yahoo.co.in

Thnks

dharma .