05-18-2006 7:18 AM
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.
05-18-2006 7:25 AM
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
05-18-2006 7:26 AM
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
05-18-2006 7:31 AM
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
05-18-2006 7:32 AM
HI
GOOD
TRY THIS FUNCTION MODULE
CONVERT_TO_LOCAL_CURRENCY Convert from foreign currency to local currency
THANKS
MRUTYUN
05-18-2006 7:34 AM
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.
05-18-2006 7:34 AM
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