Showing posts with label mdm customer survey. Show all posts
Showing posts with label mdm customer survey. Show all posts

The Perception of Master Data Management - Part 3 : V V Narendra Kumar

Figure 1. MDM hub architecture



Hybrid style hubs utilize methods from both transaction/repository and registry style hubs, and try to address some of the issues present in each. Since it may not be practical to update existing applications or to send inefficient, massive queries across several databases, the hybrid system combines some of the advantages present in the other models by leaving master data on the native databases, generating keys and IDs to access this data, but replicating some of its important attributes to the hub. When queries are made, the hub can service the more common requests, and queries only need to be distributed for the less-used attributes, which results in a more efficient process. While the hybrid style combines advantages of both of its parent models, it has its own disadvantages. Since it stores replicated data from outlying databases, it may run into updating issues, and, like the transaction/repository style, deciding which attributes to store, naming to be used and format to store them in can create problems.



Conclusion

The heterogeneous (and proprietory) nature of MDM's components and modules makes training and prototyping the first priority for an IT shop that has just embarked on a MDM implementation. DBAs, System Administrators and Basis professionals should look very closely at MDM for opportunities to implement best practices learned on other application suites. Solution Architects, Developers and Data Modelers should attempt to apply and scale their existing SDLC discipline for design, development, documentation and production-support, to MDM.

Read more: http://www.articlesbase.com/databases-articles/the-perception-of-master-data-management-3830837.html#ixzz1ZuTjCzDz
Under Creative Commons License: Attribution No Derivatives

The Perception of Master Data Management - VV Narendra Kumar

The Perception of Master Data Management

Abstract

Master data management (MDM) is a comprehensive method of enabling an enterprise to link all of its critical data to one file, called a master file, which provides a common point of reference. When properly done, MDM streamlines data sharing among personnel and departments. In addition, MDM can facilitate computing in multiple system architectures, platforms and applications. The benefits of the MDM paradigm increase as the number and diversity of organizational departments, worker roles and computing applications expand. For this reason, MDM is more likely to be of value to large or complex enterprises than to small, medium-sized or simple ones. When companies merge, the implementation of MDM can minimize confusion and optimize the efficiency of the new, larger organization. For MDM to function at its best, all personnel and departments must be taught how data is to be formatted, stored and accessed. Frequent, coordinated updates to the master data file are also essential.



Introduction

Master data management (MDM) is meant to deliver a near real-time, hub-based and synchronized master record of information to any seat or point of view in the organization. Master records are created with data that is defined, integrated and reconciled from multiple systems (customer relationship management, financial, supply chain, marketing etc.) and classified by type (e.g. product master, customer master, location master etc.). MDM is often pursued by data type through programs that address Customer data integration (CDI) or product information management (PIM), though many observers believe true MDM requires reconciliation of all data types. Critical to MDM are the notions of data quality and matching, which technology tools can help to automate.



Master Data



Most software systems have lists of data that are shared and used by several of the applications that make up the system. For example, a typical ERP system as a minimum will have a Customer Master, an Item Master, and an Account Master. This master data is often one of the key assets of a company. It's not unusual for a company to be acquired primarily for access to its Customer Master data.



Essential data types

There are essentially five types of data in corporations:



Unstructured—This is data found in e-mail, white papers like this, magazine articles, corporate intranet portals, product specifications, marketing collateral, and PDF files.
Transactional—This is data related to sales, deliveries, invoices, trouble tickets, claims, and other monetary and non-monetary interactions.
Metadata—This is data about other data and may reside in a formal repository or in various other forms such as XML documents, report definitions, column descriptions in a database, log files, connections, and configuration files.
Hierarchical—Hierarchical data stores the relationships between other data. It may be stored as part of an accounting system or separately as descriptions of real-world relationships, such as company organizational structures or product lines. Hierarchical data is sometimes considered a super MDM domain, because it is critical to understanding and sometimes discovering the relationships between master data.

Master—Master data are the critical nouns of a business and fall generally into four groupings: people, things, places, and concepts. Further categorizations within those groupings are called subject areas, domain areas, or entity types. For example, within people, there are customer, employee, and salesperson. Within things, there are product, part, store, and asset. Within concepts, there are things like contract, warrantee, and licenses. Finally, within places, there are office locations and geographic divisions. Some of these domain areas may be further divided. Customer may be further segmented, based on incentives and history. A company may have normal customers, as well as premiere and executive customers. Product may be further segmented by sector and industry. The requirements, life cycle, and CRUD cycle for a product in the Consumer Packaged Goods (CPG) sector is likely very different from those of the clothing industry. The granularity of domains is essentially determined by the magnitude of differences between the attributes of the entities within them



Read more: http://www.articlesbase.com/databases-articles/the-perception-of-master-data-management-3830837.html#ixzz1ZuSLxNyp
Under Creative Commons License: Attribution No Derivatives


continued...

MDM 5.5: Performance problems while loading repositories solved through SP5 & Technical Changes Steffen Ulme

MDM 5.5: Performance problems while loading repositories solved through SP5 & Technical Changes
Steffen Ulme

In this blog I will document the performance improvements which we made at a MDM-project with a very large repository. Maybe you have also problems with your repository (MDM 5.5 < SP5) regarding:
- Loading the repository,
- Adding/ Deleting fields via the SAP MDM Console,
- Modifying record values via the Portal Busienss Package.

If you have these problems, switching to MDM5.5 SP5 can solve these difficulties.

Let me describe our system landscape:
We used MDM5.5 SP4 with a very large repository (~200 tables, many taxonomy records). We had bad response times within the Portal UI as well as it took very long to add or delete fields within the SAP Console. The mayor problem was that it took around 3 hours to load the repository after it was stopped. This handicaped the project team very much, because during the loading of the repository nobody was able to work with it.

Solution description
To enhance the performance we implemented the following tasks:
1. Upgrade to MDM 5.5 SP5: We decided to upgrade to MDM5.5 SP5. Together with the upgrade we made the following

2. Landscape changes:
- we devided the Portal and the MDM Server into two machines, and
- we installed a new database on the local MDM-server.
Further we checked the repository modelling and changed the follwoing technical settings in the repsoitory in order to enhance the performance:

3. Keywords: Set the property "Keyword" for all repository fields to "None" if there is no need to set it to "Normal".

4. Sort Index Exists: Change "Sort Index Exists" for all fields from "Normal" to "None", excepts the fields which should be sorted via the result set in the Data Manager (e.g.: Name, Description, ID). The sort index enables the sorting of the data in the named column in the Data Manager

5. Display fields: Reduce the number of display fields within the repository. Reduce the number in all tables! (also in lookup, qualified tables as well as the main table)

6. Delete unused tables and fields: Check your repository if there are unused tables or not used fields. You should delete these fields and tables.

As a summary these are the reasons for the huge performance improvements:
- Upgarde to MDM 5.5 SP5,
- extra hardware (previously MDM was installed with Portal on one Box),
- newly installed Database SW => repository was newly unarchived => no fragments
- Technical Changes in the repository.


I hope that these experience will help you in your project if you have the described performance problems.

Steffen Ulmer

Steffen Ulmer is a SAP NetWeaver Technology Consultant.

MDM to Mail: Exploit UDF Santhosh Kumar V


In this Blog(My first Blog :)) I will explain how to send mail with the content of the file getting displayed in the row column format. Even though there are some Blogs speaking about sending mail, the Blog eMail Reporting by Prakash Arunachalam explains of sending the mail with the data getting displayed in the row column format using XSLT mapping. However in this Blog I will exercise the same scenario using a User Defined Function.

Requirement:

In a landscape where XI integrating MDM and R3, the requirement is to send the materials that are created in the MDM in a mail to the Data Administrator who has to approve or reject the material. Sending mail can be done with the use of MDM workflow, however it will flood the inbox with these mails being sent for each and every material created. The other best solution for this is MDM will send a file every one-hour with the material details and XI has to send mails with those material details and the URL of the portal page to approve/reject. Even the same requirement can be from R3 where it sends the list of purchase order created in an IDoc, which should be sent as a mail. Let us start creating the scenario.

1. Import the XSD of the source structure and the Mail in the external definition.

You can download the mail structure from the following link

https://websmp205.sap-ag.de/~sapidb/012006153200000361852004E/ximail30_xsd.txt

2. Create Message Interface for the Source and the Mail.

3. Map the product details to the Mail XSD as shown.







































The above mapping enables to dynamically send mails as shown in the Blog Mail Adapter (XI) - how to implement dynamic mail address by Michal Krawczyk.













4. Concatenate and map the fields for the Subject.















5. Use the following UDF to generate the content of the mail.

public void Content_test(String[] ID,String[] No,String[] Desc,String[] Type,String[] product,String[] JobID,String[] WF_Status,String[] Form_Id,ResultList result,Container container) { String Val,temp; int j; Val = "Hi," + "\n" + "The Following Form " + Form_Id[0] + " is " + WF_Status[0] + "\n\n" + "Form Details:\n " ; Val = Val + "\n\n" + "MDM Id " + "Material Number " + "Description " + "Material Type"; for(int i =0;i
6. Map the filed to be displayed in the mail content to the Content_test UDF and map it to Content of the mail structure.































7. In the Directory Create Receiver Determination and Interface Determination between MDM Business System and MailServer.

8. Configure the File Sender CC,Receiver Mail CC and create the Sender Agreement and Receiver Agreement respectively.

[Hint:You can find the URL of mail server using Tcode SCOT->Double Clicking SMTP->Mail Host. remember to suffix it with smtp:// in CC]

We are now prepared to trial the scenario. Post the file in the Fileserver and the mail knocks the Inbox.

Source.XML

53 21 santhosh.vellingiri@wipro.com 12345 ABC bcd 001 Pending For Approval 54 21 santhosh.vellingiri@wipro.com 12345 ABC bcd 001 Pending For Approval 55 21 santhosh.vellingiri@wipro.com 12345 ABC bcd 001 Pending For Approval 56 21 santhosh.vellingiri@wipro.com 12345 ABC bcd 001 Pending For Approval 57 21 santhosh.vellingiri@wipro.com 12345 ABC bcd 001 Pending For Approval

Output Mail











































Santhosh Kumar V is a Netweaver XI/PI Consultant working with WIPRO Technologies.



SAP MDM Training
SAP MDM Training

MDM Java API 2 an introductive series part IV Tobias Grunow

MDM Java API 2 an introductive series part IV
Tobias Grunow


Introduction

In my last Blog I showed you how to get an authenticated user session using a trusted connection. In this part I want to show you how to gather MDM system information from a SAP Portal system object.
After that I will introduce the basic concept behind working with MDM and the Java API 2, showing you how the system works (RecordID, Lookup Values, Display Fields...).

If you build a solution based on MDM you will sooner or later face a two or three tier MDM system landscape. Meaning that there will be a development system (D-System) and there might be a quality assurance system (Q-System) and there will be a productive system (P-System). This scenario can include multiple MDM Server or maybe only different Repositories on the same server and in addition maybe (D-, Q-, P-Clients). So now you face the problem how to address the different repositories from your code without having to take care about addressing the right one dependant on which landscape you are in.
In case you are using a SAP Portal I want to point to a very useful thread I have found on SDN.

Hard-code credentials - any other solution exists?

This forum post shows you how to work with the SAP Portal system objects and how to retrieve information out of it. I have used this concept to address the problem I have just pointed out to you in addition with the trusted connection user session authentication and it worked fine for me.

Let us continue with the next topic...
MDM Java API 2 introducing the concept

First of all I want to give u a brief introduction into the concept of MDM to better understand my future coding. As a coder you need a much better understanding of the concept behind the MDM than anyone else. Simple GUI-Users (Graphical User Interface) don’t have the need to understand the technical details behind the data storage and operations like Java programmers. So at the beginning the most important task is to understand how MDM will store data and connect the data with each other.
So let’s start with the first graphic:
image
Figure 1: Table concept in MDM

The first graphic shows the table concept of MDM. The central table called “Main table” is the centre of the model. From the main table there will be references going towards any kind of sub tables. In the Main table will be fields. Those fields can hold values which are stored directly in the table or hold a reference to any record of a sub table. Sub tables can store data values or hold references to other sub tables.
To illustrate the possible layout of a main table take a look at figure 2.

[Click the picture to enlarge!]
image
Figure 2: Possible layout in main table (MDM Console view)

As you can see the main table stores e.g. text values directly as well as references to other sub tables (Lookup’s of different kinds). To find out where the lookup’s are pointing to, you can open up the MDM Console and click on an entry in the list of fields in the main table to see its details (Figure 3).


image
Figure 3: Main table field details (Bottom part of MDM Console)


If we look at the details we have to notice two important things.
First, figure 3 shows us a field detail named “CODE”. This code is very important for us because it is the name we will use in our code to address this field in the table. Second, we have to notice that the field is of “Type” Lookup [Flat]. This tells us, that the value we will find in this field will be of type RecordID.
A RecordID is the ID of the record in the sub table (e.g. Sales Product Key – Table [Detail: Lookup Table]). This means that we will not be able to access the value directly by accessing the field in the main table. We will only get the reference to the sub table which holds the actual value desired. In my future Blogs I will give more details on the concepts behind MDM and give examples of other techniques used.
So enough of MDM concepts and let’s get to the Java API and some examples.
Searching in MDM

Searching in MDM will be one of the most common used functionality there is.
Searching in a repository has some prerequisites. First we have to have a connection to the MDM Server and second we have to have an authenticated user session to a repository. In my Blogs published before I showed you how to setup those prerequisites. In the class provided I have combined all the necessary steps to get the connection and the user session. So now let’s get to the code.

package com.sap.sdn.examples;

import java.util.Locale;

import com.sap.mdm.commands.AuthenticateUserSessionCommand;
import com.sap.mdm.commands.CommandException;
import com.sap.mdm.commands.CreateUserSessionCommand;
import com.sap.mdm.commands.SetUnicodeNormalizationCommand;
import com.sap.mdm.commands.TrustedUserSessionCommand;
import com.sap.mdm.data.RecordResultSet;
import com.sap.mdm.data.RegionProperties;
import com.sap.mdm.data.ResultDefinition;
import com.sap.mdm.data.commands.RetrieveLimitedRecordsCommand;
import com.sap.mdm.ids.FieldId;
import com.sap.mdm.ids.TableId;
import com.sap.mdm.net.ConnectionAccessor;
import com.sap.mdm.net.ConnectionException;
import com.sap.mdm.net.SimpleConnectionFactory;
import com.sap.mdm.search.FieldSearchDimension;
import com.sap.mdm.search.Search;
import com.sap.mdm.search.TextSearchConstraint;
import com.sap.mdm.server.DBMSType;
import com.sap.mdm.server.RepositoryIdentifier;

public class SearchExamples {

// Instance variables needed for processing
private ConnectionAccessor mySimpleConnection;
// Name of the server that mdm runns on
private String serverName = "IBSOLUTI-D790B6";
// Name of the repository shown in the mdm console
private String RepositoryNameAsString = "SDN_Repository";
// Name of the DB-Server this could be an IP address only
private String DBServerNameAsString = "IBSOLUTI-D790B6\\SQLEXPRESS";
// Define the Database type (MS SQL Server)
private DBMSType DBMSTypeUsed = DBMSType.MS_SQL;
// Create a new data region
private RegionProperties dataRegion = new RegionProperties();
// Session which will be used for searching
private String userSession;
// Default user name
private String userName = "Admin";
// Password is empty on default setup
private String userPassword ="";
// result we will get from mdm
public RecordResultSet Result;

/**
* Constructor for class
*/
public SearchExamples(){
// Set the Data Region
dataRegion.setRegionCode("engUSA");
// Set the locale on data region
dataRegion.setLocale(new Locale("en", "US"));
// Set the name of data region
dataRegion.setName("US");
// get a connection to the server
this.getConnection();
// Authenticate a user session
try {
this.getAuthenticatedUserSession();
} catch (ConnectionException e) {
// Do something with exception
e.printStackTrace();
} catch (CommandException e) {
// Do something with exception
e.printStackTrace();
}
// Get resulting records
Result = this.SearchTypes();

}

// ResultDefinition Main Table declaration
private ResultDefinition rdMain;


/**
* Method that will search for all records in main table of a certain type
*
* @return RecordResultSet that holds all resulting records from search
*/
public RecordResultSet SearchTypes() {

/**
* 1. First we create the Result Definition. This result definition will
* tell the search which fields are of interest to us. The list could
* include all fields of the table or only the ones we are interested
* in.
*/
// Define which table should be represented by this ResultDefintion
// In my repository this is the table MAINTABLE
rdMain = new ResultDefinition(new TableId(1));
// Add the desired FieldId's to the result definition
// In my repository this is the field PRODUCT_NAME
rdMain.addSelectField(new FieldId(2));
// In my repository this is the field TYP
rdMain.addSelectField(new FieldId(27));

/**
* 2. Create the needed search parameters.
* Define what to search for and where.
*/
// Create the field search dimension [Where to search!?]
FieldSearchDimension fsdMaintableType = new FieldSearchDimension(new FieldId(27));
// Create the text search constraint [What to search for?! (Every record that contains ROOT)]
TextSearchConstraint tscTypeRoot = new TextSearchConstraint("ROOT", TextSearchConstraint.CONTAINS);

/**
* 3.
* Create the search object with the given search parameters.
*/
// Create the search
Search seSearchTypeRoot = new Search(new TableId(1));
// Add the parameters to the search
seSearchTypeRoot.addSearchItem(fsdMaintableType, tscTypeRoot);

/**
* 4.
* Create the command to search with and retrieve the result
*/
// Build the command
RetrieveLimitedRecordsCommand rlrcGetRecordsOfTypeRoot = new RetrieveLimitedRecordsCommand(mySimpleConnection);
// Set the search to use for command
rlrcGetRecordsOfTypeRoot.setSearch(seSearchTypeRoot);
// Set the session to use for command
rlrcGetRecordsOfTypeRoot.setSession(this.userSession);
// Set the result definition to use
rlrcGetRecordsOfTypeRoot.setResultDefinition(rdMain);
// Try to execute the command
try {
rlrcGetRecordsOfTypeRoot.execute();
} catch (CommandException e) {
// Do something with the exception
e.printStackTrace();
}
// Return the result
return rlrcGetRecordsOfTypeRoot.getRecords();
}

/**
* Create and authenticate a new user session to an MDM repository.
*
* @param mySimpleConnection
* The connection to the MDM Server
* @param RepositoryNameAsString
* name of the repository to connect to
* @param DBServerNameAsString
* name of DBServer
* @param DBMSType
* Type of DBMS that MDM works with
* @param dataRegion
* RegionProperties defining the language the repository should
* be connected with.
* @param userName
* Name of the user that should make the connection to repository
* @param userPassword
* password of user that should be used if connection is not trusted
* @throws ConnectionException
* is propagated from the API
* @throws CommandException
* is propagated from the API
*/
public String getAuthenticatedUserSession(
) throws ConnectionException, CommandException {
/*
* We need a RepositoryIdentifier to connect to the desired repository
* parameters for the constructor are: Repository name as string as read
* in the MDM Console in the "Name" field DB Server name as string as
* used while creating a repository DBMS Type as string - Valid types
* are: MSQL, ORCL, IDB2, IZOS, IIOS, MXDB
*/
RepositoryIdentifier repId = new RepositoryIdentifier(
RepositoryNameAsString, DBServerNameAsString, DBMSTypeUsed);
// Create the command to get the Session
CreateUserSessionCommand createUserSessionCommand = new CreateUserSessionCommand(
mySimpleConnection);
// Set the identifier
createUserSessionCommand.setRepositoryIdentifier(repId);
// Set the region to use for Session - (Language)
createUserSessionCommand.setDataRegion(dataRegion);
// Execute the command
createUserSessionCommand.execute();
// Get the session identifier
this.userSession = createUserSessionCommand.getUserSession();

// Authenticate the user session
try {
// Use command to authenticate user session on trusted connection
TrustedUserSessionCommand tuscTrustedUser = new TrustedUserSessionCommand(
mySimpleConnection);
// Set the user name to use
tuscTrustedUser.setUserName(userName);
tuscTrustedUser.setSession(this.userSession);
tuscTrustedUser.execute();
this.userSession = tuscTrustedUser.getSession();
} catch (com.sap.mdm.commands.CommandException e) {
/* In Case the Connection is not Trusted */
AuthenticateUserSessionCommand authenticateUserSessionCommand = new AuthenticateUserSessionCommand(
mySimpleConnection);
authenticateUserSessionCommand.setSession(this.userSession);
authenticateUserSessionCommand.setUserName(userName);
authenticateUserSessionCommand.setUserPassword(userPassword);
authenticateUserSessionCommand.execute();
}
// For further information see:
// http://help.sap.com/javadocs/MDM/current/com/sap/mdm/commands/SetUnicodeNormalizationCommand.html
// Create the normalization command
SetUnicodeNormalizationCommand setUnicodeNormalizationCommand = new SetUnicodeNormalizationCommand(
mySimpleConnection);
// Set the session to be used
setUnicodeNormalizationCommand.setSession(this.userSession);
// Set the normalization type
setUnicodeNormalizationCommand
.setNormalizationType(SetUnicodeNormalizationCommand.NORMALIZATION_COMPOSED);
// Execute the command
setUnicodeNormalizationCommand.execute();
// Return the session identifier as string value
return this.userSession;
}

/*
* The method will return a ConnectionAccessor which is needed every time
* you want to execute a Command like searching or as on any other Command
* there is. @return SimpleConnection to MDM Server
*/
public void getConnection() {
String sHostName = serverName;
// We need a try / catch statement or a throws for the method cause
try {
/*
* retrieve connection from Factory The hostname can be the name of
* the server if it is listening on the standard port 20005 or a
* combination of Servername:Portnumber eg. MDMSERVER:40000
*/
mySimpleConnection = SimpleConnectionFactory.getInstance(sHostName);
} catch (ConnectionException e) {
// Do some exception handling
e.printStackTrace();
}
}
}


To test the code we also need a simple test class that will instantiate the sample class and prints out the number of retrieved Records.

package com.sap.sdn.examples;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// Create instance of search class
SearchExamples test = new SearchExamples();
// Print out the amount of found records
System.out.println("Total of " + test.Result.getCount() + " Records found that match criteria TYPE=ROOT");
}
}



I wrote a lot of comments in the code but I will give you some more details on what is happening there.

First of all there are some instance variables that hold the connection information to the MDM Server and the MDM Repository.
The constructor will set up some variables which are needed for the search.
A connection to the MDM server will be created.
A Session will be created and will be authenticated, if there is a trusted connection we will use it to authenticate and if we only have a normal connection to the server normal authentication will be used.
The search will be triggered and the result will be stored in instance variable.
The search needs some elements to work with.

At the beginning in the SearchTypes() method [Comment 1. in code] set up a ResultDefiniton which tells the search what fields are of interest to the program and should be accessible in the result. If this definition is not including some desired field and you want to access it later in your code, an exception will be thrown.

[Comment 2. in code] Define a search dimension and a search constraint to tell the search where to look at and what to look for. There are a lot of search constraints to work with.
All available constraints:

[Comment 3. in code] Define the search itself and use the dimension and constraint to set it up.

[Comment 4. in code] Build the command that is needed to execute the search.
More Details on command please see this link

So this is just a very simple example and I will give you more advanced codes in future Blogs.
If you have any questions on what the code does or need more detailed explanations please feel free to comment on this Blog. If this code helped you a little please feel free to comment as well.


So this will be the last Blog for this year since I am rebuilding my flat at the moment. The topic of the next Blog needs to be defined and I will update my agenda in my first Blog next year.


So I wish you a happy new year and as you would say in german: “ Einen guten Rutsch ins neue Jahr!”.

Best regards,
Tobi

Tobias Grunow is a Solution Consultant for IBSolution GmbH Heilbronn, Germany. He is a member of the research and development team.

Learning MDM -- A short guide for rookies Ketan Phanse

Learning MDM -- A short guide for rookies
Ketan Phanse

Since long, the MDM Forum has been flooded with threads with subjects as "Basics of MDM", "Learning MDM", "New to MDM" etc etc. As more and more people are joining the Team MDM, they are not able to find a systematic way of going about Learning MDM, and to be honest I faced the same problem an year back.So how do you go about get yourself well acquainted with SAP MDM assuming you have no previous experience/knowledge whatsoever about "Master Data Management" and have jumped in as its the new "in thing!". Here's how I think you should do it:

1. Understand MDM before SAP MDM
Don’t jump directly into the technology or the product without understanding what you are doing and why you are doing. One must first appreciate the need for managing master data, why is it that suddenly everyone is talking about it. Devote one week's time only in reading articles, whitepapers, case studies on MDM... let it be SAP or any other product for that matter. Some of the useful links/websites are:

http://searchdatamanagement.techtarget.com/generic/0,295582,sid91_gci1156675,00.html?bucket=REF&topic=302168

http://www.b-eye-network.com/news/index.php?filter_topic=1160,1106,1041,1180

http://www.dmreview.com/channels/master_data_management.html

You can find many more on the net. Would suggest control your temptation to go to sdn as of now. ( But anyways you would have landed on this blog mostly via sdn! )

2. Its SAP MDM time !
Now that you have understood the concept of MDM, you can start of with knowing more about SAP MDM specifically. Again don’t jump into the product as yet. This time your focus should be on knowing the business offerings, scenarios, technology fit of SAP MDM with respect to its overall landscape. Things you should focus on this time would be:
a. What is SAP MDM?
b. How does SAP MDM fit into SAP NetWeaver landscape?
c. What are the IT scenarios of SAP MDM?
d. What are the business scenarios of SAP MDM?
e. What are the key components, GUI of SAP MDM?
f. Some case studies on success stories of SAP MDM

This time the best source would be sdn!
https://www.sdn.sap.com/irj/sdn/nw-mdm

https://www.sdn.sap.com/irj/sdn/nw-mdm?rid=/webcontent/uuid/c039d0df-0901-0010-16b4-8fdc4bf639e3

3. Getting hands-on SAP MDM
By now you would have well conceptualized SAP MDM and eager to open various MDM components. Here are few suggested readings:
a. SAP has provided detailed Reference Guides for each MDM component. These would be your bibles for time to come. They are available on service market place.
b. Reference guides are also available on help.sap.com at following link
http://help.sap.com/saphelp_mdm300/helpdata/EN/2d/ca9b835855804d9446044fd06f4484/frameset.htm

c. How-to Guides on sdn provide detailed step-by-step description on some important scenarios.
https://www.sdn.sap.com/irj/sdn/nw-mdm?rid=/webcontent/uuid/5024a59a-4276-2910-7580-f52eb789194b

d. We on sdn! You can always ask questions on sdn, but again requesting you to make sure that they do not already exist on the Forums and the SDN-MDM family will be more than happy to help you.

4. Execute your learning’s
Remember, SAP MDM is not a small product. It has 4 Reference guides, and they too don’t cover all the components. So if you think you can learn MDM by reading the Reference Guides as Agatha Christie & Sidney Sheldon then SAP MDM would surely look like all fiction to you! So take a step back, be patient and try to execute whatever you are learning. Find yourself a live MDM environment, better if its on the latest version, and try your hands on it. Develop simple scenarios to execute your learning’s like creating a small repository with fields and tables, importing data from excel, writing validation and assignments, developing simple workflows etc.

Hope this blog helps you in your way to becoming an MDM Guru!

Ketan Phanse is a SAP MDM Business Analyst in Wipro Technologies


Learning MDM -- A short guide for rookies
Ketan Phanse

Strategic Data Services for SAP NetWeaver MDM Markus Ganser

Strategic Data Services for SAP NetWeaver MDM
Markus Ganser

On behalf of the SAP field services and SAP development teams involved with SAP NetWeaver Master Data Management (MDM) I'd like to announce the availability of SAP Strategic Data Services (SDS) for SAP NetWeaver MDM. This offering comprises complementary high-quality customer services all along the life cycle of an MDM implementation project. SDS is staffed with MDM architects and SAP experts from consulting and development.

End-to-end implementation acticvities include:

  • Data-quality analysis
  • Project scoping, planning and estimation
  • Master-data modeling and taxonomy creation
  • Implementation of business rules and matching strategies to enable data consolidation
  • Development and roll-out of data, data-process governance and methodologies
  • Services in data cleansing, validation, enrichment and classification, including certified third party data-quality services
  • Definition, design and configuration of MDM system architecture
  • Tuning and optimization of MDM performance
  • Custom API and SOA development services

If you are interested in SAP NetWeaver MDM or have already purchased it and like to move to the next steps, SDS could be a great opportunity to engage. The SDS front-office is staffed with MDM-experienced consultants from SAP field services, while the SDS back-office is part of the MDM development team. This combined approach makes SDS a service provider with vast and first hand experience with MDM and data issues. In addition, SDS enables you to directly engage with MDM-certified business information providers and data quality partners. The team is ready to help you make your MDM and data projects a sustained success.

See also the SDS overview graphic:

image

For detailed information, send an email to Ronen.Liper@SAP.com and Hermann.Reiter@sap.com.

Markus Ganser joins the product management team of SAP Master Data Management

Data Modelling and Database Design in ABAP – Part 4 Tobias Trapp

Data Modelling and Database Design in ABAP – Part 4
Tobias Trapp

Let’s Start an Experiment

In the last instalments of this weblog series I dealt with semantic data models, SERM and SAP Data Modeller. Now I cover an completely different topic. Let’s start with an experiment and create a transparent table:

image

Then we use transaction se16 to enter some data:

image

Now we add another column and activate the transparent table:

image

Now here’s an effect that might be surprising to you: every search using se16 for a CONN_ID value won’t find anything:

image

But what went wrong? Let’s switch on the flag “Initial Values”:

image

And finally after activation we get the expected result:

image

What happened? When we appended the column the new fields have been filled with NULL values which didn’t match the expression SELECT COUNT() FROM ZTEST WHERE CONN_ID EQ SPACE. Let’s have a look at the F1-documentation of the “Initial Values” in detail:

Indicator that NOT NULL is forced for this field

Select this flag if a field to be inserted in the database is to be filled with initial values. The initial value used depends on the data type of the field. Please note that fields in the database for which the this flag is not set can also be filled with initial values. When you create a table, all fields of the table can be defined as NOT NULL and filled with an initial value. The same applies when converting the table. Only when new fields are added or inserted, are these filled with initial values. An exception is key fields. These are always filled automatically with initial values.

Restrictions and notes:

  • The initial value cannot be set for fields of data types LCHR, LRAW, and RAW. If the field length is greater than 32, the initial flag cannot be set for fields of data type NUMC.
  • If a new field is inserted in the table and the initial flag is set, the complete table is scanned on activation and an UPDATE is made to the new field. This can be very time-consuming.
  • If the initial flag is set for an included structure, this means that the attributes from the structure are transferred. That is, exactly those fields which are marked as initial in the definition have this attribute in the table as well.

What are NULL Values?

There are different semantics for NULL values in database tables:

  • unknown value (there is value but we don’t know it),
  • not existing value (we can’t apply the attribute),
  • missing information (there may be a value but we don’t know it).

SQL standard defines some rules for NULL values:

  1. You can’t insert a NULL value in a column that that is defined NOT NULL,
  2. The result of a comparison between two NULL values is not true – you have to use the IS NOT NULL and IS NULL.
  3. If a column contains NULL values it will be ignored when using aggregations: MAX, AVG and SUM.
  4. When doing grouping using GROUP BY then there are special rows for the results.
  5. If a table contains NULL values in joins there apply rules for outer joins.

In fact above rules apply for ABAP as well. I suggest reading details in transaction ABAPHELP.

What are NULL Values Used For?

We already saw how to create NULL values in a database table by appending a row with the flag “initial values” set off. But there is another possibility: insert a new row using a view that doesn’t affect a column with the flag “initial values” switched off. But even if you don’t have NULL values in two transparent tables it is easy to create NULL values in a left outer join which is left as an easy exercise to the reader.

In fact NULL values are not very useful because there is no NULL in ABAP and is difficult to set a database field to NULL. Usually we use working areas (resp. internal tables) to update a transparent table – but if we select a row into a working area the NULL value will be converted to an initial value and after the update the NULL value is lost.

But there is one interesting application for NULL values. If we need a post processing after appending a row to a transparent table to calculate values for new fields it is very useful to be able to distinguish between new fields and already calculated fields with initial values.

Tobias Trapp is SAP Mentor and developer for AOK Systems GmbH

Welcome to the SAP NetWeaver MDM Customer Survey Markus Ganse

Welcome to the SAP NetWeaver MDM Customer Survey
Markus Ganse

Welcome to the MDM Customer Survey 2007

image

We'd like to ask you, our SAP NetWeaver MDM customers and prospects, to take twenty minutes to complete our questionnaire asking specific questions about how you deploy and use MDM in your company. We'd like to get a clear picture of how you use or plan to use SAP NetWeaver MDM at your site now and in the future.

Your feedback will be analyzed by our product management team and will ultimately shape our product investment and development plans over the next few years.

The survey is open for MDM customers and prospects from March 16 - 30, 2007.

All participanting MDM customers will have the chance to win an iPod, and will be rewarded with 20 SDN points for their feedback.

We'd like to point out that the obtained survey data will not be used for any marketing activities or other external purposes.

Although the survey is self-explanatory, I'd like to provide some basic navigation hints:

  • To complete the questionnare, click SAP NetWeaver MDM Customer Survey 2007
  • Read the introduction first.
  • Then, click "OK" on the box with the introductory text, and complete the questions.
  • If you'd like to make an additional comment to a question, you may drag and drop the relevant feedback icons from the upper left to the corresponding question, and enter your point.
  • To scroll on the page, click the "More" button at the bottom.
  • To switch to the next page, click "Next" at the bottom of page 1.
  • When you have completed the questionnaire, click the "Next" button on page 2.
  • You'll be directed to an SDN page to get rewarded with SDN 20 points.

Thanks in advance for your contributio

SAP NetWeaver MDM Product Management team

Markus Ganser joins the product management team of SAP Master Data Management