How to Calculate Tax Amount of CGST & SGST or IGST In SAP ABAP

 Tax amount calculation using the basic value of the product and tax percentage of the product. Basic value means total quantity * per single product price. Tax percentage means, In India tax calculation purpose using GST. In GST is divided into 4 types of  categories CGST, SGST, IGST, UTGST or UGST. CGST means Central Goods and  Services Tax, SGST means State Goods and Services Tax, IGST means  Integrated Goods and Services Tax and UTGST or UGST means Union Territory Goods and Services Tax.

How-to-calculate-tax-amount-of-cgst-sgst-igst-in-sap-abap


In SAP and must companies are use only CGST,SGST and IGST because UTGST or UGST is use only rare cases. Calculate tax amount of CGST, SGST & IGST follow the simple example.

Example - 1

Purchase Order Number and Date to Calculate Tax Amount


Tables : EKKO,J_1BBRANCH.

TYPES: BEGIN OF TY_FINAL,
              EBELN TYPE EKKO-EBELN,
              BEDAT TYPE EKKO-BEDAT,
              MENGE TYPE EKPO-MENGE,
              MEINS TYPE EKPO-MEINS,
              NETPR TYPE EKPO-NETPR,
              NETWR TYPE EKPO-NETWR,
              CGST% TYPE KONP-KBETR,
              SGST% TYPE KONP-KBETR,
              IGST% TYPE KONP-KBETR,
              CGST_AMT TYPE EKPO-NETWR,
              SGST_AMT TYPE EKPO-NETWR,
              IGST_AMT TYPE EKPO-NETWR,
              FINAL_AMT TYPE EKPO-NETWR,
END OF TY_FINAL.

DATA: WA_FINAL TYPE TY_FINAL,
            IT_FINAL TYPE TABLE OF TY_FINAL,
            WA_FCAT TYPE SLIS_FIELDCAT_ALV,
            IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: SO_EBELN FOR EKKO-EBELN,
                                   SO_BEDAT FOR EKKO-BEDAT.
SELECTION-SCREEN END OF BLOCK B1.

SELECT
EBELN,
BEDAT
INTO TABLE @DATA(IT_EKKO) FROM EKKO
WHERE EBELN IN @SO_EBELN AND BEDAT IN @SO_BEDAT.

SELECT
EBELN,
EBELP,
MENGE,              " BSTMG- 300
MEINS,                " BSTME- KG
NETPR,                " BPREI- 20.00
NETWR,               "BWERT- 6,000.00
MWSKZ
INTO TABLE @DATA(IT_EKPO) FROM EKPO
FOR ALL ENTRIES IN @IT_EKKO
WHERE EBELN = @IT_EKKO-EBELN.

SELECT
KAPPL,
KSCHL,
ALAND,
MWSKZ                   ""Tax code
INTO TABLE @DATA(IT_A003) FROM A003
FOR ALL ENTRIES IN @IT_EKPO
WHERE KAPPL = 'TX' AND ALAND = 'IN'
AND MWSKZ = @IT_EKPO-MWSKZ.

IF SY-SUBRC = 0 .
SELECT
KOPOS,
KSCHL,
KBETR,
MWSK1
INTO TABLE @DATA(IT_KONP) FROM KONP
FOR ALL ENTRIES IN @IT_A003
WHERE MWSK1 = @IT_A003-MWSKZ.
ENDIF.

LOOP AT IT_EKPO INTO DATA(WA_EKPO).
WA_FINAL-MENGE = WA_EKPO-MENGE.
WA_FINAL-MEINS = WA_EKPO-MEINS.
WA_FINAL-NETPR = WA_EKPO-NETPR.
WA_FINAL-NETWR = WA_EKPO-NETWR.

READ TABLE IT_EKKO INTO DATA(WA_EKKO) WITH KEY EBELN = WA_EKPO-EBELN.
IF SY-SUBRC = 0 .
WA_FINAL-EBELN = WA_EKKO-EBELN.
WA_FINAL-BEDAT = WA_EKKO-BEDAT.
ENDIF.

READ TABLE IT_A003 INTO DATA(WA_A003) WITH KEY KAPPL = 'TX' ALAND = 'IN' MWSKZ = WA_EKPO-MWSKZ.
IF SY-SUBRC = 0 .
READ TABLE IT_KONP INTO DATA(WA_KONP) WITH KEY MWSK1 = WA_A003-MWSKZ KSCHL = 'JICG'.
IF SY-SUBRC = 0 .
WA_FINAL-CGST% = WA_KONP-KBETR / 10.         ""CGST Percentage
WA_FINAL-CGST_AMT = ( WA_EKPO-NETWR * WA_FINAL-CGST% ) / 100.   ""CGST Amount
ENDIF.
ENDIF.

READ TABLE IT_A003 INTO WA_A003 WITH KEY KAPPL = 'TX' ALAND = 'IN' MWSKZ = WA_EKPO-MWSKZ.
IF SY-SUBRC = 0 .
READ TABLE IT_KONP INTO WA_KONP WITH KEY MWSK1 = WA_A003-MWSKZ KSCHL = 'JISG'.
IF SY-SUBRC = 0 .
WA_FINAL-SGST% = WA_KONP-KBETR / 10.     ""SGST Percentage
WA_FINAL-SGST_AMT = ( WA_EKPO-NETWR * WA_FINAL-SGST% ) / 100.     ""SGST Amount
ENDIF.
ENDIF.

READ TABLE IT_A003 INTO WA_A003 WITH KEY KAPPL = 'TX' ALAND = 'IN' MWSKZ = WA_EKPO-MWSKZ.
IF SY-SUBRC = 0 .
READ TABLE IT_KONP INTO WA_KONP WITH KEY MWSK1 = WA_A003-MWSKZ KSCHL = 'JIIG'.
IF SY-SUBRC = 0 .
WA_FINAL-IGST% = WA_KONP-KBETR / 10.     ""IGST Percentage
WA_FINAL-IGST_AMT = ( WA_EKPO-NETWR * WA_FINAL-IGST% ) / 100.   ""IGST Amount
ENDIF.

WA_FINAL-FINAL_AMT = WA_EKPO-NETWR + WA_FINAL-CGST_AMT + WA_FINAL-SGST_AMT + WA_FINAL-IGST_AMT .

APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDIF.

ENDLOOP.

WA_FCAT-FIELDNAME = 'EBELN'.
WA_FCAT-COL_POS = '1'.
WA_FCAT-SELTEXT_M = 'ACCOUNTING DOC. NUMBER'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'BEDAT'.
WA_FCAT-COL_POS = '2'.
WA_FCAT-SELTEXT_M = 'Purchasing Document Date'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'MENGE'.
WA_FCAT-COL_POS = '3'.
WA_FCAT-SELTEXT_M = 'Purchase Order Quantity'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'MEINS'.
WA_FCAT-COL_POS = '4'.
WA_FCAT-SELTEXT_M = 'Purchase Order Unit of Measure'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'NETPR'.
WA_FCAT-COL_POS = '5'.
WA_FCAT-SELTEXT_M = 'Net Price in Purchasing Document'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'NETWR'.
WA_FCAT-COL_POS = '6'.
WA_FCAT-SELTEXT_M = 'Net Order Value in PO Currency'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'CGST%'.
WA_FCAT-COL_POS = '7'.
WA_FCAT-SELTEXT_M = 'CGST%'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'SGST%'.
WA_FCAT-COL_POS = '8'.
WA_FCAT-SELTEXT_M = 'SGST%'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-FIELDNAME = 'IGST%'.
WA_FCAT-COL_POS = '9'.
WA_FCAT-SELTEXT_M = 'IGST%'.
WA_FCAT-HOTSPOT = ABAP_TRUE.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IT_FIELDCAT = IT_FCAT

TABLES
T_OUTTAB = IT_FINAL

* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.

IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.


Post a Comment

2 Comments