TCURX
Hi,
i having a prblem.
i received the data from data source on the psa, it is show change currency like 2600 on the source system, 26.00shows on psa,
i changed the decimal in the TCURX table 0 to 2 for 2 perticular currencies in the bw and laod the in to the psa, for that 2 currencies it is show 2600.00.
Please some one explane me, what logic works there,
there is 1:1 mapping b/w source system and bw.
Thanks
Hi Rob,
Could you check first to the TCURF table ??
It's coming because the ratio ..
So you need to check regarding that in that table.
There are many posting thread regarding that, you check over it ..
Here are the link & notes you can make as an reference :
Notes: 153707
WHY only JPY currency is incorrect on report
Hope it can helps you a lot.
Regards,
Niel.
Similar Messages
-
Exception currencies TCURX table, R3 - BW loading issue
Hello Friends,
I am facing issue in report values for amount in local currency key field. Its value not matching with R3 values. Decimal places are shifted in report.
We are on BI7 (RSDS data source).
There is data coming from R3 into one DSO from different different data sources (Sales, Billing, Purchasing etc) and then getting loaded to cube for reporting.
Few data sources are standard like LIS and few are Z data sources.
This issue must be related to exception currencies maintained in TCURX table. Becauase we are getting issues only for those currencies.
For Ex: See R3 and report value is different.
R3 value:71.230,00 KWD
Cube value:71.230,00 KWD
Report value: 7.123,000 KWD
BW report is showing discrepancy for KWD, CLP (TCURX) currencies for Actual amount in LC key figure.
Can you please explain how to handle fix here?
I have heard that the ECC to BW the respective customization needs to be considered into account in the source system itself.
So can we ask our R3 team to fix this issue for exceptional currencies on R3 side. And any particular information that we will have to share with R3 team to get this corrected?
Please share your inputs on this.
Thank You.Hi P.K,
We too have faced same issue in last project, we followed some procedure as I attached below.
Please go through the attached document and understand.
Issue description: SAP stores all Amount values of different currencies with a fixed interpretation of having two decimal places. There are few exceptions to this rule for the currencies which has no meaning for the decimal places like 'Chilean Peso', Japanese Yen, South Korean Won, Paraguayan Guarani and many other currencies which we talk in the below sections. For few Currencies the fractions are needs to be stored more than 2 decimals due to the currency values and this document describes the procedures that needs to be followed to have the right reporting.
Analysis provided: Kenya Sales KPI’s values display by multiple of 100.
This document describes the procedure to handle the currencies which has the decimal places other than 2 in the table TCURX.
About TCURX table:
Currencies which do not have two decimal places must be defined in table TCURX (decimal places for currency codes). The table determines the number of decimal places in the output according to the currency key. If the contents of currency exist in table TCURX as currency key CURRKEY, the system sets the number of decimal places according to the entry for the field CURRDEC in TCURX. You can maintain this table via the R/3 Implementation Guide (Global Settings -> Currencies, Transaction OY04).
If a currency is not defined in Table TCURX (decimal places for currency codes), this currency is regarded as currency with two decimal places.
Impact of TCURX in BW on data:
Currently in my present system the following currencies were listed in the TCURX Table:
Details of the Currencies
In the above table some of the Currencies are obsolete.
Data load from Source to BW:
In the Source I have the data like below:
For one of the company the total net Sales is present as 675772,43 CLP (Chilean Peso) in the source system for the period Jan’12.
When the data is loaded into BW:
The data in the Source and in the Cube is matching each other.
Data reported in the query looks like below:
The data in the query gets multiplied by 100 which results in 67577243.00 CLP this is due to the fact that when we execute the query, the query looks at the possible entry of the the currency in the table TCURX. If the entry is available as 0, then it will multiply by 100 as normally as per SAP, all Currencies are stored with two decimal places.
Corrective measures / steps which user should take before raising an issue:
This behavior is due to the fact that the Query always looks at the TCURX table while execution and if there is an entry in TCURX then it will be considered as below:
[Amount Value] * [10 ** (2- (CURRDEC entry in TCURX table))]
In present case as the entry is marked as 0 in TCURX table the result will be like below:
= Amount*10**(2-0) = Amount*10**2 = Amount * 100
This will be corrected as below:
All amount related entries at the data source level should be marked to ‘External Format’.
Earlier the same was like below with the internal format.
In 3.x we have the option to choose the same at the infopackage level with 'Currency Conversion for External Systems':
The above change in the data source will provide the below results:
During data loads: When we load the data into BW having amount fields in it, it checks the TCURX table for the currency entry. If the currency entry is present in TCURX table, it divides the amount value by 10** (2- (CURRDEC entry in TCURX table)).
Query Output: The exactly reverse happens while displaying such values in the report output. The amount value will be multiplied by 10** (2- (CURRDEC entry in TCURX table)) while displaying in the report output.
One of below example shows the results as below from the flat file when the format is changed to External.
From Flat file: Sample content from Flat file
In the Cube: Output from the Cube for the same entry
Values are divided by 100 as for Currency IDR the entry is marked as ‘ZERO’ in TCURX table for number of Decimal places.
In the Query: Out of the Query looks like below:
Values the source value matches with the target value where the values of the cube get multiplied by 100.
Points to be noted: This procedure is only with the amounts having CURR data type.
If the amounts are used as FLTP type then this issue can also be avoided.
All the currencies having entry other than 2 in the field CURRDEC of table TCURX will be affected by this phenomenon.
The division will be carried out at the time of loading while multiplication will be carried out at the time of report output display.
Mainly this needs to be considered when dealing with the Flat file data loads which holds the currencies and for the ECC to BW the respective customization needs to be considered into account in the source system side.
Regards,
Vijay -
Changing Decimal places in table TCURX
Hi There
We have a business requirement to change the decimal places in table TCURX from 3 Decimals to 5 Decimal places. No previous postings have been made in foreign currencies.
If no transaction data has been posted in foreign currencies yet, will this have an impact?
What will the impact be?
RegardsHi,
Refer to this SAP text:
In the R/3 System tables currency fields are stored as decimal figures with a variable number of decimal places. The decimal point is not stored in the field in the database. Instead, each currency field refers to a currency key field. In this transaction you assign the number of decimal places to this currency key uniquely. Example: If you have set currency USD to have two decimal places and you post an amount of 100 USD, an amount of 10000 USD is stored in the currency field in the database. Not until this
amount is processed further or is output does the system use the currency key from the reference field to determine the number of decimal places via this table. In this way the table content can be interpreted correctly for further processing or formatted for output with the correct punctuation. If after posting you changed the number of decimal places for USD, for example, to 3, the existing field content of 10000 would be interpreted for futher processing or output as 10 USD (10.000). This would mean that the contents of tables across the system would, for all currency fields containing an amount in USD,
be interpreted incorrectly by 10 per cent. To change the number of decimal places for a currency already in use, you must convert all the tables in the R/3 System that contain currency fields, so that the data integrity remains. This cannot, however, for both organizational reasons and under the runtime
aspect be carried out in a productive system. The following changes to the TCURX table can
thus lead to the loss of data integrity if you make the changes in a productive system or transport them into a productive system:
o Change to the number of decimal places of an existing currency
o Deletion of an entry from the TCURX table (corresponds to changing the decimal places to the standard value of two decimal places)
o Insertion of an entry in the TCURX (corresponds to changing the standard value of
2 decimal places to a different value), if this is a currency code that already exists
Uncritical changes are any made to this table during the Customizing of a new installation or the insertion of TCURX even during operations, if the currency codes have just been entered in the TCURC table using transaction OY03, signifying that no postings to these currency codes can have been carried out yet.
Regards,
Eli -
Problem in SAP Query with currency conversion based on table TCURX
Hi All,
I have an infoset where tables A903 and KONP are joined . Query is displaying the KONP-KBTER values with currency as stored in the database table .My requirement is to show the KBETR value as per decimals stored in TCURX table for that currency .
For Example If KONP-KBETR = 51.29 JPY , It sholuld display as 5129 as Decimal places for JPY is 0.
There is FM CURRENCY_AMOUNT_SAP_TO_DISPLAY Which gives the equvivalent display value to the databse value value.But it is giving dump because of type conflict with
KONP-KBETR .
Can any body help me how can i solve the problem in My Query ? .Pls any small idea taht may help greatly also warmly welcome .
Thx,
Dharma .Hi Sriram ,
But how can i use it in Queries . I mean should I go for a additional filed in infoset and then passing the converted value to the the that additional field .
Thx ,
Dharma . -
TCURX not updating in BW with RSIMPCUST
BW Dudes and Dudettes,
Our ECC6 com padres have deleted an entry from TCURX.
They've done this in the ECC6 environment (Dev currently, but QA and Prod to follow).
I now want to replicate the change to BW. I've used all the options on RSIMPCUST manually on the appropriate source system in RSA1 but the changes do not reflect in TCURX in our BW system.
Any ideas why TCURX is not changing, even though I get success messages in the log for RSIMPCUST?
Regards,
AJOkay, so I should have checked SAP Notes first ...!
1549820 - TCURX deletion does not take place during rebuild, seems they changed the logic to prevent deletions via RSIMPCUST and have realised the error of their ways - this note allows deletions again.
Regards,
AJ -
Hi BW experts!
We are currently implementing a BW solution for Japan and hence the currency used in all transactions is JPY.
I undertand JPY has no decimals and hence finds an entry in TCURX table with 0 decimal places in BW .
Our R3 team has now removed this entry from TCURX table as it seems they want to have 2 decimal places for reporting.
Now,in order to replicate this,in RSA1 for my ECC system I did transfer of global settings->Update tables.This did not help.
I even tried rebuild option.But even this did not take off the JPY entry in TCURX in BW.
Is this behaviuor normal? Should it not have repopulated the TCURX table by deleting YEN entry?
Or should we manually delete the entry in BW in TCURX by going to SPRO?
Please suggest .We are in the development system currently.
Thanks in Advance.
SreeHi there,
Go to RSA1->Source Systems and right-click over your R/3 system and choose "Transfer Exchange Rates" and choose "Transfer exchange rates again".
Diogo. -
For certain currencies I have a conflict between the stated decimal places on inbound American Express transactions vs. what's stored on TCURX. Because of this descrepancy I cannot load COP or HUF American Express transactions into the SAP system for use in the Travel Expenses application.
American Express is assigning two decimal places to transactions originating in Columbia Peso (COP) and Hungary Forint (HUF) while SAP is assigning zero decimal places. ISO 4217 states that both currencies are two decimal places.
The credit card accounting currency and company code currency are both USD. All SAP transactions have been posted in USD. There are no exceptions.
Based on this background I'm trying to determine the best approach for modifying TCURX so it properly reflects the ISO 4217 standard for COP and HUF. Through my research I've determined that a currency code with two decimal places is not included in TCURX. Should I delete the TCURX entries for COP and HUF or should I change the decimal place value to two for both of these currencies? Or is another course of action required?
Thanks in advance for oyur help.
Paul PortellaThe fillér, which was defined as a 100th part of a Forint, has long ceased to exist.
The same probably applies to Colombia.
However, history apart, I wonder why you cannot delete the two entries from the TCURX table (which takes its values from OY04). Maybe raise an OSS note and have SAP answer this for you. My client does not deal in Forints, so its not been maintained.
You cannot change the decimal value to 2, since that option has not been provided (assumed default).
Cheers. -
Decimals management through TCURX
Hi Experts,
I do have the usual issue with ITL currency in BEx (SAP BI 7.0 / BEx 3.5).
As you probably know, Italian Lire is a no-decimal currency, stored that way in TCURX table.
I do load my amounts from an Oracle database, through DBConnect.
Therefore, the amount 1000 ITL is displayed in BEx like 100000,00 ITL, which is obiously wrong.
There is an evident way to workaround this by removing the ITL record in TCURX, but I would like to implement another method, using for example conversion in my DataSource.
Here are my 3 questions:
1. Could someone explicitly explain me how the amount are stored into the database (with or without decimal) and when intervene the cross-check with TCURX.
2. Does it exist a standard conversion module in DataSources for converting my ITL amounts to the right SAP Amount format?
3. If not, I suppose applying a small routine in transformations like IF Currency = ITL then divide per 100 is not really a wrong method?
Thanks for all the explanations you could give me
SylvainHii,
So for this particular issue, we have only one standard option: for a flat file load infopackage on external data tab, we have currency conversion for External syst check box. when you check this currency conversion option, whle data loading the value for ITL gets loaded divided by 100 ( based on the decimal places in TCURX). and in the Bex report the amount again gets multiplied with 100. only issue with it is you may lose out on few decimal values whle storing the data.
But i doubt if the same conversion is available for DB connect infopackages, so only option left out is writing a routine while loading the data you need to carry out the calculation.
Hope this helps...
Regards,
Umesh. -
HI EXPERTS!
CAN ANYBODY TELL ME HOW TO RESOLVE THIS RUNTIME ERROR ON EXECUTING TRANSACTION PC00_M40_CALC.
Runtime errors DBIF_RSQL_SQL_ERROR
Exception CX_SY_OPEN_SQL_DB
Occurred on 07.08.2007 at 14:13:06
An SQL error occurred when accessing a table.
What happened?
What can you do?
Make a note of the actions and input which caused the error.
To resolve the problem, contact your SAP system administrator.
You can use transaction ST22 (ABAP Dump Analysis) to view and administer
termination messages, especially those beyond their normal deletion
date.
Error analysis
An exception occurred. This exception is dealt with in more detail below
. The exception, which is assigned to the class 'CX_SY_OPEN_SQL_DB', was
neither
caught nor passed along using a RAISING clause, in the procedure
"GET_SLAB_RATE" "(METHOD)"
Since the caller of the procedure could not have expected this exception
to occur, the running program was terminated.
The reason for the exception is:
How to correct the error
The exception must either be prevented, caught within the procedure
"GET_SLAB_RATE"
"(METHOD)", or declared in the procedure's RAISING clause.
To prevent the exception, note the following:
Database error text........: "ORA-04031: unable to allocate 4200 bytes of
shared memory ("shared pool","SELECT * FROM "T7INT1" WHERE...","library
cache","kkslpkp - literal info.")"
Internal call code.........: "[RSQL/FTCH/T7INT1 ]"
Please check the entries in the system log (Transaction SM21).
You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
use the following search criteria:
"DBIF_RSQL_SQL_ERROR" CX_SY_OPEN_SQL_DBC
"CL_HRPAYIN_SLABRATES==========CP " or "CL_HRPAYIN_SLABRATES==========CM002 "
"GET_SLAB_RATE"
If you cannot solve the problem yourself, please send the
following documents to SAP:
1. A hard copy print describing the problem.
To obtain this, select the "Print" function on the current screen.
2. A suitable hardcopy prinout of the system log.
To obtain this, call the system log with Transaction SM21
and select the "Print" function to print out the relevant
part.
3. If the programs are your own programs or modified SAP programs,
supply the source code.
To do this, you can either use the "PRINT" command in the editor or
print the programs using the report RSINCL00.
4. Details regarding the conditions under which the error occurred
or which actions and input led to the error.
System environment
SAP Release.............. "620"
Application server....... "hmsidev01"
Network address.......... "10.249.16.150"
Operating system......... "Windows NT"
Release.................. "5.0"
Hardware type............ "2x Intel 801586"
Character length......... 8 Bits
Pointer length........... 32 Bits
Work process number...... 0
Short dump setting....... "full"
Database server.......... "HMSIDEV01"
Database type............ "ORACLE"
Database name............ "DEV"
Database owner........... "SAPDEV"
Character set............ "English_United State"
SAP kernel............... "620"
Created on............... "Jun 13 2004 22:06:10"
Created in............... "NT 5.0 2195 Service Pack 2 x86 MS VC++ 12.00"
Database version......... "OCI_817_SHARE "
Patch level.............. "1511"
Patch text............... " "
Supported environment....
Database................. "ORACLE 8.1.7.."
SAP database version..... "620"
Operating system......... "Windows NT 5.0, Windows NT 5.1, Windows NT 5.2"
User, transaction...
Client.............. 100
User................ "IR1"
Language key........ "E"
Transaction......... "PC00_M40_CALC "
Program............. "CL_HRPAYIN_SLABRATES==========CP "
Screen.............. "SAPMSSY0 1000"
Screen line......... 6
Information on where terminated
The termination occurred in the ABAP program "CL_HRPAYIN_SLABRATES==========CP
" in "GET_SLAB_RATE".
The main program was "HINCALC0 ".
The termination occurred in line 12 of the source code of the (Include)
program "CL_HRPAYIN_SLABRATES==========CM002 "
of the source code of program "CL_HRPAYIN_SLABRATES==========CM002 " (when
calling the editor 120).
Processing was terminated because the exception "CX_SY_OPEN_SQL_DB" occurred in
the
procedure "GET_SLAB_RATE" "(METHOD)" but was not handled locally, not declared
in the
RAISING clause of the procedure.
The procedure is in the program "CL_HRPAYIN_SLABRATES==========CP ". Its source
code starts in line 1
of the (Include) program "CL_HRPAYIN_SLABRATES==========CM002 ".
Source code extract
000010 METHOD get_slab_rate .
000020
000030 DATA: wa_t7int1 TYPE t7int1,
000040 wa_t7int3 TYPE t7int3,
000050 slab_code TYPE t7int1-slcod.
000060 CLEAR: wa_t7int1 ,
000070 wa_t7int3 ,
000080 slab_code .
000090
000100
000110 * Select slab code from t7int1.
SELECT * FROM t7int1 INTO wa_t7int1
000130 WHERE sltyp = slab_type
000140 AND begda LT ref_date
000150 AND endda GE ref_date.
000160 MOVE wa_t7int1-slcod TO slab_code.
000170 ENDSELECT.
000180
000190 * Find out the rate for the salb code in which the income falls.
000200 SELECT * FROM t7int3 INTO wa_t7int3 WHERE slcod = slab_code ORDER BY
000210 hirge.
000220 IF wa_t7int3-hirge GE income.
000230 EXIT.
000240 ENDIF.
000250 ENDSELECT.
000260
000270 slab_rate = wa_t7int3-txval.
000280
000290
000300 ENDMETHOD.
Contents of system fields
SY field contents..................... SY field contents.....................
SY-SUBRC 0 SY-INDEX 215
SY-TABIX 63 SY-DBCNT 1
SY-FDPOS 1 SY-LSIND 0
SY-PAGNO 1 SY-LINNO 1
SY-COLNO 1 SY-PFKEY
SY-UCOMM SY-TITLE Payroll Driver, India
SY-MSGTY SY-MSGID
SY-MSGNO 000 SY-MSGV1
SY-MSGV2 SY-MSGV3
SY-MSGV4
Active calls / events
No.... Type........ Name..........................
Program
Include Line
Class
16 METHOD GET_SLAB_RATE
CL_HRPAYIN_SLABRATES==========CP
CL_HRPAYIN_SLABRATES==========CM002 12
CL_HRPAYIN_SLABRATES
15 FORM STDDED03
HINCALC0
PCTAXIN0 564
14 FORM CALC_STANDARD_DEDUCTION
HINCALC0
PCTAXIN0 466
13 FORM FUINTAX
HINCALC0
PCTAXIN0 253
12 FORM AS-FUNKTION
HINCALC0
PCASFIN0 13
11 FORM ASLOOP
HINCALC0
RPCHRT09_ASLOOP 58
10 FORM MONATSABRECHNUNG
HINCALC0
RPCHRT09_MONATSABRECHNUNG 48
9 FORM RUECKRECHNUNG
HINCALC0
RPCHRT09_RUECKRECHNUNG 136
8 FORM MAIN
HINCALC0
RPCHRT09_MAIN 134
7 FORM %_GET_PERNR
HINCALC0
RPCHRT09 762
6 FORM FILL_INFOTYPE_TABLES_AND_PUT
SAPDBPNP
DBPNPF03 542
5 FORM PUTPERN
SAPDBPNP
DBPNPF03 470
4 FORM LOOP_AT_INDEX_AND_PUT
SAPDBPNP
DBPNPF01 996
3 FORM PUT_PERNR
SAPDBPNP
DBPNPF01 194
2 FORM %_ROOT
SAPDBPNP
SAPDBPNP 151
1 EVENT SYSTEM-EXIT
HINCALC0
20
Chosen variables
16 METHOD GET_SLAB_RATE
CL_HRPAYIN_SLABRATES==========CP
CL_HRPAYIN_SLABRATES==========CM002 12
SLAB_TYPE D
4
4
REF_DATE 20070331
33333333
20070331
INCOME ####Q#
00005991
0001153C
SLAB_RATE ########
00000000
0000000C
WA_T7INT1 0000000000000000
222233333333333333332
000000000000000000000
WA_T7INT3 ####### #######
222222000000022222220000000
000000000000C0000000000000C
SLAB_CODE
2222
0000
%_VIASELSCR #
0
4
<%_TABLE_T7INT1> ???
%_SPACE
2
0
SYST-REPID CL_HRPAYIN_SLABRATES==========CP
4454554544554445454533333333334522222222
3CF820199EF3C1221453DDDDDDDDDD3000000000
SY-XPROG SAPDBPNP
5454454522222222222222222222222222222222
310420E000000000000000000000000000000000
SY-REPID CL_HRPAYIN_SLABRATES==========CP
4454554544554445454533333333334522222222
3CF820199EF3C1221453DDDDDDDDDD3000000000
SY-XFORM %_ROOT
255445222222222222222222222222
5F2FF4000000000000000000000000
%_DUMMY$$
2222
0000
<%_TABLE_T7INT3> ???
15 FORM STDDED03
HINCALC0
PCTAXIN0 564
STD_DED_TAB Table[initial]
0000FFFD
0000FFFF
SY-TABIX 63
3000
F000
STD_PERCENT #####
00000
0000C
%_SPACE
2
0
SYST-REPID HINCALC0
4444444322222222222222222222222222222222
89E31C3000000000000000000000000000000000
SPACE
2
0
%_DUMMY$$
2222
0000
$ENDDATE 20070331
33333333
20070331
$PRE_DEDN_AMOUNT ####Q#
00005991
0001153C
$CALC_DEDN ########
00000000
0000000C
SY-REPID HINCALC0
4444444322222222222222222222222222222222
89E31C3000000000000000000000000000000000
SY ×#######?###?###########################
D000000030003000000000000000000000000000
70001000F000F000000000000000000000000000
... + 40 ###################################5###
0000000000000000000080000000000000003000
1000100010000000100040000000000000005000
... + 80 ########################################
0000000000000000000000000000000000000000
0000000000000000400000000000000000000000
... + 120 ################################%######
0000000000000000000000000000000020008000
000000000000000000000000000000005000E000
... + 160 ############XM## P############# E0 1
0000000000005400250000000000000222432223
0000700040008D00000020000C0000C000500001
... + 200 000 ####PNP 100
3332222222220000545222222222222222223332
00000000000000000E0000000000000000001000
... + 240 00
222223322222222
000000000000000
NO_OF_ROWS
2
0
SY-TFILL 63
3000
F000
14 FORM CALC_STANDARD_DEDUCTION
HINCALC0
PCTAXIN0 466
P0015[] Table IT_204[12x147]
F7D4DED48000C000000090000000FFFF00004500
871900998000C000C00030000000FFFF40000F00
... + 40
0000C020
20001E80
SW_AUFROLLUNG X
5
8
%BX03242_BLOCK_1000 Log
4662222222222222222222222222222222222222
CF70000000000000000000000000000000000000
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80
222
000
SNAME 40INDED
33444442
409E4540
T559A-WTIME 000000
333333
000000
OGRT[] Table IT_299[0x53]
00000000C0002000000030000000FFFF0000E300
000000003000B100000050000000FFFF40000310
... + 40
1000C200
00001E00
ENDDATE 20070331
33333333
20070331
T596F-PGMNA HINCALC0
4444444322222222222222222222222222222222
89E31C3000000000000000000000000000000000
T596F-MODNA STDDED03
55444433
34445403
P_PRE_DEDUCTION_BALANCE ####Q#
00005991
0001153C
STANDARD_DEDUCTION ########
00000000
0000000C
P2006[] Table IT_460[37x168]
9ED40000E000C0002000A0000000FFFF00008500
877900006000C100500080000000FFFF40000600
... + 40
0000C020
20001E00
13 FORM FUINTAX
HINCALC0
PCTAXIN0 253
ANNUAL_IRREGULAR_INCOME ####3#%L
00003124
0000365C
%_SET_VOID_%_APP_%
222222222222222222222222222222
000000000000000000000000000000
ANNUAL_PERK ########
00000000
0000000C
SET_ODC
2
0
%_SET_ODC_%_APP_%
222222222222222222222222222222
000000000000000000000000000000
SET_REVR
2
0
P%2007 00000000 000000000000000000000
3333333322222222222333333333333333333333
0000000000000000000000000000000000000000
... + 40 000000 00
3333332222222222222222222222222222222233
0000000000000000000000000000000000000000
... + 80 0000000000 00###### ###### 00000000000
3333333333233000000200000022233333333333
000000000000000000C000000C00000000000000
... + 120 0000000000000000000000000
3333333333333333333333333222222222222222
0000000000000000000000000000000000000000
... + 160
222222222222
000000000000
PRE_DEDUCTION_BALANCE ####Q#
00005991
0001153C
OCRSN
2222
0000
APER-PAPER-PABRJ 2006
3333
2006
APER-IAPER-PABRJ 2007
3333
2007
SW_INTIM
2
0
APER-PAPER 200612
333333
200612
ANN_PTAX_AMT ########
00000000
0000000C
12 FORM AS-FUNKTION
HINCALC0
PCASFIN0 13
P0584 00000000 000000000000000000000
3333333322222222222333333333333333333333
0000000000000000000000000000000000000000
... + 40 000000 #
3333332222222222222222222222222222222220
0000000000000000000000000000000000000000
... + 80 ########################################
0000000000000000000000000000000000000000
00000C0000C0000C0000C0000C000000C000000C
... + 120 ####################################
0000000000000000000000000000000000002222
000000C000000C0000C0000C000000C0000C0000
... + 160 0000
22222222222333322222
00000000000000000000
ORGDIR 00000 0000000000000000 00 0
3333322222222333333333333333322332222223
0000000000000000000000000000000000000000
... + 40 0000000 0000000000000000000000000
3333333222222223333333333333333333333333
0000000000000000000000000000000000000000
... + 80 0000000000000 00000000
3333333333333223333333322222222222222222
0000000000000000000000000000000000000000
... + 120 00000000000000 000000000000000000000
3333333333333323333333333333333333332222
0000000000000000000000000000000000000000
RP-IMP-CD-SUBRC 0
0000
0000
CD-SUBRC 0
0000
0000
CD-INDEX 0
0000
0000
IT[] Table IT_490[63x53]
EFC47AC4F000E000300030000000FFFF00005100
0AB903399000A100F00050000000FFFF40000810
... + 40
2000C000
B0009E00
IT */418######### # ####################Q
2233300000000020222000000000000000000005
AF418000000000000000000000C0000000C00011
... + 40 #
9912222222222
53C0000000000
RGDIR_CA[] Table IT_383[0x156]
00003ED4E0007000000090000000FFFF0000C100
000086791000F1000000C0000000FFFF40000810
... + 40
4000C000
00001400
RGDIR_CA 00000 0000000000000000 00 0
3333322222222333333333333333322332222223
0000000000000000000000000000000000000000
... + 40 0000000 0000000000000000000000000
3333333222222223333333333333333333333333
0000000000000000000000000000000000000000
... + 80 0000000000000 00000000
3333333333333223333333322222222222222222
0000000000000000000000000000000000000000
... + 120 00000000000000 000000000000000000000
333333333333332333333333333333333333
000000000000000000000000000000000000
%%_DIR2[] Table IT_218[0x54]
000000009000D000000030000000FFFF0000D100
000000006000A000000060000000FFFF40008210
... + 40
6000C000
40001400
<%_TABLE_T599B> ???
PY_PM_CONTAINER 00000000
2222222222222222222222222222222233333333
0000000000000000000000000000000000000000
... + 40 0
3222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 120
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 160
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 200
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 240
222222222222222
000000000000000
PNPSTATU-LOW
222
000
SET_LCW 010
333
010
11 FORM ASLOOP
HINCALC0
RPCHRT09_ASLOOP 58
P_WITH_LOG X
5
8
SW_EXPORT_ES
2
0
ASNUM 215
D000
7000
APER_NUMB 15
0000
F000
NEXT_AS_ENTRY 244
F000
4000
SW_REPETITION X
5
8
SW_P0005_CHANGED
2
0
PNPSACHZ
222222222
000000000
PTEXT[] Table IT_139[0x548]
0000CCC460008000000020000000FFFF00004300
00000D79C000B000000042000000FFFF40000500
... + 40
1000C200
00001400
SW_VOID
2
0
SCREEN %_17SNS0000177553_%_%_%_%_%_%_
2533545333333333352525252525252222222222
5F173E30000177553F5F5F5F5F5F5F0000000000
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 120 SRI00001#00000 ####
2222222222222222222225543333303333320000
0000000000000000000003290000100000000000
SW_PROT
2
0
PNPSBMOD-LOW
2222
0000
PTEXT_LINES 0
0000
0000
10 FORM MONATSABRECHNUNG
HINCALC0
RPCHRT09_MONATSABRECHNUNG 48
CALC_CURRENCY INR
44522
9E200
SY-SUBRC 0
0000
0000
CALC_CURR_DEC 1380862210
0
2
TCURX-CURRDEC 0
0
0
PNPPERSK-LOW
22
00
PNPKOSTL
22222222222222222222222
00000000000000000000000
SL_BRUTTO
2
0
FC-SL_B_N
2
0
%_PNPSNAME_%_APP_% PNPSNAMEEE name can be sorted to
5455444444266662666266276776622222222276
0E03E1D5550E1D5031E02503F24540000000004F
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80 @1FQMultiple selection@
2224345547676766276666766642222222222222
000016C1D5C490C5035C5349FE00000000000000
... + 120
222
000
APER-CALCD X
5
8
DT /AEA00200612 00000000########
24443333333322333333330000000022222
F1510020061200000000000000000C00000
DT[] Table IT_1916[4x35]
F8F40000E0007000000020000000FFFF0000E400
06090000A100C700400030000000FFFF40008610
... + 40
1000C220
00001E00
9 FORM RUECKRECHNUNG
HINCALC0
RPCHRT09_RUECKRECHNUNG 136
APER-PAYTY
2
0
SY-XPROG SAPDBPNP
5454454522222222222222222222222222222222
310420E000000000000000000000000000000000
PYCT 0<>
0000FFFF
0000FFFF
PNP-SW-AUTH-SKIPPED-RECORD 0
3
0
P0007[] Table IT_201[4x138]
CBC47DD48000C000000080000000FFFF00005400
80390F99500090004000A0000000FFFF40008B00
... + 40
0000C020
20001E80
PNPKOKRS[] Table IT_52[0x11]
0000000020003000000000000000FFFF04007200
00000000A00040000000B0000000FFFF44008700
... + 40
0000C000
A0001400
PNPBLCKT
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80
222
000
FC-NT_BEGIN 0
0000
0000
PNP-SW-IGNORELOCKEDRECORDS Y
5
9
FROM_DATE 00000000
33333333
00000000
%_SET_LCW_%_APP_%
222222222222222222222222222222
000000000000000000000000000000
8 FORM MAIN
HINCALC0
RPCHRT09_MAIN 134
%_PNPFKBER_%_APP_% PNPFKBERFunctional Area to
5454444547667666662476622222222222222276
0E06B25265E349FE1C012510000000000000004F
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80 @1FQMultiple selection@
2224345547676766276666766642222222222222
000016C1D5C490C5035C5349FE00000000000000
... + 120
222
000
PERNR-PERNR 00003015
33333333
00003015
Table IT_235[0x178]
000045D4A000E0000000B0000000FFFF00003400
000080390000B000000020000000FFFF40008110
... + 40
1000C200
00001400
P0027[] Table IT_234[0x1851]
0000A4D49000E000000030000000FFFF0000DE00
00008F39F000A0000000B7000000FFFF40000610
... + 40
0000C200
80001E00
PNPENAME
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80
222
000
INFTY[] Table IT_116[34x4]
8EC4000050007000200000000000FFFF0D008000
0E790000A0004000200040000000FFFF43000900
... + 40
2000C000
20001400
INFTY 0078
3333
0078
PNPBLCKP Payroll period
5677666276766622222222222222222222222222
0192FCC00529F400000000000000000000000000
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80
222
000
SY-MSGNO 000
333
000
FC-PGM_TYP ABR
4452
1220
PY12W_MEM_ID_BUFFER T512W_BUFFER
533355454445
45127F256652
RSJOBINFO 00000000
2222222222222222222222222222222233333333
0000000000000000000000000000000000000000
... + 40 000000
3333332222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80 ####
0000
0000
P0032 00000000 000000000000000000000
3333333322222222222333333333333333333333
0000000000000000000000000000000000000000
... + 40 000000
3333332222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80 #####
2222222222222222222222200000222222222222
000000000000000000000000000C000000000000
... + 120
2222222222222222222222222222222222222222
Hello,
strange, you have the same message in SQL Server forum, but we can see Oracle DB here:
SQL ERROR
Without developer traces it would be difficult to say. But it looks bad enough because of kernel 6.20 patch level 1511 (definitely dboraslib.dll has similar patch level) and Oracle 8.1.7 are out of support since years.
best regards -
Currency translation on future dates in SAP BW-BEX
Hello All We have a requirement where in user needs to do a currency translation at run time for data in future periods. For example : Savings data on a purchase order .Total savings for PO is $100,000.00 in year/month 2014/008 . We have a from and to date based on which the savings is equally distributed for each month. From 008/2014 to 008/2015. So each month savings in this case is $8333.33. This data is stored in cubes. Currency translation is based on data in TCURR and TCURX tables . We do not have future currency rates in these tables. Table is up to date only as of today . Therefore the question arises WHAT RATE WILL BEX USE TO CALCULATE DATA IN FUTURE PERIODS? (It is doing the conversion from USD to CAD - but there is no idea what rate it is using? The currency translation variable is based on 0calmonth. Please help me understand what are the default settings for currency translations in this case ? Thank your your help. Sainath Kumar
Hello Yasemin Thank you for your answer, we too think that could be the case. But is there any documentation confirming the same. Also in this case the future values will keep changing based on the availability of the data in TCURR table. Thus the report values will not be constant.Technically it makes no sense to convert rate today for a value in future. I am looking for a concrete answer from SAP saying that this is what the Bex query will do in case the future rates are not present. This will give the business a base to work with .
-
How to add a field in dynamic selections
HI,
There is a requirement in which i need to add a field in existing program of dynamic selections.
I have added a field in the screen.But I was not able to write the label and is not displaying.
I ahve copied evrything from existing coding.but still.
In the program ,Field groups are being used.
I have inserted my field in that header and item of field groups.
But i was not able to select the data based on this selection.
i will attach my code here for reference.
can anyone please help me how to use these filed symbols.
If possible send me the document on Dynamic selections.
the field i need to add is bkpf-bktxt
TABLES:
tcurx,
lfa1,
kna1,
bhdgd,
bkpf,
bseg,
bsega,
b0sg,
fimsg,
sarkey,
t001,
vbset,
sscrfields.
Selektionsparameter *
begin_of_block 1.
PARAMETERS:
par_nbel LIKE rfpdo-bpetnbel, "Normale Belege
par_vbel LIKE rfpdo-epojvbel, "Vorerfaßte Belege
par_sbel LIKE rfpdo-bpetsbel, "Statistischen Belege
par_mbel LIKE rfpdo-epojmbel, "Musterbelege
par_dbel LIKE rfpdo1-korbdbel. "Dauerbuchungsurbelege
end_of_block 1.
begin_of_block 2.
PARAMETERS:
par_summ LIKE rfpdo1-allgsumm, "nur Summenausgabe
par_hkto LIKE rfpdo2-beljhkto, "Hauptbuch- statt Personenkonto
par_altk LIKE rfpdo1-allgaltk, "alternative Kontonummer
par_lsep LIKE rfpdo-allglsep, "Listseparation
par_mikf LIKE rfpdo-allgmikf, "Mikrofiche-Zeile
par_line LIKE rfpdo1-allgline. "Zusatztitel
Eingaben für optische Archivierung
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: arc LIKE rfpdo1-allgarch.
SELECTION-SCREEN COMMENT 3(29) text-103 FOR FIELD arc.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS: arc_msg1(10) MODIF ID arc.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS: arc_msg2(10) MODIF ID arc.
SELECTION-SCREEN END OF LINE.
end_of_block 2.
PARAMETERS: arc_mem LIKE arc_params NO-DISPLAY.
Felder und Feldleisten *
CONSTANTS:
con_true TYPE i VALUE 1,
con_false TYPE i VALUE 2,
con_hash TYPE i VALUE 1,
con_vendor TYPE c VALUE 'K',
con_cust TYPE c VALUE 'D'.
Global Data
DATA: BEGIN OF hash_totals OCCURS 25,
bukrs LIKE t001-bukrs,
poper(7),
dramt LIKE bseg-wrbtr,
cramt LIKE bseg-wrbtr,
END OF hash_totals.
DATA:
factor TYPE i,
Zähler
cnt_bukrs(4) TYPE p, "Anzahl Buchungskreise
cnt_max LIKE sy-tfill, "Maximum der CNT_Ti
cnt_t0 LIKE sy-tfill, "Anzahl Einträge in Ti
cnt_t1 LIKE sy-tfill,
cnt_t2 LIKE sy-tfill,
cnt_t3 LIKE sy-tfill,
cnt_t4 LIKE sy-tfill,
cnt_t5 LIKE sy-tfill,
Fehler
err_altkt(1) TYPE c, "alt. Kontonummer nicht gefunden
Flags
flg_section TYPE i,
flg_vendr2 TYPE i,
flg_vendr3 TYPE i,
flg_color(1) TYPE n, "0 - intensified off
Hilfsfelder
hlp_belnr(10) TYPE c, "Anzeigefeld Belegnummer
hlp_bstat LIKE bkpf-bstat, "Status vorerfaßter Belege
hlp_buper(7) TYPE c, "Buchungsperiode mit '/'
hlp_null(1) TYPE p VALUE 0, "Betrag Null
hlp_sakan LIKE ska1-sakan, "Anzeigefeld Kontonummer
hlp_wrshb(26) TYPE c, "FW-Betrag mit Währung in Klammer
hlp_vnd_amt(43) TYPE c,
Texte
txt_line0(132) TYPE c, "Überschriften
txt_line1(132) TYPE c,
txt_line2(132) TYPE c,
txt_line(132) TYPE c, "Hilfstext
Feldleisten
BEGIN OF mikfi, "Information Mikrofiche-Zeile
bstat LIKE bkpf-bstat,
bukrs LIKE bkpf-bukrs,
gjahr LIKE bkpf-gjahr,
belnr LIKE bkpf-belnr,
END OF mikfi.
Interne Tabellen *
DATA:
Belegkopfinformationen
BEGIN OF t0 OCCURS 4, "0 - allgemeine Angaben
info(1) TYPE n, "1 - vorerfaßter Beleg
END OF t0, "2 - Referenz
"3 - Storno
"4 - gelöschter vorerfaßter Beleg
"5 - ersetzter vorerfaßter Beleg
"6 - Ausgleichsbeleg
"7 - zurückgenommener Ausgleich
Personenkonteninformationen je Beleg
BEGIN OF t1 OCCURS 10,
koart LIKE bseg-koart, "Kontoart
ktonr LIKE bseg-kunnr, "Kontonummer(Debitor/Kreditor)
bschl LIKE bseg-bschl, "Buchungsschlüssel
xnegp LIKE bseg-xnegp, "Negativbuchung
umskz LIKE bseg-umskz, "Sonderumsatzkennzeichen
zlspr LIKE bseg-zlspr, "Payment Block Key - CR 21709
dmshb LIKE bsega-dmshb, "Soll-Haben Betrag in Hauswährung
wrshb LIKE bsega-dmshb, "Betrag in Fremdwährung
xfwae(1) TYPE c, "X - Fremdwährungsinformation
name1 LIKE lfa1-name1, "Customer/ Vendor Name
END OF t1,
Steuerinformationen je Beleg
BEGIN OF t2 OCCURS 10,
mwskz LIKE bseg-mwskz, "Mehrwertsteuerkennzeichen
dmshb LIKE bsega-dmshb, "Soll-Haben Betrag in Hauswährung
END OF t2,
Sachkonteninformationen je Beleg
BEGIN OF t3 OCCURS 20,
mwskz LIKE bseg-mwskz, "Mehrwertsteuerkennzeichen
bschl LIKE bseg-bschl, "Buchungsschlüssel
xnegp LIKE bseg-xnegp, "Negativbuchung
koart LIKE bseg-koart, "Kontoart
hkont LIKE bseg-hkont, "Hauptbuchkonto
dmshb LIKE bsega-dmshb, "Soll-Haben Betrag in Hauswährung
kostl LIKE bseg-kostl, "Cost Center
prctr LIKE bseg-prctr, "Profit Center
END OF t3,
Sonderhauptbuchbeträge für Debitoren (nur Ausgabe)
BEGIN OF t4 OCCURS 5,
umskz LIKE bseg-umskz, "Sonderumsatzkennzeichen
dmsol(9) TYPE p, "Soll-Betrag Hauswährung
dmhab(9) TYPE p, "Haben-Betrag Hauswährung
END OF t4,
Sonderhauptbuchbeträge für Kreditoren (nur Ausgabe)
BEGIN OF t5 OCCURS 5,
umskz LIKE bseg-umskz, "Sonderumsatzkennzeichen
dmsol(9) TYPE p, "Soll-Betrag Hauswährung
dmhab(9) TYPE p, "Haben-Betrag Hauswährung
END OF t5,
Summeninformationen je Buchungskreis
BEGIN OF tbukrs OCCURS 20,
bstat LIKE bkpf-bstat, "Belegstatus
bukrs LIKE bkpf-bukrs, "Buchungskreis
START OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
bktxt LIKE bkpf-bktxt,
END OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
gjahr LIKE bkpf-gjahr, "Buchungsjahr
monat LIKE bkpf-monat, "Buchungsmonat
dmsol(9) TYPE p, "Soll-Betrag Hauswährung
dmhab(9) TYPE p, "Haben-Betrag Hauswährung
waers LIKE t001-waers, "Währungsschlüssel (nur Ausgabe)
END OF tbukrs,
Sonderhauptbuchinformationen je Buchungskreis
BEGIN OF tbukrs_u OCCURS 20,
bstat LIKE bkpf-bstat, "Belegstatus
bukrs LIKE bkpf-bukrs, "Buchungskreis
START OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
bktxt LIKE bkpf-bktxt,
END OF CHANGE FOR CR63816 by OS0794 on 01/29/2008
gjahr LIKE bkpf-gjahr, "Buchungsjahr
monat LIKE bkpf-monat, "Buchungsmonat
koart LIKE bseg-koart, "Kontoart
umskz LIKE bseg-umskz, "Sonderumsatzkennzeichen
dmsol(9) TYPE p, "Soll-Betrag Hauswährung
dmhab(9) TYPE p, "Haben-Betrag Hauswährung
waers LIKE t001-waers, "Währungsschlüssel (nur Ausgabe)
END OF tbukrs_u,
Summeninformationen je Hauswährung
BEGIN OF twaers OCCURS 10,
bstat LIKE bkpf-bstat, "Belegstatus
waers LIKE t001-waers, "Hauswährungsschlüssel
gjahr LIKE bkpf-gjahr, "Buchungsjahr
monat LIKE bkpf-monat, "Buchungsmonat
dmsol(9) TYPE p, "Soll-Betrag Hauswährung
dmhab(9) TYPE p, "Haben-Betrag Hauswährung
END OF twaers,
Sonderhauptbuchinformationen je Hauswährung
BEGIN OF twaers_u OCCURS 20,
bstat LIKE bkpf-bstat, "Belegstatus
waers LIKE t001-waers, "Währungsschlüssel
gjahr LIKE bkpf-gjahr, "Buchungsjahr
monat LIKE bkpf-monat, "Buchungsmonat
koart LIKE bseg-koart, "Kontoart
umskz LIKE bseg-umskz, "Sonderumsatzkennzeichen
dmsol(9) TYPE p, "Soll-Betrag Hauswährung
dmhab(9) TYPE p, "Haben-Betrag Hauswährung
END OF twaers_u,
Fehlerprotokoll im Batch
BEGIN OF tfimsg OCCURS 10.
INCLUDE STRUCTURE fimsg.
DATA END OF tfimsg.
Strukturen für optische Archivierung *
DATA BEGIN OF info OCCURS 10.
INCLUDE STRUCTURE bhinf.
DATA END OF info.
DATA:
arc_save LIKE arc_params,
arc_valid.
Feldgruppen *
FIELD-GROUPS: header, daten.
INSERT:
bkpf-bukrs "Buchungskreis
bkpf-bktxt "Change by OS0794
bkpf-bstat "Belegstatus
bkpf-gjahr "Geschäftsjahr
bkpf-belnr "Belegnummer
bseg-buzei "Buchungszeile
INTO header.
INSERT
bkpf-blart "Belegart
bkpf-bktxt "Change by OS0794
bkpf-budat "Buchungsdatum
bkpf-stblg "Stornobelegnummer
bkpf-waers "Währungsschlüssel
bkpf-xblnr "Referenzangabe
bseg-bschl "Buchungsschlüssel
bseg-xnegp "Negativbuchung
bseg-zlspr "Payment Block Key - CR 21709
bseg-hkont "Hauptbuchkonto
bseg-koart "Kontoart
bseg-kunnr "Debitornummer
bseg-lifnr "Kreditornummer
bseg-mwart "Mehrwertsteuerart (A oder V)
bseg-mwskz "Mehrwertsteuerkennzeichen
bseg-umskz "Sonderhauptbuch-Kennzeichen
bsega-dmshb "S/H-Betrag in Hauswährung
bsega-mdshb "Umsatzsteuerbetrag in Hauswährg
bsega-wrshb "S/H-Betrag in Fremdwährung
hlp_bstat "Status vorerfaßter Belege bzw.
bseg-kostl
bseg-prctr
bkpf-monat
INTO daten. "Status von Belegen ohne Zeilen
Vorschlagswerte *
INITIALIZATION.
get_frame_title: 1,2.
par_nbel = 'X'.
par_sbel = space.
par_mbel = space.
par_dbel = space.
par_vbel = 'X'.
Archivinformationen nur fuer Ausgabe *
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'ARC'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Prüfung und Korrektur der eingegebenen Daten *
AT SELECTION-SCREEN ON arc.
IF arc <> ' ' AND arc_mem(20) = space.
CALL FUNCTION 'GET_ARCHIVE_PARAMETERS'
EXPORTING
in_parameters = arc_save
printer = ' '
IMPORTING
out_parameters = arc_mem
valid = arc_valid
EXCEPTIONS
OTHERS = 04.
IF arc_valid <> 'X' OR arc_mem = space.
CLEAR arc_mem.
MESSAGE e999 WITH text-102.
ENDIF.
arc_msg1 = arc_mem(10).
arc_msg2 = arc_mem+10(10).
ENDIF.
IF arc = ' '.
CLEAR arc_mem.
arc_msg1 = arc_msg2 = space.
ENDIF.
arc_save = arc_mem.
AT SELECTION-SCREEN ON arc_msg1.
arc_msg1 = arc_mem(10).
AT SELECTION-SCREEN ON arc_msg2.
arc_msg2 = arc_mem+10(10).
AT SELECTION-SCREEN.
IF par_nbel EQ space AND
par_mbel EQ space AND
par_dbel EQ space AND
par_sbel EQ space AND
par_vbel EQ space.
SET CURSOR FIELD 'PAR_NBEL'.
MESSAGE e111.
ENDIF.
optische Archivierung
IF arc <> ' ' AND par_mikf <> ' '.
CLEAR arc_mem.
MESSAGE e999 WITH text-100.
ENDIF.
IF arc <> ' ' AND par_lsep <> ' '.
CLEAR arc_mem.
MESSAGE e999 WITH text-101.
ENDIF.
IF arc = 'X' AND sscrfields-ucomm = 'PRIN'.
sscrfields-ucomm = 'ONLI'.
sy-pdest = 'LP01'. "wegen Abfrage in Batch-Heading
ENDIF.
Vorbelegungen *
START-OF-SELECTION.
bhdgd-lines = sy-linsz.
bhdgd-repid = sy-repid.
bhdgd-uname = sy-uname.
bhdgd-separ = par_lsep.
bhdgd-domai = 'BUKRS'.
IF arc = 'X'.
bhdgd-miffl = 'A'.
ENDIF.
IF par_mikf = 'X'.
bhdgd-miffl = 'X'.
ENDIF.
Initialisierung für optisches Archiv
PERFORM open_archive(rsbtchh0) USING arc_mem.
info-name = 'BKPF-BSTAT'. info-len = space. APPEND info.
info-name = 'BKPF-BUKRS'. info-len = space. APPEND info.
info-name = 'BSEG-GJAHR'. info-len = space. APPEND info.
info-name = 'BKPF-BELNR'. info-len = space. APPEND info.
info-name = 'BKPF-BKTXT'. info-len = space. APPEND info.
PERFORM start_archive(rsbtchh0) TABLES info.
b0sg-xstan = par_nbel.
b0sg-xstam = par_mbel.
b0sg-xstad = par_dbel.
b0sg-xstas = par_sbel.
b0sg-xstaa = 'X'.
IF par_vbel EQ 'X'.
b0sg-xstav = 'Z'.
ENDIF.
Selektion *
GET bkpf FIELDS blart bstat budat monat stblg waers xblnr bktxt.
CLEAR hlp_bstat.
IF 'ABVWZ' CA bkpf-bstat.
hlp_bstat = bkpf-bstat.
CLEAR bkpf-bstat.
IF 'ABWZ' CA hlp_bstat.
CLEAR: bseg, bsega.
IF par_summ EQ space.
EXTRACT daten.
ENDIF.
PERFORM summe_merken.
ENDIF.
ENDIF.
GET bseg.
IF par_summ EQ space.
EXTRACT daten.
ENDIF.
PERFORM summe_merken.
GET bkpf LATE.
PERFORM vorerfasste_steuer_merken.
Seitenkopf *
TOP-OF-PAGE.
PERFORM batch-heading(rsbtchh0).
ULINE.
IF flg_section <> con_hash.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE / txt_line0.
ULINE.
FORMAT COLOR 1 INTENSIFIED.
WRITE: / txt_line1,
/ txt_line2.
ELSE.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE: / sy-vline NO-GAP,
'Hash Totals'(205),
132 sy-vline.
ULINE.
FORMAT COLOR 1 INTENSIFIED.
WRITE: / sy-vline NO-GAP,
(10) 'CoCd'(200),
(07) 'Period'(201),
sy-vline,
(16) 'Debit Amount'(202),
(16) 'Credit Amount'(203),
sy-vline,
(16) 'Total'(204).
ENDIF.
ULINE.
Sortieren der Daten *
END-OF-SELECTION.
DESCRIBE TABLE tbukrs LINES sy-tfill.
IF sy-tfill EQ 0.
CALL FUNCTION 'POPUP_NO_LIST'.
ENDIF.
SORT.
SORT tbukrs.
Belegjournal *
LOOP.
*-- Neuer Buchungskreis -
AT NEW bkpf-bukrs.
SELECT SINGLE * FROM t001 WHERE bukrs EQ bkpf-bukrs.
IF sy-subrc NE 0.
IF sy-batch EQ space.
MESSAGE a101 WITH bkpf-bukrs.
ELSE.
MESSAGE s101 WITH bkpf-bukrs.
STOP.
ENDIF.
ENDIF.
bhdgd-bukrs = bkpf-bukrs.
bhdgd-werte = bkpf-bukrs.
PERFORM new-section(rsbtchh0).
PERFORM titel_fuellen USING '5'.
ENDAT.
*-- Neuer Belegstatus -
AT NEW bkpf-bstat.
PERFORM new_page USING bkpf-bstat.
flg_color = 1.
ENDAT.
*-- Neue Belegnummer -
AT NEW bkpf-belnr.
REFRESH: t0, t1, t2, t3.
PERFORM belegkopf_merken.
mikfi-bstat = bkpf-bstat.
mikfi-bukrs = bkpf-bukrs.
mikfi-gjahr = bkpf-gjahr.
mikfi-belnr = bkpf-belnr.
bhdgd-grpin = mikfi.
ENDAT.
*-- Belegzeile -
PERFORM belegzeile_merken.
*-- Ende einer Belegnummer -
AT END OF bkpf-belnr.
PERFORM beleg_schreiben.
ULINE.
ENDAT.
*-- Ende eines Buchungskreises -
AT END OF bkpf-bukrs.
PERFORM titel_fuellen USING '4'.
PERFORM buchungskreis_schreiben USING bkpf-bukrs.
ENDAT.
ENDLOOP.
Summenblätter *
bhdgd-bukrs = ' '.
bhdgd-werte = ' '.
PERFORM new-section(rsbtchh0).
PERFORM titel_fuellen USING '4'.
PERFORM buchungskreis_schreiben USING ' '.
PERFORM hauswaehrung_schreiben.
Print Hash Totals *
flg_section = con_hash.
NEW-PAGE.
PERFORM prt_hash TABLES hash_totals.
Fehlerprotokoll *
CALL FUNCTION 'FI_MESSAGE_CHECK'
EXCEPTIONS
no_message = 4.
IF sy-subrc = 0.
IF sy-batch EQ space.
PERFORM titel_fuellen USING '6'.
NEW-PAGE.
FORMAT COLOR 6 INTENSIFIED.
CALL FUNCTION 'FI_MESSAGE_SORT'.
CALL FUNCTION 'FI_MESSAGE_PRINT'
EXPORTING
i_xskip = 'X'.
ELSE.
CALL FUNCTION 'FI_MESSAGE_GET'
TABLES
t_fimsg = tfimsg.
LOOP AT tfimsg.
MESSAGE ID tfimsg-msgid TYPE tfimsg-msgty NUMBER tfimsg-msgno
WITH tfimsg-msgv1 tfimsg-msgv2 tfimsg-msgv3 tfimsg-msgv4.
ENDLOOP.
ENDIF.
ENDIF.
U N T E R P R O G R A M M E *
0. TITEL_FUELLEN *
1. NEW_PAGE *
2. SUMME_MERKEN *
3. VORERFASSTE_STEUER_MERKEN *
4. BELEGKOPF_MERKEN *
5. BELEGZEILE_MERKEN *
6. BELEG_SCHREIBEN *
7. BUCHUNGSKREIS_SCHREIBEN *
8. HAUSWAEHRUNG_SCHREIBEN *
9. SUMMENZEILE_SCHREIBEN *
10. KONTONUMMER *
0. FORM TITEL_FUELLEN *
Ersetzt das Global &CCCU durch die Buchungskreiswährung *
F00_TEXT ist 4, 5 oder 6, je nach Gruppe der Textelemente *
FORM titel_fuellen USING f00_text.
DATA:
BEGIN OF txt_502,
T1(49) TYPE C, "CR 21709
W1(23) TYPE C, "CR 21709
t1(50) TYPE c, "CR 21709
w1(22) TYPE c, "CR 21709
t2(6) TYPE c,
w2(15) TYPE c,
t3(21) TYPE c,
w3(16) TYPE c,
t4(2) TYPE c,
END OF txt_502.
CASE f00_text. "Textelemente
WHEN '4'. "- für die Summenliste
txt_line0 = text-400.
txt_line1 = text-401.
txt_line2 = text-402.
WHEN '5'. "- für die Einzelpostenliste
txt_line0 = text-500.
txt_line1 = text-501.
txt_line2 = text-502.
IF par_hkto EQ 'X'.
txt_line1+33(10) = text-505.
txt_line2+33(10) = text-506.
ENDIF.
txt_502 = txt_line2.
REPLACE '&CCCU' WITH t001-waers INTO:
txt_502-w1, txt_502-w2, txt_502-w3.
CONDENSE:
txt_502-w1, txt_502-w2, txt_502-w3.
WRITE:
txt_502-w1 TO txt_502-w1 RIGHT-JUSTIFIED,
txt_502-w2 TO txt_502-w2 RIGHT-JUSTIFIED,
txt_502-w3 TO txt_502-w3 RIGHT-JUSTIFIED.
txt_line2 = txt_502.
WHEN '6'. "- für die Fehlerliste
txt_line0 = text-600.
txt_line1 = text-601.
txt_line2 = space.
WHEN OTHERS. "- initialisieren
txt_line0 = space.
txt_line1 = space.
txt_line2 = space.
ENDCASE.
ENDFORM. "TITEL_FUELLEN
1. FORM NEW_PAGE *
Initialisierungen für BATCH-HEADING Routine *
F01_BSTAT steuert den Aufbau des Reporttitels *
FORM new_page USING f01_bstat.
CASE f01_bstat. "Reporttitel
WHEN 'D'. "- für Dauerbuchungsurbelege
bhdgd-line1 = text-001.
WHEN 'M'. "- für Musterbelege
bhdgd-line1 = text-002.
WHEN 'S'. "- für statistische Belege
bhdgd-line1 = text-003.
WHEN OTHERS. "- für normale/vorerfaßte Belege
bhdgd-line1 = sy-title.
ENDCASE.
bhdgd-line2 = par_line.
bhdgd-inifl = 0.
NEW-PAGE.
ENDFORM. "NEW_PAGE
2. FORM SUMME_MERKEN *
Merken der Summeninformation *
FORM summe_merken.
CLEAR tbukrs.
tbukrs-bstat = bkpf-bstat.
tbukrs-bukrs = bkpf-bukrs.
tbukrs-bktxt = bkpf-bktxt.
tbukrs-gjahr = bkpf-gjahr.
tbukrs-monat = bkpf-monat.
tbukrs-dmsol = bsega-dmsol.
tbukrs-dmhab = bsega-dmhab.
IF 'DK' CA bseg-koart.
MOVE-CORRESPONDING tbukrs TO tbukrs_u.
tbukrs_u-koart = bseg-koart.
tbukrs_u-umskz = bseg-umskz.
tbukrs_u-dmsol = bsega-dmsol.
tbukrs_u-dmhab = bsega-dmhab.
COLLECT tbukrs_u.
tbukrs_u-monat = 0. "Summe für das Geschäftsjahr
COLLECT tbukrs_u.
ENDIF.
COLLECT tbukrs.
ENDFORM. "SUMME_MERKEN
3. FORM VORERFASSTE_STEUER_MERKEN *
Nachlesen der Steuerzeilen vorerfaßter Belege *
Gefüllt wird TBUKRS und der Extrakt *
FORM vorerfasste_steuer_merken.
CHECK hlp_bstat EQ 'V'.
SELECT * FROM vbset
WHERE ausbk EQ bkpf-bukrs
AND belnr EQ bkpf-belnr
AND gjahr EQ bkpf-gjahr.
CHECK vbset-hwste NE 0.
CLEAR: bseg, bsega.
bseg-koart = 'S'.
bseg-mwart = 'V'. "oder 'A', nur zum Füllen von T2
bseg-mwskz = vbset-mwskz.
IF vbset-shkzg EQ 'S'.
bsega-dmsol = vbset-hwste.
bsega-dmshb = vbset-hwste.
ELSE.
bsega-dmhab = vbset-hwste.
bsega-dmshb = - vbset-hwste.
ENDIF.
IF par_summ EQ space.
EXTRACT daten.
ENDIF.
PERFORM summe_merken.
ENDSELECT.
ENDFORM. "VORERFASSTE_STEUER_MERKEN
4. FORM BELEGKOPF_MERKEN *
Je Beleg werden gefüllt: *
T0 - Informationsflag *
FORM belegkopf_merken.
t0-info = 0. "Belegkopf
APPEND t0.
CASE hlp_bstat.
WHEN 'A'.
t0-info = 6. "Ausgleichsbeleg
APPEND t0.
WHEN 'B'.
t0-info = 7. "zurückgen. Ausgleichsbeleg
APPEND t0.
WHEN 'V'.
t0-info = 1. "vorerfaßter Beleg
APPEND t0.
WHEN 'W'.
t0-info = 5. "ersetzter vorerfaßter Beleg
APPEND t0.
WHEN 'Z'.
t0-info = 4. "gelöschter vorerfaßter Beleg
APPEND t0.
ENDCASE.
IF bkpf-xblnr NE space AND hlp_bstat NA 'BWZ'.
t0-info = 2. "Referenz
APPEND t0.
ENDIF.
IF bkpf-stblg NE space.
t0-info = 3. "Storno
APPEND t0.
ENDIF.
SORT t0.
ENDFORM. "BELEGKOPF_MERKEN
5. FORM BELEGZEILE_MERKEN *
Je Beleg werden gefüllt: *
T1 - Personenkonteninformation *
T2 - Steuerinformation (nicht bei vorerfaßten Belegen) *
T3 - Sachkonteninformation *
FORM belegzeile_merken.
Vendors/ Customers
IF bseg-koart CA 'DK'.
t1-koart = bseg-koart.
IF par_hkto EQ 'X'.
t1-ktonr = bseg-hkont.
ELSEIF bseg-koart EQ 'K'.
t1-ktonr = bseg-lifnr.
ELSE.
t1-ktonr = bseg-kunnr.
ENDIF.
t1-bschl = bseg-bschl.
t1-umskz = bseg-umskz.
t1-xnegp = bseg-xnegp.
t1-zlspr = bseg-zlspr. "CR 21709
t1-dmshb = bsega-dmshb.
t1-wrshb = bsega-wrshb.
t1-xfwae = space.
APPEND t1.
Read the vendor description.
IF bseg-koart = con_vendor.
flg_vendr2 = con_true.
flg_vendr3 = con_true.
CLEAR lfa1-name1.
SELECT SINGLE name1
INTO lfa1-name1
FROM lfa1
WHERE lifnr = bseg-lifnr.
ELSEIF bseg-koart = con_cust.
CLEAR kna1-name1.
SELECT SINGLE name1
INTO kna1-name1
FROM kna1
WHERE kunnr = bseg-kunnr.
ENDIF.
IF bkpf-waers EQ t001-waers.
CLEAR t1.
ENDIF.
t1-xfwae = 'X'.
t1-name1 = lfa1-name1.
IF t1-name1 IS INITIAL.
t1-name1 = kna1-name1.
ENDIF.
APPEND t1.
CLEAR:
kna1-name1,
lfa1-name1.
CLEAR t1.
Save the hash total amounts
CLEAR tcurx-currdec.
SELECT SINGLE currdec
INTO tcurx-currdec
FROM tcurx
WHERE currkey = bkpf-waers.
IF tcurx-currdec = 1.
factor = 10.
ELSE.
factor = 100.
ENDIF.
CLEAR hash_totals.
hash_totals-bukrs = bkpf-bukrs.
CONCATENATE bkpf-monat '/' bkpf-gjahr INTO hash_totals-poper.
IF bsega-wrshb < 0.
hash_totals-cramt = bsega-wrshb * factor.
ELSE.
hash_totals-dramt = bsega-wrshb * factor.
ENDIF.
COLLECT hash_totals.
Tax accounts
ELSEIF bseg-mwart CA 'AV'.
t2-mwskz = bseg-mwskz.
t2-dmshb = bsega-dmshb.
APPEND t2.
IF flg_vendr2 = con_true.
flg_vendr2 = con_false.
CLEAR t2.
APPEND t2.
ENDIF.
GL Accounts
ELSEIF hlp_bstat NA 'ABWZ'.
t3-mwskz = bseg-mwskz.
t3-bschl = bseg-bschl.
t3-xnegp = bseg-xnegp.
t3-koart = bseg-koart.
t3-hkont = bseg-hkont.
t3-dmshb = bsega-dmshb.
APPEND t3.
IF flg_vendr3 = con_true
OR NOT bseg-kostl IS INITIAL
OR NOT bseg-prctr IS INITIAL.
flg_vendr3 = con_false.
CLEAR t3.
t3-kostl = bseg-kostl.
t3-prctr = bseg-prctr.
APPEND t3.
CLEAR t3.
ENDIF.
ENDIF.
ENDFORM. "BELEGZEILE_MERKEN
6. FORM BELEG_SCHREIBEN *
Ausgabe der Belginformationen *
FORM beleg_schreiben.
DATA:
len TYPE i.
Berechnung der benötigten Zeilen pro Beleg
DESCRIBE TABLE:
t0 LINES cnt_t0,
t1 LINES cnt_t1,
t2 LINES cnt_t2,
t3 LINES cnt_t3.
cnt_max = cnt_t0.
IF cnt_max LT cnt_t1.
cnt_max = cnt_t1.
ENDIF.
IF cnt_max LT cnt_t2.
cnt_max = cnt_t2.
ENDIF.
IF cnt_max LT cnt_t3.
cnt_max = cnt_t3.
ENDIF.
ADD 1 TO cnt_max.
IF cnt_max LE 10.
RESERVE cnt_max LINES.
ELSE.
RESERVE 5 LINES.
ENDIF.
SUBTRACT 1 FROM cnt_max.
Farbe setzen
IF flg_color EQ 0.
FORMAT COLOR 2 INTENSIFIED OFF.
flg_color = 1.
ELSE.
FORMAT COLOR 2 INTENSIFIED.
flg_color = 0.
ENDIF.
Index fuer optische Archivierung
PERFORM new-group(rsbtchh0).
DO cnt_max TIMES.
Belegkopfinformationen
WRITE /1 sy-vline NO-GAP.
IF sy-index LE cnt_t0.
READ TABLE t0 INDEX sy-index.
CASE t0-info.
WHEN 0. "Belegkopf
hlp_belnr = bkpf-belnr. "Belegnr. mit führenden Nullen
Referenz auf Originalbeleg
PERFORM start_doc_reference(rsbtchh0)
USING bkpf-bukrs bkpf-belnr bkpf-gjahr bkpf-bktxt. " change*
WRITE:
bkpf-bukrs,
hlp_belnr,
bkpf-blart,
bkpf-budat DD/MM/YYYY.
Ende der Referenz auf Originalbeleg
PERFORM end_doc_reference(rsbtchh0).
WHEN 1. "Vorerfaßter Beleg
WRITE:
(29) text-507.
WHEN 2. "Referenz
WRITE:
(12) text-503,
bkpf-xblnr.
WHEN 3. "Storno
WRITE:
(12) text-504,
bkpf-stblg.
WHEN 4. "Gelöschter vorerfaßter Beleg
WRITE:
(29) text-507,
(40) text-508.
WHEN 5. "Ersetzter vorerfaßter Beleg
txt_line = text-509.
REPLACE:
'&BLN' WITH bkpf-xblnr(10) INTO txt_line,
'&GJR' WITH bkpf-xblnr+10 INTO txt_line.
WRITE:
(29) text-507,
(40) txt_line.
WHEN 6. "Ausgleichsbeleg
WRITE: "
(29) text-510. "
WHEN 7. "zurückgen. Ausgleichsbeleg
WRITE: "
(29) text-511. "
ENDCASE.
ENDIF.
Personenkonteninformationen
Subledger Account Information
WRITE 31(1) sy-vline NO-GAP.
Internal tables T0 - T5 hold data for each section.
IF sy-index LE cnt_t1.
READ TABLE t1 INDEX sy-index.
IF par_hkto EQ 'X'.
PERFORM kontonummer USING t1-ktonr hlp_sakan.
ELSE.
hlp_sakan = t1-ktonr.
ENDIF.
IF t1-xfwae EQ space.
IF t1-xnegp = 'X'.
t1-xnegp = '-'.
ENDIF.
Write the vendor number.
WRITE: t1-koart,
hlp_sakan,
t1-bschl NO-GAP.
IF t1-umskz IS INITIAL.
WRITE: t1-xnegp NO-GAP,
t1-umskz.
ELSE.
WRITE: t1-umskz NO-GAP,
t1-xnegp.
ENDIF.
WRITE: t1-zlspr. "CR 21709 / 23588
WRITE: (22) t1-dmshb CURRENCY t001-waers.
ELSE.
Write the document currency, amount and the
vendor/ customerHi,
Please see documentation of enhancement MM06E005 (transaction SMOD).
Userexit EXIT_SAPMM06E_016 is a component of enhancement MM06E005.
With that enhancement, you can
- Maintain/supply your own customer fields
- Update your own customer-specific tables
You cannot:
- Change standard fields
- Change data that depends on the document header in the items
- Change data that depends on an item in the document header
Please have a look at Business Add-In (BAdI) ME_PROCESS_PO_CUST.
Regards,
Edit -
Wrong Display of Japanese Currency in ALV Report
Dear Friends,
I am facing a problem in Displaying a Japanese Currency in the ALV Report Output. I am mentioning the Currency Key field and the Currency field in the Report.
For example, the amount field should be displaying as 22838 instead of 228.38 where this is correct in case of USD but not correct in case of JPY.
Code where the i am appending the fieldcatlog:
ls_fieldcat-fieldname = 'WAERK'.
ls_fieldcat-datatype = 'CUKY'.
ls_fieldcat-outputlen = 8.
ls_fieldcat-seltext_l = Text-088.
ls_fieldcat-seltext_m = Text-088.
ls_fieldcat-seltext_s = Text-088.
ls_fieldcat-reptext_ddic = Text-088.
APPEND ls_fieldcat TO lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BUCK0'.
ls_fieldcat-datatype = 'CURR'.
ls_fieldcat-outputlen = 16.
ls_fieldcat-seltext_l = Text-017.
ls_fieldcat-seltext_m = Text-017.
ls_fieldcat-seltext_s = Text-017.
ls_fieldcat-reptext_ddic = Text-017.
Please do suggest if any inputs on the same.
Thanks in Advance for you reply.
Thanks and Regards,
Saritha KHi,
All the Decimals related to currency fields will be stored in the table tcurx.
You have to get the currency and respective decimals into internal table.
Read the internal the table with key equal to currency.
And calculate the values as below :
loop at gt_output.
READ TABLE gt_tcurx WITH KEY currkey = gt_output-zwaers.
IF sy-subrc EQ 0.
IF gt_tcurx-currdec = '0'.
gt_output-dmbtr = gt_output-dmbtr * 100.
ELSEIF gt_tcurx-currdec = '3'.
gt_output-dmbtr = gt_output-dmbtr / 10.
ENDIF.
ENDIF.
MODIFY gt_output.
endloop. Then pass the gt_output to ALV FM.
In the above code gt_output is my final internal table which i am passing to the ALV FM. And gt_tcurx is the internal table consists of all the currency and their decimals.
Thanks,
Sri. -
Decimal places for JPY currency in change documents
Hi Gurus,
For opportunities in SAP GUI the change documents for JPY show incorrect numbers.
The number is divided by 100 (two decimal places added).
Checked the CDPOS table and found the values already divided (two decimal places added).
SPRO->General Settings->Currencies->Set decimal places for currencies is set for 0 decimals for JPY.
Is there any way I can get correct values in the change documents?
Please advice. Any hint is useful.
Thx,
Martin KumaHi Naren,
Thank you for the tip, however the TCURX table is changed via customizing and should be changed only during the system initialization.
What I would like to do, is to assure that the system displays the values in change documents correctly. It should apply the currency conversion for the data displayed the same way it does for all the tables.
Do you have any idea, how should I do this?
Regards,
Martin Kuma -
Problem with JPY and KRW currency in PDf printing
Hello,
we are printing the PDF account statement. Till today for KRW and JPY currencies, if the value is 30000 ( I mean more than 3 digits ), then it is printing as 30 000 ( space as seperator ). But we have tried to post a document and checked it for the value 300. in the output PDF, it is printing 300,00 which is wrong.
It should print as 300 only as this dont have any decimals ( from TCURX table). I have declared the amount variable as char16. Because I had other requirement where I need to print space as thousand seperator and comma as decimal seperator ( eg: 1 221,85 ). Now everything is printing fine except for JPY and KRW currencies amounts.
I understood that this problem is occuring only when the amount for JPY or KRW currency is less than or equal to 3 digits.
I have checked some of the posts and gone through the some of the OSS notes, but i couldnot the exact one which could solve my issue.
Can anyone please help me in fixing this issue ?
Thanks in advance..!!!
Best regards,
Karthik.Hello Karthik
You can explicitly multiply the amount by 100 for JPY KRW currency and display the rounded figure (use function trunc)
Have you tried using FM FM BAPI_CURRENCY_CONV_TO_EXTERNAL to format the currency amount.
Regards
Sandy -
Error in task -Downloading a file from report
Hi all,
This is my code to download the content of report to Excel,Problem i am getting when trying to put heading for numerical fields .Its getting '0' in the heading .For remaining Fields which are non-numberic its displaying nicely.Could any one solve this for me.
report zt11.
data : itab type mard occurs 0 .
select * from mard into table itab .
data: it_t001 type t001 occurs 0,
it_fields type dfies occurs 0 with header line,
begin of it_fnames occurs 0,
reptext like dfies-reptext,
end of it_fnames.
CALL FUNCTION 'GET_FIELDTAB'
EXPORTING
LANGU = SY-LANGU
ONLY = ' '
TABNAME = 'MARD'
WITHTEXT = 'X'
IMPORTING
HEADER =
RC =
TABLES
FIELDTAB = it_fields
EXCEPTIONS
INTERNAL_ERROR = 1
NO_TEXTS_FOUND = 2
TABLE_HAS_NO_FIELDS = 3
TABLE_NOT_ACTIV = 4
OTHERS = 5
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_fields.
it_fnames-reptext = it_fields-reptext.
append it_fnames.
endloop.
CALL FUNCTION 'EXCEL_OLE_STANDARD_DAT'
EXPORTING
FILE_NAME = 'C:\T001'
CREATE_PIVOT = 0
DATA_SHEET_NAME = 'Companies'
PIVOT_SHEET_NAME = ' '
PASSWORD = ' '
PASSWORD_OPTION = 0
TABLES
PIVOT_FIELD_TAB =
DATA_TAB = itab
FIELDNAMES = it_fnames
EXCEPTIONS
FILE_NOT_EXIST = 1
FILENAME_EXPECTED = 2
COMMUNICATION_ERROR = 3
OLE_OBJECT_METHOD_ERROR = 4
OLE_OBJECT_PROPERTY_ERROR = 5
INVALID_FILENAME = 6
INVALID_PIVOT_FIELDS = 7
DOWNLOAD_PROBLEM = 8
OTHERS = 9
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
short dump : unable to interpret the "..... " as number.Hi,
You are not formatting the internal table for field labels correctly.
See the attached code and do accordingly.
This will help you.
Reward for useful answers.
report zesdr001
line-size 215
line-count 65
no standard page heading
message-id zv.
Tables Declaration
tables:vbrk, " Sales Document: Billing Header Data
mara, " Material Master Data
mbew, " Material Valuation data
mbewh, " Material Valuation: History Data
t001, " Company Codes
t001w, " Plants/Branches
konv, " Pricing Conditions Data
t179t, " Materials: Product hierarchies: Texts
tcurx, " Currency Conversion Table
vbuk, " Sales Document: Header Status data
tvko, " Organizational Unit: Sales Organizations
tvtw, " Organizational Unit: Dist.Channels
tspa, " Organizational Unit: Divisions
tvfk, " Billing Document Types
kna1. " Customer Master Data
Declaration of Data and Internal Tables
Internal table to store the Billing Details data.(VBRK,VBRP)
data: begin of itab_bill occurs 0,
vbeln like vbrk-vbeln, " Billing Document Number
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
fkart like vbrk-fkart, " Billing Doc type
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange type
knumv like vbrk-knumv, " Condition Number
waerk like vbrk-waerk, " Currency
kunag like vbrk-kunag, " Sold to Party
vrkme like vbrp-vrkme, " sales Unit
posnr like vbrp-posnr, " Item Number
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material Number
netwr like vbrp-netwr, " Net Value of the doc
wavwr like vbrp-wavwr, " Cost in Doc Currency
kdmat like vbap-kdmat, " Customer Material
end of itab_bill.
Internal table to write the report output when Customer Mode
Radiobutton is selected
data: begin of itab_out occurs 0,
kunag like vbrk-kunag, " Customer No
vbeln like vbrk-vbeln, " Billing Document Number
fkart like vbrk-fkart, " Billing Doc type
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
kunnr like kna1-kunnr, " Customer
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange Rate
waerk like vbrk-waerk, " Currency
vrkme like vbrp-vrkme, " Sales Unit
posnr like vbrp-posnr, " Item Number
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material NUmber
kdmat like vbap-kdmat, " Customer Material
bil_amt(16) type p decimals 2, " Bill Amount
mode(10), " Mode
density(10), " Density
sel_prc(16) type p decimals 2, " Selling Price
mvg_prs like mbew-verpr, " Moving Price
gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)
gp_mvp_pr(6) type p decimals 2, " ,, percentage
end of itab_out.
Internal table to write the report output when Mode
Radiobutton is selected
data: begin of itab_out2 occurs 0,
mode(10),
vbeln like vbrk-vbeln, " Billing Document Number
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
kunag like vbrk-kunag, " Sold to party
kunnr like kna1-kunnr, " Customer
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange Rate
waerk like vbrk-waerk, " Currency
vrkme like vbrp-vrkme, " Sales UNit
posnr like vbrp-posnr, " Item No
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material Number
kdmat like vbap-kdmat, " Customer Material No
bil_amt(16) type p decimals 2, " Billing Amount
density(10), " density
sel_prc(16) type p decimals 4, " Selling Price
mvg_prs like mbew-verpr, " Moving Price
gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)
gp_mvp_pr(6) type p decimals 2, " ,, percentage
end of itab_out2.
Internal table to write the report output when Density
Radiobutton is selected
data: begin of itab_out3 occurs 0,
mode(10),
density(10),
vbeln like vbrk-vbeln, " Billing Document Number
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
kunag like vbrk-kunag, " Sold to Party
kunnr like kna1-kunnr, " Customer
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange Rate
waerk like vbrk-waerk, " Currency
vrkme like vbrp-vrkme, " Sales Unit
posnr like vbrp-posnr, " Item Number
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material Number
kdmat like vbap-kdmat, " Customer Material
bil_amt(16) type p decimals 2, " Bill Amount
sel_prc(16) type p decimals 4, " Selling Price
mvg_prs like mbew-verpr, " Moving Price
gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)
gp_mvp_pr(6) type p decimals 2, " ,, percentage
end of itab_out3.
*-Internal Table to Hold data to be downloaded to file
data: begin of itab_out1 occurs 0,
kunag(10), " Customer
vbeln(10), " Billing Doc No
fkdat(10), " Bill Date
posnr(6), " Item No
mode(6), " Mode
density(6), " Density
matnr(18), " Material
charg(10), " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
vrkme(4), " Sales Unit
sel_prc(14), " Selling Price
bil_amt(15) type p decimals 2, " Billing Amount
waerk(4), " Currency
mvg_prs(15), " Moving Price
gp_mvp_amt like vbrp-netwr, " Gross profit Amount(MVP)
gp_mvp_pr(15), " ,, percentage
kdmat(35), " Customer Material
end of itab_out1.
*Internal Table
data: begin of fieldnames occurs 0,
title(25) type c,
table(5) type c,
field(5) type c,
type(1) type c,
end of fieldnames.
Declaration Of Variables
data: w_period like bapi0002_4-fiscal_period,
w_year like bapi0002_4-fiscal_year,
w_date like bsad-budat,
w_lin type i. "No.of lines in Internal Table
data: t_fkimg like vbrp-fkimg,
t_bil_amt(8) type p decimals 2,
t_gp_mvp_amt(8) type p decimals 2,
t_gr_fkimg like vbrp-fkimg,
t_gr_bil_amt(8) type p decimals 2,
t_gr_gp_mvp_amt(8) type p decimals 2,
t_efkimg like vbrp-fkimg,
t_ebil_amt(8) type p decimals 2,
t_egp_mvp_amt(8) type p decimals 2.
data:f_flg .
Select-Options
selection-screen: begin of block b with frame.
selection-screen : begin of block b1 with frame title text-001.
select-options:s_bukrs for t001-bukrs no intervals no-extension
obligatory,
s_vkorg for tvko-vkorg no intervals no-extension,
s_vtweg for tvtw-vtweg no intervals no-extension,
s_spart for tspa-spart no intervals no-extension,
s_werks for t001w-werks no intervals no-extension,
s_kunag for kna1-kunnr,
s_vbeln for vbuk-vbeln,
s_fkart for tvfk-fkart,
s_fkdat for vbrk-fkdat obligatory.
selection-screen begin of line.
selection-screen comment 1(20) text-008.
selection-screen end of line.
selection-screen begin of line.
parameters p_cust type c radiobutton group cust.
selection-screen comment 3(20) text-004 for field p_cust.
selection-screen end of line.
selection-screen begin of line.
parameters p_mode type c radiobutton group cust.
selection-screen comment 3(20) text-006 for field p_mode.
selection-screen end of line.
selection-screen begin of line.
parameters p_dens type c radiobutton group cust.
selection-screen comment 3(20) text-007 for field p_dens.
selection-screen end of line.
selection-screen: end of block b1.
selection-screen : begin of block b2 with frame title text-002.
parameters: p_dwnlod as checkbox,
p_file like rlgrap-filename. " default 'C:\zesdr001'.
selection-screen: end of block b2.
selection-screen: end of block b.
*******At Selection Screen********************************************
at selection-screen.
At Selection Screen on Value Request
at selection-screen on value-request for p_file.
perform f4_help.
Checking for the input values of selection screen.
perform screen_check.
Top Of Page***************************************************
top-of-page.
perform rep_headers.
*******Start of Selection*********************************************
start-of-selection.
Selecting data from the database tables
perform invoice_selection.
describe table itab_bill lines w_lin.
if w_lin = 0.
message i008. " No Data Found for the Given Selection Criteria
else.
Moving the data records into output internal table
perform bill_details.
When Customer Radio button is selected
if p_cust eq 'X'.
perform invoice_output_cust.
When Mode Radio button is selected
elseif p_mode eq 'X'.
perform invoice_output_mode.
When density Radio button is selected
elseif p_dens eq 'X'.
perform invoice_output_dens.
endif.
endif.
*******End of Selection***********************************************
end-of-selection.
perform init_fieldnames.
if p_dwnlod = 'X'.
perform read_data_for_dowlload.
perform down_load_to_file using p_file.
perform download_excel using p_file.
endif.
*& Form screen_check
Ckecking for Selection Screen fields Validation
form screen_check.
Validation of Sales Organization
clear tvko.
if not s_vkorg-low is initial.
select vkorg from tvko up to 1 rows
into tvko-vkorg
where vkorg in s_vkorg.
endselect.
if sy-subrc ne 0.
message e009. " Invalid Sales Organization
endif.
endif.
Validation of Distribution Channel
clear tvtw.
if not s_vtweg-low is initial.
select vtweg from tvtw up to 1 rows
into tvtw-vtweg
where vtweg in s_vtweg.
endselect.
if sy-subrc ne 0.
message e010. " Invalid Distribution Channel
endif.
endif.
Validation of Division
clear tspa.
if not s_spart-low is initial.
select spart from tspa up to 1 rows
into tspa-spart
where spart in s_spart.
endselect.
if sy-subrc ne 0.
message e011. " Invalid Division
endif.
endif.
Validation for company code
clear t001.
if not s_bukrs-low is initial.
select single bukrs from t001
into t001-bukrs
where bukrs in s_bukrs.
if sy-subrc <> 0.
message e007. " Enter valid Company Code
endif.
endif.
Validation of billing Document Type
clear tvfk.
if not s_fkart is initial.
select fkart from tvfk up to 1 rows
into tvfk-fkart
where fkart in s_fkart.
endselect.
if sy-subrc ne 0.
message e012. " Invalid Billing Document Type
endif.
endif.
Validation of Billing Document Number
clear vbuk.
if not s_vbeln is initial.
select vbeln from vbuk up to 1 rows
into vbuk-vbeln
where vbeln in s_vbeln and
vbtyp = 'M'.
endselect.
if sy-subrc ne 0.
message e013. " Invalid Billing Doc Number
endif.
endif.
Validation of Customer
clear kna1.
if not s_kunag is initial.
select kunnr from kna1 up to 1 rows
into kna1-kunnr
where kunnr in s_kunag.
endselect.
if sy-subrc ne 0.
message e014. " Invalid Customer Number
endif.
endif.
Validation of Plant
clear t001w.
if not s_werks is initial.
select werks from t001w up to 1 rows
into t001w-werks
where werks in s_werks.
endselect.
if sy-subrc ne 0.
message e004. " Invalid Plant Number
endif.
endif.
Validation for File path to download
if p_dwnlod = 'X'.
if p_file is initial.
message e006. " Enter the Valid file path to Download
endif.
endif.
endform. "screen_check
FORM invoice_selection *
Selecting data from the database tables
form invoice_selection.
select
a~vbeln " Billing Doc Number
a~fktyp " Billing Category
a~vbtyp " Sales Doc category
a~fkdat " Billing doc date
a~fkart " Billing doc type
a~bukrs " Company code
a~kurrf " Exchange rate
a~knumv " Condition record Number
a~waerk " Currency
a~kunag " Sold to Party
b~vrkme " Sales Unit
b~posnr " Item Number
b~charg " Batch Number
b~fkimg " Billed quantity
b~werks " Plant
b~matnr " Material Number
b~netwr " Net Value of Bill Doc
b~wavwr " Cost in Doc Currency
c~kdmat " Customer Material
into table itab_bill
from vbrk as a join vbrp as b
on bvbeln = avbeln
join vbap as c
on baubel = cvbeln and
baupos = cposnr
where a~vbeln in s_vbeln and
a~fkdat in s_fkdat and
a~bukrs in s_bukrs and
a~vtweg in s_vtweg and
a~vkorg in s_vkorg and
a~spart in s_spart and
a~fkart in s_fkart and
b~werks in s_werks and
a~kunag in s_kunag and
a~sfakn eq ' ' and
a~fksto eq ' ' .
endform .
FORM bill_details *
appending data into itab_out internal table
form bill_details.
sort itab_bill by vbeln.
select single waers from t001 into t001-waers
where bukrs in s_bukrs.
data:f_txt1(10),f_txt2(10),f_txt3(10).
loop at itab_bill.
itab_out-vbeln = itab_bill-vbeln.
itab_out-fktyp = itab_bill-fktyp.
itab_out-vbtyp = itab_bill-vbtyp.
itab_out-fkdat = itab_bill-fkdat.
itab_out-fkart = itab_bill-fkart.
itab_out-bukrs = itab_bill-bukrs.
itab_out-kurrf = itab_bill-kurrf.
itab_out-waerk = itab_bill-waerk.
itab_out-kunag = itab_bill-kunag.
itab_out-vrkme = itab_bill-vrkme.
itab_out-posnr = itab_bill-posnr.
itab_out-charg = itab_bill-charg.
itab_out-fkimg = itab_bill-fkimg.
itab_out-werks = itab_bill-werks.
itab_out-matnr = itab_bill-matnr.
itab_out-kdmat = itab_bill-kdmat.
select single currdec from tcurx into tcurx-currdec
where currkey eq itab_out-waerk.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
itab_bill-netwr = itab_bill-netwr * 100.
itab_bill-wavwr = itab_bill-wavwr * 100.
endif.
endif.
itab_out-bil_amt = itab_bill-netwr.
clear : konv.
Pricing data from KONV table
select single kbetr kwert kpein from konv into
(konv-kbetr,konv-kwert,konv-kpein)
where knumv = itab_bill-knumv and
kposn = itab_bill-posnr and
kschl eq 'ZSP1' and
krech eq 'C' and
kinak eq ' '.
Currency conversion
select single currdec from tcurx into tcurx-currdec
where currkey eq itab_out-waerk.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
konv-kbetr = konv-kbetr * 100.
endif.
endif.
Unit Price
itab_out-sel_prc = konv-kbetr.
Unit Price Calculation
if not konv-kpein is initial.
itab_out-sel_prc = itab_out-sel_prc / konv-kpein .
endif.
Call Function to get the Period for the given Billing date
and Company Code
perform get_period.
Selecting Material Valuation Data
clear:mbew.
if itab_out-fktyp eq 'L'.
select single
lfmon lfgja verpr stprs vmver vmstp
from mbew
into (mbew-lfmon,mbew-lfgja,mbew-verpr,
mbew-stprs,mbew-vmver,mbew-vmstp)
where matnr = itab_out-matnr
and bwkey = itab_out-werks.
if mbew-lfmon = w_period and mbew-lfgja = w_year.
select single currdec from tcurx into tcurx-currdec
where currkey eq t001-waers.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
mbew-stprs = mbew-stprs * 100.
mbew-verpr = mbew-verpr * 100.
endif.
endif.
if itab_out-waerk eq t001-waers.
itab_out-mvg_prs = mbew-verpr ."/ itab_out-kurrf.
else.
itab_out-mvg_prs = mbew-verpr / itab_out-kurrf.
endif.
else.
clear:mbewh.
select single
lfmon lfgja verpr stprs
from mbewh
into (mbewh-lfmon,mbewh-lfgja,mbewh-verpr,
mbewh-stprs)
where matnr = itab_out-matnr
and bwkey = itab_out-werks
and lfmon = w_period
and lfgja = w_year.
select single currdec from tcurx into tcurx-currdec
where currkey eq t001-waers.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
mbewh-verpr = mbewh-verpr * 100.
endif.
endif.
if itab_out-waerk eq t001-waers.
itab_out-mvg_prs = mbewh-verpr ."/ itab_out-kurrf.
else.
itab_out-mvg_prs = mbewh-verpr / itab_out-kurrf.
endif.
if itab_out-mvg_prs is initial.
select single
lfmon lfgja verpr stprs vmver vmstp
from mbew
into (mbew-lfmon,mbew-lfgja,mbew-verpr,
mbew-stprs,mbew-vmver,mbew-vmstp)
where matnr = itab_out-matnr
and bwkey = itab_out-werks.
select single currdec from tcurx
into tcurx-currdec
where currkey eq t001-waers.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
mbew-verpr = mbew-verpr * 100.
endif.
endif.
if itab_out-waerk eq t001-waers.
itab_out-mvg_prs = mbew-verpr ."/ itab_out-kurrf.
else.
itab_out-mvg_prs = mbew-verpr / itab_out-kurrf.
endif.
endif.
endif.
endif.
To find Density and Mode from MARA and T179T tables
clear :mara,t179t.
select single prdha from mara
into mara-prdha
where matnr = itab_out-matnr.
select single vtext from t179t
into t179t-vtext
where spras = 'EN' and
prodh = mara-prdha(4).
split t179t-vtext at ' ' into f_txt1 f_txt2 f_txt3.
itab_out-mode = f_txt2.
itab_out-density = f_txt3.
if not itab_out-mvg_prs is initial.
if itab_out-fktyp eq 'L'.
itab_out-gp_mvp_amt = itab_out-bil_amt - itab_out-mvg_prs *
itab_out-fkimg.
else.
itab_out-gp_mvp_amt = '0'.
endif.
endif.
if not itab_out-mvg_prs is initial
and not itab_out-sel_prc is initial.
itab_out-gp_mvp_pr = ( itab_out-sel_prc - itab_out-mvg_prs )
/ itab_out-sel_prc * 100.
endif.
append itab_out.
clear itab_out.
endloop.
loop at itab_out.
if itab_out-vbtyp eq 'N' or itab_out-vbtyp eq 'O'.
itab_out-fkimg = itab_out-fkimg * -1.
itab_out-sel_prc = itab_out-sel_prc * -1.
itab_out-bil_amt = itab_out-bil_amt * -1.
itab_out-mvg_prs = itab_out-mvg_prs * -1.
itab_out-gp_mvp_amt = itab_out-gp_mvp_amt * -1.
itab_out-gp_mvp_pr = itab_out-gp_mvp_pr * -1.
If the bill amount is 0 then the quantity should also be 0.
if itab_out-bil_amt = 0.
itab_out-fkimg = 0.
endif.
Check if the Bill amount is Credit memo amount, then the gross profit
should also be the same bill amount irrespecitve of +ve or -ve.
if itab_out-gp_mvp_amt = 0.
move: itab_out-bil_amt to itab_out-gp_mvp_amt.
endif.
modify itab_out.
clear itab_out.
endif.
endloop.
endform.
*& Form get_period
Getting Document Period
form get_period.
clear :w_period,w_year,w_date.
concatenate itab_out-fkdat(4)
itab_out-fkdat+4(2)
itab_out-fkdat+6(2)
into w_date.
call function 'BAPI_COMPANYCODE_GET_PERIOD'
exporting
companycodeid = itab_out-bukrs
posting_date = w_date
importing
fiscal_year = w_year
fiscal_period = w_period.
endform. " get_period
*& Form invoice_output_cust
Report Output when customer is selected
form invoice_output_cust.
write at /1(214) sy-uline.
sort itab_out by kunag vbeln fkart posnr fkdat.
loop at itab_out.
if f_flg = 'X'.
format color col_normal intensified off.
f_flg = ' '.
else.
format color col_normal intensified on.
f_flg = 'X'.
endif.
at new kunag.
read table itab_out index sy-tabix.
endat.
write: /01 sy-vline, 2(10) itab_out-kunag,
12 sy-vline, 13(10) itab_out-vbeln,
23 sy-vline, 24(6) itab_out-posnr,
30 sy-vline, 31(10) itab_out-fkdat,
41 sy-vline, 42(6) itab_out-mode,
48 sy-vline, 49(7) itab_out-density,
56 sy-vline, 57(18) itab_out-matnr,
75 sy-vline, 76(10) itab_out-charg,
86 sy-vline,
87(13) itab_out-fkimg unit itab_out-vrkme no-sign,
102(3) itab_out-vrkme,
105 sy-vline,
106(14) itab_out-sel_prc currency konv-waers no-sign,
120 sy-vline,
121(15) itab_out-bil_amt currency vbrk-waerk no-sign,
138(3) itab_out-waerk,
141 sy-vline,
142(15) itab_out-mvg_prs currency vbrk-waerk no-sign,
157 sy-vline,
158(15) itab_out-gp_mvp_amt currency vbrk-waerk no-sign,
173 sy-vline,174(6) itab_out-gp_mvp_pr no-sign ,
180 sy-vline,181(33) itab_out-kdmat,
214 sy-vline.
t_fkimg = t_fkimg + itab_out-fkimg.
t_bil_amt = t_bil_amt + itab_out-bil_amt.
t_gp_mvp_amt = t_gp_mvp_amt + itab_out-gp_mvp_amt.
t_gr_fkimg = t_gr_fkimg + itab_out-fkimg.
t_gr_bil_amt = t_gr_bil_amt + itab_out-bil_amt.
t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out-gp_mvp_amt.
at end of kunag.
format reset.
format color col_total intensified off.
write:/1(214) sy-uline.
write:/01 sy-vline,
02 'Sub Total of Customer:'(035), itab_out-kunag,
87(13) t_fkimg unit itab_out-vrkme no-sign,
121(15) t_bil_amt no-sign,
158(15) t_gp_mvp_amt no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.
endat.
at last.
write:/01 sy-vline,
02 'Grand Total :'(032),
87(13) t_gr_fkimg unit itab_out-vrkme no-sign,
121(15) t_gr_bil_amt no-sign,
158(15) t_gr_gp_mvp_amt no-sign,
214 ' '.
endat.
format color off.
endloop.
write at /1(214) sy-uline.
endform. "invoice_output_cust
*& Form invoice_output_mode
Report Output
form invoice_output_mode.
loop at itab_out.
move-corresponding itab_out to itab_out2.
append itab_out2.
clear: itab_out2.
endloop.
write at /1(214) sy-uline.
sort itab_out2 by mode vbeln posnr fkdat.
loop at itab_out2.
if f_flg = 'X'.
format color col_normal intensified off.
f_flg = ' '.
else.
format color col_normal intensified on.
f_flg = 'X'.
endif.
at new mode.
read table itab_out2 index sy-tabix.
endat.
write: /01 sy-vline, 2(10) itab_out2-kunag,
12 sy-vline, 13(10) itab_out2-vbeln,
23 sy-vline, 24(6) itab_out2-posnr,
30 sy-vline, 31(10) itab_out2-fkdat,
41 sy-vline, 42(6) itab_out2-mode,
48 sy-vline, 49(7) itab_out2-density,
56 sy-vline, 57(18) itab_out2-matnr,
75 sy-vline, 76(10) itab_out2-charg,
86 sy-vline,
87(13) itab_out2-fkimg unit itab_out2-vrkme no-sign,
102(3) itab_out2-vrkme,
105 sy-vline,
106(14) itab_out2-sel_prc currency vbrk-waerk no-sign,
120 sy-vline,
121(15) itab_out2-bil_amt currency vbrk-waerk no-sign,
138(3) itab_out2-waerk,
141 sy-vline,
142(15) itab_out2-mvg_prs currency vbrk-waerk no-sign,
157 sy-vline,
158(15) itab_out2-gp_mvp_amt currency vbrk-waerk no-sign,
173 sy-vline,174(6) itab_out2-gp_mvp_pr no-sign,
180 sy-vline,181(33) itab_out2-kdmat,
214 sy-vline.
t_fkimg = t_fkimg + itab_out2-fkimg.
t_bil_amt = t_bil_amt + itab_out2-bil_amt.
t_gp_mvp_amt = t_gp_mvp_amt + itab_out2-gp_mvp_amt.
t_gr_fkimg = t_gr_fkimg + itab_out2-fkimg.
t_gr_bil_amt = t_gr_bil_amt + itab_out2-bil_amt.
t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out2-gp_mvp_amt.
at end of mode.
format reset.
format color col_total intensified off.
write:/1(214) sy-uline.
write:/01 sy-vline,
02 'Sub Total of Mode :'(033), itab_out2-mode,
87(13) t_fkimg unit itab_out-vrkme no-sign,
121(15) t_bil_amt no-sign,
158(15) t_gp_mvp_amt no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.
endat.
at last.
write:/01 sy-vline,
02 'Grand Total :'(032),
87(13) t_gr_fkimg unit itab_out-vrkme no-sign,
121(15) t_gr_bil_amt no-sign,
158(15) t_gr_gp_mvp_amt no-sign,
214 ' '.
endat.
format color off.
endloop.
write at /1(214) sy-uline.
endform. "invoice_output_mode
*& Form invoice_output_dens
Report Output
form invoice_output_dens.
loop at itab_out.
move-corresponding itab_out to itab_out3.
append itab_out3.
clear: itab_out3.
endloop.
write at /1(214) sy-uline.
sort itab_out3 by mode density vbeln posnr fkdat.
loop at itab_out3.
if f_flg = 'X'.
format color col_normal intensified off.
f_flg = ' '.
else.
format color col_normal intensified on.
f_flg = 'X'.
endif.
at new mode.
endat.
at new density.
read table itab_out3 index sy-tabix.
endat.
write: /01 sy-vline, 2(10) itab_out3-kunag,
12 sy-vline, 13(10) itab_out3-vbeln,
23 sy-vline, 24(6) itab_out3-posnr,
30 sy-vline, 31(10) itab_out3-fkdat,
41 sy-vline, 42(6) itab_out3-mode,
48 sy-vline, 49(7) itab_out3-density,
56 sy-vline, 57(18) itab_out3-matnr,
75 sy-vline, 76(10) itab_out3-charg,
86 sy-vline,
87(13) itab_out3-fkimg unit itab_out3-vrkme no-sign,
102(3) itab_out3-vrkme,
105 sy-vline,106(14) itab_out3-sel_prc no-sign,
120 sy-vline,
121(15) itab_out3-bil_amt currency vbrk-waerk no-sign,
138(3) itab_out3-waerk,
141 sy-vline,142(15) itab_out3-mvg_prs no-sign
currency vbrk-waerk,
157 sy-vline,158(15) itab_out3-gp_mvp_amt no-sign
currency vbrk-waerk,
173 sy-vline,174(6) itab_out3-gp_mvp_pr no-sign,
180 sy-vline,181(33) itab_out3-kdmat,
214 sy-vline.
t_efkimg = t_efkimg + itab_out3-fkimg.
t_ebil_amt = t_ebil_amt + itab_out3-bil_amt.
t_egp_mvp_amt = t_egp_mvp_amt + itab_out3-gp_mvp_amt.
t_fkimg = t_fkimg + itab_out3-fkimg.
t_bil_amt = t_bil_amt + itab_out3-bil_amt.
t_gp_mvp_amt = t_gp_mvp_amt + itab_out3-gp_mvp_amt.
t_gr_fkimg = t_gr_fkimg + itab_out3-fkimg.
t_gr_bil_amt = t_gr_bil_amt + itab_out3-bil_amt.
t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out3-gp_mvp_amt.
at end of density.
format reset.
format color col_total intensified off.
write:/1(214) sy-uline.
write:/01 sy-vline,
02 'Sub Total of Density :'(034), itab_out3-density,
87(13) t_efkimg unit itab_out-vrkme no-sign,
121(15) t_ebil_amt currency vbrk-waerk no-sign,
158(15) t_egp_mvp_amt currency vbrk-waerk no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_efkimg, t_ebil_amt,t_egp_mvp_amt.
endat.
at end of mode.
format reset.
format color col_total intensified off.
write:/01 sy-vline,
02 'Sub Total of Mode :'(033), itab_out3-mode,
87(13) t_fkimg unit itab_out-vrkme no-sign,
121(15) t_bil_amt no-sign,
158(15) t_gp_mvp_amt no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.
endat.
at last.
write:/01 sy-vline,
02 'Grand Total :'(032),
87(13) t_gr_fkimg unit itab_out-vrkme no-sign,
121(15) t_gr_bil_amt no-sign,
158(15) t_gr_gp_mvp_amt no-sign,
214 ' '.
endat.
format color off.
endloop.
write at /1(214) sy-uline.
endform. "invoice_output_dens
*& Form f4_help
To Get F4 Help to Select File Name
form f4_help.
call function 'F4_FILENAME'
exporting
program_name = sy-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
importing
file_name = p_file.
endform. " f4_help
*& Form rep_headers
Report Header
form rep_headers.
format color col_heading on.
format color col_heading on.
select single butxt from t001 into t001-butxt
where bukrs = s_bukrs-low.
skip 2.
write: /2 t001-butxt, 92 'BILLING ANALYSIS'(003),
190 'Date :'(010),sy-datum.
write :/2 'Company Code :'(011), s_bukrs-low ,
85 'Billing Date :'(012) , s_fkdat-low , '-' ,s_fkdat-high ,
190 'Page :'(013), sy-pagno,
214 ' '.
write at /1(214) sy-uline.
write: /1 sy-vline, 2(10) 'Customer'(004) centered,
12 sy-vline, 13(10) 'Billing'(009) centered,
23 sy-vline, 24(6) 'Billing'(009) centered,
30 sy-vline, 31(10) 'Billing'(009) centered,
41 sy-vline, 42(6) 'Mode'(006) centered,
48 sy-vline, 49(7) 'Density'(014) centered,
56 sy-vline, 57(18) 'Material'(015) centered,
75 sy-vline, 76(10) 'Batch'(016) centered,
86 sy-vline, 87(13) 'Quantity'(017) centered,102(3) 'UOM'(027),
105 sy-vline, 106(14) 'Selling'(018) centered ,
120 sy-vline, 121(15) 'Billing'(009) centered,
138(3) 'Cur'(028),
141 sy-vline, 142(15) 'Mvg.Avg.Price'(020) centered,
157 sy-vline, 158(22) 'Gross Profit(MVP)'(022) centered,
180 sy-vline, 181(33) 'Customer Material'(023) centered,
214 sy-vline.
write: /1 sy-vline, 2(10) 'Code'(024) centered,
12 sy-vline, 13(10) 'Document'(025) centered,
23 sy-vline, 24(6) 'Item'(026) centered,
30 sy-vline, 31(10) 'Date'(036) centered,
41 sy-vline,
48 sy-vline,
56 sy-vline,
75 sy-vline,
86 sy-vline,
105 sy-vline, 106(14) 'Price'(030) centered ,
120 sy-vline, 121(15) 'Amount'(031) centered,
141 sy-vline, 142(15) '(per Unit)'(019) centered,
157 sy-vline, 158(15) 'Amount'(031) centered,
173 sy-vline, 174(6) ' % '(029) centered,
180 sy-vline,
214 sy-vline.
format color off.
endform. " rep_headers
*& Form init_fieldnames
Initialise all the fields to download in Excel Data File
form init_fieldnames.
perform append_fieldname using text-004 'itab_out1'
'KUNAG' 'X'.
perform append_fieldname using text-037 'itab_out1'
'VBELN' 'X'.
perform append_fieldname using text-036 'itab_out1'
'FKDAT' 'X'.
perform append_fieldname using text-038 'itab_out1'
'POSNR' 'X'.
perform append_fieldname using text-006 'itab_out1'
'MODE' 'X'.
perform append_fieldname using text-014 'itab_out1'
'DENSITY' 'X'.
perform append_fieldname using text-015 'itab_out1'
'MATNR' 'X'.
perform append_fieldname using text-016 'itab_out1'
'CHARG' 'X'.
perform append_fieldname using text-017 'itab_out1'
'FKIMG' 'X'.
perform append_fieldname using text-039 'itab_out1'
'VRKME' 'X'.
perform append_fieldname using text-040 'itab_out1'
'SEL_PRC' 'X'.
perform append_fieldname using text-041 'itab_out1'
'BIL_AMT' 'X'.
perform append_fieldname using text-028 'itab_out1'
'WAERK' 'X'.
perform append_fieldname using text-020 'itab_out1'
'MVG_PRS' 'X'.
perform append_fieldname using text-044 'itab_out1'
'GP_MVP_AMT' 'X'.
perform append_fieldname using text-045 'itab_out1'
'GP_MVP_PR' 'X'.
perform append_fieldname using text-023 'itab_out1'
'KDMAT' 'X'.
endform.
*& Form append_fieldname
Appending field Names
form append_fieldname using p_title p_table p_field p_type.
clear: fieldnames.
fieldnames-title = p_title.
fieldnames-ta
Maybe you are looking for
-
Duplicate Sales Order - UserExit or BADI
Hi, I have a requirement for one of my workflow. When duplicate sales order is received through EDI , I need to notify to Customer service team. If purchase order and ship-to is same and PO date is within 30 days, need to notify that it is a duplicat
-
Simple Delete messages in XI/PI
We have scheduled these jobs to simple delete and it's working fine. One of the questions arrived that why Moni messages are still there, even though it's not required. Can we delete any trace of messages after 30 days? Is it duable? Please let me kn
-
Given: <abc attrib1="attrib1" attrib2="attrib2"></abc> Versus: <abc> <attrib1>attrib1</attrib1> <attrib2>attrib2</attrib2> </abc> I notice that the nodes would be indexed as "attribute" in the first case and "element" in the latter case. Is there any
-
Adobe Acrobat 8 Pro and digital signature
cannot use and register my digital signature in Adobe Acrobat 8 for Mac. I managed to use it under Windows, by the way. The Siemens HiPath SIM card uses OpenSC SCA http://www.opensc-project.org/sca It's on USB token, using built-in Mac OS X driver. I
-
Got a week 38 with Macy Gray...it's GORGEOUS! I hope iskin releases their case for it soon.