ZSD Invoice
ZSD Invoice
REPORT zsd_service_invoice.
TABLES : vbrk,zsd_service_inv.
INITIALIZATION.
** COMPANY ADDRESS.
DATA : adrnr TYPE adrnr. " CAPTURE ADDRESS VARIABLE ADRNR FOR FETCHING ADDRESS
FROM TABLE.
DATA : wa_adrcc TYPE adrc. " COmpany Address
DATA : plant_state TYPE t005u-bezei. "STATE TEXT
DATA : country TYPE t005t-landx. "COUNTRY
DATA : fkdat TYPE vbrk-fkdat. " BILLING INVOICE NUMBER
DATA : j_1icstno TYPE j_1imocomp-j_1icstno."Our CST Number
DATA : j_1ilstno TYPE j_1imocomp-j_1ilstno."Our CST Number
DATA : j_1ipanno TYPE j_1imocomp-j_1ipanno."Our CST Number
DATA : j_1isern TYPE j_1imocomp-j_1isern."Our CST Number
** COMPANY ADDRESS.
** SEARCH HELP
DATA : BEGIN OF inv_hlp OCCURS 0,
vbeln TYPE vbrk-vbeln,
vkorg TYPE vbrk-vkorg,
fkart TYPE vbrk-fkart,
werks TYPE vbrp-werks.
DATA : END OF inv_hlp.
DATA : object(16).
DATA : cinno(21).
SELECT * FROM vbrk INTO CORRESPONDING FIELDS OF TABLE inv_hlp WHERE fkart =
'ZSOF' OR
fkart =
'ZSEF' .
AT SELECTION-SCREEN.
SELECT SINGLE * FROM vbrk WHERE vbeln EQ p_vbeln.
IF sy-subrc <> 0.
MESSAGE e000(zyash_msg) WITH 'INVALID BILLING INVOICE NUMBER :- ' p_vbeln.
ELSE.
IF vbrk-vkorg <> p_vkorg.
MESSAGE e000(zyash_msg) WITH p_vbeln 'INVOICE NOT IN SALES ORGANISATION '
p_vkorg.
ENDIF.
IF vbrk-fkart <> 'ZSOF' AND vbrk-fkart <> 'ZSEF'.
MESSAGE e000(zyash_msg) WITH p_vbeln 'IS NOT SERVICE INVOICE'.
ENDIF.
fkdat = vbrk-fkdat.
sold_to_party = vbrk-kunag.
knumv = vbrk-knumv.
currency = vbrk-waerk.
ENDIF.
CLEAR:gst_plant,gst_vend.
SELECT SINGLE gstin INTO gst_plant FROM j_1bbranch WHERE bukrs = vbrk-bukrs AND
branch = vbrk-bupla.
SELECT SINGLE stcd3 FROM kna1 INTO gst_vend WHERE kunnr = vbrk-kunag.
START-OF-SELECTION.
PERFORM zget_data.
PERFORM zcall_form.
*&---------------------------------------------------------------------*
*& Form ZGET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM zget_data .
charg EQ it_vbrp-charg.
SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE it_makt FOR ALL ENTRIES
IN it_vbrp WHERE matnr EQ it_vbrp-matnr.
REFRESH: it_marc[].
SELECT matnr werks steuc FROM marc INTO TABLE it_marc FOR ALL ENTRIES IN
it_vbrp WHERE matnr = it_vbrp-matnr AND werks = it_vbrp-werks.
ENDIF.
SELECT * FROM konv INTO CORRESPONDING FIELDS OF TABLE it_konv WHERE knumv =
knumv.
** READ ANY LINE ITEM FOR ADDRESS NUMBER OF PLANT / WE ARE READING INDEX 1.
READ TABLE it_vbrp INDEX 1.
unit = it_vbrp-vrkme.
*GET PLANT ADDRESSNUMBER FROM PLANT TABLE T001W
IF pono IS INITIAL.
SELECT SINGLE bstkd bstdk INTO (pono,podt) FROM vbkd WHERE vbeln EQ it_vbrp-
aubel.
ENDIF.
SELECT SINGLE adrnr INTO adrnr FROM t001w WHERE werks EQ it_vbrp-werks.
SELECT SINGLE adrnr INTO company_adrnr FROM t001 WHERE bukrs EQ vbrk-bukrs.
SELECT SINGLE remark INTO cinno FROM adrct WHERE addrnumber EQ company_adrnr.
SORT it_konv[].
DELETE it_konv[] WHERE kwert EQ '0.00'.
** Buyer Address (Other than Consignee) / SOld to Party
SORT it_marc.
LOOP AT it_vbrp.
IF sy-subrc = 0.
LOOP AT istxh.
PERFORM fetch_terms.
ENDLOOP.
ENDIF.
srno = srno + 1.
it_final-srno = srno.
it_final-vbeln = it_vbrp-vbeln.
it_final-posnr = it_vbrp-posnr.
it_final-vrkme = it_vbrp-vrkme.
it_final-fkimg = it_vbrp-fkimg.
it_final-matnr = it_vbrp-matnr.
it_final-ntgew = it_vbrp-ntgew.
it_final-brgew = it_vbrp-brgew.
it_final-kunnr = vbrk-kunrg.
it_final-spart = vbrk-spart.
READ TABLE it_mch1 WITH KEY matnr = it_vbrp-matnr
charg = it_vbrp-charg.
IF sy-subrc = 0.
it_final-mfg_date = it_mch1-hsdat.
it_final-exp_date = it_mch1-vfdat.
ENDIF.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = it_vbrp-matnr werks = it_vbrp-
werks.
IF sy-subrc = 0.
it_final-hsn_sac = wa_marc-steuc.
CLEAR: wa_marc.
ENDIF.
*READ TABLE IT_MAKT WITH KEY MATNR = IT_VBRP-MATNR.
*IF SY-SUBRC = 0.
it_final-maktx = it_vbrp-arktx.
*ENDIF.
* it_final-charg = it_vbrp-charg.
READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr
kschl = 'ZSVP'.
IF sy-subrc = 0.
it_final-netpr = it_konv-kbetr.
it_final-waerk = it_konv-waers.
ENDIF.
READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr
kschl = 'JSVD'.
IF sy-subrc = 0.
IF servt IS INITIAL.
servt = it_konv-kbetr / 10.
ENDIF.
it_final-addexc = it_konv-kwert.
ENDIF.
it_final-netpr = curr.
CLEAR curr.
it_final-netwr = curr.
IF sy-subrc = 0.
LOOP AT istxh.
PERFORM fetch_terms.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ZCALL_FORM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM zcall_form .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FETCH_TERMS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fetch_terms .
REFRESH itf_text.
LOOP AT itf_text.
IF istxh-tdid = 'V008'.
IF itf_text-tdline NE space.
CONCATENATE notes itf_text-tdline INTO notes.
ENDIF.
ENDIF.
IF istxh-tdid = 'Z003'.
IF itf_text-tdline NE space.
it_final-charg = itf_text-tdline.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.