ABAP Memory (EXPORT/IMPORT) - Performance Issue
Performance wise, is it a good idea to use ABAP memory to export and import data between programs?
Thanks in advance,
JT
IMHO is you EXPORT/IMPORT a couple of variable...Your not going get any performance issues....So go ahead -:)
Greetings,
Blag.
Similar Messages
-
Hi
Please let me know how can i find the memory id name and from where for ABAP Memory .
For ex : IMPORT IM_EKPO-KNTTP FROM MEMORY ID 'EKPO_MO'
In the obove statement where can i find that this 'EKPO_MO' is memeory id ??
<< Moderator message - Everyone's problem is important. But the answers in the forum are provided by volunteers. Please do not ask for help quickly. >>
If in Export where to find that export ?
Edited by: Rob Burbank on Oct 24, 2011 12:17 PMHi
You can't find it...you can see it in the debug (there's a session showing all parameters set in the memory.
Of course if there's a IMPORT, there is an EXPORT but it can be very hard to konw where it's done,
- EKPO_MO is a label to assign to a part of memory, but it's created at runtime.
You can suppse it should be another program where the export is done, in generally it doesn't make a sense to use import/export from/to memory in the same report: this statament is usually used to transfer some data between several programms
Max -
Export-Clixml Performance Issues
I have a data collection script that pulls information from multiple data sources (mainly from AD) and builds arrays of custom PSObjects. Once I have the information stored in variables, I like to use Export-Clixml to create XML files that I can later
import and report on using PowerShell. This seems to work quite well with smaller collection (500-2500), but it seems to perform very badly with large collections (5000+).
So, are there any variable data limitations that I should be aware of? Are there specific limitations that I should be aware of when using Export-Clixml? Should I consider building custom XML documents to help address this issue?
Note: I cannot easily switch to use Export-Csv because many properties in the custom PSObjects have multiple values.
Suggestions?
~fr3ddPerhaps export-clixml has a performance issue based on the size of the XML object being processed. If so, anything you can do to limit the size should help. You way you have arrays of custom PSobjects, and seem to already writing each array out to a separate
XML file. Is there someway that you could chop it up a little finer? Say if an array has 50,000 elements, what if you would write it in 2500 element chunks to a series of xml files? You'd then have to read it back in in a way that re-establishes the original
array.
Or, if your PSobjects generally contain all of the properties of the corresponding AD object, you could consider that perhaps you do not need them all; or you could filter one small set of properties to one xml file and so on...
Al Dunbar -- remember to 'mark or propose as answer' or 'vote as helpful' as appropriate. -
Export DataSource Performance Issues
Hi,
System: BI 7 with DataStage and R3
Problem We just finished a technical upgrade to the BI 7 system from BW 30 and what has happened is post upgrade the export datasource setting for default data transfer has been changed.
Where can I change the settings for default data transfer (I know it can be changed in SBIW and SPRO for global settings). It is currently using dialog processes to transfer data but I want use background processes to transfer the data. I was not able to find anything about changing the type of process used for data transfer.
Thanks,
RahulPerhaps export-clixml has a performance issue based on the size of the XML object being processed. If so, anything you can do to limit the size should help. You way you have arrays of custom PSobjects, and seem to already writing each array out to a separate
XML file. Is there someway that you could chop it up a little finer? Say if an array has 50,000 elements, what if you would write it in 2500 element chunks to a series of xml files? You'd then have to read it back in in a way that re-establishes the original
array.
Or, if your PSobjects generally contain all of the properties of the corresponding AD object, you could consider that perhaps you do not need them all; or you could filter one small set of properties to one xml file and so on...
Al Dunbar -- remember to 'mark or propose as answer' or 'vote as helpful' as appropriate. -
DS6 export/import performance
Hi,
is it just me, or is LDIF export quite slow in DS6? For example:
725,000 Entries, DS6:
offline dsadm export: 44 minutes
online dsconf export: 44 minutes
online dsconf export -Q: 53 minutes
offline db2ldif -r: 47 minutes
As opposed to that:
725,000 Entries, DS5.2P4 (same machine, same cache sizes):
online db2ldif: 13 minutes
offline db2ldif -r: 10 minutes
Also import seems to be a bit slower for DS6.
I really liked the fast LDIF export, hope this gets fixed (if it's not a problem with my configuration).
Cheers,
HolgerI checked iostat, for DS6 export the disk is roughly as busy as for DS5.2P4, although the export for DS6 is much slower. So maybe the disk is the limiting factor. The question is why the disk load is almost the same, although DS6 throughput is around 4x less?Sorry, this information was wrong, I checked again. Disk usage was much higher with DS6. Busy percentages during export were roughly:
DS5.2P4: 40-50%
DS6: 80-90%
Then I realized some configuration difference, db cache files location was not in /tmp for DS6. After I changed that, performance for DS6 was much better:
DS6: 60-70% disk busy
15 minutes export time
Still not as fast as DS5.2P4, but acceptable for me. -
Hi All,
Is the ABAP memory ID global?
for example, I have FUNC1, in FUNC1, I export value to memory ID 'ABC'. the value of 'ABC' is valide for all other function call?
The porblem I experinced is that the FUNC1 may called by many interface at the SAME time, and because the memory ID id "global", it may cause problem.
Thanks,If you look at the documentation of the 'EXPORT' statement, you will see that data is stored in the ABAP memory not in SAP global memory. See below for an extract of the documentation.
Stores a data cluster in ABAP memory. The specified objects obj1 ... objn (fields, structures, complex structures, or tables) are stored as one cluster in ABAP memory.
If you call a transaction, an executable program, or a dialog module in call mode ( CALL TRANSACTION, SUBMIT, CALL DIALOG), the ABAP memory is retained, even over several call levels. The called transaction can import the data from ABAP memory using IMPORT ... FROM MEMORY. Each new EXPORT ... TO MEMORY overwrites the old data in ABAP memory. You cannot therefore append to data already in the ABAP memory.
When you leave the lowest level of the call chain, the ABAP memory is released.
SAP and ABAP/4 Memory
There is a difference between the cross-transaction SAP memory and the transaction-specific ABAP/4 memory.
SAP memory
The SAP memory, otherwise known as the global memory, is available to a user during the entire duration of a terminal session. Its contents are retained across transaction boundaries as well as external and internal sessions. The SET PARAMETER and GET PARAMETER statements allow you to write to, or read from, the SAP memory.
ABAP/4 memory
The contents of the ABAP/4 memory are retained only during the lifetime of an external session (see also Organization of Modularization Units). You can retain or pass data across internal sessions. The EXPORT TO MEMORY and IMPORT FROM MEMORY statements allow you to write data to, or read data from, the ABAP memory.
Please consult Data Area and Modularization Unit Organization documentation as well.
and Memory Structures of an ABAP Program
So, just based on this, your problem may not be related to the export statement or the import statement.
Are you making multiple function calls from the same program/transaction? In this case there is a chance of the memory getting overlaid. But if different people are using the transaction/program at the same time, but the function call is just once in the program/transaction, then you should not have this issue.
Srinivas -
Outlook performance issues with mountain lion
I have latest updates for Mountain Lion (10.8.2) and Outlook (14.2.5). I continue to have outlook performance issues where the ball just spins and rules aren't working as before. I tried disk doctor and still have same problem.s My MAC is less than a year old with 8 gig of memory. Some performance issues with fusion and safari too but nothing like outlook.
I am not sure if this is still an issue but I wanted to share that it has been resolved. Here is how to do it
https://discussions.apple.com/thread/4197578?start=30&tstart=0 -
Dear experts:
I got a problem with ABAP memory performance issue. I need to export an internal table to ABAP memory, and it's ID is sales order number. So, I will bulid too many ABAP memory in SAP...
Does it will couse performance issue or will it be lost?
tyroluHi Tyrolu,
There are some settings in basis which decides size of your abap memory.
If you are consuming most of the abap memory by exporting heavy objects to abap memory then
you may face a problem as many standard sap program aslo uses abap memory and
if there is no free abap memory then they will start thowing short dumps like "Page allocation error"
or "Could not allocate shared memory" or something like that, I don't remember exact term now.
In some cases you won't have any problem if users are less, but as the no of concurrent users
running your program increased then every user who runs the program would consume abap memory
and if there is no free abap memory then this may again lead to above mentioned problem.
Also ensure FREE MEMORY ID is used which clears abap memory immediatly.
Other wise abap memory is cleared by the garbage collector on random basis and by that time
your memory remains consumed and not available for other programs to use
which may again lead to above mentioned problem.
Regards,
Vishal -
Issue with Memory ID export / import
Hi Experts,
We are facing strange issue during export/import from memory ID.
We are exporting value to Memory ID from module pool program and trying to import same value in SAP workflow method.
While importing the value from memory ID it is failing to import and gives sy-subrc =4.
Any idea how can we do export/import in module pool program to Workflow method?
Regards,
SanjanaHi sanjana,
Please check the link. Here you can find some examples also.
http://wiki.scn.sap.com/wiki/display/Snippets/Import+and+Export+to+Cluster+Databases
P.S
http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3bf8358411d1829f0000e829fbfe/content.htm
You just need to create a key and an ID to save data into INDX table.Once its saved you can use same key and id to import .
Again mentioning , dont forget to delete using same key and ID once you have imported else it may give error.
Regards,
Sandeep Katoch -
Import and export performance issue
Hi,
There is #CLIENT_TEST# table having 2170178 records.
I am using following command to exp and imp, which is taking up more time, around 4 to 5 hrs.
Please help to improve the exp/imp performance. I'm using Oracle 10.2 version.
_Export:_
exp user/paswd@orcl file=<path> tables=(CLIENT_TEST) log=<path> buffer=409600 grants=Y rows=Y compress=N direct = Y
_Import:_
imp user/paswd@orcl file=<path> tables=(CLIENT_TEST) log=<path>commit=Y IGNORE=YES indexes=N Thanks in advance.Hi,
you can have a look at the newer kind of export/import: EXPDP and IMPDP. See documentation: http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_overview.htm#SUTIL100
It is faster than the old EXP/IMP.
Herald ten Dam
http://htendam.wordpress.com -
Bad performance on system, export/import buffer many sawps
Hello,
I have an ECC 6.0 system on AIX with 6 application servers. There seems to be a performance problem on the system, this issue is being noticed very well when people are trying to save a sale order for example, this operation takes about 10 minutes.
Sometimes we get short dumps TSV_TNEW_PAGE_ALLOC_FAILED or MEMORY_NO_MORE_PAGING but not very often.
I am not very good at studying the performance issues, but from what I could see is that there are may swaps on buffer export/import, program and generic key. Also the HitRatio is 88% at buffer export/import, which I think is pretty low.
I know that the maximum value accepted of swaps per day is 10000, is that right?
Can you please advice me what needs to be done in order for these swaps to decrese and hit ratio to increase? And also what else I should do in order to analyse and root cause and the bad performance of the system?
Many thannks,
manolivHi,
sappfpar determines the minimum and maximum (worst-case) swap space requirements of an R/3 application server. It also checks on shared memory requirements and that the em/initial_size_MB and abap/heap_area_total parameters are correctly set with the following procedure:
/usr/sap/<SYSTEMNAME>/SYS/exe/run/sappfpar check pf=/usr/sap/<SYSTMENAME>/SYS/profile/<Profile name>
At the end of the list, the program reports the minimum swap space, maximum heap space, and worst case swap space requirements:
Additional Swap Space Requirements :
You will probably need to increase the size of the swap space in hosts in which R/3 application servers run.
As a rule of thumb, swap space should equal
3 x Size of Main Storage or at least 1 GB, whichever is larger.
SAP recommends a swap space of 2-3 GB for optimal performance.
Determining Current Swap Space Availability: memlimits
You can find out how much swap space is currently available in your host system with R/3s memlimits program.
Heres how to run memlimits:
From the UNIX command prompt, run the R/3 memlimits program to check on the size of the available swap space on the host system on which an R/3 application server is to run.
The application server must be stopped, not running.
/usr/sap/<SYSTEMNAME>/SYS/exe/run/memlimits | more
The available swap space is reported in the output line Total available swap space: at the end of the program output. The program also indicates whether this amount of swap space will be adequate and determines the size of the data segments in the system. -
Performance Issue in a ABAP Report
Hi All,
I am facing a big performance issue in a abap program which produce the cash flow details our group of company. This is the logic I used to develop the report. (It is a SAP Script)
- First I am getting the closed customer payment records from the table BSAD ( eg: - Type 'DZ')
- Then I am getting the correcponding invoices from the BSAD using the same BELNR ( eg :- Type <> 'DZ')
- Then checking the GL Entry (BSIS) for the correspongding records which select in the second stage.
- In a Z tabel I am keeping the account list by grouping seperate section ( Eg: - Customer recipts, fixed assets...etc).
I have done the same thing to get the open Item balances also.
Report is correct and running perfectly, but my issue is it's takeing long time to process. Because of this I made this report to run as a background job. But still it is taking such a long time. ( For Eg: - If 1000 records selected from the first stage, it will take about more than onr hour to process, which is not good enough to run in a live environment)
Pls advice me how to improve the preformance of this.Hi Ravi,
I am sorry I had problem in my internet connection yesterday, because of that i couldn't reply u. Here is my code. I don't is there any way to send the code as a attachement since it is a little bit big one. I am going to paste that here any way.
Here zcashflow_matrix is the "Z" table where I am going to keep my account details by grouping.
REPORT ZCASH_FLOW.
INCLUDE <%_LIST>.
* Author Thanura ....... *
TYPES :BEGIN OF ty_voucher1,
kunnr LIKE bseg-kunnr,
dmbtr LIKE bseg-dmbtr,
belnr LIKE bseg-belnr,
hkont LIKE bseg-hkont,
shkzg LIKE bseg-shkzg,
xblnr LIKE bsad-xblnr,
budat LIKE bsad-bldat,
blart LIKE bsad-blart,
bldat LIKE bsad-bldat,
lifnr LIKE bseg-lifnr,
END OF ty_voucher1.
DATA :it_voucher1 TYPE STANDARD TABLE OF ty_voucher1 ,
wa_voucher1 TYPE ty_voucher1.
DATA : it_voucher2 TYPE STANDARD TABLE OF ty_voucher1,
wa_voucher2 TYPE ty_voucher1.
DATA : it_voucher3 TYPE STANDARD TABLE OF ty_voucher1,
wa_voucher3 TYPE ty_voucher1.
Data : w_ITCPO type ITCPO.
Data : w_ITCPP type ITCPP.
DATA : w_Rcptamt LIKE bseg-dmbtr,
w_Netamt LIKE bseg-dmbtr,
w_IntIncomeAmt LIKE bseg-dmbtr,
w_IntIncome LIKE bseg-dmbtr,
w_FixedAmt LIKE bseg-dmbtr,
w_fixedasst LIKE bseg-dmbtr,
w_Sundry LIKE bseg-dmbtr,
w_SundryAmt LIKE bseg-dmbtr,
w_SuppayAmt LIKE bseg-dmbtr,
w_Suppay LIKE bseg-dmbtr,
w_SuppayAmt1 LIKE bseg-dmbtr,
w_Suppay1 LIKE bseg-dmbtr,
w_DutyAmt LIKE bseg-dmbtr,
w_Duty LIKE bseg-dmbtr,
w_SalaryAmt LIKE bseg-dmbtr,
w_Salary LIKE bseg-dmbtr,
w_TaxAmt LIKE bseg-dmbtr,
w_Tax LIKE bseg-dmbtr,
w_TaxAmt1 LIKE bseg-dmbtr,
w_Tax1 LIKE bseg-dmbtr,
w_SellAmt LIKE bseg-dmbtr,
w_Sell LIKE bseg-dmbtr,
w_AdminAmt LIKE bseg-dmbtr,
w_Admin LIKE bseg-dmbtr,
w_loanAmt LIKE bseg-dmbtr,
w_loan LIKE bseg-dmbtr,
w_ManAmt LIKE bseg-dmbtr,
w_Man LIKE bseg-dmbtr,
w_CapitalAmt LIKE bseg-dmbtr,
w_Capital LIKE bseg-dmbtr,
w_GroupAmt LIKE bseg-dmbtr,
w_Group LIKE bseg-dmbtr,
w_IntAmt LIKE bseg-dmbtr,
w_Int LIKE bseg-dmbtr,
w_InterAmt LIKE bseg-dmbtr,
w_Inter LIKE bseg-dmbtr,
w_AdPayAmt LIKE bseg-dmbtr,
w_AdPay LIKE bseg-dmbtr,
w_GTotal LIKE bseg-dmbtr,
W_COMPANYNAME like zcompany-copmname.
DATA : w_ORcptamt LIKE bseg-dmbtr,
w_ONetamt LIKE bseg-dmbtr,
w_OIntIncomeAmt LIKE bseg-dmbtr,
w_OIntIncome LIKE bseg-dmbtr,
w_OFixedAmt LIKE bseg-dmbtr,
w_Ofixedasst LIKE bseg-dmbtr,
w_OSundry LIKE bseg-dmbtr,
w_OSundryAmt LIKE bseg-dmbtr,
w_OSuppayAmt LIKE bseg-dmbtr,
w_OSuppay LIKE bseg-dmbtr,
w_OSuppayAmt1 LIKE bseg-dmbtr,
w_OSuppay1 LIKE bseg-dmbtr,
w_ODutyAmt LIKE bseg-dmbtr,
w_ODuty LIKE bseg-dmbtr,
w_OSalaryAmt LIKE bseg-dmbtr,
w_OSalary LIKE bseg-dmbtr,
w_OTaxAmt LIKE bseg-dmbtr,
w_OTax LIKE bseg-dmbtr,
w_OTaxAmt1 LIKE bseg-dmbtr,
w_OTax1 LIKE bseg-dmbtr,
w_OSellAmt LIKE bseg-dmbtr,
w_OSell LIKE bseg-dmbtr,
w_OAdminAmt LIKE bseg-dmbtr,
w_OAdmin LIKE bseg-dmbtr,
w_OloanAmt LIKE bseg-dmbtr,
w_Oloan LIKE bseg-dmbtr,
w_OManAmt LIKE bseg-dmbtr,
w_OMan LIKE bseg-dmbtr,
w_OCapitalAmt LIKE bseg-dmbtr,
w_OCapital LIKE bseg-dmbtr,
w_OGroupAmt LIKE bseg-dmbtr,
w_OGroup LIKE bseg-dmbtr,
w_OIntAmt LIKE bseg-dmbtr,
w_OInt LIKE bseg-dmbtr,
w_OInterAmt LIKE bseg-dmbtr,
w_OInter LIKE bseg-dmbtr,
w_OAdPayAmt LIKE bseg-dmbtr,
w_OAdPay LIKE bseg-dmbtr.
DATA : w_NNetamt LIKE bseg-dmbtr,
w_NIntIncome LIKE bseg-dmbtr,
w_Nfixedasst LIKE bseg-dmbtr,
w_NSundry LIKE bseg-dmbtr,
w_NSuppay LIKE bseg-dmbtr,
w_NSuppay1 LIKE bseg-dmbtr,
w_NDuty LIKE bseg-dmbtr,
w_NSalary LIKE bseg-dmbtr,
w_NTax LIKE bseg-dmbtr,
w_NTax1 LIKE bseg-dmbtr,
w_NSell LIKE bseg-dmbtr,
w_NAdmin LIKE bseg-dmbtr,
w_Nloan LIKE bseg-dmbtr,
w_NMan LIKE bseg-dmbtr,
w_NCapital LIKE bseg-dmbtr,
w_NGroup LIKE bseg-dmbtr,
w_NInt LIKE bseg-dmbtr,
w_NInter LIKE bseg-dmbtr,
w_NAdPay LIKE bseg-dmbtr.
RANGES : r_bwart FOR bsad-blart.
TABLES: bsad.
* Internal tables Begin with IT_ *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs LIKE bsad-bukrs OBLIGATORY.
SELECT-OPTIONS: s_bldat FOR bsad-bldat OBLIGATORY.
* SELECT-OPTIONS: s_hkont FOR bsad-hkont .
PARAMETERS: p_gjahr LIKE bkpf-gjahr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1 .
* PARAMETERS : w_local TYPE char1 RADIOBUTTON GROUP g1 DEFAULT 'X'. .
* PARAMETERS : w_curr TYPE char1 RADIOBUTTON GROUP g1 .
w_ITCPO-TDNEWID = 'X'.
*w_itcpo-tdgetotf = 'X'.
*opern form
CALL FUNCTION 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
* DEVICE = 'PRINTER'
* DIALOG = ' '
form = 'ZCASHFLOW_FORM1'
* LANGUAGE = SY-LANGU
OPTIONS = w_ITCPO
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = '*'
* SPONUMIV =
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
* EXCEPTIONS
* CANCELED = 1
* DEVICE = 2
* FORM = 3
* OPTIONS = 4
* UNCLOSED = 5
* MAIL_OPTIONS = 6
* ARCHIVE_ERROR = 7
* INVALID_FAX_NUMBER = 8
* MORE_PARAMS_NEEDED_IN_BATCH = 9
* SPOOL_ERROR = 10
* CODEPAGE = 11
* OTHERS = 12
IF sy-subrc <> 0.
* message id sy-msgid type sy-msgty number sy-msgno
* with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
PERFORM select_data_closed.
PERFORM select_data_open.
* calculate the net figures
w_NNetamt = w_Netamt + w_ONetamt.
w_NIntIncome = w_IntIncome + w_OIntIncome.
*w_NInCompRct = w_InCompRct + w_OInCompRct.
w_NfixedAsst = w_fixedAsst + w_OfixedAsst.
w_NSundry = w_Sundry + w_OSundry.
w_NSuppay = w_Suppay + w_OSuppay.
w_NSuppay1 = w_Suppay1 + w_OSuppay1.
w_NDuty = w_Duty + w_ODuty.
w_NSalary = w_Salary + w_OSalary.
w_NTax = w_Tax + w_OTax.
w_NTax1 = w_Tax1 + w_OTax1.
w_NSell = w_Sell + w_OSell.
w_NAdmin = w_Admin + w_OAdmin.
w_NCapital = w_Capital + w_OCapital.
w_Nloan = w_loan + w_Oloan.
w_NMan = w_Man + w_OMan.
w_NGroup = w_Group + w_OGroup.
w_NInt = w_Int + w_OInt.
w_NInter = w_Inter + w_OInter.
w_NAdPay = w_AdPay + w_OAdPay.
w_GTotal = ( w_NNetamt + w_NIntIncome + w_NfixedAsst + w_NSundry ) - (
w_NSuppay + w_NSuppay1 + w_NDuty + w_NSalary + w_NTax + w_NTax1 +
w_NSell + w_NAdmin + w_NCapital + w_Nloan + w_NMan + w_NGroup + w_NInt +
w_NInter + w_NAdPay ).
* Write the Main Account Balance
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'MAIN'
function = 'SET'
type = 'BODY'
window = 'MAIN'.
IF sy-subrc <> 0.
** message id sy-msgid type sy-msgty number sy-msgno
** with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
w_ITCPP-TDNEWID = 'X'.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = w_ITCPP
* RDI_RESULT =
* TABLES
* OTFDATA =
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* SEND_ERROR = 3
* SPOOL_ERROR = 4
* CODEPAGE = 5
* OTHERS = 6
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM select_data_closed.
SELECT SINGLE copmname INTO w_companyname
FROM zcompany
WHERE copcode = p_bukrs.
* Select the receipts
SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher3
FROM bsad
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart = 'DZ'
* AND blart = 'DZ' and shkzg = 'S'
GROUP BY kunnr belnr hkont shkzg xblnr budat blart bldat.
SORT it_voucher3 BY kunnr.
LOOP AT it_voucher3 INTO wa_voucher3.
* Select the invoices
SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher1
FROM bsad
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart <> 'DZ' AND
augbl = wa_voucher3-belnr AND
kunnr = wa_voucher3-kunnr
GROUP BY belnr kunnr hkont shkzg xblnr budat blart bldat.
LOOP AT it_voucher1 INTO wa_voucher1.
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_Rcptamt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_Rcptamt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Netamt = w_Netamt + w_Rcptamt.
continue.
ENDIF.
ELSE.
w_Netamt = w_Netamt + w_Rcptamt.
continue.
ENDIF.
* Interest Income
SELECT SINGLE dmbtr FROM bsis INTO w_IntIncomeAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_IntIncomeAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_IntIncome = w_IntIncome + w_IntIncomeAmt.
continue.
ENDIF.
ELSE.
w_IntIncome = w_IntIncome + w_IntIncomeAmt.
continue.
ENDIF.
* Sale Of fixed Assets
SELECT SINGLE dmbtr FROM bsis INTO w_FixedAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_FixedAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_fixedasst = w_fixedasst + w_FixedAmt.
continue.
ENDIF.
ELSE.
w_fixedasst = w_fixedasst + w_FixedAmt.
continue.
ENDIF.
* Gl Receipts ( Sundry Income)
SELECT SINGLE dmbtr FROM bsis INTO w_SundryAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_SundryAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Sundry = w_Sundry + w_SundryAmt.
continue.
ENDIF.
ELSE.
w_Sundry = w_Sundry + w_SundryAmt.
continue.
ENDIF.
ENDLOOP.
ENDLOOP.
*Out Flow
r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'KZ'.
APPEND r_bwart TO r_bwart.
r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'VZ'.
APPEND r_bwart TO r_bwart.
SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher3
FROM bsak
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart IN r_bwart
* AND blart = 'DZ' and shkzg = 'S'
GROUP BY lifnr belnr hkont shkzg xblnr budat blart bldat.
SORT it_voucher3 BY lifnr.
LOOP AT it_voucher3 INTO wa_voucher3.
* Select the invoices
SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher1
FROM bsak
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart NOT IN r_bwart AND
augbl = wa_voucher3-belnr AND
lifnr = wa_voucher3-lifnr
GROUP BY belnr lifnr hkont shkzg xblnr budat blart bldat.
LOOP AT it_voucher1 INTO wa_voucher1.
* Supplier Payments (LOCAL)
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_SupPayAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_SupPayAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_SupPay = w_SupPay + w_SupPayAmt.
continue.
ENDIF.
ELSE.
w_SupPay = w_SupPay + w_SupPayAmt.
continue.
ENDIF.
* supplier Payments (Foreign )
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_SupPayAmt1 WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_SupPayAmt1 WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_SupPay1 = w_SupPay1 + w_SupPayAmt1.
continue.
ENDIF.
ELSE.
w_SupPay1 = w_SupPay1 + w_SupPayAmt1.
continue.
ENDIF.
* duty/clearing expenses
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_DutyAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY003' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_DutyAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY003' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Duty = w_Duty + w_DutyAmt.
continue.
ENDIF.
ELSE.
w_Duty = w_Duty + w_DutyAmt.
continue.
ENDIF.
* Salary /EPF/ETF/MSPS/OVERTIME
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_SalaryAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_SalaryAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Salary = w_Salary + w_SalaryAmt.
continue.
ENDIF.
ELSE.
w_Salary = w_Salary + w_SalaryAmt.
continue.
ENDIF.
* Income Taxes
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_TaxAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_TaxAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Tax = w_Tax + w_TaxAmt.
continue.
ENDIF.
ELSE.
w_Tax = w_Tax + w_TaxAmt.
continue.
ENDIF.
* other taxes ( VAT: TT:Debit tax )
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_TaxAmt1 WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY006' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_TaxAmt1 WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY006' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Tax1 = w_Tax1 + w_TaxAmt1.
continue.
ENDIF.
ELSE.
w_Tax1 = w_Tax1 + w_TaxAmt1.
continue.
ENDIF.
* Selling & Promotional Costs
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_SellAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY007' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_SellAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY007' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Sell = w_Sell + w_SellAmt.
continue.
ENDIF.
ELSE.
w_Sell = w_Sell + w_SellAmt.
continue.
ENDIF.
* Admistration costs
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_AdminAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY008' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_AdminAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY008' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Admin = w_Admin + w_AdminAmt.
continue.
ENDIF.
ELSE.
w_Admin = w_Admin + w_AdminAmt.
continue.
ENDIF.
* Capital Expenditure
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_CapitalAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY009' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_CapitalAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY009' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Capital = w_Capital + w_CapitalAmt.
continue.
ENDIF.
ELSE.
w_Capital = w_Capital + w_CapitalAmt.
continue.
ENDIF.
* Loan repayments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_LoanAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY010' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_LoanAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY010' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Loan = w_Loan + w_LoanAmt.
continue.
ENDIF.
ELSE.
w_Loan = w_Loan + w_LoanAmt.
continue.
ENDIF.
* maangment fees
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_ManAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY011' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_ManAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY011' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Man = w_Man + w_ManAmt.
continue.
ENDIF.
ELSE.
w_Man = w_Man + w_ManAmt.
continue.
ENDIF.
* Group charges
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_GroupAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY012' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_GroupAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY012' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Group = w_Group + w_GroupAmt.
continue.
ENDIF.
ELSE.
w_Group = w_Group + w_GroupAmt.
continue.
ENDIF.
* Interest Payments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_IntAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY013' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_IntAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY013' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Int = w_Int + w_IntAmt.
continue.
ENDIF.
ELSE.
w_Int = w_Int + w_IntAmt.
continue.
ENDIF.
* Other Intercompany payments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_InterAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY014' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_InterAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY014' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Inter = w_Inter + w_InterAmt.
continue.
ENDIF.
ELSE.
w_Inter = w_Inter + w_InterAmt.
continue.
ENDIF.
* Advacnes/Prepayments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_AdPayAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY015' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_AdPayAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY015' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_AdPay = w_AdPay + w_AdPayAmt.
continue.
ENDIF.
ELSE.
w_AdPay = w_AdPay + w_AdPayAmt.
continue.
ENDIF.
ENDLOOP.
ENDLOOP.
* Open Item Balances
ENDFORM. " Select_Data
FORM select_data_Open.
* SELECT SINGLE copmname INTO w_companyname
* FROM zcompany
* WHERE copcode = p_bukrs.
* Select the receipts
SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher3
FROM bsid
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart = 'DZ'
* AND blart = 'DZ' and shkzg = 'S'
GROUP BY kunnr belnr hkont shkzg xblnr budat blart bldat.
SORT it_voucher3 BY kunnr.
LOOP AT it_voucher3 INTO wa_voucher3.
* Select the invoices
SELECT SUM( dmbtr ) AS dmbtr belnr kunnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher1
FROM bsid
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart <> 'DZ' AND
augbl = wa_voucher3-belnr AND
kunnr = wa_voucher3-kunnr
GROUP BY belnr kunnr hkont shkzg xblnr budat blart bldat.
LOOP AT it_voucher1 INTO wa_voucher1.
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_ORcptamt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_ORcptamt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_ONetamt = w_ONetamt + w_ORcptamt.
continue.
ENDIF.
ELSE.
w_ONetamt = w_ONetamt + w_ORcptamt.
continue.
ENDIF.
* Interest Income
SELECT SINGLE dmbtr FROM bsis INTO w_OIntIncomeAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OIntIncomeAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OIntIncome = w_OIntIncome + w_OIntIncomeAmt.
continue.
ENDIF.
ELSE.
w_OIntIncome = w_OIntIncome + w_OIntIncomeAmt.
continue.
ENDIF.
* Sale Of fixed Assets
SELECT SINGLE dmbtr FROM bsis INTO w_OFixedAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OFixedAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_Ofixedasst = w_Ofixedasst + w_OFixedAmt.
continue.
ENDIF.
ELSE.
w_Ofixedasst = w_Ofixedasst + w_OFixedAmt.
continue.
ENDIF.
* Gl Receipts ( Sundry Income)
SELECT SINGLE dmbtr FROM bsis INTO w_OSundryAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OSundryAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'XX005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OSundry = w_OSundry + w_OSundryAmt.
continue.
ENDIF.
ELSE.
w_OSundry = w_OSundry + w_OSundryAmt.
continue.
ENDIF.
ENDLOOP.
ENDLOOP.
*Out Flow
Clear r_bwart.
refresh r_bwart.
r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'KZ'.
APPEND r_bwart TO r_bwart.
r_bwart-sign = 'I'. r_bwart-option = 'EQ'. r_bwart-low = 'VZ'.
APPEND r_bwart TO r_bwart.
SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher3
FROM bsik
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart IN r_bwart
* AND blart = 'DZ' and shkzg = 'S'
GROUP BY lifnr belnr hkont shkzg xblnr budat blart bldat.
SORT it_voucher3 BY lifnr.
LOOP AT it_voucher3 INTO wa_voucher3.
* Select the invoices
SELECT SUM( dmbtr ) AS dmbtr belnr lifnr hkont shkzg xblnr budat
blart bldat
INTO CORRESPONDING FIELDS OF TABLE it_voucher1
FROM bsik
WHERE bukrs = p_bukrs AND gjahr = p_gjahr
AND augdt IN s_bldat
AND blart NOT IN r_bwart AND
augbl = wa_voucher3-belnr AND
lifnr = wa_voucher3-lifnr
GROUP BY belnr lifnr hkont shkzg xblnr budat blart bldat.
LOOP AT it_voucher1 INTO wa_voucher1.
* Supplier Payments (LOCAL)
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OSupPayAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OSupPayAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY001' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OSupPay = w_OSupPay + w_OSupPayAmt.
continue.
ENDIF.
ELSE.
w_OSupPay = w_OSupPay + w_OSupPayAmt.
continue.
ENDIF.
* supplier Payments (Foreign )
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OSupPayAmt1 WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OSupPayAmt1 WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY002' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OSupPay1 = w_OSupPay1 + w_OSupPayAmt1.
continue.
ENDIF.
ELSE.
w_OSupPay1 = w_OSupPay1 + w_OSupPayAmt1.
continue.
ENDIF.
* duty/clearing expenses
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_ODutyAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY003' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_ODutyAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY003' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_ODuty = w_ODuty + w_ODutyAmt.
continue.
ENDIF.
ELSE.
w_ODuty = w_ODuty + w_ODutyAmt.
continue.
ENDIF.
* Salary /EPF/ETF/MSPS/OVERTIME
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OSalaryAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OSalaryAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY004' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OSalary = w_OSalary + w_OSalaryAmt.
continue.
ENDIF.
ELSE.
w_OSalary = w_OSalary + w_OSalaryAmt.
continue.
ENDIF.
* Income Taxes
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OTaxAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OTaxAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY005' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OTax = w_OTax + w_OTaxAmt.
continue.
ENDIF.
ELSE.
w_OTax = w_OTax + w_OTaxAmt.
continue.
ENDIF.
* other taxes ( VAT: TT:Debit tax )
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OTaxAmt1 WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY006' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OTaxAmt1 WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY006' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OTax1 = w_OTax1 + w_OTaxAmt1.
continue.
ENDIF.
ELSE.
w_OTax1 = w_OTax1 + w_OTaxAmt1.
continue.
ENDIF.
* Selling & Promotional Costs
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OSellAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY007' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OSellAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY007' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OSell = w_OSell + w_OSellAmt.
continue.
ENDIF.
ELSE.
w_OSell = w_OSell + w_OSellAmt.
continue.
ENDIF.
* Admistration costs
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OAdminAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY008' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OAdminAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY008' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OAdmin = w_OAdmin + w_OAdminAmt.
continue.
ENDIF.
ELSE.
w_OAdmin = w_OAdmin + w_OAdminAmt.
continue.
ENDIF.
* Capital Expenditure
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OCapitalAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY009' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OCapitalAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY009' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OCapital = w_OCapital + w_OCapitalAmt.
continue.
ENDIF.
ELSE.
w_OCapital = w_OCapital + w_OCapitalAmt.
continue.
ENDIF.
* Loan repayments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OLoanAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY010' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OLoanAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY010' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OLoan = w_OLoan + w_OLoanAmt.
continue.
ENDIF.
ELSE.
w_OLoan = w_OLoan + w_OLoanAmt.
continue.
ENDIF.
* maangment fees
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OManAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY011' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OManAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY011' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OMan = w_OMan + w_OManAmt.
continue.
ENDIF.
ELSE.
w_OMan = w_OMan + w_OManAmt.
continue.
ENDIF.
* Group charges
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OGroupAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY012' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OGroupAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY012' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OGroup = w_OGroup + w_OGroupAmt.
continue.
ENDIF.
ELSE.
w_OGroup = w_OGroup + w_OGroupAmt.
continue.
ENDIF.
* Interest Payments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OIntAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY013' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OIntAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY013' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OInt = w_OInt + w_OIntAmt.
continue.
ENDIF.
ELSE.
w_OInt = w_OInt + w_OIntAmt.
continue.
ENDIF.
* Other Intercompany payments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OInterAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY014' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OInterAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY014' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OInter = w_OInter + w_OInterAmt.
continue.
ENDIF.
ELSE.
w_OInter = w_OInter + w_OInterAmt.
continue.
ENDIF.
* Advacnes/Prepayments
* Find the corresponding entry in the GL open
SELECT SINGLE dmbtr FROM bsis INTO w_OAdPayAmt WHERE
* hkont = '0010003900' AND
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY015' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc <> 0.
* If the corresponding entry not found in GL open, look in the GL Closed
SELECT SINGLE dmbtr FROM bsas INTO w_OAdPayAmt WHERE
hkont IN ( select fglacc from zcashflow_matrix WHERE FCODE =
'YY015' ) AND bukrs = p_bukrs AND
gjahr = p_gjahr AND
belnr = wa_voucher1-belnr.
IF sy-subrc = 0.
w_OAdPay = w_OAdPay + w_OAdPayAmt.
continue.
ENDIF.
ELSE.
w_OAdPay = w_OAdPay + w_OAdPayAmt.
continue.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. " Select_Data -
Hi,
I want to know if a parameter ID of "export/import to memory" instruction is available in two differents session with different user's login?
tks
CarlosThe use of the shared buffer may be of some interest to you.
<b>From F1 help</b>
<i>EXPORT obj1 ... objn TO SHARED BUFFER dbtab(ar) ID key.
Additions:
1. ... = f (for each field you want to export)
2. ... FROM f (for each field you want to export)
3. ... CLIENT g (before ID key)
4. ... FROM wa (as last addition or after dbtab(ar))
In an ABAP Objects context, a more severe syntax check is performed that in other ABAP areas. See Implicit field names not allowed in clusters and Table work areas not allowed.
Effect
Stores a data cluster in the cross-transaction application buffer.The specified objects obj1 ... objn (fields, structures, or tables) are stored as a single cluster in the buffer.
The specified table dbtab must have a standard structure.
The buffer area for the table dbtab is divided into various logically-related areas (ar, two-character ID).
You can export a collection of data objects (data cluster) to an area of the buffer under a key of your own choosing (key field).
You can import individual data objects from this collection using the IMPORT statement (as long as the data has not been deleted from the buffer).
Notes
In classes, you must always specify explicit names for the data objects. Addition 1 or addition 2 is therefore obligatory.
In classes, you must always specify the work area explicitly. Addition 4 is therefore obligatory.
The table dbtab that you specify after SHARED BUFFER must be declared under TABLES (except in addition 4).
You cannot export the header line of an internal table. If you specify the name of an internal table with a header line, the system always exports the actual table data.
You cannot export data, object, and interface references.
Please consult Data Area and Modularization Unit Organization documentation as well.
Example
Exporting two fields and an internal table to the buffer with structure INDX:
TABLES INDX.
TYPES: BEGIN OF ITAB3_TYPE,
CONT(4),
END OF ITAB3_TYPE.
DATA: INDXKEY LIKE INDX-SRTFD VALUE 'KEYVALUE',
F1(4), F2 TYPE P,
ITAB3 TYPE STANDARD TABLE OF ITAB3_TYPE WITH
NON-UNIQUE DEFAULT KEY INITIAL SIZE 2,
WA_INDX TYPE INDX.
Fill data fields before CLUSTR
before the actual export
INDX-AEDAT = SY-DATUM.
INDX-USERA = SY-UNAME.
Export data.
EXPORT F1 FROM F1
F2 FROM F2
ITAB3 FROM ITAB3
TO SHARED BUFFER INDX(ST) FROM WA_INDX ID INDXKEY.
Addition 1
... = f (for each object you want to export)
Effect
Exports the contents of the field f and stores them under the specified name.
Addition 2
... FROM f (for each field you want to export)
Effect
Exports the contents of field f and stores them under the specified name.
Addition 3
... CLIENT g (before ID key)
Effect
The data objects are stored in client g (as long as the import/export table dbtab is client-specific).
Addition 4
... FROM wa (as last addition or after dbtab(ar))
Effect
Use this addition if you want to store user data fields in the application buffer. Instead of the table work area, the system uses the specified work area wa. The specified work area must have the same structure as the table dbtab.
Example
DATA WA LIKE INDX.
DATA F1.
WA-AEDAT = SY-DATUM.
WA-USERA = SY-UNAME.
WA-PGMID = SY-REPID.
EXPORT F1 = F1 TO SHARED BUFFER INDX(AR)
CLIENT '001' ID 'TEST'
FROM WA.
Note
Catchable runtime error
EXPORT_BUFFER_NO_MEMORY: The EXPORT data cluster is too big for the application buffer. This error should not occur often, since the buffer uses a procedure similar to the LRU(Least Recently Used) procedure to monitor the buffer contents. However, if the error does occur, you can increase the profile parameter rsdb/obj/buffersize (see Profile Parameter Attributes), which may help.</i>
Regards,
Rich Heilman -
Memory Limitation on EXPORT & IMPORT Internal Tables?
Hi All,
I have a need to export and import the internal tables to memory. I do not want to export it to any data base tables. is there a limitation on the amount of memroy that is can be used for the EXPORT & IMPORT. I will free the memory once I import it. The maximum I expect would be 13,000,000 lines.
Thanks,
Alex (Arthur Samson)You don't have limitations, but try to keep your table as small as possible.
Otherwise, if you are familiar with the ABAP OO context, try use Shared Objects instead of IMPORT/EXPORT.
<a href="http://help.sap.com/saphelp_erp2004/helpdata/en/13/dc853f11ed0617e10000000a114084/frameset.htm">SAP Help On Shared Objects</a>
Hope this helps,
Roby. -
Performance Issue in ABAP part as suggested by SE30 for the below coding
Dear Abapers,
The below coding was done by my seniors and having performance issue i.e in SE30 the abap part is consuming 98% of time.
Pl. help us to solve this situation.
With best regards,
S. Arunachalam.
the code is:
REPORT ZOBJLIST LINE-SIZE 320 NO STANDARD PAGE HEADING. "280 to 320
TABLES: MARA, MAKT, A916, KONP, MVKE, ZSAI_PARAM.
Input parameters *****************************************************
DATA IT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE.
DATA T_CLASS LIKE SCLASS OCCURS 0 WITH HEADER LINE.
DATA T_CLOBJDAT LIKE CLOBJDAT OCCURS 0 WITH HEADER LINE.
DATA FLG_COLOR TYPE C.
DATA WRK_CLASS LIKE KLAH-CLASS.
DATA WRK_PERCENT TYPE I. " Progress percentage
DATA WRK_LINES LIKE SY-TABIX. " To store the no. of lines in int.table
DATA WRK_PROGRESSTEXT(72) . " Progress indicator text
DATA : BEGIN OF IT_MATNR OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
BISMT LIKE MARA-BISMT, "Thanikai-17.05.2002
END OF IT_MATNR.
DATA : BEGIN OF IT_HEADER OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
CLART LIKE SCLASS-KLART,
CLASS LIKE SCLASS-CLASS,
BISMT LIKE MARA-BISMT, "Thanikai-17.05.2002
SCMNG(4) TYPE I, "Thanikai-03.10.2002
END OF IT_HEADER.
DATA : BEGIN OF IT_DETAILS OCCURS 0,
MATNR LIKE MARA-MATNR,
ZAEHL LIKE CLOBJDAT-ZAEHL,
ATNAM LIKE CLOBJDAT-ATNAM,
AUSP1 LIKE CLOBJDAT-AUSP1,
END OF IT_DETAILS.
DATA : BEGIN OF IT_DETAILS1 OCCURS 0,
MATNR LIKE MARA-MATNR,
ATNAM LIKE CLOBJDAT-ATNAM,
ZAEHL LIKE CLOBJDAT-ZAEHL,
END OF IT_DETAILS1.
DATA: IT_DETAILS2 LIKE IT_DETAILS1 OCCURS 0 WITH HEADER LINE.
DATA TMP_MATNR LIKE AUSP-OBJEK.
DATA WRK_FIELD(25).
DATA WRK_TABNAME(40). " Name of the int.table from wrk_fldname
DATA WRK_FIELDNAME(40). " Name of the fld name from wrk_fldname
DATA WRK_FLDNAME(40).
DATA T_CLOBJDAT_LINES LIKE SY-TABIX.
DATA WRK_LINES1 LIKE SY-TABIX.
DATA WRK_FIRST_TIME.
DATA TMP_STR.
DATA WRK_AUSP1 LIKE CLOBJDAT-AUSP1.
DATA: WRK_KBETR LIKE KONP-KBETR. "Thanikai-03.10.2002
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
*PARAMETERS:
SELECT-OPTIONS:
P_MATKL FOR MARA-MATKL DEFAULT 'DIAL' OBLIGATORY NO INTERVALS.
SELECT-OPTIONS : S_MATNR FOR MARA-MATNR MATCHCODE OBJECT MAT1.
SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
PARAMETERS: P_CLASS LIKE KLAH-CLASS,
P_KLART LIKE KLAH-KLART DEFAULT '001' OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : REQ RADIOBUTTON GROUP RGRP ,
NREQ RADIOBUTTON GROUP RGRP .
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN.
IF NOT P_CLASS IS INITIAL.
WRK_CLASS = P_CLASS.
ELSE.
WRK_CLASS = SPACE.
ENDIF.
TOP-OF-PAGE.
IF SY-BATCH NE 'X'.
PERFORM PRINT_TOP.
ENDIF.
START-OF-SELECTION.
SET PF-STATUS '9000'.
SELECT * INTO TABLE IT_MARA
FROM MARA CLIENT SPECIFIED
WHERE MANDT = SY-MANDT
AND MATKL IN P_MATKL
AND MATNR IN S_MATNR.
DESCRIBE TABLE IT_MARA LINES WRK_LINES.
MOVE 'Selecting Material Description' TO WRK_PROGRESSTEXT.
PERFORM SAPGUI USING WRK_PERCENT WRK_PROGRESSTEXT.
LOOP AT IT_MARA.
SELECT SINGLE * FROM MAKT CLIENT SPECIFIED
WHERE MANDT = SY-MANDT
AND MATNR = IT_MARA-MATNR
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
IT_MATNR-MATNR = IT_MARA-MATNR.
IT_MATNR-MAKTX = MAKT-MAKTX.
IT_MATNR-BISMT = IT_MARA-BISMT. "Thanikai-17.05.2002
ENDIF.
APPEND IT_MATNR.
CLEAR IT_MATNR.
ENDLOOP.
CLEAR WRK_LINES.
DESCRIBE TABLE IT_MATNR LINES WRK_LINES.
MOVE 'Selecting Class / characteristics for the Material'
TO WRK_PROGRESSTEXT.
PERFORM SAPGUI USING WRK_PERCENT WRK_PROGRESSTEXT.
LOOP AT IT_MATNR.
CLEAR: TMP_MATNR, T_CLASS, T_CLOBJDAT. "Thanikai-26.08.2002
REFRESH: T_CLASS, T_CLOBJDAT. "Thanikai-26.08.2002
TMP_MATNR = IT_MATNR-MATNR.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
CLASS = WRK_CLASS
CLASSTEXT = 'X'
CLASSTYPE = '001'
CLINT = ' '
FEATURES = 'X'
LANGUAGE = SY-LANGU
OBJECT = TMP_MATNR
OBJECTTABLE = 'MARA'
KEY_DATE = SY-DATUM
INITIAL_CHARACT = 'X'
NO_VALUE_DESCRIPT = 'X'
CHANGE_SERVICE_CLF = 'X'
INHERITED_CHAR = ' '
TABLES
T_CLASS = T_CLASS
T_OBJECTDATA = T_CLOBJDAT
EXCEPTIONS
NO_CLASSIFICATION = 1
NO_CLASSTYPES = 2
INVALID_CLASS_TYPE = 3
OTHERS = 4.
IF SY-SUBRC = 0.
READ TABLE T_CLASS INDEX 1.
IT_HEADER-MATNR = IT_MATNR-MATNR.
IT_HEADER-MAKTX = IT_MATNR-MAKTX.
IT_HEADER-BISMT = IT_MATNR-BISMT."Thanikai-17.05.2002
IT_HEADER-CLART = T_CLASS-KLART.
IT_HEADER-CLASS = T_CLASS-CLASS.
PERFORM PKG_DLVY_UNIT.
APPEND IT_HEADER.
CLEAR: IT_HEADER.
Code Start by Thanikai on 16.08.2002
LOOP AT T_CLOBJDAT.
IT_DETAILS-MATNR = IT_MATNR-MATNR.
IT_DETAILS-ZAEHL = T_CLOBJDAT-ZAEHL.
IT_DETAILS-ATNAM = T_CLOBJDAT-ATNAM.
IT_DETAILS-AUSP1 = T_CLOBJDAT-AUSP1.
APPEND IT_DETAILS.
ENDLOOP.
CLEAR: IT_DETAILS.
LOOP AT T_CLOBJDAT.
IT_DETAILS1-MATNR = IT_MATNR-MATNR.
IT_DETAILS1-ATNAM = T_CLOBJDAT-ATNAM.
IT_DETAILS1-ZAEHL = T_CLOBJDAT-ZAEHL.
APPEND IT_DETAILS1.
ENDLOOP.
CLEAR: IT_DETAILS1.
DESCRIBE TABLE IT_DETAILS1 LINES T_CLOBJDAT_LINES.
IF WRK_FIRST_TIME NE 'X'.
WRK_LINES1 = T_CLOBJDAT_LINES.
WRK_FIRST_TIME = 'X'.
IT_DETAILS2[] = IT_DETAILS1[].
ELSE.
IF T_CLOBJDAT_LINES GT WRK_LINES1.
WRK_LINES1 = T_CLOBJDAT_LINES.
IT_DETAILS2[] = IT_DETAILS1[].
ENDIF.
ENDIF.
CLEAR: T_CLOBJDAT_LINES.
CLEAR: IT_DETAILS1. REFRESH: IT_DETAILS1.
ENDIF.
Code end by Thanikai on 16.08.2002
ENDLOOP.
CLEAR: WRK_LINES1, WRK_FIRST_TIME.
Print Details *********************************
PERFORM PRINT_DETAILS.
AT USER-COMMAND.
GET CURSOR FIELD WRK_FIELD.
SPLIT WRK_FIELD AT '-' INTO WRK_TABNAME WRK_FLDNAME.
IF NOT WRK_FLDNAME IS INITIAL.
CASE SY-UCOMM.
WHEN 'SORA'.
IF SY-LSIND > 0.
SY-LSIND = SY-LSIND - 1. "To print in the same window
ENDIF.
PERFORM PRINT_REPORT_ASCENDING.
WHEN 'SORD'.
IF SY-LSIND > 0.
SY-LSIND = SY-LSIND - 1. "To print in the same window
ENDIF.
PERFORM PRINT_REPORT_DESCENDING.
ENDCASE.
ELSE.
MESSAGE S000(38) WITH 'Selete Material Number / Description'.
ENDIF.
*& Form SAPGUI
text
-->P_WRK_PERCENT text *
-->P_WRK_PROGRESSTEXT text *
FORM SAPGUI USING P_WRK_PERCENT
P_WRK_PROGRESSTEXT.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = WRK_PERCENT
TEXT = WRK_PROGRESSTEXT
EXCEPTIONS
OTHERS = 1.
ENDFORM. " SAPGUI
*& Form PRINT_REPORT_ASCENDING
text
--> p1 text
<-- p2 text
FORM PRINT_REPORT_ASCENDING.
IF WRK_TABNAME = 'IT_HEADER'.
SORT IT_HEADER BY (WRK_FLDNAME).
PERFORM PRINT_TOP.
PERFORM PRINT_DETAILS.
ENDIF.
ENDFORM. " PRINT_REPORT_ASCENDING
*& Form PRINT_DETAILS
text
--> p1 text
<-- p2 text
WRK_AUSP1 width chged below from (7)to(9) by Nagaraj/MKRK 24.11.05
FORM PRINT_DETAILS.
SORT IT_HEADER BY MATNR.
IF SY-BATCH EQ 'X'.
PERFORM PRINT_TOP.
ENDIF.
IF REQ = 'X'.
LOOP AT IT_HEADER.
IF FLG_COLOR = 'X'.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
CLEAR FLG_COLOR.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
FLG_COLOR = 'X'.
ENDIF.
WRITE :/ SY-VLINE NO-GAP,
(18) IT_HEADER-MATNR COLOR COL_KEY NO-GAP,
SY-VLINE NO-GAP,
(40) IT_HEADER-MAKTX NO-GAP,
SY-VLINE NO-GAP,
(18) IT_HEADER-BISMT NO-GAP, "Thanikai-17.05.2002
SY-VLINE NO-GAP.
Code started by Thanikai on 16.08.2002
LOOP AT IT_DETAILS2.
CLEAR: TMP_STR, WRK_AUSP1.
IF IT_DETAILS2-ATNAM EQ 'CALIBRE'.
LOOP AT IT_DETAILS WHERE MATNR = IT_HEADER-MATNR
AND ATNAM = IT_DETAILS2-ATNAM
AND ZAEHL = IT_DETAILS2-ZAEHL.
TMP_STR = 'X'.
WRK_AUSP1 = IT_DETAILS-AUSP1.
EXIT.
ENDLOOP.
IF TMP_STR EQ 'X'.
WRITE : (9)WRK_AUSP1 NO-GAP, SY-VLINE NO-GAP.
ELSE.
WRITE : ' ', SY-VLINE NO-GAP.
ENDIF.
ELSE.
LOOP AT IT_DETAILS WHERE MATNR = IT_HEADER-MATNR
AND ATNAM = IT_DETAILS2-ATNAM.
TMP_STR = 'X'.
WRK_AUSP1 = IT_DETAILS-AUSP1.
EXIT.
ENDLOOP.
IF TMP_STR EQ 'X'.
WRITE : (9)WRK_AUSP1 NO-GAP, SY-VLINE NO-GAP.
ELSE.
WRITE : ' ', SY-VLINE NO-GAP.
ENDIF.
ENDIF.
ENDLOOP.
WRITE : (8) IT_HEADER-SCMNG NO-GAP, SY-VLINE NO-GAP.
IF SY-LINNO > 25.
IF SY-BATCH EQ 'X'.
NEW-PAGE.
PERFORM PRINT_TOP.
ENDIF.
ENDIF.
Code end by Thanikai on 16.08.2002..
ENDLOOP.
ELSEIF NREQ = 'X'.
LOOP AT IT_HEADER.
IF FLG_COLOR = 'X'.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
CLEAR FLG_COLOR.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
FLG_COLOR = 'X'.
ENDIF.
WRITE :/ SY-VLINE NO-GAP,
(18) IT_HEADER-MATNR COLOR COL_KEY NO-GAP,
SY-VLINE NO-GAP,
(18) IT_HEADER-BISMT NO-GAP, "Thanikai-17.05.2002
SY-VLINE NO-GAP.
Code started by Thanikai on 16.08.2002
LOOP AT IT_DETAILS2.
CLEAR: TMP_STR, WRK_AUSP1.
IF IT_DETAILS2-ATNAM EQ 'CALIBRE'.
LOOP AT IT_DETAILS WHERE MATNR = IT_HEADER-MATNR
AND ATNAM = IT_DETAILS2-ATNAM
AND ZAEHL = IT_DETAILS2-ZAEHL.
TMP_STR = 'X'.
WRK_AUSP1 = IT_DETAILS-AUSP1.
EXIT.
ENDLOOP.
IF TMP_STR EQ 'X'.
WRITE : (9)WRK_AUSP1 NO-GAP, SY-VLINE NO-GAP.
ELSE.
WRITE : ' ', SY-VLINE NO-GAP.
ENDIF.
ELSE.
LOOP AT IT_DETAILS WHERE MATNR = IT_HEADER-MATNR
AND ATNAM = IT_DETAILS2-ATNAM.
TMP_STR = 'X'.
WRK_AUSP1 = IT_DETAILS-AUSP1.
EXIT.
ENDLOOP.
IF TMP_STR EQ 'X'.
WRITE : (9)WRK_AUSP1 NO-GAP, SY-VLINE NO-GAP.
ELSE.
WRITE : ' ', SY-VLINE NO-GAP.
ENDIF.
ENDIF.
ENDLOOP.
WRITE : (8) IT_HEADER-SCMNG NO-GAP, SY-VLINE NO-GAP.
IF SY-LINNO > 25.
IF SY-BATCH EQ 'X'.
NEW-PAGE.
PERFORM PRINT_TOP.
ENDIF.
ENDIF.
Code end by Thanikai on 16.08.2002
ENDLOOP.
ENDIF.
ULINE.
ENDFORM. " PRINT_DETAILS
*& Form PRINT_REPORT_DESCENDING
text
--> p1 text
<-- p2 text
FORM PRINT_REPORT_DESCENDING.
IF WRK_TABNAME = 'IT_HEADER'.
SORT IT_HEADER BY (WRK_FLDNAME) DESCENDING.
PERFORM PRINT_TOP.
PERFORM PRINT_DETAILS.
ENDIF.
ENDFORM. " PRINT_REPORT_DESCENDING
*& Form PRINT_TOP
text
--> p1 text
<-- p2 text
IT_DETAILS2-ATNAM width chged below from 7 to 9. Nagaraj/MKRK 24.11.05
FORM PRINT_TOP.
FORMAT COLOR COL_HEADING INTENSIFIED OFF.
ULINE.
IF REQ = 'X'.
READ TABLE IT_HEADER INDEX 1.
WRITE :/ SY-VLINE NO-GAP,(17) 'Material No' ,SY-VLINE NO-GAP.
SET LEFT SCROLL-BOUNDARY.
WRITE :(39) ' Material Description', SY-VLINE NO-GAP,
(17) ' Old Matl. Number', SY-VLINE NO-GAP. "Thanikai-17.05.2002
Comments made by Thanikai on 16.08.2002
LOOP AT IT_DETAILS WHERE MATNR = IT_HEADER-MATNR.
LOOP AT IT_DETAILS2.
WRITE : (9) IT_DETAILS1-ATNAM NO-GAP,SY-VLINE NO-GAP.
WRITE : (9) IT_DETAILS2-ATNAM NO-GAP,SY-VLINE NO-GAP.
ENDLOOP.
WRITE : (8) 'Pkg.Unit' NO-GAP, SY-VLINE NO-GAP.
ELSEIF NREQ = 'X'.
READ TABLE IT_HEADER INDEX 1.
WRITE :/ SY-VLINE NO-GAP, (17) 'Material No' ,SY-VLINE NO-GAP,
(17) ' Old Matl. Number', SY-VLINE NO-GAP. "Thanikai-17.05.2002
Comments made by Thanikai on 16.08.2002
LOOP AT IT_DETAILS WHERE MATNR = IT_HEADER-MATNR.
LOOP AT IT_DETAILS2.
WRITE : (9) IT_DETAILS-ATNAM NO-GAP,SY-VLINE NO-GAP.
WRITE : (9) IT_DETAILS2-ATNAM NO-GAP,SY-VLINE NO-GAP.
ENDLOOP.
WRITE : (8) 'Pkg.Unit' NO-GAP, SY-VLINE NO-GAP.
ENDIF.
ULINE.
FORMAT RESET.
ENDFORM. " PRINT_TOP
*& Form PKG_DLVY_UNIT
text
--> p1 text
<-- p2 text
FORM PKG_DLVY_UNIT.
SELECT SINGLE KONP~KBETR INTO WRK_KBETR
FROM ( A916 INNER JOIN KONP
ON KONP~MANDT = SY-MANDT
AND KONPKNUMH = A916KNUMH
AND KONP~KOPOS = '01' ) CLIENT SPECIFIED
WHERE A916~MANDT = SY-MANDT
AND A916~KAPPL = 'V'
AND A916~KSCHL = 'PR00'
AND A916~VKORG = 'WTCH'
AND A916~VTWEG = '01'
AND A916~SPART = '01'
AND A916~MATNR = IT_MATNR-MATNR
AND A916~DATBI >= SY-DATUM
AND A916~DATAB <= SY-DATUM.
IF SY-SUBRC EQ 0.
SELECT SINGLE * FROM ZSAI_PARAM CLIENT SPECIFIED
WHERE MANDT = SY-MANDT
AND PMFID = 'ZPKG_PRICE'
AND PMVL1 = '01'.
IF SY-SUBRC EQ 0.
IF WRK_KBETR BETWEEN 1 AND ZSAI_PARAM-PMVL2.
SELECT SINGLE * FROM MVKE CLIENT SPECIFIED
WHERE MANDT = SY-MANDT
AND MATNR = IT_MATNR-MATNR
AND VKORG = 'WTCH'
AND VTWEG = '01'.
IF SY-SUBRC EQ 0.
IF MVKE-SCMNG GE 1.
IT_HEADER-SCMNG = MVKE-SCMNG.
ELSE.
In the absence of delivery unit for a material,
delivery unit is considered as one.
IT_HEADER-SCMNG = 1.
ENDIF.
ELSE.
IT_HEADER-SCMNG = 1.
ENDIF.
ELSE.
If the price for a material is either below 1 or above 2499, then
the delivery unit is considered as one.
IT_HEADER-SCMNG = 1.
ENDIF.
ELSE.
IT_HEADER-SCMNG = 1.
ENDIF.
ELSE.
In the absence of price for a material, delivery unit is
considered as one.
IT_HEADER-SCMNG = 1.
ENDIF.
CLEAR: WRK_KBETR.
ENDFORM. " PKG_DLVY_UNITThe first point would be to change the following:
LOOP AT IT_MARA.
SELECT SINGLE * FROM MAKT CLIENT SPECIFIED
WHERE MANDT = SY-MANDT
AND MATNR = IT_MARA-MATNR
AND SPRAS = 'E'.
IF SY-SUBRC = 0.
IT_MATNR-MATNR = IT_MARA-MATNR.
IT_MATNR-MAKTX = MAKT-MAKTX.
IT_MATNR-BISMT = IT_MARA-BISMT. "Thanikai-17.05.2002
ENDIF.
APPEND IT_MATNR.
CLEAR IT_MATNR.
ENDLOOP.
I would sort IT_MARA by matnr then select for all entries into new table IT_matnr and only read when you are actuallygoing to use it for your final table.
This however will not make much difference to your problem. I suggest you put more of the code into subroutines and look at the se30 output as tyo which subroutines are actually taking most of the time. Please post the results and the subroutines which take the longest.
Maybe you are looking for
-
Drop-shipment PO from the Vendor to the Customer directly
Dear All, Can anyone one advice any drop-shipment scenarios how the Standard SAP should look like? Thank you very much, Regards, Chee Wee
-
OBI SE 1 Administration Tool as a client tool to another OBI SE1 instance
Our client has installed the OBI SE 1 on a "server" machine with no hassles. They then installed OBI SE 1 again on a different "client machine", in order to use, only the Administration Tool as a client tool to the other OBI SE 1 Server instance. The
-
Forms opening issue in ebs 11.5.10.2
Hi All, I installed ebs 11.5.10.2 on windows.I can log in successfully,but when I tried to open forms I am getting following error " the instruction at "0x6d4ac1f8" referenced memory at "0x6d4ac1f8" .The memory could not be "written" ". Please help m
-
Anyone seen this error message (pic)
http://farm5.static.flickr.com/4131/5063609092650eab9b7db.jpg Just found this random error message waiting for action on my screen. Has anyone encountered such error message before?
-
I have registered an xsd file and loaded data into this table couple of months back. Now the xsd file has changed with minor changes. The new data coming-in should be using news xsd file. How do i proceed with this. Options 1: Do i need to drop the p