Showing posts with label mdm database design. Show all posts
Showing posts with label mdm database design. Show all posts

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...

Do you know the SAP Management Console (SAP MC)? Dirk Jenrich

Do you know the SAP Management Console (SAP MC)?
Dirk Jenrich



If you are using windows, then you probably know the Microsoft Management Console (MMC), which provides a common framework for system management. SAP has developed the SAP Systems Manager snap-in which allows you to monitor, start or stop SAP systems centrally from the MMC, this simplifying system administration. Under Unix, however, for a long time no such tool was available.

But with SAP NetWeaver 7.0, things finally got moving:

* A new start service (sapstartsrv) is available on all platforms. It is offering web service interfaces to applications for centrally administering and monitoring SAP systems.
* With a similar UI to the SAP Systems Manager snap-in of the MMC, the SAP Management Console (SAP MC) was developed, which uses the web services mentioned above. The SAP MC is a browser-based, platform-independent user interface providing basic monitoring and administration of SAP systems.
* Within the development of SAP NetWeaver 7.1 the web service interfacs were further improved. These functions are already available to you in the SAP NetWeaver Composition Environment 7.1. To some degree, a downport of these functions to NW 7.0 is planned.

This weblog introduces the SAP MC. Technically, it's a Java applet running in a Java Runtime Environment on the front end host.

Summarized, the SAP MC allows you to monitor and perform basic administration tasks on SAP systems centrally, thus simplifying system administration. Among other things, it provides the following functions:

* Monitor and control (start, stop, or restart) SAP systems (ABAP and Java) and its instances with a single tool.
* Display SAP log and trace files, start profiles, instance parameters, the system environment, SAP environment, and so on.
* Display and control Java and ABAP processes.
* Monitor system alerts.

If you want to use the SAP MC, you need a Java Runtime Environment with a release as of release 1.4 on your front end. Besides, the corresponding Java Plug-In has to be active on your browser. To start the SAP MC, simply enter the following URL into your web browser:

http://:513

is the name of the host, where the application server is installed.

is the instance number of the application server mentioned above.

The URL is automatically forwarded to:

http://:513/sapmc/sapmc.html?SID=&NR=&HOST=

Now, simply choose Start.

image

Depending on the patch level of the SAP system, the values of the system entered in the URL are shown. If not, you can always add instances manually, using the pushbutoon "Add new instance":

image

Now specify the host parameters of the SAP system you want to display:

image

As you can see, the UI is similar to the MMC:

image

I suggest that you click a little bit around to find out about the different functions. Don't worry! You have to confirm every potentially dangerous command (for example stopping an instance) by entering user and password in order to prevent misuse. Or - if you one of the rare breed, who prefer reading the documentation first - follow this link: http://help.sap.com/saphelp_nwce10/helpdata/en/44/c707c053550f2ce10000000a1553f7/frameset.htm.

Note

Remember that this the documentation of the SAP NetWeaver Composition Environment, so for your NW 7.0 system not all of the functions mentioned there are available.

Some remarks about the UI:

* Right click an instance or a system to get more commands on that level:

image
* Entries below instance levels often contains sub trees; the corresponding icons appear after you've chosen the corresponding entry. As an example, you can see the sub trees for system monitoring, which show the current status and open alerts reported to the CCMS monitoring segments of the corresponding instance.

image

One remark about monitoring of Java instances. In release SAP NetWeaver 7.0, there is the entry AS Java containing a process table with information about the Java processes:

image

In SAP NetWeaver 7.1 however, you can see much more. If you add a Composition Environment (CE) instance, you can see a whole bunch of extremely important monitoring values - representing one of the most complete and comprehensible collection of metrics about Java monitoring. In detail, it contains:

* information about the AS Java threads, sessions, caches, aliases, Enterprise JavaBeans (EJB) sessions, remote objects
* Java Virtual Machine garbage collection and heap memory information of the application server

image

Is there anything more that might be interesting to know?

* You can use the SAP MC for systems with release SAP NetWeaver 2004 as well; see SAP note 1014480.
* If you want, you can install the SAP MC locally; see SAP note 1014480 as well.
* You can use https for calling the SAP MC; for details see SAP note 1036107.

If the notes are not visible to you now, please have some patience - the notes will be released soon.

Dirk Jenrich is info developer for SAP and specializes in central monitoring.

A General Idea on SAP Master Data Management By Ron Victo

Working across Sap heterogeneous forums systems at multiple places, SAP Master Data Management leverages accessible IT assets in business-critical data, delivering greatly reduced data repairs charges and very useful for sap business jobs. Moreover, by ensuring cross-system data consistency, SAP Master Data Management speed ups the implementation of business processes for jobs. SAP MDM is a key enabler of SAP Enterprise Service-Oriented Architecture forums.

SAP is at present on its second iteration of MDM software. Facing restricted acceptance of its primary release, SAP changed path and in 2004 purchased a small vendor in the PIM space known as A2i. This code has happen to the basis for the presently shipping SAP MDM 5.5, and for itself, most analysts believe SAP MDM to be more of a PIM than a broad MDM product at this time.

The components & tools of SAP NetWeaver master data management integrates business courses across the comprehensive value chain, delivering features and functions to help: Master data consolidation, Synchronization and distribution of master data , Centralized management of master data, Administration of master data, Management of internal content, Catalog search, Print catalog customization , Multichannel syndication of product catalog content, Business process support and Business analytics and reporting.

There are five normal execution scenarios:

Content Consolidation, Central Master Data Management, Master Data Harmonization, Rich Product Content and Global Data Synchronization With the SAP (MDM), you can:

1. Control customer relationships efficiently through streamlined visibility across various systems 2. Simply allocate master data to assigned systems through automated distribute and subscribe models 3. Lessen the number of part masters maintained worldwide by removing duplicates 4. Analyze and statement on spending by part, supplier, or other master data 5. Negotiate superior sourcing contracts based on analytical insights 6. Lessen supply chain charges by ensuring exact exchange of data involving manufacturers and dispensers or dealers. SAP Master Data Management is the basis for harmonized, reliable information that can be offered to client applications across the enterprise. It offers you a great way to attain information steadiness across your business or jobs and IT landscape. It enables improved decision-making, translating chance charges into gains, and reducing the charge of IT maintenance. SAP Master Data Management allows you to go with information across myriad applications and topographies -- whether that details resides in SAP, non-SAP, or legacy applications. Therefore, you can lessen costs, develop decision-making, and attain business goals on jobs. The sap news says that SAP (MDM) increases the sap jobs search and by training this sap certified course education module, it supports and gives more vacancies for permanent sap jobs for all developers or trainers worldwide.

Ron Victor is a SEO copywriter for SAP jobs
He written many articles in various topics like SAP news,SAP Forums,SAP Articles.For more information visit sap employment
Contact him at ron.seocopywriter@gmail.com.

Article Source: http://EzineArticles.com/?expert=Ron_Victor

SOA and MDM - Two Integration Solutions That Go Great Together? By Loraine Lawson

I just happened to receive notice today in my inbox of a Webinar on master data management (MDM) and SOA. Normally, I save these announcements for Friday's integration news round-up, but the event is scheduled for this Thursday, March 20, at 11 a.m. ET.

This event caught my eye for a couple of reasons.

First - though perhaps not the best reason - it's like a meeting of the products on opposite sides of the "peak of inflated expectations" on the famous Gartner hype cycle: Master data management is on its way up and SOA...well, I suspect SOA may be headed for the trough of disillusionment. I know I'm feeling pretty disillusioned since I learned people can't even agree on a definition for the "service" in SOA. But I won't go there...for now.

Second, both SOA and MDM involve, in one way or another, integration - so I can't help but wonder what happens when you marry the two, which is precisely what the event promises to discuss.

Third, MDM is all about the data and, as regular readers know, SOA has data "issues," whether you're talking data integration or data services. So, it'll be interesting to see how the two even fit together. The promo e-mail entices with this bit of marketing:

"More than just the latest three-letter acronym, SOA case studies demonstrate that in order to be successful, you must spend time on the data contents of all those messages flying around your ESB or EAI infrastructure (hint: it's not just web services!). Conversely, MDM isn't just the latest trend....Combined, MDM and SOA provide the best of best worlds and increase your chance of succeeding with an enterprise-wide future data architecture."

Marty Moseley, the CTO of Initiate Systems, is the presenter in this event, which is the latest in an ongoing vendor-sponsored MDM University Webinar Sessions. You'll need to select the presentation and fill out a basic form to preregister. After submitting the form, you'll gain access to the previous presentations, which are available for on-demand viewing.

One thing that SOA and MDM do have in common: Neither are supposed to be tied to specific technologies or vendors. While that's well-publicized with SOA, it's perhaps not so often said about MDM.

If you're just starting an MDM initiative, you might want to check out my February interview with Rob Karel, a Forrester Research principal analyst specializing in master data management (MDM) and data integration.

Karel explains what you need to know about MDM and what you should do before you talk to vendors about specific solutions, including this list of questions you should answer before you talk to vendors:

* Do I have sufficient business sponsorship and participation in the MDM effort?

* Am I solving for operational MDM, analytical MDM, or both?

* What sources and targets do I need to integrate my MDM solution with?

* What data integration solution should I leverage (ETL, SOA, EII, EAI, etc.)?

* Am I looking for a single vendor solution or best of breed to build out my MDM ecosystem?

* Have I scoped our MDM strategy appropriately?

Karel also walks through the MDM adoption steps you should take - assuming you want a solution that fits your needs, rather than just buying what a vendor offers. Given that Thursday's MDM/SOA Webinar is vendor-sponsored, the Q&A with Karel might be a useful pre-event read.

Article Source: http://EzineArticles.com/?expert=Loraine_Lawson

Loraine Lawson - EzineArticles Expert Author

How to work with Command in the new MDM Java API Vijendra Singh Bhanot

How to work with Command in the new MDM Java API
Vijendra Singh Bhanot

I am new to the MDM Java API. For one of the existing project I was asked to explore the new MDM Java API. I do not have any experience with the earlier MDM4J but still I was able to understand and explore the new MDM Java API. I think this API is excellent and I am almost fallen in love with it. The best part I like about this API is the Commands. Initially it took me time to understand the concept but very soon it was all clear. With this blog I would like to share my knowledge about how to work with Commands. Also in this blog you will see an example of Validation Command.




Why you need a Command? What is a Command?


I command the MDM Java API to get me the list of Validations …..

Well, that’s what the idea is.


Command is a special class that instructs MDM Java API to perform some action. All actions like managing repository content, searching records, managing repository schema and etc, have dedicated commands.


All these commands are logically organized in packages. You can always refer Java Doc to identify which Command you need to use. (https://help.sap.com/javadocs/MDM/current/index.html)

How to Use a Command?



All Command’s are used in the following way:



1 RetrieveValidationsCommand objRetrieveValidationsCommand = new RetrieveValidationsCommand();

2 objRetrieveValidationsCommand.setSession();

3 objRetrieveValidationsCommand.setTableId(<>); // Required

try {

4 objRetrieveValidationsCommand.execute();
} catch (CommandException e) {
e.printStackTrace();
return;
}



(1) You create a new instance of a particular command by passing it the ConnectionAccessor object.

(2) The very second step is mostly the setSession(). Here it is important that you use the right type of session (Server Session, Repository Session or User Session). For Example, you may not be able to get list of validations if you use a Repository Session instead of User Session.

As I already mentioned that setSession() is not always the second step. Actually the commands responsible for creation of session are the ones that do not require a session. Thus these commands (CreateServerSessionCommand, CreateRepositorySessionCommand and CreateUserSessionCommand) do not require setSession().

(3) Some commands require specific setter method to be set before it is used. These setter methods are marked as “Required” in the Java Dock. There are few which are marked optional.

(4) Inside a try block you execute the command. If there is an error then CommandException is thrown.


Here is a sample of RetrieveValidationsCommand in action…

/*
* Created on Feb 7, 2008
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package demo.validation;

import com.sap.mdm.commands.AuthenticateUserSessionCommand;
import com.sap.mdm.commands.CommandException;
import com.sap.mdm.commands.CreateUserSessionCommand;
import com.sap.mdm.commands.GetRepositoryRegionListCommand;
import com.sap.mdm.data.RegionProperties;
import com.sap.mdm.ids.TableId;
import com.sap.mdm.net.ConnectionException;
import com.sap.mdm.net.ConnectionPool;
import com.sap.mdm.net.ConnectionPoolFactory;
import com.sap.mdm.server.DBMSType;
import com.sap.mdm.server.RepositoryIdentifier;
import com.sap.mdm.validation.ValidationProperties;
import com.sap.mdm.validation.ValidationPropertiesResult;
import com.sap.mdm.validation.commands.RetrieveValidationsCommand;

/**
*
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class GetListOfValidations {

public static void main(String[] args) {
// create connection pool to a MDM server
String serverName = "LOCALHOST";
ConnectionPool connections = null;
try {
connections = ConnectionPoolFactory.getInstance(serverName);
} catch (ConnectionException e) {
e.printStackTrace();
return;
}

// specify the repository to use
// alternatively, a repository identifier can be obtain from the GetMountedRepositoryListCommand
String repositoryName = "INQDemo";
String dbmsName = "localhost";
RepositoryIdentifier reposId =
new RepositoryIdentifier(repositoryName, dbmsName, DBMSType.ORACLE);

// get list of available regions for the repository
GetRepositoryRegionListCommand regionListCommand =
new GetRepositoryRegionListCommand(connections);
regionListCommand.setRepositoryIdentifier(reposId);
try {
regionListCommand.execute();
} catch (CommandException e) {
e.printStackTrace();
return;
}
RegionProperties[] regions = regionListCommand.getRegions();

// create a user session
CreateUserSessionCommand sessionCommand =
new CreateUserSessionCommand(connections);
sessionCommand.setRepositoryIdentifier(reposId);
sessionCommand.setDataRegion(regions[0]); // use the first region
try {
sessionCommand.execute();
} catch (CommandException e) {
e.printStackTrace();
return;
}
String sessionId = sessionCommand.getUserSession();

// authenticate the user session
String userName = "admin";
String userPassword = "admin";
AuthenticateUserSessionCommand authCommand =
new AuthenticateUserSessionCommand(connections);
authCommand.setSession(sessionId);
authCommand.setUserName(userName);
authCommand.setUserPassword(userPassword);
try {
authCommand.execute();
} catch (CommandException e) {
e.printStackTrace();
return;
}

// the main table, hard-coded
TableId mainTableId = new TableId(1);

// Get the list of validations

RetrieveValidationsCommand objRtvVldCmd =
new RetrieveValidationsCommand(connections);
// set the user session
objRtvVldCmd.setSession(sessionId);
// get validation for the following tables.
objRtvVldCmd.setTableId(mainTableId);

try {
objRtvVldCmd.execute();

} catch (CommandException e) {
e.printStackTrace();
return;
}

ValidationPropertiesResult objVldPropRslt =
objRtvVldCmd.getValidationPropertiesResult();

ValidationProperties[] validations = objVldPropRslt.getValidations();


//disply --> Validation ID | error/warning message | Validation Name
for (int i = 0; i < validations.length; i++) {

System.out.println(
validations[i].getId()
+ " | "
+ validations[i].getMessage()
+ " | "
+ validations[i].getName());
}

}
}

Vijendra Singh Bhanot is a certified XI Consultant


SAP MDM Training
SAP MDM Training

SAP NetWeaver MDM Java API - What's new in SP06 Richard LeBlanc

SAP NetWeaver MDM Java API - What's new in SP06 Richard LeBlanc

Since MDM SP6 Patch1 was recently released for all customers, i thought it would be a good idea to point you to some resources that describe the new features that were introduced in the MDM Java API.

The first one is a Know How Network Call (KHNC) that was given back in December. The presentation and the recording can be found here.

The second one is the How To Use the MDM Java API for MDM SP06 Patch 1 how to guide. It contains code samples to perform all kinds of tasks in MDM e.g. search, insert, update, delete, check-out/check-in, etc... and it uses some of the new features that were introduced in SP06 Patch1 so you'll be able to run these code samples and see for yourself how it works!

Richard LeBlanc is a Senior Consultant for SAP and a member or the SAP NetWeaver Regional Implementation Group(RIG).

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.

Using MDM WEB UI for tracking changes with Oracle Faycal CHRAIBI

The MDM Change tracking feature allows you to monitor any modification made to your master data repository and get useful information regarding this alteration such as the old value, the person who made the change or the modification date.

Although the activation of this feature is made through the MDM console, you will need to deploy the MDM WEB UI (delivered as a portal content) in order to visualize these information.

Unlike other portal contents, the Change tracking UI queries the database in order to get the information. The MDM RKT documents contains an excellent how-to deploy and configure this webdynpro but it doesn't cover the Oracle implementation which requires a specific configuration for the JDBC connector.

Make sure you have the latest support package of MDM (MDM 5.5 SP05 at the time being, the SP06 will be soon released to public). You will also need an SAP Web Application Server with a Java stack.

If you want to use this within a portal iView, deploy the Portal software units on the J2EE engine (note 883948).

As a pre-requisite, download the Oracle JDBC driver from Oracle website. Note 867176 may help you choose the appropriate driver.

First of all, download the MDM WEB UI latest build from the SAP Marketplace Software Distribution Center. Navigate to Support Packages and Patches -> SAP NetWeaver -> SAP MDM -> SAP MDM 5.5 -> Portal Content -> OS Independent, download the .sca file and deploy it through SDM.

SDM

The next step will consist in configuring your JDBC connection.

Open Visual Administrator, navigate to Cluster -> Server ->Services -> JDBC Connector

JDBC Connector

Select drivers and click on the Create button.

JDBC Drivers

Name your driver (ex: Oracle_JDBC)

JDBC Name

Load the JDBC driver file you had downloaded

Load JDBC driver

You should then see your new driver in the list

Drivers list

Select then DataSources, create a new datasource.

Provide an application name (this one should be unique), create an alias for this datasource (it will be used later in the webdynpro configuration).

Datasource name

Fill the information according to your database settings.

Database settings

Click on the "Additional" tab and fill these information :

  • applicationName: this can be set to any name as long as it hasn't been used previously.

  • databaseName: this needs to be set to _Z000. In our case, the repository is called CATALOGRECETTE. You may find its name thanks to the following SQL query: SELECT table_name from all_tables where table_name LIKE ‘%Z000';

  • user: this should be set to the owner of your A2i_CM_History table (this where MDM stores the change tracking information). You may get the owner name through the SQL query: SELECT owner from all_tables where table_name = ‘A2i_CM_History';

  • password: this is your user's password for Oracle

  • portNumber: fill it according to your tnsnames or listener configuration.

  • serverName: refers to the host of the Oracle instance

  • url: this is the connection string that will be used by the JDBC driver to connect to Oracle. It is of form jdbc:oracle:thin:@::.

Additional properties

You may keep the default information for connection pooling.

Connection pooling

And select "Vendor SQL" for the SQL engine.

SQL Engine

Further information, on JDBC configuration, can be found on the SAP NetWeaver Library at the following address: http://help.sap.com/saphelp_nw70/helpdata/en/ab/082484173ae045ab8dad8a41d33da3/frameset.htm

Make sure you have enabled tracking changes in the MDM console (Repository -> Admin -> Change Tracking), and make few changes to your master data in order to have few entries in your A2i_CM_History table.

Enable change tracking

Access your webdynpro through http://:/webdynpro/dispatcher/sap.com/tc~mdm~changetracker/MdmChangeTracker&jdbcAlias=>

In our case the Alias was : CATALOGRECETTE.

You may refer to the MDM Tracking changes RKT (available under Enhanced Generic Capabilities) which provides information on how to use this webdynpro with SAP MDM Data Manager or within an iView.

Faycal CHRAIBI is a NetWeaver Technical Architect at SAP and has been dealing with SOA and Enterprise SOA for a few years. He is highly interested by end to end process integration, agility and efficient model driven architectures.




Using MDM WEB UI for tracking changes with Oracle
Faycal CHRAIBI

Enhancements of SAP NetWeaver MDM 5.5 Support Package 6 Markus Ganse

Enhancements of SAP NetWeaver MDM 5.5 Support Package 6
Markus Ganse

Now that patch 1 of SAP NetWeaver MDM 5.5 Support Package 6 has been released, the latest MDM edition is now available for customers at the SAP Download Center as specified in SAP Note 1135699. Additional information on the scope of Support Package 6 is provided in this presentation.

Patch 1 also delivers major enhancements in the area of print publishing with the MDM Publisher. To get insight in the novelties included in the MDM Publisher, watch this recorded expert session (requires WebEx Player 2.7).

Best regards,

Markus

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


Enhancements of SAP NetWeaver MDM 5.5 Support Package 6
Markus Ganse

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

MDM - Road Ahead Ketan Phanse

MDM - Road Ahead
Ketan Phanse

The road ahead for MDM seems bright and shiny... atleast as per a recent survey published by MDM Institute!http://www.tcdii.com/0809milestonesonmdmroadmap.html

So as SAP MDM continues to be rated as one of the most valued SAP skills, MDM's market would continue to mature and grow in 2008-09. What does that mean for all of us?

image
  • As more verticals/industries would move into MDM we will see more niche master data objects being mastered. Some of them can be Patients for Healthcare, Well for Oil & Gas, MRO for Manufacturing, Fixed Assets for Service industry etc. This would mean that the limited repositories provided by SAP would not be sufficient. More functional knowledge and expertise would be required to model such niche repositories.
  • One of the strong business case for MDM is M&A and in 2007-08 we saw lot of M&A within the MDM space itself! The SAP-BO, Microsoft-Siperian, Oracle-Cognos etc would enhance the functionalities of these core MDM products. This means a fast continuous skills upgrade for us and to keep pace with the technology. It started with SAP ERP, then to BI, SRM and now Business Objects. To learn all these new technologies as they begin to integrate with SAP MDM would be a task we all need to be upto for.
  • As mentioned in the roadmap, throughout 2009-10, skill shortages will greatly inflame project costs as demand for data stewards, enterprise data architects, & individuals with data governance experience outstrip market supply. Hence SAP MDM Consultants on the SI side must try to build an identity for themselves on their skill set and experience.

These are some of the learning’s/outlooks we must look forward in MDM trends in up-coming years. The roadmap also throws light on SOA, data governance for MDM etc. Given all this speculation & competition, one can hope that SAP MDM continues to mature and out-pace and out-perform its competitors in technology, capability and functionalities!

Ketan Phanse is a SAP MDM Business Analyst in Wipro Technologies

MDM - Road Ahead
Ketan Phanse

Upgrade MDM on Discovery System to SP6 Markus Gerber

Upgrade MDM on Discovery System to SP6
Markus Gerber

The Discovery System gives you a great opportunity to get in touch with enterprise SOA. To use the latest software, the one on the Discovery System needs to be updated. For MDM, it is not a big deal doing so.

The easiest way to upgrade your MDM installation is following the SAP NetWeaver MDM 5.5 SP6 Upgrade Guide. The most important information are in chapter 4 (Preparation) and chapter 5 (Upgrade Process). If you only use the Out-of-the-Box demonstrations from the Discovery System, there is no need to adapt the API Calls. If you already have own scenarios on the system, be sure to check before the upgrade if any API Calls need to b e adjusted.

After upgrading the MDM Server as described in the Upgrade Guide, you should upgrade the MDM Portal content as well. Download and deploy on the J2EE server the following components:

  • JavaAPI
    MDM 5.5 SP06 Java API Patch 2 Hotfix 6
  • WebUI (Change Tracker App)
    MDM 5.5 SP06 Web UI Patch 2 Hotfix 5
  • Web Services
    MDM 5.5 SP06 Web Services Patch 2
  • Portal Content (iViews, ...)
    MDM 5.5 SP06 Application Patch 2 Hotfix 6
    MDM 5.5 SP06 Technology Patch 2 Hotfix 6

Be sure to restart the J2EE server thereafter, otherwise some components won't be activated.

After the MDM upgrade to SP6, check that all the scenarios are working like they were before.

Markus Gerber is a Business Technology Consultant at SAP Switzerland.


Upgrade MDM on Discovery System to SP6
Markus Gerber

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

OS/DB Migration Naveen kumar.H

OS/DB Migration
Naveen kumar.H

You have a SAP NW04 system running in your landscape with SP19, and suddenly there is a request from your manager that you need to set up one more system with the same Release and SP, as you need it for some training purpose within 2 hrs. You are perplexed!! You know that installing the systems and patching it would take at least 4-5 hrs depending your hardware, what else can you do?


SAP has an answer for these kind of situation, to be specific its more than the above scenario.SYSTEM COPY or OS/DB migration is the solution for these kind of situations, not only these , may be you have to install it on other OS/DB combinations, you can just do it within 1-2 hrs. Lets us discover what the various options that are provided by SAP to make this Migration.


To begin with, lets us be clear with some of the terminologies of system Copy.

Source system
The SAP system containing the original database is called as source system.


Target system
The system to which the database is to be imported is called as Target system


Homogeneous system copy
During the system copy if you use the same operating system and database platform in source as well as target system is called Homogeneous system copy.


Heterogeneous system copy
During the system copy if you change either the database or the operating system or both of them in the target system as compared to source,such kind of system copy is called Heterogeneous system copy.


Export CD
When you perform a system copy on Source system, you will be prompted to give the location of the folder where the SAPINST is going to dump the database and the SDMkit.jar file. You manually create this empty folder and after successful system copy you find the database and SDM archived in this folder.You have to manually copy this folder ( now referred as Export CD to the desired location ) and then start installing on to the target system. The SAPINST would prompt you to enter the location of the export CD, and you would provide the necessary path where you have dumped this CD.


NOTE : SAP strongly recommends that you only perform OS /DB migration only when you have a strong knowledge about OS/DB and other aspects. Perform heterogeneous system copy only if you are a certified SAP consultant.


You can find all the related documents on OS/DB migration in the following location

http://service.sap.com/systemcopy


First of all let me start of with NW04 OS/DB migration. I will be concentrating more on AS-JAVA OS/DB migration.
SAP provides 2 different procedures of system copy.

Data base specific system copy

This procedure can be used in both homogeneous and heterogeneous system copy scenarios. What does this exactly mean is that you have to separately backup the Database , and then the SAPINST will only archive the Sdmkit.jar only. You have to manually restore the database on the target system and the SAPINST will only restore the SDM. To elucidate,
Let us assume that you have to perform a system copy on system that is running on WINDOWS and SAPDB. First of all using SAPDB manager you take the database backup of the instance and then run the SAPINST. SAPINST is only going to archive the SDM.
Now if the target system also WINDOWS and SAPDB then you can restore the Database and the SAPINST would restore the SDM. But if the target system is of the combination WINDOWS and SQL, I am afraid that the Database cannot be restored. So the possible solution is Data base Independent system copy.



Data base independent system copy

This procedure is used only in heterogeneous system copy scenarios. From the above scenario it is clear that, if the database is changed and if you had performed Data base specific system copy you cannot restore the database. Hence SAP suggests that use this procedure where, the database is archived immaterial to the type of the database.
If you have your Source system on WINDOWS ,SAPDB and you choose this Data base independent system copy, you need not perform Backup , instead SAPINST using the methods of Jload and R3 load would archive the database and also the SDM and hence even though your target systems is WINDOWS-ORACLE or LINUX-ORACLE , no matter what you can perform your OS/DB migration.


Before you start executing the OS / DB migration, Check the compatibility of the source and the target system, You can find the Matrix in the link below

http://help.sap.com/saphelp_erp2005vp/helpdata/en/21/692225b246b24f9202cb4433b5d691/frameset.htm


There is a Slight difference in executing NW04 system copy and NW04s system copy. You can only execute NW04 system copy by executing the SAPINST with an additional parameter. i.e.

./sapinst product_cp.catalog


Kindly refer to the system copy guide for more information.

SAP insists you to use the Patch DVD’s fo NW04 system copy rather than normal SP9 DVD”s.


When you are performing a Heterogeneous system copy, you would be prompted to enter the Migration key. In order to get the key, kindly raise a customer message under BC-INS and provide the details of Source system like OS / DB and also the details of the target system and also the SOURCE.PROPERTIES file that is created when you create an export CD.


When you want to perform a NW04s system copy, you just have to execute the SAPINST, preferably choose the latest SR2 DVD’s.


Now let me discuss some of the known bugs during system copy and the related CSN and Notes for the same.


To start with, Before performing NW04 system copy there is a note that mentions about the pre-requisites for it. Kindly refer to Note 785848 and 711093. You can avoid many errors by referring to these notes. Believe me!!!


One common error while executing the NW04 system copy on AS-JAVA + AS-EP using NW04 SP9 DVD’s is “Portal version not found”. This is because the SAPINST is looking for the version in some folder structure where the version.txt is not at all available. So you have to manually copy it from different folder to the desired one. Kindly refer to the Note 847491.


During NW04 homogeneous system copy using SP9 DVD’s the SAPINST will prompt the migration key!! This is also a bug as the migration key is only needed in case of heterogeneous system copy. Hence SAP insists to use PATCH DVD’s where they have fixed most of the bugs.


If you are executing the NW04 system copy of portal components using SP9 DVD’s, you would encounter some errors while installing it on target system. The common error would during SDM installation step, The sapinst would error out at this step. Kindly refer to the Note 755132.


After successful Installation on target system, the visual administrator does not come up. Refer to the Note 937708.


This one is one of the most interesting, The Java bug, After successful installation on target system, the server0 node does not come up. The node keeps fluctuating between starting and starting framework. You feel frustrated, Don’t worry refer to this CSN message 1458040 2005, or you can refer to the link Sun’s bug .

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=2121269



So these are the common bugs and fixes that were encountered, Hope this blog would solve most of your problems during OS/DB migration.

Naveen kumar.H is a budding Netweaver XI Technology consultant

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