Overview
LSMW
是导入数据的一种工具,最大的好处就在于它的灵活性,举一个例子来说
,different material type have different field in the master. For one field , some field is suppressed and the other is mandatory. But if you want use one single format to import all fields no matter what the material type is ,
batch input 和
catt都会出错,因为他们都只能根据制定好的画面来输入,如果你导入的数据没有这个值,那就会
出错,我想这个观点你们都能理解的,那么怎么才能把数据导入呢?而不需要另外再创建更多的不同情况的
catt和
batch input,那就是
LSMW.如:在某一个字段上进行编程,代码如下(这段代码是具有通用性的,你们只要在用的时候把字段名改一下就可以了:
IF NOT LINE_ITEM-MWSKZ IS INITIAL.
BBSEG-MWSKZ = LINE_ITEM-MWSKZ.
ENDIF.这句话的意思是:如果这个字段在我输入的文件中没有出现,那么就不要考虑导入这个字段。举一个财务凭证的例子。事务代码:
fb01输入一张财务凭证。
Debit: 10010100 ---100 现金科目 ,这个科目在
screen layout 里只定义了显示profit center 字段而不是成本中心字段。
Credit:费用科目
55010101---这个科目只定义了cost center字段,而没有利润中心字段,这样的话,如果用batch input 录下来的其他类型的凭证,可能这两个字段都没有显示在输入凭证的画面,这样的话,如果用bi 或CATT就会报错,说这两个字段找不到。明白了么?
那下来再谈谈
LSMW的局限性:
局限在于,它只能导入那些固定类型的主数据,比如,
MATERIAL MASTER ,FINANCIAL DOCUMENT GL ACCOUNT 等等,如果你自己创建了一个ABAP程序,是用来输入自己的一种主数据,那他就不能实现。不过我想,大多数我们需要导入
的主数据已经被包含在这里边了。
![]()
的就可以了。
下面我就用图形的方式来
STEP BY STEP的教给大家如何操作。我还是用财务凭证来给大家说明吧,因为财务凭证的描述性比较强。所需要的导入的文件格式我放在另外的一个文件中,请参考。
| |||||
Initial Screen
Input description of the project , subproject and object
|
![]() ![]() ![]() | ||||
维护属性
Then…
Click “F8”
|
![]() | ||||
输入画面如图所示
请记住是LSMW每步都要用CHANGE的方式进去
然后SAVE.然后CLICK
![]() |
![]() | ||||
维护结构
每个导入的项目都需要有结构,每个结构代表一组有独立属性的值,如,DOCUMENT HEADER AND DOCUMENT LINE ITEM 应该放在不同的结构中,因为他们的属性值不同,因为HEADER每张凭证只有1个而每张凭证中的行项却又很多,所以应该分成两个结构,因为同一个TRANSACTION 如:FB01创建的时候至少有2个行项,却只能有1个凭证头,就象PO一样。但是系统如何识别1个凭证头对应几个(N个)行项呢?也就是说如何在一个事物代码中把1个凭证头和几个行项看多一个RECORD呢?所以我们在下面的创建字段的过程中要加入一个识别码,我把他叫做 HEADID和LineID并分别属于表头结构FDOC和行项结构LINE_ITEM,这里LINE_ITEM结构属于FDOC结构。
Then…
Click “F8”
|
![]() | ||||
输入画面如图所示
然后保存,结构看下图
|
![]() ![]() ![]() | ||||
显示结构
然后返回到总的维护画面去,每步都要保存
|
![]() | ||||
维护SOUCE FIELDS
CLICK “F8”进去。
|
![]() | ||||
维护字段
先看如何维护字段,这里有2种不同的维护字段,一种是自定义的,如,HEADID,我前面提到的,这个字段只是让系统去区别不同的结构,但SAP并没有这个字段,
2.一种是系统里已经有的字段,我就直接用它就可以,不过请记住,所有字段最好维护成CHAR类型的,不管它本身是什么类型的,但是长度一定要>=这个SAP的字段的长度,最好是等于(SE11可以看到表)
我用到的两个表:表头表BKPF,行项表BSEG,除自定义表之外,字段名都和原来的表的字段一样。
|
![]() ![]() | ||||
创建完后的结果
保存后退出到总参数维护画面.
|
![]() | ||||
维护结构关系
这个就是把我们创建的结构和SAP实际里的结构联系起来了,请选RELATIONSHIP来创建表间关系,这里因为我们只用到BBSEG和BBKPF表,其他表因为没有涉及的字段,所以没有分配给他们。
第一个SAP默认结构是一定要分配给你的最高级的结构的。这里就是FDOC.
这样讲可不可以?和?
![]()
分配完以后,保存退出
(后面的描述中,保存退出就是指退到维护参数的总画面。)
|
![]() | ||||
最重要的一步,字段MAPPING
所有重要的东西都在这一步,也是最难的一步,在这里,你要告诉系统,你自己的哪个字段对应SAP里的哪个字段,我前面所说的一点点小程序也是在这里使用的,目的是让系统这个傻瓜知道那些字段出现时表示有这个字段,哪些不出现表示没有这个字段。(大家看得懂我说的么?)
|
![]() | ||||
最重要的一步,字段MAPPING 2
在左边的表里找到,你自己的那些字段,然后点Source field 分配。还记得利润中心和成本中心么?就是前面我加的那段小程序,看右边,你先在左边的字段中(bbseg中)找到字段KOSTL,然后点SOURCE FIELD 分配自己的那个KOSTL给左边的那个字段,然后双击右边的CODE,或在图标里选RULE---ABAP CODE加入右图所示的代码。如果这个字段在每个行项里都会出现,那就不用代码拉!!然后你把你自己的所有字段都分配到左边的字段中,然后CHECK(在菜单里)以下,如果没有问题,那么恭喜你,你的LSMW基本已经成功了
|
![]() | ||||
显示MAPPING 结果
然后退出。
|
![]() |
默认值和转换规则
这个一般用不到的,如果你的EXCEL还算好的话,多输2个字是很简单的事情。我把它跳过了,大家如果有兴趣,可以自己去研究一下。
|
![]() |
标示文件路径和文件名
如果有多个结构的话,就象现在我们做的,就需要选DATA FOR SEVERAL STRUCTURE….
并且delimitor选tabulator.
否则就选data from single…
delimitor 选 No….
请大家记住,文件一定要是
.txt
的
完成后保存退出。
|
![]() |
分配文件
一般系统都可以自动帮你分配,只要点击一下就可以了。
|
![]() |
分配文件结果
完成后保存退出。
|
![]() |
读文件
就是从你自己的文件里把数据读出来。这个项目的格式我放在另一个文件的附件里。如果有错的话,请大家查找原因。如果没有问题就是下个操作显示一下读入的文件,看是否正确。
|
![]() |
显示读数据结果
|
![]() |
转换文件和显示转换数据
这是系统的工作,你所需要的只是执行一下。很简单,请大家自己看
|
|
最后一步,
因为我定义项目属性的时候选择是direct input 0000,所以这里程序选择RFBIBL00
|
![]() |
数据转换的画面看右边,如果成功的话,你用sm35将看不到任何的你的session,否则就是存在问题。
好了,结束了。有问题请问我
|
![]() |
个