Monday, February 28, 2011

SAP物料的最小订购量、及舍入值的测试

 今天有空,测了一下SAP 物料主数据中的舍入值(Rounding QTY) 和采购信息记录中的最小数量(Minimum Qty),验证他们的作用和优先级。

 在设定方面,最小订购量(MOQ)可以位于物料主数据中,也可以在采购信息记录中。在物料主数据中,是设置于MRP1的最小批量(Minimum Lot Size)舍入值,信息记录中的是在采购组织数据中的最小数量(Minimum Qty).最小包装量(MPQ)在物料主数据的舍入值或舍入参数文件(rounding value、rounding profile,后者优先级高)及信息记录中的舍入参数文件(Rounding Profile)。
物料主数据中的最小批量、舍入值,在MRP运行时都会起作用。如果同时在物料主数据中设了最小批量和舍入值,在MRP运行时,取其中的大值 。(不使用批对批 EX的情况)
不管这些栏位设定在物料主数据还是采购信息记录中,在建立PR时,不会提醒你输入的数量与这些值的差异。
 如果物料主数据中存在舍入值(Rounding QTY),则建立PO时,系统首次会将你输入的数量转为最小订购量(如果你输入的数量低于舍入值),更复杂的情况下,是可以更改你输入的采购单位的。但如果你再次修改订购量后,系统不再做自动修正。信息记录中的最小订购量此时是被忽略的。
如果物料主数据中不存在最小订购量,但在采购信息记录中设置了最小数量,在建PO时,若数量不一致,则会以黄色警告信息出现提醒你(这个消息可在后台去掉),相关信息记录中的最小数量是多少多少,但不会更改你输入的数量。
如果在信息记录中存在最小数量和舍入参数文件(Rounding profile),则从PR转PO时(包括使用ME59自动转换时),会自动使用舍入参数文件中的舍入值替代原有的PR数量。如果舍入后的数量低于信息记录的最小订购数量,系统会给出提示。
     
     无论如何,目前没找到有效方法让MRP运算时生成的PR参考信息记录中的最小数量或是舍入值,即便PR中已经分配到了相关供应商。网上资料显示,除非将舍入值信息放到框架合同中,MRP运算时方可参考与供应商特定的舍入值信息。可能SAP的理念是,如果这个MOQ或MPQ数量是供应商特定的,那么运算时不能带入,而只在你正式下PO给供应时建议就可以了。  

   若存在测试错误和遗漏部分,非常欢迎大家批评和补充。感谢网友提醒,我按回复测试并更新了原文 。
   另求教:若想手工建立PR时,系统提醒输入的数量与最小包装量不一致,该如何做到呢?

SAP 采购订单不能收货

  非常特殊的一些情况下,在采购订单项目正常建立,PO审核后,还是存在部分项目无法使用MIGO或MB01进行收货的问题。这些项目没有被锁定、删除,在行项目明细的交货TAB中,也设定了需要收货,也没有使用确认(confirmations)功能。总之,这些行项目和其他的PO行不存在特别的差异。那么,可能是SAP本身更新中止造成行项目状态不对而不能收货了。
    症状:   收货时系统提示:
Document 4500034412   does not contain any selectable items
Message no. M7064

    SAP对此问题有专门的NOTE描述,详见 Note 358293 - ME21N: Problems when deleting/undeleting
    你可以使用SM17查看所有的系统更新错误,另外使用SE16或SE16N查看采购订单行项目的数据表的状态字段(EKPO-STAPO),如果其值为“X”,则可以使用一段ABAP代码(report:ZKSTAPO,需自行创建)进行修正。
    具体使用何段代码,视SAP版本有所不同,请参考上述NOTE的后半部分Corrections Instructions.虽然声明中没有列举ECC6.0的代码,但用358293中的修正代码是可以正常用在ECC6.0中的。
    运行该ABAP代码,它会自动检测不正常的标识项。在作正常的修正前,建议先以测试模式运行,它会列出所有它将修正的行项目。修正完成后,你可以看到,采购订单能正常收货了。

修复MC.9过账日期的库存值与实际不一样的问题

 最近财务部门调取MC.9报表查看过去某个时间段的库存,发现MC.9的值与MB5B值不一致.后调查发现,MC.9的值为错误值,MB5B的是正确的.查阅网上相关文章,遇到此类问题的还不止我们一个.
     MC.9的取值来自于信息结构S031和S032,具体内容可以通过SE16N查看.S031存放的是在每个周期中的异动情况 (可以是以周\月等等为周期,取决于IMG设置), S032存放当前的库存和库存价值,而S039则是链结了S031&S032,并且包含了一些没有在数据库中存储、只在运行报表时才依据其他一些数据计算值的附加字段.S039通常被用作参考,实际数据必须通过报表RMCBS039来写入S039.它的用途有:
a) 在标准分析功能中,对于计划/实际比较存储计划数据.(storing planned figures for planned/actual comparisons in the standard analysis.)
b) 在库存控制中,建立柔性的分析.
      S031的构成在NOTE 中有详细描述. S031的内容出错可能来自多方面,遇到这种情况只有重建信息结构了.
      S031表字段的说明:
MANDT    Client
SSOUR    Statistic(s) origin
VRSIO    Version number in the information structure
SPMON    Period to analyze - month
SPTAG    Period to analyze - current date
SPWOC    Period to analyze - week
SPBUP    Period to analyze - posting period
WERKS    Plant
MATNR    Material Number
LGORT    Storage Location
以上字段构成表主键。
Val. stock receipts 字段显示的是相关库存地点收货的数量,如果存在负数,则是存在收货撤消的项目,比如mvt 102的移动.如果行记录中没有显示库存地点,则表示为外包商从我方的收货,通常为541。
Val. stock issues 字段显示的是相关库存地点发货的数量,如果存在负数,则是存在发货撤消的项目,比如mvt 262的移动.如果记录中没有库存地点,则表示为外包商物料耗用,通常为543。
      关于S031的生成,可以使用TC:Oli1 (将程序设为后台运行较好,因为生成时间比较长),生成前, 用OLIX将S031中的不需要的版本数据删掉,防止操作上不慎生成重复累加的值.
    生成后使用OLIX将生成的版本COPY到版本000中.这一步是由于SAP生成时默认版本是&(,而MC.9默认调用的是000版,故需要COPY,否则MC.9报表运行时会显示没有记录的(当然你也可以设置用户参数MCR值X来使mc.9可以选择读取的版本).
    关于重新生成结构,实际有很多TC,从oli1到oli9都是,但不同的TC用于生成不同的信息结构。比如,oli1是根据物料移动的数据来生成,取自表mseg等,用来生成S031,oli3取的是采购相关的数据,生成S012,具体过程未研究完毕,以后再更新。    就我们公司的应用来看,S031用OLI1生成,S032使用OLI2生成,随机抽查没发现问题,发现问题再改这段文字吧。
   总之,按照SAP NOTE提到的标准方法有两种,可在Note 64636 - Procedure for statistical data setup in LIS中查到,我用的是B过程,大体如下:
   1、停用LIS 仓库控制相关的LIS报表更新.IMG-PATH:
 + Logistics - General + Logistics Information System (LIS) + Logistics Data Warehouse + Updating + Updating Control + Activate update
2、用程序RMCA0315删除S031,程序 RMCA0325删除 S032中相应000版本数据。
3、重新启用更新
4、使用程序RMCBNEUA更新S031、S032,再顺序执行程序RMCBNEUB,变式S031_S032,在此期间,不能有R3的操作。
附录:
    事务 NPRT 查看指定日期对信息结构的手动更新日志
     report RMCP6VER  复制实际数据到计划版本, Note 35200 - Copying actual data version into plan version
     report RMCBS039 传输S031&S032的最后数据到S039,Note 114960 - Planned/actual comparison of different versions
     相关IMG:
停用信息结构的更新 或设置周期配置
     + Logistics - General + Logistics Information System (LIS) + Logistics Data Warehouse + Updating + Updating Control + Activate update
重要的NOTES:Note 453420 - Incorrect stock values in LIS
                         Notes  79083            

另一部分参考资料,感谢原作者:

摘抄别人的原步骤:

Firstly, I used version “&(6” as temporary version – you could use any other name.
Delete version “&(6” for S031, S032, S033, S034, S035 (if they exists) -- tcode olix
Get material documents data for “&(6” – again S031, S032, S033, S034, S035 -- tcode oli1
Get invoices data for “&(6” – again S031, S032, S033, S034, S035 -- tcode oliz
Stock values for “&(6” – again S031, S032, S033, S034, S035 -- tcode oli2
Delete version “000” (the main version) of S031, S032, S033, S034, S035 -- tcode olix
Copy data in version “&(6” to version “000” for S031, S032, S033, S034, S035 -- tcode olix

Another article written by a IMG fellow for your reference, Please remember to have a test in your test system before you update IS data in your production machine .
SAP LIS - Wrong figures in Logistics Information System
Warning - Please test it in developer first.
Alert : It can result in data loss or inaccurate data in your LIS table if not done properly.
This is bound to happened especially if the users made changes to the Purchase Order and you have set the online updates for your LIS.   Fields like Material groups are consider keys fields and should not be change as it somehow impact the updates to LIS.
If the figures are wrong for a particular period, you can do a reorganization for all the Purchase Order for the particular months.
Assuming that you want to reorganize the whole S012.
When you execute OLI3, it will locked any Purchase Order that it is processing.  Therefore, it is advisable to run it during off office hours.
First Step :-
OLI3 - Statistical setup of info structures from purchasing documents
Info structure to be set up S012
Save under version &(
Tick Delete/create indices
Specify the Purchasing Documents or Document Date
Name of run S012-1
Tick New run?
Date of termination 99.99.9999
Time of termination 99:99:99
Tick Redetermine update group?
Tick Update documents?
NPRT - Log for Setup of Statistical Data
Final Step:-
OLIX - Copy/delete versions of an info structure
First Screen
Info structure S012
Processing type Copy + Delete
Second Screen
Source version &(
Untick Do not copy initial records
Tick Reset target version
Untick No automatic period conversion
Now, you can check the figures using transaction MCE5or any of the transaction that uses the table S012.

无语问苍天之胡言乱语

 当你认同成王败寇,有钱即为有能时,那你就会认同践踏法律,以权谋私也是合理的行为,不管是对他人或是自己。一旦有机会,你便极可能是个践行者。
      当你以为社会是按奴隶、封建、到资本、社会主义代代进步,把科技文明进步与社会制度文明进步混作一谈时,当权者的洗脑行为就已经在得逞。
      有人说,群体性催眠比对个体催眠来得更为容易。不用怀疑,这事,在当今天朝等诸国已有印证。
      德国人是愚蠢的,如此先进的马克思主义居然放着不用,让它来服役于强大的中国,可笑可笑。还有波兰、捷克、前苏联、罗马尼亚人等也是愚蠢的,拿到手的共产主义居然又去丢掉。
     耻辱柱: http://bbs.voc.com.cn/topic-198439-1-1.html  这些回复中,部分有我的影子。另一部回复,遭到别人的辱骂,而今,我情愿做那些能招别人辱骂的人。
      是否你一直以生活在中国历史以来最先进的时代而幸福不已?是否经常把反动、走狗以及“你TMD不是中国人吧”,"你就一个愤青“,"没有绝对的自由",“美国也有腐败"之类的话语作为辩论和攻击他人的常用词?恭喜你,你是绝对纯正的当代中国人流水线产品。
      世界上没有绝对正确的事情,但在天朝,很多事情反着想,靠真理也许会更近一些。
 
很久很久以前,亚历山大、凯撤、拿破仑做为贵宾,参加红场阅兵。

--我要是有苏联的坦克,我将是战无不胜的!亚历山大说。

--我要是有苏联的飞机,我将征服全世界!凯撤说。

--我要是有真理报,世界现在也不会知道滑铁卢!拿破仑说。

--我要是有CCAV,你们铁定只知道澳大利亚森林大火。  我说的。

     加量赠送一句(这就不是我说的,我还没这水准):
            没有比生活在社会最低层,却还认同统治阶级的逻辑更可悲的事了。

    水至清则无鱼,人至贱就无敌,当一个政权不要脸至极时,它就会让全国人民相信它最优越的。
    有时我们会讥笑讽刺别人,但讥讽是留给有廉耻尊严感的人的。我从不讥讽政府。

COH 英雄连作战经验总结

1、坦克一定要在步兵后,因为它在某些路况下,机动性特别不好。有步兵在前预警,这样可打可逃。能不用坦克对付AT、反坦克小组,就尽可能不能,除非确定它伤害不到你。
2、如果有条件,最好放侦察系的兵种(盟军的是JEEP,德军的是摩托)在进攻路线前前绕一圈,以发现隐身的兵种,如德军的PAK 38 AT,风暴小队。即便不为发现隐身兵种,也可以做火力侦察,比如,尝试有没有88MM。
3、前方视野不开阔,预计对方火力比较强大时,应该派眼线侦察。JEEP之类上不去的话,可派殂击手隐身关火后贴着敌人步兵和侦察车辆不太可能经过的地方贴进去先看看。殂击手完全没必要开火。另、殂击手发现敌军恐怖军官,一定要远离,因为他反隐身距离很远,一枪殂不死。而且他还有近身手枪一枪毙命的能力。
4、如果敌防区步兵成群,后边有装甲,潜入殂击手不太可能的情况,则我方应组织迫炮群和火箭炮来进行远程杀伤敌软目标,如敌迫炮群、改良式迫击炮,AT,88MM等。同时对我方迫炮群应该有牢固防御,如机枪阵地和坦克来防敌步兵,AT防敌坦克。
5、我方装甲系不管在前方后方,一定要有侦察车、工兵、步兵在边上,防止敌渗透。万一遭受攻击,还可以用工兵维修。
6、为了前线及时补充战损或是为抢敌武器而减少的小队兵力,很有必要布署运兵车在步兵边上,随时补充。盟军的为M3,德军为可升喷火和斯图卡的运兵车。这样,使我们持续攻击能力大副提升,减少敌方喘息时间和反扑的可能。抢占敌武器还可增强我方攻击能力,同时还减少了敌方抢回武器而获得战斗力增强的可能性。一举两得,何乐而不为?
7、前线关键战略点的房屋,要在第一时间抢占(比如用工兵)。以备后续塞机枪进房子,或升级为前线兵营。关键路口房屋的机枪,可以有效防止敌渗透抢点。即使敌方能拨除据点,也必然消耗大量时间。
8、只有曲线火力(如迫炮、火箭炮等)可翻越树林、灌木丛带、围墙、房屋,故有些侦察兵种,可以躲在这些障碍后边,这样可提供广泛视线,又不至于招受直瞄火力攻击。而即使有曲线火力攻击,也因为精度不高,而能生存较长时间。
9、机枪地堡只能朝一个扇面开火,点中一个地堡,黄色区域表示射界和火力覆盖范围。步兵攻击敌地堡,一定要坚持从地堡火力覆盖范围之外进入,防止被压制而无谓牺牲。同时为防敌人进攻也利用这点,地堡修好后,应额外进驻一挺机枪,这样就无射击之盲区。如敌地堡有驻兵,可使用JEEP地堡火力外扩大视野,而殂击手更远区进行殂击杀伤后,步兵再从地堡后方进攻消灭之。喷火、AT、火箭筒之类对之比较有效。
10、重炮适合对付移动性差的软目标和静止目标,对付菜鸟的装甲群也可,高手装甲群可能在看到炮群轰炸预警烟雾时即脱离原区域。轰炸敌军事建筑这事,除非有把握完胜了,资源很充足,或是两家以上齐轰,能把敌重要建筑轰掉。否则,就留着更重要的地方用吧。轰敌HQ就太浪费了。
11、兵力应该集中,但不应该扎堆。若多家同时进攻一点,分多个扇同时进攻,则某些攻击方可以有利的避免敌机枪、迫炮、AT的射界覆盖形成的压制性火力。从而能更快消灭敌人。若有敌坦克,从后方插入,也能更快消灭。AT后方没有护盾保护,AT上的兵员也更容易从后方被消灭。
12、使用好迫击炮的轰炸(B键)和烟雾技能。发现敌迫炮时、机枪在布署时,应该快速主动按下B键,对敌方布署点进行轰击。
13、注意:MG42射程超越盟军机枪射程。看到MG42小队冲你机枪小队过来,你要么派喷火兵跟上烧他,或是其他兵种跟上。如果不可能,你的机枪要准备撤退远点,或是贴上去对射。
14、用步兵打敌AT,用坦克打敌步兵。敌机枪进入建筑时,如果没法逃跑,就贴紧建筑,注意把兵移动到建筑没有窗户或窗户不能打开的一面攻击建筑中的步兵,而敌人无法攻击你。这是个BUG,好好利用。喷火兵对付他们,尤其有效。
15、所有步兵在布署时,注意标识,绿色的是防御加成的,常见于各种金属障碍后方,如废弃坦克车辆等,这此区域是百分百推荐士兵呆的地方;黄色为一般区域;红色的区域为极度危险区域,常见于公路路面,在此区域,步兵会到的伤害会加成,故此区域的兵力,除非你是不想让他活的,可以放置于此。
16、AT、机枪、迫炮前方后方布置沙包,可有效防止敌轻火力攻击,实际就是人为制造绿色区域。不要钱的工事,善用之。
17、盟军要利用好工兵的布置炸药能力,在有桥的地方预置炸药,看到敌重要部队过桥时,可自行决策是否炸桥,一次即可让敌桥上部队全部死亡。德军使用哥利亚遥控炸弹代替。

评估区域XXX还未对物料账生成

 问题:Valuation Area XXXX not yet productive with material ledger
 解决方法:在配置中启用物料账后,在生效前,还需对评估区域生成物料账。使用事务:CKMSTART.

相关知识:针对估价的物料在每个物料评估区域中去确定物料的估价和价值. 在SAP中,评估层可以定义在工厂或公司代码层。评估层的定义是Client级别的。
如果定义在工厂层,则一个工厂相应的是一个物料的评估区域。
如果定义在在公司代码层,则一个公司代码相应的是一个物料的评估区域。

一般推荐将评估层定义在工厂级,有以下情况时,必须定义在工厂层:
1、使用PP模块,或生产成本、订单成本。
2、使用零售系统。
3、想让物料在不同的工厂有不同的评估价。

物料库存在一个评估区域内有相同的价值。必要情况下,你还可以依据物料评估区域-评估类型来区分库存。物料库存在不同的物料评估区域有不同的价值。

LIS报表MC.9每次分析结果均不相同

   LIS报表MC.9每次分析结果均不相同 ,不一致的原因:Notes 120365
         
    后勤信息系统的报表MC.9,在它运行时会读取两个信息结构(S031&S032,S032记录当前库存,S031记录物料进出情况)进行倒回运算以得到过去的库存值,在读取两个信息结构的过程中,会 有微小延时。系统在频繁的物料和财务过账中,可能存在相关业务数据已经更新到了S032中,但还没有过账到S031中的情况。在此情况下,倒回 运算的历史库存及库存值结果就会出错。

    当存在下列情况时,上述问题会更明显:
            1、信息结构的更新为异步方式时。
            2、每次输入的选择条件会导致大量记录被分析时。
         
    解决方法:
                1、在没有系统过账的时间运行报表,比如,定义后台作业在无人使用SAP过账时运行报表。
                2、尽可能选择较小的范围进行分析,比如,单独的物料,更短的分析期间。避免一次对一个物料组、一个工厂等分析。