Home / Archive by category "Business" (Page 6)

Leveraging your existing investment in ERP

I recently did a blog post talking about the different types of customers.  I think that conversation is very relevant when talking about capital investments in your ERP software.  Just to recap, the 4 major categories of customers include:  (see my previous post for more details).

  1. The early adopters
  2. The “middle” adopters
  3.  The late adopters
  4. The never adopters.

ERP customers are no different.  There will be new customers and they will naturally fall into group 1 (at least for the initial purchase), but if you look at the SAP customer base, there are a LOT of customers out there that currently have some form of an existing SAP product.  Not every customer has a need or the budget to immediately upgrade to the latest and greatest products (HANA, Cloud for Customer, even CRM, etc).  Often customers will be years behind the curve on implementing new products.  And when they do upgrade, how can you tell if you are getting your money’s worth?  Let’s say you spend $500,000 in licensing, hardware and implementation/testing cost.  You now have the latest support pack.  Can you see areas of your business that suddenly run more efficiently?  Can you see performance improvements that allow your employees to enter data faster, solve customer issues faster, or get things out the door faster?  Often there are licensing/support costs associated with older revision, or there is specific functionality that has been recently released that your business really needs.  Every organization needs to ask itself if upgrading the ERP system has the ROI to justify the capital expense.

At JaveLLin Solutions, we are here to support the customers that have no need, no interest or no budget to upgrade, but still want to improve their day to day processes.  Our goal is to help those customers leverage their existing investment.  Rather than spending $100,000 ~ $1,000,000 or more to “hopefully” see dramatic gains in their business. Shouldn’t your business focus on the problem areas that can be easily fixed.  By focusing on specific areas, you can really tell if you are getting your ROI.

Our goal at JaveLLin Solutions is to understand your issues in service management.  We work with you to develop a solution based on applications, configuration and best practice processes to simplify service in your ECC system.  Our experience is your key to a well-oiled service machine.

Thanks for reading,

Setting Sales Order Line Item to TECO upon Service Order Teco

Here is one of the latest things I learned about Service.  Once the service order is completed, typically to perform the financial transactions like RA or Settlement, the sales order Line item needs to be set to TECO (technically complete).  This has always been a manual step for me, so when I recently discovered this could be automated without any code, well I had to document it for myself 🙂

I always thought this was something that had to be done using custom code.  After a lot of digging, I found this can be done using pure configuration.  Please note, this is a global setting.  Because this is changing system status code, you can’t get fancy have it only apply to certain service order types or certain organizations.  This is one of those all or nothing pieces.  Regardless, this is still a good thing to know.

Go to Transaction: BS32.

Enter in SysSt = SDRR ( Rep.conf. from service order) which is a fancy way of saying the service order was TECO’d

Drill into this and find status I0045 (TECO) and change the value to set.

It’s that easy.

Thanks for reading,

Using the system Trace ST05 and ST01

Recently, one of my colleagues reminded me of a nice little trick.  Typically, it’s more of a last resort, but typically much less painful than the debug method.  The Trace functionality found in transaction ST05  which allows you to trace by user or ST01 which can trace through the whole system (not user specific).

The process is pretty simple.  Go to ST05 (I encourage you start here, as there will be less to filter through if multiple people are on the system).

Select the trace type:

  • SQL Trace (selected by default)
  • enqueue trace
  • RFC trace
  • Buffer trace
  • HTTP trace

if it’s a limited amount of data and you aren’t sure, select them all.  Otherwise, the SQL trace is usually sufficient.

Press Activate Trace

in a separate window, execute the transaction you want to check.

Press Deactivate Trace.

Press Display Trace.

Execute with the default settings.

Now you’ll have a nice ALV grid.  Typically it is easiest to search for a specific program or a specific table to zero in on what you want to see.

Thanks Todd, I completely forgot about this.

Thanks for reading,

Customer Types

One of the things I have recently realized is that companies will always be building better and better products, but that doesn’t mean that everyone is going to use them.  Take myself for example.  I bought a license of a product called Snagit probably 6 or more years ago.  Every time I open it, it tells me that there is a new version.  Just go pay $25 and it’s mine with all the new features.  The problem is that I don’t need any new features.  Everything delivered in the old version meets my needs.  Now, on the other hand, I have friends that every time a new Apple product is released, he need to have it right away even if he doesn’t need it.  This brought me back to something I heard a while ago (and happily it stuck).  There are different types of customers.  I might be getting this wrong, but I think it’s broken into 4 different groups.

  1. The early adopters – they need the latest and greatest.  ALWAYS.  end of story. They aren’t afraid of dealing with bugs or glitches in exchange for the latest version
  2. 2nd Wave.  They aren’t on the bleeding edge of technology, but are willing to buy into the new stuff once it’s proven and stable.  this could be weeks, months or even years, depending on the customer.
  3.  The late adopters – these are the customers that are happy with what they have, but will eventually move to something newer, but typically they will always be multiple releases behind the new stuff and often need a push (like it will no longer be supported or something similar).  They want things proven and they want to know the money they spend will give them something beyond what they already have.
  4. The never adopters.  These are the people that have what they want and unless it breaks or stop working will never upgrade or buy a new version.  Even if it breaks, they may go looking for ways to fix it, or buy the same older version because it met their needs and they feel comfortable with the version.  Change is painful for theses guys.

Now, it all depends on what you are selling.  Because any one person can be all 4 of these customers, depending on the product.  For example, myself, I still love new, fast laptops and usually buy a new one every 18-24 months (even though I don’t need it),  but I still have my same DLP TV that I bought over 10 ago in my media room and have no plans to replace it until it dies.  I replace my iphone every 2-3 years or until it no longer runs.  I just recently converted my DVD’s to be digital (but I don’t have a VCR in the house 🙂 ), and I still appreciate old School SAP ECC.  So as you can see, I’m all over the board depending on the product/technology.

You job as a marketer is to figure out your product, and where people fit into the mix.  And more importantly, make sure that at least one of these customer groups is willing to buy what your offering.

Thanks for reading,

UI5 – Transitioning from Local to Cloud

Now, silly me, I really thought once I developed something, had it working, that I’d be able to just copy and paste and “alakazam”, it would work.  I really should know better than that by now, but hey, wishful thinking :).  So, here’s what happened.  I did all of my development in eclipse, ran it off the local server, used a simple proxy servlet, and everything worked great… well except that no one else could see it unless I showed them on my machine.  So I started digging.  A good friend of mine told me to check out the Hana Cloud Platform.  They have free versions.  So I did… and I’m really glad that I did.  However, like everything, the design of my app wouldn’t work in the cloud.

First I tried just adding HCP to my eclipse platform…  no love.  No matter how hard I tried, it wouldn’t work (granted, if I used my current version, it might now).  So, I tried just creating a template app in the SAP Web IDE, then copying my code into there…  nothing but errors.  After trying lots of other little attempts, I faced reality and started with a clean slate from the Web IDE.  I was able to salvage a lot of my original code, but of course, I had to add it in piece by piece, and often rewrite or move pieces of code within other functions.

When it was all said and done, I ended up with a better product (because I got to leverage new SAP standard functionality like the cloud connector, the Web IDE, and routing features that I’m only now beginning to understand 🙂

Stay tuned.  I’m finalizing my first round of testing, then I’ll send it out and hope to get your feedback on it,

Thanks for reading,

UI5 – Dynamically creating fields in a list

For you UI5 experts, I’m sure this is old hat.  But to me, this was pretty damn cool.  One of the biggest challenges I never got with the iOS applications was being able to dynamically read my configuration tables and display only what I wanted to see.  Now don’t get me wrong, I’m sure it was possible, but I wasn’t willing to spend the extra money for the feature when I didn’t have much of a customer base.  When you do things yourself, you have the luxury of wasting more time to figure it out instead of paying a higher price tag 🙂

Anyway, I had a list of fields in a particular sequence, so I created a service in the gateway to return all the visible fields in the correct sequence.  The next step was to read it into my application.  Now I wanted to also store this locally, so the code includes some additional features to read in the local data first, and if it isn’t available, then call the service.  (I apologize for the format, cut and paste doesn’t work so well in a blog, but you’ll get the idea).

// first, I get the model either from storage or

var oConfig = new sap.ui.model.json.JSONModel();“”);
//Check if there is data in the Storage
var urlCon = “Config”;
var oStorage =;
if (oStorage.get(“cfgData”)) {
var oDataConfig = oStorage.get(“cfgData”);

// once I have the data, I check to make sure there is something in there to avoid errors, so I check for undefined or blank
// if it’s initial or blank, I read the service to populate it.
if (typeof oConfig.getProperty(“/results/0/Field”) === “undefined” ||
oConfig.getProperty(“/results/0/Field”) === null){
oStorage.remove(“cfgData”);, null, null, false, function(oData, oResponse) {
}, null);
} else {, null, null, false, function(oData, oResponse) {
}, null);

// after all the checking and reading, I put the results into storage and into my model for the app
var oDataConfig = oConfig.getData();
oStorage.put(“cfgData”, oDataConfig);
this.setModel(oConfig, “config”);

Now I had a json model that holds all my config values.  (I include an option to refresh configuration within the app, but in general, this doesn’t change often enough, so why read it more than you have to).

Next up, I added a function to populate all the fields (for me they were going into a list on an icontab

// start by reading in the model and checking it has some data

var oModel = this.getView().getModel(“config”).getProperty(“/results”);
if (oModel.length > 0) {
var field = sap.ui.getCore().byId(“SelFields”);

// next, check to see if the list within the tab exists, if not, create it and the associated pieces
if (typeof field === “undefined” || field === null) {
var oLayout = new sap.ui.layout.Grid(“SelFields”);
var oLayout2 = new sap.ui.layout.Grid(“SelDateFields”);

// finally, look through the model.  for me, I’m checking for certain types of fields to determine if they belong on this tab
// also to determine if they are input fields, or just display
for(var i = 0; i < oModel.length; i++) {
if (oModel[i].GWField !== “”) {
if (oModel[i].Grpnam === “OM01”){
oLayout.addContent(new sap.m.Label({text:oModel[i].Descr}));
oLayout.addContent(new sap.m.Input({
maxLength: 20,
id: oModel[i].Field,
value: oModel[i].Value
if (oModel[i].Grpnam === “OM02”){
oLayout2.addContent(new sap.m.Label({text:oModel[i].Descr}));
oLayout2.addContent(new sap.m.Input({
maxLength: 20,
id: oModel[i].Field,
value: oModel[i].Value
// //Attach the panel to the page
var selGrid = this.getView().byId(“SelTab”);
var selDateGrid = this.getView().byId(“SelDateTab”);

// finally, fill the new fields with values (notice it is outside the big if statement checking if they exist
// either way, this look will always run

var val;
for(var j = 0; j < oModel.length; j++) {
if (oModel[j].Grpnam === “OM01” || oModel[j].Grpnam === “OM02”) {
val = oModel[j].Value;
if(val !== “”) {


Hope this helps and thanks for reading,

Lessons Learned from Singapore

I recently spent a week in Singapore.  This was my first visit to an Asian country, so that made it very cool.  But, since I’ve been lax on my blog, I realized that I haven’t taken the time to talk about what I learned.  Today I wanted to talk a little about market saturation…  or maybe not???

while I was Singapore, I was roughly 3 blocks from my hotel to the office.  The temps in Singapore are consistently in the 90’s and humid, so even short walks seem very long and very sticky.  Well, over the course of my walks I started to notice the number of coffee shops.  Three Starbucks, and at least 2 other “non-chain” coffee shops, all within a 1 block radius of the office.  Granted, there were several large buildings in the area, but regardless of the time of day, any coffee shop we went to always had a line.  Sometimes long, sometimes shorter, but always a line.  And since the time change was hell for me, we drank a lot of coffee.  That meant 8 or 9AM, noon, 2pm, even 6pm.  No matter when, always people in there spending money.

The realization came to me that not only did people enjoy coffee, they enjoyed the airconditioning, and the chance to escape work for 15 minutes to get some coffee.  The take-away this put into my head is that sometimes what you’re selling isn’t your product.  Sometimes you are selling an escape, an oasis, or a mental break…  the coffee is just an excuse to get there…

Thanks for reading,

Habits… So easy to break, So hard to Make

Why is it that good habits takes so much effort, and conscious thought, while breaking that habit just takes a little procrastination?  I find myself in the middle of breaking one of my better habits, and that’s been my daily blog.  So first off, let me apologize for slacking off.  I realize over the past month or so, I’ve been very hit or miss on getting my blog posts out.  I have a million excuses, but none of them matter.  I’ve been pretty busy lately, meaning that I should have plenty to talk about.

Why do good habits take constant work to maintain?  I always grew up thinking that it was just the initial “21 days” or whatever arbitrary amount of time it took to build a habit, then it was just supposed to be automatic.  Well, I don’t know about you, but I’ve found it takes more making the good habit.  A habit certainly becomes easier the longer you do it, but all it takes it one change in routine to suddenly put me on the path to ruination.

For example, it all started in Feb, when I went on vacation for a week.  It was just one week, so shouldn’t be a big deal, but it started the slide.  It took a few days to get back into the swing of things, then I had to leave on a business trip.  That threw my schedule even further out whack.  And I find myself when I travel, that my habits are totally different.  I skip the little things like blogging, and spend more time on my “social” life.  🙂

What I’ve found is that no matter what “habit” you try to create, if it matters to you, you must consciously work on it every day, even on vacation.  If you don’t stay diligent, the habit you worked so hard to create quickly leaves the routine, and before you know it, the habit no longer exists.

Thanks for reading,

Who is JaveLLin Solutions???

On a recent trip to Singapore to visit a client, someone in the airplane asked me what I did for a living.  I hesitated briefly.  I’ve been consulting for so long, that it’s hard not to say consulting.  However, I’ve come to realize that I have evolved far beyond a consultant.  I’ve become a solutions architect for SAP Service Management.  But that is a big title, and I’m not the kind of guy that goes for big titles.  So I kept it simple, I’m the Service Management Expert.  I design solutions and software to make life easier for service organizations.

I saw that not every company wants to implement CRM, Cloud for Customer, or whatever is the latest technology that SAP has added the newest features.  I wanted customers on standard ECC to be able to improve their service organizations without expensive implementations, new licensing, or adding additional IT staff to support new hardware.  (or something like that is my elevator pitch).

Now, if I haven’t put someone to sleep yet, the next question they typically ask is something like, how did you get into that?  Well, my journey has taken a strange path.  I started out a mechanical engineer with a knack for computer programming.  One thing led to another, and I ended up in SAP.  Service was often the forgotten module, so along with Sales and Distribution and writing reports and other code, I got put in charge of service.  I quickly came to realize that this area was the most interesting to me.  One thing led to another, and ended up consulting at many companies, in many industries to implement and improve service within SAP.
In the 15 years I’ve been doing service management (SM), I kept running into the same issues, over and over again.

  • Reporting.
  • Complexity for the Service Shop
  • Lack of communication between customer service and repair shop

Reporting is such a challenge in service because it crosses multiple modules within SAP.  This meant that there were no out of the box reports to cover all the connections between sales, call center and the repair depot.  Every implementation always wrote custom reports, typically they were all similar to each other because the metric were usually the same.  At the end of the day, how long did it take to do certain steps, how much did it cost, and “why did it take so long?”

The next major issue was complexity of the process.  There were so many transactions to plan and complete a work order and the typical service shop technician isn’t interested in data entry.  They want to be fixing something, turning wrenches, running tests, etc…  who wants to spend half of their day just documenting what they did, how long it took them, and when it finished.

Finally, for in-house and field repairs, there needs to be solid communication between customer service and the technicians.  In most organizations, the service group isn’t the one that takes the calls, so if customer service doesn’t get all the information, the customer needs to be contacted more than once.  Customers hate this, it wastes time for customer service and delays the service processing.  Often times, it was as simple as the information that that customer service collected never got passed down to the technicians because it was held on another document within SAP that doesn’t get used by the technicians.  The solution, the tech now has to look multiple places to get the full picture.  Sound efficient to you???

Now SAP is a great piece of software.  It is capable of handling most any process in business.  The problem is that SAP, like any good business, is always evolving.  They make new products and want customers to buy them.  What’s the best way to do that?  Put the best functionality in the new stuff, and stop updating the old stuff.  This leaves a huge gap for customers that can’t afford to keep upgrading to the newest products, implementing the latest software or even keeping up with the latest and greatest releases.

All of these factors are why I built JaveLLin Solutions. I wanted to help the little guy, and I have found no matter how big the company is, nearly every service shop operates like a little guy.  I wanted the service shop to focus on fixing things, not entering data.  I wanted the service managers to be able to have accurate data about their shop to make informed decisions.

Thanks for reading,

Moving to the cloud – First Lesson Learned

On my journey to move my new UI5 app to the HCP, I figured I’d no longer need the tomcat server that I had connected.  I really didn’t think I was even using it.  Well, when I couldn’t get anything to work with my HCP, even after I installed the cloud connector, I figured I better check and see if it still worked in my local settings.  Strangely, nothing worked.  I couldn’t get anything to correct or do anything.

As soon as I readded my Tomcat server, my local system began working again.  While this still hasn’t solved my cloud issues, it did give me a valuable lesson.  Don’t disconnect things just because you “think” you won’t need them anymore 🙂

thanks for reading,