壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册
查看: 3878|回复: 17

[MM] [分享知识 原创连载]SAP MM相关(包括定价过程,MM与FI/CO集成,MM与SD衔接,MM增强)

[复制链接]
发表于 2013/7/16 09:33:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
个人简介:主要从事SAP-MM(物料管理)模块的运维和实施(内部)
连载主题:SAP MM模块的相关内容(包括定价过程,MM与FI/CO集成,MM与SD衔接,MM常用增强)
发布计划:每周将自己对MM知识点的理解写在SAP版块
更新周期:每周
本连载亮点:
1、SAP-MM(物料管理)模块
2、和其它模块的集成
3、透过系统了解企业相关流程,通过流程改善企业管理

本帖被以下淘专辑推荐:

发表于 2013/7/16 14:39:50 | 显示全部楼层
个人简介:主要从事SAP-MM(物料管理)模块的运维和实施(内部)
连载主题:SAP MM模块的相关内容,包括定价过程,MM与FI/CO集成,MM与SD衔接,MM常用增强(包括BADI)
发布计划:每周将自己对MM知识点的理解写在SAP版块
更新周期:每周
本连载亮点:
1、SAP-MM(物料管理)模块
2、和其它模块的集成
3、透过系统了解企业相关流程,通过流程改善企业管理
其他要说的话:希望这个版块越做越好!


纵横四海点评:采购及库存管理是供应链中一个重要的环节,企业运行过程中所需的资源无非是人、财、物和信息,而物资采购及库存管理正是为了保证企业运转所必需的物资。生产、设备维护、项目建设都需要物资采购来保证原材料供应,销售需要对成品进行库存管理,而这些正是MM模块的管理范畴。所以在SAP系统的六大模块中,PP, PM, PS, SD都与MM模块集成,并通过MM与FICO集成。可以说MM是几大模块的基础。学习该模块需要不断的积累知识,所以要能够将该模块融会贯通是不小的困难,将每天的知识积累都记录下来,可以让我们更快的成长;
发表于 2013/7/17 09:54:26 | 显示全部楼层
本连载为ERP100精品内容,于2013年7月17日荣登网站每日推荐连载,祝贺 @liaojunchaoMM ,壹佰网将始终如一的支持原创,支持优秀的内容;感谢 @liaojunchaoMM 同学的付出;
QQ图片20130717095455.jpg
 楼主| 发表于 2013/7/16 12:57:41 | 显示全部楼层
本帖最后由 liaojunchao 于 2013/7/16 14:22 编辑

MM定价过程
MM的定价过程非常灵活,可以说是MM的一个亮点,也是一个难点,通过查阅网络上的资料和自己测试,现把自己在企业中遇到的需求及解决办法记录下来。
定价逻辑:1.采购组织+供应商-->计算方案
                  2.计算方案--->条件类型
                  3.条件类型-->存取顺序-->条件表
我们知道,采购组织方案组+供应商方案组决定了采购订单的定价过程(计算方案).
<一>SPRO进入后台,物料管理—采购—条件—定义价格的确认流程。
1.定义采购组织方案组:
                1.jpg
2.定义供应商方案组:
          2.jpg
3.将上面定义的供应商方案组输入到供应商主数据的采购数据中,
          3.jpg
4. 这样我们得到一个定价过程:
          4.jpg
<二>当我们建采购订单时,输入供应商,采购组织,物料等,在行项目的条件标签页可以看到一些条件类型,这些条件类型是在哪里定义的呢?
我们点分析就知道了,原来这些条件类型是包含在我们前面看到的定价过程里:
SPRO—物料管理—采购—条件—定义价格确认流程—定义计算方案:
进去后选中我们第一步中看到的方案,双击控制数据:
5.jpg
     由上图知道,其实定价过程是由一系列的定价条件组成的, 比如:净价,运费,报关费等。其中:
     1.步骤—--用来标识条件类型在计算方案中的编号,有间隔,方便插入新的条件类型。
     2.计数—--同一步骤中有不同的条件类型,如上图中的ZPI2和PBXX.
     3.从….到表示从哪个步骤到哪个步骤求和.
     4.手工表示只能手工输入条件,需要的表示是必输条件。
     5. 统计表示该条件值不会改变计价方案中的其他值,但该选项对定价类别是基本价格的条件无效,该选项常常与定价类别是交货成本的条件配合使用,并且要把条件中控制数据2的应计项选中。应用举例:当下采购订单时,如果有额外的交货成本时,比如运输费,运输供应商与采购订单供应商不一致时,可以在定价方案中增加交货成本条件并在条件选择该项目。
     6.需求。可以在里面写一段代码,只有当需求满足时,才计算该条件。
     7.计算类型:即所谓的例程,可以用VOFM定义,后面例子会详细讲到

<三>得到条件类型后,以上图中的ZPI2为例,我们可以去
SPRO—物料管理—采购—条件—定义价格确认流程—定义条件类型中看看:
       6.jpg

    存取顺序:表示该条件类型在定价时到该存取顺序中的条件表中取数。(存取顺序中定义了很多表,取到值后,将对应的值赋给条件类型)
    1.定价等级标识该条件类型属于价格、税还是折扣及附加费中的哪一类。
    2.计算类型标识该条件类型是按数量还是按金额还是按百分比来计算。
    3.定价类别用来给条件类型分组。
    4.舍入规则,商业就是按四舍五入来计算,向上取整就是不管多大总是入,反之向下取整总。
    5.组定价:组定价主要和价格等级配合使用,就是采购单多个行项目数量加总取价。
     6.金额/百分比用来标识该条件类型是否能够在前端业务输入单价和价格单位。

<四>根据上面条件类型的存取顺序,就可以到存取顺序里的表取值,如果取到了,就将对应的值赋给条件。如下图中0002这个存取顺序,PB00这个条件类型就是用的这个存取顺序,当我们针对工厂创建了采购信息记录的时候,就会去A017这个表中去取值。并把值赋给PB00这个条件类型。 其中9开头的表为自定义的表。
    SPRO--物料管理--采购--条件--定义价格确认流程--定义存取顺序
      8.jpg
   
以上就是采购定价的过程,下面是实际业务中的需求及解决方案。
需求1:某集团下公司代码非常多,如果针对集团内的每个供应商(公司间交易)都建信息记录,工作量非常大,修改起来也不及时。
解决方法:通过了解,发现同物料组,同一个调出公司(供应商),同一个调入公司(收货公司)的物料价格一致,那么我们可以自己定义一个表,字段为:物料组 调出公司 调入公司 价格 价格单位。采购单的净价取自定义表价格。
步骤:
1.  VOFM 建立一个例程,需要ACCESS KEY.可以百度一下ACCESS KEY.
2.  SE11自定义表。
3.  SM30将数据导入,此处就是那个物料组 哪个供应商,哪个调入公司是多少价格。
4.  双击1里面的例程,加入代码,(代码按实际需求,此处需要一定的 ABAP基础)
    SELECT SINGLE NETPR KPEIN INTO (LWK_JJ,LWK_JGDW) FROM ZMMDBJ
    WHERE MATKL = LWK_EXTWG
    AND   BUKRS_DC = LWK_BUKRS  AND BUKRS_DR = KOMK-BUKRS .
    IF SY-SUBRC = 0.
    XKOMV-KBETR =  LWK_JJ .
    XKOMV-KPEIN =  LWK_JGDW.
    ENDIF.
    KOMK KOMP为定价时通讯结构.
5.激活第一步中定义的例程,此处非常容易遗漏。
6.将例程编号输入定价方案里计算类型(见图5)。那么采购单ZPI2这个条件类型的值将会取自定义表里的值。个人理解,例程的作用相当于对原有定价的修正。

定价过程非常灵活,可以说只要逻辑正确,都可以做到,比如同一个物料,同一个供应商,同一个收货公司,下单时可以根据采购订单绑定的销售订单的销售组织来定价。只不过要做增强。

以上内容由于时间和经验的原因,写得不一定正确,欢迎大家批评指正。

MM定价过程.docx

548.27 KB, 下载次数: 40, 下载积分: 努力值 -5 点

MM定价

发表于 2013/7/16 17:55:35 | 显示全部楼层
不错,期待下文,持续关注。。。。。。
发表于 2013/7/16 22:05:52 | 显示全部楼层
战友                   学习了
发表于 2013/7/17 06:35:01 | 显示全部楼层
非常佩服楼主 @liaojunchao 的细致精神,最开始的时候是上传的附件,为了让阅读者有更好的体验, @liaojunchao 同学将之前的文档转化为了网页版本提交上来,为了是让这个连载更有阅读性,感谢@liaojunchao 同学的付出;
发表于 2013/7/18 13:46:59 | 显示全部楼层
很好          学习了!
发表于 2013/7/26 10:22:14 | 显示全部楼层
很好   再学习了!!!
 楼主| 发表于 2013/7/26 12:36:09 | 显示全部楼层
本帖最后由 liaojunchao 于 2013/7/26 12:48 编辑
alex.zhan 发表于 2013/7/26 10:22
很好   再学习了!!!


MM自动过账
MM与FI的集成是非常重要的一个知识点,也是在项目实施和运维出现问题比较多的地方,首先要了解以下几点:
1. 评估级别(OX14)和评估范围。You define the valuation area by deciding at which level you want to valuate your stocks of materials. Your decision applies for all clients.
1.jpg
如果评估级别是工厂,此时评估范围 = 工厂,评估范围还可以分组(OMWD)
2.jpg
如上图,评估范围是工厂,那么我们可以将1200公司代码下的1201 1202 1299等工厂分到一个组里面,这样在配置自动过账的时候就只需要针对这个评估分组去做配置了。

2.物料主数据中会计视图中的评估类(Valuation Class).在自动过账这个环节中,评估类是一个至关重要的连接点.比如:成品(Finished Goods,),半成品(Semi Finished goods),原材料(Raw Material).

3.移动类型(Movement Type).什么是移动类型呢?在MM模块中所有的物料移动都涉及到移动类型,比如:采购订单收货101,生产订单发料261,报废551,销售出库601,库存初始化561.
移动类型可以用OMJJ配置。

4.价值串(Value String). Value string keys are for SAP internal usage. It is just a pointer to the transaction event key which is necessary for automatic account determination. 移动类型连接TE码通过OMJJ中的价值串。价值串定义了一系列的步骤优先顺序,每一个步骤都连接到不同的过账事务码,而这个顺序本身就称作价值串。价值串可以看作是一种记账的规则,为物料移动或者发票校验包含了一系列的科目分配特征。并且物料移动的科目确定实际上是通过分配给移动类型的记账价值串来确定。
3.jpg
输入OMJJ和移动类型,以101为例,如上图,值,表示库存价值更新,数,表示库存数量更新,S表示特殊库存标识,MVT表示移动标识,如采购订单收货,生产订单收货等,Cns是消耗标识,双击行项目,可以看到下图:
4.jpg
从上面可以看到,内部控制中有个价值串,即Value String,这个是SAP定死的,没办法自己定义,也无法更改。如何根据移动类型,价值数量更新,以及移动标识去决定价值串,也可以在T156S这个表中查寻到

5.TE码(transaction key).价值串中包含了所有这个移动类型可能用到的事务码。比如:存货记账:BSX. 单击图2中的价值串右边的放大镜,可以看到价值串中包含的TE码:
5.jpg
TE码中可以确定自动记账的科目。我们用OBYC这个事务码去配置这些TE码,以GBB这个Transaction KEY为例:首先我们要定义科目分配的RULE. 输入OBYC,双击GBB,单击上方的RULES:
6.jpg
从上图可以看到,科目将按General modification|Valuation modif.|Valuation class(一般修改 评估分组 评估类)三者结合给定会计科目,如你还需要让交易额在发生借方和贷方使用不同的会计科目,就要勾选Debit/Credit.

6.General modification.一般修改用来细分科目确定。
如TE码BSX,不管是采购入库,生产入库都只对应到一个存货科目,这时就不需要科目修改。但对于出库的TE码GBB,它需要对应到各种消耗类型,如工单发料,研发发料。

以生产订单发料为例:
OMJJ 输入261,双击科目分组:
8.jpg
1.S表示特殊库存SPECIAL.
2.值更新,数量更新,就是物料是否做数量管理和价值管理,可以在物料类型里定义。
3.MVT,移动标识,比如:生产订单收货。
4.CNS, 消耗标识。是否消耗,什么性质的消耗。
通过上面四个,得到一个价值串WA01,双击WA01,看到如下画面:
9.jpg
里面包含了很多TE码,(我们也可以通过查看T156W这个表得到上面的TE码)
回到上面的261生产订单发料,WA01这个价值串除了存货记账BSX这个TE码外 ,还有GBB等TE码,可以看到后面还有一个科目修改,就是所谓的GeneralModificationKey,这个东东是同MovemtType关联的,较常用的有:
AUF : 无Acct.Assignmt的PP/CO订单的收货和结算
BSA : 通过561/562做库存初始化的过帐科目
INV : 库存差异导致的收入和费用科目,一般为P+L科目
VAX/VAY: 销售订单的发货成本科目
VBO : 委托加工业务,提供给供应商的库存出货科目
VBR : 处理内部发货业务,如直接消耗到成本中心、资产或内部订单等
VKA : 基于Acct.Assignmt的销售订单业务,如BTO、MTO业务等
VKP : 基于Acct.Assignmt的项目业务,如BTP、MTP业务等
ZOB : 无PO收退货,如501/502
ZOF : 无PP订单收退货,如521/522
为什么要用到一般修改这个东东呢?
比如:成本中心领料和生产订单领料都要用到GBB这个事务,那么怎么样记到不同的科目呢?这时就要靠一般修改了。
也可以自己定义移动类型,设置自己定义的一般,并在GBB中指定科目。比如同样是成本中心领料,就可以自己定义一个移动类型,关联不同的GMK,记到不同的科目。
最后,回到OBYC,找到事务GBB,一般修改VBR,评估类,就得到了对应的科目。
10.jpg
所以整个自动过账的逻辑即:
1.  公司代码关联科目表,工厂得到评估分组。物料主数据得到评估类。
2.  不同的移动类型,是否价值数量更新,移动标识等得到价值串,价值串定义了一系列的步骤优先顺序,每一个步骤都连接到不同的TE码.
3.  根据TE码中定义的规则,如:评估分组+评估类+一般修改 ,就得到了自动过账的科目.

自动过账相关表:
T156系列的完全表格如下:
T156,Movement type,维护物料移动类型的抬头数据;
T156B,维护movement type的field selection string;
T156C,Stock type,如果不增加存货的类型(非限制、冻结、质检、退货之类);
T156F;
T156H;T156HT,Movement type Main text,主文本,也就是您执行MB1A/MB1B等所看到的移动类型的描述,区分语言版本;
T156K;
T156M,Quantity post string;
T156N,Next movement type;
T156Q;
T156S,关键表格,直接影响OMJJ中的update control项下的下半截internal control,value string和update without value string标识的显示值;
T156SC,直接影响OMJJ中update control项下的上半截内容;
T156SY,Post string Ref,update control中间有一个字段RefMvtType WM,这个字段的有关内容就是通过T156SY来体现的。如果您的X62的这个字段仍然是262,那就不必更改这个表了;反之,如果您的X62的这个字段改为X62之类,那就必须在T156SY中维护X62。
T156T,help texts,原来我也一直以为这个表作用于OMJJ的help texts,但事实并非如此,然而不管怎样仍然维护,分语言;
T157H,help texts,这才是OMJJ之help texts的来源;
T156V,不受Movement type之影响;
T156W,Value string;
T156X,决定OMJJ的account grouping的value string,然后value string再通过T156W确定transaction/event key和GBB项下的general modification key。
以上内容大部分参考互联网
发表于 2013/7/26 13:17:27 | 显示全部楼层
liaojunchao 发表于 2013/7/16 12:57
MM定价过程
MM的定价过程非常灵活,可以说是MM的一个亮点,也是一个难点,通过查阅网络上的资料和自己测试 ...

对于定价方案中的需求1,应该可以用参考采购组织解决。
发表于 2013/7/26 13:19:00 | 显示全部楼层
顶顶顶
留下脚印!学习学习!
 楼主| 发表于 2013/7/31 10:32:23 | 显示全部楼层
参考采购组织 ,不太好解决公司间调拨业务。
 楼主| 发表于 2013/8/7 09:41:02 | 显示全部楼层
本帖最后由 liaojunchao 于 2013/8/7 10:36 编辑
moziyou 发表于 2013/7/26 13:19
顶顶顶
留下脚印!学习学习!
MM与SD集成

在SAP系统中,MM与其他模块是高度集成的,其中与SD的集成有:
1.  创建销售订单时,行项目的部分数据来自MM的主数据。
2.  MRP和可用性检查也来自MM,也可以来自SD.
3.  参考销售订单创建外向交货单时,工厂数据,装运数据来自主数据。
4.  销售订单中的物料必须扩充到这个销售订单的销售范围。
5.  需求传递。
在实际的业务中,SD与MM的集成有:第三方订单(Third-Party Order Processing),跨公司调拨等.下面是这两种常见的业务在系统中的实现。
第三方订单:
简单的说,第三方订单就是A向B采购,B没有货可以销售给A,于是B找C采购了货,入到B公司仓库后再发货给A(单独采购订单)或者直接发给A(第三方项目)。
过程:
1.  A向B下达采购订单。
2.  B接到A客户的单后,在系统中建立销售订单。
3.  销售订单建立后,系统自动生成PR, 然后B根据这个PR向C供应商采购。
4.  C将货物直接发给A,B确认A收到货后,B在系统做虚拟收货 (CASE 1)
或者C发给B, B做实际入库后 再交给A(CASE 2)。
5.  B收到供应商C的发票后,在系统做发票检验,形成应付账款。
6.  B由于销售给A货物了,要给A开发票。产生应收。A收到货,在系统做发票校验,产生应付。
具体流程图如下:
CASE 1:
1.jpg
CASE 2:
2.jpg
标准系统中提供的项目类别TAS和TAB分别适用于第三方项目和单独采购订单.
在上面CASE1和CASE2中,SALES OFFICE产生了采购申请,这个采购申请是SO保存时产生的,销售订单的计划行类别可以决定是否产生采购申请:
1.  销售订单类型+物料主数据项目类别组 à 行项目类别
2.  定义计划行类别 (定义是否产生采购申请等)
3.  行项目类别+ 物料主数据MRP类型 à  分配计划行类别
配置1.销售订单的行项目类别
1.1.IMG-销售和分销-销售-销售单据项目-定义项目类别:
3.jpg
复制TAS为ZTAS.双击ZTAS:
4.jpg
出具发票相关 = F(订单相关出具发票凭证 - 依据发票数量的状态)
“依据发票数量”指的是根据MM的发票(Invoice receipt)的数量,也就是Vendor给我们发过来的发票的数量。
因为我们跟Vendor买货,Vendor不一定把全部数量发给Customer, 那么就可能产生Invoice receipt quantity和Order quantity不同的情况,依据Invoice receipt quantity来给Customer开发票是符合正常业务的。
定价选X,按照价格管理定义的价格。我也不知道是啥意思。
1.2 定义项目类别组:路径:IMG-销售和分销-销售-销售单据项目-定义项目类别组.
项目类别组在物料主数据上的基本数据1视图上,一般用系统标准的NORM.
5.jpg
1.3分配项目类别:
6.jpg
到这一步,就决定了ZORC这类型的销售订单且物料主数据的基本视图的项目类别组为NORM,销售订单的行项目类别为ZTAS.

配置2:计划行类别
2.1  IMG - 销售 - 销售凭证 - 计划行 – 定义计划行类别
7.jpg
这里采用SAP标准的CS,双击CS,
8.jpg
可以看到,如果是CS这个计划行类别,会产生ZNB的采购申请。 采购申请的科目分配类别为X,这个科目分配类别在采购申请转采购订单时会带过去,项目类别为5,带到采购单为S.据说是因为开发团队不一样,这个在后台有配置,路径是:物料管理—采购—定义项目类别的外部表示。
2.2  IMG - 销售 - 销售凭证 - 计划行 – 分配计划行类别
9.jpg
上图的物料需求计划类型为空,表示所有的需求类型都遵循这个原则,到这一步,我们就得到了CS这个计划行类别。

配置3. 采购设置
3.1 IMG-后勤-物料管理-采购-账户分配-维护账户分配类别。这里主要针对配置2中的CS这个计划行类别中设定的科目分配类别X.
10.jpg
这里的配置,针对B公司的虚拟收货,也就是OBYC中的GBB加一般修改YAX.最后在供应商主数据和物料主数据勾选自动采购单.如果启用了货源,也可以在SO保存时生成的采购申请中固定供应商。
SD的配置还有一些单据的复制控制,需求分类等,销售发票等,由于不懂SD,没有仔细研究过,非常抱歉!!!

操作:
1.  ME21N  A建立向B的采购订单45000001.
2.  VA01   B建立向A的销售订单.SO保存时自动生成采购申请1000001.(计划行里可以可看到)
3.  采购申请1000001转成向C供应商的采购订单45000002。
4.  B对采购订单45000002虚拟收货。收到发票后在系统做发票。产生应付。B对A开销售发票。
5.  A对45000001采购订单收货入库。A收到B的销售发票后在系统做发票,产生应付。

未完,待续。。。。。。。。。。。














发表于 2013/8/7 16:35:38 | 显示全部楼层
写得好详细,非常谢谢!!!
 楼主| 发表于 2013/8/21 20:37:34 | 显示全部楼层
本帖最后由 liaojunchao 于 2013/8/21 20:47 编辑

STO
STO,即库存转储订单(Stock Transport order),它分为同一公司代码下不同工厂间的转储和不同公司代码间的转储(Cross Company.SAP中,包括以下5种方式
01.jpg

其中前面4种是同一公司代码下的,第5种是跨公司转储。也是与SD关联比较紧密的一种。
我们假设有以下业务场景:
公司1200 下有1201 1202两个工厂
公司1600 下有1601一个工厂
某成品需要从1201调拨到1601工厂或者从1601调拨到1201。或者从1202调拨到1601.
我们先假设从1201调拨到1601
系统后台配置
1.  物料管理—采购—采购订单—设置库存调拨订单—定义工厂的装运数据:
image003.jpg 2.jpg
这个地方非常关键。如果指定了销售组织,分销渠道,产品组,这时1201是作为供应工厂,是卖方。
而对于1601工厂,是购买方,这时1601对于1201来说,是客户,所以我们要填的是在1200这个销售组织下建立的客户1600.
2.物料管理—采购—采购订单—设置库存调拨订单—分配交货类型和检查规则:
4.jpg
3.物料管理—采购—采购订单—设置库存调拨订单—分配凭证类型-- 一步交货,交货不足限制:
55.jpg
4.后勤执行--装运—基本发运功能—装运点和收货点确认—分配运送地点:
image006.jpg
5.销售与分销—出具发票—公司间出具发票—定义公司间开票的订单类型:
image007.jpg
再根据这个ZIV决定开票的定价过程:
销售和分销—基本功能—定价—定义并分配定价过程-给出具发票类型分配单据定价过程:
image008.jpg
销售和分销—基本功能—定价—定义并分配定价过程-定义定价程序确定:

image009.jpg

前台操作:
1. ME21N 创建采购单
2. VL10B 创建外向交货单
3. VL02N 发货过账
4. 发货工厂VF01出具发票
5. 收货工厂MIRO做发票凭证


发表于 2013/8/27 17:27:17 | 显示全部楼层
SAP新手前来学习,加油!
发表于 2013/9/11 08:22:58 | 显示全部楼层
其他楼主的继续更新,讲解的很详细,容易看懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|壹佰网 ERP100 ( 京ICP备12025635号 京ICP证120590号 )  

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表