ABAP OO novice and scared!

Hi all,
we are in ECC6.0 and about to start implementing lots of HR workflows.
I am very comfortable using Object Types but I know that ABAP OO is the way to go from now on.
I am aware of Jocelyn Dart's blogs (thanks Jocelyn!) but I sense that I need much more than that to start the implementation. Any other ideas on how to get to know ABAP OO within the workflow world better? Which SAP out of the box workflows are delivered that are using ABAP OO?
For example, we will be building lots of workflows around Or Management (Create Org Unit Request, Create Position Request, etc) and I am really unsure if I should use ABAP OO or use and extend the Object Types delivered by SAP.
For Leave Request, I know I will be using CL_PT_REQ_HEADER, but for other workflows I am really not sure which path to take.
In your experience, for HR Workflows, what is worth doing? It is so easy to use BUS1065, EMPLOYEET; I can't see I strong reason to use ABAP OO in this case.
Much thanks and regards,
Cristiana

Hi Cristiana,
I say relax and go for it! OO is fun and it's a pleasure not to be working in the stone-age editor that BOR uses
There are a small number of OO-only workflow implementations out there, I have done one where the only Z-BOR object was a ZUSR01, simply because it really wasn't worth the effort just for a single 'emailaddress' attribute. The rest was completely class based. These days all new stuff I do is OO.
OO has an initial development overhead to create the objects but the end result is a lot more useful when you can share code/functionality with your development team. WF developers always tended to be a little isolated in their BOR world, making it seem a little like a 'black art'.
There are certain limitations in 6.20, but in ECC6 that is no more. A couple of very minor niggles remain but nothing major - stuff like being able to navigate into tables of BOR attributes on a class in a container view. Probably the biggest change is functional methods where you previously used virtual attributes. Oh, and one tip is that you can use a class which has a BOR object as an attribute. Have a look at the SAP help too at
<a href="http://help.sap.com/saphelp_nw2004s/helpdata/en/47/058a422dfad665e10000000a155106/frameset.htm">http://help.sap.com/saphelp_nw2004s/helpdata/en/47/058a422dfad665e10000000a155106/frameset.htm</a>
That makes all the BOR stuff available in your class, but rather than go into major technical detail here I'd suggest posting new questions on individual issues.
Have fun,
Mike
PS. If you are going to ASUG/Sapphire in Atlanta there is a presentation on exactly that.

Similar Messages

  • Error 1003 occurred at ABAPI Dist Chg and Save VIs.vi

    I used to be able to build executable file for my application. However when I upgrade to LV8 and try to build executable file, I got the following message.
    Error 1003 occurred at ABAPI Dist Chg and Save VIs.vi -> ABAPI Dist Build LLB Image.vi -> ABAPI Copy Files and Apply Settings.vi -> EBEP_Invoke_Build_Engine.vi -> EBUIP_Build_Invoke.vi -> EBUIP_Build_Invoke.vi.ProxyCaller
    Possible reason(s):
    LabVIEW:  The VI is not executable.
    The vi is perfectly executable in LV enviroment.
    Anyone know what's going on?
    Thanks in advance!

    DGU,
    Unfortunately this is a known bug in LabVIEW 8.0.1. Our R&D department is well aware of the issue and is currently working on the problem. In the mean time there are some possible work arounds
    Check the "Enable debugging"option in the "Advanced Category" of the application executable properties.
    Disable the "Remove Panel" option for all SubVIs containing Shared Variables in the build
    Try Unchecking the "Disconnect type definitions and remove unused polymorphic VI instances" options also in the Advanced category of the executable properties as shown in the attached figure.
    Move shared variables to the top level VIs and pass the data through the SubVI connector
    Downgrade to LabVIEW 8.0.
    I apologize for the problem. Please let us know if these suggestions help out. Thanks!
    Best Regards,
    Chris C
    Applications Engineering
    National Instruments
    Chris Cilino
    National Instruments
    LabVIEW Product Marketing Manager
    Certified LabVIEW Architect
    Attachments:
    1.gif ‏1 KB

  • ABAP dispatcher, JControl and ICM

    As we know,
    If an ABAP instance is started with an additional Java instance, the ABAP dispatcher uses a signal to run a start command on the Startup and Control Framework, then JControl is started, and  JLaunch is started by JControl.
    In ABAP + Java stacks system, we start and stop Java instance with transaction SMICM.
    In ABAP + Java stacks system, ICM is started and monitored by the ABAP dispatcher.
    Until now, I am confused about their relationship. Please advise on following questions.
    Q1: When ABAP dispatcher sends a signal to start/stop JControl, is there any relationship with ICM? I mean whether ICM takes a hand in?
    Q2: How does ABAP dispatcher start and monitor ICM?
    Thanks so much.
    James

    Hi
    When ABAP dispatcher sends a signal to start/stop JControl, is there any relationship with ICM? I mean whether ICM takes a hand in?
    No It would not as ICM is only responsible for Internet communications. It doesnot take care of the internal communications.
    The communication between the ABAP and J2EE is due to JCO rfc that is present between them.
    Please read these links: These would clear some confusions:
    http://help.sap.com/saphelp_nw2004s/helpdata/en/84/54953fc405330ee10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/20/a2813a34872769e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/20/a2813a34872769e10000000a114084/frameset.htm

  • I am an iPad novice and whilst I have managed to set up my personal email, I have having trouble with my business email in that I can receive emails, but am unable to send and the message says 'this email address has been rejected by server'

    I am an iPad novice and whilst I have managed to set up my hotmail account on the iPad - I ham having trouble with my business email (I can receive emails, but cannot send and it says' email rejected by server'

    That sounds like a settings issue to me. Check with your IT depatment to make sure you have it configured properly.

  • ABAP+Java Kernel and only Java Kernel

    Hi Friends,
    Is there any difference in ABAP+Java Kernel and only Java Kernel?
    Can we use the kernel for above both from the same location as below?
    1#
    Support Packages and Patches> Additional Components> SAP Kernel> SAP KERNEL 64-BIT UNICODE> SAP KERNEL 6.40 64-BIT UNICODE
    Following Files
    DB Dependent  - ORACLE
              SAPEXEDB_175-20000227.SAR
              DBATL640O92_44-20000227.SAR
    Database Independent
              SAPEXE_175-20000226.SAR
    Assuming above SAR files contain R3trans, R3load, tp ,... also.
    2#
    As per my knowledge SAP has given one more path to download J2EE SP's which contains Kernel and J2EE Support Packages.
    http://service.sap.com/patches --> Support Package and Patches -> Entry by Application Group -> SAP NetWeaver -> SAP NetWeaver -> SAP NetWeaver 04 -> Entry by Component -> Application Server Java -> SAP J2EE Engine 6.40 -> J2EERT19_0-10001982.SAR/J2EERT20_0-10001982.SAR (OS Independent) and CTRLDB219_0-20000114.SAR(OS Dendependent)
    What is the difference between above two kernels?
    1# contains R3trans, R3load, tp ...etc which is exclusively used by ABAP Stack related functions. The startsap script used here would check R3trans -d authentication successful before starting database and then only it starts the database from sidadm. I observed OPS$ users available in only ABAP schema SAPSID but not available in SAPSIDDB. If I use the kernel downloaded from 1# for Java Stack only system, startsap would fail as R3trans authentication fail as there is no ABAP schema in Java systems.
    This applies well for ABAP+JAVA or only ABAP based systems.
    If I use only JAVA Stack based system can I use the kernel downloaded from 1# . What is the kernel and SP available in 2#? Is this also contains the same kernel given in 1# or it is different. I also observed in JAVA they are not calling Kernels by Patch No like 154, 175... they call it by SP19. Please correct me if I am wrong.
    Did anyone come accross this type if issue? I would appreciate if anyone can clarify my questions given above.
    My main target is to have clear strategy for ABAP+JAVA, ABAP, JAVA kernels to avoid mess up. Which one to download? What is best practice? Differences?
    Thanks and Regards
    Prasad

    Hi Sacha,
    Thank a lot for your answer I am clear now. Before rewarding points to you.
    I have final question.
    You mean that there is not seperate kernel for Java Stack Systems.. When we apply SP11 or SP19 by default it applies Kernel and also support packages w.r.t the SP. Do we have option to seperate Kernel and Support package while applying SP's for Java System?
    If we take for example SAP NW 2004 (WAS 640) latest kernel is 175 (I mean ABAP+JAVA). If I want to know the latest kernel for Java Stack system, Do I need to say it is at level SP19 or check the sapwebdisp -V (Resepctive patch level)?
    For ABAP system we check disp+work -V to get the source kernel version. How to justify the source kernel version for Java System?
    As per SAP Note: 710914 - Upgrading the J2EE Engine Startup Framework after applying SP for Java System, Do we need to upgrade J2EE Startup Framework?
    Thanks and Regards,
    Prasad

  • Best Practices in use of ABAP for SRM and/or CRM Configuration

    I was wondering if there is a document that defines best practices for the use of ABAP with the installation and customization of SRM and/or CRM. Such as amount of ABAP coding typically required, and best practices around the use of ABAP for customization and configuration.
    Thanks.

    Hi, Johnson
    Sorry, Please don't mind, you are not at right place to ask the Question like this
    Please read "The Forum Rules of Engagement" before posting!  HOT NEWS!!
    Thanks and Regards,
    Faisal

  • ABAP proxy object and JAVA proxy objects

    can anyone explain whether ABAP proxy object and JAVA proxy objects can communicate with each others?
    if yes then how???

    JCO connectors would be able to do the trick here i guess
    regards
    krishna

  • Abap web dynpro and portal events

    First off, a little introduction: My name is Martin Kroppen, I am an Abap developer for SAP Netherlands, and I am currently involved in a project for hospitals to built a portal. For this, I have created 2 Abap web-dynpros, and then impemented the views as iviews in an EP. What I want to achieve is that the input view triggers the display view on a second page, and the data is shown for the values in the input view (all in the same browser window).
    I am using the portal integration manager for this,  with the method for relative navigation.
    The navigation is working fine, only problem is that I don't know how to handle the business parameters that I send over.
    My questions are:
    1. is this the correct way for navigating between abap webdynpro iviews in the portal?
    2. what is the correct way to read the business parameters into my context of the second Abap WD application?
    I tried the solution that is described below, I could not get it to work correctly.
    If you define BUSINESS_PARAMETERS as application parameters in your Web
    Dynpro application and the parameter names start with &#8243;APP&#8243;, they will
    automatically be forwarded to the startup plugs of the Web Dynpro application –
    provided they are marked as startup parameters. In this case, keep in mind that
    the iView/page used as the navigation target must be assigned to the user role.
    If it is not, navigation cannot be triggered.
    Hope someone can help me…
    Regards
    Martin Kroppen

    Hi,
    please refer to this link for portal integration
    Web Dynpro for ABAP Portal Integration [original link is broken]

  • ABAP-HR Material and FAQs

    Hello All,
    I want ABAP-HR Material and FAQs.
    Could you please send it to my mail id: [email protected]
    Points will be rewarded.
    Thanks in Advance.
    Regards
    Sasidhar Reddy Matli.

    hi,
    see the doc for HR:
    HR deals with the INFOTYPES which are similar to Tables in General ABAP.
    There are different ways of fetching data from these infotypes.
    There are different areas in HR LIKE Personal Admn, Orgn Management, Benefits, Time amangement, Event Management, Payroll etc
    Infotypes for these areas are different from one another area.
    storing of records data in each type of area is different
    LDBS like PNP are used in HR programing.
    Instead of Select.. we use some ROUTINES and PROVIDE..ENDPROVIDE.. etc
    and in the case of Pay roll we use Clusters and we Import and Export them for data fetching.
    On the whole Normal ABAP is different from HR abap.
    For Personal Admn the Infotypes start with PA0000 to PA1999
    Time Related Infotypes start with PA2000 to PA2999.
    Orgn related Infotypes start with HRP1000 to HRP1999.
    All custom developed infotypes stsrat with PA9000 onwards.
    In payroll processing we use Clusters like PCL1,2,3 and 4.
    Instead of Select query we use PROVIDE and ENDPROVIDE..
    You have to assign a Logical Database in the attributes PNP.
    Go through the SAp doc for HR programming and start doing.
    http://www.sapdevelopment.co.uk/hr/hrhome.htm
    See:
    http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm
    sites regarding hr-abap:
    http://www.sapdevelopment.co.uk/hr/hrhome.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf
    http://www.atomhr.com/training/Technical_Topics_in_HR.htm
    http://www.planetsap.com/hr_abap_main_page.htm
    You can see some Standard Program examples in this one ...
    http://www.sapdevelopment.co.uk/programs/programshr.htm
    http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#Certification
    http://www.erpgenie.com/faq/hr.htm.
    http://www.planetsap.com/hr_abap_main_page.htm
    http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html
    These are the FAQ's that might helps you as well.
    http://www.sap-img.com/human/hr-faq.htm
    http://www.sapgenie.com/faq/hr.htm
    http://www.planetsap.com/hr_abap_main_page.htm
    http://www.atomhr.com/library_full.htm

  • ABAP field symbols and PERL reference variables to unnamed arrays.

    Rob -
    Please do NOT delete this post even though it contains this link:
    ABAP field symbols and PERL reference variables to unnamed arrays.
    to a question I posted in the Scripting Languages forum.
    It's a question that should be of interest to ABAP programmers, and they may miss if they don't frequent the SL forum ...
    Thanks for your forbearance here (in advance, of course) ...
    Best
    djh
    Edited by: Rob Burbank on Jul 11, 2011 1:26 PM

    If interested, please reply in the original thread. We don't want multiple conversations at cross purposes do we?
    Rob

  • I want to abap-hr programing and concept plz send usefull links and materia

    hi plz ,
    i want to learn abap-hr programing and concepts and faqs, so,  plz send usefull links or material or pdfs which helps  me and i hope ,
    thank u,

    Hi Manoj,
    Welcome to SDN....
    Check these link on ABAP HR.
    http://www.sapdevelopment.co.uk/hr/hrhome.htm
    http://www.planetsap.com/hr_abap_main_page.htm
    http://www.sap-img.com/
    http://help.sap.com/saphelp_erp2005/helpdata/en/60/d8d8c7576311d189270000e8322f96/frameset.htm
    http://www.planetsap.com/HR_ABAP_payroll.htm
    http://abap4.tripod.com/Human_Resources_Tables_Infotypes.html
    http://abap4.tripod.com/SAP_Functions.html
    http://www.planetsap.com/hr_abap_main_page.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/c6/8a15381b80436ce10000009b38f8cf/frameset.htm
    http://www.sap-basis-abap.com/saphr.htm
    http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?track=NL-142&ad=500911#Transactions
    http://help.sap.com/saphelp_47x200/helpdata/en/4f/d5275f575e11d189270000e8322f96/content.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/4f/d5275f575e11d189270000e8322f96/content.htm
    http://www.saptips.com/Previews/SAPtipsAugust-September2004TableOfContents.pdf
    http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?track=NL-142&ad=500911#Transactions
    http://help.sap.com/saphelp_46c/helpdata/en/4f/d528be575e11d189270000e8322f96/frameset.htm.
    http://www.sap-basis-abap.com/saphr.htm.
    http://www.sapgenie.com/faq/hr.htm
    http://www.sapgenie.com/workflow/scenarios.htm
    http://www.sap-img.com/human/hr-faq.htm
    http://www.sapdevelopment.co.uk/hr/hrhome.htm
    http://www.sapgenie.com/mysap/mysap_hr.htm
    Thanks,
    Vinay

  • Combine standard task (ABAP method call) and additional UWL Action Handlers

    Hi, i have defined a task with an asynchronous ABAP method call and a terminating event which i want to use "as is" in the universal worklist, that means that the standard action has to be the ABAP method call defined for the task.
    In addition to that i want to add an extra button to the workitem view in the worklist which opens a web dynpro application. The web dynpro needs a parameter from the workitem container. Opening the web dynpro is not required for completing the task, so i do not consider using secondary methods.
    I created an UWLConfiguration for the task type without defining the defaultAction attribute, since defaultAction should not be overwritten. I wanted to use SAPWebDynproABAPLauncher to generate the button since i can easily include values from the workitem container in the call.
    When executing a workitem from the worklist the ABAP method call is not performed, instead a window opens which just displays the workitem. The button to web dynpro is generated and works fine.
    Does anyone have a clue how i can use UWL to define an additional button with SAPWebDynproABAPLauncher without overwriting the standard task definition?
    My definition:
    <ItemTypes>
        <ItemType
    name="uwl.task.webflow.TS95100103"
    connector="WebFlowConnector"
    defaultView="DefaultView">
          <ItemTypeCriteria
    systemId="ED1CLNT100"
    externalType="TS95100103"
    connector="WebFlowConnector"/>
          <CustomAttributes>
            <CustomAttributeSource
    id="WEBFLOW_CONTAINER"
    objectIdHolder="externalObjectId"
    objectType="WebFlowContainer"
    cacheValidity="final">
              <Attribute
    name="HROBJECT_OBJEKTID"
    type="string"
    displayName="HROBJECT_OBJEKTID"/>
            </CustomAttributeSource>
          </CustomAttributes>
          <Actions>
            <Action
    name="launchWebDynPro"
    groupAction=""
    handler="SAPWebDynproABAPLauncher"
    returnToDetailViewAllowed="yes"
    launchInNewWindow="yes"
    launchNewWindowFeatures="resizable=yes,scrollbars=yes,
    status=yes,toolbar=no,menubar=no,
    location=no,directories=no">
              <Properties>
                <Property
    name="WebDynproApplication" value="hr01_app"/>
                <Property
    name="newWindowFeatures"
    value="resizable=yes,scrollbars=yes,status=yes,
    toolbar=no,menubar=no,location=no,directories=no"/>
                <Property
    name="DynamicParameter"
    value="candidacy_id=${item.HROBJECT_OBJEKTID}
    &amp;from_workflow=X"/>
                <Property
    name="openInNewWindow" value="yes"/>
                <Property
    name="System" value="SYSTEM_ALIAS_ERP"/>
                <Property
    name="WebDynproNamespace" value="hr01"/>
              </Properties>
              <Descriptions default="Show"/>
            </Action>
          </Actions>
        </ItemType>
      </ItemTypes>
    Thank you very much, best regards, Martin
    Edited by: Martin Sommer on Dec 1, 2008 5:51 PM

    found a solution with transaction launcher and custom transaction

  • Web Dynpro ABAP - Select Option and ALV Component Usage

    Hi,
    I'm new in ABAP Web Dynpro and i was trying to follow the SDN tutorial
    Web Dynpro ABAP - Select Option and ALV Component Usage  
    In this video, we create a new Web Dynpro ABAP component that uses both Select Options and ALV. Developers can learn the basic mechanisms for working with both of these reusable components.
    Following the link: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/media/uuid/39c54fe7-0b01-0010-0eb6-d63ac2bdd637
    I implemented and generated the web dynpro with success but when i execute a test i get a dump on select-option definition.
    Note
    The following error text was processed in the system ECD : Exception condition "TYPE_NOT_FOUND" raised.
    The error occurred on the application server ITAWSECCS01D_ECD_00 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: DESCRIBE_BY_NAME of program CL_ABAP_TYPEDESCR=============CP
    I went in debug and the piece of code dumping is:
    lt_range_table =
    wd_this->m_handler->create_range_table( i_typename = 'S_PROJ' ).
    Is there someone who can help me?
    Thanks in advance,
    Stefano.

    Hi,
    I'm new in ABAP Web Dynpro and i was trying to follow the SDN tutorial
    Web Dynpro ABAP - Select Option and ALV Component Usage
    In this video, we create a new Web Dynpro ABAP component that uses both Select Options and ALV. Developers can learn the basic mechanisms for working with both of these reusable components.
    Following the link: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/media/uuid/39c54fe7-0b01-0010-0eb6-d63ac2bdd637
    I implemented and generated the web dynpro with success but when i execute a test i get
    an error as
    Note
    The following error text was processed in the system EI6 : Exception condition "TYPE_NOT_FOUND" raised.
    The error occurred on the application server EC6IDES_EI6_01 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: DESCRIBE_BY_NAME of program CL_ABAP_TYPEDESCR=============CP
    I have created a table zmy_table and trying to make USERID field as a select-options.I've written the code as shown below .
    data: itab type standard table of zmy_table,
    wa type zmy_table.
    data:
    node_employee type ref to if_wd_context_node,
    elem_employee type ref to if_wd_context_element,
    stru_employee type wd_this->element_employee ,
    item_userid like stru_employee-userid.
    navigate from <CONTEXT> to <EMPLOYEE> via lead selection
    node_employee = wd_context->get_child_node( name = wd_this->wdctx_employee ).
    @TODO handle not set lead selection
    if ( node_employee is initial ).
    endif.
    get element via lead selection
    elem_employee = node_employee->get_element( ).
    @TODO handle not set lead selection
    if ( elem_employee is initial ).
    endif.
    alternative access via index
    Elem_Employee = Node_Employee->get_Element( Index = 1 ).
    @TODO handle non existant child
    if ( Elem_Employee is initial ).
    endif.
    get single attribute
    elem_employee->get_attribute(
    exporting
    name = `USERID`
    importing
    value = item_userid ).
    select *
    from zmy_table
    into table itab
    where userid = item_userid.
    node_employee = wd_context->get_child_node( 'EMPLOYEE' ).
    node_employee->bind_elements( itab ).
    Is there someone who can help me and can tell am i doing wrong?
    Thanks in advance,
    Dheeraj

  • Convert XML string into an abap format date and time

    Hi,
    Does anyone know of a method or a function module in ABAP which converts XML string into an abap format date and time.
    Here is a part of the xml that I want to convert.
    <ns2:EventDateTime>2009-07-02T10:13:45+10:00</ns2:EventDateTime>
    <ns2:EventMessageTransmissionDateTime>2009-07-02T10:13:45.987+10:00</ns2:EventMessageTransmissionDateTime>
    Currently EventDateTime and EventMessageTransmissionDateTime are type XSDDATETIME_Z and these are converted to proper dates and times. We will be changing these fields to a STRING instead of XSDDATETIME_Z. The reason for this is to make the field more versatile. The customer would be receiving dates with Zulu (2009-09-23T12:00:00Z), with offsets (2009-09-23T12:00:00+10:00/-10:00) and just local timestamp (2009-09-23T12:00:00). With this, we need to make the date fields as string
    to be able to accept the various date formats (esp. the local timestamp).
    I am looking for a standard function module or method that will convert the xml string to a proper date and time abap format.
    Would appreciate anyone's help!
    Thanks.
    Edited by: eunice ocson on Jul 13, 2009 1:49 AM
    Edited by: eunice ocson on Jul 13, 2009 1:50 AM
    Edited by: eunice ocson on Jul 13, 2009 1:51 AM
    Edited by: eunice ocson on Jul 13, 2009 1:51 AM

    Hi Eunice
    Use the FM 'SMUM_XML_PARSE'
    for more info
    [Convert XML string to ABAP|XML String to ABAP or GUI]
    hope it helps you.
    Thanks!!

  • ABAP performance issues and improvements

    Hi All,
    Pl. give me the ABAP performance issue and improvement points.
    Regards,
    Hema

    Performance tuning for Data Selection Statement
    For all entries
    The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of
    entries in the driver table is larger than rsdb/max_blocking_factor, several similar SQL statements are executed to limit the
    length of the WHERE clause.
    The plus
    Large amount of data
    Mixing processing and reading of data
    Fast internal reprocessing of data
    Fast
    The Minus
    Difficult to program/understand
    Memory could be critical (use FREE or PACKAGE size)
    Some steps that might make FOR ALL ENTRIES more efficient:
    Removing duplicates from the the driver table
    Sorting the driver table
          If possible, convert the data in the driver table to ranges so a BETWEEN statement is used instead of and OR statement:
          FOR ALL ENTRIES IN i_tab
            WHERE mykey >= i_tab-low and
                  mykey <= i_tab-high.
    Nested selects
    The plus:
    Small amount of data
    Mixing processing and reading of data
    Easy to code - and understand
    The minus:
    Large amount of data
    when mixed processing isn’t needed
    Performance killer no. 1
    Select using JOINS
    The plus
    Very large amount of data
    Similar to Nested selects - when the accesses are planned by the programmer
    In some cases the fastest
    Not so memory critical
    The minus
    Very difficult to program/understand
    Mixing processing and reading of data not possible
    Use the selection criteria
    SELECT * FROM SBOOK.                   
      CHECK: SBOOK-CARRID = 'LH' AND       
                      SBOOK-CONNID = '0400'.        
    ENDSELECT.                             
    SELECT * FROM SBOOK                     
      WHERE CARRID = 'LH' AND               
            CONNID = '0400'.                
    ENDSELECT.                              
    Use the aggregated functions
    C4A = '000'.              
    SELECT * FROM T100        
      WHERE SPRSL = 'D' AND   
            ARBGB = '00'.     
      CHECK: T100-MSGNR > C4A.
      C4A = T100-MSGNR.       
    ENDSELECT.                
    SELECT MAX( MSGNR ) FROM T100 INTO C4A 
    WHERE SPRSL = 'D' AND                
           ARBGB = '00'.                  
    Select with view
    SELECT * FROM DD01L                    
      WHERE DOMNAME LIKE 'CHAR%'           
            AND AS4LOCAL = 'A'.            
      SELECT SINGLE * FROM DD01T           
        WHERE   DOMNAME    = DD01L-DOMNAME 
            AND AS4LOCAL   = 'A'           
            AND AS4VERS    = DD01L-AS4VERS 
            AND DDLANGUAGE = SY-LANGU.     
    ENDSELECT.                             
    SELECT * FROM DD01V                    
    WHERE DOMNAME LIKE 'CHAR%'           
           AND DDLANGUAGE = SY-LANGU.     
    ENDSELECT.                             
    Select with index support
    SELECT * FROM T100            
    WHERE     ARBGB = '00'      
           AND MSGNR = '999'.    
    ENDSELECT.                    
    SELECT * FROM T002.             
      SELECT * FROM T100            
        WHERE     SPRSL = T002-SPRAS
              AND ARBGB = '00'      
              AND MSGNR = '999'.    
      ENDSELECT.                    
    ENDSELECT.                      
    Select … Into table
    REFRESH X006.                 
    SELECT * FROM T006 INTO X006. 
      APPEND X006.                
    ENDSELECT
    SELECT * FROM T006 INTO TABLE X006.
    Select with selection list
    SELECT * FROM DD01L              
      WHERE DOMNAME LIKE 'CHAR%'     
            AND AS4LOCAL = 'A'.      
    ENDSELECT
    SELECT DOMNAME FROM DD01L    
    INTO DD01L-DOMNAME         
    WHERE DOMNAME LIKE 'CHAR%' 
           AND AS4LOCAL = 'A'.  
    ENDSELECT
    Key access to multiple lines
    LOOP AT TAB.          
    CHECK TAB-K = KVAL. 
    ENDLOOP.              
    LOOP AT TAB WHERE K = KVAL.     
    ENDLOOP.                        
    Copying internal tables
    REFRESH TAB_DEST.              
    LOOP AT TAB_SRC INTO TAB_DEST. 
      APPEND TAB_DEST.             
    ENDLOOP.                       
    TAB_DEST[] = TAB_SRC[].
    Modifying a set of lines
    LOOP AT TAB.             
      IF TAB-FLAG IS INITIAL.
        TAB-FLAG = 'X'.      
      ENDIF.                 
      MODIFY TAB.            
    ENDLOOP.                 
    TAB-FLAG = 'X'.                  
    MODIFY TAB TRANSPORTING FLAG     
               WHERE FLAG IS INITIAL.
    Deleting a sequence of lines
    DO 101 TIMES.               
      DELETE TAB_DEST INDEX 450.
    ENDDO.                      
    DELETE TAB_DEST FROM 450 TO 550.
    Linear search vs. binary
    READ TABLE TAB WITH KEY K = 'X'.
    READ TABLE TAB WITH KEY K = 'X' BINARY SEARCH.
    Comparison of internal tables
    DESCRIBE TABLE: TAB1 LINES L1,      
                    TAB2 LINES L2.      
    IF L1 <> L2.                        
      TAB_DIFFERENT = 'X'.              
    ELSE.                               
      TAB_DIFFERENT = SPACE.            
      LOOP AT TAB1.                     
        READ TABLE TAB2 INDEX SY-TABIX. 
        IF TAB1 <> TAB2.                
          TAB_DIFFERENT = 'X'. EXIT.    
        ENDIF.                          
      ENDLOOP.                          
    ENDIF.                              
    IF TAB_DIFFERENT = SPACE.           
    ENDIF.                              
    IF TAB1[] = TAB2[].  
    ENDIF.               
    Modify selected components
    LOOP AT TAB.           
    TAB-DATE = SY-DATUM. 
    MODIFY TAB.          
    ENDLOOP.               
    WA-DATE = SY-DATUM.                    
    LOOP AT TAB.                           
    MODIFY TAB FROM WA TRANSPORTING DATE.
    ENDLOOP.                               
    Appending two internal tables
    LOOP AT TAB_SRC.              
      APPEND TAB_SRC TO TAB_DEST. 
    ENDLOOP
    APPEND LINES OF TAB_SRC TO TAB_DEST.
    Deleting a set of lines
    LOOP AT TAB_DEST WHERE K = KVAL. 
      DELETE TAB_DEST.               
    ENDLOOP
    DELETE TAB_DEST WHERE K = KVAL.
    Tools available in SAP to pin-point a performance problem
          The runtime analysis (SE30)
          SQL Trace (ST05)
          Tips and Tricks tool
          The performance database
    Optimizing the load of the database
    Using table buffering
    Using buffered tables improves the performance considerably. Note that in some cases a stament can not be used with a buffered table, so when using these staments the buffer will be bypassed. These staments are:
    Select DISTINCT
    ORDER BY / GROUP BY / HAVING clause
    Any WHERE clasuse that contains a subquery or IS NULL expression
    JOIN s
    A SELECT... FOR UPDATE
    If you wnat to explicitly bypass the bufer, use the BYPASS BUFFER addition to the SELECT clause.
    Use the ABAP SORT Clause Instead of ORDER BY
    The ORDER BY clause is executed on the database server while the ABAP SORT statement is executed on the application server. The datbase server will usually be the bottleneck, so sometimes it is better to move thje sort from the datsbase server to the application server.
    If you are not sorting by the primary key ( E.g. using the ORDER BY PRIMARY key statement) but are sorting by another key, it could be better to use the ABAP SORT stament to sort the data in an internal table. Note however that for very large result sets it might not be a feasible solution and you would want to let the datbase server sort it.
    Avoid ther SELECT DISTINCT Statement
    As with the ORDER BY clause it could be better to avoid using SELECT DISTINCT, if some of the fields are not part of an index. Instead use ABAP SORT + DELETE ADJACENT DUPLICATES on an internal table, to delete duplciate rows.

Maybe you are looking for

  • Creative Cloud will not load Photoshop CC

    get this error 16 everytime I try to lauch Photoshop CC on my mac. I have the creative cloud and never had a problem with any of the apps until today.  I have followed all the threads and uninstalled CC and wen back into Adobe Application Manager to

  • Menu Bar In Muse CC 2014 vs. Menu Bar in Muse V7.4

    Ok! I admit to old age and failing eye sight but I something I do not understand is why are their two versions of Muse and which one should I be using? Muse 2014 appears to have more features but the menu bar and subsequent drop down menu's are extre

  • Same problem as many other error -8

    Maybe someone can help? I get the same problem as many other error -8. I'm use ichat with aol's aim. There using a pc. Not sure at all how to set up my ports. I just got this MacBook and never used ichat. The IM is working just fine, but can't get th

  • Why can't I see my ipod in itunes?

    I can;t see my ipod musique list in itunes, what do I nee to do to find it?

  • Applet file not found execption.. what to do ?

    Hai to all ... I have a created an japplet within a netbeans project (*NewJApplet*). This applet is used to display a spell checking jframe(*SpellerFrame*) which does all the spell checking part i need. The jframe I mentioned makes use of another cla