Академический Документы
Профессиональный Документы
Культура Документы
method IF_EDOC_IN_MAP~FILL_SD_ITEM_GSTR1.
*This method will be called for each item of SD invoice
*When IV_SD_PROCESS Equals '0' or '1' or 3 -
B2B, B2C, Export invoice items
* Fill CS_ITEM
*When IV_SD_PROCESS equals '2' or '2A' or '2B' -
Credit note or Debit note or Refund Voucher
* Fill CS_CDN_ITEM
*When IV_SD_PROCESS equal '5' - Taxpaid or downpayment clearing
* Fill CS_TXPD_ITEM
* Below is the sample code for B2B, B2C, Export invoice items Similarly
you need to write the logic
* for remaining scenarios
*break abap01.
CASE is_sd_header-FKART .
WHEN 'ZEXP'.
IF iv_sd_process CA '013'.
CALL FUNCTION 'J_1IG_GET_HSN_SAC'
EXPORTING
im_matnr = is_sd_item-matnr
im_werks = is_sd_item-werks
* im_asnum = ls_sd_item-matnr
im_country = 'IN'
IMPORTING
ex_hsn_sac = cs_item-hsnsac.
* Goods or Service Indicator
IF cs_item-hsnsac IS NOT INITIAL.
CALL METHOD cl_edoc_map_in_utilities=>identify_good_or_servi
ce
EXPORTING
i_hsnsac = cs_item-hsnsac " HSN or SAC Code
IMPORTING
e_type = cs_item-
type. " Returns 'G' for Goods 'S' for Service
ENDIF.
* Item Description
cs_item-description = is_sd_item-arktx.
REPLACE ALL OCCURRENCES OF REGEX '[^[:alpha:]1234567890 ]' IN
cs_item-description WITH space.
* Item quantity & Unit Quantity Code
IF cs_item-type = 'G'. "Goods
cs_item-quantity = is_sd_item-fkimg.
CALL METHOD cl_edoc_map_in_utilities=>get_unit_quant_code
EXPORTING
iv_msehi = is_sd_item-meins
IMPORTING
ev_uqc = cs_item-uqc.
ENDIF.
ENDLOOP.
else.
LOOP AT is_sd_invoice-conditions_record INTO ls_komv
WHERE knumv EQ is_sd_header-knumv
AND kposn EQ is_sd_item-posnr
AND kstat eq space
AND kinak EQ space
AND koaid EQ 'D'.
ENDIF.
** * NR - Nil Rated, EX - Exempted, NG - Non GST
* SELECT SINGLE lfdnr INTO lv_lfdnr FROM tstl WHERE talnd = 'IN'
* AND tatyp = 'JOIG'.
* IF sy-subrc EQ 0.
* CONCATENATE 'TAXM' lv_lfdnr INTO lv_taxm.
* SELECT SINGLE (lv_taxm) FROM mlan INTO lv_tax_class
* WHERE matnr = is_sd_item-matnr
* AND aland = 'IN'.
* IF sy-subrc EQ 0.
* CASE lv_tax_class.
* WHEN '1'.
* cs_item-niltype = 'EX'.
* WHEN '2'.
* cs_item-niltype = 'NG'.
* WHEN '0'.
* IF cs_item-igstrate IS INITIAL
* AND cs_item-cgstrate IS INITIAL
* AND cs_item-sgstrate IS INITIAL.
* cs_item-niltype = 'NR'.
* ENDIF.
* ENDCASE.
*
* ENDIF.
* ENDIF.
ENDLOOP.
method IF_EDOC_IN_MAP~DETERMINE_MM_PROCESS_GSTR2.
if c_process is INITIAL.
c_process = '1'.
endif.
endmethod