Sunday, April 19, 2009

Useful SAP Transactions

I worked on a consulting project laying down the roadmap and consolidate a client's customer identity and access management.  Like a lot of large enterprises, they use SAP.  Through various interviews and meetings, with some common sense, it is pretty clear a lot of the client employee's knowledge is either:
  • Silo to their particular department or function
  • Out-of-date or plain wrong
So instead of more just asking around, I went straight to "the system".  Before this project, I kind of hear SAP is notorious for their user-unfriendliness.  Now, I got to experience first hand.

After a few months of reverse engineering the clients organization through interviews and system analysis, I have came up with a list of useful SAP transcations (some for R3, some for CRM, some for both):

XD01-03 - View/Edit Customer Master Record
PIDE - View/Assign classification to Account Group.  Use for synchronization between R3/CRM
SE38 - View/Edit Programs
SE37 - View/Edit Function & Modules
XDN1 - Customer # Range
OBAR - Assign Customer Account Group to Number Range
SE16 - Browse SAP Tables (useful CRM tables includes BUT000, BUT051
SE11 - Maintain SAP Tables
SU53 - Display authorization data (of your login account)
WE02 - IDOC List
SM59 - RFC configuration
SM58 - Transcation RFC error log
BD87 - Status monitor for ALE messages
SE93 - Maintain transcation
SALE - Display IMG (contains stuff about ALE)
SM04 - User List (display a list of connections to SAP)

Useful program
RBDMOIND - Update status in WE02

Monday, April 13, 2009

Functional Programming

In my Google Reader subscription, the words "Functional Programming" kept re-appearing every so often.  I finally took the plunge to take a look at what all the buzz is about.

After a few laps around the internet, an answer on stack overflow gave a pretty good elevator pitch about all the fuse around FP.

http://stackoverflow.com/questions/411290/why-do-people-think-functional-programming-will-catch-on
Just as graphical user interfaces and "code as a model of the business" were concepts that helped OO become more widely appreciated, I believe that increased use of immutability and simpler (massive) parallelism will help more programmers see the benefits that the functional approach offers. 
Since my back ground is in Java, and rather than starting from scratch with a purly functional language like Haskell, Scala seems a good place to start.  Also, joel.neely made a good juxtaposition with FP and pure FP language like Haskell against OO and pure OO language like Smalltalk:
However, languages that enforce a functional style are getting lots of virtual ink these days, and whether those languages will become dominant in the future is an open question. My own suspicion is that hybrid, multi-paradigm languages such as Scala or OCaml will likely dominate over "purist" functional languages in the same way that pure OO language (Smalltalk, Beta, etc.) have influenced mainstream programming but haven't ended up as the most widely-used notations.

TinyURL

I recently came across this Question on stack overflow about someone wanting to write a URL shortener service like TinyURL.


Upon further reading, it occurs to me that TinyURL probably use some similar table look-up implementation.  I.e. 
  1. "http://tinyurl.com/dbeeod" where "dbeeod" is the key and the looked up value is "http://www.infoq.com/presentations/Making-Roles-Explicit-Udi-Dahan"
  2. Then TinyURL simply does a redirect from the key to the looked up URL. 
Seems like a logical way to implement the solution for this problem.  

I have been using TinyURL for links on my tweets on Twitter, then it dawns on me, if TinyURL goes down or goes out of service, all the TinyURL links will be brokens.

Saturday, April 11, 2009

Weak type vs Strong type Languages

Or is it short term programmer productivity vs long term code maintainability?

Facebook is a good example of how using PHP, they were able to achieve up-front benefit of programmer productivity which led to their initial primary goal of pushing the product out the door.

In the long term, as Aditya Agarwal, Director of Engineering at Facebook, puts it. Facebook, written in the weakly type PHP programming language, is making the large code-base difficult to maintain and analyze.


The way Facebook address this issue is an interesting one.  While PHP remains the front-end web programming language, a good chuck of their services is written in a strongly typed programming language such as C++.

Perhaps, web-programming should follow this evolution? Weakly type language such as Ruby, PHP, Python, are used for version 1.0 to push the product out the door.  As the product matures and code-base grows, refactor the services to use strongly type language?

OSGi

I have heard a lot about OSGi, but never really got a change to look into what it is all about.  Today I finally got a chance to do some digging and found a very good introductory article/tutorial from Javaworld:


Very powerful concept for large enterprisy project.

Second part of the OSGi series from Javaworld includes Spring DM.  Another great article to learn about the concepts!

Friday, April 10, 2009

Custom Spring Security Authenication

I recently answer a question on Stack Overflow on how to create custom authenication in Spring Security.  I think it is a pretty good quick start guide.