Data Modelling and Designing in SAP MDM

Data Modeling and Designing in MDM:

Data Modeling is like organizing files in file cabinet. Effective organizing ensures effective performance.

data modelling and database design

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

Handling Multiple Languages in SAP MDM Ankur Ramkumar Goel

Handling Multiple Languages in SAP MDM
Ankur Ramkumar Goel


Handling Multiple Languages in SAP MDM

Presenting the 4 part series on Multi-lingual Functionality of SAP MDM since most people are unaware of MDM's multi-lingual capabilities: a necessity for many of today's globalized companies operating in many locations worldwide, most with their own local language. Not only master data but metadata is also supported in multiple languages. This series in Multilingual capability of SAP MDM strives to understand that how SAP MDM can support multi-lingual master data requirements of all users in an organization.

The series is divided into 4 parts from Console settings, Import Manager, Data Manager and Syndicator.





Part 1 emphasize the console setting for multilingual data in SAP MDM. It highlights the making a multilingual repository, adding/removing/change primary and secondary languages, multilingual lookup data, archiving and Importing/exporting multilingual repository etc.

Multiple Languages in MDM Part 1: Console Settings for Multilingual Master Data



Part 2 emphasize the Import Manager capability to import the multilingual data into SAP MDM. It highlights that how the data for multiple languages can be imported together or in different sessions according to requirements.

Multiple Languages in MDM Part 2: Importing Multilingual Master Data into MDM with Import Manager



Part 3 emphasize the Data Manager capabilities to manage the multilingual data. It highlights that how the data of multiple languages in main and lookup tables can be maintained and changed. It also describes that how data of multiple languages are compared, matched and merged and how multilingual validations are supported etc.

Multiple Languages in MDM Part 3: Managing Multilingual Master Data with Data Manager





Part 4 emphasize the multilingual capability of SAP MDM Syndicator. It highlights the possible ways and how we can achieve to send out the data to respective systems in landscape. It provides a step by step solution for syndicating the multiple languages data.

Multiple Languages in MDM Part 4: Syndicating Data in Multiple Languages









Ankur Ramkumar Goel has over 7 years of SAP experience in ABAP, BI and MDM with implementations, Roll outs, Maintenance, due diligence and strategy projects across Europe, USA and APJ, and has been instrumental in MDM for 3 years.

Getting Informed on SAP NetWeaver MDM 7.1 Documentation Updates Markus Ganser

Getting Informed on SAP NetWeaver MDM 7.1 Documentation Updates
Markus Ganser

To provide news on SAP NetWeaver MDM documentation updates in a timely manner, the MDM documentation team has provided a dedicated space in the MDM documentation center at SAP Service Marketplace for quite some time now (see SAP NetWeaver MDM 7.1 documentation updates, or SAP NetWeaver MDM 5.5 documentation updates).

To further streamline the publication channel for SAP NetWeaver MDM 7.1 documentation updates according to the MDM community on SDN, the MDM documentation team has decided to open a specific SDN thread in addition to the specified space at SAP Service Marketplace, and is commited to use the SDN discussion forum to continuously post information about docu updates and new documentation. So it's up to you to select the channel that suits you best.

Simply watch this new SDN thread, or include it in your favourite links if you like to stay tuned on what's going on in SAP NetWeaver MDM 7.1 documentation.

Tribute goes to the MDM documentation team.

Regards,

Markus

SRM and MDM Episode #1: SRM-MDM Catalog v2.0 is generally available! David Marchand

SRM and MDM Episode #1: SRM-MDM Catalog v2.0 is generally available! David Marchand


Hi all,

For the first episode of the inaugural "SRM and MDM" series, I like to share a good news: SRM-MDM Catalog v2.0 is made available today (actually on August 20th 2007) to all SAP customers (SRM, ERP) running procurement scenarios.

This means any customer who has the right license of SRM or ERP willing to upgrade to SRM-MDM Catalog v2.0 can do it today. The software is available for download on the SAP Service Marketplace: http://service.sap.com/swdc then browse to Download / Installations and Upgrades / Entry by Application Group / Installations and Upgrades / SAP Application Components / SAP SRM Catalog / SRM-MDM CATALOG / SRM-MDM CATALOG 2.0

Before you download the software, you may wish to learn what's new in it and which issues it could solve. But as the Zip file is 678 Mb big, I would suggest to launch the download process anyway and read the rest of this post in the meantime....

There are so many good reasons to adopt SRM-MDM Catalog v2.0 that I run the risk to turn this post into a boring marketing white paper. So I'll just focus on the top 10 reasons:

10- Robust Netweaver MDM Core: v2.0 SP1 relies on MDM 5.5 SP5, which has been proven to be robust and stable

9- Easy migration from v1.0 made possible by a built-in repository converter: check for more details on the dedicated Component Upgrade Guide located on http://service.sap.com/instguides / Installations and Upgrade Guides / SAP Business Suite Applications / SAP SRM / Using SAP SRM Server 6.0. By the way, at the same location, find a number of very interesting documents such as the functional documentation or the business scenario description.

8- Support of relationships between catalog items: Bill of Materials, Sales Kits, Substitutes and Related Items can be modeled now. This is an important step in the direction of direct material management and support of more advanced procurement processes. The concept is to bundle items together, either as parent - children (for BOM and kits) or as siblings (for substitutes and related items). The spectrum of different variants proposed covers the most important business use cases found in procurement scenarios.

7- End-User interface has been upgraded: not only to support the additional functionalities, but also to propose better usability in the search experience.

6- All in one screen: the initial page of the search engine user interface has been divided in 3 parts: Control panel with folders and keyword search / category browsing with a pick list / results with found items. The results of the search (ie: the list of items) are now displayed on the first screen. No need of an additional click now.

5- New Context display of search results: in addition to the traditional list of items in a form of a table, a new display is possible. Items are presented with an image on the left side and selected fields listed next to it.

4- More flexible configuration of the user interface: many changes to support more flexibility have been implemented. As an example, the Open Catalog Interface mapping can be configured per user now, as opposed to per repository in v1.0

3- Shopping Lists: Each user logging to the search engine can create, edit and share shopping lists. A shopping list is a static list of items which are purchased on a regular basis. Using shopping list avoids repetitive search for the items again and again. On a side note, shopping lists are stored in the MDM server as masks, so that a content manager may create them on behalf of the end-users.

2- Catalog Exploring mode for search purpose only: End-user has the possibility to search and browse the catalog but will not be able to order any items.

1- Roadmap of functionalities to be delivered soon: With the v2.0 SP2 planned for the end of the year (mid December), we will deliver a couple of additional functionalities that I am sure you will like a lot:
- Connectivity to electronic forms: it will be possible to call an external electronic form by clicking on an item in the catalog (using the OCI). For example, by clicking on the item "business card", an e-form to configure that business card will be called. Once the user has completed the requested input fields on the e-form, the necessary information are sent back to the SRM-MDM Catalog shopping cart preview.
- Web-based approval cockpit: most of the workflow functions enabled on the MDM Data Manager will be put on a light web-based user interface. Approvers and power-users will not need to have the MDM Data Manager installed on their desktop anymore. They will be able to make decisions (approve, reject) online, just by using their internet Browser.

There will be more again coming up on the SP2 and with SP3 later next year. We will have the opportunity to discuss with more details.

With that, I like to end this first episode of the "SRM and MDM" saga. As always, I like to receive your feedback and suggestions.

The SRM team wishes you a successful implementation of SRM-MDM Catalog v2.0. As we speak, there are 12 customers live with SRM-MDM Catalog. If we can count 20 by the end of the year, I will earn a full bonus. So thanks a lot for your support J

All the best

David.

David Marchand Solution Management for Procurement

How to use the test environment of the MDM Enrichment Controller Andreas Seifried

How to use the test environment of the MDM Enrichment Controller
Andreas Seifried

The MDM Enrichment Controller makes use of 3rd party or custom developed adapters to integrate information from external services into an MDM master data repository.

Through the administrative user interface of the controller, it is possible to test such adapters and their connectivity to the external service. This offers the advantage to

* Perform initial smoke tests of a recently installed 3rd party adapter based on standardized test data, which may be delivered by the provider.
* Test the adapter during development including and its communication with the controller and the external service without the actual need of having the complete MDM stack installed on the developer's workplace
* Manually test the availability of the external service in production without touching live data in the MDM repository

Besides this test environment, SAP additionally delivers a simulation environment that consists of

* An MDM repository containing example workflows and prepared configuration settings
* Sample adapters for testing and education
* Source code of the adapter implementations
* XML documents and schemas
* MDM import and syndication maps

You can use the simulation environment to study the complete request and response cycle form end to end, including the call to a Web service. Since the source code of the adapters is also included, you can use it for education or as a starting point for your own adapter development.

The remainder of this blog briefly explains how to setup the simulation environment and use the test environment with the contained adapters. It is assumed, that you already have deployed the MDM Enrichment Controller on the application server.

The complete procedure is described in the documentation on the SAP Help Portal at http://help.sap.com/saphelp_mdm550/helpdata/en/index.htm
-> MDM Enrichment Architecture
-> Configuring the MDM Enrichment Architecture
-> Setting up an Enrichment Simulation Environment.

Since the sample adapters and the respective Web service are deployed together with the MDM Enrichment Controller, there are basically only two things to do in order to use them in the test environment:

* Using the J2EE Visual Administrator, configure the Web service destination to point to the server where the MDM test Web service was deployed. This is typically the local server or "localhost".




































* Include the reference to the adapters in the configuration file of the MDM Enrichment Controller. Since this can only be done within a configuration section of a repository, it makes sense to use the values for the delivery example repository, even if you do not have MDM installed right now. In such a case just use arbitrary settings for the connection details to the MDM server, such as localhost for the host names as in the example below. (Note: Most of it can be copied out of the documentation.)

Destination service in visual admin

Both steps are described in the previously mentioned documentation.

Now you are ready to access the test environment via the admin UI of the MDM Enrichment Controller. See my other blog on the MDM Enrichment Controller Admin UI on how to open this.

MDM Enrichment Controller Admin UI

The link Test Enrichment Provider System brings you to the test environment, where you can now select out of the example adapters (AddressEnrichmentSimulator on the screenshot below) and select an XML file that is fed into the adapter. Together with the MDM Enrichment Controller, SAP ships a file named EC_Simulator.zip. In this file you find XML schemas and example files that are accepted by the example adapters. For instance, you need to feed the file AddressSimulatorOutSample.xml into the chosen adapter as shown in the screenshot.

MDM Enrichment Controller - Test Environment

Content of the sample XML:



13

Bob
Young


GBR
LONDON
23
Glendale Avenue



14

Bob
Young


ZZZ
LONDON
23
Glendale Avenue




After clicking on Test, you can download the XML response of the adapter.

Test result

Content of the response:



13

Bob
Young


GBR
LONDON
23
Glendale Avenue (simulator reply)
DEMO 99

true


14

Bob
Young


ZZZ
LONDON
23
Glendale Avenue

false
ZZZ Country not supported



As you see it is possible to perform this test without initiating the enrichment process from the MDM Data Manager and even without having actually the MDM Server installed. This makes the test environment very valuable during the development phase of an enrichment adapter.

SAP TechEd '07: Come see me speak!

If you are interested in more details about the MDM Enrichment Architecture: I will speak at SAP TechEd in Munich. You can attend there my session MDM350, which explains in detail how to develop and integrate an enrichment adapter.

Cheers,
Andreas

Andreas Seifried is a Product Manager for SAP NetWeaver Master Data Management.


How to use the test environment of the MDM Enrichment Controller
Andreas Seifried

Calculating Dates in MDM-Kristin Patterson

Calculating Dates in MDM
Kristin Patterson


Hi, MDM Users,

I have been asked many a times about the formulas used in the MDM Expression Editors. There are examples throughout the MDM Data Manager Guides but even with these it takes some interpretation to figure out what is happening behind the scenes. As there are millions of expressions, I decided to write an article using just Dates as this seems to be a common field used within MDM and the expression editor.

Calculating Dates in SAP NetWeaver MDM

Even though the examples in the article are related to Dates, the formulas can be applied to other fields. Also, these formulas are used in Calculated Fields, Assignments, and Validations. These being important components of the MDM Workflow.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b025fab3-b3e9-2910-d999-a27b7a075a16
I hope this leads you to the exploration of even more MDM formulas.

Kristin Patterson

Kristin Patterson is a member of the SAP NetWeaver Solution Office.

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.

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.

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

Watch Master Data Management in Action Markus Ganser

Watch Master Data Management in Action
Markus Ganser

URL: https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b0f1f135-0015-2b10-5e83-acca118e17aa


Watch this new flashbook on master data management to see how MDM promotes trust in enterprise information by extracting, consolidating, and enriching supplier master data from a remote system, that after this quality treatment is sent back to the source. Data enrichment, that is, address validation, is done using Business Objects services.

Additionally, the following presentations about MDM have been updated:

Stay up-to-date with MDM.

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


Watch Master Data Management in Action
Markus Ganser

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

English Book on Master Data Management Available Markus Ganser

English Book on Master Data Management Available
Markus Ganser


In the MDM discussion forum on SDN people have been continuously asking for additional information on SAP NetWeaver Master Data Management. The good news is that SAP Press has now released the English version of the SAP NetWeaver MDM book.

The book describes the "MDM technology, architecture, and solution landscape", provides a " detailed technical description of all three usage scenarios", and "includes highly-detailed, proven guidance from real-life customer examples".

Ordering from the US:
SAP NetWeaver Master Data Management
Ordering from Europe:
SAP NetWeaver Master Data Management

Best regards,

Markus

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