It’s quite difficult to be precise in the area which this blog should belongs, SXDA and LSMW are Netweaver components and works cross solutions, but as I’m specialized in CRM and the example is with the One Order object I believe this is the best spot, I just hope this can be useful also to other SAP professional which works in a different area.


This blog is about improving the mass data transfer (insert, update, delete) experience using LSMW and SXDA and will be focused on the definition of the whole project. Please don't skip the second part of the blog which includes the execution and references: Unlashing SXDA and LSMW Part 2 - Execution


What? Someone asked what's LSMW? This is an old topic and I believe is covered enough trough SCN, but I think a short definition will be good: Legacy System Migration Workbench is an old framework to manage data transfer into a SAP system (create sales orders, customers, etc. supports a large number of objects).



  • Are you tired of depending fully on developers?
  • Are you tired of the sentence “custom report?, we can’t support you”



  • Are you tired of manually deal with mass processing using parallelization?
  • Do suffer from itching each time you have to develop a report to upload a file from the local pc?
  • Do you still suffer PTSD after deal with complex data mapping in LSMW (events)?


If most of the answer is a YES, I believe this blog can really be useful, Otherwise, there’s a lot of stuff going on SCN


The Scenario:


Update more than 5k of sales orders which have a wrong posting date.


Step 1: Create a project


Acording to SAP "A project is used to group Business Objects together for a transfer" In our scenario we only have One Business Object: Sales Order. This doesn't make much sense in our basic scenario, but imagine you want to migrate various legacy systems to your SAP solution, you can create a project for each leagacy system and inside each project you will have all the Business Object required (Customers, Relationships, Products, etc.) or even better, each legacy have two Business Object, Legacy system 1 has Customers and relationships and Legacy system 2 has Products, this is a very nice way to organize your data transfer, right?







Step 2: Create a subproject, run definitions and tasks via Wizard


The Subproject will correspond to  Business Object itself in our case the One Order object.



Step 3: Choose the type of data transfer object (Business Object)


Depends on the Business Object type selected, the wizard will provide you the corresponding load method (LOA), load methods supported are:


  • BAPI (you can create/use your own BAPIS, in that case, the BAPIS must be generated through BAPI-ALE interface, I'm not going further on this as the main topic is wide enough)
  • Batch Input
  • Direct Input
  • IDoc


You already have the relationship between Business Object and load method delivered by SAP, and this will depend on which modules do you "installed" in your Netweaver.


You can check which objects/load programs/interfaces are available through SXDA->Goto->DX Program Library




Step 4: Review taks parameters


The task is, as the name says, each task which will be performed sequentially in each run definition, oh! I almost forgot, what's a run definition? For that I will need to go for another "complex" scenario: Imagine you have to create customers and the source files are more than one, you can create a run definition for each file in the same Subproject (Business Object) why? for example to run the data transfer in paralel, or a better case you have different tasks for each run, first run validate file, second run no because the file doesn't need to.


STEP 4.1: Task - Convert data


Calls the LSMW as the maping tool in order to convert the file from external format to the BAPI, Batch Input, etc. internal format. You don’t need to change nothing here, but give you the detail to build the filename for the step 4.2. It believe it's good to know the Project, Subproject and Object fields of the second screenshot correspond to the LSMW project which will be generated once the wizard finish.




Small parenthesis:  Sometimes LSMW need a very complex input files and the customer doesn’t have/want/know to perform those conversions on the Legacy system. Here’s where another major advantage of the SXDA comes to play, the possibility to define additional steps, in this case I’m briefly talking about the Task Types: Extract data (EXT) and Clear data (PUR) , you can define a custom Function module or custom program for both Task types in order to read the source file and format it nicely in a LSMW friendly file, specially the hierarchical type ones, people whom dealt with that in LSMW knows exactly what I’m talking about, right? No more dirty stuff on the LSMW mapping events! Keep the mapping as simple as you can. If you are more interested in this topic I can write a specific one about this, but firstly let’s see the acceptance of this one


You can define additional tasks on SXDA->Goto->DX Program Library->Create registration, once is registered the wizard will suggest to use it (if you create the run from scratch or if the run is already created and you want to add this new task manually)


Step 4.2: Task - Check file


It Checks if the file has a correct IDoc format, doesn’t check the data itself, only the structure. The important part here is the name of the name of the input file, the filename is the result from the mapping conversions performed by LSMW (convert a flat or not flat file to the IDoc format which can be consumed by the standard BAPI) The name convention is always the same name of the SXDAproject(Uppercase)_subprojectID_ObjectID.lsmw.conv (you can check this in the previous screenshots,  Step 4.1)

You can perform this step once everything is finished, even all the LSMW but it’s better to do it at the very beginning to avoid the “Oh I forgot”.




Step 4.3: Task - File split


In this step we split the converted file in small chunks, the number of the total IDocs generated is divided into the number of files defined, and this is quite useful, for example: check a particular block on a 100 record file it’s easier than do the same on a file which has 500k, for further information check the section Fix the errors. I also like to keep the files, sometimes the data transfer can be performed successfully but some data got lost, so it’s a good way to trace small mapping errors, loss of data, etc.



Step 4.5: Task - Load data


This is the most important step and one of the awesomeness features, you can choose the size of the transactions per commit and if you want to perform the data transfer sequentially or in parallel using a server group, the last one can increase the performance dramatically, but you must check/configure with the basis guys the server group in order to not use all the DIA processes a good tuning between parallel processing and block size is one of the cornerstone of an optimal and healthy data transfer.


I only log the error messages, because I don’t want to increase the logs necessary and I also check the Write IDoc to error files, because allow me to fix records with errors, I will explain this later on.


As we split the file in 5 we need a 1 error file for each to store the erroneous records, more files, easier to find inside the file the error, but we also will see this in the following steps.





Step 5: Choose message type


In our scenario I’m dealing with XIF interfaces (BAPI-IDoc) this can differ depending on your object type and data transfer method.



Step 6: Perform the mapping using LSMW


The convert data step doesn’t have any input /output file, this will be automatically informed once the LSMW tasks are completed.




As I pointed in Step 4.1 I already have a Project, Subproject and Object (generated by the SXDA wizard) Don’t forget to config the Inbound IDoc Processing from the LSMW perspective (settings) more info about this and LSMW at help sap portal



Let’s assume I finished all the mandatory steps (everybody who is used to LSMW knows what I’m talking about, if you are not used to LSMW there are very nice blogs step to step on SCN which cover those steps, from 2 to 6)

Now It’s time to specify the files and assign to the input structures (remember until this steps are done, the SXDA Convert Data step will be incomplete.


As you can see the LSMW automatically assigned the IDs for the Imported and Converted data, this must match in the SXDA steps.




Finally, we go back to the SXDA we see the input/output files informed (if this doesn’t happen: two cause can be a refresh on the SXDA screen, so /NSXDA  or some LSMW step is missing )





End of part 1:


I hope you are starting to see the advantages of combining both tools and looking forward to your feedback





Luís Pérez Grau

CRM Code examples

Posted by Luís Pérez Grau Aug 29, 2014
ComponentSupport Package



Why this blog?


My intention within this blog is to bring to the front page some code examples posted in the wiki hopefully will be easier to be found. In order to not create a blog for each time I create a wiki entry on the code gallery, I will update this blog.



The Wiki Pages:


Business Transactions


Example how easy can be using the XIF interface to update the One Order model

CRM - Change Document appointment date using XIF - Code Gallery - SCN Wiki


Example of deleting Sales Order Items by Sales Order ID and Product ID

CRM - Remove Document Items by Document ID and Product ID - Code Gallery - SCN Wiki


Example of creating manual conditions on a Transaction via program.

CRM - Create manual conditions on a Transaction using XIF or One Order API - Code Gallery - SCN Wiki


Web UI


Up to SAP CRM 7.0 Ehp2 SAP didn't provide standard tools to remove massively saved searches, I believe this tool is pretty useful from an administration point of view.

CRM - Remove massively WebUI Saved Searches by User and Description - Code Gallery - SCN Wiki



I hope I can keep publish more content and looking forward to your feedback.





Many of the SAP CRM consultant who are working on SAP CRM authorization must have come across UIU_COMP  authorization object. This object is the major differentiator between SAP CRM and SAP ERP. SAP CRM WEBUI make use of external services of the type UIU_COMP. The visibility of the work centre, logical links, creates, edit, etc in WEBUI pages depends on it. While creating PFCG Role (automatically/ manually) UIU_COMP authorizes UIU component on the base of Component name, inbound plug and component window.

The diagram below shows the relation between Authorization , Business Role and WEBUI.



The Role Menu in PFCG Role shows the list of all the work centre, logical links (which are UIU_COMP links) assigned to a specific business role link generated



Any deletion of any of the links in the role menu will cause deletion of the links in the WEBUI even if the changes are not made in the business role. For example if I delete UIU_COMP_BP_HIER_MainWindow_CREATE from the role menu, the same will be deleted in the authorization objects . And it will be not visible in the WEBUI too even if the same is maintained in the Business role.

The Assignation of the actual line nos to items in Transactions are very important. And they are also very important in case of Bill of Materials. Since its all standard we never tend to worry about this.But there are requirements for e.g.

  • When you need to create structured products yourself based on a custom logic. In this case the responsibility of allocating proper line nos would fall with you.
  • Based on certain events , you would need to add a new product to the Items , then also you need to take care of the lines nos.

At this point of time some of the scenarios may look a bit weird but they are a real possibility and then the line nos are not assigned properly.


The actual assignment of line nos happen through the call back functions. The function module CRM_ORDERADM_I_ITEM_NUMBER_EC is responsible for this. The assignation is done in the FM.


Now if you need to add some custom logic to find out the increment in which the item nos are changed , then you can do using the following code


        iv_process_type      = lv_process_type
        es_proc_type         = ls_crm_proc_type
        entry_not_found      = 1
        text_entry_not_found = 2
        others               = 3.

The field incr_item_proc in the structure ls_crm_proc_type will contain the increments defined in the customizing. Now if you want to play around with this information to assign the item nos as you wish to. But you have to make sure

  • If you want to have the standard function module assign the item nos , then your code should run before the standard callback FM is called. But in this case you would not be able to establish the parent child relation yourself because the line nos are not assigned.
  • Then in that case you have to write the custom logic for assigning the item nos. You can read the increments as defined in customizing then act accordingly.

Since there is no formal book available for SAP CRM Pricing , then how do you ramp-up using the available materials. The idea looks pretty daunting but using this learning map , you get exposed to a learning map. The learning map goes like this

  • Functional Knowledge: The configuration of pricing is a very big skill in itself. To conquer this, you need to to a have formal material in your hand. I chose to use this book. You may also choose to use another book or alternate material but there is no way you conquer pricing without knowing the basic functional configuration of pricing. Now the literature on SAP CRM pricing is limited so feel free to pick SAP SD Pricing configuration guide/book and do a comparative study of both to enhance your knowledge.
  • Internet Pricing Configurator(IPC): The pricing engine in SAP CRM is IPC. Without knowing this it is very difficult to conquer the pricing. Pricing engine contains Pricing , Tax and Configuration Engine. Also should have understanding of Virtual Machine Container(VMC) which is a part of Application Server ABAP. What do we do in IPC ? There are many things we do in IPC. Primarily all custom routines which are implemented in ECC SD have to be re-implemented in IPC. Since IPC is Java based , hence you need to have knowledge of JAVA , NWDS and NWDI. There are restrictions as to what Java based functionality you can use in IPC. To know more details , please download this document. This would explain you everything related to IPC. The document is a treatise and would help you to ramp-up on all topics in SAP IPC. This document was delivered with a SAP Note.

        Also you can refer to this website.

This diagram illustrates the Development Infrastructure used in IPC


The development process in Java is illustrated below ( holds good for IPC Java developments as well)


The ABAP & JAVA development process is compared



  • ABAP Based Developments for pricing: Though there are somethings which are missing in this blog, yet this blog is an absolute must for beginners. The ABAP based developments are covered and that part is sufficient.
  • Tools to analyze pricing: There are some excellent tools available to analyze pricing in SAP CRM.Check the attachment in the note . You would need the access to Service Market Place. The following paramters are used in SAP CRM/IPC analysis.


  • Middleware: The mass generation of following types of objects could be done
      • Price determination relevantconditions (PR , BO and FG) -These conditions control the price determination when the trade promotion is executed or the sales order is executed.
      • Conditions used in campaign determination (CD) -These conditions control thecampaign determination when the trade promotion is executed.

     The transation CND_MASS_GEN_OBJECTS is used to generate the objects these objects



With this learning map at least you would  have more than the basic idea about pricing from customization, IPC from its infrastructure, development and other related areads and CRM Pricing Analysis tools. Enough to get started.


It took me a lot of effort ( actually effort of colleagues who ramped me up as well ) and a lot of persistence to gain a foothold in this area. Went through lots of materials available in the internet and then could narrow down the list to these documents/books. In the interest of people , let this blog be a placeholder for learning SAP CRM Pricing and Internet Pricing Configurator resources. We can add the resources if we want to add.


If you believe if something is missing please mention it in the comments and hopefully me or someone else will be able to modify the blog to capture the information.


Selected Blogs from SAP SCN which may be of interest

  1. Blog1
  2. Blog2
  3. Blog3
  4. Customizing Download
  5. IPC Java User Exit Development
  6. IPC Java User Exit Advanced
  7. Update Pricing in SAP CRM & SAP ECC
  8. Debugging Java Based IPC user Exit part1
  9. Debugging Java Based IPC user Exit part 2

You would wonder why the hell is he publishing a book review of a SAP SD topic in CRM area. The reason is very simple. There were no books available for pricing in SAP CRM area hence I decided to accelerate my learning by purchasing this book. In fact if you have worked on projects which have a CRM and ECC integration using CRM Middleware , then most of the customizing is downloaded from ECC system to CRM, so learning SD customizations for Pricing makes perfect sense.Since I am currently working in one such project , I had a good use case to use the knowledge that I would gain from this.


I found the book a must read for any body who doesn't have an extensive SAP Pricing experience and would like to ramp-up quickly in this area. The books claims to help you with these points

  • Understand the complete pricing solution from SAP

If you are working in SAP SD , then this statement completely holds true. This is a very good book to understand the pricing from SAP point of view. Exposes you to almost every thing related to pricing. Also exposes you to Variant Configuration and Internet Pricing .  But from a SAP CRM point of view, this would expose you only with the configuration ( which is good ) and not anything else ( which is also not the core constituency ) of the book. The book also details the User Exits which are used in SD Pricing and Routines which needs to be developed. If you are looking for a formal introduction to pricing configurations , condition techniques and various intricate details of pricing configurations then this part is satisfactory. There are finer details which is difficult to pick but this book exposes to you with that.

  • Master Pricing with Materials Management and Sales & Distribution, as well as condition technique and industry-specific coverage

Though I did go through MM Pricing portions but they were not relevant to my study hence I would not provide any review on it. Now coming to Sales&Distribution pricing. Provides a very detailed analysis on pricing , condition techniques , special topics in pricing , pricing performance enhancement and data migration and cutover planning.An example that I liked very much is it is using the pricing enhancements only that we make sure if a condition record is fetched using a particular access then no further records are fetched.It is always mentioned in topics that once a condition record is fetched using an access no further search is made but that is not possible without a customization. This book exposes you many such small details which is very necessary for real life scenarios. There are many topics which you don't come across until you have very high exposure to SD Pricing for e.g. there are certain checks which happen on header level fields which would help optimize pricing.

  • Explore case studies and practical, real life examples and throughput.

The book uses examples to build upon the concepts. And also it goes from a simple concept to build upon the composite topics. For e.g. the condition type customizing would determine if scale based pricing is to be maintained and quantity conversion details. Once you go through this you would appreciate smaller details like this. It is this practical approach that helped a noob like me to pick the concepts faster. Actually once you see the examples in this book , you would start noticing smaller artifacts in your project system as well.


This book can be used to in many stages. First to get acquainted , them to familiarize and then to gain expertise. That also means that if you are newbie then you may have to read the books multiple times. This is a very good guide for any one and every one who is looking to make a serious career in Pricing. Why ? because you have to start some where and this is an excellent starting point. CRM consultants may argue that it doesn't topics such as IPC , customizations specific to CRM but then there is no book on that at present and hence this would be a launch pad.


My verdict : Must read and must be read many times.

Kavindra Joshi

The Report Card

Posted by Kavindra Joshi Aug 5, 2014

I have written this blog on Feb 2nd , 2012( http://scn.sap.com/people/kavindra.joshi/blog/2012/02/02/scn-active-contributor-silver )and 2.5 years after that I sought to review the promises that i have made publicly.I had put a sticky notes on my personal laptop one for short term goals and another for long term goals.


The goals were following

  • SAP  CRM Sales
  • SAP CRM Services
  • SAP CRM Marketing
  • SAP Interaction Center
  • SAP Business Partner
  • PFCG & ACE
  • SAP CRM Middleware
  • SAP CRM BCM and Contact Center
  • SAP Variant Configuration
  • SAP ECC Pricing in SD
  • SAP CRM WebServices
  • SAP Solution Manager & ITSM process



I am very happy to say that apart form ECC FICO , I at least managed to lay my hand on most of the topics. CRM Service & Middleware are the only areas, that i have not been able to complete to my satisfaction. I had ordered SAP Press Books ( I would publish my reviews on them). I had ordered a book for ERP SD and read most portions of it and managed to understand the sales process , customizing and logistics process.I could de-clutter the following



  • Frameworks such as One Order, Marketing etc and touch upon areas such as Service & Marketing.
  • CRM middleware or how does a CRM system talk to ERP or a third party software
  • All areas in WebUI
  • PFCG & Access Control Engines.These are the backroom boys which restrict my access to links.( I hate them actually hence would like to conquer them).
  • Business Use of CRM.
  • Mobile CRM ( one of my friend has promised me to introduce this concept).
  • Consuming Web Services in SAP CRM
  • Sales & Distribution Module of SAP ECC as this is the back bone of order processing in SAP world.

             In the non-CRM areas i would like to fine tune my knowledge in the following areas

  • Web Services in general and in the SAP world doing some hands on this.


Some of my learning would get disseminated in the form of blogs( they are pending items on my list). I am currently working on them would publish them one by one.

Hasan Zubairi

Enterprise Search

Posted by Hasan Zubairi Aug 5, 2014

My grandmother once gave me some valuable advice about not being too shy to ask people for what I wanted, “Don’t be afraid to ask. The worst that can happen is they’ll just say no.” In my case – as a seven year old – I wanted a cute puppy dog. (Note: I eventually got that puppy dog – and he eventually chewed up all my shoes, clothes, and toys. Strangely though, I could never convince him to eat my school homework.)


SAP also provides a way for customers to ask for things. The SAP Influence Programs offer three channels for customers to provide direct input to help influence SAP’s products and solutions.


  • SAP Advisory Councils invite lighthouse customers and thought leaders to work with SAP to shape the future direction of SAP products and strategy.
  • Customer Engagement Initiatives offer SAP customers the chance to collaborate with SAP on the development and testing of new products and solutions in the pipeline.
  • Customer Connection topics invite customers to help improve existing SAP products that customers are already using by suggesting and voting on ideas for improvements.


SAP typically has multiple Advisory Councils, Customer Engagement Initiatives (CEIs), and Customer Connection focus topics running in parallel.


SAP recently wrapped up a Customer Connection focus topic dedicated to Usability of CRM WebClient User Interface(UI). Customers from around the world submitted thirty-eight different ideas for improvements, of which twenty-four were recently delivered. Among some of the cool new enhancements are things like:


  • Automatic “save”
  • Cancel a running search
  • Ability to include colors in result lists
  • Custom logos for business roles
  • Improvements to the email editor
  • And many, many more…


And the best news? All of these features are available for immediate use (via SAP Notes) for select existing CRM versions! No need to wait for a future enhancement package.

Check out the presentation and/or watch a recording of the presentation showing all the new features!


And don’t miss your chance to participate in the next round of enhancements in the next cycle for Customer Connection for CRM to begin at end of August. Click here to sign up for the Aug 28 kick-off meeting!



Follow me on my blog at http://scn.sap.com/people/john.burton/blog

Is anyone puzzled that CRM enterprise search could not consider attachment in its search scope? The good news is, from CRM 7.0 Ehp3 SP02, attachment information such as content, name, description, file name could also be considered when executing ES, furthermore matched attachments are indicated on the search result view! Sound interesting, right? Now let me give you a brief introduction about this new feature and how to enable it.


1 Enterprise search in business object attachments, how it works

Besides other normal attributes of a business object, we now include its attachments in ES. Taking account simple search for example, if account A has several attachments, and some of their content contain the key word "kw_acc02", when searching for accounts with key word "kw_acc02", the account A could be searched out in result view, and an additional column "Matched Attachments" shows an icon indicating that there are attachments matching the search key word, with a tool tip indicating the exact number of matched attachments.

If there are no matched attachment, the column "Matched Attachments" would be empty. The new feature does not affect original ES functionality.


Matched Attachments can be opened directly by clicking the icon. If there are more than one attachment, a list of them would be popped up.



Not only attachment content is supported in the search, but also its name, description and file name are supported too. Please note that for binary attachment such as video, audio and picture, only its name, description and file name are supported. Attachment content search is supported for most of common text based format such as .txt, .doc, .pdf, .xls, .ppt and etc.


2 How to enable search in attachment for standard supported business objects

Search in attachment is available for  the following business objects: accounts, contacts, activities, opportunities and installed bases in standard delivery.

The overall feature can be switched on/off by BF CRM_ES_BY_ATTACHMENT. Besides this, enabling is also supported on individual business object type level. Following configuration path: Customer Relationship Management->UI Framework->Enterprise Search Integration->Enable Search in Business Object Attachments, you can enable a specific object type by checking the "Searchable" field.


Upon saving after you change the "Searchable" field, you will be prompted to schedule a full indexing job for the corresponding application model connectors in Connector Administration Cockpit, this is to make attachment data indexed on TREX side. Another important point is that, matched attachments display on ES result view is based on virtual model which is a special kind of ES model, therefore you must also create a corresponding virtual model connector in the Connector Administration Cockpit as well. For detail information, you could refer to its IMG activity documentation.


3 How to enable search in attachment for other business objects

Customer is capable to enhance other business objects to support search in attachment other than the objects listed above on its own business need. Note 1950354 provides guide for this enhancement, and from Note 1949699 you can get the list of business objects that can be enabled with the search in attachment function. Additionally, enablement for ICM case is described separately in note 1944566, and that of product and individual object is in note 1960753.


That's the main functions of this feature, if you are interested, you can start with note 1977197. Hopefully you'll enjoy it!

Your questions and suggestions are always welcome!^-^


Best Regard


Finally the professional edition of

desktop connection

is ready for shipment.


This version covers a complete set of main functionality which are:


create, maintain and delete of accounts and the corresponding



Maintain, create and delete to keep data consistent and actual



Sharing of incoming and outgoing mails


Sharing appointments and meetings



Sharing personal tasks to structure your work


With this solution you ca easily enable your sales force to do around 80% of their daily work directly out of Microsoft(R) Outlook. Keeping collegues up-to-date providing most actual information and keep you dta in order in the backend.

Still the solution is free of charge for all existing CRM customers.

Further information can be found here.

At the end of this year an enterprise edition is planned which focuses maily on

  • Recurring appointments
  • Leads
  • Opportunities
  • and extensibility

CRM Actions are really usefull functionality when we need running some codes in specific conditions. We have lots of options on customize conditions.

CRM consultants are of course familier with action customizing.


We are defining our action profiles then defining conditions. We can define start or schedule conditon. System is allowing standart parameters based on object type.


But what if we have z-fields and we want to use these fields in condition?

We will do below steps:

1- Create your parameter in condition definition page.


It's really easy to define new parameter. There is a create button bottom right side.


You can use order structure and field as reference.


After defining your parameter you can use this parameter in your condition.

2- Create an implementation on badi CONTAINER_PPF to set your parameter.

This badi has a filter on business object (eg:BUS2000116 for CRM service process)

Here some code patterns,


* ------- Get the order GUID ----------
   call method ci_container->get_value
       element_name = 'BUSINESSOBJECT'
       data         = ls_object.

   lv_guid = ls_object-instid.
   append lv_guid to lv_headerguid.

* ----- Get the Parameters from container
   call method ci_parameter->get_values
       values = lt_value.

you can use 'CRM_ORDER_READ' function to read order details.

and finally you can set a specific custom field. It's important element name should be your parameter name.

call method ci_parameter->set_value
           element_name = 'Z_DAGITIMSIRKETI'
           data         = ls_orderadm_h-zzafld000060
           retcode      = lv_return.


ComponentSuuport Pachage


The scnenario


We want to redetermine all the conditions of sales orders without modifying any data which forces the pricing redetermination (PRICE_DATE, STATUS, etc.)

Should we use BOL to perform mass changes?


Well, IMHO you shouldn't use the BOL to manage large amount of data, why? Well, that's a good question, in theory less amount of software layers, better performance, but one reason why I would choose an API instead of BOL is using aRFC to improve the performance via parallelization, as you already know you must initialize the BOL core and load the specific sets for each aRFC, so I don't believe this is the right path, but if don't agree with my view I will be more than happy to discuss even change this lines


Then, Why we should use BOL?


BOL has numerous advantages, modern/uniform layer to access data, tools for modelling, etc. my intention is not enter in detail why we should or not using BOL, but I think a very brief overview will situate you for what comes next.


We should use BOL, some times, because there's no other option, and my example is one of those cases, there's no complete API to redetermine conditions. If you want to develop this functionality you should trace all the FM involved in during the process and put all the pieces together (for more  detail, I would suggest to trace the stack until  the FM PRC_PD_ITEM_UPDATE_MULTI or PRC_PD_ITEM_UPDATE is triggered), the problem is you are decoupling the logic in the GENIL layer or in the controller of the CRMD_ORDER into a custom spot, like a report, the logic decoupled is how the standard works right here, right now, but guess what, SP and ehp will come, and new FM can be included/excluded bugs fixed, etc. and your code will remind the same, so you must take an eye every time you apply a note, sp or ehp, from my point of view this is a huge waste of time.



The small reward


Here is the sample of the code as reward to bear all my "philosophical" stuff, keep in mind this is just a sample use it with care.



DATA: lt_param TYPE crmt_name_value_pair_tab.
DATA: lv_error_w TYPE string,
        lv_object_id_w  TYPE string.
DATA: lo_bol_core  TYPE REF TO cl_crm_bol_core,
        lo_query     TYPE REF TO cl_crm_bol_query_service,
        lo_result    TYPE REF TO if_bol_entity_col,
        lo_entity    TYPE REF TO cl_crm_bol_entity,
        lo_col       TYPE REF TO if_bol_entity_col,
        lo_bol_trans TYPE REF TO if_bol_transaction_context.
DATA: lv_bpath_query TYPE string.
FIELD-SYMBOLS: <ls_param>  LIKE LINE OF lt_param.
lo_bol_core = cl_crm_bol_core=>get_instance( ).
lo_bol_core->start_up( iv_appl_name = 'ONEORDER' ).
lo_query = cl_crm_bol_query_service=>get_instance( 'BTQuery1O' ).
lo_query->set_property( EXPORTING iv_attr_name =   'OBJECT_ID'
                                    iv_value     = lv_object_id_w  ).
lo_result = lo_query->get_query_result( ).
      IF lo_result->size( ) EQ 0.
*     Error handling
      lo_entity  = lo_result->get_first( ).
      IF lo_entity->lock( ) EQ abap_false.
*     Error handling
    CATCH cx_sy_move_cast_error.
*   Error handling
lv_bpath_query  = `./BTOrderHeader/BTHeaderPridoc/CondHSetRel/*$`.
lo_col = lo_entity->get_related_entities_by_bpath( iv_bpath_statement =  lv_bpath_query ).
IF lo_col->size( ) EQ 0.
*  Error handling
lo_entity ?= lo_col->get_first( ).
CLEAR lt_param.
<ls_param>-name  = 'RETAIN_MANUAL_CONDITIONS'.
<ls_param>-value = abap_true.
      lo_entity->execute( iv_method_name = 'Update' it_param = lt_param ).
      lo_bol_core->modify( ).
      lo_bol_trans = lo_bol_core->get_transaction( ).
      lo_bol_trans->save( ).
      lo_bol_trans->commit( ).
      lo_bol_core->reset( EXPORTING iv_include_bal_reset = abap_true ).
    CATCH: cx_crm_genil_model_error cx_crm_bol_meth_exec_failed.
*   Error handling

If you want to redetermine the conditions at item level you can use the following BPath: ./BTOrderHeader/BTHeaderPridoc/CondItemSetRel/*$ and loop at the collection executing the method for each entity (CondISet), one nice thing to considerer is the entity CondISet has the attribute ITEM_NO, well don't let the name confuse you, that's the item GUID (CRMD_ORDERADM_I-GUID)



Client-based groupware integration enables you to synchronize tasks, appointments, and contacts between Microsoft Outlook or IBM Lotus Notes and SAP CRM so that you can access from the groupware client all data that has been created in an SAP CRM application.

Data can be synchronized in both directions.

Automatic synchronization can be enabled, allowing users to seamlessly work without the extra task of synching their calendar data every day.



Before installing the software, pay close attention to the prerequisites and the supportability of Email clients and version

Lotus Notes 9 is not yet supported. Expected to be supported by late 2014.


MS Office 2003, 2007, 2010 & 2013 (32 bit) are all supported


Lotus Notes (6.5, 7.0, 7.5, 8.0, 8.5 till 8.5.3) – 32 bit

(Note: LN 9 is not yet supported. Expected late 2014)


Example of prerequisite check during installation -



After installing on MS Outlook a new Menu item will appear. This is the AddIn. See below....





Key features


  • Determination of Relevant Items for Synchronization


The synchronization settings made by the administrator in Customizing influence which items are synchronized.


  • Conflict Handling


Administrators (and business users, if allowed) can define which items automatically have priority in cases of conflict




  • Relate to SAP CRM Add-In (Microsoft Outlook Only)


Allows user to classify an item as relevant to SAP CRM. If not then item will not be synched to CRM.



  • Auto Synchronization


  • Synchronization of Attachments
  • Single Sign-On




Documentation for 10.30 Client-based Groupware Integration is available on  SAP Help Portal for all CRM 2007, CRM 7.0, CRM 7.0 EHP1 and CRM 7.0 EHP2  releases.

"Client Groupware Integration 10.30: Functional Guide" and
"Client Groupware Integration 10.30: Inst. and Config. Guide" are available on
Service Market Place for CRM 2007 and CRM 7.0 releases (including Enhancement Packages).



  1. Go to https://service.sap.com/crm-inst
  2. Select a CRM release applicable for you


  • For SAP CRM 7.0 and 7.0 Enhancement Packages:
      Installation Guide is available under "Install"

          Functional Guide is available under "Operate"

  • For SAP CRM 2007 (CRM 6.0):

          Both the guides are available under "CRM Standalone and Addon Components"


Latest Version

The latest version is 10.30 SP02 Patch 02 (

Refer to SAP Note 1997853

What is WeChat?


WeChat is a free mobile social media App from Tecent Corp., China.  With WeChat, mobile users can send text/voice/image/video messages to their friends, groups, for free.


WeChat also provides public platform where companies can have their service accounts or subscription accounts here to serve and collaborate with their customers / end users. WeChat public platform also has payment, sharing, message pushing etc functions integrated.


Until Nov. 2013, WeChat already had more than 600million users globally, and is one of the biggest mobile user traffic entry point.


For details of WeChat, refer to their website: http://www.wechat.com/en/


Recently, the demand from customers to have WeChat and SAP CRM system integrated is keeping increasing. Therefore, I'm writing this blog to show some scenarios that can be realized via WeChat and SAP CRM integration.


What are the Demo Scenarios?


Following 6 scenarios will be demoed in the video:

  • Contacts and Memberships Management via WeChat
    • A WeChat user follows a company's WeChat Service Account
    • An individual account and a membership is created in SAP CRM and the membership ID is returned back to the WeChat user
    • WeChat user can update their personal information via WeChat directly
    • WeChat user can check their membership information anytime on WeChat


  • Support O2O via guiding user traffic between WeChat and other channels (like Call Center, e-commerce, physical stores, etc).
    • Show the products defined in SAP CRM on user's WeChat, and WeChat user can navigate to see the product details (possiblity to integrate with e-commerce platform here)
    • Click from WeChat to call the sales hotline
    • Check status of their sales orders on WeChat via menu or voice messages
    • Check the shops nearby


  • Self-service (e.g. register product, check order status, etc)
    • Register product via self-service
    • Check the user's registered product on WeChat
    • Check Service order status via menu or voice messages


  • Online service via communication with service agents
    • WeChat user to communicate with Interaction Center agent via text/image/voice messages


  • Support marketing campaigns via WeChat (to all or some of your WeChat followers).
    • Use WeChat as a channel for marketing compaigns
    • WeChat user can choose to join a compaign or not and target group will be maintained automatically
    • WeChat user can check latest promotions/marketing events anytime on WeChat
    • Send personalized information to selected WeChat users
    • WeChat user can check their vouchers anytime on WeChat


  • Analysis of WeChat user behaviors.
    • Analyze usages of any WeChat menu item over different periods of time
    • Analyze usages of different WeChat menu items to optimize the WeChat functions




Following is the demo on YouTube.com.



If YouTube.com is not accessable in your country, you can use the following link on Youku.com



Following is a summary of WeChat Integration demo scenarios:



Filter Blog

By author:
By date:
By tag: