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

  • Parallel processing in MRP

    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 P

    Dear
    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.Sibi

    Hi,
    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

  • Parallel Processing in ABAP

    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
    Murugesh

    Hi 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
    Olli

    Hi 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 Masood

    May 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,
    Stefan

    Hi 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 Strobl

    Hello,
    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

  • Error in the mail step

    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