Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ALV Total Problem

srajendran
Explorer
0 Kudos

Hi ,

Here we have the default currency in EURO.

In the first field when the values are in EURO we are getting the Total Sum of the Column.

But when we convert the EURO into INR with the exchange rate we are not getting the Total Sum of the Column.

Can u help or suggest us for this issue, else do we have any Function Module for this.

Thanks & Regds.

senthilkumar.

6 REPLIES 6

Former Member
0 Kudos

Hai Senthil

Check the following Code

&----


*& Report ZALV_TOTAL *

*& *

&----


*& *

*& *

&----


REPORT ZALV_TOTAL NO STANDARD PAGE HEADING

MESSAGE-ID ZZ.

*..Type Definitions for ALV Report

TYPE-POOLS SLIS.

----


  • Table Declarations. *

----


TABLES: MARA, "Material Master

MARC, "Plant Data for Material

MARD, "Storage Location Data for Material

VBAP, "Sales Document: Item Data

VBUP. "Sales Document: Item Status

----


----


  • Internal table to store sales orders.......

*.......................................................................

DATA: BEGIN OF IT_VBAP OCCURS 0,

VBELN LIKE VBAP-VBELN, "Sales Document

POSNR LIKE VBAP-POSNR, "Sales Document Item

KWMENG LIKE VBAP-KWMENG, "Cumulative order quantity in sales

" Units

END OF IT_VBAP.

*......................................................................

  • internal table to store final data

*----


DATA: BEGIN OF IT_FINAL OCCURS 0,

WERKS LIKE MARD-WERKS, "Plant

MATNR LIKE MARD-MATNR, "Material Number

LGORT LIKE MARD-LGORT, "Storage Location

LABST LIKE MARD-LABST, "Valuated stock with unrestricted use

INSME LIKE MARD-INSME, "Stock in quality inspection

RETME LIKE MARD-RETME, "Blocked Stock Returns

UMLME LIKE MARD-UMLME, "Stock in transfer

MAKTX LIKE MAKT-MAKTX, "Material description

VBELN LIKE VBAP-VBELN, "Sales Document

POSNR LIKE VBAP-POSNR, "Sales Document Item

KWMENG LIKE VBAP-KWMENG, "Cumulative order quantity in sales

" Units

END OF IT_FINAL.

----


  • ALV Type declaration *

----


*..Field Catalog for Basic List.

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

*..Events For Basic List.

DATA : IT_EVENTS TYPE SLIS_T_EVENT,

WA_EVENTS TYPE SLIS_ALV_EVENT.

*..Layout For Basic List

DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

*..Sort Table For Basic List

DATA: IT_SORT TYPE SLIS_SORTINFO_ALV OCCURS 0 WITH HEADER LINE.

----


  • DATA DECLARATIONS *

----


DATA: V_FLAG,

VINDEX TYPE SY-TABIX,

TOTAL TYPE VBAP-KWMENG. "Open order quantity

*..To Store Program Name

DATA: V_REPID TYPE SYREPID.

*..To know whether basic list contains any data

----


  • Selection Screen. *

----


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,

S_WERKS FOR MARC-WERKS,

S_LGORT FOR MARD-LGORT.

SELECTION-SCREEN END OF BLOCK B1.

----


  • Event:Initialization *

----


INITIALIZATION.

V_REPID = SY-REPID.

----


  • AT Selection Screen. *

----


AT SELECTION-SCREEN.

PERFORM VALIDATIONS.

----


  • Event: Start-of-Selection *

----


START-OF-SELECTION.

&----


  • To get data from vbap into internal table IT_VBAP

----


PERFORM FETCH_OPEN_DATA.

&----


  • To get data into final internal table IT_FINAL

----


IF V_FLAG = 'X'.

PERFORM FETCH_FINAL_DATA.

ENDIF.

IF V_FLAG = ''.

MESSAGE I010 WITH 'NO DATA TO BE DISPLAYED'.

EXIT.

ELSE.

  • --Setting the FIELD CATALOG for ALV

PERFORM FILL_FIELDCAT_HEADER.

*-----Setting the LAYOUT for ALV

PERFORM GET_LAYOUT.

*-----Getting the ALV Events

PERFORM GET_EVENT.

*---- To Sort the list

PERFORM DO_SORT.

ENDIF.

----


  • Event: End-of-Selection *

----


END-OF-SELECTION.

*--Generating the ALV LIST DISPLAY

PERFORM DISPLAY_LIST.

//////////////////////////////////////////////////////////////////////

*

  • FORM DEFINITIONS *

*//////////////////////////////////////////////////////////////////////

&----


*& Form VALIDATIONS

&----


  • To validate data in selection screen

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATIONS.

PERFORM VALIDATE_MATNR.

PERFORM VALIDATE_WERKS.

PERFORM VALIDATE_LGORT.

IF NOT ( ( MARA-MATNR IS INITIAL ) AND

( MARC-WERKS IS INITIAL ) AND

( MARD-LGORT IS INITIAL ) ).

SELECT SINGLE MATNR

WERKS

LGORT

FROM MARD

INTO (MARD-MATNR, MARD-WERKS, MARD-LGORT)

WHERE MATNR = MARA-MATNR

AND WERKS = MARC-WERKS

AND LGORT = MARD-LGORT.

ENDIF.

ENDFORM. " VALIDATIONS

&----


*& Form VALIDATE_MATNR

&----


  • To validate MATNR

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_MATNR.

IF NOT S_MATNR[] IS INITIAL.

SELECT MATNR

UP TO 1 ROWS

INTO (MARD-MATNR)

FROM MARA

WHERE MATNR IN S_MATNR.

ENDSELECT.

ENDIF.

IF SY-SUBRC NE 0.

MESSAGE E000 WITH TEXT-001.

ENDIF.

ENDFORM. " VALIDATE_MATNR

&----


*& Form VALIDATE_WERKS

&----


  • To validate plant

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_WERKS.

IF NOT S_WERKS[] IS INITIAL.

SELECT WERKS

UP TO 1 ROWS

INTO (MARD-WERKS)

FROM MARC

WHERE WERKS IN S_WERKS.

ENDSELECT.

ENDIF.

IF SY-SUBRC NE 0.

MESSAGE E000 WITH TEXT-002.

ENDIF.

ENDFORM. " VALIDATE_WERKS

&----


*& Form VALIDATE_LGORT

&----


  • To validate storage

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE_LGORT.

IF NOT S_LGORT[] IS INITIAL.

SELECT LGORT

UP TO 1 ROWS

INTO (MARD-LGORT)

FROM MARD

WHERE LGORT IN S_LGORT.

ENDSELECT.

ENDIF.

IF SY-SUBRC NE 0.

MESSAGE E000 WITH TEXT-003.

ENDIF.

ENDFORM. " VALIDATE_LGORT

&----


*& Form FETCH_OPEN_DATA

&----


  • To get data into internal table IT_VBAP

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_OPEN_DATA.

IF NOT ( ( MARA-MATNR IS INITIAL ) AND

( MARC-WERKS IS INITIAL ) AND

( MARD-LGORT IS INITIAL ) ).

SELECT VBELN

POSNR

KWMENG

INTO CORRESPONDING FIELDS OF TABLE IT_VBAP

FROM VBAP

WHERE MATNR IN S_MATNR

AND WERKS IN S_WERKS

AND LGORT IN S_LGORT.

ENDIF.

LOOP AT IT_VBAP.

SELECT * FROM VBUP

INTO VBUP

WHERE VBELN = IT_VBAP-VBELN

AND POSNR = IT_VBAP-POSNR

AND LFSTA NE 'C'.

ENDSELECT.

ENDLOOP.

IF SY-SUBRC NE 0.

REFRESH IT_VBAP.

MESSAGE E000 WITH TEXT-004.

EXIT.

ELSE.

V_FLAG = 'X'.

ENDIF.

&----


  • To get sum of all quantities as open order quantity

----


LOOP AT IT_VBAP.

TOTAL = TOTAL + IT_VBAP-KWMENG.

ENDLOOP.

ENDFORM. " FETCH_OPEN_DATA

&----


*& Form FETCH_FINAL_DATA

&----


  • To get data into final internal table IT_FINAL

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_FINAL_DATA.

SELECT A~MATNR

A~WERKS

A~LGORT

MAKTX

LABST

INSME

RETME

UMLME

VBELN

POSNR

KWMENG

INTO CORRESPONDING FIELDS OF TABLE IT_FINAL

FROM MARD AS A

INNER JOIN MAKT AS B

ON AMATNR = BMATNR

AND SPRAS = 'E'

INNER JOIN VBAP AS C

ON AMATNR = CMATNR

FOR ALL ENTRIES IN IT_VBAP

WHERE VBELN = IT_VBAP-VBELN

AND POSNR = IT_VBAP-POSNR

AND KWMENG = IT_VBAP-KWMENG

AND A~MATNR IN S_MATNR

AND A~WERKS IN S_WERKS

AND A~LGORT IN S_LGORT.

IF SY-SUBRC NE 0.

V_FLAG = SPACE.

MESSAGE E001 WITH 'No data found IN the selection criteria'.

EXIT.

ELSE.

V_FLAG = 'X'.

ENDIF.

ENDFORM. " FETCH_FINAL_DATA

&----


*& Form FILL_FIELDCAT_HEADER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILL_FIELDCAT_HEADER .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_FINAL'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = IT_FIELDCAT

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT IT_FIELDCAT INTO WA_FIELDCAT.

CASE WA_FIELDCAT-FIELDNAME.

WHEN 'KWMENG'.

  • WA_FIELDCAT-COL_POS = '11'.

  • WA_FIELDCAT-OUTPUTLEN = '22'.

  • WA_FIELDCAT-SELTEXT_L = 'Net Value'.

WA_FIELDCAT-DO_SUM = 'X'.

ENDCASE.

MODIFY IT_FIELDCAT FROM WA_FIELDCAT INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " FILL_FIELDCAT_HEADER

&----


*& Form GET_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_LAYOUT .

WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.

ENDFORM. " GET_LAYOUT

&----


*& Form GET_EVENT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_EVENT .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = IT_EVENTS

EXCEPTIONS

LIST_TYPE_WRONG = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT IT_EVENTS INTO WA_EVENTS.

CASE WA_EVENTS-NAME.

WHEN 'TOP_OF_PAGE'.

WA_EVENTS-FORM = 'FILL_LIST_HEADER'.

WHEN 'USER_COMMAND'.

WA_EVENTS-FORM = 'PROCESS_BASIC_LIST'.

ENDCASE.

MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " GET_EVENT

----


  • FORM FILL_LIST_HEADER *

----


  • ........ *

----


FORM FILL_LIST_HEADER.

WRITE:2'Report :' , SY-REPID,

: 85 ' Intelligroup Asia Pvt Ltd' CENTERED,

: 159 'Date :' ,SY-DATUM,

:/2'User :', SY-UNAME,

: 82 ' Hyderabad ' CENTERED ,

: 159 'Pg.No :' ,SY-PAGNO,

:/86 ' Stock Report ' CENTERED.

SKIP 2.

ENDFORM. "FILL_LIST_HEADER

&----


*& Form DISPLAY_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_LIST .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME =

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IT_SORT[]

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

IT_EVENTS = IT_EVENTS

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_FINAL

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DISPLAY_LIST

&----


*& Form do_sort

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DO_SORT .

*-- Populating the sort table

IT_SORT-FIELDNAME = 'MATNR'.

IT_SORT-TABNAME = 'IT_FINAL'.

IT_SORT-UP = 'X'.

  • it_sort-subtot = 'X'.

APPEND IT_SORT.

ENDFORM. " do_sort

Thanks & regards

Sreenivasulu P

Former Member
0 Kudos

Can you please send the ALV related code as well for this..

What may be the cause here is you might have not added INR field for summing up. Check that or else the actual code will help to investigate the problem further

Sandip

0 Kudos

hi,

following is my code,

TYPE-POOLS: SLIS.

TABLES : LIKP, " Delivery Head

LIPS, " Delivery Item

EKPO. " Purchasing Document Item

TYPES : BEGIN OF TP_DELIVERY,

VBELN LIKE LIKP-VBELN, "DELIVERY DOCUMENT NO.

POSNR LIKE LIPS-POSNR, "Delivery item

VGBEL LIKE LIPS-VGBEL, "Document number of the reference document (PO NO)

VGPOS LIKE LIPS-VGPOS, "Document number of the reference document

MATNR LIKE LIPS-MATNR, "Material Number

LFIMG LIKE LIPS-LFIMG, "Actual quantity delivered (in sales units)

VRKME LIKE LIPS-VRKME, "Sales unit

BLDAT LIKE LIKP-BLDAT, "Document Date in Document

END OF TP_DELIVERY.

DATA : IG_DELIVERY TYPE STANDARD TABLE OF TP_DELIVERY

WITH HEADER LINE INITIAL SIZE 100 WITH DEFAULT KEY.

TYPES : BEGIN OF TP_INBOUND,

VBELN LIKE LIKP-VBELN, "DELIVERY DOCUMENT NO.

BLDAT LIKE LIKP-BLDAT, "Document Date in Document

VGBEL LIKE LIPS-VGBEL, "Document number of the reference document (PO NO)

POSNR LIKE LIPS-POSNR, "Delivery item

MATNR LIKE LIPS-MATNR, "Material Number

LFIMG LIKE LIPS-LFIMG, "Actual quantity delivered (in sales units)

VRKME LIKE LIPS-VRKME, "Sales unit

NETPR LIKE EKPO-NETPR, "Net price in purchasing document (in document currency

BRTWR LIKE EKPO-BRTWR, "Gross order value in PO currency

VALUE_INR LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Value in INR

B_DUTY LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Basic duty

S_TOTAL1 LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Subtotal 1

CV_DUTY LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Counter Velling Duty

C_CVD LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Cess on CVD

S_TOTAL2 LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Subtotal2

C_DUTY LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Cess on all duties

S_TOTAL3 LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Subtotal3

A_DUTY LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Additional Duty on Imports

T_DUTY LIKE EKPO-NETWR, "TYPE P DECIMALS 2, " Total Duties payable

END OF TP_INBOUND.

DATA : IG_INBOUND TYPE STANDARD TABLE OF TP_INBOUND

WITH HEADER LINE INITIAL SIZE 100 WITH DEFAULT KEY.

TYPES : BEGIN OF TP_PURCHASE,

EBELN LIKE EKPO-EBELN, "Purchasing Document Number

EBELP LIKE EKPO-EBELP, "Item Number of Purchasing Document

MATNR LIKE EKPO-MATNR,

NETPR LIKE EKPO-NETPR, "Net price in purchasing document (in document currency

BRTWR LIKE EKPO-BRTWR, "Gross order value in PO currency

END OF TP_PURCHASE.

DATA : IG_PUCHASE TYPE STANDARD TABLE OF TP_PURCHASE

WITH HEADER LINE INITIAL SIZE 100 WITH DEFAULT KEY.

DATA: IG_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WG_FIELDCAT_LN LIKE LINE OF IG_FIELDCAT,

IG_SORTCAT TYPE SLIS_T_SORTINFO_ALV,

WG_SORTCAT_LN LIKE LINE OF IG_SORTCAT,

IG_EVENTCAT TYPE SLIS_T_EVENT,

WG_EVENTCAT_LN LIKE LINE OF IG_EVENTCAT,

IG_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA : G_COL_POS TYPE I,

G_COL TYPE I,

G_KEY, G_NOKEY, G_SUM, G_NOSUM .

SELECTION-SCREEN : BEGIN OF BLOCK BLOCK1 WITH FRAME.

SELECT-OPTIONS : S_VBELN FOR LIKP-VBELN ,

S_BLDAT FOR LIKP-BLDAT .

PARAMETERS : P_B_DUTY LIKE EKPO-NETWR, "TYPE N LENGTH 2 OBLIGATORY,

P_CV_DUT LIKE EKPO-NETWR, "TYPE N LENGTH 2 OBLIGATORY,

P_C_CVD LIKE EKPO-NETWR, "TYPE N LENGTH 2 OBLIGATORY,

P_C_TOT LIKE EKPO-NETWR, "TYPE N LENGTH 2 OBLIGATORY,

P_A_DUTY LIKE EKPO-NETWR, "TYPE N LENGTH 2 OBLIGATORY,

P_E_RATE LIKE EKPO-NETWR. "TYPE N LENGTH 2 OBLIGATORY.

SELECTION-SCREEN : END OF BLOCK BLOCK1.

AT SELECTION-SCREEN ON S_VBELN.

SELECT SINGLE * FROM LIKP WHERE VBELN IN S_VBELN AND BLDAT IN S_BLDAT.

IF SY-SUBRC <> 0.

MESSAGE W000(ZIN01_FI).

ENDIF.

AT SELECTION-SCREEN.

START-OF-SELECTION.

SELECT A~VBELN B~POSNR B~VGBEL B~MATNR B~LFIMG B~VRKME A~BLDAT FROM LIKP AS A INNER JOIN

LIPS AS B ON A~VBELN = B~VBELN

INTO CORRESPONDING FIELDS OF TABLE IG_DELIVERY

WHERE A~VBELN IN S_VBELN AND

A~BLDAT IN S_BLDAT.

IF SY-SUBRC <> 0.

  • MESSAGE E001(ZIN01_FI).

EXIT.

ELSE.

SELECT EBELN EBELP MATNR NETPR BRTWR FROM EKPO INTO CORRESPONDING FIELDS OF TABLE IG_PUCHASE

FOR ALL ENTRIES IN IG_DELIVERY

WHERE EBELN = IG_DELIVERY-VGBEL .

ENDIF.

LOOP AT IG_DELIVERY.

IG_INBOUND-VBELN = IG_DELIVERY-VBELN.

IG_INBOUND-POSNR = IG_DELIVERY-POSNR.

IG_INBOUND-VGBEL = IG_DELIVERY-VGBEL.

IG_INBOUND-MATNR = IG_DELIVERY-MATNR.

IG_INBOUND-LFIMG = IG_DELIVERY-LFIMG.

IG_INBOUND-VRKME = IG_DELIVERY-VRKME.

IG_INBOUND-BLDAT = IG_DELIVERY-BLDAT.

READ TABLE IG_PUCHASE WITH KEY EBELN = IG_DELIVERY-VGBEL MATNR = IG_DELIVERY-MATNR.

IF SY-SUBRC = 0.

IG_INBOUND-NETPR = IG_PUCHASE-NETPR.

IG_INBOUND-BRTWR = IG_PUCHASE-NETPR * IG_DELIVERY-LFIMG. " ( QTY * PRICE)

ENDIF.

IG_INBOUND-VALUE_INR = ( IG_INBOUND-BRTWR * P_E_RATE ) CURR1ENCY 'INR'.

IG_INBOUND-B_DUTY = ( IG_INBOUND-VALUE_INR * P_B_DUTY / 100 ).

IG_INBOUND-S_TOTAL1 = ( IG_INBOUND-VALUE_INR + IG_INBOUND-B_DUTY ).

IG_INBOUND-CV_DUTY = ( IG_INBOUND-S_TOTAL1 * P_CV_DUT / 100 ).

IG_INBOUND-C_CVD = ( IG_INBOUND-CV_DUTY * P_C_CVD / 100 ).

IG_INBOUND-S_TOTAL2 = ( IG_INBOUND-B_DUTY + IG_INBOUND-CV_DUTY + IG_INBOUND-C_CVD ).

IG_INBOUND-C_DUTY = ( IG_INBOUND-S_TOTAL2 * P_C_TOT / 100 ).

IG_INBOUND-S_TOTAL3 = ( IG_INBOUND-S_TOTAL2 + IG_INBOUND-C_DUTY + IG_INBOUND-VALUE_INR ).

IG_INBOUND-A_DUTY = ( IG_INBOUND-S_TOTAL3 * P_A_DUTY / 100 ).

IG_INBOUND-T_DUTY = ( IG_INBOUND-B_DUTY + IG_INBOUND-CV_DUTY + IG_INBOUND-C_CVD + IG_INBOUND-C_DUTY + IG_INBOUND-A_DUTY ).

APPEND IG_INBOUND.

CLEAR : IG_INBOUND, IG_DELIVERY, IG_PUCHASE.

CLEAR : IG_INBOUND-VALUE_INR, IG_INBOUND-B_DUTY, IG_INBOUND-S_TOTAL1, IG_INBOUND-CV_DUTY, IG_INBOUND-C_CVD, IG_INBOUND-S_TOTAL2,

IG_INBOUND-C_DUTY, IG_INBOUND-S_TOTAL3, IG_INBOUND-A_DUTY, IG_INBOUND-T_DUTY.

ENDLOOP.

FREE : IG_DELIVERY, IG_PUCHASE.

G_KEY = 'X'.

G_NOKEY = SPACE.

G_SUM = 'X'.

G_NOSUM = SPACE.

PERFORM BUILD_FIELDCAT USING 'VBELN' G_NOKEY G_NOSUM.

PERFORM BUILD_FIELDCAT USING 'BLDAT' G_NOKEY G_NOSUM.

PERFORM BUILD_FIELDCAT USING 'VGBEL' G_NOKEY G_NOSUM.

PERFORM BUILD_FIELDCAT USING 'POSNR' G_NOKEY G_NOSUM.

PERFORM BUILD_FIELDCAT USING 'MATNR' G_NOKEY G_NOSUM..

PERFORM BUILD_FIELDCAT USING 'LFIMG' G_NOKEY G_NOSUM.

PERFORM BUILD_FIELDCAT USING 'VRKME' G_NOKEY G_NOSUM.

PERFORM BUILD_FIELDCAT USING 'NETPR' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'BRTWR' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'VALUE_INR' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'B_DUTY' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'S_TOTAL1' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'CV_DUTY' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'C_CVD' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'S_TOTAL2' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'C_DUTY' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'S_TOTAL3' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'A_DUTY' G_NOKEY G_SUM.

PERFORM BUILD_FIELDCAT USING 'T_DUTY' G_NOKEY G_SUM.

*PERFORM BUILD_FIELDCAT_TEST.

LOOP AT IG_FIELDCAT INTO WG_FIELDCAT_LN.

CASE WG_FIELDCAT_LN-FIELDNAME.

WHEN 'VBELN'.

WG_FIELDCAT_LN-SELTEXT_M = 'Inbound Delivery No'.

WHEN 'BLDAT'.

WG_FIELDCAT_LN-SELTEXT_M = 'Date'.

WHEN 'VGBEL'.

WG_FIELDCAT_LN-SELTEXT_M = 'P Order No'.

WHEN 'POSNR'.

WG_FIELDCAT_LN-SELTEXT_M = 'S No'.

WHEN 'MATNR'.

WG_FIELDCAT_LN-SELTEXT_M = 'Material No'.

WHEN 'LFIMG'.

WG_FIELDCAT_LN-SELTEXT_M = 'Qty'.

WHEN 'VRKME'.

WG_FIELDCAT_LN-SELTEXT_M = 'UoM'.

WHEN 'NETPR'.

WG_FIELDCAT_LN-SELTEXT_M = 'Gr Price in PO CUR'.

WHEN 'BRTWR'.

WG_FIELDCAT_LN-SELTEXT_M = 'Value in PO CUR'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'VALUE_INR'.

WG_FIELDCAT_LN-SELTEXT_M = 'Value in INR'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'B_DUTY'.

WG_FIELDCAT_LN-SELTEXT_M = 'Basic Duty'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'S_TOTAL1'.

WG_FIELDCAT_LN-SELTEXT_M = 'Sub Total- 1 '.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'CV_DUTY'.

WG_FIELDCAT_LN-SELTEXT_M = 'CV Duty'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WG_FIELDCAT_LN-CFIELDNAME = 'WAERK' .

WHEN 'C_CVD'.

WG_FIELDCAT_LN-SELTEXT_M = 'Cess on CVD'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'S_TOTAL2'.

WG_FIELDCAT_LN-SELTEXT_M = 'Sub Total- 2 '.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'C_DUTY'.

WG_FIELDCAT_LN-SELTEXT_M = 'Cess on All Duties'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'S_TOTAL3'.

WG_FIELDCAT_LN-SELTEXT_M = 'Sub Total- 3 '.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'A_DUTY'.

WG_FIELDCAT_LN-SELTEXT_M = 'Additional Duty on Imp'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

WHEN 'T_DUTY'.

WG_FIELDCAT_LN-SELTEXT_M = 'Total Duties Payable'.

WG_FIELDCAT_LN-REF_TABNAME = 'EKPO'.

WG_FIELDCAT_LN-CURRENCY = 'INR'.

ENDCASE.

MODIFY IG_FIELDCAT FROM WG_FIELDCAT_LN TRANSPORTING SELTEXT_M REF_TABNAME CURRENCY CFIELDNAME.

ENDLOOP.

*

PERFORM BUILD_LAYOUT.

PERFORM BUILD_SORTCAT USING 'VBELN'.

PERFORM BUILD_SORTCAT USING 'VGBEL'.

PERFORM BUILD_SORTCAT USING 'POSNR'.

PERFORM BUILD_DISPLAY.

&----


*& Form DISPLAY

&----


  • text

----


FORM BUILD_DISPLAY.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME =

IS_LAYOUT = IG_LAYOUT

IT_FIELDCAT = IG_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IG_SORTCAT

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IG_INBOUND

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. "DISPLAY

&----


*& Form BUILD_FIELDCAT

&----


  • text

----


  • -->G_FIELDNAME text

  • -->L_KEY text

  • -->L_SUM text

----


FORM BUILD_FIELDCAT USING L_FIELDNAME LIKE DD03L-FIELDNAME L_KEY TYPE C L_SUM TYPE C.

CLEAR WG_FIELDCAT_LN.

ADD 1 TO G_COL_POS.

WG_FIELDCAT_LN-REF_TABNAME = IG_INBOUND.

WG_FIELDCAT_LN-FIELDNAME = L_FIELDNAME.

WG_FIELDCAT_LN-KEY = L_KEY.

WG_FIELDCAT_LN-DO_SUM = L_SUM.

WG_FIELDCAT_LN-COL_POS = G_COL_POS.

WG_FIELDCAT_LN-NO_OUT = SPACE.

WG_FIELDCAT_LN-QFIELDNAME = SPACE.

WG_FIELDCAT_LN-HOTSPOT = SPACE.

APPEND WG_FIELDCAT_LN TO IG_FIELDCAT.

ENDFORM. "BUILD_FIELDCAT

&----


*& Form BUILD_LAYOUT

&----


  • text

----


FORM BUILD_LAYOUT.

IG_LAYOUT-TOTALS_TEXT = 'Total Amount'.

IG_LAYOUT-SUBTOTALS_TEXT = 'SUB TOTAL'.

IG_LAYOUT-ZEBRA = 'X'.

ENDFORM. "BUILD_LAYOUT

&----


*& Form BUILD_SORTCAT

&----


  • text

----


  • -->L_FIELDNAME text

----


FORM BUILD_SORTCAT USING L_FIELDNAME ..

CLEAR WG_SORTCAT_LN.

ADD 1 TO G_COL.

WG_SORTCAT_LN-SPOS = G_COL.

WG_SORTCAT_LN-FIELDNAME = L_FIELDNAME.

WG_SORTCAT_LN-TABNAME = IG_INBOUND.

WG_SORTCAT_LN-UP = 'X'.

WG_SORTCAT_LN-DOWN = SPACE.

WG_SORTCAT_LN-SUBTOT = 'X'.

APPEND WG_SORTCAT_LN TO IG_SORTCAT.

ENDFORM. "BUILD_SORTCAT

Former Member
0 Kudos

HI

GOOD

TRY THIS FUNCTION MODULE

CONVERT_TO_LOCAL_CURRENCY Convert from foreign currency to local currency

THANKS

MRUTYUN

Former Member
0 Kudos

Hi,

Can you plz tell me How you are maintaining the Currency convection and what is data type of the field your passing the converted Currency.

former_member188685
Active Contributor
0 Kudos

Hi,

what is the Problem, you get the exchange rate ,based on exchange rate find the EURO to INR value and then show those values, i am sure you will get the totals for the currency. but try to provide the cfieldname = 'WAERK' in fieldcat for the currency field.

and also have a field in your itab with currecncy field of type <b>WAERK</b>, you populate this field with INR, after converting your currency to INR from EURO.

check this sample code...

REPORT  ZTEST_ALV.

*---------------------------------------------------------------------*
* This program lists orders (VBAK) with sort and sub-total for        *
* 'sold-to-party' (KUNNR) and 'Sales organization' (VKORG)            *
*---------------------------------------------------------------------*

TABLES : vbak.

TYPE-POOLS: slis.                      " ALV Global types

SELECT-OPTIONS :
  s_vkorg FOR vbak-vkorg,              " Sales organization
  s_kunnr FOR vbak-kunnr,              " Sold-to party
  s_vbeln FOR vbak-vbeln.              " Sales document

SELECTION-SCREEN :
  SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv,
    lt_sort     TYPE slis_t_sortinfo_alv,
    ls_sort     TYPE slis_sortinfo_alv,
    ls_layout   TYPE slis_layout_alv.
DATA:
  BEGIN OF gt_vbak OCCURS 0,
    vkorg LIKE vbak-vkorg,             " Sales organization
    kunnr LIKE vbak-kunnr,             " Sold-to party
    vbeln LIKE vbak-vbeln,             " Sales document
    netwr LIKE vbak-netwr,             " Net Value of the Sales Order
    waerk LIKE vbak-waerk,             " Document currency
  END OF gt_vbak.
types:
  BEGIN OF t_vbak,
    vkorg LIKE vbak-vkorg,             " Sales organization
    kunnr LIKE vbak-kunnr,             " Sold-to party
    vbeln LIKE vbak-vbeln,             " Sales document
    netwr LIKE vbak-netwr,             " Net Value of the Sales Order
    waerk LIKE vbak-waerk,             " Document currency
  END OF t_vbak.
  DATA: IT_VBAK TYPE T_VBAK OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = sy-repid
   I_INTERNAL_TABNAME             = 'IT_VBAK'
   I_INCLNAME                   = SY-REPID
  CHANGING
    CT_FIELDCAT                = lt_fieldcat
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .
IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = SY-REPID
   I_INTERNAL_TABNAME           = 'GT_VBAK'
   I_INCLNAME                   = SY-REPID

  CHANGING
    CT_FIELDCAT                  = lt_fieldcat
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .
IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*---------------------------------------------------------------------*
INITIALIZATION.

  v_1 = 'Maximum of records to read'.

*---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM f_read_data.

  PERFORM f_display_data.

*---------------------------------------------------------------------*
*      Form  f_read_data
*---------------------------------------------------------------------*
FORM f_read_data.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
           FROM vbak
             UP TO p_max ROWS
          WHERE kunnr IN s_kunnr
            AND vbeln IN s_vbeln
            AND vkorg IN s_vkorg.

ENDFORM.                               " F_READ_DATA
*---------------------------------------------------------------------*
*      Form  f_display_data
*---------------------------------------------------------------------*
FORM f_display_data.

  DEFINE m_fieldcat.
    add 1 to ls_fieldcat-col_pos.
    ls_fieldcat-fieldname   = &1.
    ls_fieldcat-ref_tabname = 'VBAK'.
    ls_fieldcat-do_sum      = &2.
    ls_fieldcat-cfieldname  = &3.
    append ls_fieldcat to lt_fieldcat.
  END-OF-DEFINITION.

  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &1.
    ls_sort-up        = 'X'.
    ls_sort-subtot    = &2.
    ls_sort-group     = '*'.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv,
    lt_sort     TYPE slis_t_sortinfo_alv,
    ls_sort     TYPE slis_sortinfo_alv,
    ls_layout   TYPE slis_layout_alv.

  m_fieldcat 'VKORG' ''  ''.
  m_fieldcat 'KUNNR' ''  ''.
  m_fieldcat 'VBELN' ''  ''.
  m_fieldcat 'NETWR' 'C' 'WAERK'.
  m_fieldcat 'WAERK' ''  ''.

  m_sort 'VKORG' 'X'.                  " Sort by vkorg and subtotal
  m_sort 'KUNNR' 'X'.                  " Sort by kunnr and subtotal
  m_sort 'VBELN' ''.                   " Sort by vbeln

*  ls_layout-cell_merge = 'X'.
  LS_LAYOUT-WINDOW_TITLEBAR = 'test window'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            is_layout   = ls_layout
            it_fieldcat = lt_fieldcat
            it_sort     = lt_sort
       TABLES
            t_outtab    = gt_vbak.

ENDFORM.                               " F_DISPLAY_DATA

Regards

vijay