WTF Solution

How to Calculate the Tax Amount In SAP ABAP ( Ex- CGST & SGST or IGST ) 2025

Calculate the tax amount in SAP ABAP using the basic value of the product and the tax percentage of the product. Basic value ( total quantity * per product price).

Tax percentage (As per GST, 5% or 12% or 18% or 28%, etc.). GST is used in India for tax calculation. the GST is divided into 4 types of categories CGST, SGST, IGST, UTGST, or UGST. CGST ( Central Goods and  Services Tax ) , SGST ( State Goods and Services Tax ), IGST ( Integrated Goods and Services Tax), and UTGST or UGST ( Union Territory Goods and Services Tax).

In SAP ABAP 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 the Tax Amount in SAP ABAP

Tables : EKKO,J_1BBRANCH.

**** Table Type Declaration

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.

**** Workarea and Internal Table Declaration

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 Creation

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 Query Start

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 Start from Item Table

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.

**** Create field catalog for display the output

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.

Explanation:

Here we calculate the tax amount of the purchase order. we created one table type and using that we created a workarea and internal table. Create a selection screen and take the user input. Based on the user input, get the data from the database using a select query. Looping the internal table passes the final data to the final internal table. Create the catalog for displaying the structure way output. Using the REUSE_ALV_GRID_DISPLAY function module to get the data from the final internal table and display the data to the output screen.

Read More Related to SAP ABAP

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to Top