ABAP OO and parallel processing
Hello ABAP community,
I am trying to implement a ABAP OO scenario where i have to take into account parallel processing and processing logic in the sense of update function modules (TYPE V1).
The szenario is definied as follows:
Frame class X creates a instance of class Y and a instance of class Z.
Classes Y and Z sould be processed in parallel, so class X calls classes Y and Z.
Classes Y and Z call BAPIS and do different database changes.
If classes Y or Z have finished, the status of processing is written into a status table by caller class X.
The processing logic within class Y and class Z should be a SAP LUW in the sense of a update function module (TYP V1).
Can i use events?
(How) Should i use "call function in upgrade task"?
(How) Should i use "call function starting new task"?
What is the best method to realise that behaviour?
Many thanks for your suggestions.
Hallo Christian,
I will describe you in detail, whow I have solved this
problem. May be there is a newer way ... but it works.
STEPS:
I asume you have splitt your data in packages.
1.) create a RFC-FM: Z_WAIT
It return OK or NOT OK.
This FM: does following:
DO.
call function TH_WPINFO -> until the WPINFO has more
than a certain number of lines. (==> free tasks)
ENDDO.
If it is OK ==> free tasks are available
call your FM (RFC!) like this:
CALL FUNCTION <FM>
STARTING NEW TASK ls_tasknam " Unique identifier!
DESTINATION IN GROUP p_group
PERFORMING return_info ON END OF TASK
EXPORTING
TABLES
IMPORTING
EXCEPTIONS
*:--- Take care of the order of the exceptions!
COMMUNICATION FAILURE = 3
SYSTEM_FAILURE = 2
UNFORCED_ERROR = 4
RESOURCE_FAILURE = 5
OTHERS = 1.
*:--- Then you must check the difference between
*:--- the started Calls and the received calls.
*:--- If the number increases a certain value limit_tasks.
wait until CALLED_TASK < LIMIT_TASKS up to '600' seconds.
The value should be not greater then 20!
DATA-Description:
parameters: p_group like bdfields-rfcgr default 'Server_alle'. " For example. Use the F4 help
if you have defined the report-parameter as above.
ls_tasknam ==> Just the increasing number of RFC-Calls
as Character.
RETURN_INFO is a form routine in which You can check the results. Within this Form you must call:
RECEIVE RESULTS FROM FUNCTION <FM>
TABLES: ... " The tables of your <FM> exactly the same order!
EXCEPTIONS
COMMUNICATION FAILURE = 3
SYSTEM_FAILURE = 2
UNFORCED_ERROR = 4
NO_ACTIVATE_INFOSTRUCTURE = 1.
Her eyou must count the received Calls!
And you can save them into a internal table for checking!
I hope I could help you a little bit
God luck
Michael
Similar Messages
-
ABAP Objects and table processing (with logical databases)
I have a report that is written right now using procedural abap and a logical database. The report is structured follows (high level):
start-of-selection.
get pernr.
perform get_it0001 using wtab.
perform get_it0002 using wtab.
perform get_it0003 using wtab.
append wtab to itab.
end-of-selection.
call function 'reuse_alv_grid_display'
exporting
i_structure_name = 'itabstructure'
tables
t_outtab = itab.
So basically I'm going through a bunch of personnel numbers, getting a few infotypes and outputting to ALV. I don't see where ABAP Objects is going to help me for this particular program.
Can somebody show me where OO ABAP would make this easier? Does it even make sense to use OO when you're processing with a logical database? (Not just PNP, but any logical database in general).
Thanks in advance.Hello Lee
I assume that the routines GET_ITnnnn are written by yourself. For reading infotypes ABAP Objects provides us with same very helpful classes as shown below:
* define data
DATA:
gif_employee type ref to if_pt_employee,
go_employee type ref to cl_pt_employee,
gt_infotypes TYPE tim_tmw_itlist_tab,
go_control TYPE REF TO if_pt_td_control,
go_data TYPE REF TO if_pt_td_base,
go_pnnnn TYPE REF TO if_pt_td_itnnnn,
gt_p0001 TYPE TIM_P0001_TAB,
gt_p0002 TYPE TIM_P0002_TAB,
gt_p0003 TYPE TIM_P0003_TAB.
start-of-selection.
GET pernr.
<b>* Create employee instance</b>
gif_employee = cl_pt_employee=>get_employee( pernr ).
go_employee ?= gif_employee.
<b>* Get master infotypes (0001, 0002)</b>
CALL METHOD go_employee->get_master_data
EXPORTING
im_begda = id_fromdate
im_endda = id_todate
IMPORTING
* EX_I0000 =
EX_I0001 = gt_p0001
EX_I0002 = gt_p0002
* EX_I0007 =
* EX_I0008 =
<b>* Append all other required infotypes to itab</b>
APPEND '0003' TO gt_infotypes.
CALL METHOD go_employee->get_infotypes
EXPORTING
i_itlist = gt_infotypes
i_fromdate = id_fromdate " start date
i_todate = id_todate " end date
* I_FILTER =
i_noauthcheck = 'X'
IMPORTING
e_result = gt_infty_request
e_retcd = gd_retcd.
* Please see documentation of parameter e_retcd...
LOOP AT gt_infty_request INTO go_control.
go_data = go_control->data. <b>" get data object</b>
* Casting
TRY.
go_pnnnn ?= go_data.
CATCH cx_sy_move_cast_error.
CONTINUE.
ENDTRY.
<b>* Convert infotype (semi-transparent -> transparent)</b>
CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
EXPORTING
prelp = lo_pnnnn->prelp
IMPORTING
pnnnn = gs_p0003.
APPEND gs_p0027 TO gt_p0003.
ENDLOOP.
The class CL_PT_EMPLOYEE provides us already with very easy access to so-called master infotypes (000, 0001, 0002, 0007 and 0008). All other infotypes can be read using method GET_INFOTYPES.
Using these classes we have a very convenient and standardized way of accessing all kinds of infotypes.
Regards
Uwe -
CAn anybody tell me the use of parallel processing in MD01 screen...
SAP help tells the following..
But I cant understand that..
PLease help me get a clarification.
Karthick PDear
The parallel processing use in total planning run in MD01 or MD40 thats meas planning run for number of plant at atime. By using parallel processing procedures, you can significantly improve the total planning run. The parallel processing procedures can either run on several servers or in several sessions. So we define this setting in OMIQ.
Scope of planning in OMIZ here we combine the number of plant/ MRP are for total palnning run which use in MD01 to run MRP for all plant at same time.
So if you want to run the MRP for all palnt or MRP Area as total planning run then you need to define scope of planning and parallel processing to improve the system performance and if you don't define it then also you can excetue the MRP.
Summery is :
1) If you want to run MRP viw MD 01 online you require scope of planning.
Reason:- With scope of planning only you can combine no of plant / MRP area.etc.,
If you want to run MRP in back ground this is not required.
2) Always parallel processing will improve the system speed by acessing data base layer with multiple application layer.
setup : go to SPRO>material management>Consumption based planning-->Define parallel processing in MRP.
Refer : the parallel process for mrp.
Hope this will be useful
Regards
JH -
How to get BI background jobs to utilize parallel processing
Each step in our BI process chains creates exactly 1 active batch job (SM37) with in turn utilizes only 1 background process (SM50).
How do we get the active BI batch job to use more than 1 background process similar to parallel processing (RZ20) in an ERP system?Hi there,
Have you checked the number of background and parallel processes. Take a look in SAP Note 621400 - Number of required BTC processes for process chains. This may be helpful ...
Minimum (with this setting, the chain runs more or less serially):
Number of parallel SubChains at the widest part of the chains + 1.
Recommended:
Number of parallel processes at the widest part of the chain + 1.
Optimal:
Number of parallel processes at the widest part of the chain + number of
parallel SubChains at the widest part + 1.
The optimal settings just avoids a delay if several SubChains are
started in parallel at the same time. In case of such a Process Chain
implementation and using the recommended number of background processes
there can be a short delay at the start of each SubChain (depends on the
frequency of the background scheduler, in general ~1 minute only).
Attention: Note that a higher degree of parallel processing and
therefore more batch processes only make sense if the system has
sufficient hardware capacity.
I hope this helps or it may lead you to further checks to make .
Cheers,
Karen -
SAVE BAPI Issue in Parallel Processing
Hello Friends,
I have used this BAPI 'BAPI_POSRVAPS_SAVEMULTI3' to Save Some Orders in SAP APO. I have given option to run the program both in Normal Mode and Parallel Processing mode..
In Normal mode it is able to save the data with Class Characteristics, But in Parallel Processing it is unable to save the Class Characteristics values.
We are passing same set of data both in Normal and Parallel Processing...
But we are encountering this issue only in Parallel Processing... During this Save the POSEX in getting cleared in the receipts table t_orders_consolidated after Commit.... due to this it is unable to save the characteristics information stored in t_CFGH, T_CFGI and T_CFGV.
We have also raised an OSS Message.
But this is working fine as expected in Normal mode..
Please advise... Its little critical to close this week...attached is some screen shots of the debug mode values...
CALL FUNCTION 'BAPI_POSRVAPS_SAVEMULTI3'
STARTING NEW TASK v_pp_taskname
DESTINATION IN GROUP as_processing_options-server_group
CALLING receive_update_orders_parallel ON END OF TASK
EXPORTING
logical_system = im_v_logsys
ext_number_assignment = abap_false
plng_version = im_v_vrsio
no_create = abap_true
TABLES
receipts = t_orders_consolidated
receipts_x = t_orders_consolidated_x
cfg_headers = t_cfgh
cfg_instances = t_cfgi
cfg_values = t_cfgv
return = t_return
extension_in = t_extension_in
EXCEPTIONS
system_failure = 1
communication_failure = 2
resource_failure = 3.Hi Kunal,
Check this links:
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b06c3f96-ed4f-2a10-1693-f2c76a39988f
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/90886731-21e4-2a10-2ebf-901c2c2b4e3d
Basically, what you do is:
- Define a source: in your case will be a query.
- Define a target: you'll need to create a transactional DSO to save information.
- Connect both: you can simply assign fields if the query is just what you need to download, or you can have routines.
Transaction for creating APD is RSANWB. It's pretty easy and it's a graphical interface, so you should find your way easily.
Hope this helps.
Regards,
Diego -
Strange responsetime with query triggering parallel processing
Hi,
Are there anyone who can run this SQL below on a RAC 11g R2, and give me feedback on how long time it took?
In my environment it takes more than a minute, and I suspect there is a problem with the database and parallel processing.
If I collect the values from the inner select and make a list of comma-separated values, it goes fast.
Replace SCHEMA_NAME with an existing SCHEMA_NAME on you database before running.
SELECT sa.*
FROM gv$sqlarea sa
WHERE sa.sql_id in (SELECT sql_id from gv$sqlarea where parsing_schema_name like '%SCHEMA_NAME%' and rownum < 100)
Thanks!You are using the hint a bit incorrectly.
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements006.htm#SQLRF50805
<quote>
The NO_PARALLEL hint overrides a PARALLEL parameter in the DDL that created or altered the table. For example:
SELECT /*+ NO_PARALLEL(hr_emp) */ last_name
FROM employees hr_emp;
<quote>
Check Metalink note 267330.1 as well. -
LabVIEW 8.5 Parallel processing
I am using lv 8.If i use 2 file dialog in the vi.Can i get 2 simultaneous pop or is it still the same ie one at a time in 8.5?
muks wrote:
same is the case when i use a control instead of dialog right?
What do you mean by "same"? What kind of control? can you be a bit more specific? Most users i know can only press one control at any given time, so parallel processing is not that important here. Of course the UI runs in it's own thread, so other things can happen at the same time in the background.
muks wrote:
Then what do you exactly mean by multi threading and parallel processing?
The only person in the thread that mentioned parallel processing was you (in the title) and multithreading was never mentioned here? Are you by any chance referring to a different thread or post with this part of your question?
In any case, LabVIEW was multithreaded way before version 8.0, so you won't see much of a difference going to 8.5 in this respect. Of course there are other nice new features that make upgrading worth it.
What kind of problem are you actually trying to solve?
LabVIEW Champion . Do more with less code and in less time . -
Parallel processing using ABAP objects
Hello friends,
I had posted in the performance tuning forum , regarding a performance issue problem , I am reposting it as it involves OO concept .
the link for the previous posting
Link: [Independent processing of elements inside internal table;
Here is the scenario,
I have a internal table with 10 records(indepentent) , and i need to process them .The processing of one record doesnt have any influence on the another . When we go for loop , the performance issue is that , the 10 th record has to wait until the 9 records get processed even though there is no dependency on the output.
Could some one tell a way out to improve the performance..
If i am not clear with the question , i would explain it still clearer...
A internal table has 5 numbers , say( 1,3,4,6,7)
we are trying to find square of each number ,,,
If it is a loop the finding of suare of 7 has to wait until 6 is getting completed and it is waste of time ...
This is related to parallel processing , I have refered to parallel processing documents,But I want to do this conceptually ..
I am not using conventional procedural paradigm but Object orientedness...I am having a method which is performing this action .What am I supposed to do in that regard.
Comradely ,
K.SibiHi,
As examplified by Edward, there is no RFC/asynchronous support for Methods of ABAP Objects as such. You would indeed need to "wrap" your method or ABAP Object in a Function Module, that you can then call with the addition "STARTING NEW TASK". Optionally, you can define a Method that will process the results of the Function Module that is executed asynchronously, as demonstrated as well in Edward's program.
You do need some additional code to avoid the situation where your program takes all the available resources on the Application Server. Theoretically, you cannot bring the server or system down, as there is a system profile parameter that determines the maximum number of asynchronous tasks that the system will allow. However, in a productive environment, it would be a good idea to limit the number of asynchronous tasks started from your program so that other programs can use some as well.
Function Group SPBT contains a set of Function Modules to manage parallel processing. In particular, FM SPBT_INITIALIZE will "initialize" a Server Group and return the maximum number of Parallel Tasks, as well as the number of free ones at the time of the initialization. The other FM of interest is SPBT_GET_CURR_RESOURCE_INFO, that can be called after the Server Group has been initialized, whenever you want to "fork" a new asynchronous task. This FM will give you the number of free tasks available for Parallel Processing at the time of calling the Function Module.
Below is a code snippet showing how these Function Modules could be used, so that your program always leaves a minimum of 2 tasks for Parallel Processing, that will be available for other programs in the system.
IF md_parallel IS NOT INITIAL.
IF md_parallel_init IS INITIAL.
*----- Server Group not initialized yet => Initialize it, and get the number of tasks available
CALL FUNCTION 'SPBT_INITIALIZE'
EXPORTING
GROUP_NAME = ' '
IMPORTING
max_pbt_wps = ld_max_tasks
free_pbt_wps = ld_free_tasks
EXCEPTIONS
invalid_group_name = 1
internal_error = 2
pbt_env_already_initialized = 3
currently_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
OTHERS = 7.
md_parallel_init = 'X'.
ELSE.
*----- Server Group initialized => check how many free tasks are available in the Server Group
for parallel processing
CALL FUNCTION 'SPBT_GET_CURR_RESOURCE_INFO'
IMPORTING
max_pbt_wps = ld_max_tasks
free_pbt_wps = ld_free_tasks
EXCEPTIONS
internal_error = 1
pbt_env_not_initialized_yet = 2
OTHERS = 3.
ENDIF.
IF ld_free_tasks GE 2.
*----- We have at leasr 2 remaining available tasks => reserve one
ld_taskid = ld_taskid + 1.
ENDIF.
ENDIF.
You may also need to program a WAIT statement, to wait until all asynchronous tasks "forked" from your program have completed their processing. Otherwise, you might find yourself in the situation where your main program has finished its processing, but some of the asynchronous tasks that it started are still running. If you do not need to report on the results of these asynchronous tasks, then that is not an issue. But, if you need to report on the success/failure of the processing performed by the asynchronous tasks, you would most likely report incomplete results in your program.
In the example where you have 10 entries to process asynchronously in an internal table, if you do not WAIT until all asynchronous tasks have completed, your program might report success/failure for only 8 of the 10 entries, because your program has completed before the asynchronous tasks for entries 9 and 10 in your internal table.
Given the complexity of Parallel Processing, you would only consider it in a customer program for situations where you have many (ie, thousands, if not tens of thousands) records to process, that the processing for each record tends to take a long time (like creating a Sales Order or Material via BAPI calls), and that you have a limited time window to process all of these records.
Well, whatever your decision is, good luck. -
Parallel processing for ABAP prorams in Process chain.
Hi All,
In one of the process chain, we have added the ABAP program. In Backend,the job is running as "BI_PROCESS_ABAP".
I just want to know, same like DTP, can we keep parallel processing for the ABAP programs also. Please suggest.
Thanks.Hello Jalina
Also check with BASIS if the memory allocated to run this program has not overflowed and the selections you have in your ABAP program is in small chunks and use variants to run them in parallel OR series
Thanks
Abhishek Shanbhogue -
Parallel Processing through ABAP program
Hi,
We are trying to do the parallel processing through ABAP. As per SAP documentation we are using the CALL FUNCTION STARTING NEW TASK DESTINATION.
We have one Z function Module and as per SAP we are making this Function module (FM)as Remote -enabled module.
In this FM we would like to process data which we get it from internal table and would like to send back the processed data(through internal table) to the main program where we are using CALL FUNCTION STARTING NEW TASK DESTINATION.
Please suggest how to achieve this.
We tried out EXPORT -IMPORT option meaning we used EXPORT internal table in the FM with some memory ID and in the main program using IMPORT internal table with the same memory ID. But this option is not working even though ID and name of the internal table is not working.
Also, SAP documentation says that we can use RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO'
IMPORTING RFCSI_EXPORT = INFO in conjunction with CALL FUNCTION STARTING NEW TASK DESTINATION. Documentation also specifies that "RECEIVE is needed to gather IMPORTING and TABLE returns of an asynchronously executed RFC Function module". But while creating the FM remote-enabled we cant have EXPORT or IMPORT parameters.
Please help !
Thanks in advance
Santosh<i>We tried out EXPORT -IMPORT option meaning we used EXPORT internal table in the FM with some memory ID and in the main program using IMPORT internal table with the same memory ID. But this option is not working even though ID and name of the internal table is not working</i>
I think that this is not working because that memory does not work across sessions/tasks. I think that the
IMPORT FROM SHARED BUFFER and EXPORT TO SHARED BUFFER would work. I have used these in the past and it works pretty good.
Also,
here is a quick sample of the "new task" and "recieve" functionality. You can not specify the importing parameters when call the FM. You specify them at the recieving end.
report zrich_0001 .
data: session(1) type c.
data: ccdetail type bapi0002_2.
start-of-selection.
* Call the transaction in another session...control will be stop
* in calling program and will wait for response from other session
call function 'BAPI_COMPANYCODE_GETDETAIL'
starting new task 'TEST' destination 'NONE'
performing set_session_done on end of task
exporting
companycodeid = '0010'
* IMPORTING
* COMPANYCODE_DETAIL = ccdetails
* COMPANYCODE_ADDRESS =
* RETURN =
* wait here till the other session is done
wait until session = 'X'.
write:/ ccdetail.
* FORM SET_session_DONE
form set_session_done using taskname.
* Receive results into messtab from function.......
* this will also close the session
receive results from function 'BAPI_COMPANYCODE_GETDETAIL'
importing
companycode_detail = ccdetail.
* Set session as done.
session = 'X'.
endform.
Hope this helps.
Rich Heilman -
Hi,
I have a internal table that has object references in it. Each item in the table are indepenent of the other. I want to extract info from each object and convert it into a internal table so that i can pass it to an RFC function.
So how can i do this extraction of the info from the objects in internal table in parallel.
To use the STARTING NEW TASK, i created a fn module that is RFC enabled.... then i can't pass the object reference to this module. So how can do this?
Also i read that this function module call will create a main or external session which has a limit of 6 per user session.Is this correct?
If above can be done, I also wanted to restrict the no of parallel processes being executed at any point of time to be 5 or so.
thanks in advance
MurugeshHi Murugesh,
Parallel processing can be implemented in the application reports that are to run in the background. You can implement parallel processing in your own background applications by using the function modules and ABAP keywords.
Refer following docs.
<b>Parallel Processing in ABAP</b>
/people/naresh.pai/blog/2005/06/16/parallel-processing-in-abap
<b>Parallel Processing with Asynchronous RFC</b>
http://help.sap.com/saphelp_webas610/helpdata/en/22/0425c6488911d189490000e829fbbd/frameset.htm
<b>Parallel-Processing Function Modules</b>
http://help.sap.com/saphelp_nw04s/helpdata/en/fa/096ff6543b11d1898e0000e8322d00/frameset.htm
Dont forget to reward pts, if it helps ;>)
Regards,
Rakesh. -
Parallel processing and time-out
Hi all,
I've got a prob with doing a great number of postings.
While the time elapsed for these postings is too long, I tried to do it with an function module and "IN BACKGROUND TASK". Well, there is also a alternative "STARTING NEW TASK".
But I figured out, that these both variants are starting dialog work processes. I think there is a time out for dialog WP's of 300 seconds in standard.
Will this timeout kill the processes or not??
And witch alternative is the best to do some parallel processing??
thanx in advanced
regards
OlliHi Oliver,
Some solutions here:
1. You could increase the value of the dialog time-out (allthough this can only go to a maximum of 600 seconds). This parameter is in the SAP profiles (parameter name = rdisp/max_wprun_time).
2. As suggested by Christian, decrease the amount of work within one LUW. You can do this by inserting (from time to time) a COMMIT WORK. This COMMIT WORK also resets the timeslice counter of the running dialog process (thus giving again an extra timeslice to work). The downside is, that if you have many related objects to modify, your ROLLBACK options become limited.
3. Split the proces in several tasks and put the to work in the background (by scheduling jobs for them).
4. Program your own parallel handler (see sample code). With this you could process document by document (as if each is done separately). The number of dialog processes (minus 2) is the limit you could use.
Sample code:
* Declarations
CONSTANTS:
opcode_arfc_noreq TYPE x VALUE 10.
DATA:
server TYPE msname,
reason TYPE i,
trace TYPE i VALUE 0,
dia_max TYPE i,
dia_free TYPE i,
taskid TYPE i VALUE 0,
taskname(20) TYPE c,
servergroup TYPE rzlli_apcl.
* Parallel processes free check
CALL 'ThSysInfo' ID 'OPCODE' FIELD opcode_arfc_noreq
ID 'SERVER' FIELD server
ID 'NOREQ' FIELD dia_free
ID 'MAXREQ' FIELD dia_max
ID 'REASON' FIELD reason
ID 'TRACE' FIELD trace.
IF dia_free GT 1.
SUBTRACT 2 FROM dia_free.
SUBTRACT 2 FROM dia_max.
ENDIF.
* You must leave some dialogs free (otherwise no one can logon)
IF dia_free LE 1.
MESSAGE e000(38)
WITH 'Not enough processes free'.
ENDIF.
* Prepare your run
ADD 1 TO taskid.
WRITE taskid DECIMALS 0 TO taskname LEFT-JUSTIFIED.
CONDENSE taskname.
* Run your pay load
CALL FUNCTION 'ZZ_YOUR_FUNCTION'
STARTING NEW TASK taskname
DESTINATION IN GROUP servergroup
EXPORTING
* Your exporting parameters come here
EXCEPTIONS
communication_failure = 1
system_failure = 2
RESOURCE_FAILURE = 3
OTHERS = 4.
Of course you would put this within a loop and let your "payload" function fire off for each document.
You MUST check the number of free processes just before you run the payload.
And as last reminder: Do NOT use the ABAP statement WAIT (this will disrupt the counting of free processes).
Hope this will help you,
Regards,
Rob. -
Parallel Processing and Capacity Utilization
Dear Guru's,
We have following requirement.
Workcenter A Capacity is 1000. (Operations are similar)
Workcenter B Capacity is 1500. (Operations are similar)
Workcenter C Capacity is 2000. (Operations are similar)
1) For Product A: Production Order Qty is 4500. Can we use all workcenter as a parallel processing through Routing.
2) For Product B: Production Order Qty is 2500. Can we use only W/C A and B as a parallel processing through Routing.
If yes, plz explain how?
Regards,
Rashid MasoodMay be you can create a virtual WC VWCA=ABC (connected with a hierarchy with transaction CR22) and another VWCB=A+B and route your products to each VWC
-
Experience in ABAP OO and heavy background processing?
Hi,
we're planning to develop a new application with a (very) high part of background processing. We plan to use the ABAP OO. We also want to make a good OO-Design (with many SETTER and GETTER methods and so on). I'm afraid we will get a lot of "program to program" communication and we will atomize our application. Also it's sounds to me like a conflict with the stuff from the Performance-course BC490.
Has anybody experience with ABAP 00 and applications that normally designed for a "number cruncher"?
Thanks and regards,
StefanHi Mariana,
I've started with two technical prototypes that have a very little business logic. One prototype is designed in the "good old" ABAP and one in the ABAP OO and a selfmade OO-framework from our company. This framework is very comforable and offers a lot of methods and superclasses. For vectors there is a own superclass. So for you question: We use a own object to pass the vectors.
Also we use the software objectif for the OOD. I've learned how important a good OOD is, before I started any coding.
My prototypes have a very simple business logic. They creates bills for 10.000 invoice recipient. The only feature is, that every recipient can have his own customizing to decide which items should be together on one invoice to a individual invoice date.
I must admit that the API in the OO prototype are more understandable, but for the performance I see still the follow bottlenecks with the I/O:
- When I instance a business object, all attributs are loaded into the memory. In the old ABAP I use only the required fields. So the "smelly" SELECT *-Statement is back again...
- A business-class (A) that have dependent business-classes (B1, B2, B3...BN) should instance his dependes objects with the first access the the class (A). When the classes (B1,B2...BN) has also dependent classes, this object should be instances (B1 has C1,C2,C3..CN), too. There is always a "vector"-class between this classes that notice the reference of his objects.In my prototype for example you have a invoice recipient.
In my prototype for example I have a class invoice recipient (class A). This recipient has a vector of bill-header (class B) and every bill-header has a vector of bill-items (class C). Between every of this classe is a vector-class that manage the references of the objects.
I've programmed this lazy (hope that this is the correct word that a OO-gurus use). This means I instance only the class A. If there is a call to a method from object A that need the information from the class B-objects, than i look if the reference of the vector-class for the B-Object is already available. When not I instance the vecotr-class and this reads all dependens object B.
So there is much more I/O than in old ABAP, after all.
However I'm a OO beginner.
Therefore I'm waiting that an OO-expert from our company take a look to my prototype coding and improve this for a better performance. I'm looking forward for some good tips. I will let you know when I've good some other nuts and bolts.
Perhaps SAP needs a OO-database instead a rational database, so that all GET-methods goes directly to the database to avoid a instance with all attributs in the memory of the application-server...
Many greetings from germany,
Stefan -
Executing Abap Queries in Abap Code and processing the result
Hi,
I want to execute ABAP Queries (designed by sq01) in an abap report and processing the result in an internal table.
How could it be work?
Thanks a lot for your responses,
with kind Regards
Reinhold StroblHello,
GO to SQ01 and select your query. Go to Menu QUERY-->More Functions->Display Report Name.
You can then take that report name and go to SE38. Copy the code before END-OF_SELECTION and then modify as per your own requirements.
Regrads
Saket Sharma
Maybe you are looking for
-
Changing the background of a text field in adobe interactive forms
Hello All, Is there any way to change the background colour of text field in interactive form dynamically.?? Thanks,
-
Photoshop CS6 will not open files
Right after rebooting my computer (Windows 7 Pro) I can open one photo file in CS6 using any normal method of opening a file in Photoshop. After closing that file I cannot open any more files using any method such as>Open Recent, File>Open, or right
-
Help with CS 6 on a second computer
My daughter has Photoshop CS 6 installed on her 64 bit Windows 7 Pro computer. She now has a new computer (also 64 bit Windows 7 Pro) and would like to get CS 6 on it too. I have been led to believe that she can have the program on two computers a
-
Forms upgrade 4.5 to 6i
Hi, Im in the process of upgrading forms from 4.5 to 6i. Is there any documentation supporting this process? Thanks, Matias
-
Hi Friends, We are implementing "Project Systems" in SAP. Here i am supposed to send a mail to the applicant once all the necessary approvals are done via workflow. The entire workflow is working fine except the last step which is for sending mail. T