You are on page 1of 17

Page 1 of 17

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

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 2 of 17

       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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 3 of 17

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[].

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 4 of 17

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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 5 of 17

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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 6 of 17

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 .

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 7 of 17

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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 8 of 17

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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 9 of 17

  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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 10 of 17

        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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 11 of 17

    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

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 12 of 17

          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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 13 of 17

*    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

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 14 of 17

       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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 15 of 17

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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 16 of 17

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.

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022


Page 17 of 17

        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

mhtml:file://D:\Backup\SF\Program Source Code\Smart Forms\Service PO\Service PO .... 09-12-2022

You might also like