OO Design--do ABAP Persistent Classes make sense for ALV reports in NW2004?

Hello experts,
At our company, we started using ABAP OO in the last year.
I am on NW-2004 .  We just acquired a business that is on 4.6C.
We have a lot of customization to bring into our system. There are a lot of reports with common queries that span multiple tables.
I would like to follow the best practice for OO design and create global classes for the data access layer  the business logic layer and the UI layer.  For the UI layer, I will be utilizing the SALV class, since NW2004 doesn't have ABAP WebDynpro (we don't have a java stack available for development and software change management).
For the data access layer,  I would like to use the persistent classes,  but without the query manager, it just doesn't make sense.
Thomas Jung said in a blog that he sometimes used SQL to get the keys and then used persistent classes to retrieve the remaining data.  But for straight ALV reporting, that just seems inefficient.  But it could be that I am just not familiar enough with the technology.
I am looking for suggestions on how to design the data access layer for these intense  and commonly used queries.
(Ironically, we will upgrade to NW2004s after this migration -- ouch!)
All ideas are appreciated.
Thanks.

Hi Kimberly,
the main advantage of persistent objects is that their state can be saved in the database. If a persistent object changes in your program, these changes can be reflected in the corresponding database field(s). Thus, persistent objects are very useful when doing CRUD (create, read, update and delete) operations with business objects.
However, if you just want to read data (for simple reporting) but do not plan to implement any of the other CRUD operations, I doubt if a persistency layer is necessary since this causes extra effort during design time and runtime. In that case, simple SELECT statements seem to be more appropriate.
Regards,
David

Similar Messages

  • Does an "incomplete font" warning make sense for ttf?

    Hi all,
    we are getting "font incomplete" errors in the package dialog. According to the online help this "Lists fonts that have a screen font on the current computer but not a corresponding printer font."
    Does that even make sense for true types? As far as I know there is no such thing as a separate screen and printer font in ttf.
    To make things worse the fonts in question are Georgia and Times New Roman - both are system fonts.
    Specs:
    Windows 7 64 bit SP1
    InDesign 7.04
    I can't reproduce this on my machine but that's running 32 bit.
    Should we ignore it?
    Any hints appreciated - tried a forum search but didn't find very much.
    Regards,
    Mike

    There is no real erro message but a warning in the package dialog (sorry but we are using the German version):
    The report doesn't offer much more information:
    SCHRIFTARTEN
    (Nur Probleme anzeigen)
    17 Schriftart(en) verwendet; 0 fehlend, 10 eingebettet, 2 unvollst., 0 geschützt
    - Name: Georgia; Typ: OpenType TrueType, Status: unvollst.
    Dateiname: n. zutr.
    Vollständiger Name: Georgia
    Zuerst verwendet auf Seite: 31
    Geschützt: Nein
    - Name: TimesNewRomanPSMT; Typ: OpenType TrueType, Status: unvollst.
    Dateiname: n. zutr.
    Vollständiger Name: Times New Roman
    Zuerst verwendet auf Seite: 30
    Geschützt: Nein
    We actually don't even know where TimesNewRoman comes from - I suspect it's in one of the numerous linked pdf files. But then the dialog should state which files they come from.

  • Would it make sense for me to upgrade to:

    I now have:
      Model Name:          Mac Pro
      Model Identifier:          MacPro5,1
      Processor Name:          Quad-Core Intel Xeon
      Processor Speed:          2.8 GHz
      Number Of Processors:          1
      Total Number Of Cores:          4
      L2 Cache (per core):          256 KB
      L3 Cache:          8 MB
      Memory:          12 GB
      Processor Interconnect Speed:          4.8 GT/s
      Boot ROM Version:          MP51.007F.B03
      SMC Version (system):          1.39f11
      SMC Version (processor tray):          1.39f11
    I am now running 10.6.8.  Would it make sense for me to up grade to OS 8 or would it just open up a bag of worms?
    Thanks
    Dan Page

    Re: Would it make sense for me to upgrade to: 
    Apr 20, 2013 6:59 PM (in response to AppleClubSupport)
    Hey, thanks for the rapid reply.  Will the change be totally transparent or will there be things I have to look out for? what would you consider the biggest improvement I might realize from this change?
    Dan

  • Does it make sense for me to upgrade a 2007 macbook to lion?

    My wife has a 2007 macbook 2.2 mhz intel dual core with 2GB of RAM. She is using Snow Leopard.
    I updated my 2010 MBP to Lion and it works well; faster. I'm not sure it would be worth installing Lion on her machine.
    Has anyone installed Lion on a similiar 2007 MB machine and how is the result?
    Can you use all the gestures on the track pad?
    Is it slowed down?  or faster?
    Any comments would be appreciated.

    Re: Would it make sense for me to upgrade to: 
    Apr 20, 2013 6:59 PM (in response to AppleClubSupport)
    Hey, thanks for the rapid reply.  Will the change be totally transparent or will there be things I have to look out for? what would you consider the biggest improvement I might realize from this change?
    Dan

  • Can i make a normal alv report web eabled if so please guide me

    can i make a normal alv report web eabled if so please guide me

    i m getting the error as below
    Business Server Page (BSP) error
    What happened?
    Calling the BSP page was terminated due to an error.
    SAP Note
    The following error text was processed in the system:
    Die URL enthält keine vollständige Domainangabe (ecc01 statt ecc01.).
    Exception Class
    CX_FQDN
    Error Name
    Program
    CX_FQDN=======================CP
    Include
    CX_FQDN=======================CM002
    ABAP Class
    CX_FQDN
    Analyze
    CHECK
    Line
    10
    Long text
    Error type: Exception
    Your SAP Business Server Pages Team

  • Does EAP/SIM make sense for others than mobile operators?

    Hi,
    I'm wondering about the many different EAP authentication protocols. One of these is EAP/SIM (initiated by Nokia). I think the advantage of this authentication method might be the kind of key exchange. Users are familiar in using SIM-cards. Out of this consideration I have some questions:
    * Is EAP/SIM as secure as EAP/TLS or EAP/Cisco?
    * Does it make sense to use EAP/SIM as an WISP (given that the WISP is NOT a GSM/UMTS mobile operator)?
    * What is the position of Cisco to EAP/SIM? Will Cisco support it?
    Best regards,
    Armin

    This white paper should help: http://www.cisco.com/warp/public/cc/pd/witc/ao1200ap/prodlit/wswpf_wp.htm

  • Does a QMaster Cluster really make sense for Final Cut Server?

    Correct me if I'm wrong, and I often am, but my understanding of the difference between setting up a "Cluster" and just using "This Machine" is the cluster allows multiple jobs to be processed simultaneously, while an unmanaged system will only do one job at a time. However, when it does that one job, it uses all the system's processors.
    Yesterday I created a cluster consisting of two Quad Core Intel systems, and started Final Cut Server cataloging about a half a TB of data. I noticed that Server submits the Proxy render jobs one at a time, and that the jobs were being submitted to only one processor core, in a rotating fashion. Is there a way to make FCServer submit jobs in "parallel," or am I better off with using just the local system for transcoding?

    The default proxy transcode setting seems to be specifically tuned to work at a small scale, which makes sense if you are asking a box to host the database, serve the app, and do all the proxy transcodes. I observed the same phenomenon, so I made my own transcode setting for proxies and I chose to lower the bitrate a bit to help with file size and transfer time. The upside is the floodgates are wide open when my 32 core Xeon cluster (four 8-cores) goes to town on a proxy encoding job.
    Your other observation is also right, that only one item is encoded at a time across the cluster rather than working on all of them at once across the cluster. So what you get with a fast cluster is shorter encode time, not parallel encodings that all finish at the same time.
    If you have the spare machines to dedicate to cluster work, I strongly endorse setting up that way. I would not recommend Quick Clusters for Final Cut Server encoding duty. Either set up a dedicated Managed Cluster that FCSvr can use or none at all.

  • Which Tool or Class is suitable for Generate Reports?

    i hope to make some reports and chart diagram for my project,
    but i don't know what is suitable class to generate and show report.
    can you tell me some hints??
    thanks!

    Just a small correction, the link should be:
    http://www.object-refinery.com
    Regards,
    Dave Gilbert
    www.object-refinery.com

  • For all classes used in the alv reports.

    we need the list of required classes used in alv reports this urgent .
    please help me.

    Hi Navid,
    Check <b>SLIS Package/Dev.Class for node Classes</b>,
    here u will find all required <b>classes for ALV including ALV Hierarchical,AVL Tree, ALV HTML.</b>
    Classes.
    CL_ALVHT_HTMLINPUT-> ALV: HTML Input (Control Proxy)
    CL_ALVHT_HTML_PAGE-> ALV HTML Page
    CL_ALVHT_HTML_TEMPLATE-> ALV: HTML Templates
    CL_ALVHT_TAGSTREAM-> ALV
    CL_ALVHT_UI_ELEMENT-> ALV: HTML User Input Element
    CL_ALV_BDS-> BDS Access and Data Retention
    CL_ALV_CHANGED_DATA_PROTOCOL-> Message Log for Data Entry
    CL_ALV_DD_DOUBLE_LISTBOX-> Management Class for two D&D List Boxes
    CL_ALV_DD_LISTBOX-> D&D List Box
    CL_ALV_EVENT_DATA-> Changing Data Container for Events
    CL_ALV_EVENT_TOOLBAR_SET-> ALV Context Menu
    CL_ALV_GRAPHICS-> ALV Graphic (Integration with GFW)
    CL_ALV_GRAPHICS_CU-> Customizing of ALV Graphics
    CL_ALV_LISTBOX_DRAGOBJ->
    CL_ALV_OI BDS-> Access and Data Retention
    CL_ALV_TABLE_CREATE-> Dynamic Creation of ALV Data Table
    CL_ALV_TREE_BASE-> Basis Class ALV Tree Control
    CL_ALV_VARIANT-> ALV Variant Management
    CL_GUI_ALV_GRID-> ALV List Viewer
    CL_GUI_ALV_GRID_BASE-> Basis Class for ALV Grid
    CL_GUI_ALV_TREE-> ALV Tree Control
    Regards,
    Raghav
    Message was edited by:
            Raghavendra  L

  • Does N make sense for me?

    I'm considering the Airport Extreme N router.
    Right now I use only an Airport Express. What do I have on my network? iMac with N, Powerbook with G, Apple TV with N, Nintendo Wii, iPhone, and I think that is it.
    Now, the main two devices I use that are always on the network are my iMac and Apple TV, which are both N. N for the Apple TV would be nice.
    However, the Wii always stays connected to cause it checks for messages and updates from Nintendo constantly. Will the Wii being in its standby mode knock my entire network down to G? I'd get no benefit from N because of the Wii calling home even though the iMac, Airport Extreme, and Apple TV are all N?
    Thanks!!

    Since you already have an AirPort Express Base Station (AX), you may want to consider getting the 802.11n AirPort Extreme Base Station (AEBSn) and configure them in a "dual band" network. This way 802.11n clients can connect to the AEBSn, and the 802.11g can connect to the AX.
    Dual band networks are discussed, starting on page 48, in the Designing AirPort Networks Using AirPort Utility document.

  • Does it make sense for kernel_task process to use hundreds of MB of RAM?

    I'm not terribly knowledgeable about the UNIX heart of the Mac OS, but I have been troubled by this quirk on my machine for a while now. I can't figure why the kernel_task process on my machine seems to take triple the "Real Memory" as it does on every other computer I have looked at.
    After starting up, PID 0 regularly grabs about 150 MB before settling down to around 110 MB. PID 0's Real Memory climbs and climbs as the day goes along. Right now, PID 0 is sitting at around 142 MB. My wife's computer, for instance, takes about 40-50MB for PID 0.
    It gets even crazier for me as time goes along, I have seen PID 0 (kernel_task) climb regularly as high as 300+ MB of Real Memory. *** is going on that PID 0 is a blackhole for my RAM, and what might I have done that is causing PID 0 to immediately grab nearly triple the RAM as every other mac I have looked at?
    Safari in Leopard is just as bad as far as grabbing RAM goes, but at least I can quit Safari to get it back to normal. With kernel_task the only solution I really have to get it to play nice with Real Memory is to restart the computer, right?
    Thoughts?

    Thanks for the reply! That does assuage my worry a bit. But I still do worry that in Leopard possibly kernel_task isn't then releasing all caches when no longer needed because after glances at Activity Monitor I will see kernel_task climb up into the 300+ MB regularly. And that's after a night of hours web browsing in Safari and reading and replying to email in Mail. Period. Still kernel_task hasn't been as offensive as Safari is at taking memory and not releasing it.
    I guess I'll learn to live with it and let my tidy-side let up on this.

  • Getting subtotals using classes for ALV report

    Hi,
    This is regarding getting subtotals.How do I access the GET_SUBTOTALS private method of a class to get the subtotals ?What are the steps to be followed?
    Thanks

    hi
    Take a look at this sample code.
    Define and implement an event handler method for event subtotal_text. Register this event with SET HANDLER.
    2. Call a subroutine within this method and pass the event parameters to that subroutine.
    3. Event parameters ep_subtot_line and e_event_data contain reference variables to generic data type DATA. This is why you must use field symbols in the subroutine:
    FORM method_subtotal_text USING es_subtottxt_info TYPE lvc_s_stxt ep_subtot_line TYPE REF TO data e_event_data TYPE REF TO cl_alv_event_data.
    DATA ls_sflight LIKE sflight.
    FIELD-SYMBOLS: <fs1> STRUCTURE sflight DEFAULT ls_sflight, <fs2>.
    IF es_subtottxt_info-criteria = 'PLANETYPE'.
    ASSIGN ep_subtot_line->* TO <fs1>.
    ASSIGN e_event_data->m_data->* TO <fs2>.
    CONCATENATE es_subtottxt_info-keyword ': ' <fs1>-planetype INTO <fs2>.
    ENDIF.
    please reward if useful

  • Improving persistent class performance with on-demand DB reads?

    Hi,
    Something that has been troubling me for some time is the data access design of persistent classes. A persistent class loads the ENTIRE data set when it is instantiated.
    To me this defeats one of the advantages of get/set methods. What I would like is to be able to read data when it is first accessed.
    For example: A purchase order header can be loaded in a few ms. However with items it can take 10 times as long - even more if the items are implemented as persistent classes themselves. If items are only needed half the time, a significant performance gain is realized by only reading items the first time the GET_ITEMS method is called. In my own persistence implementations using BI_PERSISTENT (Nothing to do with ABAP Persistent Classes), I implement this using private attributes to buffer data, along the lines of:
    method get_items.
      if m_items[] is initial.
        m_items = <read and/or instantiate items>.
      endif.
      re_items = m_items.
    endif.
    Using ABAP Persistent Objects this does not appear to be possible since they insist on loading everything up front in the DB mapping or IF_OS_STATE~INIT methods. Is some kind of on-demand reading possible using ABAP Persistent Classes?
    Any input appreciated
    Cheers,
    Mike

    Hi Mike,
    yes, I am also very interested in this topic. While developing my first (and only a mid-complex) persistence application, I am expecting slightly different behaviour of linked persistent objects than you described above. According to the book 'Object Services in ABAP' and lazy loading paradigm mentioned there, the referenced persistent objects should be instantiated as representative objects only, containing no data, and the data should be physically loaded from database only once it's really needed (ie. accessed or explicitly instantiated). This should be the approach preventing the situation of mass chained instantiation of many linked persistent objects where most of them will not be needed, probably.
    This is what they say about instantiation of persistent objects that are linked by persistent references.
    However, since the persistent objects do not allow creating of 1:N relationships (classics: HEADER->ITEMS) via persistent references automatically, then this kind of relationship has to be maintained manually and therefore I expect you having full control of when it is accessed and instantiated for the first time...? What I want to ask here is then: is there any suitable approach which allows to maintain 1:N relationship fully or semi-automatically and which (as a disadvantage) makes the problem for you with 'full' instantiation? Am I missing something? There are also some threads Table attributes and persistent classes  regarding persistent mapping of table-like attributes, but no relevant answers (this should solve my problem as the table of persistent references could be saved then).
    Until now, I have found almost nothing about how the 1:N relationship should be correctly built (only 1:1 or M:1 is supported via persistent references), so I am applying the following approach in my app. Any comments are welcome (excuse some typos, as this is written in Notepad, not on the running system):
    ref_header = zca_header=>agent->create_persistent( ).
    guid_of_header_class = ref_header->get_cl_guid( )."cl_guid is set in IF_OS_STATE~INIT
    guid_of_header_instance =
      zca_header=>agent->if_os_ca_service~get_oid_by_ref( ref_header ).
    ref_header->set_inst_guid(                   "keep header inst. ref. for future lookups
    i_inst_guid = guid_of_header_instance
    lt_r_items = ref_header->create_items(       "lt_r_items = table of items references
      i_cl_guid = guid_of_header_class
      i_inst_guid = guid_of_header_instance
      it_items = lt_items )
    and the method zcl_header->create_items then looks somewhat like this:
    loop at it_items assigning <it_items>.
      ref_item = zca_item=>agent->create_persistent( ).
      ref_item->set_cl_guid( i_header_cl_guid = i_cl_guid ).
      ref_item->set_inst_guid( i_header_inst_guid = i_inst_guid ).
      ref_item->set_some_other_attrib(
        i_some_other_attrib = <it_items>-some_other_attrib
      append ref_item to rt_r_items.             "rt_r_items = table of items references
    endloop.
    I have created a secondary index on items for header_cl_guid and header_inst_guid. This is used during the re-load of already saved items for particular header entry. Query service is used with header_cl_guid and header_inst_guid of actual header entry as filter criteria for item pesistent objects and table of item references is returned. Thus the instance attribute lt_r_items of ref_header is filled with references to relevant items again.
    Thank you
    Michal

  • Blog post: Embedded Software: Disruptions Ahead - Why Java makes sense

    All,
    You may be interested in this blog post I did two days ago, which talks about the challenges in embedded software design and why Java makes sense for embedded software engineering:
    https://terrencebarr.wordpress.com/2013/08/05/embedded-software-disruptions-ahead/
    Best,
    Terrence

    (bump)

  • It make sense changing from DB persistence mode to DBFS (or FSDB)mode?

    hi,
    we are running on NW04 SPS17
    KM 6.0.17.0.0
    we have a portal with 30.000 (stimated) users access. CM is configured in cluster mode, with a unique DB.
    In the KM area, we use a CM repository in DB mode, wich contains all the documents of the portal(2500-3500 documents,but will increase).Documents have small size (from 100k to 4 MB max) We have a lot of READ access on  documents (99% of the users have "read only" permission).
    With this scenario (as described in SAP how-to-guide), may be necessary to set the persistence mode on DBFS (or FSDB).
    So, I would like to know:
    1) it make sense, for INCREASE THE PERFORMANCE, to change the persistence mode from DB to DBFS (of FSDB) of the actual CM repository?
    2)if affermative, what are the correct steps for making this change?
    (in other therms:what happens to the documents properies -ACL, metadata, etc.- during the conversion? Data loss will occour?)
    Thanks and regards,
    Paolo

    No, it doesn't make sense to make that change at all.
    If there's a performance issue, the other persistence modes will make things worse, not better.
    Instead, have a look at the various caches you can configure.

Maybe you are looking for

  • ACS 5.3 one user multiple roles

    Hi. I have got ACS 5.3 and two AD groups: vpn_users and wifi_users. My goal is to permit authentication of user trying to connect to wireless network (via WLC) if he is a  member of wifi_users group. The similar goal is for vpn users (via ASA). I hav

  • Why does my iTunes crash every time I connect a particular device and only that device?

    I am trying to switch from an iPhone 5 to a 5s. (The 5s is a company phone and was previously used by another employee.) The instant I connect the 5s to my computer I get a popup that says "iTunes has stopped working" and then the program closes. My

  • Firefox crashes when i try to print a webpage using a 510 lexmark printerwhen i

    each time i try to print a webpage firefox crashes . i am using a lexmark printer. if i need to print a webpage i have to install internet explorer

  • Volume don´t appear in MDC

    Hello, I have 2 servers with xsan 2.1.1 with Mac Os 10.5.6 Server, and I created four volumes in xsan2, and one of them dont saw in one of the servers. The log says: Jul 28 13:14:18: --- last message repeated 1 time --- Jul 28 13:14:18 xsand[49]: mkd

  • Stored Procedure Not working

    hi ! I hav a simple SP, If @Transaction_type in ('a','u') and @object_type = 77 Begin select @Error = 1, @error_message = 'Budget ***' end But whenever i do changes(updation) the error is not appearing. Does this SP correct?