Professional Documents
Culture Documents
*&---------------------------------------------------------------------*
*& Report ZMM_SERVICE_PO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*&'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~*&
*&--------------------------------------------------------------------*&
*& Program Name : ZMM_SERVICE_PO *&
*& Transaction Code : ME23N *&
*& Module : MM *&
*& Package : ZABAP *&
*& Developed By : GULREZ ALAM,
*& Transport Req : SRDK901397 *&
*& Program Type : 1 - Executable *&
*&--------------------------------------------------------------------*&
*& Object : This is SERVICE PURCHASE ORDER *&
*& program. *&
*& *&
*&--------------------------------------------------------------------*&
*&'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~*&
*------------------------------------------------------------------*
* Change History
*------------------------------------------------------------------*
* Date | Programmer | Corr. # | Description
* | | |
* | | |
********************************************************************
REPORT zmm_service_po.
*PARAMETER : P_PONO LIKE EKKO-EBELN,
* P_PODATE LIKE EKKO-BEDAT.
DATA: g_text TYPE string.
DATA: g_texta TYPE string.
DATA: it_m_kostn TYPE STANDARD TABLE OF m_kostn INITIAL SIZE 0 WITH HEADER LINE,
it_m_ordeb TYPE STANDARD TABLE OF m_ordeb INITIAL SIZE 0 WITH HEADER LINE,
it_anlh TYPE STANDARD TABLE OF anlh INITIAL SIZE 0 WITH HEADER LINE.
******************************************************************* Tables Declaration
TABLES: ekko, "Purchase Order HEADER Detail
ekpo, "Purchase order Item Detail.
adrc, "Address
lfa1, "Vendor Master
konp, "Conditions (Item)
a003, "Tax Classification
t052u, "Own Explanations for Terms of Payment
t685t, "Conditions: Types: Texts
t001, "Company Codes
t161t, "Texts for Purchasing Document Types
j_1imocomp,"Company and Plant - Excise Additional Data
t001w, "Plants/Branches
user_addr,
makt, "Material Descriptions
konv, "Condition Table Item
nast,
zmmppp,
ekkn. "Account Assignment in Purchasing Document
******************************************DATA DECLARATIONS.
DATA it_adrc LIKE adrc OCCURS 0 WITH HEADER LINE.
DATA it_a363 LIKE a363 OCCURS 0 WITH HEADER LINE.
DATA it_ekko LIKE ekko OCCURS 0 WITH HEADER LINE.
DATA it_zkomv LIKE zkomv_1 OCCURS 0 WITH HEADER LINE.
DATA it_lfa1 LIKE lfa1 OCCURS 0 WITH HEADER LINE.
DATA it_konv LIKE konv OCCURS 0 WITH HEADER LINE.
DATA it_j_1imocomp LIKE j_1imocomp OCCURS 0 WITH HEADER LINE.
DATA it_ekpo LIKE ekpo OCCURS 0 WITH HEADER LINE.
*DATA it_ekpo1 LIKE Zekpo OCCURS 0 WITH HEADER LINE.
DATA : it_zkomv_1 LIKE zkomv_1 OCCURS 0 WITH HEADER LINE.
DATA it_eket LIKE eket OCCURS 0 WITH HEADER LINE.
DATA it_t005 LIKE t005 OCCURS 0 WITH HEADER LINE.
DATA it_header LIKE zmm_purchase_order OCCURS 10 WITH HEADER LINE.
DATA it_item LIKE zmm_purchase_order_item OCCURS 10 WITH HEADER LINE.
DATA wa_item LIKE it_item.
DATA it_ekkn LIKE ekkn OCCURS 10 WITH HEADER LINE.
DATA : it_esll LIKE esll OCCURS 10 WITH HEADER LINE.
DATA : t_komm TYPE STANDARD TABLE OF komv WITH HEADER LINE.
DATA : ekko1 LIKE ekko OCCURS 0 WITH HEADER LINE.
DATA : ekpo1 LIKE ekpo OCCURS 0 WITH HEADER LINE.
DATA : lfa11 LIKE lfa1 OCCURS 0 WITH HEADER LINE,
lt_mm_raw_mat TYPE STANDARD TABLE OF zmm_raw_mat,
ls_mm_raw_mat TYPE zmm_raw_mat.
DATA it_zmmppp LIKE zmmppp OCCURS 0 WITH HEADER LINE.
DATA : wwords TYPE spell.
DATA: amt_no LIKE pc207-betrg,
"AMT_NO LIKE KONV-KWERT,
amt_word(200) TYPE c.
DATA : grand_tot LIKE konv-kwert.
DATA : it_stax LIKE rtax1u15 OCCURS 0 WITH HEADER LINE.
DATA : it_label LIKE tline OCCURS 0 WITH HEADER LINE.
DATA : it_label1 TYPE STANDARD TABLE OF tline.
DATA : wa_label1 TYPE tline.
DATA :wa_label LIKE it_label.
DATA : wa_ekpo LIKE it_ekpo.
DATA : lv_bukrs LIKE ekpo-bukrs.
DATA : lv_werks LIKE ekpo-werks.
DATA : lv_mwskz LIKE ekpo-mwskz.
DATA : lv_bsart LIKE ekko-bsart.
DATA : lv_wmwst LIKE bseg-wmwst.
DATA : lv_swabh LIKE bseg-wmwst.
DATA : lv_kschl LIKE tnapr-kschl.
DATA : lv_key LIKE thead-tdname,
lv_netpr TYPE bseg-wrbtr,
lv_lifnr TYPE lifnr.
DATA : lv_vat4p LIKE bseg-wmwst.
DATA : lv_vat1p LIKE bseg-wmwst.
DATA : lv_vat4p_rat LIKE konv-kbetr.
DATA : lv_vat1p_rat LIKE konv-kbetr.
* data : it_stax TYPE TABLE OF lf_stax.
DATA : lv_stamt LIKE ekpo-netpr.
DATA : lv_netamt LIKE bseg-wrbtr.
DATA : v_comp_vatno TYPE t001-stceg. " FOR CLIENT VAT NO.
DATA : p000_price LIKE konv-kwert,
p001_price LIKE konv-kwert,
r000_price LIKE konv-kwert,
r001_price LIKE konv-kwert,
r002_price LIKE konv-kwert,
k000_price LIKE konv-kwert,
packforw_price LIKE konv-kwert,
packforw2_price LIKE konv-kwert,
packforw3_price LIKE konv-kwert,
fra1_price LIKE konv-kwert,
frb1_price LIKE konv-kwert,
frc1_price LIKE konv-kwert,
zsip_price LIKE konv-kwert,
zsiq_price LIKE konv-kwert,
zsif_price LIKE konv-kwert,
zstp_price LIKE konv-kwert,
zstq_price LIKE konv-kwert,
zstf_price LIKE konv-kwert,
basic LIKE konv-kwert,
discount LIKE konv-kwert,
p_and_f LIKE konv-kwert,
testing LIKE konv-kwert,
inspection LIKE konv-kwert,
freight LIKE konv-kwert.
DATA : eduduty LIKE konv-kwert.
DATA : eduperc LIKE konv-kbetr.
DATA : ecsvalue LIKE konv-kwert.
DATA : ecsperc LIKE konv-kbetr.
DATA : hecssvalue LIKE konv-kwert.
DATA : hecssperc LIKE konv-kbetr.
DATA :tot_eduduty LIKE konv-kwert.
DATA :tot_ecsval LIKE konv-kwert.
DATA :tot_hscess LIKE konv-kwert.
DATA :v_vat LIKE konv-kwert.
DATA : v_vat_prc LIKE konv-kbetr.
DATA : v_total LIKE konv-kwert.
DATA : tot_v_vat LIKE konv-kwert.
*************** DATA DECLARATION FOR SERVICE TAX
DATA : v_srvc_st LIKE konv-kwert.
DATA : v_srvc_prc LIKE konv-kbetr.
DATA : v_srvc_ecess LIKE konv-kwert.
DATA : v_srvc_ece_prc LIKE konv-kbetr.
DATA : v_srvc_sec LIKE konv-kwert.
DATA : v_srvc_sec_prc LIKE konv-kbetr.
*v_srvc_swa_bha
DATA : v_srvc_swa_bha LIKE konv-kwert.
DATA : v_srvc_swa_sec LIKE konv-kbetr.
*Krishi Kalyan Cess
DATA : lv_kkc_amt TYPE konv-kbetr,
lv_kkc_txt TYPE konv-kwert.
DATA : v_total_st LIKE konv-kwert.
DATA : v_amnt_elgbl LIKE konv-kwert. " FOR AMOUNT ELIGIBLE
DATA : v_amnt_elgbl1 LIKE konv-kwert. " FOR AMOUNT ELIGIBLE
**V_SRVC_ECE_PRC, V_SRVC_ECESS, V_SRVC_SEC_PRC, V_SRVC_SEC
********END
DATA : v_totaly LIKE konv-kwert.
DATA : v_vat4a LIKE konv-kwert.
DATA : v_vat4p LIKE konv-kbetr.
DATA : v_vat1a LIKE konv-kwert.
DATA : v_vat1p LIKE konv-kbetr.
DATA : v_vat1 LIKE konv-kwert.
DATA : v_vat2 LIKE konv-kwert.
DATA : v_vat3 LIKE konv-kwert.
DATA : v_vat4 LIKE konv-kwert.
DATA : v_vatc LIKE konv-kwert.
DATA : v_vat_ttl LIKE konv-kwert.
DATA : v_jicg LIKE konv-kwert,
v_jisg LIKE konv-kwert,
v_jiig LIKE konv-kwert.
eduduty = 0.
eduperc = 0.
ecsvalue = 0.
ecsperc = 0.
hecssvalue = 0 .
hecssperc = 0.
tot_eduduty = 0.
tot_ecsval = 0.
tot_hscess = 0.
DATA : v_class TYPE char1.
DATA : p_pono LIKE ekko-ebeln.
DATA : sfname TYPE tdsfname.
DATA : fname TYPE rs38l_fnam.
DATA : email TYPE adr6-smtp_addr.
************************************************************************
* SELECTION-SCREEN
************************************************************************
*SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
*
*SELECT-OPTIONS: p_pono FOR ekko-ebeln NO-EXTENSION
* NO INTERVALS.
*
*
*SELECTION-SCREEN:END OF BLOCK blk1.
*
************************************************************************
* START-OF-SELECTION.
************************************************************************
************************************************************************
* START-OF-SELECTION.
************************************************************************
FORM entry_neu USING ent_retco ent_screen.
p_pono = nast-objky.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = p_pono
IMPORTING
output = p_pono.
*
PERFORM initialization.
PERFORM fill_it_header.
PERFORM fill_it_item.
PERFORM call_form.
ENDFORM. "entry_neu
*&---------------------------------------------------------------------*
*& Form INITIALIZATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM initialization .
CLEAR v_total.
CLEAR it_adrc.
CLEAR it_ekko.
CLEAR it_lfa1.
CLEAR it_j_1imocomp.
CLEAR it_ekpo.
CLEAR it_eket.
CLEAR it_header.
CLEAR it_header.
CLEAR it_item.
CLEAR it_adrc[].
CLEAR it_ekko[].
CLEAR it_lfa1[].
CLEAR it_j_1imocomp[].
CLEAR it_ekpo[].
CLEAR it_eket[].
CLEAR it_header[].
CLEAR it_header[].
CLEAR it_item[].
CLEAR v_total.
CLEAR grand_tot.
CLEAR amt_no.
CLEAR v_comp_vatno.
CLEAR basic.
CLEAR discount.
CLEAR p_and_f.
CLEAR tot_eduduty.
CLEAR tot_ecsval.
CLEAR tot_hscess.
CLEAR v_vat_ttl.
CLEAR freight.
CLEAR inspection.
CLEAR testing.
CLEAR v_vat1.
CLEAR v_vat2.
CLEAR v_vat3.
CLEAR v_vat4.
CLEAR v_vatc.
CLEAR eduduty .
CLEAR eduperc .
CLEAR ecsvalue.
CLEAR ecsperc .
CLEAR hecssvalue .
CLEAR hecssperc .
CLEAR tot_eduduty .
CLEAR tot_ecsval.
CLEAR tot_hscess .
CLEAR v_vat .
CLEAR v_vat_prc .
CLEAR v_total .
CLEAR tot_v_vat .
** BEgin of SRDK903845
* CLEAR v_vat_cst.
**End of SRDK903845
CLEAR v_vat1 .
CLEAR v_vat2 .
CLEAR v_vat3 .
CLEAR v_vat4 .
CLEAR v_vatc .
CLEAR v_vat_ttl.
CLEAR it_adrc.
CLEAR it_ekko.
CLEAR it_lfa1.
CLEAR it_j_1imocomp.
CLEAR it_ekpo.
CLEAR it_eket.
CLEAR it_header.
CLEAR it_header.
CLEAR it_item.
CLEAR v_total.
CLEAR grand_tot.
CLEAR amt_no.
CLEAR v_comp_vatno.
CLEAR basic.
CLEAR discount.
CLEAR p_and_f.
CLEAR tot_eduduty.
CLEAR tot_ecsval.
CLEAR tot_hscess.
CLEAR v_vat_ttl.
CLEAR freight.
CLEAR inspection.
* CLEAR insurance.
CLEAR testing.
CLEAR v_vat1.
CLEAR v_vat2.
CLEAR v_vat3.
CLEAR v_vat4.
CLEAR v_vatc.
* CLEAR v_amnd_no.
CLEAR eduduty .
CLEAR eduperc .
CLEAR ecsvalue.
CLEAR ecsperc .
CLEAR hecssvalue .
CLEAR hecssperc .
CLEAR tot_eduduty .
CLEAR tot_ecsval.
CLEAR tot_hscess .
CLEAR v_vat .
CLEAR v_vat_prc .
CLEAR v_total .
CLEAR tot_v_vat .
** BEgin of SRDK903845
* CLEAR v_vat_cst.
**End of SRDK903845
CLEAR v_vat1 .
CLEAR v_vat2 .
CLEAR v_vat3 .
CLEAR v_vat4 .
CLEAR v_vatc .
CLEAR v_vat_ttl.
CLEAR v_amnt_elgbl.
** BEgin of SRDK903845
CLEAR it_a363[].
CLEAR it_zkomv[].
CLEAR it_konv[].
CLEAR it_zkomv_1[].
CLEAR it_t005[].
**End of SRDK903845
CLEAR it_adrc[].
CLEAR it_ekko[].
CLEAR it_lfa1[].
CLEAR it_j_1imocomp[].
CLEAR it_ekpo[].
CLEAR it_eket[].
CLEAR it_header[].
CLEAR it_header[].
CLEAR it_item[].
CLEAR it_esll[].
CLEAR t_komm[].
CLEAR : v_jicg, v_jisg, v_jiig.
CLEAR : v_vat_ttl,v_srvc_st,v_srvc_ecess,v_srvc_sec,v_srvc_prc,v_srvc_ece_prc,v_srvc_sec_prc.
ENDFORM. " INITIALIZATION
*&---------------------------------------------------------------------*
*& Form FILL_IT_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_header .
SELECT *
FROM ekko
INTO TABLE it_ekko
WHERE ebeln = p_pono AND
bukrs = 'SF01' AND bstyp = 'F'.
IF sy-subrc <> 0.
MESSAGE 'Enter Correct Purchase Order No.' TYPE 'I'.
EXIT.
ENDIF.
PERFORM check_authorization.
LOOP AT it_ekko WHERE ebeln = p_pono.
it_header-ebeln = it_ekko-ebeln. "PO No
it_header-bedat = it_ekko-bedat. "PO Date
it_header-angnr = it_ekko-angnr. "Your Ref No
it_header-ihran = it_ekko-unsez. "Date
it_header-verkf = it_ekko-verkf. "Kind Attn.
it_header-inco2 = it_ekko-inco2. "Incoterms
it_header-lifnr = it_ekko-lifnr. "Vendor
lv_lifnr = it_ekko-lifnr. "Vendor
it_header-ernam = it_ekko-ernam.
it_header-waers = it_ekko-waers. "Currency
it_header-revno = it_ekko-revno. " Amendmend No
it_header-zzrmk1 = it_ekko-zzrmk1.
it_header-zzbox = it_ekko-zzbox.
it_header-zzboxrmk = it_ekko-zzboxrmk.
it_header-zzdim = it_ekko-zzdim.
it_header-zzspcrq = it_ekko-zzspcrq.
it_header-zterm = it_ekko-zterm.
it_header-cont = it_ekko-konnr.
APPEND it_header.
CLEAR it_header.
ENDLOOP.
CLEAR email.
LOOP AT it_header.
CALL FUNCTION 'UMB_SERVICE_USER_EMAIL'
EXPORTING
i_user = it_header-ernam
IMPORTING
e_email = email.
SELECT SINGLE stceg adrnr stcd3 "Vendor VAT Reg. no,Vendor Code,Adress Number
FROM lfa1
INTO (it_header-stceg,it_lfa1-adrnr, it_header-vend_gstin )
WHERE lifnr = it_header-lifnr.
SELECT SINGLE adrnr FROM lfa1 INTO it_header-adrnr WHERE lifnr = it_header-lifnr.
SELECT
SINGLE j_1icstno ven_class " Vendor CST No.
FROM j_1imovend
INTO (it_header-v_j_1icstno, it_header-ven_class)
WHERE lifnr = it_header-lifnr.
SELECT SINGLE verkf "Kind Atten.
FROM lfm1
INTO it_header-verkf
WHERE lifnr = it_header-lifnr.
SELECT
SINGLE stceg " ClienT VAT No.
FROM t001
INTO v_comp_vatno
WHERE bukrs = 'SF01'.
SELECT SINGLE name_textc
FROM user_addr
INTO it_header-name_textc
WHERE bname = it_header-ernam.
TRANSLATE it_header-name_textc TO LOWER CASE.
* SELECT
* SINGLE zterm
* FROM lfb1
* INTO it_header-zterm
* WHERE lifnr = it_header-lifnr.
*
* IF it_header-zterm = ' ' .
* SELECT
* SINGLE zterm
* FROM lfm1
* INTO it_header-zterm
* WHERE lifnr = it_header-lifnr.
* ENDIF.
SELECT
SINGLE text1 " Payment Terms
FROM t052u
INTO it_header-text1
WHERE zterm = it_header-zterm AND
spras = 'EN'.
SELECT
SINGLE name1 street city1 post_code1 tel_number fax_number house_num1
FROM adrc
INTO (it_header-name1,it_header-street,it_header-city1,it_header-post_code1,
it_header-tel_number,it_header-fax_number,it_header-house_num1)
WHERE addrnumber = it_lfa1-adrnr.
* select
* single name1 STRAS PFACH PSTLZ ORT01
* from T001W
* INTO (IT_HEADER-NAME1,IT_HEADER-STRAS,IT_HEADER-PFACH,IT_HEADER-PSTLZ,IT_HEADER-ORT01)
* WHERE WERKS = 'SF01'.
*
*** SELECT
*** SINGLE j_1ipanno j_1iexcd j_1iexrg j_1iexdi j_1iexco "j_1icstno "Pan No, Excise no,Excise Division,Excise Commisioner Rate,CST No.
*** FROM j_1imocomp
*** INTO (it_header-j_1ipanno, it_header-j_1iexcd, it_header-j_1iexrg, it_header-j_1iexdi,
*** it_header-j_1iexco)
*** WHERE bukrs = it_ekko-bukrs.
SELECT
SINGLE j_1iexccd j_1iexcrg j_1iexcdi j_1iexcco "j_1icstno " ECC No., Range,Division, commisionarate
FROM j_1iregset
INTO (it_header-j_1iexcd, it_header-j_1iexrg, it_header-j_1iexdi, it_header-j_1iexco)
WHERE j_1iregid = 21.
SELECT
SINGLE j_1isern " Vendor-Service Tax Registration Number
FROM j_1imovend
INTO it_header-j_1isern
WHERE lifnr = it_header-lifnr.
IF it_header-cont <> ''.
SELECT SINGLE bedat kdatb kdate FROM ekko
INTO (it_header-cdate, it_header-kdatb, it_header-kdate)
WHERE ebeln = it_header-cont.
ELSE.
* it_header-cdate = '-'.
it_header-cont = '-'.
ENDIF.
MODIFY it_header.
ENDLOOP.
ENDFORM. " FILL_IT_HEADER
*&---------------------------------------------------------------------*
*& Form FILL_IT_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_item .
SELECT *
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln = p_pono AND
loekz = ''.
SELECT SINGLE kschl
FROM tnapr
INTO lv_kschl
WHERE pgnam = 'ZMM_SERVICE_PO' .
SELECT * FROM zmm_raw_mat INTO TABLE lt_mm_raw_mat WHERE lifnr = lv_lifnr.
SORT lt_mm_raw_mat BY matnr.
LOOP AT it_ekpo WHERE ebeln = p_pono.
it_item-werks = it_ekpo-werks.
it_item-ebelp = it_ekpo-ebelp. " Item Code No
READ TABLE lt_mm_raw_mat INTO ls_mm_raw_mat WITH KEY matnr = it_ekpo-matnr BINARY SEARCH.
IF ls_mm_raw_mat-maktx IS NOT INITIAL.
it_item-txz01 = ls_mm_raw_mat-maktx. " Item Descripton from ZMM_RAW_MAT
ELSE.
it_item-txz01 = it_ekpo-txz01. " Item Descripton
ENDIF.
it_item-matnr = it_ekpo-matnr. " Material No.
it_item-menge = it_ekpo-menge. " Quantity
it_item-meins = it_ekpo-meins. " Unit
it_item-netpr = it_ekpo-netpr.
it_item-brtwr = it_ekpo-brtwr.
it_item-eindt = it_eket-eindt. " Item Delivery Date
SELECT SINGLE * FROM ekkn INTO it_ekkn
WHERE
ebeln = it_ekpo-ebeln AND
ebelp = it_item-ebelp.
it_item-kostl = it_ekkn-kostl.
SELECT SINGLE * FROM m_kostn INTO it_m_kostn WHERE kostl = it_item-kostl AND spras = 'EN'.
it_item-mctxt = it_m_kostn-mctxt.
CLEAR: it_m_kostn.
it_item-aufnr = it_ekkn-aufnr.
SELECT SINGLE * FROM m_ordeb INTO it_m_ordeb WHERE aufnr = it_item-aufnr.
it_item-ktext = it_m_ordeb-ktext.
CLEAR: it_m_ordeb.
it_item-anln1 = it_ekkn-anln1.
SELECT SINGLE * FROM anlh INTO it_anlh WHERE anln1 = it_item-anln1.
it_item-anlhtxt = it_anlh-anlhtxt.
CLEAR: it_anlh.
it_item-vbeln = it_ekkn-vbeln.
it_item-vbelp = it_ekkn-vbelp.
CLEAR: it_ekkn.
CONCATENATE it_ekpo-ebeln it_ekpo-ebelp INTO lv_key.
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* client = sy-mandt
* id = 'F01'
* language = sy-langu
* name = lv_key
* object = 'EKPO'
** ARCHIVE_HANDLE = 0
** LOCAL_CAT = ' '
** IMPORTING
** HEADER =
** OLD_LINE_COUNTER =
* TABLES
* lines = it_label
* EXCEPTIONS
* id = 1
* language = 2
* name = 3
* not_found = 4
* object = 5
* reference_check = 6
* wrong_access_to_archive = 7
* OTHERS = 8
* .
* IF sy-subrc <> 0.
** Implement suitable error handling here
* ENDIF.
* READ TABLE it_label INTO wa_label1.
* IF sy-subrc = 0.
*
* ENDIF.
*append it_label.
* it_item-mtxt = wa_label1-tdline.
APPEND it_item.
CLEAR : ls_mm_raw_mat,lv_lifnr.
ENDLOOP.
LOOP AT it_item.
SELECT SINGLE knumv "MATERIAL DESCRIPTION
FROM ekko
INTO it_item-knumv
WHERE ebeln = p_pono.
SELECT SINGLE eindt "Delivery Date
FROM eket
INTO it_item-eindt
WHERE ebeln = p_pono AND
ebelp = it_item-ebelp.
SELECT SINGLE maktx "MATERIAL DESCRIPTION
FROM makt
INTO it_item-maktx
WHERE matnr = it_item-matnr.
SELECT SINGLE packno
FROM ekpo
INTO it_item-packno
WHERE ebeln = p_pono AND
ebelp = it_item-ebelp.
SELECT SINGLE sub_packno
FROM esll
INTO it_item-sub_packno
WHERE packno = it_item-packno.
SELECT SINGLE SUM( menge ) SUM( tbtwr )
FROM esll
INTO (it_item-menge_new,it_item-tbtwr)
WHERE packno = it_item-sub_packno
GROUP BY packno.
MODIFY it_item.
ENDLOOP.
LOOP AT it_item.
SELECT * FROM esll INTO it_esll
WHERE packno = it_item-sub_packno.
APPEND it_esll.
ENDSELECT.
CLEAR : it_item, it_esll.
ENDLOOP.
READ TABLE it_item INDEX 1.
LOOP AT it_header.
it_header-werks = it_item-werks.
MODIFY it_header TRANSPORTING werks.
CLEAR: it_header.
ENDLOOP.
"Fill Coster Center Description & Internal Order's Description.
* LOOP AT it_item.
* SELECT SINGLE * FROM m_kostn INTO it_m_kostn WHERE kostl = it_item-kostl AND spras = 'EN'.
* IF it_item-ebelp = '00010'.
* CONCATENATE it_item-ebelp '-' it_item-kostl '-' it_m_kostn-mctxt INTO g_text.
* ELSE.
* CONCATENATE g_text ',' it_item-ebelp '-' it_item-kostl '-' it_m_kostn-mctxt INTO g_text.
* ENDIF.
* select SINGLE * from m_ordeb into it_m_ordeb where aufnr = it_item-aufnr.
* IF it_item-ebelp = '00010'.
* CONCATENATE it_item-ebelp '-' it_item-aufnr '-' it_m_ordeb-ktext INTO g_texta.
* ELSE.
* CONCATENATE g_texta ',' it_item-ebelp '-' it_item-aufnr '-' it_m_ordeb-ktext INTO g_texta.
* ENDIF.
*
*
*
* CLEAR: it_item,it_m_kostn.
* ENDLOOP.
PERFORM condition_value.
it_item-p000_price = 0.
it_item-p000_rate = 0.
it_item-p001_price = 0.
it_item-p001_rate = 0.
it_item-r000_price = 0.
it_item-r000_rate = 0.
it_item-r001_price = 0.
it_item-r001_rate = 0.
it_item-r002_price = 0.
it_item-r002_rate = 0.
it_item-k000_price = 0.
it_item-k000_rate = 0.
it_item-packforw_price = 0.
it_item-packforw_rate = 0.
it_item-packforw2_price = 0.
it_item-packforw2_rate = 0.
it_item-packforw3_price = 0.
it_item-packforw3_rate = 0.
it_item-fra1_price = 0.
it_item-fra1_rate = 0.
it_item-frb1_price = 0.
it_item-frb1_rate = 0.
it_item-frc1_price = 0.
it_item-frc1_rate = 0.
it_item-zsip_price = 0.
it_item-zsip_rate = 0.
it_item-zsiq_price = 0.
it_item-zsiq_rate = 0.
it_item-zsif_price = 0.
it_item-zsif_rate = 0.
it_item-zstp_price = 0.
it_item-zstp_rate = 0.
it_item-zstq_price = 0.
it_item-zstq_rate = 0.
LOOP AT it_item. "FOR TAXES CALCULATION FROM PRICING PROCEDURE
LOOP AT it_konv WHERE knumv = it_item-knumv AND
kposn = it_item-ebelp.
IF it_konv-kschl = 'P000' AND it_konv-kntyp = 'H'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-p000_price = it_item-p000_price + it_item-kwert.
it_item-p000_rate = it_item-p000_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'P001'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-p001_price = it_item-p001_price + it_item-kwert.
it_item-p001_rate = it_item-p001_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'R000'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-r000_price = it_item-r000_price + it_item-kwert.
it_item-r000_rate = it_item-r000_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'RA01'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-r000_price = it_item-r000_price + it_item-kwert.
it_item-r000_rate = it_item-r000_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'R001'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-r001_price = it_item-r001_price + it_item-kwert.
it_item-r001_rate = it_item-r001_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'R002'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-r002_price = it_item-r002_price + it_item-kwert.
it_item-r002_rate = it_item-r002_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'K000'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-k000_price = it_item-k000_price + it_item-kwert.
it_item-k000_rate = it_item-k000_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'P&F1'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-packforw_price = it_item-packforw_price + it_item-kwert.
it_item-packforw_rate = it_item-packforw_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'P&F2'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-packforw2_price = it_item-packforw2_price + it_item-kwert.
it_item-packforw2_rate = it_item-packforw2_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'P&F3'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-packforw3_price = it_item-packforw3_price + it_item-kwert.
it_item-packforw3_rate = it_item-packforw3_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'FRA1'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-fra1_price = it_item-fra1_price + it_item-kwert.
it_item-fra1_rate = it_item-fra1_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'FRB1'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-frb1_price = it_item-frb1_price + it_item-kwert.
it_item-frb1_rate = it_item-frb1_rate + it_item-kbetr.
ELSEIF it_konv-kschl = 'FRC1'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-frc1_price = it_item-frc1_price + it_item-kwert.
it_item-frc1_rate = it_item-frc1_rate + it_item-kwert.
ELSEIF it_konv-kschl = 'ZSIP'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-zsip_price = it_item-zsip_price + it_item-kwert.
it_item-zsip_rate = it_item-zsip_rate + it_item-kwert.
ELSEIF it_konv-kschl = 'ZSIQ'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-zsiq_price = it_item-zsiq_price + it_item-kwert.
it_item-zsiq_rate = it_item-zsiq_rate + it_item-kwert.
ELSEIF it_konv-kschl = 'ZSIF'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-zsif_price = it_item-zsif_price + it_item-kwert.
it_item-zsif_rate = it_item-zsif_rate + it_item-kwert.
ELSEIF it_konv-kschl = 'ZSTP'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-zstp_price = it_item-zstp_price + it_item-kwert.
it_item-zstp_rate = it_item-zstp_rate + it_item-kwert.
ELSEIF it_konv-kschl = 'ZSTQ'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-zstq_price = it_item-zstq_price + it_item-kwert.
it_item-zstq_rate = it_item-zstq_rate + it_item-kwert.
ELSEIF it_konv-kschl = 'ZSTF'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-zstf_price = it_item-zstf_price + it_item-kwert.
it_item-zstf_rate = it_item-zstf_rate + it_item-kwert.
ELSEIF it_konv-kschl = 'PBXX'.
it_item-kwert = it_konv-kwert.
it_item-kawrt = it_konv-kawrt.
it_item-kbetr = it_konv-kbetr.
it_item-p001_price = it_item-p001_price + it_item-kwert.
it_item-p001_rate = it_item-p001_rate + it_item-kbetr.
ENDIF.
MODIFY it_item.
ENDLOOP.
ENDLOOP.
p000_price = 0.
p001_price = 0.
r000_price = 0.
r001_price = 0.
r002_price = 0.
k000_price = 0.
packforw_price = 0.
packforw2_price = 0.
packforw3_price = 0.
fra1_price = 0.
frb1_price = 0.
frc1_price = 0.
zsip_price = 0.
zsiq_price = 0.
zsif_price = 0.
zstp_price = 0.
zstq_price = 0.
zstf_price = 0.
basic = 0.
discount = 0.
p_and_f = 0.
testing = 0.
inspection = 0.
freight = 0.
LOOP AT it_item.
p000_price = p000_price + it_item-p000_price.
p001_price = p001_price + it_item-p001_price.
r000_price = r000_price + it_item-r000_price.
r001_price = r001_price + it_item-r001_price.
r002_price = r002_price + it_item-r002_price.
k000_price = k000_price + it_item-k000_price.
packforw_price = packforw_price + it_item-packforw_price.
packforw2_price = packforw2_price + it_item-packforw2_price.
packforw3_price = packforw3_price + it_item-packforw3_price.
fra1_price = fra1_price + it_item-fra1_price.
frb1_price = frb1_price + it_item-frb1_price.
frc1_price = frc1_price + it_item-frc1_price.
zsip_price = zsip_price + it_item-zsip_price.
zsiq_price = zsiq_price + it_item-zsiq_price.
zsif_price = zsif_price + it_item-zsif_price.
zstp_price = zstp_price + it_item-zstp_price.
zstq_price = zstq_price + it_item-zstq_price.
zstf_price = zstf_price + it_item-zstf_price.
* discount = discount + ( ( it_item-brtwr * it_item-kawrt ) / 100 ).
ENDLOOP.
basic = p000_price + p001_price.
discount = r000_price + r001_price + r002_price + k000_price.
p_and_f = packforw_price + packforw2_price + packforw3_price.
testing = zstp_price + zstq_price + zstf_price.
inspection = zsip_price + zsiq_price + zsif_price.
freight = fra1_price + frb1_price + frc1_price.
LOOP AT it_item.
it_item-v_quantity = it_item-menge. "PO Qty.
* it_item-v_rate = ( it_item-p000_rate + it_item-p001_rate ).
IF it_item-r000_rate <> ''.
it_item-r000_rate = it_item-r000_rate * ( -1 / 1000 ) .
it_item-v_rate = it_item-v_rate - ( it_item-r000_rate * it_item-v_rate ) .
ENDIF.
IF it_item-r001_rate <> ''.
it_item-r001_rate = it_item-r001_rate * ( -1 / 1000 ) .
it_item-v_rate = it_item-v_rate - ( it_item-r001_rate * it_item-v_rate ).
ENDIF.
IF it_item-r002_rate <> ''.
it_item-r002_rate = it_item-r002_rate * ( -1 / 1000 ) .
it_item-v_rate = it_item-v_rate - ( it_item-r002_rate * it_item-v_rate ).
ENDIF.
* it_item-v_amount = it_item-v_rate * it_item-v_quantity ."it_item-brtwr. "PO Amount
* basic = basic + it_item-v_amount.
it_item-r000_rate = it_item-r000_rate * 100 .
CONCATENATE it_item-r000_rate '%' INTO it_item-r000_rate.
* it_item-v_quantity = it_item-menge. "PO Qty.
it_item-v_rate = it_item-p000_rate. "PO Rate
it_item-v_amount = it_item-brtwr. "PO Amount
* it_item-v_discount = it_item-kawrt. " PO discount
v_amnt_elgbl = v_amnt_elgbl + it_item-v_amount. " for amount eligible
MODIFY it_item.
ENDLOOP.
******Added By S.S.Singh - 13.04.2012 - AGT*****
LOOP AT it_item.
PERFORM calculate_tax USING p_pono it_item-ebelp
. " p_ebelp CHANGING mwsbp ..
MODIFY IT_ITEM.
CLEAR it_item. " KOMV END LOOP.
ENDLOOP.
CLEAR lv_netamt.
" start change by Hemul modh for service po-------*
IF lv_kschl = 'ZSPO' .
*SELECT netpr WERKS BUKRS from ekpo
* into lf_ekpo
* where ebeln = it_ekko-ebeln
* and bukrs = 'SF01' AND bstyp = 'F'.
LOOP AT it_ekpo INTO wa_ekpo.
* clear wa_ekpo.
*read TABLE it_ekpo INTO wa_ekpo INDEX 1.
lv_netamt = lv_netamt + wa_ekpo-netpr.
* CONCATENATE it_ekpo-ebeln it_ekpo-ebelp INTO lv_key.
ENDLOOP.
CLEAR : lv_wmwst,lv_swabh.
LOOP AT it_ekpo.
lv_bukrs = it_ekpo-bukrs.
lv_werks = it_ekpo-werks.
lv_mwskz = it_ekpo-mwskz.
lv_netpr = it_ekpo-netpr.
CALL FUNCTION 'CALCULATE_TAX_FROM_NET_AMOUNT'
EXPORTING
i_bukrs = lv_bukrs
i_mwskz = lv_mwskz
i_waers = 'INR'
i_wrbtr = lv_netpr "lv_netamt
TABLES
t_mwdat = it_stax
EXCEPTIONS
bukrs_not_found = 1
country_not_found = 2
mwskz_not_defined = 3
mwskz_not_valid = 4
ktosl_not_found = 5
kalsm_not_found = 6
parameter_error = 7
knumh_not_found = 8
kschl_not_found = 9
unknown_error = 10
account_not_found = 11
txjcd_not_valid = 12
OTHERS = 13.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT it_stax.
IF it_stax-ktosl = 'ST1'. "Service Tax
lv_wmwst = lv_wmwst + it_stax-wmwst.
v_srvc_prc = it_stax-kbetr / 10.
ELSEIF it_stax-ktosl = 'ZS1'. "Service Tax
lv_wmwst = lv_wmwst + it_stax-wmwst.
v_srvc_prc = it_stax-kbetr / 10.
ELSEIF it_stax-ktosl = 'SB1'. "Swatch Bharat Cess
* lv_swabh = lv_swabh + it_stax-wmwst.
v_srvc_swa_sec = v_srvc_swa_sec + it_stax-wmwst.
v_srvc_swa_bha = it_stax-kbetr / 10.
ELSEIF it_stax-ktosl = 'ZB2'. "Krishi Kalyan Cess
lv_kkc_amt = lv_kkc_amt + it_stax-wmwst.
lv_kkc_txt = it_stax-kbetr / 10.
ELSEIF it_stax-ktosl = 'VAT' AND it_stax-kschl = 'VAT1'. "VAT 4%
lv_vat4p = lv_vat4p + it_stax-wmwst.
lv_vat4p_rat = it_stax-kbetr / 10.
ELSEIF it_stax-ktosl = 'VAT' AND it_stax-kschl = 'VAT2'. "VAT 1%
lv_vat1p = lv_vat1p + it_stax-wmwst.
lv_vat1p_rat = it_stax-kbetr / 10.
ENDIF.
ENDLOOP.
ENDLOOP.
lv_stamt = lv_wmwst + lv_swabh + lv_netamt + v_srvc_ecess + v_srvc_sec + lv_kkc_amt.
ENDIF.
v_vat_ttl = v_vat1 + v_vat2 + v_vat3 + v_vat4 + v_vatc.
tot_eduduty = discount.
v_totaly = v_amnt_elgbl + lv_wmwst + lv_swabh + v_srvc_ecess + v_srvc_sec + discount + lv_kkc_amt + v_srvc_swa_sec.
v_total = v_amnt_elgbl + lv_wmwst + lv_swabh + v_srvc_ecess + v_srvc_sec + discount + lv_kkc_amt + v_srvc_swa_sec
+ lv_vat1p + lv_vat4p + v_jicg + v_jisg + v_jiig.
v_srvc_st = lv_wmwst.
" end change by hemul modh--------*
* V_TOTAL_ST = V_SRVC_ST + V_SRVC_ECESS + V_SRVC_SEC. " FOR TOTAL SERVICE TAX
* LOOP AT it_item.
* SELECT *
* FROM zkomv_1
* INTO TABLE it_zkomv_1
* WHERE ebeln = p_pono
* AND waers = ''
* AND ( kschl = 'JVCS' OR kschl = 'JVRD' OR kschl = 'JVRN' OR kschl = 'JVCD' OR kschl = 'JVCN' ).
* ENDLOOP.
* LOOP AT it_item.
*
* READ TABLE it_zkomv_1 INDEX sy-tabix.
* it_item-vat_prc = it_zkomv_1-kbetr / 10.
* MODIFY it_item.
*
* ENDLOOP.
LOOP AT t_komm WHERE knumv = ekko-knumv
AND waers = ''
AND ( kschl = 'JVCS' OR kschl = 'JVRD' OR kschl = 'JVRN' OR kschl = 'JVCD' OR kschl = 'JVCN' )..
LOOP AT it_item WHERE ebelp = t_komm-kposn.
* READ TABLE T_KOMM INDEX sy-tabix.
it_item-vat_prc = t_komm-kbetr / 10.
MODIFY it_item.
CLEAR it_item.
ENDLOOP.
ENDLOOP.
ENDFORM. " FILL_IT_ITEM
*&---------------------------------------------------------------------*
*& Form CALL_FORM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM call_form .
LOOP AT it_esll.
SHIFT it_esll-extrow LEFT DELETING LEADING '0'.
MODIFY it_esll.
ENDLOOP.
LOOP AT it_header.
IF it_header-ven_class = '0'.
v_class = 'U'.
ELSE.
v_class = 'R'.
ENDIF.
CLEAR amt_no.
amt_no = v_total.
PERFORM amt_in_words USING amt_no.
it_header-gtot_words = amt_word.
MODIFY it_header.
ENDLOOP.
****************
****************CALL FUNCTION 'SPELL_AMOUNT'
**************** EXPORTING
**************** AMOUNT = V_TOTAL
**************** CURRENCY = 'INR '
**************** FILLER = ' '
**************** LANGUAGE = SY-LANGU
**************** IMPORTING
**************** IN_WORDS = WWORDS
**************** EXCEPTIONS
**************** NOT_FOUND = 1
**************** TOO_LARGE = 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.
SELECT SINGLE sform
INTO sfname
FROM tnapr
WHERE kschl = 'ZSPO'
AND nacha = '1'
AND kappl = 'EF'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = sfname " 'ZMM_SERVICE_PO'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = fname
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.
CALL FUNCTION fname
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
basic = basic
discount = discount
p_and_f = p_and_f
testing = testing
inspection = inspection
freight = freight
eduperc = eduperc
hecssperc = hecssperc
tot_eduduty = tot_eduduty
tot_ecsval = tot_ecsval
tot_hscess = tot_hscess
ecsperc = ecsperc
v_vat_prc = v_vat_prc
v_vat = v_vat
v_total = v_total
wwords = wwords
v_comp_vatno = v_comp_vatno
tot_v_vat = tot_v_vat
v_vat_ttl = v_vat_ttl
v_srvc_st = v_srvc_st
v_srvc_ecess = v_srvc_ecess
v_srvc_sec = v_srvc_sec
v_srvc_swa_bha = v_srvc_swa_bha
v_srvc_prc = v_srvc_prc
v_srvc_ece_prc = v_srvc_ece_prc
v_srvc_sec_prc = v_srvc_sec_prc
v_srvc_swa_sec = v_srvc_swa_sec
v_kkc_text = lv_kkc_txt
v_kkc_amt = lv_kkc_amt
v_amnt_elgbl = v_amnt_elgbl
g_text = g_text
g_texta = g_texta
v_amnt_elgbl1 = v_amnt_elgbl1
email = email
lv_vat4p = lv_vat4p
lv_vat1p = lv_vat1p
lv_vat4p_rat = lv_vat4p_rat
lv_vat1p_rat = lv_vat1p_rat
v_jicg = v_jicg
v_jisg = v_jisg
v_jiig = v_jiig
v_class = v_class
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
TABLES
it_header = it_header
it_item = it_item
it_esll = it_esll
* 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_FORM
*&---------------------------------------------------------------------*
*& Form CALCULATE_TAXES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM condition_value .
LOOP AT it_item.
SELECT *
FROM konv
INTO it_konv
WHERE knumv = it_item-knumv AND
kposn = it_item-ebelp.
APPEND it_konv.
ENDSELECT.
ENDLOOP.
ENDFORM. " CALCULATE_TAXES
*&---------------------------------------------------------------------*
*& Form AMT_IN_WORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_AMT_NO text
*----------------------------------------------------------------------*
FORM amt_in_words USING p_amt_no.
CALL FUNCTION 'HR_IN_CHG_INR_WRDS'
EXPORTING
amt_in_num = amt_no
IMPORTING
amt_in_words = amt_word
EXCEPTIONS
data_type_mismatch = 1
OTHERS = 2.
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. " AMT_IN_WORDS
*&---------------------------------------------------------------------*
*& Form CALCULATE_TAX
*&---------------------------------------------------------------------*
FORM calculate_tax USING p_po TYPE ekpo-ebeln
it_item-ebelp TYPE ekpo-ebelp.
CONSTANTS: bstyp_info VALUE 'I',
bstyp_ordr VALUE 'W',
bstyp_banf VALUE 'B',
bstyp_best VALUE 'F',
bstyp_anfr VALUE 'A',
bstyp_kont VALUE 'K',
bstyp_lfpl VALUE 'L',
bstyp_lerf VALUE 'Q'.
TABLES : komk , komp.
DATA mwsbp TYPE komp-mwsbp .
DATA : taxcom TYPE taxcom ,
my_taxcom TYPE j_1b_taxcom,
l_taxcom TYPE taxcom ,
e_taxcom TYPE taxcom,
t_konv TYPE TABLE OF komv WITH HEADER LINE .
DATA: BEGIN OF tkomv OCCURS 50.
INCLUDE STRUCTURE komv.
DATA: END OF tkomv.
DATA: BEGIN OF tkomvd OCCURS 50. "Belegkonditionen
INCLUDE STRUCTURE komvd.
DATA: END OF tkomvd.
DATA : BEGIN OF tkomvh OCCURS 50.
INCLUDE STRUCTURE komv.
DATA : vtext LIKE t685t-vtext.
DATA : END OF tkomvh.
CLEAR: t_konv[],tkomv[],tkomvh[],t_komm.
* SELECT SINGLE * INTO ekko1 FROM ekko WHERE ebeln = p_po .
* SELECT SINGLE * INTO t001 FROM t001 WHERE bukrs = ekko-bukrs .
*
* SELECT SINGLE * INTO ekpo FROM ekpo WHERE ebeln = p_po.
* AND ebelp = p_ebelp .
CLEAR ekpo1.
SELECT SINGLE * FROM ekpo
INTO ekpo1
WHERE ebeln EQ p_po
and EBELP eq it_item-ebelp
AND loekz EQ ''.
* LOOP AT ekpo1." WHERE loekz eq ''..
SELECT SINGLE * INTO ekko1 FROM ekko WHERE ebeln = p_po .
SELECT SINGLE * INTO t001 FROM t001 WHERE bukrs = ekko1-bukrs .
SELECT SINGLE * INTO lfa11 FROM lfa1 WHERE lifnr = ekko1-lifnr.
CLEAR taxcom.
taxcom-bukrs = ekko1-bukrs.
taxcom-budat = ekko1-bedat.
taxcom-waers = ekko1-waers.
taxcom-kposn = ekpo1-ebelp.
taxcom-mwskz = ekpo1-mwskz.
IF ekpo1-mwskz = ''.
taxcom-mwskz = 'V0'.
ENDIF.
taxcom-txjcd = ekpo1-txjcd.
taxcom-shkzg = 'H'.
taxcom-xmwst = 'X'.
IF ekko1-bstyp EQ bstyp_best.
taxcom-wrbtr = ekpo1-netwr.
ELSE.
taxcom-wrbtr = ekpo1-zwert.
ENDIF.
taxcom-lifnr = ekko1-lifnr.
taxcom-land1 = ekko1-lands.
taxcom-ekorg = ekko1-ekorg.
taxcom-hwaer = t001-waers.
taxcom-llief = ekko1-llief.
taxcom-bldat = ekko1-bedat.
taxcom-matnr = ekpo1-ematn.
taxcom-werks = ekpo1-werks.
taxcom-bwtar = ekpo1-bwtar.
taxcom-matkl = ekpo1-matkl.
taxcom-meins = ekpo1-meins.
IF ekko1-bstyp EQ bstyp_best.
taxcom-mglme = ekpo1-menge.
ELSE.
IF ekko1-bstyp EQ bstyp_kont AND ekpo1-abmng GT 0.
taxcom-mglme = ekpo1-abmng.
ELSE.
taxcom-mglme = ekpo1-ktmng.
ENDIF.
ENDIF.
IF taxcom-mglme EQ 0.
taxcom-mglme = 1000.
ENDIF.
taxcom-mtart = ekpo1-mtart.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'J_1BSA_COMPONENT_ACTIVE'
EXPORTING
bukrs = ekko1-bukrs
component = 'BR'
EXCEPTIONS
component_not_active = 1
OTHERS = 2.
IF sy-subrc IS INITIAL.
komk-mandt = ekko1-mandt.
komk-kalsm = ekko1-kalsm.
IF ekko1-kalsm = ''.
komk-kalsm = 'RM0000'.
ENDIF.
komk-kappl = 'M'.
komk-waerk = ekko1-waers.
komk-knumv = ekko1-knumv.
komk-lifnr = ekko1-lifnr.
komp-kposn = ekpo1-ebelp.
komp-matnr = ekpo1-matnr.
komp-werks = ekpo1-werks.
komp-matkl = ekpo1-matkl.
komp-infnr = ekpo1-infnr.
komp-evrtn = ekpo1-konnr.
komp-evrtp = ekpo1-ktpnr.
CALL FUNCTION 'RV_PRICE_PRINT_ITEM'
EXPORTING
comm_head_i = komk
comm_item_i = komp
language = 'E'
TABLES
tkomv = tkomv
tkomvd = tkomvd.
CALL FUNCTION 'J_1B_NF_PO_DISCOUNTS'
EXPORTING
i_kalsm = ekko1-kalsm
i_ekpo = ekpo1
IMPORTING
e_ekpo = ekpo1
TABLES
i_konv = t_konv.
IF NOT ekko1-llief IS INITIAL.
taxcom-lifnr = ekko1-llief.
ENDIF.
ENDIF.
CALL FUNCTION 'FIND_TAX_SPREADSHEET'
EXPORTING
buchungskreis = t001-bukrs
EXCEPTIONS
not_found = 1
OTHERS = 2.
CALL FUNCTION 'CALCULATE_TAX_ITEM'
EXPORTING
i_taxcom = taxcom
IMPORTING
e_taxcom = taxcom
TABLES
t_xkomv = t_komm.
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 t_komm.
CASE t_komm-kschl.
WHEN 'JICG' . "CGST.
it_item-jicg_perc = t_komm-kbetr.
it_item-jicg_perc = it_item-jicg_perc / 10.
it_item-jicg_amt = t_komm-kwert.
it_item-cgst_text = 'CGST'.
v_jicg = v_jicg + it_item-jicg_amt.
WHEN 'JISG' . "SGST.
it_item-jisg_perc = t_komm-kbetr.
it_item-jisg_perc = it_item-jisg_perc / 10.
it_item-jisg_amt = t_komm-kwert.
it_item-sgst_text = 'SGST'.
v_jisg = v_jisg + it_item-jisg_amt.
WHEN 'JIIG'. " IGST.
it_item-jiig_perc = t_komm-kbetr.
it_item-jiig_perc = it_item-jiig_perc / 10.
it_item-jiig_amt = t_komm-kwert.
it_item-igst_text = 'IGST'.
v_jiig = v_jiig + it_item-jiig_amt.
ENDCASE.
ENDLOOP.
CLEAR t_komm.
refresh t_komm.
* ENDLOOP.
*sort t_komm by stunr kposn.
* DELETE ADJACENT DUPLICATES FROM t_komm COMPARING stunr kposn .
LOOP AT t_komm.
READ TABLE ekpo1 WITH KEY ebelp = t_komm-kposn.
IF sy-subrc NE 0.
DELETE t_komm.
ENDIF.
ENDLOOP.
ENDFORM. " CALCULATE_TAX
*&---------------------------------------------------------------------*
*& Form CHECK_AUTHORIZATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_authorization .
DATA d_diff TYPE i.
DATA po_date TYPE d.
SELECT SINGLE * FROM zmmppp
INTO it_zmmppp
WHERE username = sy-uname.
APPEND it_zmmppp.
LOOP AT it_ekko.
po_date = it_ekko-bedat.
ENDLOOP.
CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
EXPORTING
i_datum_bis = sy-datum
i_datum_von = po_date
* I_KZ_EXCL_VON = '0'
* I_KZ_INCL_BIS = '0'
* I_KZ_ULT_BIS = ' '
* I_KZ_ULT_VON = ' '
* I_STGMETH = '0'
* I_SZBMETH = '1'
IMPORTING
e_tage = d_diff
* EXCEPTIONS
* DAYS_METHOD_NOT_DEFINED = 1
* OTHERS = 2
.
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 d_diff >= it_zmmppp-day_po AND it_zmmppp-day_po <> 0 .
MESSAGE 'Your Limit for Printing this PO is Over, Kindly Contact ABV.' TYPE 'E'.
ENDIF.
ENDFORM. " CHECK_AUTHORIZATION