Uj Custom Logic

March 26, 2018 | Author: vinodmanoharan | Category: Ibm System I, Ibm Db2, Databases, Object (Computer Science), Data Buffer


Comments



Description

BPC 7.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Applies to: BW 7.X, BPC 7.X for NetWeaver Summary To implement efficient customer based planning algorithms buffering techniques are necessary, especially if the memory requirements are high and the algorithm is executed in packages. Implementing customer defined planning algorithm can be done in BPC 7.X for NetWeaver by implementing BADI UJ_CUSTOM_LOGIC. Unfortunately the BADI does not provide an initialization routine or finalization routines, which allows filling internal buffers in the beginning of the algorithm and clean them at the end. This paper shows a work around for this issue and shows how efficient algorithms can be implemented by using a special buffer object. The buffer object has an initialization routine to fill the buffers and a finalize routine to clear the buffers again. Furthermore it provides methods to access the buffered data. This paper outlines the concept and shows how the concept can be used. Author: Matthias Nutt Company: SAP (Switzerland) AG Created on: 08 June 2010 Author Bio Matthias Nutt works for SAP (Switzerland) AG. He is a professional consultant since 2002 and works in the area of BW in close co-operation with the development and support team. His work spans a variety of roles including project manager, technical project manager, consulting, development, primary support and development support. SAP COMMUNITY NETWORK © 2010 SAP AG SDN - sdn.sap.com | BPX - bpx.sap.com | BOC - boc.sap.com | UAC - uac.sap.com 1 .................................com | BOC ..... 10 Public types ...............................................................................................................X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Table of Contents Introduction ........sap........................... 12 Method initialize ..................................................... 17 SAP COMMUNITY NETWORK © 2010 SAP AG SDN .....................BPC 7........................................................................................................ 12 Method get_instance ..........................sap..........................................................................................................bpx...................................................... 6 Method _get_identifier ................. 5 Interfaces ..........com 2 ...............................................................sap.................................................................................................................................................... 16 Copyright.................................................. 15 Miscellaneous ..sdn....................................................................................boc............ 13 Method get_entity_data ..................................................................................................... 8 Implementing Class ZCL_BPC_INIT_EXEC_FINISH_SGLTN .................................................................sap....................... 5 Method if_uj_custom_logic~execute ...................................................................................................................................................... 3 Implementing class ZCL_BPC_INIT_EXEC_FINISH ........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................uac.......................... 3 Simulating and Initialization/Finalization Routine ......... 11 Attributes ................... 11 Methods ......................................................................................................................................................com | UAC ......................................................... 5 Methods ..........................com | BPX ............................. 8 Method _execute .......................................................................................................................................................................................................................................................................................... This allows writing algorithms which work only on the current package of data. There no explicit initialization or finalization phase.com | UAC . at the end of the algorithm. // processing data in packages because otherwise the memory requirements are too high *XDIM_MAXMEMBERS P_ACCT = 1 *START_BADI Z_BPC_INIT_EXEC_FINISH WRITE = ON QUERY = ON *END_BADI SAP COMMUNITY NETWORK © 2010 SAP AG SDN . etc. this is done for each single package and impacts the runtime of the BADI. The parameter controls the phase. In general an algorithm can be divided in three phases. reading some attributes of a dimension: the attributes do not change during the runtime of the algorithm and can be stored in a internal buffer for faster read access) 2. Nevertheless it is still hard to determine the first call to the BADI or the last call to the BADI implementation to re-initialize or delete the buffered data.sap. If the data is not needed anymore e. This will clear non-static attributes of the BADI implementation. attributes of members) is read from the database in the BADI implementation. For further information please refer to a book on advanced programming concepts.sdn. 1. The BADI is called several times by the BPC framework depending on the amount of members for dimension P_ACCT. which means that the BADI is called once for each package.sap. For each package the whole planning function is called again. setting internal status flags. Furthermore if the script logic statement *XDIM_MAXMEMBERS is used. Execution: Execution of the algorithm which implements the planning requirements. To simulate this behavior in BADI UJ_COSTUM_LOGIC an additional parameter “MODE” for the BADI is introduced.BPC 7.com 3 . Usually these data is read from the data base in an initialization phase and stored in internal buffers for faster access.g.com | BOC . Simulating and Initialization/Finalization Routine As stated above the BADI UJ_CUSTOM_LOGIC does not provide an initialization or finalization method. the system reads the list of dimension members and splits the dimension members into several packages.bpx. Unfortunately in BPC the BADI UJ_CUSTOM_LOGIC does not provide an initialization method or a finalization method.g.g. 3. In the next example below a single line is added. To effectively buffer data these methods can be very useful to control the buffer. Each package is processed separately.sap. Deletion of buffered data typically happens in a finalization phase. Storing some of this data in local buffers to speed up processing in phase 2 (e. The statement “*XDIM_MAXMEMBERS” defines that the data is processed in packages. At this point is it important to know that the BADI is instantiated again for each package of data. If data (e.boc. Without parameter mode the script logic looks like this: *START_BADI Z_BPC_INIT_EXEC_FINISH WRITE = ON QUERY = ON *END_BADI As can be seen the BADI is called only once. A work around would be using static attributes to buffer data. Thus non-static attributes cannot serve as buffers for UJ_CUSTOM_LOGIC BADI.sap.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Introduction Runtime efficient implementations needs some kind of buffers for data which is used several times but should only be once read from the data base for performance reasons. Please note that this paper does not discuss the singleton concept in detail. the buffers can be deleted again or can be kept for the next run of the algorithm. The following shows a work around by using a special buffer object. Technically the special buffer object can be seen as an implementation of the singleton programming concept. Inside the BADI you can refer to the current package by reading the data provided in table IT_CV. Initialization: Initialization activities like reading the necessary data and some additional data from the database.uac.com | BPX . Finalization: Cleaning up activities like clearing the buffers. To implement the desired behavior two classes are used. buffer it and release the buffer in the end.com | UAC . execution. The script logic contains the following statements now: // initialize – fill the buffer *START_BADI Z_BPC_INIT_EXEC_FINISH WRITE = OFF QUERY = OFF MODE = INIT *END_BADI // processing data in packages because otherwise the memory requirements are too high *XDIM_MAXMEMBERS P_ACCT = 1 *START_BADI Z_BPC_INIT_EXEC_FINISH WRITE = ON QUERY = ON MODE = EXEC *END_BADI // finalize – clean the buffer *START_BADI Z_BPC_INIT_EXEC_FINISH WRITE = OFF QUERY = OFF MODE = FINISH *END_BADI It is important to set the parameter WRITE and QUERY to OFF when the parameter MODE is equal to INIT or FINISH.BPC 7. Instead of calling the constructor directly method GET_INSTANCE must be used to retrieve an instance of this class. which implements the buffer object. SAP COMMUNITY NETWORK © 2010 SAP AG SDN .bpx.uac. An additional parameter is introduced. In mode EXEC the parameters WRITE and QUERY can be set to ON or OFF depending on the needs of the algorithm. The parameter MODE controls the phase (initialization. and finalization).com 4 . Furthermore the lifetime of this object and the attribute values can be controlled by the programmer.sdn.sap.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects To prevent reading the same data from the database over and over again. This ensures that the BPC framework calls the BADI with minimal overhead. As there is only one instance in the session memory which is not deleted during the different calls to the BADI. The first one implements the BADI UJ_CUSTOM_LOGIC and has the name ZCL_BPC_INIT_EXEC_FINISH. This is demonstrated in the script below.sap. This is the real BADI implementation. In these two phases no transactional data should be read or written. It implements the planning functionality in mode EXEC.sap. For each phase the BADI is called separately. a way needs to be provided to read the data only once. Basically the buffer object is a normal class.com | BOC . The only special thing is that this class represents a singleton.sap.com | BPX . This allows controlling the creation of instances and here it means that there is only one instance of it in a session. The work around presented here achieves this behavior by calling the BADI three times. For the other modes the class works as dispatcher and calls depending on the mode a method of class ZCL_BPC_INIT_EXEC_FINISH_SGLTN.boc. non-static attributes of this class can be used as buffers. sap. The remainder of this chapter shows how the class is implemented.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Implementing class ZCL_BPC_INIT_EXEC_FINISH Class ZCL_BPC_INIT_EXEC_FINISH is a simple implementation of the BADI UJ_CUSTOM_LOGIC. Methods The class implements the following methods: Method IF_UJ_CUSTOM_LOGIC~EXECUTE. For educational reason we discuss this class first. SAP COMMUNITY NETWORK © 2010 SAP AG SDN .com | BOC .sap. method _GET_IDENTIFIER and method _EXECUTE.com 5 .sdn. The details are discussed below in the screenshot.sap.boc.com | BPX .bpx.sap.com | UAC . Interfaces Class ZCL_BPC_INIT_EXEC_FINISH is the BADI implementation and because of this it has the interfaces IF_BADI_INTERFACE and IF_UJ_CUSTOM_LOGIC as demonstrated in the screenshot below.uac. but if you are going to implement it class ZCL_BPC_INIT_EXEC_FINISH_SGLTN needs to be implemented first.BPC 7. CHAR100. The execution method is implemented in the BADI implementation directly as shown in method _EXECUTE.sap. Code method if_uj_custom_logic~execute. the initialization or the finalization method of the buffer object is called.com 6 . In the next step the system reads a unique identifier for this BADI Implementation.sdn. char10.BPC 7.boc. ref to cx_uj_custom_logic. ** testing: UJKT: Application: APPSHELL AppSet: Planning User: ** Script: ***** // initialize the buffer ***** *start_badi Z_BPC_INIT_EXEC_FINISH ***** write = OFF ***** query = OFF ***** MODE = INIT ***** *end_badi ***** ***** // "real" call to the badi algorithm ***** // simulating huge amount of data and therefore ***** // restricting the number of members for one dimension ***** *XDIM_MAXMEMBERS P_ACCT = 1 ***** *start_badi Z_BPC_INIT_EXEC_FINISH ***** write = OFF ***** query = ON ***** MODE = EXEC BPCADMIN SAP COMMUNITY NETWORK © 2010 SAP AG SDN . string.com | BOC .com | BPX .com | UAC .X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Method if_uj_custom_logic~execute Parameters Discussion The code for this method is shown below. Here we outline the implementation principle.uac. Once this is done.sap. The following case statement shows the dispatching character of the IF_UJ_CUSTOM_LOGIC~EXECUTE method. SCX_T100KEY. The buffer object can fill the buffers. data: data: data: data: data: data: DATA: ls_param_mode lr_sgltn_buffer l_identifier l_log lr_error ls_SCX_T100KEY l_dummy type type type type type type TYPE ujk_s_script_logic_hashentry. ref to zcl_bpc_init_exec_finish_sgltn.bpx.sap. Depending on the mode.sap. Some methods for accessing the buffered data need to be added to the buffer object. At first the current mode is retrieved from the parameters. the instance of the buffer object is determined. ' into l_log. * error: parameter MODE is missing message e026(ujv_exception) with 'Error: Parameter MODE not found.sap. case ls_param_mode-hashvalue. lr_sgltn_buffer->initialize( exporting i_appset_id = i_appset_id i_appl_id = i_appl_id it_param = it_param it_cv = it_cv importing et_message = et_message changing ct_data = ct_data ). me->_execute( exporting i_appset_id = i_appset_id i_appl_id = i_appl_id it_param = it_param it_cv = it_cv i_sngltn_buffer = lr_sgltn_buffer importing et_message = et_message changing ct_data = ct_data ).BPC 7. message e026(UJV_EXCEPTION) with 'Error: could not get singleton buffer' into l_log.boc. raise exception type cx_uj_custom_logic. endif.sap.bpx.uac. me->_get_identifier( importing e_identifier = l_identifier ). raise EXCEPTION type cx_uj_custom_logic.sap. zcl_bpc_init_exec_finish_sgltn=>get_instance( exporting i_identifier = l_identifier importing e_instance = lr_sgltn_buffer ). if sy-subrc <> 0.com | BPX . when 'FINISH'.com | UAC . when 'INIT'. lr_sgltn_buffer->finalize( exporting i_appset_id = i_appset_id i_appl_id = i_appl_id it_param = it_param it_cv = it_cv SAP COMMUNITY NETWORK © 2010 SAP AG SDN .sap.com 7 .X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects ***** ***** ***** ***** ***** ***** ***** ***** *end_badi // delete the buffer *start_badi Z_BPC_INIT_EXEC_FINISH write = OFF query = OFF MODE = FINISH *end_badi read table it_param into ls_param_mode with table key hashkey = 'MODE'. if not lr_sgltn_buffer is bound. translate ls_param_mode-hashvalue to upper case. cl_ujk_logger=>log( i_object = l_log ).com | BOC .sdn. cl_ujk_logger=>log( i_object = l_log ). endif. when 'EXEC'. boc. Method _get_identifier Parameters Discussion The important thing here is that this method returns a unique identifier. wrong paramter value message e026(ujv_exception) with 'Error: Parameter MODE has unknown value: ' ls_param_mode-hashvalue into l_log. endcase.uac. The identifier is used to identify the correct buffer object for this BADI implementation.com 8 .X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects * importing et_message = et_message changing ct_data = ct_data ). cl_ujk_logger=>log( i_object = l_log ). The concept in this paper allows to instantiate different buffer object.sap. e_identifier = 'MY_ID_01'.bpx.sdn.com | UAC . endmethod.com | BOC . Code method _GET_IDENTIFIER. Each buffer object can be retrieved by the identifier. Method _execute Parameters SAP COMMUNITY NETWORK © 2010 SAP AG SDN . when others.sap. raise exception type cx_uj_custom_logic. endmethod.com | BPX .sap. Please make sure that you change it to a unique value.sap.BPC 7. create data lr_line like line of <lt_entity>. assign component if sy-subrc <> 0. data: lr_line data: lr_entity field-symbols: <lfs_data> field-symbols: <lfs_result> field-symbols: <lf_sd> field-symbols: <lfs_line> field-symbols: <lf_elim> field-symbols: <lf_entity> field-symbols: <lt_entity> type ref to data. any. assign component if sy-subrc <> 0. endif. assert 1 = 2.boc. <lfs_line> = <lf_entity>. read table <lt_entity> assigning <lfs_result> from <lfs_line>. check if field ELIM = Y assign component 'ELIM' of structure <lfs_result> to <lf_elim>. 'ENTITY' of structure <lfs_data> to <lf_entity>. type type type type type type type any. hashed table. * assign pr_entity->* to <lt_entity>. The sample algorithm below shows.. if sy-subrc <> 0. do something .sap. endif.uac. any. assign lr_entity->* to <lt_entity>.com | BOC . endif. assert 1 = 2.com 9 . 'SIGNEDDATA' of structure <lfs_data> to <lf_sd>. * error: entity not found continue.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Discussion This method contains the code for the planning function. assert 1 = 2. if sy-subrc <> 0.sap. assign lr_line->* to <lfs_line>. any. endif. The important point here is showing. type ref to data. how the buffered data can be used in the planning function.. assert 1 = 2. how the buffered can be read and used.com | UAC . because we do not want to modify the APPSHELL data <lf_sd> = <lf_sd> * 1. any. if <lf_elim> <> 'Y'. Code method _EXECUTE.BPC 7.com | BPX .bpx.sap. The buffer object which holds the buffered data is handed over in variable I_SNGLTN_BUFFER and can be used to access the buffered data.sdn. * * * SAP COMMUNITY NETWORK © 2010 SAP AG SDN . The simple sample algorithm below identifies the entities and if the attribute ELIM has the value Y does some calculation. As we do not want to change the data in this simple example the calculation is a simple multiplication with the value 1. any.sap. here we just keep the value. * read the buffered data from the singleton i_sngltn_buffer->get_entity_data( importing e_data = lr_entity ). if sy-subrc <> 0. loop at ct_data assigning <lfs_data>. endif. BPC 7.sap.sap.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects endif. An identifier is always referring to one instance of this class.boc. This way it is possible to define special buffer objects and respect different life-times. Implementing Class ZCL_BPC_INIT_EXEC_FINISH_SGLTN This class implements the buffer object. which can be used for our purposes.sdn.com 10 . It contains a static table which keeps track if an object has already been created for the given identifier.com | BPX .com | BOC . one object for each identifier.bpx. but nevertheless it returns buffer objects. endmethod. endloop. Please note that the identifier must be the same for all BADI implementation to implement a real singleton concept. Please make sure to set the instantiation to “private” as shown in the screenshot below. Using different identifier allows to retrieve different buffer objects.com | UAC . For our purpose it is sufficient that the object stays the same during the runtime of the algorithm. SAP COMMUNITY NETWORK © 2010 SAP AG SDN .uac.sap. if necessary.sap. In this case class ZCL_BPC_INIT_EXEC_FINISH_SGLTN does not longer represents a singleton. com | UAC .sap.bpx. types: tt_instances type hashed table of ty_instances with UNIQUE KEY identifier . PR_ENTITY demonstrates how buffers can be used for performance tuning.com | BPX .uac.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Public types For the little example provided here two local types are necessary.com | BOC .BPC 7.sdn.sap. the buffer is filled and does not need to read again from the database. The other attribute PR_ENTITY is used as simple example implementation of a buffer.sap. instance type ref to ZCL_BPC_INIT_EXEC_FINISH_SGLTN. The first type defines a structure which contains the name of the identifier and an object reference to the instantiated buffer object. Details can be found below. Instead of reading the data each time the BADI is called. Attributes The class has the static attribute PT_INSTANCES which keeps track of the instantiated buffer objects. As long as the singleton lives in the memory.com 11 . it read just once and stored in the singleton. SAP COMMUNITY NETWORK © 2010 SAP AG SDN . The second type defines of a hashed table type for the first type. Here it used to buffer the entity attribute.sap. end of ty_instances . identifier type char10.boc. types: begin of ty_instances. com | UAC .sap. The following code implements this scheme.com | BOC . the reference to this object is returned. Method GET_INSTANCE to get an object reference to this class.boc. If yes. Instead of calling the constructor directly method GET_INSTANCE needs to be used to get the reference to the buffer object.bpx.sdn. Otherwise a new object is created and the reference to the new object is stored in table pt_instances for further reference. During the execution it checks. SAP COMMUNITY NETWORK © 2010 SAP AG SDN . The screenshot below shows the method definitions in detail.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Methods This class implements four methods. if an object is instantiated already for the given identifier. Method get_instance Parameters Discussion The concept of a buffer objects needs a controlled way how objects are created and it needs to make sure that only one instance of an object is instantiated for the same identifier. In this example the buffered data is released and the buffer object is cleared for educational purposes. if necessary. Finally method FINALIZE is used to clean up things.com 12 . Method GET_ENTITY_DATA returns the buffered data and gives access to the buffer.sap.sap. This is demonstrated in method EXECUTE of class ZCL_BPC_INIT_EXEC_FINISH.uac. Method INITIALIZE is used to implement the necessary things in the initialization phase.com | BPX . In this example a dimension is read from the database and buffered in the static attribute PR_ENTITY.sap.BPC 7. uja_t_attr_name. insert ls_instances into table pt_instances.g.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Code method get_instance. ls_instances-identifier = i_identifier. uja_t_hier_name. in attributes * here we buffer the dimension ENTITY create object lr_uja_dim exporting i_appset_id = i_appset_id SAP COMMUNITY NETWORK © 2010 SAP AG SDN . endif. uj_attr_name.BPC 7.bpx. e_instance = ls_instances-instance. * here you can buffer some data and store it e. e_instance = ls_instances-instance.uac. In this example the attributes and master data for dimension ENTITY are buffered. data: lr_object type ref to zcl_bpc_init_exec_finish_sgltn.sap. Code method initialize.sap. create object lr_object.com | BOC .sdn. else. data: ls_instances type ty_instances.sap.sap.com 13 . Here some data is read from the database and stored in an attribute.com | UAC . ls_instances-instance = lr_object. data: data: data: data: lr_uja_dim ls_attr lt_attr_list lt_hier_list type type type type ref to cl_uja_dim. endmethod. if sy-subrc = 0. read table pt_instances into ls_instances with table key identifier = i_identifier.boc. Method initialize Parameter Discussion This is a sample implementation how the buffer can be initialized.com | BPX . * delete the buffer if necessary . That means that the next call to the initialize method instantiates and returns a new object.sap. endmethod.com | UAC .com 14 .uac.BPC 7.for educational reasons we do this here assign pr_entity->* to <lt_entity>.com | BPX . endmethod.com | BOC . * delete the singleton if necessary for educational reasons we do this here delete pt_instances where instance = me. free <lt_entity>.sdn.sap. Of course it is not necessary to clear the entry in table pt_instances.sap.bpx. Furthermore is deletes the current instance from the static table pt_instances. Method finalize Parameters Discussion The finalize method cleans up the buffered data.sap.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects i_dimension = 'ENTITY'. * Get only base members and return a hash table for faster read access later on call method lr_uja_dim->read_mbr_data exporting it_attr_list it_hier_list if_only_base if_ret_hashtab = = = = lt_attr_list lt_hier_list abap_true abap_true importing er_data = pr_entity. SAP COMMUNITY NETWORK © 2010 SAP AG SDN . Depending on your requirements it may be better not to delete it and keep the buffered object instead. Code method finalize.boc. field-symbols: <lt_entity> type hashed table. This method provides access to the buffered data. SAP COMMUNITY NETWORK © 2010 SAP AG SDN .sap. endmethod.sap.sap. In this simple implementation it just returns a reference to the buffered table.sap. Code method GET_ENTITY_DATA.com | BOC .com 15 .uac.com | BPX . Parameters Discussion This method provides access to the buffered data. Therefore a way to access the buffered data needs to be established.bpx.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Method get_entity_data The buffered data is needed in method _execute in class ZCL_BPC_INIT_EXEC_FINISH.com | UAC .boc. e_data = pr_entity.sdn.BPC 7. Please take a look at the screenshot below.boc. Using function groups can be sufficient in some cases.sap.bpx. Testing the concept presented in this paper can be done in transaction UJKT.sap. Please note that the SAP support organization cannot handle questions about the approach presented in this paper. In this case global variables of a function group can be used as buffers. SAP COMMUNITY NETWORK © 2010 SAP AG SDN . return the buffered data and delete the buffered data.sap. Please ask your questions in SDN.BPC 7. It shows which input is necessary.sdn.com 16 . Instead of using buffer objects is possible to use function groups and dedicated functions to achieve a similar behavior.com | BOC .uac.com | UAC . Furthermore some functions are necessary to initialize the global variables.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Miscellaneous This paper describes a way to implement efficient buffering technique by introducing buffer objects.sap.com | BPX . and other countries. PartnerEdge. IBM. the Adobe logo.com | BOC . These materials are subject to change without notice. eServer. SAP NetWeaver.sap. BusinessObjects. iSeries. Redbooks. Acrobat. ByDesign.boc.A. AS/400.com | UAC . OS/400. pSeries. Crystal Reports. GPFS. and Reader are either trademarks or registered trademarks of Adobe Systems Incorporated in the United States and/or other countries. POWER6+. System z9. PowerPC. DB2 Connect. Xcelsius. OS/2. Inc. Business Objects is an SAP company. BladeCenter. i5/OS.uac. and other Business Objects products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of Business Objects S. Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors. The only warranties for SAP Group products and services are those that are set forth in the express warranty statements accompanying such products and services. Linux is the registered trademark of Linus Torvalds in the U. and Motif are registered trademarks of the Open Group.S. Adobe.com 17 . S/390 Parallel Enterprise Server. PowerVM. and SAP Group shall not be liable for errors or omissions with respect to the materials. Microsoft. OpenPower. XML. Excel. XHTML and W3C are trademarks or registered trademarks of W3C®. Citrix. System z10. Inc. X/Open.. S/390. and MultiWin are trademarks or registered trademarks of Citrix Systems. HTML. Oracle is a registered trademark of Oracle Corporation. All rights reserved. System Storage. All other product and service names mentioned are the trademarks of their respective companies. System i. PostScript. World Wide Web Consortium. WebSphere. Inc. Intelligent Miner. RETAIN. JavaScript is a registered trademark of Sun Microsystems. MetaFrame. System z. UNIX.bpx. z9. Duet. and PowerPoint are registered trademarks of Microsoft Corporation. POWER5. used under license for technology invented and implemented by Netscape. No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP AG. OSF/1. AIX. ICA. Tivoli and Informix are trademarks or registered trademarks of IBM Corporation. Power Architecture. DB2 Universal Database. System i5. These materials are provided by SAP AG and its affiliated companies ("SAP Group") for informational purposes only. DB2. z10. VideoFrame. Nothing herein should be construed as constituting an additional warranty. WinFrame. Parallel Sysplex. Windows. Massachusetts Institute of Technology. BatchPipes. in the United States and in other countries. Crystal Decisions. z/VM. Netfinity. National product specifications may vary. POWER5+. MVS/ESA. SAP Business ByDesign. HACMP. Java is a registered trademark of Sun Microsystems. if any. System p.sap. R/3.com | BPX . zSeries. Program Neighborhood. The information contained herein may be changed without prior notice. without representation or warranty of any kind.sap. z/OS. Data contained in this document serves informational purposes only.sdn.X for NetWeaver: Performance Improvements for BADI UJ_CUSTOM_LOGIC Using Buffer Objects Copyright © Copyright 2010 SAP AG. and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG in Germany and other countries.BPC 7. System p5.sap. Outlook. POWER. Web Intelligence. RACF. POWER6. Business Objects and the Business Objects logo. xSeries. System x. SAP COMMUNITY NETWORK © 2010 SAP AG SDN . OS/390. SAP.
Copyright © 2024 DOKUMEN.SITE Inc.