Quantcast
Channel: Customer Relationship Management (SAP CRM)
Viewing all 228 articles
Browse latest View live

Customer Engagement & Commerce ROI Panel Discussion - Mirage, Las Vegas, NV

$
0
0

The 2015 CRMInsider Conference @ Mirage, Las Vegas, NV, USA – March 30th - April 1st is right around the corner!

 

 

I would like to invite you to join me, as I moderate a Customer Engagement & Commerce ROI Panel Discussionon Tuesday, March 31, 2015 at 10:30 a.m. - 11:45 a.m. with leading customer panelist:  Maureen Sharon– Agilent Terchnologies, Craig Parker– GenBand, Joe Harmon- Hallmark Cards, and Sandy Reisenauer -Wacker Neuson.

 

  • Hear about their experiences in short-term and long-term efficiency gains to maximize CRM - CEC effectiveness.

 

This session will be interactive where you have the opportunity to ask on the “spot questions” around their strategies and experiences for maximizing Return
on Investment with SAP Customer Engagement & Commerce
(CEC).

 

I’m sure you will walk away with dozens of practical and easy-to-implement ideas to achieve a higher return on your SAP CEC investment.

 

Please register to save your place and participate with other customers in the audience.

 

Hope to see you there!

 

Sincerely,

Anne


Geo Fencing enable in SAP CRM

$
0
0

Is there any step by step document to enable the functionality of Geo fencing in SAP CRM ?

Come See the new SAP Customer Engagement and Commerce Solutions and Make “Run Simple” a Reality

$
0
0

If you are one of those people that looked at SAP CRM in the past and said, “user experience is more important than integration and SAP does not understand Simple”, you should attend the CRM 2015 conference in Las Vegas March 30 – April 1.  Not only does SAP CRM applications integrate to SAP ECC better than any product on the market, it has a new consumer grade user interface that trumps any other product in the market.  SAP’s cloud strategy provides the ability to release new capabilities to the market every 3 month.  It also enables SAP to keep up with the latest and greatest user interface and mobility trends.  Customers are deciding against other CRM packages to deploy SAP Cloud for Customer.  It not only provides “Best of Breed” Customer Relationship Management but focuses on Customer Engagement & Commerce.  It was developed by looking at how a business user works - and not pigeon-holing the user into a three-letter acronym of CRM.  Sales and Service users need more than CRM, they need information from back office applications, and they need to be able to easily interact with human resources, training and expense management applications.  Those users want the application to run the same on whatever device they wish to use (laptop, mobile phone, tablet, etc.) and they want it to be as simple as playing "Candy Crush".


At the CRM 2015 Insider event, you can hear, see and touch these new innovations by SAP.  I would recommend the following sessions:

  • The “Best practices for leveraging the latest capabilities delivered in SAP Cloud for Sales” session takes a detailed look at SAP's latest innovation to improve the efficacy of your sales organization with SAP Cloud for Sales.
  • The Live demo session “An omni-channel approach for driving customer service excellence” explores how to achieve service excellence through an omnichannel approach using SAP Cloud for Service.
  • “An updated guide to SAP Field Service management” session provides a demo of and detailed insight into the latest innovations in SAP Field Service capabilities.
  • The Live demo of “Engage with customers through social media like never before with SAP Cloud for Social Engagement” provides a firsthand view of SAP Cloud for Social Engagement and how it empowers call center staff to engage with customers through social media channels such as Twitter and Facebook.
  • The “Customizing and extending SAP Cloud for Customer applications to suit your needs” session examines options for extending upon the standard functionality in SAP Cloud for Customer to meet unique business and user requirements.

 

If your sales and service professionals are looking for a way to be more effective, efficient, and engage better with their customer, the CRM 2015 Insider event in Las Vegas is the place to be.  See you there!

Is your CRM Deployment Hitting a Brick Wall?

$
0
0

Many times customers deploy Customer Relationship Management and then lose track of the art of the possible.  Companies focus on the first phase of a project and forget to go back and look for new ways to derive value out of the applications.  A key challenge I tend to hear from customers, is that they lose track of the deep capabilities that are available because they were not relevant in the initial phases of a project.  If you are already using SAP CRM and wondering what the next step is in your CRM journey, the CRM 2015 Insider event is a great way to find ways to optimize your Return On Investment of your CRM deployment.  CRM 2015 provides a Jumpstart day for experienced SAP CRM customers to interact with SAP subject matter experts to understand:

 

  • capabilities they may currently own in SAP CRM but have not enabled
  • how SAP’s new Customer Engagement & Commerce Innovations complement SAP CRM
  • where cross-area technologies can be leverage with SAP CRM

 

The CRM 2015 Jumpstart “Optimizing ROI: Strategies and technologies to derive greater business value from existing SAP CRM investments” session is a “must attend” for anyone seeking to derive greater value from an existing SAP CRM landscape, including expert guidance for leveraging the latest tools, features, integration points, and customization options. Attendees will:

 

  • Understand which SAP CRM functions and processes are most likely to generate significant ROI, and get actionable advice for exploiting them to their utmost potential
  • Get expert recommendations for prioritizing objectives and aligning business-value drivers with the delivery of key SAP CRM capabilities, including tips for conducting a cost/benefit analysis
  • Obtain strategies for accelerating the time-to-value of CRM initiatives, including tips to define a roadmap for enhanced processes and capabilities across sales, marketing, and service
  • Reexamine the SAP CRM Service and Interaction Center and discover new ways to improve the customer experience by taking advantage of often-overlooked integration, collaboration, and personalization capabilities
  • Get leading strategies for exploiting key marketing and analytics capabilities to provide the business insights needed to make smarter decisions and better manage resources
  • Learn strategies and tools to transform your direct and indirect sales force into a collaborative team of knowledgeable and trusted advisors
  • Explore options for expanding your current CRM footprint by incorporating emerging technology trends around big data, mobility, cloud computing, the user experience, and more

 

The CRM 2015 Jumpstart “Expert guidelines, tools, and criteria to establish an effective CRM analytics strategy” session delves into options and requirements for executing an analytics program that provides greater insights into customer and market data and enables data-driven decision-making across your CRM organization, including sales, marketing, and service. Attendees will examine the tools and techniques required to make smarter decisions and measure their results, including:

 

  • An overview of the various analytics solutions delivered in SAP, from standard reports delivered in SAP CRM 7.0 EHP3 to predictive analytics and SAP HANA® to the latest cloud-based customer analytics offerings
  • New and innovative ways to develop a 360-degree view of the customer, including best practices for leveraging SAP Customer Engagement Intelligence and SAP InifiniteInsight®
  • Criteria to determine which reporting tool or combination of tools best supports your CRM reporting needs, including best practices for leveraging them to track key customer metrics
  • Expert insight into whether and how to migrate to the cloud for customer analytics, including an overview of SAP Cloud for Customer
  • Guidelines for the proper extraction and integration of CRM data
  • The most effective ways to leverage analytics capabilities to improve processes, user productivity, and the overall customer experience in SAP CRM

 

Whether you attend one or both of the Jumpstarts, you will come away empowered to maintain a sound CRM strategy and roadmap that supports your organization's decision-making requirements, including critical process, integration, and design decisions.  I’ll be leading the session and I look forward to welcoming you all to CRM Insider 2015!

Trend Setters? Trend Spotters - See All the Customer Engagement Action at #CRM2015

$
0
0

Customer Engagement and Commerce (CEC) portfolio of products from SAP is so much more than CRM, providing comprehensive capabilitiesacross sales, service, marketing and commerce differentiating with mobile user experience, predictive analytics and
industries with omni-channel customer engagement. The CEC solution is constantly evolving, in some cases leapfrogging industry and technology trends to bring the latest to the market. Discover these solutions at CRM2015 conference in Vegas from March 30-April 1.

 

In 2015, per Gartner more than 50% of the overall CRM revenue will be from cloud and SaaS revenue will reach 80-85% by 2025. So 2015 is the tipping year.  The cloud solution has gained momentum and like it or not, SaaS is here to stay.  Hear some of the amazing SAP Cloud for Customer (C4C) stories at CRM Insider 2015. These stories are not pure Cloud deployments but they are hybrid deployments, leveraging the power of on premise CRM solution, SAP ECC, and integrated using the HANA Cloud Integration (HCI) thus increasing the return on your existing investments.


While Cloud solution is ongoing, the SAP CRM on-premise solution is progressing through SAP connect. Wondering what SAP connect program is? It is run by customers where the requirements are posted and voted on by customers and the final proposed requirements are delivered by SAP.  For more information check out this link:  https://influence.sap.com/ct/c_es.bix


Have you heard of the new Contextual Marketing solution? hybris Marketing is building on the DNA from SAP Customer Engagement Intelligence, SeeWhy and Loyalty management amongst other solutions. Key differentiators are centralized customer data in real time, contextual marketing – again in real time and pervasive intelligence – Intelligence to market less but more effectively.  The idea is to connect with the right customer via the right channel at the right time. This puppy is just getting started, there is more to come.


Mobility is intrinsic in the SAP CEC solutions. Complete support of mobile apps, no extra cost, support for iPad, iPhone, BlackBerry, & Android helps your teams be more productive anywhere, anytime.Predictive analytics tools are available within the Cloud for Customer (C4C) solution like: deal finder to discover new leads and new opportunities within existing accounts, influence map to find top deal influencers and connect with them,  dynamic playbook to get the rightproducts, people and partners to maximize chance of winning the deal.

 

Features like voice activated commands, voice note takings, scanning the business card to convert to a lead or a contact are some of the features that makes the working with SAP Cloud for Customer a great user experience. Get a firsthand look at these features in the hands on labs sessions at CRM Insider.


How does Fiori fit in? How about S4HANA? What is new in Integration with iFlows? What about Rapid Deployment solutions? HCI?  Let us not forget about industries, SAP supports 20+ industries, so how are we differentiating with industry solutions in CEC? 

There is a lot to discuss. SAP teams will be at CRM insider 2015, I hope to see you there and continue this discussion.


See you at #CRM2015!

Desktop Connection for SAP CRM

$
0
0

Some SAP users love the CRM WebClient user interface, while others... well, don't love it quite as much. The WebClient is a wonderful tool for CRM power users who work in the system all day, and who need the full breadth of CRM functionality to complete complex tasks. However, for occasional and light users, like sales reps who spend most of their time selling and only use the CRM system to retrieve and update customer information, the WebClient can be overkill.

 

That's why SAP has come out with a number of alternatives for occasional and light users who need to access CRM functionality. For example, in 2013 SAP unveiled the Fiori UX, SAP’s next-generation HTML5 user interface that is optimized to run on mobile devices, but which can run on any device including smartphones, tablets, and laptops. You can read my blog about Fiori for CRM here. Similarly, earlier this year in 2014, SAP also came out with Desktop Connection for SAP CRM, which allows users to access CRM functionality directly from office productivity suite tools such as Microsoft Outlook and IBM (Lotus) Notes.

 

What is Desktop Connection for SAP CRM?

Desktop Connection for SAP CRM is a new offering from SAP that allows you to manage CRM accounts, contacts, emails, tasks, appointments, leads and opportunities from Microsoft Outlook or IBM (Lotus) Notes. Desktop Connection enables users to organize their daily activities and see important CRM data in a familiar application without the need to use the SAP CRM WebClient.

 

Desktop Connection consists of an add-in for Outlook or Notes that uses oData services to keep data in synch between Outlook or Notes and SAP CRM. Because CRM data is physically downloaded to the user's Outlook or Notes installation, Desktop Connection can be used both online and offline (although some features are only available online).

 

 

Who is iCRM? Is Desktop Connection an SAP solution, or a partner solution?

SAP teamed up with a company named InvisibleCRM (iCRM) to co-develop Desktop Connection for SAP CRM. iCRM is a established company with proven experience in integration enterprise applications with office productivity software. While the solution leverages the InvisibleCRM Synch Platform, it is an SAP solution, offered and maintained solely by SAP.

 

Does Desktop Connection replace CRM Groupware?

Desktop Connection for SAP CRM is not necessarily designed to replace the SAP CRM Groupware offering. If a customer is already using SAP Client-Based Groupware or SAP Server-Based Groupware, and they are happy with the solution, then they should continue using it. On the other hand, if a customer is having issues with Groupware, particularly with Client-Based Groupware, then they could consider whether Desktop Connection might be a suitable replacement. Customers using Server-Side Groupware could of course also consider migrating to Desktop Connection, but doing so would obviously necessitate moving from a server-side solution to a client-side solution, which introduces provisioning issues.

 

Of course, if a customer hasn't implemented any Groupware solution yet, then they should definitely consider Desktop Connection first, as it delivers additional features and capabilities beyond what is provided by either the Client-Based or Server-Based Groupware offerings. For example, Desktop Connection also includes email synchronization capabilities. In addition, the Enterprise Edition of Desktop Connection also supports synchronization of additional CRM business objects such as Leads and Opportunities.

 

What's the difference between the Professional Edition and the Enterprise Edition?

The Professional Edition of Desktop Connection for SAP CRM, which was introduced in Q1 of 2014, is included free of charge with a customer's existing CRM license. The Professional Edition provides support for accounts, contacts, emails, tasks, and appointments.

 

The Enterprise Edition, which was introduced in Q4 of 2014, contains enhanced capabilities and requires an additional software license. The Enterprise Edition contains all of the capabilities of the Professional Edition, plus some additional features. Perhaps most notably, the Enterprise Edition also supports synchronization of Leads and Opportunities. The Enterprise Edition can also be extended to by customers on a project basis to support additional CRM business objects (Sales Quotations, Sales Orders, Complaints, etc.). Finally, the Enterprise Edition also supports many-to-one relationships between contact persons and accounts, multiple text types, and recurring appointments.

 

 

Can Desktop Connection be used offline?

Yes, Desktop Connection can be offline for many scenarios. For example, most objects like contact, accounts, leads and opportunities can be edited offline and then synched up later with the backend CRM server when the user is online. However, some features do require the user to have an online connection. For example, to search for and link an existing CRM Service Order to a new appointment, the user would need to be online in order to connect to the CRM server to search against the Service Orders (as Service Orders are not synchronized with the users Outlook/Notes installation).

 

What versions of Microsoft Outlook and IBM Notes are supported? Is Office365 supported?

SAP Desktop Connection is compatible with Microsoft Outlook 2007, 2010, 2013 and IBM Notes 8.5 and 9.0. Regarding Microsoft Office 365... Office 365 has two deployment options either using the web access or a locally installed client. Desktop Connection is only compatible with the locally installed Outlook client; Desktop Connection is not compatible with an Exchange 365 server scenario using the Outlook web app. Desktop Connection in conjunction with OutlookWeb Access (OWA), meaning accessing Outlook features with a simple URL, is not supported.

 

Are there performance issues with downloading all of this CRM data?

SAP provides oData services that allow Desktop Connection to access and update CRM data via periodic synchronization, ensuring changes are synchronized correctly. The initial download is the most data-intensive. After the initial download, Desktop Connection only performs incremental delta downloads, so performance is not generally an issue.

 

In addition, Desktop Connection provides various options for reducing the size of the initial download. For example, rather than downloading all accounts in the CRM system, Desktop Connection only downloads the accounts that each individual sales rep is responsible for. This can be achieved through a variety of configurable options including using the HR Org Model assignment, territory management, employee responsible partner function, or even via custom logic in a BADI.

 

How much does it cost? Does it require an additional license?

The basic Professional Edition of Desktop Connection is included free of charge in the customer's existing CRM license.

 

The enhanced Enterprise Edition, which contains additional features and capabilities, must be licensed separately. Please contact your account representative for local pricing info.

 

How to install Desktop Connection?

An Administrator's Guide for Desktop Connection is available to help walk you through the deployment and installation process. In addition, after the installation is finished, a First-Run Assistant is available to guide you through the basic settings, customization package retrieval, and initial synchronization.

 

Where to find more info?

You can find several presentations about Desktop Connection for SAP CRM:

Entering Java Userexits 01: Generic Requirements

$
0
0

Entering Java Userexits

 

This is the first installment of a number of blog posts I am planning to write about programming Java Userexits for SAP CRM pricing. This series will require you to understand the concept of pricing and of developing Java userexits in CRM. Please refer to this excellent list of introductory resources:

 

Learning map for SAP CRM Pricing and IPC

 

My series will take it from there and explore the Java Userexit API.

 

Generic Requirements

 

The first thing I always take with me on a customer project where Userexits in CRM pricing are necessary is a set of "generic" requirements. I use those in nearly every project and find them to be a great help every time. The requirements are:

  1. Always True
  2. Always False
  3. Generic Decision
  4. (Pricing Relevant and Generic Decision)

 

Let's enter all of them:

 

Always True

This an extremely simple requirement, that simply return true every time it is executed.

 

Note: There is already a generic Userexit that is always true in CRM, called STEPSUCCESS. I like to create my own implementation for consistency, and to enable logging.

stepsuccess.png

Standard generic requirement STEPSUCCESS.

 

 

package com.customer.pricing.generic;

import com.sap.spe.base.logging.UserexitLogger;
import com.sap.spe.condmgnt.customizing.IAccess;
import com.sap.spe.condmgnt.customizing.IStep;
import com.sap.spe.condmgnt.finding.userexit.IConditionFindingManagerUserExit;
import com.sap.spe.condmgnt.finding.userexit.RequirementAdapter;

/**
 * @author Manuel Seeger, SAP
 * 
 * Generic requirement that returns always TRUE. 
 * Will write context it is called from to the VMC log.
 *
 */
public class ZCRM_AlwaysTrue extends RequirementAdapter {

     UserexitLogger log = new UserexitLogger(ZCRM_AlwaysTrue.class);     public boolean checkRequirement(IConditionFindingManagerUserExit item,               IStep step, IAccess access) {          if (access != null ) {               log.writeLogDebug(                         "Access " + access.getAccessSequence().getName() + " " + access.getCounter() +                         ", Req " + access.getRequirementNumber() +                         " : always true");          } else {               log.writeLogDebug(                         "Step "+ step.getStepNumber() +                         ", Req " + step.getRequirementNumber() +                         " : always true");          }          return true;     }
}

 

Always False

 

Just as simple, this userexit returns always false. This is mostly used on requirements that have relevance only in ERP (for example in billing) and don't need to be active in CRM.

 

package com.customer.pricing.generic;

import com.sap.spe.base.logging.UserexitLogger;
import com.sap.spe.condmgnt.customizing.IAccess;
import com.sap.spe.condmgnt.customizing.IStep;
import com.sap.spe.condmgnt.finding.userexit.IConditionFindingManagerUserExit;
import com.sap.spe.condmgnt.finding.userexit.RequirementAdapter;

/**
 * @author Manuel Seeger, SAP
 * 
 * Generic requirement that returns always false. 
 * Will write context it is called from to the VMC log. 
 *
 */
public class ZCRM_AlwaysFalse extends RequirementAdapter {

     UserexitLogger log = new UserexitLogger(ZCRM_AlwaysFalse.class);     public boolean checkRequirement(IConditionFindingManagerUserExit item,               IStep step, IAccess access) {          if (access != null ) {               log.writeLogDebug(                         "Access " + access.getAccessSequence().getName() + " " + access.getCounter() +                         ", Req " + access.getRequirementNumber() +                         " : always false");          } else {               log.writeLogDebug(                         "Step "+ step.getStepNumber() +                         ", Req " + step.getRequirementNumber() +                         " : always false");          }          return false;     }
}

Again, the main reason for using custom requirements here is that both Always True and Always False enable logging. They will log the context they are called from (pricing procedure or access sequence) and the specific location within the context (Acces or Step).

 

Generic Decision

 

This is the more interesting part of the generic userexits. A little background:

 

In general the vast majority of requirements come down to simply comparing two or more values from the communication structure against other values from that structure, or against hard coded values. Most of the time it is overkill to implemented every requirement in Java, maintain all the attributes, package the archive, upload, etc.

In addition, owed to the different technology, most of the time the Java part is handled by a specialist who has to be called in for every single simple requirement that might not be more than a one-liner in ERP.

 

To eliminate the Java part from implementing requirements, I create one generic requirement which is reused by all requirement formulas. The generic requirement is controlled using formula-specific flags which are set by the communication structure BAdI. Here is how this looks like:

 

package com.customer.pricing.generic;

import com.sap.spe.base.logging.UserexitLogger;
import com.sap.spe.condmgnt.customizing.IAccess;
import com.sap.spe.condmgnt.customizing.IStep;
import com.sap.spe.condmgnt.finding.userexit.IConditionFindingManagerUserExit;
import com.sap.spe.pricing.transactiondata.userexit.requirement.PricingRelevant;

/**
 * @author Manuel Seeger, SAP
 *
 * Generic decision based on 1 char attribute
 * 0 = TRUE
 * everything else = FALSE
 * 
 * Also checks standard requirement PricingRelevant (formula 002)
 *
 */
public class ZCRM_PRAndGenericDecision extends PricingRelevant {
          private static UserexitLogger log = new UserexitLogger(ZCRM_PRAndGenericDecision.class);     public boolean checkRequirement(IConditionFindingManagerUserExit item,               IStep step, IAccess access) {                    // Check standard PricingRelevant (formula 002)          boolean isPricingRelevant = super.checkRequirement(item, step, access);                    String subrc = item.getAttributeValue("ZZSUBRC").trim();          if (step != null) {                              String condTypeName;               if (step.getConditionType() != null) {                    condTypeName = step.getConditionType().getName();               } else {                    condTypeName = "null";               }                              log.writeLogDebug(                         "Step "               + step.getStepNumber() +                         ", Counter "     + step.getCounter() +                         ", CondType "      + condTypeName +                         ", Req "           + step.getRequirementNumber() +                         ", PricingRelevant " + isPricingRelevant +                           " ZZSUBRC : "     + subrc);          }          if (isPricingRelevant && subrc.equals("0")) {               return true;          } else {                    return false;          }     }
}

You will notice this requirement class inherits from the standard requirement PricingRelevant. I try to make it a habit to only execute on items that are actually relevant for pricing - inheriting from the standard requirement instead of from com.sap.spe.condmgnt.finding.userexit.RequirementAdapter is an easy way to do this.

Side note: I could not confirm what the reason was, but when I tried to inherit through multiple levels the system became incredibly slow. This might have been an issue with that specific installation though.

 

This generic requirement takes ones attribute called ZZSUBRC. The requirement will only return TRUE if ZZSUBRC equals '0', similar to what is convention in ABAP. Here is how the implementation looks like in /SAPCND/UEASS after it has been uploaded into CRM:

prandgeneric_ueass.PNG

Note: Attribute PRC_INDICATOR needs to be assigned to enable PricingRelevant (002) to work.

 

Now, for every requirement formula I need to implement, I will add a new flag (CHAR1) to the communication structure, which will control that specific requirement.

fieldcatalogue_subrc.PNG

 

And using those flags, I assign the requirements to formula numbers in /SAPCND/UEASS.

 

prandgeneric_ueass_formulas.PNG

prandgeneric_ueass_formula.PNG

 

Now that this is done requirement number 732 can switched on and off by simply setting the communication structure field ZZ_SUBRC_REQ732 to '0' for TRUE or to anything else for FALSE.

 

This might look like lots of customizing for every requirement, but the idea is that all this can be done by someone with basic ABAP skills - instead of a CRM pricing specialist. Switching requirements on and off now is simple enough: In an implementation of BAdI CRM_COND_COM_BADI, set the relevant flags to '0' to enable a requirement.

com_cond_badi.PNG

 

Should at some point in the future the functional requirements for a pricing procedure change, anyone with basic ABAP knowledge will be able to change the behavior of the pricing requirement userexits from BAdI CRM_COND_COM_BADI.

Similarly, should a new requirement userexit be needed, an ABAP developer can go ahead and extend the field catalogue, make a new entry in /SAPCND/UEASS, and implement the requirement in the BAdI. No additional Java-coding necessary.

 

Once the generic userexits are in place, I simply ask myself the same question when a new functional requirement comes in: Can the requirement userexit decision be made based on information available before pricing is initialized? If that is a yes (99% of the time), then I create a new formula for my generic decision and program the userexit logic in ABAP. No additional Java code, everything in one place, easier to maintain, and accessible to ABAP programmers.

 

This was a rather simple introduction - I hope I can continue this series soon with some more sophisticated concepts.

Web UI Data Load Utility - Preferably custom customizing tables

$
0
0

Usually , there is a need for custom customizing tables to accommodate project specific requirements. Uploading the data into these tables through "Table maintenance" can get difficult for each and every table ( if the records are more or more columns are there in table).  In such situations , we typically write custom (SE38) programs / LSMW to load the data into these tables using data files. Also, we need to provide GUI access along with Web UI access to maintain these tables.

 

To overcome all these complexities, I developed a custom Web UI component to facilitate data load for any given custom table ( preferably customizing tables).

 

Features of this tool:

 

1. Works with any table.

2. Provided table columns will be displayed dynamically.

2. Uploaded file data will be displayed in the assignment block columns in sequential order of the file data.

3. Works with text and csv files.

4. File data gets saved to the specified table.

 

However , depending on your additional requirements - like data validation, mismatch of file columns order with table columns order etc, you have to develop further to meet your requirements.

 

Please follow below steps to develop this component:

 

Component.jpg

Component Details :

 

Created a component "Z_TABL_UPD" with MainWindow, then created three views - "TableView", "FileUpload" , "DataView" and an overview page "FileUpdOvrPage".

 

Created a custom component "CuCoDataUpd" with context nodes ‘FILEPARAM’ and 'DBTABLE' then performed context node binding with views - "FileUpload" view context node ‘FILEPARM’, "TableView"  view context node 'DBTABLE'.

 

 

Custom Component "CuCoDataUpd" Details :

Custom Controller.JPG

 


OverviewPage "FileUpdOvrPage" Details :

 

OverViewPage.jpg

Over View Page Configuration.JPG

 

 

"FileUpload" View Details:


FileUpload-1.JPG

 

 

 

FileUpload-2.jpg

 

Upload Event Details :

 

It is same like GS_FILE_UPLOAD component , View VFileUpload , Event "Upload"  and Bounded the FILEPARAM context node with custom controller context node.

 

Custom Controller FILEPARAM Bounding.JPG

 

File Type Selection Event Details :

 

METHOD eh_onsel_fltyp.

 

  DATA : lv_selection   TYPE string,

         lr_htmlb_ddlb  TYPEREFTO cl_htmlb_event_selection.

 

  IF htmlb_event_ex->event_class EQ'CL_HTMLB_EVENT_SELECTION'.

    lr_htmlb_ddlb ?= htmlb_event_ex.

    lv_selection  = lr_htmlb_ddlb->selection.

    me->typed_context->fileparam->set_type( attribute_path = '//FILEPARAM/TYPE'value = lv_selection ).

  ENDIF.

 

ENDMETHOD.

 

 

 

"DataView" View Details :

 

DataView-1.jpg

 

 

DataView-2.jpg

 

 

 

Context Node INIT Method :

METHOD if_bsp_model~init.

 

  DATA:

        lr_custom_controller TYPEREFTO zl_z_tabl_u_cucodataupd_impl,

        lr_controller        TYPEREFTO zl_z_tabl_u_dataview_impl,

        lr_coll_wrapper      TYPEREFTO cl_bsp_wd_collection_wrapper,

        lr_entity            TYPEREFTO cl_crm_bol_entity,

        lr_table             TYPEREFTO if_bol_bo_property_access,

        lv_table             TYPE string,

        lv_tabname           TYPE ddobjname,

        lt_fields            TYPE ddfields,

        ls_field             TYPE dfies,

        lt_columns           TYPE abap_component_tab,

        ls_column            TYPE abap_componentdescr,

        lr_element           TYPEREFTO cl_abap_datadescr,

        lr_struct            TYPEREFTO  cl_abap_structdescr,

        lr_itab              TYPEREFTO cl_abap_tabledescr,

        lr_line              TYPEREFTOdata,

        lr_dref              TYPEREFTOdata,

        lr_value_node        TYPEREFTO cl_bsp_wd_value_node,

        lr_bo_coll           TYPEREFTO if_bol_bo_col.

 

 

  super->if_bsp_model~init(id   = id

                            owner = owner ).

 

 

  CHECK owner ISBOUND.

 

  lr_controller       ?= owner.

  lr_custom_controller = lr_controller->get_cust_controller().

  gr_cuco             ?= lr_custom_controller.

 

  lr_coll_wrapper = lr_custom_controller->typed_context->dbtable->get_collection_wrapper().

  lr_table       ?= lr_coll_wrapper->get_current().

  lv_table       = lr_table->get_property_as_string( iv_attr_name = 'TBMA_VAL').

 

  lv_tabname = lv_table.

 

  CHECKNOT lv_tabname ISINITIAL.

 

  CALLMETHOD lr_custom_controller->get_table_fields

    EXPORTING

      iv_tabname = lv_tabname

    IMPORTING

      et_fields = lt_fields.

 

 

  LOOPAT lt_fields INTO ls_field.

 

    lr_element        ?= cl_abap_elemdescr=>describe_by_data( ls_field-datatype ).

    ls_column-name    = ls_field-fieldname.

    ls_column-type    = lr_element.

    INSERT ls_column INTOTABLE lt_columns.

 

  ENDLOOP.

 

  gt_columns[] = lt_columns.

 

* Create the structure type

  lr_struct ?= cl_abap_structdescr=>create( p_components = lt_columns p_strict = abap_false  ).

 

* Create data with reference to the type object

  CREATEDATA lr_dref

         TYPE HANDLE lr_struct.

 

* Create a value node

  CREATEOBJECT lr_value_node

    EXPORTING

      iv_data_ref = lr_dref.

 

* Create a BO collection

  CREATEOBJECT lr_bo_coll TYPE cl_crm_bol_bo_col.

 

* Add the value node to the BO collection

  lr_bo_coll->add( lr_value_node ).

 

* Set the collection wrapper

  set_collection( lr_bo_coll ).

 

ENDMETHOD.

GET_TABLE_LINE_SAMPLE Method :

 

METHOD get_table_line_sample.

 

  DATA:

      lr_custom_controller TYPEREFTO zl_z_tabl_u_cucodataupd_impl,

      lr_coll_wrapper      TYPEREFTO cl_bsp_wd_collection_wrapper,

      lr_entity            TYPEREFTO cl_crm_bol_entity,

      lr_table             TYPEREFTO if_bol_bo_property_access,

      lv_table             TYPE string,

      lv_tabname           TYPE ddobjname,

      lt_fields            TYPE ddfields,

      ls_field             TYPE dfies,

      lt_columns           TYPE abap_component_tab,

      ls_column            TYPE abap_componentdescr,

      lr_element           TYPEREFTO cl_abap_datadescr,

      lr_struct            TYPEREFTO cl_abap_structdescr,

      lr_itab              TYPEREFTO cl_abap_tabledescr,

      lr_line              TYPEREFTOdata,

      lr_dref              TYPEREFTOdata.

 

  FIELD-SYMBOLS :

      <fs_outtab_t>        TYPEANYTABLE,

      <fs_outtab_s>        TYPEany.

 


  lr_custom_controller ?= gr_cuco.

  lr_coll_wrapper = lr_custom_controller->typed_context->dbtable->get_collection_wrapper().

  lr_table       ?= lr_coll_wrapper->get_current().

  lv_table       = lr_table->get_property_as_string( iv_attr_name = 'TBMA_VAL').

 

  lv_tabname = lv_table.

 

  CHECK lv_tabname ISNOTINITIAL.

 

  CALLMETHOD lr_custom_controller->get_table_fields

    EXPORTING

      iv_tabname = lv_tabname

    IMPORTING

      et_fields = lt_fields.


  LOOPAT lt_fields INTO ls_field.


    lr_element        ?= cl_abap_elemdescr=>describe_by_data( ls_field-datatype ).

    ls_column-name    = ls_field-fieldname.

    ls_column-type    = lr_element.

    INSERT ls_column INTOTABLE lt_columns.

 

  ENDLOOP.


  gt_columns[] = lt_columns.


  IF lt_columns ISNOTINITIAL.


    lr_struct ?= cl_abap_structdescr=>create( p_components = lt_columns  p_strict = abap_false ).

    lr_itab   ?= cl_abap_tabledescr=>create( lr_struct ).

 

*   Create a data with reference to type object

    CREATEDATA lr_dref TYPE HANDLE lr_itab.

    ASSIGN lr_dref->* TO<fs_outtab_t>.

 

*   Create dynamic work area and assign to FS

    CREATEDATA lr_line LIKELINEOF<fs_outtab_t>.

    rv_sample = lr_line.

 

  ENDIF.


ENDMETHOD.


Save Data Method :

 

METHOD eh_onsave.

 

  DATA:

      lr_coll_wrapper              TYPEREFTO cl_bsp_wd_collection_wrapper,

      lr_entity                    TYPEREFTO if_bol_bo_property_access,

      lr_table                     TYPEREFTO if_bol_bo_property_access,

      lv_table                     TYPE string,

      lv_selection                 TYPE string,

      lv_tabname                   TYPE ddobjname,

      lt_fields                    TYPE ddfields,

      ls_field                     TYPE dfies,

      lt_tabledata                 TYPEREFTOdata,

      lv_sy_subrc                  TYPE sy-subrc VALUE 0,

      lv_field_name                TYPE char40,

      lt_dref_seltable             TYPEREFTOdata,

      ls_dref_line                 TYPEREFTOdata,

      lt_field                     TYPE string_table,

      lt_field_val                 TYPE string_table,

      lv_last_field                TYPE string,

      lv_index                     TYPE i,

      lv_tabix                     TYPE i,

      lr_value_node                TYPEREFTO cl_bsp_wd_value_node,

      lr_res_coll                  TYPEREFTO if_bol_bo_col,

      lv_counter                   TYPE i,

      lv_file_content_string       TYPE string,

      lr_custom_controller         TYPEREFTO zl_z_tabl_u_cucodataupd_impl,

      lr_collection                TYPEREFTO if_bol_bo_col,

      lr_msg_service               TYPEREFTO cl_bsp_wd_message_service.

 

  FIELD-SYMBOLS:

     <lv_field>                    TYPE string,

     <lv_field_val>                TYPE string,

     <ls_field>                    TYPEany,

     <fs_dyn_table>                TYPEtable,

     <fs_tabline>                  TYPEany.

 

  CONSTANTS:

         lc_comma                  TYPE c VALUE','.

 

  lr_custom_controller   = me->get_cust_controller().

  lr_coll_wrapper        = lr_custom_controller->typed_context->dbtable->get_collection_wrapper().

  lr_table               ?= lr_coll_wrapper->get_current().

  lv_table               = lr_table->get_property_as_string( iv_attr_name = 'TBMA_VAL').

 

  lr_coll_wrapper        = lr_custom_controller->typed_context->fileparam->get_collection_wrapper().

  lr_entity              ?= lr_coll_wrapper->get_current().

  lv_file_content_string = lr_entity->get_property_as_string( iv_attr_name = 'FILEDATA').

  lv_selection           = lr_entity->get_property_as_string( iv_attr_name = 'TYPE').

 

  CHECK lv_table ISNOTINITIAL.

 

  lv_tabname = lv_table.

 

  CALLMETHOD lr_custom_controller->get_table_fields

    EXPORTING

      iv_tabname = lv_tabname

    IMPORTING

      et_fields = lt_fields.

 

 

  SPLIT lv_file_content_string AT cl_abap_char_utilities=>cr_lf INTOTABLE lt_field.

 

 

  TRY.

      CREATEDATA lt_dref_seltable TYPETABLEOF(lv_tabname)  .

    CATCH cx_sy_create_data_error.

      RETURN.

  ENDTRY.

  ASSIGN lt_dref_seltable->* TO<fs_dyn_table>.

 

  TRY.

      CREATEDATA ls_dref_line LIKELINEOF<fs_dyn_table>.

    CATCH cx_sy_create_data_error.

      RETURN.

  ENDTRY.

  ASSIGN ls_dref_line->* TO<fs_tabline>.

 

  lv_counter = 1.

  LOOPAT lt_field ASSIGNING<lv_field>.

 

    IF lv_counter EQ1.

      READTABLE lt_fields INTO ls_field INDEX lv_counter.

      CONCATENATE'<fs_tabline>-' ls_field-fieldname INTO lv_field_name.

      ASSIGN(lv_field_name)TO<ls_field>.

      <ls_field> = sy-mandt.

      lv_counter = lv_counter + 1.

    ENDIF.

 

    CASE lv_selection.

      WHEN'1'.

        SPLIT<lv_field>AT cl_abap_char_utilities=>horizontal_tab INTOTABLE lt_field_val.

      WHEN'2'.

        SPLIT<lv_field>AT lc_comma INTOTABLE lt_field_val.

    ENDCASE.

 

    LOOPAT lt_field_val ASSIGNING<lv_field_val>.

 

      lv_tabix = sy-tabix.

      READTABLE lt_fields INTO ls_field INDEX lv_counter.

      CONCATENATE'<fs_tabline>-' ls_field-fieldname INTO lv_field_name.

      ASSIGN(lv_field_name)TO<ls_field>.

      <ls_field> = <lv_field_val>.

      lv_counter = lv_counter + 1.

 

    ENDLOOP.

 

    APPEND<fs_tabline>TO<fs_dyn_table>.

    lv_counter = 1.

 

  ENDLOOP.

 

  IFNOT<fs_dyn_table>[] ISINITIAL.

    CALLFUNCTION'ENQUEUE_E_TABLEE'

      EXPORTING

        mode_rstable  = 'E'

        tabname       = lv_tabname

*       VARKEY         =

*       X_TABNAME      = ' '

*       X_VARKEY       = ' '

*       _SCOPE         = '2'

*       _WAIT          = ' '

*       _COLLECT       = ' '

      EXCEPTIONS

        foreign_lock  = 1

        system_failure = 2

        OTHERS        = 3.

    IF sy-subrc EQ0.

      MODIFY(lv_tabname)FROMTABLE<fs_dyn_table>.

      IF sy-subrc EQ0.

 

        lr_msg_service = cl_bsp_wd_message_service=>get_instance().

 

        lr_msg_service->add_message( iv_msg_type   = 'S'

                                     iv_msg_id     = '00'

                                     iv_msg_number = '001'

                                     iv_msg_v1     = 'Data Saved Successfully').

 

        COMMITWORK.

      ELSE.

        ROLLBACKWORK.

      ENDIF.

 

      CALLFUNCTION'DEQUEUE_E_TABLEE'

        EXPORTING

          mode_rstable = 'E'

          tabname     = lv_tabname.

*         VARKEY       =

*         X_TABNAME    = ' '

*         X_VARKEY     = ' '

*         _SCOPE       = '3'

*         _SYNCHRON    = ' '

*         _COLLECT     = ' '

 

    ENDIF.

  ENDIF.

ENDMETHOD.

 

 

 

Display Data :

 

 

 

METHOD do_prepare_output.

 

  DATA:

        lr_coll_wrapper              TYPEREFTO cl_bsp_wd_collection_wrapper,

        lr_entity                    TYPEREFTO if_bol_bo_property_access,

        lr_table                     TYPEREFTO if_bol_bo_property_access,

        lv_table                     TYPE string,

        lv_selection                 TYPE string,

        lv_tabname                   TYPE ddobjname,

        lt_fields                    TYPE ddfields,

        ls_field                     TYPE dfies,

        lt_tabledata                 TYPEREFTOdata,

        lv_sy_subrc                  TYPE sy-subrc VALUE 0,

        lv_field_name                TYPE char40,

        lt_dref_seltable             TYPEREFTOdata,

        ls_dref_line                 TYPEREFTOdata,

        lt_field                     TYPE string_table,

        lt_field_val                 TYPE string_table,

        lv_last_field                TYPE string,

        lv_index                     TYPE i,

        lv_tabix                     TYPE i,

        lr_value_node                TYPEREFTO cl_bsp_wd_value_node,

        lr_res_coll                  TYPEREFTO if_bol_bo_col,

        lv_counter                   TYPE i,

        lv_file_content_string       TYPE string,

        lr_custom_controller         TYPEREFTO zl_z_tabl_u_cucodataupd_impl,

        lr_collection                TYPEREFTO if_bol_bo_col.

 

  FIELD-SYMBOLS:

       <lv_field>                    TYPE string,

       <lv_field_val>                TYPE string,

       <ls_field>                    TYPEany,

       <fs_dyn_table>                TYPEtable,

       <fs_tabline>                  TYPEany.

 

  CONSTANTS:

        lc_comma                     TYPE c VALUE','.

 

  lr_custom_controller = me->get_cust_controller().

  lr_coll_wrapper     = lr_custom_controller->typed_context->dbtable->get_collection_wrapper().

  lr_table            ?= lr_coll_wrapper->get_current().

  lv_table            = lr_table->get_property_as_string( iv_attr_name = 'TBMA_VAL').

 

  lr_coll_wrapper   = lr_custom_controller->typed_context->fileparam->get_collection_wrapper().

  lr_entity              ?= lr_coll_wrapper->get_current().

  lv_file_content_string = lr_entity->get_property_as_string( iv_attr_name = 'FILEDATA').

  lv_selection           = lr_entity->get_property_as_string( iv_attr_name = 'TYPE').

 

  CHECK lv_table ISNOTINITIAL.

 

  CALLMETHOD super->do_prepare_output.

*  EXPORTING

*    iv_first_time = ABAP_FALSE


  lv_tabname = lv_table.

 

  CALLMETHOD lr_custom_controller->get_table_fields

    EXPORTING

      iv_tabname = lv_tabname

    IMPORTING

      et_fields = lt_fields.

 

  SPLIT lv_file_content_string AT cl_abap_char_utilities=>cr_lf

   INTOTABLE lt_field.


  TRY.

      CREATEDATA lt_dref_seltable TYPETABLEOF(lv_tabname)  .

    CATCH cx_sy_create_data_error.

      RETURN.

  ENDTRY.

  ASSIGN lt_dref_seltable->* TO<fs_dyn_table>.

 

  TRY.

      CREATEDATA ls_dref_line LIKELINEOF<fs_dyn_table>.

    CATCH cx_sy_create_data_error.

      RETURN.

  ENDTRY.

  ASSIGN ls_dref_line->* TO<fs_tabline>.

 

  lv_counter = 1.

  LOOPAT lt_field ASSIGNING<lv_field>.

 

    IF lv_counter EQ1.

      READTABLE lt_fields INTO ls_field INDEX lv_counter.

      CONCATENATE'<fs_tabline>-' ls_field-fieldname INTO lv_field_name.

      ASSIGN(lv_field_name)TO<ls_field>.

      <ls_field> = sy-mandt.

      lv_counter = lv_counter + 1.

    ENDIF.

 

    CASE lv_selection.

      WHEN'1'.

        SPLIT<lv_field>AT cl_abap_char_utilities=>horizontal_tab

         INTOTABLE lt_field_val.

      WHEN'2'.

        SPLIT<lv_field>AT lc_comma INTOTABLE lt_field_val.

    ENDCASE.

 

    LOOPAT lt_field_val ASSIGNING<lv_field_val>.

      lv_tabix = sy-tabix.

      READTABLE lt_fields INTO ls_field INDEX lv_counter.

      CONCATENATE'<fs_tabline>-' ls_field-fieldname INTO lv_field_name.

      ASSIGN(lv_field_name)TO<ls_field>.

      <ls_field> = <lv_field_val>.

      lv_counter = lv_counter + 1.

    ENDLOOP.

    APPEND<fs_tabline>TO<fs_dyn_table>.

    lv_counter = 1.

  ENDLOOP.

 

  CREATEOBJECT lr_collection TYPE cl_crm_bol_bo_col.

 

  LOOPAT<fs_dyn_table>ASSIGNING<fs_tabline>.

 

    CREATEOBJECT lr_value_node

      EXPORTING

        iv_data_ref = ls_dref_line.

 

    lr_value_node->set_properties(<fs_tabline>).

 

    CALLMETHOD lr_collection->add

      EXPORTING

        iv_entity = lr_value_node.

 

  ENDLOOP.

 

* Display data

  me->typed_context->filedata->set_collection( lr_collection  ).

 

ENDMETHOD.

 

Passing Table Name to .htm page :

METHOD set_models.

 

  DATA :

     lv_table                TYPE tabname16,

     lr_custom_controller    TYPEREFTO zl_z_tabl_u_cucodataupd_impl,

     lr_coll_wrapper         TYPEREFTO cl_bsp_wd_collection_wrapper,

     lr_entity               TYPEREFTO cl_crm_bol_entity,

     lr_table                TYPEREFTO if_bol_bo_property_access,

     lv_tabname              TYPE ddobjname.



  lr_custom_controller = me->get_cust_controller().

  lr_coll_wrapper     = lr_custom_controller->typed_context->dbtable->get_collection_wrapper().

  lr_table            ?= lr_coll_wrapper->get_current().

  lv_table            = lr_table->get_property_as_string( iv_attr_name = 'TBMA_VAL').

 

  CALLMETHOD super->set_models

    EXPORTING

      view = view.

 

  view->set_attribute(

         name   = 'TableName'                              "#EC NOTEXT

         value  = lv_table ).

 

ENDMETHOD.

 


Iterator Details :

 

Created a class ZCL_HTMLB_TABLEVIEW_ITERATOR , added interface IF_HTMLB_TABLEVIEW_ITERATOR implemented Method GET_COLUMN_DEFINITIONS and also implemented CONSTRUCTOR to pass columns data


DataView-3.jpg


Iterator Get Column Definitions Method details :

 

METHOD if_htmlb_tableview_iterator~get_column_definitions.

 

  DATA:

        ls_table_view  TYPE tableviewcontrol,

        lt_table_view  TYPE tableviewcontroltab,

        lr_filedata    TYPEREFTO zl_z_tabl_u_dataview_cn00,

        lt_columns     TYPE abap_component_tab,

        ls_column      TYPE abap_componentdescr.

 

  lt_columns[] = gr_filedata->gt_columns[].

 

  LOOPAT lt_columns INTO ls_column.

 

    ls_table_view-columnname          = ls_column-name.

    ls_table_view-title               = ls_column-name.

    ls_table_view-wrapping            = abap_false.

    ls_table_view-width               = '100px'.

    ls_table_view-horizontalalignment = 'LEFT'.

 

    APPEND ls_table_view TO p_column_definitions.

 

  ENDLOOP.

 

ENDMETHOD.

 


Constructor Details :

 

METHOD constructor.

  gr_filedata ?= ir_context_node.

ENDMETHOD.

 

 

 

TableView Details :

 

TableView-1.JPG

 

TableView-2.jpg

 

GET_V Method

 

METHOD get_v_tbma_val.

 

  DATA:

   ls_map    TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping,

   lt_inmap  TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab,

   lt_outmap TYPE if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab.

 

  ls_map-context_attr = 'TBMA_VAL'.

  ls_map-f4_attr     = 'TABNAME'.

  APPEND ls_map TO: lt_inmap,lt_outmap.

 

  CREATEOBJECT rv_valuehelp_descriptor TYPE

    cl_bsp_wd_valuehelp_f4descr

    EXPORTING

      iv_help_id       = 'AXT_DBTABLE_SEARCH_HELP'

      iv_help_id_kind  = if_bsp_wd_valuehelp_f4descr=>help_id_kind_name

      iv_input_mapping = lt_inmap

      iv_output_mapping = lt_outmap.


ENDMETHOD.

 


Runtime Repository Details :

 

The below snapshot shows the final runtime repository objects.
Runtime Repository.JPG

 

 

Component Execution Details :

 

File Types:

FileTypes.jpg

 

File Contents - Text File :

 

File Contents Example - TXT.jpg

 

File Contents - CSV File

 

File Contents Example - CSV.jpg

 

 

 

Sample Table - 1:

Table-1.jpg


Sample Table -2 :

 

Table-2.jpg

 

Table ZCONFIG_DATA_1  provided in the component , columns displayed in the table view as per the provided table , selected the text file and loaded the text file using "Upload" button:


Table-1 Load.jpg

 

Saved the data using "Save" button , table data after successful data load

Table-1 Data.jpg

 

 

Table ZCONFIG_DATA_2  provided in the component , columns displayed in the table view as per the provided table , selected the CSV file and loaded the CSV file using "Upload" button:

 

 

Table-2 Load CSV.JPG

 

 

Table-2 Load CSV Data.JPG

 

Saved the data using "Save" button , table data display after successful data load

Table-2 Data.jpg


Ignoring UI Enhancement and its side effects

$
0
0

Recently I came across a scenario where I used a feature in SAP CRM and then it had a strange side effect.

  • When you choose to ignore the UI Enhancements , then you need to set the SU3 Parameter WCF_IGNORE_ENHANCEMENT = 'A'.  WCF_IGNORE_ENHANCEMT1.jpg
  • Then if you try to personalize the Overview page and try to add few the assignment box to the Overview Page, it doesn't happen. This is a strange behavior and I removed the UI Parameter and then I was able to personalize the overview page.

 

Now if you are in a Customer system and would like to check the standard UI screens , then it becomes very difficult if you want to personalize the screens.

Desktop Connection for SAP CRM: Interested in learning more about the customization possibilities?

$
0
0

You might have noticed that SAP released a new application in order to replicate activities, emails and master data between SAP CRM and Microsoft Outlook Desktop Connection for SAP CRM.

 

To address the interest that we have seen from many partner and customer teams around the topics of customization and implementation of this new software, SAP and its OEM partner invisibleCRM (http://www.invisiblecrm.com/) plan to organize trainings to gain expertise in customization and troubleshooting of this part of the solution. The training consists of instructors-led sessions with around 50% of time dedicated to practical work. Those finishing the training will be able to do most of the customization tasks that usually cover around 80% of the customer requirements for the Microsoft Outlook add-in.


The first event is planned to be organized by SAP as a 4-day joint workshop in Walldorf in mid/late June, provided that a minimum number of
customers or implementation partners apply. For further details on the workshop, check the sample agenda as attached, and organizational details at the end of this post. 

 

If you want to sign up or if you have any further questions or comments, do not hesitate to contact SAPConnectTraining@invisiblecrm.com.

 

 

Workshop Details

  • Dates: mid/late June 2015
  • Location: SAP Headquarters in Walldorf, Germany
  • Price: USD 1750 per participant
  • Workshop Language: English
  • Target audience: Developers and implementation consultants
  • Prerequisites:
    • Access to your company’s infrastructure via SAP Guest Internet
    • Knowledge of SAP CRM configuration and customization
    • Basic knowledge of XML
    • Basic knowledge of JavaScript or VBS or any other similar script language



About Service Confirmation

$
0
0

About Service Confirmation with Integration ECC Part Overview

 

You can use the service confirmation transaction to  report working time, service parts, expenses, and tools used while performing a
service.
This function is available in CRM Web Client UI and  mobile service.


“” SRVC we can able to create with reference or with our  reference, The Reference might be SRVO, REPA."


The line items will copy form preceding documents (using  Copy Control), meanwhile you can enter new line items which was service
technician performed For Exm –Service parts, Service Expenses and Service tools.

 

We can create multiple SRVC for an order  For Example  If you want to create SRVC on Daily basis but it require  more than a day to complete an assignment. If multiple service representatives  working on an assignment, they can also confirm individually.

Note

* We can’t make a confirmation for several orders in a  single document.
* We can create one confirmation for multiple service  representatives in this case data can’t be processed in controlling and HR in
ERP System.

Back End Systems (SAP ERP)


For detailed
information on the flow of service confirmation-related data between SAP  Customer Relationship Management (SAP CRM) and SAP ERP,


“” The Automatic data transfer between SAP CRM to SAP ERP that happens with CRM Integration Services. It triggers subsequence process. 

 


Overview About SAP CRM Confirmation
  to SAP ERP


Confirmed
  Data


Date
  Posted to SAP ERP


Components
  in SAP ERP


Service
  Parts


Goods
  Issue


Material
  Management - Inventory Management


Costs
 


Controlling


Working
  Hours


Payroll
  data


HCM
  (Using Cross Application Time Sheet)


Costs
 


Controlling(Using
  Cross application Time Sheet)


Expenses


Costs
 


Controlling

 

Prerequisite Configuration.

We have to make necessary changes for below points based on Requirmenet..

 

Service  Confirmation Transaction settings

  1. Logistic  integration (for stock movements)
  2. Cross application time sheet integration
  3. Controlling integration

 

Prerequisites in the Service Confirmation Transaction.


Before  transferred SRVC to SAP ERP, The SRVC Transaction fulfill the following
conditions.

The Transaction contains at least one item.

  1. This Transaction should contain error free.
  2. The Transaction status must be completed.
  3. No Distribution lock were set for the transaction.


Customizing for the data entry profile used in conforming  working times


To allow  definition of multiple data entry profiles in SAP ERP for Service Confirmation
in SAP CRM.


For that we  must activate the business function. CRM Time recording using multiple CATS
data entry profiles. (HCM_CRM_CATS_PROFILE)


For more information about this business function, see SAP Help Portal at àhttp://help.sap.com/erpà SAP ERP Enhancement Packages à ERP Central  Component Enhancement Package 5 à Business  Functions à Business  Functions (SAP Enhancement Package 5 for SAP ERP 6.0) in SAP ERP
  Enterprise Business Functions à Cross-Application-Enterprise Business Functions- Integration of CRM and ERP à CRM, Time Recording Using Multiple CATS Data Entry Profiles.

 

  1. You have made  the necessary settings in Customizing for SAP ERP under à Integration with Other SAP Components à Customer
    Relationship Management
    à Settings for Service Processing à Time Sheet Integration

Assign data entry profile  You have assigned data entry profiles according to your criteria such as transaction type and service organization.
Change data entry profile  The default implementation of this Business Add-In (BAdI)  determines the data entry profile from the Assign Data Entry Profile
Customizing activity, depending on the transaction type and the service  organization you have used to define the data entry profile. You can create a
customer-specific BAdI implementation, which can be used to define the data entry profile according to other criteria. Possible parameters include all
criteria that appear in the header of a service confirmation (structure
BAPISDCOSV), such as profit center, sold-to party, or company code.


General Settigs for Service confirmation Transaction Type (SRVC)

 

The service confirmation transaction is predefined as follows in the standard system:

Transaction  type SRVC, Item categories SVCP
for service product items


Date profile SRV_RM_ITEM1 &ndash; SAP Confirmation Service Item is assigned to this item category.

The date profile contains date types such as SRVC_ACTUAL &ndash; Start of Work and SRVC_ACT_TO &ndash; Date Work Ends. The
working time of service representatives is documented with these date fields.


- SVCM - for service parts and sales items

- SVCE-  for expense items

- SVCT- for tool items


If the settings for these Customizing objects do not  reflect your business requirements, you can copy them and modify the copies.


Details of Services Rendered


You can report the following key information in a service confirmation:

-Service provided

-Service parts used

-Expenses incurred


You can confirm  planned and unplanned expenses, such as expenses for hotel accommodation or  miscellaneous materials that are not represented by service items or service part items.


Note


# You need to define products of the type Material  to represent different types of expenses.

# There is no integration with SAP ERP Travel Management for the processing of travel expenses.

#Tools used

#Working times (duration, start and end of work)

# Travel times

You have to enter travel times in a separate service item using a service type and valuation type  that you have defined for billing travel time (see "Billing" below).

-Reference object(s) for the service

-Technical details in Categorization

Service Confirmation standard Functions, using this we can design solution to client

 

  1. Installed Base update
  2. Contract determination
  3. Warranty check
  4. Automatic warranty creation
  5. Counter reading
  6. Pricing
  7. Cost allocation
  8. Amount allocation
  9. Follow-up transaction in ERP
  10. Transaction history
  11. Billing
  12. Create (attach documents)
  13. Printing service reports
  14. Categorizations
  15. Activities 


The Controlling relevant data can transfer form SAP CRM to SAP ERP system.


The posting of actual costs to account assignment  objects In the ERP system is triggered using the Service Confirmation assigned
to a transaction.

 

- Activities: - Activities are automatically transferred to time sheet, the sender cost center is determined using the personal number of service employee making the confirmation. The activity type is determine using  customizing, which data entered must be transfer to CO using Time sheet.
(Personal – Personal Time management – time sheet – transfer – account)

Then activity allocation from service employee cost center to the account assignment object (it takes place in CO)

 

- Service parts:-  :-  Service parts automatically generated “Goods Issue” in MM with a posting in FI and do the account assignment object

 

- Expenses: - Expenses items are automatically posted in to ERP System as transfer. The cost  center of service employee making confirmation is credited in the amount of expenses entered and the account assignment object is debited that amount. The transfer posting cost element determine based on customizing.

-Tools: - Tools items are automatically posted in to ERP System as internally activity allocation. The cost center and activity type are assigned in to ERP System.Configuration – Other SAP Components- CRM-Settings for Service Processing-Controlling integration-Assign Cost Center and Activity type to
Tools.


“The activity allocation form the cost center to the account assignment object takes place in CO”

“CRM Billing used to post revenues to FI and do the  account assignment object”


- We can choose following controlling type to customizing for each transaction type and Service organization.

 

 

  1. Mass Object
    Controlling :-  Analyze the values (without
    period closing) in Profitable analysis (CO-PA)
  2. Single Object
    Controlling: - analyze the individual transaction detail using Internal order
    and do the calculate WIP.
  3. Controlling for
    account assignment object: - Analyze the individual transaction in detail using
    Work breakdown Structure element, Internal Order, Sales order items in ERP and
    do the calculate WIP.
  4. 2.5) CATS (Cross Application Time Sheet) integration
    Concept

 


    CATS is a cross application tool for recording times and  tasks it enables you u to control all business process concerning your
employees tasks.

 

 

 

Transferred data from Time sheets to Target component (HR, CO, PM, PS, MM C Project) which is employee recorded data 

 

 

Transfer of Time  Sheet Data to the Target Components.


We can transfer data to the target components as above flow. Using below options



  1. Using transfer
    reports
  2. For Material
    management using Transaction
  3. For C project
    using an ALE connection with I DOC

 

Note: -This Document will only help you overview concept about Service confirmation with ECC integration part. For more information

 

http://help.sap.com/saphelp_crmhana/helpdata/en/46/8bda0a9ed7616ae10000000a1553f7/content.htm?frameset=/en/45/e6fdb408ba4a88e10000000a155369/frameset.htm&current_toc=/en/0a/4d88ef587649f4a9d16bf34c487fe6/plain.htm&node_id=7

Configuration and process steps of accrual posting process in TPM

$
0
0

In this blog I would like to share my experiences with the configuration and process steps of accrual posting process in CRM trade promotion management (TPM). With regards to the topics covered, I have split this blog into two sections:

 

1.     Accruals Configuration

2.     Accrual Calculation & Posting Process

 

1.     Accruals Configuration

 

Customer Relationship Management -> Funds Management -> Accruals

 

TPM_ACL_1.png

 

1.1     Define accrual reference data types

You can define the reference data types the accrual calculation methods use.

 

TPM_ACL_2.png

 

The standard delivery reference data type is:

  • ERP_SV; defines ERP sales volumes as reference data.
  • TPM_PLAN; defines TPM planning data as reference data.

 

1.2     Define accrual methods

You can define an accrual calculation method and optional reference data that can be used to calculate the accrual amount.

 

TPM_ACL_3.png

 

TPM_ACL_4.png

 

There are 6 standard delivery accrual calculation methods:

  • Uses Accrual Rate of ERP Sales Volume and TPM Take Rates (ERP_SV): This method calculates accruals based on ERP rebates sales volumes using and TPM take rates. It does not support accrual amounts in upcoming fiscal period (expense forecast).
  • Whole Amount on a Fixed Date (FIXED_DT): This accrual method accrues the amount reserved for the fund usage on the date the accrual posting is performed (fixed date). It supports expense forecast.
  • Fund-Based Amount on a Fixed Date (FUNDFIXD): This accrual method is for fund-based accruals and accrues the entire amount of the fund on the date the accrual posting is performed (fixed date). It supports expense forecast.
  • Fund Usage Amount for Accrual Period (NB_DAYS): This accrual method spreads the amount reserved for the fund usage equally over the number of days that it accrues. It supports expense forecast and requires that accrual start date is chronologically before or equal to the accrual end date.
  • Spread Accrual Amount Using Ref. Data (REF_DATA): This accrual method spreads the amount reserved for the fund usage over the days that it accrues according to the reference data. It supports expense forecast and requires that accrual start date is chronologically before or equal to the accrual end date.
  • Spread Fund-Based Amount Using Ref. Data (FUNDRDTA): This accrual method is for fund-based accruals. It spreads the entire amount of the fund equally over the number of days that it accrues according to the reference data. It supports expense forecast and requires that accrual start date is chronologically before or equal to the accrual end date.

 

1.3     Define accrual profiles

You can define an accrual profile that references an accrual calculation method and optional reference data.

 

TPM_ACL_5.png

 

There are 5 standard delivery accrual profiles:

  • Accrue Whole Amount at Fixed Date (FIXED_DT): This accrual profile accrues the amount reserved for the fund usage on a fixed date.
  • Accrue Fund-Based Amount at Fixed Date (FUNDFIXD): This accrual profile is for fund-based accruals and accrues the entire amount of the fund on the date the accrual posting is performed (fixed date).
  • Accrue Amount Equally for Accrual Dates (NB_DAYS): This accrual profile spreads the amount reserved for the fund usage equally over the number of days that it accrues. The number of days can span several periods.
  • Accrue Using ERP Sales Volumes and TPM Take Rates (ERP_SV): This accrual profile accrues ERP sale volumes and TPM take rates using the ERP sales volume agreement accrual rate.
  • Accrue Using TPM Planning Data (TPM_PLAN): This accrual profile accrues TPM planning data.

 

Customer Relationship Management -> Trade Promotion Management -> Trade Promotions -> Funds Integration

 

TPM_ACL_6.png

 

1.4     Funds Integration

You can make settings to integrate funds management functionality into your trade promotions.

 

TPM_ACL_7.png

 

Under Expense Type to Accrual Profile, select the expense type for a particular promotion type. Select the accrual date range and accrual profile to map to the expense type, by doing so you specify the accrual calculation method for each expense type.

If Accrual Profile is left blank, then there will be no accrual for this expense type and its related trade spend. It is recommended to leave this field blank for off-invoice type trade spends, as they only create pricing records and not rebate agreements. Therefore, accruals are not relevant.

 

2.     Accrual Calculation & Posting Process

 

Below is the table of TPM accrual posting process steps for different accrual profiles.

 

Accrual Profile

Step

Program name

ERP Sales Volume Dependent

1

RCRM_FM_ACL_ACCRUAL_UPLOAD_SV

Sales Volume Load

2

RCRM_FM_ACL_ACCRUAL_RUN

Accrual Calculation

3

RCRM_FM_ACL_ACCRUAL_POSTING_FM

Accrual Posting

ERP Sales Volume Independent

1

RCRM_FM_ACL_ACCRUAL_RUN

Accrual Calculation

2

RCRM_FM_ACL_ACCRUAL_POSTING_FM

Accrual Posting

 

“Sales Volume Load” job uploads sales volumes from SAP ERP to SAP CRM. For the expense types having an ERP sales volume dependent accrual profile such as ERP_SV, sales volume load job should be executed before accrual calculation to transfer ERP sales volumes to CRM. The transferred sales volumes are captured in CRM table CRMD_FM_ACL_SV and will be the input of the accrual calculation for the related accrual profiles.

 

“Accrual Calculation” job calculates the accruals according to the accrual profile. After the calculation the accrual amounts are kept in accrual staging area, CRM table CRMD_FM_ACL_ASA, and will be the input of the accrual posting. The related entries of CRMD_FM_ACL_ASA table are cleared after the accrual posting.

 

“Accrual Posting” job posts the calculated accruals and creates the ‘accrue’ type fund posting documents in CRM. CRM table CRMD_FM_FPO_HEAD holds the header information and CRM table CRMD_FM_FPO_ITEM holds the item information of the fund postings.

 

TPM_ACL_8.png

 

Accruals are transferred to ERP accounting via middleware with Bdocs of CRM_FM_FPO type and create ERP accrual posting documents. In the standard delivery the reference number of the ERP accounting document is the fund posting ID of the CRM fund posting document. This number is the link between CRM and ERP accrual processes.

 

TPM_ACL_9.png

Support@SAP for CRM (Marketing, Sales, Services)

$
0
0

Let's know about 'SAP Support Desk'& 'SAP Note Viewer' APP forAndroid& iPhone:


'SAP Support Desk' Mobile APPfor Android or iPhone devices for SAP Service Marketplace:


'SAP Note Viewer' APP:

SAP Note Viewer for iPhone

SAP Support Note Viewer for Android


The "APP" allows you to perform the following tasks:

        1. Display your Message Inbox
        2. Search and Display SAP Notes
        3. Open and Book Remote Connections
        4. Store User and Password for the remote support in the secure container
        5. Contact SAP Customer Interaction Center Worldwide
        6. Read SAP Hot News, Top Notes, etc. Via RSS Feeds

1.jpg2.jpg

A) Support WithoutIncidents

Why Create Incidents when the Solution to your Issues may already exist, be documented and ready for you!


You require assistance from SAP Support, but you don't know the contact details or how to contact your local Customer Interaction Center??

Refer Note560499 - Global Support Customer Interaction: Telephone/e-mail


#. SAP CRM Help Portal Page:


#. CRM Marketing Documentation:


#. Other CRM area Documentation:


#. Using Advanced Note Search Tool (ANST)

ANST is very useful where you need a quick solution; For more information please refer to KBA Notes 1818192 and 1909768.

 

This can be done by accessing ANST where you can specify the program or transaction or any other possible options available and start the issue replication process.

      • Search for SAP notes
      • Problematic Custom Codes
      • Missing Customizing Entries
      • Possible list of ABAP objects from which you can choose appropriate objects to start debugging


    #. Using Performance Assistant Note and KBAS Search (PANKS)


    PANKS is an acronym that stands for Performance Assistant Note and KBAS Search and as its name implies, it’s a new tool that searches for SAP Notes and KBAS from the performance assistant based on the ABAP error code and context.


    Whenever you get an error message, the Performance Assistant is there to help you.

     

    #. Tips on how to search for your particular problem are provided here:

     

    B) Support With Incidents

     

    In case you don't find any resolution from above knowledge content, or you find a SAP CRM Bug or Critical issue or else, Please follow the below steps to get the Prompt and Better Support from SAP.!!


    Ensure Mandatory Checklist before sending the New Incidents to SAP:

          1. Have you provided any of below inputs to replicate the issue as Attachment
              • Step-By-Step Document
              • Screenshots or Snapshot
              • ST22 Dump File
              • Any Technical Analysis
          2. Can SAP access System Connections, such asR/3 and HTTPs Connect (Backend & WUI Connection)?
          3. If Credentials are updated in the 'Secure Area' with minimum 1-week validity.
          4. If Direct Contact Details (With Country Code) or Person of Contact data are provided for faster communication?
          5. Steps to Reproduction and Details provided?
          6. Are you sure if you have NOT missed the Attachment; If so please send the attachment Via 'Info to SAP'??


    1) Which Business Role?

          • Let us know the Business Role for which the issue occurs.
          • Test if the issue also occurs in Non-Marketing Roles as well? This will help determine if the issue is Marketing specific issue or not.
          • Please ensure the Logon USER has access to the relevant Business Role and update credentials in Secure Area


    2) If the issue is due to the Enhancements?

          • If issue can be reproduced switching off the Customer Enhancements 'WCF_IGNORE_ENHANCEMT' = A as explained in SAP Note 1311966
          • This can quickly determine if the root cause of an issue is caused by Customer enhancements/ Customizing or standard SAP delivery!

    4.jpg


    3) Please ensure below Connections are available for Replication:

          • R/3 Support: Backend System access
          • HTTP Connect:  Frontend Web-UI access
          • Alternative: 'Window Terminal Server' to access remotely to CRM system

    5.jpg


    If having problems in establishing the connection, Please follow the Notes 592085, 812732, 605795 and ask your Basis team to establish the connection.


    ElseSend the incident to SAP Network Team in 'XX-SER-NET' component.


    4) Production System, Go-Live in next 7 days and Very High Priority is requested?

        1. Please refer the Notes 67739 and 1576685 carefully
        2. An incident should be categorized with the priority "Very High" caused by the following circumstances (Refer Note 67739):
          • A productive system is completely down.
          • The imminent system go-live or upgrade of a production system can't be completed.
          • The customer's core business processes are seriously affected.
          • And for each circumstance a workaround is not available
        3. If issue is in NON- Production environment, the Priority will be reduced to HIGH


    5) Provide us the BBPCRM CRM Release Information?

        • Code Correction are released as SAP Notes and then included in the next version of BBPCRM so this can determine if a particular fix is already included in your system or not!
        • To find the BBPCRM version go the Backend CRM system and select System -> Status and click on details as below:

    2.jpg

        • Scroll Down to find the BBPCRM as shown below:

    3.jpg


    6) For Screen Sharing Session with SAP, Please use 'GoTo Assist', Refer note 2026090.

          • Support Engineers are not allowed to use Lync, WebEx, or any other software for screen sharing for Data Protection & Security Reasons!
          • We therefore, request you to use 'GoToAssist' for any screen sharing with the SAP or vice versa.


    Above information helps SAP to analysis incident without delay thereby ensuring prompt resolution

     

    PS: Your feedback is important to us for improving this space and content!

    Customer Feedback from ASUG/SAPPHIRE for SAP CRM On Premise

    $
    0
    0

    Last month I wrote a blog post, "Where Should SAP CRM On-Premise Invest Next," asking SAP customers to vote for topic areas they would like to discuss during the ASUG CRM Influence Council at the SAPPHIRE/ASUG conference in Orlando. You have a look at the survey results here. From a pure technology perspective, the highest-ranked topic was Groupware with 48% of the survey votes. From a line of buisness perspective, CRM Service and Interaction Center had the most votes with 28%.

     

    Of course, not everyone who voted in the survey was able to make it down to Orlando for the conference. However about a dozen customers and partners showed up at the design-thinking workshop to brainstorm ideas about how to improve SAP CRM On-Premise. Perhaps not surprisingly, similar to the survey results, a great majority of the improvement suggestions were focused in the area CRM Service. Below is a full list of the topics that were raised during the session.

     

    Service Contracts

    • Support for mass creation, mass change, and mass renewal for multiple service contracts
    • Improvements for working with large service contracts containing e.g., several hundred line items
    • Ability to specify certain high-price items as excluded from service contracts

     

    Field Service

    • Ability to track skills/certifications for field engineers in order to enable things like reminders for expiring certifications. Perhaps with SAP / Success Factors Learning Management System (LMS) integration
    • Allow field service managers to view their team’s calendar (without having to use SAP resource planning)
    • Allow field service technicians to see their own van stock, as well as the van stock of near-by colleagues

     

    Service Order / Service Confirmations

    • Support update/refresh of iBase directly from Service Confirmation
    • Enable billing deferral for service order until all related service confirmations are closed
    • Provide an “Easy button” to automate billing for service order e.g., once all related service confirmations have been closed
    • Support workflow for approval of service orders (similar to what is already available for service requests)

     

    Sale Order

    • Provide better view of inventory from Sales Order

     

    User Experience

    • Enable a unified “omni-channel” desktop for agents that include contact center, social media, e-commerce
    • Improve call-transfer experience with e.g., ability to add notes and comments when transferring a call
    • Provide greater ease-of-user and user experience similar to what is offered by best-of-breed vendors
    • Improve simple / enterprise search to make it easier to search for e.g., opportunities, activities, and other CRM objects from Interaction Center
    • Make it easier to export search results (e.g., Opportunities) to Microsoft Excel

     

    All of these suggestions have been shared with SAP product management and will be taken into consideration when planning future functionality and enhancements for SAP CRM on Premise. In addition, customers are encouraged to log these suggestions -- and to "vote" for the suggestions by using the Subscribe feature in the next round of the SAP CRM Customer Connection program that will opens in August.

     

    For those of you who are not already familiar with the Customer Connection program, it is the main way that customers can influence the roadmap for stable and mature products like SAP CRM On-Premise. August will mark the 6th consective time that CRM On-Premise has participated in the customer connection program. You can read about the results of 2014 program here. And stay tuned for results of the 2015 program, which will be posted soon!

    Notification framework. General overview and some tips.

    $
    0
    0

     

    The Notification Framework enables you to keep your business partners informed about the status and the progress of business transactions. It enables you to subscribe yourself or a group of persons to a transaction or to transactions that have specific attributes.

     

     

    Nice. Sounds really good. But:

     

    Currently, you can use the Notification Framework for service requests and master service requests.

     

         Actually there are quite a number of "frameworks" (e.g. ways) to accomplish notification tasks available in SAP CRM. This one is available from CRM 7.0 EHP2 SP6. Recently I tried this framework and found that its functionality is quite suitable for my project needs. The restriction about business object type quoted above made me integrate this framework into a new business object type. In my project it was Complaints. Here I'd like to briefly describe some customizing steps needed to make this framework actually works. As well I will show how to enable this framework for a not (yet) covered business object type from development perspective.

     

     

         First of all you need to activate business function Notification Framework and E-Mail (CRM_ITSM_ALERTS) to enable this functionality in general.

     

         After activation you'll find an option to create subscriptions in SERVICEPRO business role under Service Operations entry in navigation bar

    - Search: Subscriptions (logical link id CT-NF-SR; Work Center Link Group ID CT-APPL-SR)

    - Create: Subscription (logical link id CT-NF-CR; Work Center Link Group ID CT-APPL-CR)

     

    And directly in Service Requests' UI.

     

         Notifications here are based on subscriptions which are created beforehand. Subscription is a set of:

    • the header with business object type, validity period and status (active or not);
    • message templates - channels to use to notify subscribers;
    • conditions - conditions to check while processing any changes in a document;
    • subscribers - who will receive notifications of this subscription and by which channels.

     

    subscription.png

     

     

         The processing of subscriptions and notifications is shown on the picture below:

    ppt_img.gif

    (credentials to SAP Help Documentation)

     

     

         As per help documentation (which is actually very nice and complete) you'll need to do some basic customizing (under IMG -> CRM -> Transactions -> Settings for Service Requests -> Notification Framework) such as setting number range and  system parameters to make this framework work.

    Also you need to schedule a report CRM_NF_CORE_QOUT_PROCESSING with appropriate variants for background processing of the notification queue.

     

         Along with that help document says that your middleware must be active and the processing of BDocs for the relevant business objects is active as well. This middleware stuff actually stuck me up. Everything seemed to be in place. But no queue entries had been created during transactional change. But note 1818151 - ITSM Enhancement - Setup of Notification Framework helped. And the magic words "middleware must be active" mean that functional module CRM_NF_MW_1ORDER_ADAPTER must be active in SMW3FDCUST to perform actual comparison and write queue entries.

     

         After that we need to enable this framework to serve new business object type. This one requires a new entry in IMG -> CRM -> Transactions -> Settings for Service Requests -> Notification Framework -> Define Conditions of Subscription Processing. Put a desired business object type and provide handler class. Do not forget to activate this entry in Send Notification on Change field. Under Notification Filters of the new entry you can put UI filters along with table name, field name, description and framework logical criterion (about this one see below). These filters will be available when you'll create a subscription for this new business object type.

     

         Handler class needs to implement interface IF_CRM_NF_API_REF_BOR_HNDL. Class CL_CRM_NF_CORE_OTYP_HNDL_1O can suite as an example. But it has some restrictions to overcome. If you need new filters then you'll need to implement your own class (it's better to create inherited one from the standard class). Personally I redefined GET_F4_VALUES method to provide appropriate search helps (in the same manner as it's done in standard method but simply create a redefinition to make new method available and not only inherited), GET_OPERATORS - to provide available operators for new filters (the same reason as the previous one). Also you might need to redefine BUILD_SEGMENT_KEYS method in case you want to provide additional tables or complex logic in joins. But I did not. And the main adjustment has been done to PERFORM_COMPARISON method. It was needed because in standard delivery the system assumes that each filter can be used only once in conditions. For instance, you can not set conditions in subscription as the following one (for simplification): if Process Type equals 'ZPR1' OR Process Type equals 'ZPR2'. There is even a comment in the code:

    * if any 1 check fail, then the entire check fail

    So the system will process two values of the same filter with AND logical operation. You can find my implementation of PERFORM_COMPARISON method attached to this blog where I implement in my opinion more suitable logic (e.g. different filters are connected with AND but criteria for the same filter are connected with OR).

     

         In general this framework is very customizable.

         You can redefine handlers for communication channels. Or even define new one (web services or APC for example ), but the number is restricted to 5 additional channels currently. In standard delivery SMS, E-mails and CRM alerts are supported. Certainly, you can freely redefine these standard handlers. Also there is a standard implementation for SERVICE1 channel with BAdI BADI_CRM_NF_CHN_OUTPUT_FILL available (even with two standard implementations).

     

         Also you can define new subscribers types with appropriate handlers. Or redefine existing ones. Business Partner, Organization Unit and User are available by default. Recently SAP introduced a new subscriber type DR "Dynamic recipient" with OSS Note 2161849 - New subscriber type 'Dynamic recipient' for Notification Framework. Quite a useful by the way.

     

         That's almost all what I'd like to mention about customizing. The last thing is Framework Logical Criterion I promised to describe earlier. You set it during UI filter creation in Conditions of Subscription Processing. This criterion (actually string variable) helps to distinguish similar tables/fields by additional parameter. For example, it can store a particular partner function if you want to define a filter for table PARTNER.

     

         Within this framework there is an option to directly subscribe to a particular document. So you can just press a button on overview screen of a document and you'll get notified about any changes made to this document. The function is implemented in service requests (e.g. component/view SRQM_INCIDENT_H/IncidentOV). There is a Subscribe/Unsubscribe button in place. Technically it uses three methods of BTAdminH entity:

    • checkNf to check if subscription already exists;
    • subscribeNf to actually subscribe to the document;
    • unsubscribeNf to delete a subscription.

    All methods are implemented in CL_CRM_ADMINH_RUN_BTIL.

     

         From subscription perspective this direct subscribing function creates a subscription with condition: 'Process type' equals current process type of the document AND Transaction Number equals to current document object id. But also direct subscribing function requires some additional default settings made per process type in IMG -> CRM -> Transactions -> Settings for Service Requests -> Notification Framework -> Define Defaults for Direct Subscribing. Here you set if the subscriber should be set as BP (if the search for BP of current users fails the framework will create a subscription for a user). Also you set default validity in days to restrict the time period within which the subscription will be valid. And you can make a choice to include transaction id and/or user id and/or creation date in the description of the subscription. Under channels you define which channels are used and with which mail forms as templates in such a direct created subscription.

     

         So if you want to bring this direct subscribing functionality to your new business object type UI then you'll need to implement this Subscribe/Unsubscribe button in the similar way as it's done in SRQM_INCIDENT_H/IncidentOV.

     

         Need to be mentioned that this framework has a pretty good API to use in your custom development. See class CL_CRM_NF_API_DOC_IL and function module CRM_NOTIF_CREATE_ASYNC_SUB as an example.

     

         Regarding authorization. The framework uses authorization objects

    - CRM_NF_API

    - CRM_NF_SUB

    - CRM_NF_SUP

    More information about authorization concept of Notification Framework is available in SAP Help portal.

     

         Finalizing my thoughts and opinions: this framework is much more customizable, flexible and promising comparing to any other frameworks available within SAP CRM to notify end users for some changes within business document (actions, alerts, workflows etc.).


    Field Extension implementation on CRM Opportunity application - WebUI VS Fiori

    $
    0
    0

    Recently I helped a CRM Fiori customer to implement several extension fields on CRM Opportunity application ( supports CRUD operations on those fields ).


    clipboard1.png

                           Figure1: Extension field in WebUI


    clipboard2.png

                      Figure2: Extension field in Fiori


    In WebClient UI, there is no additional effort for developers to support extension field CRUD, if those fields are created by AET ( Application Extension Tool ), since most of the stuff are already handled by WebUI framework automatically. On the other hand, in Fiori, efforts must be spent both on frontend and backend.

     

    If you are interested with how to achieve this in CRM Fiori, please refer to the series of blogs below.

     

    - An example of End to End extension on CRM Fiori application - part1


    This blog introduces how to extend the oData model for CRM Opportunity with extension field and expose the read operation on it via  oData service. It contains pure backend development.


    - An example of End to End extension on CRM Fiori application - part2

     

    This blog introduces how to put the extension field on Opportunity UI detail view. It means after the steps of this blog is done, every time you navigate to the detail view of a given opportunity, you could see the value of extension field, that is, the read operation is supported. Both ui and backend development are needed.


    - An example of End to End extension on CRM Fiori application - part3


    This blogs introduces how to enable the extension field with update operation, which means you could change the value of extension field in UI and persist it to database repeatedly. Both ui and backend development are needed.


    - An example of End to End extension on CRM Fiori application - part4


    This blogs introduces how to enable the extension field with create operation, which means when you create a new opportunity, you could also specify the value of extension field in creation ui and it will be persisted to database together with other fields in opportunity header. Both ui and backend development are needed.

    Customizing or Enhancement?

    $
    0
    0

    When creating a new appointment, the UI fields Account and Contact are marked as mandatory fields.

    account mandatory.PNG

    After entering the Account, the partner determination runs. If there is only one contact person determined, field Contact is filled automatically based on customizing settings. However, the error from mandatory field check is still there. The error will be cleared if the 'ENTER' key is pressed.

    error.PNG

    It is a standard system behavior. In this case, the mandatory field check runs first, then the partner determination runs to determine the contact person. The system needs a 'trigger' to restart the mandatory field check, because it is hard for the system to know when the UI fields input are finished completely.

     

    However, the end user does not accept the system behavior. Because they think it is strange that the error is still there since the field is already filled. And if there are more than one contact person found, there is no such problem after selecting the contact person from the partner selection pop up.

     

    To by pass the issue, I could think about 2 work arounds:

    1. Customizing change.

    In the used partner determination procedure, set 1 to 'Selection Limit' for partner function 'Contact Person'.

    selection limit.PNG

    After that, there will also be a selection pop up when there is one contact person found. And the error 'Make an entry in field' will be removed after selecting the contact person.

    2. Enhance the UI to delete the error message once the contact person is filled.

    Add a check against the contact person value in the get_* method. Once the contact person value is filled, delete the error message BSP_WD 022 for the contact person from CL_BSP_WD_MESSAGE_SERVICE's MESSAGE_TAB and BSP_MESSAGES.

     

    I prefer the customizing change. Or convincing the customer to accept the standard system behavior, since the error is a temporarily displayed only. The UI enhancement may cause additional problem, and it is not supported by system upgrade.

     

    What is your choise? Customizing or Enhancement?

    The World's Greatest ERMS Configuration Guide, by Amrish Singh

    $
    0
    0

    Preface by John Burton

     

    SAP first introduced ERMS (E-Mail Response Management System) with CRM 4.0 Service Industries Extension back in 2004. In early 2006 I published SAP Note 940882 (ERMS FAQ Note) that contained links to two presentations: an ERMS Overview presentation and an ERMS How-To Guide. While the How-To Guide was very well received at the time, over the next nine years the guide gradually became somewhat outdated as new ERMS features were introduced and  configuration options were modified and expanded.

     

    Thankfully, I'm happy to announce that a new, updated ERMS configuration guide is now available. Amrish Singh, a Senior CRM Solution Consultant with UCS Solutions (Pty) Ltd, has created what can only be described as, "The World's Greatest ERMS Configuration Guide for SAP CRM". This new guide is based on the latest CRM 7.0 release and contains helpful and up-to-date images and screen shots. I hope you find the guide as amazing and helpful as I do.

     

    Best Regards,

    John Burton

     

     

    Amrish Singh: Amrish is a Senior CRM Solution Consultant with 8 years cross-industry experience. With 10 full-cycle implementations under his belt in South Africa and the Middle East, Amrish has delivered complex integrated solutions. Of late, Amrish's main focus has been delivering high quality Retail solutions. For more information on how you can take your Retail CRM implementation to the next level contact amrish.singh@ucs-solutions.co.za or amrishs_22@yahoo.com.

     

    UCS Solutions: UCS Solutions (Pty) Ltd, provides ICT related solutions and services primarily to businesses operating within the retail value chain. With a focus on the utilization of SAP and other retail related solutions, we support businesses through consultation and collaboration, thereby ensuring that our clients gain maximum returns from their IT investments. UCS Solutions is an ITIL and ISO 20000 certified IT Service Provider and was the first South African company to achieve ISO 20000 (IT Service Management) and ISO 22301 certification. UCS Solutions is a member of the JSE listed Business Connexion Group. For more information: http://www.ucs.co.za/.

    The World's Greatest ERMS Configuration Guide, by Amrish Singh

    $
    0
    0

    Preface by John Burton

     

    SAP first introduced ERMS (E-Mail Response Management System) with CRM 4.0 Service Industries Extension back in 2004. In early 2006 I published SAP Note 940882 (ERMS FAQ Note) that contained links to two presentations: an ERMS Overview presentation and an ERMS How-To Guide. While the How-To Guide was very well received at the time, over the next nine years the guide gradually became somewhat outdated as new ERMS features were introduced and  configuration options were modified and expanded.

     

    Thankfully, I'm happy to announce that a new, updated ERMS configuration guide is now available. Amrish Singh, a Senior CRM Solution Consultant with UCS Solutions (Pty) Ltd, has created what can only be described as, "The World's Greatest ERMS Configuration Guide for SAP CRM". This new guide is based on the latest CRM 7.0 release and contains helpful and up-to-date images and screen shots. I hope you find the guide as amazing and helpful as I do.

     

    Best Regards,

    John Burton

     

     

    Amrish Singh: Amrish is a Senior CRM Solution Consultant with 8 years cross-industry experience. With 10 full-cycle implementations under his belt in South Africa and the Middle East, Amrish has delivered complex integrated solutions. Of late, Amrish's main focus has been delivering high quality Retail solutions. For more information on how you can take your Retail CRM implementation to the next level contact amrish.amrish.singh@ucs-solutions.co.za

     

    UCS Solutions: UCS Solutions (Pty) Ltd, provides ICT related solutions and services primarily to businesses operating within the retail value chain. With a focus on the utilization of SAP and other retail related solutions, we support businesses through consultation and collaboration, thereby ensuring that our clients gain maximum returns from their IT investments. UCS Solutions is an ITIL and ISO 20000 certified IT Service Provider and was the first South African company to achieve ISO 20000 (IT Service Management) and ISO 22301 certification. UCS Solutions is a member of the JSE listed Business Connexion Group. For more information: http://www.ucs.co.za/.

    Homepage - My Open Tasks

    $
    0
    0

    My Open Task offers a summarise list of task with pending status (not completed) in the Home Screen area of the Business Role. My Open Task acts as a reminder of activities assigned to the current logged in user.

     

    My Open Tasks.png

     

    Only tasks where user is assigned under any employee partner function, are listed with traffic lights based on due dates. Tasks are removed automatically from the summary list, when their status are updated and set to internal status “Completed” (such as Completed, Rejected).


     

    Traffic Lights

     

    Traffic lights are calculated based on Due Date. The following criteria apply to filter the task

     

    • Red (1): due date already achieved.
    • Yellow (2): due date inside the hours defined in this task
    • Green (3): due date not in the warning period yet. Not due

    homepageopen tasks.png

     

    For example, if today is 28.01, the following traffic lights would be applied:

    • A task with due date 28.01 would be Yellow.
    • A task with due date 27.01 would be Red.
    • A task with due date 29.01 would be Green

     

     

    Activities Due Date are calculated automatically by the system based on End Actual Date or End Planned End Date.

     

    When entered a new actual End Date, system would set that date as “Due Date”.

     

    due date.png

     

     

    When not Actual Dates are entered, End planned date is set as “Due Date”.

    due date end date.png

     

    Logic for traffic light is implemented on UI Component CRMCMP_GS_WC/TodaysTasks in method  GET_P_DUE

     

     

    Which is the logic to select activities to display under  "Open Tasks"?

     

    Logic is implemented on UI Component CRMCMP_GS_WC/TodaysTasks in method GET_QUERY_RESULT.

     

    SAP standard logic will display any:

     

    • Activity with category class “H  tasks”
    • Responsible area: (1) Me.
    • Internal System Status: Open or In process.

     

    open task logic.png

     

    Activity with category class “H  tasks”

    To enable the Traffic lights into the Calendar Screen in SAP CRM for all activities and tasks, it is necessary to assign an "Activity Category" with Class “H Task” to the Transaction type.

     

     

     

    To assign this category proceed as follows:

     

    IMG Menu

    SAP Implementation Guide > Customer Relationship Management >  Transactions > Settings for Activities > Maintain Categories, Goals, and Priorities > Maintain Categories

    Transaction Code

    SPRO

     

    ACTIVITIES categoriesconfig.png

     

    Then assign the category to the transaction type.

     

    IMG Menu

    SAP Implementation Guide > Customer Relationship Management >  Transactions > Settings for Activities > Maintain Categories, Goals, and Priorities > Assign Categories to Transaction Types

    Transaction Code

    SPRO

     

    traffic+lights+category+assigment.png

     

    Responsible area: (1) Me

    In SAP, responsible area “1” means displays all the documents in which the business partner you are assigned to as a user, is assigned in any partner function of category employee.

     

    responsible area.png

     

    Partner function category “Employee” could be check in configuration for each partner function.

    partner functions.png

     

    Internal System Status: Open or In process

    Internal system statuses are different to user status. Only activities that are not completed would be displayed under “My Open Tasks”. Internal complete status are Finalised, Cancelled.

     

    user status.png

     

     

     

    In summary "My Open Tasks" is a very useful dashboard available in the Home Page of the Business Role, which offers a list of not completed Tasks assigned to the current logged in user.

    Viewing all 228 articles
    Browse latest View live


    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>