0% found this document useful (0 votes)
806 views11 pages

ZSD Invoice

The document contains details for generating a transfer invoice report, including: - Header data like company name, request number, and date - Tables and fields to store line item, address, tax, and currency conversion data - Forms to retrieve and populate the data, validate selections, and call the report It defines the data structures and logic to gather invoice, product, tax, and address information needed to generate a transfer invoice document.

Uploaded by

jeffagadu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
806 views11 pages

ZSD Invoice

The document contains details for generating a transfer invoice report, including: - Header data like company name, request number, and date - Tables and fields to store line item, address, tax, and currency conversion data - Forms to retrieve and populate the data, validate selections, and call the report It defines the data structures and logic to gather invoice, product, tax, and address information needed to generate a transfer invoice document.

Uploaded by

jeffagadu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

** NAME :- MEHUL KISHOR BAZARIA

** COMPANY NAME :- YASH TECHNOLOGY PRIVATE LIMITED


** DESIGNATION :- SR. CONSULTANT
** REQUEST NUMBER :- NEDK900130( YASH SD :- TRANSFER INVOICE CHALLAN )
** DATE OF REPORT START :- 06.08.2015 / THURSDAY

REPORT zsd_service_invoice.

TABLES : vbrk,zsd_service_inv.

SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.


PARAMETERS : p_vkorg TYPE vbak-vkorg OBLIGATORY.
PARAMETERS : p_vbeln TYPE vbrk-vbeln OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK b1.

INITIALIZATION.

CONSTANTS : l_c_fieldname TYPE dfies-fieldname VALUE 'VBELN',


l_c_dynprofld TYPE help_info-dynprofld VALUE 'P_VBELN'.

DATA : pono TYPE vbkd-bstkd.


DATA : podt TYPE vbkd-bstdk.

** 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.

DATA : notes TYPE string.

DATA : curr TYPE bapicurr-bapicurr.

DATA : company_adrnr TYPE adrnr.

DATA : discp TYPE j_1ibedrat.


DATA : servt TYPE j_1ibedrat.
DATA : sbcp TYPE j_1ibedrat,
kkcp TYPE j_1ibedrat.
DATA: gst_plant TYPE char18,
gst_vend TYPE char18.
** Buyer If Other than Consignee (Sold To Party)
DATA : adrnrb TYPE adrnr.
DATA : sold_to_party TYPE vbrk-kunag.
DATA : wa_adrcb TYPE adrc. " Buyer Address
DATA : plant_stateb TYPE t005u-bezei. "STATE TEXT
DATA : countryb TYPE t005t-landx. "COUNTRY
** Buyer If Other than Consignee (Sold To Party)

** 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 : BEGIN OF inv_hlp2 OCCURS 0,


vbeln TYPE vbrk-vbeln,
werks TYPE vbrp-werks.
DATA : END OF inv_hlp2.

DATA : object(16).

DATA : BEGIN OF it_makt OCCURS 0,


matnr TYPE mara-matnr,
maktx TYPE makt-maktx.
DATA : END OF it_makt.

DATA : BEGIN OF istxh OCCURS 0.


INCLUDE : STRUCTURE stxh.
DATA : END OF istxh.
DATA : itf_text LIKE tline OCCURS 100 WITH HEADER LINE.
DATA : header LIKE thead.

DATA : unit TYPE vbrp-vrkme.


DATA : currency(6).

DATA : BEGIN OF it_konv OCCURS 0,


knumv TYPE konv-knumv,
kposn TYPE konv-kposn,
waers TYPE konv-waers,
kwert TYPE konv-kwert,
kawrt TYPE konv-kawrt,
kschl TYPE konv-kschl,
kbetr TYPE konv-kbetr.
DATA : END OF it_konv.

DATA : cinno(21).

DATA : payment_text TYPE string.


DATA : rate(18).

** DATE OF MANUFACTURER AND EXPIRY


DATA : BEGIN OF it_mch1 OCCURS 0,
matnr TYPE mch1-matnr,
charg TYPE mch1-charg,
hsdat TYPE mch1-hsdat,
vfdat TYPE mch1-vfdat.
DATA : END OF it_mch1.

** DATE OF MANUFACTURER AND EXPIRY

DATA : knumv TYPE vbrk-knumv.

DATA : fm_name TYPE rs38l_fnam.

DATA : disc TYPE netwr.


DATA : diff TYPE netwr.
TYPES :BEGIN OF ty_marc,
matnr TYPE matnr,
werks TYPE marc-werks,
steuc TYPE marc-steuc,
END OF ty_marc.

DATA: it_marc TYPE TABLE OF ty_marc,


wa_marc TYPE ty_marc,
gst_value TYPE char15,
gst_value1 TYPE char15,
gst_rate TYPE char10,
gst_rate1 TYPE char10.

DATA : it_final LIKE zsd_stk_trans_challan OCCURS 0 WITH HEADER LINE.

** LINE ITEM DATA FOR TRANSFER INVOICE


DATA : it_vbrp LIKE vbrp OCCURS 0 WITH HEADER LINE.
** LINE ITEM DATA FOR TRANSFER INVOICE

DATA : srno TYPE i.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vbeln.

SELECT * FROM vbrk INTO CORRESPONDING FIELDS OF TABLE inv_hlp WHERE fkart =
'ZSOF' OR
fkart =
'ZSEF' .

IF inv_hlp[] IS NOT INITIAL.


SELECT * FROM vbrp INTO CORRESPONDING FIELDS OF TABLE inv_hlp2 FOR ALL ENTRIES
IN inv_hlp WHERE vbeln EQ inv_hlp-vbeln.
ENDIF.
IF sy-subrc = 0.
LOOP AT inv_hlp.
CLEAR inv_hlp2.
READ TABLE inv_hlp2 WITH KEY vbeln = inv_hlp-vbeln.
IF sy-subrc = 0.
inv_hlp-werks = inv_hlp2-werks.
ENDIF.
MODIFY inv_hlp TRANSPORTING werks WHERE vbeln EQ inv_hlp-vbeln.
ENDLOOP.
ENDIF.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = l_c_fieldname
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = l_c_dynprofld
window_title = text-078
value_org = 'S'
callback_program = sy-cprog
TABLES
value_tab = inv_hlp
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
ENDIF.
** SELECTION SCREEN VALIDATION

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.

IF vbrk-fksto = 'X' AND vbrk-fkart = 'S1' OR vbrk-fkart = 'S2'.


MESSAGE e000(zyash_msg) WITH p_vbeln 'IS CANCELLED INVOICE'.
ENDIF.

START-OF-SELECTION.

PERFORM zget_data.

PERFORM zcall_form.

*&---------------------------------------------------------------------*
*& Form ZGET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM zget_data .

** LINE ITEM DATA CAPTURE


SELECT * FROM vbrp INTO CORRESPONDING FIELDS OF TABLE it_vbrp WHERE vbeln EQ
p_vbeln.
** LINE ITEM DATA CAPTURE

IF it_vbrp[] IS NOT INITIAL.


SELECT * FROM mch1 INTO CORRESPONDING FIELDS OF TABLE it_mch1 FOR ALL ENTRIES
IN it_vbrp WHERE matnr EQ it_vbrp-matnr AND

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 * FROM zsd_service_inv WHERE bukrs EQ vbrk-bukrs.


rate = zsd_service_inv-rate.
CONDENSE rate.
*CONCATENATE 'Payments to be made by DD/ Cheque drawn in favor' ZSD_SERVICE_INV-
FAVOUR
* 'Payable at Bangalore Interest @' RATE 'p.a. will be
charged for delayed based on actual days of delay'
* INTO PAYMENT_TEXT.

** GET ACTUAL ADDRESS IN WA_ADRCC.


SELECT SINGLE * FROM adrc INTO wa_adrcc WHERE addrnumber EQ adrnr.
SELECT SINGLE bezei INTO plant_state FROM t005u WHERE spras EQ 'EN' AND
land1 EQ wa_adrcc-country
AND
bland EQ wa_adrcc-region.
SELECT SINGLE landx INTO country FROM t005t WHERE spras EQ 'EN' AND
land1 = wa_adrcc-country.
** GET ACTUAL ADDRESS IN WA_ADRCC.
** TRANSFER DATA TO MAIN TABLE FINAL.
SELECT SINGLE j_1icstno j_1ilstno j_1ipanno j_1isern
INTO (j_1icstno,j_1ilstno,j_1ipanno,j_1isern) FROM
j_1imocomp WHERE bukrs EQ vbrk-bukrs AND werks EQ it_vbrp-werks.

SELECT SINGLE remark INTO cinno FROM adrct WHERE addrnumber EQ company_adrnr.

** Buyer Address (Other than Consignee) / SOld to Party


SELECT SINGLE adrnr INTO adrnrb FROM kna1 WHERE kunnr EQ sold_to_party.
SELECT SINGLE * FROM adrc INTO wa_adrcb WHERE addrnumber EQ adrnrb.
SELECT SINGLE bezei INTO plant_stateb FROM t005u WHERE spras EQ 'EN' AND
land1 EQ wa_adrcb-country
AND
bland EQ wa_adrcb-region.
SELECT SINGLE landx INTO countryb FROM t005t WHERE spras EQ 'EN' AND
land1 = wa_adrcb-country.

TRANSLATE wa_adrcc-name1 TO UPPER CASE.


TRANSLATE wa_adrcc-str_suppl1 TO UPPER CASE.
TRANSLATE wa_adrcc-str_suppl2 TO UPPER CASE.
TRANSLATE wa_adrcc-str_suppl3 TO UPPER CASE.
TRANSLATE wa_adrcc-location TO UPPER CASE.
TRANSLATE wa_adrcc-city1 TO UPPER CASE.
TRANSLATE plant_state TO UPPER CASE.
TRANSLATE wa_adrcc-region TO UPPER CASE.
TRANSLATE country TO UPPER CASE.

TRANSLATE wa_adrcb-name1 TO UPPER CASE.


TRANSLATE wa_adrcb-str_suppl1 TO UPPER CASE.
TRANSLATE wa_adrcb-str_suppl2 TO UPPER CASE.
TRANSLATE wa_adrcb-str_suppl3 TO UPPER CASE.
TRANSLATE wa_adrcb-location TO UPPER CASE.
TRANSLATE wa_adrcb-city1 TO UPPER CASE.
TRANSLATE plant_stateb TO UPPER CASE.
TRANSLATE wa_adrcb-region TO UPPER CASE.
TRANSLATE countryb TO UPPER CASE.

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.

CONCATENATE it_vbrp-vbeln it_vbrp-posnr INTO object.

SELECT * FROM stxh APPENDING CORRESPONDING FIELDS OF TABLE istxh


WHERE
tdobject = 'VBBP' AND
tdname = object.

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.

READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr


kschl = 'ZSBC'.
IF sy-subrc = 0.
IF sbcp IS INITIAL.
*BREAK NRPLDEVL.
sbcp = it_konv-kbetr / 10.
ENDIF.
it_final-sbc = it_konv-kwert.
ENDIF.

READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr


kschl = 'ZKKC'.
IF sy-subrc = 0.
IF kkcp IS INITIAL.
*BREAK NRPLDEVL.
kkcp = it_konv-kbetr / 10.
ENDIF.
it_final-kkc = it_konv-kwert.
ENDIF.
*BREAK-POINT.
READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr
kschl = 'ZCTD'.
IF sy-subrc = 0.
IF discp IS INITIAL.
discp = it_konv-kbetr / 10.
ENDIF.
disc = disc + it_konv-kwert.
it_final-discount = it_konv-kwert.
* it_final-discountp = '18.00'.
ENDIF.

READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr


kschl = 'DIFF'.
IF sy-subrc = 0.
diff = diff + it_konv-kwert.
ENDIF.

it_final-netwr = it_final-fkimg * it_final-netpr.


CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
EXPORTING
currency = vbrk-waerk
amount_internal = it_final-netpr
IMPORTING
amount_external = curr.

it_final-netpr = curr.

CLEAR curr.

CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'


EXPORTING
currency = vbrk-waerk
amount_internal = it_final-netwr
IMPORTING
amount_external = curr.

it_final-netwr = curr.

READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr


kschl = 'JOIG'.
IF sy-subrc = 0.
it_final-igst_rate = it_konv-kbetr / 10.
it_final-igst_val = it_konv-kwert.
gst_value = 'IGST Value'.
gst_rate = 'IGST %'.
gst_value1 = currency.
gst_rate1 = currency.
ENDIF.

READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr


kschl = 'JOCG'.
IF sy-subrc = 0.
it_final-cgst_rate = it_konv-kbetr / 10.
it_final-cgst_val = it_konv-kwert.
gst_value1 = 'CGST Value'.
gst_rate1 = 'CGST %'.
ENDIF.

READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr


kschl = 'JOSG'.
IF sy-subrc = 0.
it_final-igst_rate = it_konv-kbetr / 10.
it_final-igst_val = it_konv-kwert.
gst_value = 'SGST Value'.
gst_rate = 'SGST %'.
ENDIF.

READ TABLE it_konv WITH KEY kposn = it_vbrp-posnr


kschl = 'JOUG'.
IF sy-subrc = 0.
it_final-igst_rate = it_konv-kbetr / 10.
it_final-igst_val = it_konv-kwert.
gst_value = 'UGST Value'.
gst_rate = 'UGST %'.
gst_value1 = currency.
gst_rate1 = currency.
ENDIF.
it_final-discountp = it_final-netwr + it_final-discount.
APPEND it_final.
ENDLOOP.

** Standard Text to be Fetched

SELECT * FROM stxh APPENDING CORRESPONDING FIELDS OF TABLE istxh


WHERE
tdobject = 'VBBK' AND
tdname = p_vbeln.

IF sy-subrc = 0.
LOOP AT istxh.
PERFORM fetch_terms.
ENDLOOP.
ENDIF.

** Standard Text to be Fetched

ENDFORM.
*&---------------------------------------------------------------------*
*& Form ZCALL_FORM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM zcall_form .

disc = abs( disc ).


IF gst_value IS INITIAL AND gst_rate IS INITIAL.
gst_value = 'IGST Value'.
gst_rate = 'IGST %'.
gst_value1 = currency.
gst_rate1 = currency.
ENDIF.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'


EXPORTING
formname = 'ZSD_SERVICE_INVOICE1'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION fm_name


EXPORTING
p_vbeln = p_vbeln
IMPORTING
wa_adrcc = wa_adrcc
wa_adrcb = wa_adrcb
plant_state = plant_state
plant_stateb = plant_stateb
country = country
countryb = countryb
fkdat = fkdat
j_1icstno = j_1icstno
j_1ilstno = j_1ilstno
cinno = cinno
j_1isern = j_1isern
j_1ipanno = j_1ipanno
pono = pono
podt = podt
payment_text = payment_text
notes = notes
disc = disc
diff = diff
rate = rate
unit = unit
currency = currency
servt = servt
sbcp = sbcp
kkcp = kkcp
discp = discp
gst_plant = gst_plant
gst_vend = gst_vend
gst_value = gst_value
gst_value1 = gst_value1
gst_rate = gst_rate
gst_rate1 = gst_rate1
TABLES
it_final = it_final
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FETCH_TERMS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fetch_terms .

REFRESH itf_text.

CALL FUNCTION 'READ_TEXT'


EXPORTING
id = istxh-tdid
language = istxh-tdspras
name = istxh-tdname
object = istxh-tdobject
IMPORTING
header = header
TABLES
lines = itf_text
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
OTHERS = 8.

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.

You might also like