‎2006 May 05 9:27 AM
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 clonedADDR_GET_NEXT_COMM_TYPE
in programsost
transcation,following is theprogram 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
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
‎2006 May 05 9:49 AM
Hi,
It seems that the Form/Script is calling the FM for Mail.
Best regards,
Prashant
‎2006 May 05 10:31 AM
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
‎2007 May 22 9:04 AM
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 .