LSMW Material master by BAPI method – Part 1
I would like to show how BAPI method is used to create and change material master.
As an example I use a real business case:
existing material masters need to be updated with new material descriptions and sales text
not all materials have a sales text view
Text needs to be maintained in German and English language, English text is identical to German text
Text is provided in a Excel spreadsheet
Annotation: Our material numbers are set as Lexicographical, no leading zeros
We have to use a certain path to store the .read and .conv files
The homepage of LSMW can be found here in SCN at http://scn.sap.com/docs/DOC-26158
In that document you can find the links to the general documentation in help.sap.com too:
LSMW is a workbench which makes use of several tools (Batch/Direct Input, BAPI, IDOC and batch input recorder) which existed long before LSMW was created and that still exist and can be used independently of LSMW, LSMW is basically a tool to map legacy data with SAP structures, exchange field values and to generate a program that supplies those import tools with the data.
Prepare your LSMW
Define your project, sub-project and object
Project, sub-project and object is a free definable hierarchy
The project is usually self-explaining, it is the name of your project. Keep in mind that all mapping rules are shared among all subprojects and objects within a project. This is a big advantage, however, if many persons work in the same LSMW project you can as well face some disadvantages. E.g. if somebody is in development and has a syntax error, then others in the same project are affected by this error too.
The subproject is a lower part of your project. It could be for example represent a module or sub-divide the project by responsibles.
The object is the lowermost part where you actually define the migration for a certain business object or a part of it.
My area is global master data, so I usually chose Master data as subproject and Material, vendor or customer as object.
In this example I am going to use SCN as project, material as subproject and texts as object.
SAP uses project, subproject and object name to build the file names for read and conv files.. Each field is 15 character long, the maximum length of the conversion file name is 45 characters. If you have to work with a certain path, then this path will occupy a part of the conv file name. Because of that, I recommend to make the names for project, subproject and object shorter than the maximum of 15 characters.
If you start with a new project, then you have to click the new document icon, you get a pop-up to enter project name and description.
You will have to do the same for Subproject and Object.
Next you get to the overview of all steps in LSMW. At this moment SAP will show more steps than you finally have to go through. What steps you have to perform depends on the import method you chose in step 1 Maintain object attributes. I highlighted the steps which are variable on the import method
Above the step overview you can see various buttons.
The button “Double click = ” can be used to set your preferred way to work, I prefer double click to go into change mode
With “numbering on ” you get those numbers in front of the steps. This can make communication easier, but only if both are working with the same settings, because the numbers are not fix to the text next to it, they are just number to the positions in the overview
The button “User menu” allows you to add hidden steps to the LSMW steps (and causes renumbering to the shown entries)
As you can see in the pop-up there are some interesting options like “Display Read Program” and “Display Conversion Program” which can be enabled if you need to debug in case the programs do not work like you expect.
The steps “Generate Read Program” and “Generate Conversion Program” are not really needed, because this step is automatically carried out with the next visible step below them.
Often neglected is the option to check the converted data against customizing, which means you could find errors (e.g. missing customizing transports, wrong mapping rules) without the need to post your data.
Prepare your Field mapping and conversion rules
After executing step 5 Field mapping and conversion rules you will see the mapping based on the SAP given settings. I rarely saw that professionals can work with the presetting given by SAP.
You can change this setting from menu Extras > Layout. You get then a pop-up to define the layout
I prefer and recommend to set each field in the layout active
Here are some examples how the layout looks like depending on the settings made.
with technical fields active:
same section technical fields inactive:
With initial fields (fields that do not have a mapping)
And the same section without initial fields:
With this setting you will not even know that there are more fields in the import structure.
The next screen shot shows the same section code inactive (compare it with the screen shot above)
You do not see what values the constants have and you can’t see the ABAP coding for the Move-statement.
The next screenshot shows the appearance with inactive processing time (BEGIN_OF_RECORD; END_OF_RECORD; compare with screenshot above)
the following screen shot is made with “Global Data Definitions” set to inactive (please compare with screenshot “technical fields active” further above:
the very first entry __GLOBAL_DATA___ is gone now.
Prepare for IDOC Import method
if you use IDOC and BAPI import method then you need to define Ports and partner profiles like you have to do it when you get IDOCs from an external system.
In the initial screen of LSMW, where you entered the project name chose from menu Settings > IDOC Inbound processing
in the next screen you have to enter the File port name, the partner type US (user) and the partner number and then you click Activate Inbound processing.
This has to be done in any system where you use this LSMW project.
File port and partner number are free definable names, and in many companies set up by the Basis team. So you would only need to enter those names and Activate IDoc Inbound processing,
However, if you have to do it yourself, then you need to make use of the buttons next to those fields.
Maintain ports is actually nothing else than transaction WE21
In my example I had used the name DATEI (which is nothing else than the German word for FILE)
After clicking Maintain ports you get the screen shown below. Put the cursor onto the file folder on the left, then click the create icon
Enter a description, set the radio button for the IDOC record type (most probably the 4.x type nowadays), make the setting if you use Unicode format. then set the radio button to physical directory, enter a directory and a function module in tab Outbound file then do an Access test to make sure you have access to this directory. These are the minimum settings needed for a Port used in LSMW.
The button Maintain partner numbers is actually transaction WE20
In my example I named it LSMW
After clicking this button you are taken to the Partner profiles. Click create button. Enter the partner number (here LSMW), partner type US, type US for user, Agent: you user-ID and your language.
Then define the Inbound parameters, Click the “insert line” icon below the table.
At this place you add the IDOC message type that will be used as your import method. LSMW can create this entry itself if you have activated the IDOC inbound processing before you defined the first step of your LSMW. But there is no harm if you add it manually, which usually has to be done in Test and production systems as you do not carry out step 1 anymore.
For this example we use message type MATMAS_MASS_BAPI (which is basically the same BAPI that is used in MM17 Material master mass maintenance)
Enter the process code with help of F4 (in this case it is BAPI, but it may vary by message type)
Activate “Cancel Processing after Syntax error” and set the radio button to Trigger by background program, otherwise your IDOCs get posted immediately while creating.
This blog will continue in LSMW Material master by BAPI method – Part 2