Monday, February 28, 2011

SAP WM学习笔记(一)基础概念

    SAP WM作为MM-IM的补充,提供了更为详尽的库存管理细节。IM的物料库存查询仅限于库存地点(storage location)这一层次,而WM可以查到物料处于哪个仓位(storage bin)各有多少数量。

WM的管理层次:


如果WM与IM连接,则结构如下:

咦,同一个warehouse number01  被两个工厂的两个storage location所指向了,这是为什么呢?

我的理解是,storage location 是对仓库进行逻辑上的划分,而Warehouse number是物理意义上的划分,一个物理的仓库可以被你分成无限多个逻辑上的storage location,所以,这样的指向也不奇怪。比如,一个仓库,你将它分为良品仓,不良品仓等逻辑仓,但实际物理上它就在一个仓库中。如果还不明白,把图倒过来看就很清楚了。希望我没理解错,不然怡笑大方了。


一些库存管理的基本概念:

The Warehouse Number 仓库号

   一个物理上的库存设施使用一个仓库号,比如,一栋仓库。
The Storage Type 库存类型

  每一个从属于Warehouse Number的区域或设施,可以理解为仓库中划分的一个区域或是一层楼。

  每一个库存类型会再细分为Storage Area(库存区域)Storage Section是Storage Area 的一个子集,它可将很多Storage Bin聚合到一起。

The Storage Bin (库位)
   成行的库位构成了Storage Area

The Quant (份)
  一个仓位中物料的一定数量被称为Quant。

份(Quant)与Storage Bin的关系:


从结构上来说,一个公司的某个仓库通常有下列库存区域:
  Goods receipt area 收货区
  Goods issue area 发货区
  Hall with high rack shelves 高架区
  Bulk storage area 堆放区
  Picking area with fixed bins 固定Bin的拣货区
  Outside storage yard for special goods 用于特定物料的外部存储区域(也可用于当其他区域达到存储能力之后)
 下面是一个仓库号中的库存区域设定。


常用的库存类型有(storage types):

Bulk storage  堆放库存
Open Storage  开放库存
High rack storage  高架库存

(原始来源:http://www.expo21xx.com/logistica21xx/5891_st2_automated-storage/default.htm)

Picking area  拣货区
Shelf storage  货架存储


也可以定义一些IM和WM共享的区域,如:
  Goods receipt area
  Goods issue area
  Interim storage area for differences
  Posting change zone


Homogeneous Storage (同质物料存放)
   在一个Storage Bin中只能存放一种物料。

Mixed Storage(混合存储)
   可在一个Storage Bin中存放多种物料

Interim Storage Area (中间存储区域)
   当在IM中进行收货时,数量会过账到WM的中间存储区域(收货区域),此时,一个份会在中间存储区域的仓位(Storage Bin)中创建。
   发货时,系统会在中间存储区域(发货或船运区域)创建一个带负数的份。
   常规情况下需要的中间存储区域有:
  •    收货区(Goods Receipt Area)
  •    发货区(Goods Issues Area)
  •    为处理差异而存在的中间区域(Interim Storage Area for Difference)
  •    过账更改区域(Posting Change Area)



配置顺序:

  1.  WM与IM的连接通过为IM的库存地点分配库存号来实现,所以首先定义库存号,然后再分配    IMG:   Enterprise structure -> Assignment -> Logistic Executive -> Assign warehouse number to plant/storage location  
  2.  定义库存类型  Logistics Execution -> Warehouse
    Management -> Master Data -> Define Storage Type
  3. 定义存储区 Logistics Execution -> Warehouse
    Management -> Master Data -> Define Storage Section
  4.  创建Storage Bin  Logistics Execution -> Warehouse
    Management -> Master Data -> Storage Bin -> Define Storage Bin Types 

如何冻结付款除非物料通过检验并收货

方法一:后台配置中设置发票校验只能基于收货完成
方法二:在物料主数据QM视图中维护质量控制码为007。如果物料正在检验或遭拒收,那么在MIRO接收发票时,系统将提示发票由于质量原因被冻结了。

在SAP中进行供应商认证流程管理

How can I manage a vendor approval process in SAP?

Question
We have a vendor approval process outside of SAP and would like to manage this process in SAP.
How can I go about managing this and what functionality should be used?
Answer
As the process goes, we first need a Vendor. So you need to have a Vendor Master. Next, what does he supply? So we need a material master as well.
Now... how do we approve him? Most of the times, the approval is done by the Quality guys. So you need to have a Quality Inforecord in place. On what basis? So we need to create a profile. You do this in BS02(User status profile ). Define number of deliveries you would like to evaluate before you approve the Vendor. Define the steps of approval at this stage for GR activity. This ensures that after each GR and subsequent QA approval of the inspection lot, the Vendor Status changes to next level. Say from initial -> 1st level ->2nd Level -> 3rd Level ->Approved.
So when the status finally changes to Approved, change the Date by in Quality Inforecord and then add the Vendor in Source List, followed by Purchasing Inforecord.
From master data point of view:
1. Material Master
- Quality View: Quality procurement active must be checked - Assign the profile for Vendor Approval - Inspection set up 0101 should be active. For the same, ensure that quality score update is from UD.
2. Vendor Master
3. Quality Inforecord
- Enter Release until or Quantity - Enter profile created in BS02 - Enter Inspection active if Vendor is not certified
4. Create a PO as for normal vendors. DO a MIGO. Approve the material in QA32 and then check status in QI03. After each approval, the Vendor's status will change from Initiated thtough Approved.
As a GMP, never include a Vendor in Source List unless he is approved.

查找TC相关的出口

方法一:
1。 执行tcode --> system --> status, 找出程序名称。
2。SE80;输入第一步中找到的程序名称。用菜单:GOTO --> Attributes, 找出Package 名称。(注:也可以用SE93,查这个程式所在的Package)
3。 SE80 --> Repository Information System --> Enhancements --> Customer Exits --> Enhancements -->将第二步中找到的Package 名称输入,执行,就可以找到tcode的所有用户出口。


方法二 编写ABAP程序:
*该程序用于查找与TC相关的用户出口。
REPORT  ZUSEREXIT.
TABLES:tstc,
       tadir,
       modsapt,
       modact,
       trdir,
       tfdir,
       enlfdir,
       tstct.

DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.

SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK a01.


START-OF-SELECTION.
SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = tstc-pgmna.

MOVE : tadir-devclass TO v_devclass.
IF sy-subrc NE 0.
SELECT SINGLE * FROM trdir
WHERE name = tstc-pgmna.
IF trdir-subc EQ 'F'.
SELECT SINGLE * FROM tfdir
WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir
WHERE funcname = tfdir-funcname.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = enlfdir-area.
MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.

SELECT * FROM tadir
INTO TABLE jtab
WHERE pgmid = 'R3TR'
AND object = 'SMOD'
AND devclass = v_devclass.
SELECT SINGLE * FROM tstct
WHERE sprsl EQ sy-langu
AND tcode EQ p_tcode.

FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(12) '事务代码 - ',
13(20) p_tcode,
34(10) '功能 - ' ,
45(50) tstct-ttext.
SKIP.
IF NOT jtab[] IS INITIAL.
WRITE:/(95) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
WRITE:/(95) sy-uline.

LOOP AT jtab.
SELECT SINGLE * FROM modsapt
WHERE sprsl = sy-langu AND
name = jtab-obj_name.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:/1 sy-vline,
2 jtab-obj_name HOTSPOT ON,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
ENDLOOP.

WRITE:/(95) sy-uline.
DESCRIBE TABLE jtab.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ '用户出口数量:' , sy-tfill.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) '此TCode没有用户出口!'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(95) '事务代码不存在!'.
ENDIF.

AT LINE-SELECTION.
GET CURSOR FIELD field1.
CHECK field1(4) EQ 'JTAB'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

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、尽可能选择较小的范围进行分析,比如,单独的物料,更短的分析期间。避免一次对一个物料组、一个工厂等分析。

PA40提示输入请求号

     若要去掉这个提示,使用事务SM30维护表T77S0,使用position按钮定位字段group和sem.abbr.,找到组合值TSSP 及admin,将字段value abbr的值由X改为空,保存即可。

与深圳外来务工朋友一起分享2008年春节

(很久以前的写的,抄过来放着吧。)
      看到凌晨5点,终于将《和你在一起》用心看完,剧情的确是感人,甚至让我有些想哭的感觉,我觉得这是我看过的最好的电影。
      躺下来时,外边的鞭炮声已陆续不时想起,即便十分疲倦,却难以深睡。总觉得自已还是个人,应该对电影思考什么、评论些什么,也好当作以后和友人们见面时的谈资,免得坐在那,总是像堆肉,但却是一个像样的句子都碾不出来。
       从2月2日放假到现在,已有7天,除了为一次采购三天的东西去过超市二次累计三小时不到外,我都紧锁着双重铁门,呆在房间一动不动,在被人连续三次以上进 入我房间,甚至拿走我用头压着的枕头下的钱包,并在取空内边的钱然后仙人般离去后,我总是有些害怕有高人能轻易把两道门打开。在南部广泛遭受雪灾,广大外来务工者不能回家时,深圳市政府在春节期间为市民和外来者安排了一些免费的展览。但对于我这个不入流的人来说,一切与我无关。
       我来说说我吧。
       我是个过时的人,不知道现在流行什么歌曲,也不知道诸多的当红明星长什么样子,我是个21世纪的人却总听着20世纪八九十年代的歌,还是个到了2008年甚至还在看2007年报纸的人,与其说是怀旧,倒不如说,其实是落伍。
       我有些自卑,但听说自卑和自大只有一线之隔,所以我想我可能还有自大。我总是不敢去确定什么,连我自己是什么样我都不敢确定,我常常不敢表达我的观点,我生怕它是可笑的。我走到哪都是女人们取笑的对象,特别是和一些工作只是为消磨时光的同事们聚餐在稍高档点的饭店,很多东西叫不上名字,也不知道如何食用才是正确的方法的被人取笑就像是个啥都没吃过的、啥也没见过的人时。我觉得原来我用娴熟的业务技能所营造的所谓自信是如此不堪一击。当领导们一再苦口婆心让我走上管理岗位上为公司创造更大价值,而我觉得以我的EQ、表达能力和人际关系不能很好的胜任这个岗位时,我发现,原来我就是那个扶不起的阿斗。
       我拿着与深圳本地人相比让我自卑却又还能让一些外来工羡慕的薪水,我常作着这种双重的对比,这让我心中生起飘忽不定的感受,以致于连我自已也无法说清是惭愧还是该自我满足,是该驱动自已更努力前行,还是暂歇一下疲惫的身体。
       我还是个有广泛兴趣的人,爱点摄影,却没有基本的美学常识;有时还喜欢听点音乐,却是个连谱都不会识的人。
       我是没有根的人。我结婚了,却没感觉恋爱过;我有孩子了,却没有做父亲的幸福;父母在老家农村,妻子在天边的娘家,我在深圳,我有三个落脚点,但未曾觉得有过一个家。我有的只是落寞、孤单和空虚,还有与日俱增的压力。
       我是空虚没有灵魂的人。虚胖的身体裹的是纤弱的骨头,脑袋里装的是被清洗过的肥肠,深圳的热风总是在吹荡悬挂在体内的血管,我常有些不知道该拥抱何物才能找回到安全,而只能任凭内心在瑟瑟发抖的感觉。每天早上8点看着这没有灵魂的肉身从出租屋匆忙走出去,晚上再从公司走出,过街时拎上快餐,再勿忙走回这屋子,坐在电 脑前焦燥不安不知道想作什么,日复一复,我有些生气,我能改变什么?可还有更好的选择?
       我是个懦弱的人,不敢对暗恋的心仪女人表达。每分钟都在跑过无数大奔和宝马的深南大道,服装市场几千一套的西装,还有动辙几万的LV包,只是眼前闪动的光影。内地和香港交流频繁,女同事们经常交流去香港的血拼收获,香港的繁华也可以造就深圳的二奶村,五六十的老太开马自达的跑车,20多岁的女士开上宝马 X5或凌志,一切虽是司空见惯却总在在挑动我的神经。我不鄙视物欲横流的社会,不去遣责奢侈品的消费人群,只要合法获取的,虽然我们不是站在一条公平的起 跑线上,我能获取的比你们少,我知道没有绝对的公平。生存在这样的世界,我无法不去对比。成功的很多,有钱的很多,有才情的很多,长多帅的也很多,我哪一样都没有,我拿什么给你,我的爱人。有些人,可成作家、画家、音乐家,而我将来会成为什么?别人可以是律师、教师,而我为了钱可以跳来跳去,在各个行业中转换,仿佛有很多职业,但又仿佛什么都不是,我如何来说明我的职业?凭这些,我没有丁点的自信去表达我的爱恋。
       面贴面对着这世界,我感觉这一切离我还是很远。也许有天,我也能占有某些。我还是贪恋这世界的物欲,看起来这是我唯一可以确信的东西,也许是这些东西还在催我奋进。如果有天,我得到了这些,我还有什么追求?!我几乎能觉察没有,我会无聊透顶,只会去寻找更多更强烈的感官刺激。但感官的刺激,终会有让感官疲劳的时候,那天,会是什么样?我活着是为什么?我到底想要什么?我回答不了这个问题,我心底有一丝可悲。
    几年来在深圳伴着机器的轰鸣生存,我总能想到老家那台柴油机,没油了,加些油;润滑不好了,加点机油。我是何曾与它相似,饿了,吃个快餐;倦了,看点 励志书或是对比一下别人比我优越的生活。我曾问自已,何时,我可以停下来?我相信,中国还有很多机器与我同在,并且,还将继续...
    这样的生活,已过过很多的天,我知道,不管多少天,它其实就只是一天,我的生活,只是无趣的在重叠。我的世界只有三个事件,出生,生存,死亡。我今天努力,是希望我衍生出来的生命不再走同样的轨迹,因为我明白,一个时代,很多人的生活只能是这么过,我无力去改变更多。
      多少次,每当我思绪万千的坐了起 来,想记录下我那些肤浅的想法,记录下我的心路历程时,脑海中的一切又离我远去。当我从床上那恍惚的半梦境中坐到现实中的电脑桌前时,我在怀疑记录下来的 意义。  
      这样的生活方式与状态,是一些人,一代人,还是某个社会状态下生存的几乎所有人?外面的世界很精彩,但那是外面,从来就不被我拥有。
     

                                   2008年农历初二 胡言乱语于深圳

PS:春节这段时间呆在屋子里,哪也不想去,成天就是上网、游戏看报打发时间,很忙却从未有过充实的感觉,这样的生活在可以预见的一段时间我想还是会继续。我只希望,所有和我一样的人们,过好。在生存中找回我们的灵魂,不要成为物欲的奴隶。
    我不是什么文学爱好者,表达能力极为有限,语言组织也很凌乱,只是想将心底的感受拿出来和朋友们一起分享,请多见谅。

成功输出消息后的采购订单不能取消审核

症状:当PO已经使用ME9F输出后,无法取消订单的审核。  系统提示:
ME175 凭证已输出(功能不可用).
应管理要求,系统后台已设定PO在审核后不能进行更改,即“可更改”设为值1-不能更改.
依照网上搜的资料,实施了两个NOTE:
   Note 994269 - ME28 - release reset for already outputted POs
   Note 1133900 - ME28 - Release reset for already output purchasing message
 实施后发现问题依然存在。
根据用户反馈,这种已审核的订单,有的打印了可以反审核,有的不行。后来依据网上资料的线索及对有差异的订单对比发现,SAP是通过比较在PO中的MESSAGE的状态来判断能否撤消.如果PO中存在MESSAGE,并且全部正常输出,即状态全部为1,则PO不可撤消审核。如果其中一条MESSAGE的状态不是1,则可以撤消审核。
    正经方法是:
    使用事务ME9F,选择输出状态为 1-成功输出 ,点击执行,这里系统会列出所有成功输出过的消息,勾中任何一个,再点击消息细节.现在看到了类似于采购订单中的消息列表,选中任意一个后,点重复输出,系统会复制一个,并且看起来是黄色的,保存退出.这里,由于存在一个没有成功输出的消息,你可以使用ME28撤消这张PO了.
 
    非正经渠道解决方法有两种,且要求你有相当高的权限:
1、PO输出的MESSAGE放置在表NAST中,字段VSTAT即存放的MESSAGE状态的值。使用SE16N查看表,并在命令栏中输入&sap_edit,使得你可以直接修改表内容,在字段OBJKY中输入PO号,在结果中,将任一vstat字段值改成0。这时,你可以使用ME28撤消审核了。
SE16N查看并修改表:

搜索结果,同时修改值:



方法二:直接在DEBUG中更改变量值,绕过程序。
使用SE38,在程序FM06LFFR_FRG_RESET中设置断点
**********************************************************************
CLEAR GEDRUCKT.  "此外断点
  IF FEKKO-FRGDR EQ '1'.  
    GEDRUCKT = 'X'.
  ENDIF.

  CALL FUNCTION 'ME_REL_RESET'
       EXPORTING
            I_TITLE  = ' '
***********************************************************************
同样,使用事务ME28进行订单的撤消审核。程序运行时会自动弹出DEBUG窗口,强制将FEKKO-FRGDR的值改为0,继续往下执行即可完成订单的撤消审核。 原理不清楚。
如果你的配置场景与我们不一样,比如,你的采购订单在审核后是可以修改的,则可以按上边提到的原理,在PO的MESSAGE中,新增一个MESSAGE,不要输出,再使用ME28进行撤消审核。

生产订单收货数量与物料凭证计算总数量不一致

 先使用如下程序对已出错订单进行修正,然后再实施Note 1094999 - Goods receipt quantity is updated incorrectly
---------------分割线-----------------------------------------
REPORT Z_PPCON_076 .

TABLES: AFKO, AFPO, MSEG, MKPF.

PARAMETERS: TEST_? TYPE C DEFAULT 'X'.

SELECT-OPTIONS: PAORDER FOR AFPO-AUFNR.


DATA: BEGIN OF UPOS_TAB OCCURS 500.
        INCLUDE STRUCTURE AFPO.
DATA: END OF UPOS_TAB.

DATA: BEGIN OF POS_TAB OCCURS 500.
        INCLUDE STRUCTURE AFPO.
DATA: END OF POS_TAB.

DATA: BEGIN OF A_TAB OCCURS 500,
        AUFNR LIKE AFKO-AUFNR,
      END OF A_TAB.

DATA: BEGIN OF M_TAB OCCURS 500.
        INCLUDE STRUCTURE MSEG.
DATA: END OF M_TAB.

DATA: NO_WEMNG LIKE AFPO-WEMNG VALUE '0',
      NO_LTRMI LIKE AFPO-LTRMI VALUE '00000000',
      KUM_WEMNG LIKE AFPO-WEMNG,
      KUM_WEWRT LIKE AFPO-WEWRT,
      DIF_QUAN LIKE AFPO-IAMNG,
      DIF_WERT LIKE AFPO-WEWRT,
      U_FLAG TYPE C.

IF NOT TEST_? IS INITIAL.
  WRITE: '        !!!!!    TEST    !!!!!!'.
  SKIP 1.
ENDIF.

SELECT * FROM AFPO INTO TABLE POS_TAB
         WHERE AUFNR IN PAORDER.

* read material documents per order
LOOP AT POS_TAB.
  REFRESH M_TAB.
  CLEAR: U_FLAG.
  CLEAR: KUM_WEMNG.
  CLEAR: KUM_WEWRT.

  SELECT * FROM MSEG INTO TABLE M_TAB
              WHERE MATNR EQ POS_TAB-MATNR
              AND   AUFNR EQ POS_TAB-AUFNR
              AND   AUFPS EQ POS_TAB-POSNR.

  LOOP AT M_TAB.
    CHECK M_TAB-BWART EQ '101' OR M_TAB-BWART EQ '102'
                               OR M_TAB-BWART EQ '122'.
*..inward movement
    IF M_TAB-SHKZG EQ 'S'.
      IF NOT M_TAB-DMBTR IS INITIAL.
        KUM_WEWRT = KUM_WEWRT + M_TAB-DMBTR.
      ENDIF.
      IF NOT M_TAB-BSTMG IS INITIAL.
        KUM_WEMNG = KUM_WEMNG + M_TAB-BSTMG.
      ELSE.
        IF M_TAB-ERFME EQ POS_TAB-AMEIN.
          KUM_WEWRT = KUM_WEWRT + M_TAB-DMBTR.
        ELSE.
          IF M_TAB-MEINS EQ POS_TAB-AMEIN.
            KUM_WEMNG = KUM_WEMNG + M_TAB-MENGE.
          ELSE.
            WRITE: 'ERROR - Order:', POS_TAB-AUFNR.
            CLEAR U_FLAG.
            EXIT.
          ENDIF.
        ENDIF.
      ENDIF.
    ELSE.
*..outward movement
      IF NOT M_TAB-DMBTR IS INITIAL.
        IF M_TAB-DMBTR NE M_TAB-BUALT AND
           NOT M_TAB-BUALT IS INITIAL.
          KUM_WEWRT = KUM_WEWRT - M_TAB-BUALT.
        ELSE.
          KUM_WEWRT = KUM_WEWRT - M_TAB-DMBTR.
        ENDIF.
      ENDIF.
      IF NOT M_TAB-BSTMG IS INITIAL.
        KUM_WEMNG = KUM_WEMNG - M_TAB-BSTMG.
      ELSE.
        IF M_TAB-ERFME EQ POS_TAB-AMEIN.
          KUM_WEMNG = KUM_WEMNG - M_TAB-ERFMG.
        ELSE.
          IF M_TAB-MEINS EQ POS_TAB-AMEIN.
            KUM_WEMNG = KUM_WEMNG - M_TAB-MENGE.
          ELSE.
            WRITE: 'ERROR - Order:', POS_TAB-AUFNR.
            CLEAR U_FLAG.
            EXIT.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.

    U_FLAG = 'X'.
  ENDLOOP.
*..update necessary ?
  IF NOT U_FLAG IS INITIAL AND ( NOT KUM_WEMNG IS INITIAL
                           AND KUM_WEMNG NE POS_TAB-WEMNG )
                           OR  ( NOT KUM_WEWRT IS INITIAL
                           AND KUM_WEWRT NE POS_TAB-WEWRT ).
    SELECT SINGLE * FROM MKPF WHERE MBLNR EQ M_TAB-MBLNR
                               AND MJAHR  EQ M_TAB-MJAHR.
    IF SY-SUBRC IS INITIAL.
      MOVE MKPF-BUDAT TO POS_TAB-LTRMI.
    ENDIF.
    IF KUM_WEMNG = POS_TAB-WEMNG  OR
       KUM_WEWRT = POS_TAB-WEWRT.
      WRITE: / 'No update for the following order - check the order !'.
    ELSE.
      MOVE-CORRESPONDING POS_TAB TO UPOS_TAB.
      MOVE KUM_WEMNG TO UPOS_TAB-WEMNG.
      MOVE KUM_WEWRT TO UPOS_TAB-WEWRT.
      APPEND UPOS_TAB.
    ENDIF.
    WRITE: / 'Order:', POS_TAB-AUFNR, 'Material:', POS_TAB-MATNR,
          'Delivered Quantity:', POS_TAB-WEMNG, POS_TAB-AMEIN,
          'Value:', POS_TAB-WEWRT.
    WRITE: / 'Document   Item   Move-type Stock-Quantity  Unit',
                         'Entry-Quantity   Unit       Value'.
    LOOP AT M_TAB.
      WRITE: / M_TAB-MBLNR, M_TAB-ZEILE, 21 M_TAB-BWART, 27 M_TAB-MENGE,
                 M_TAB-MEINS, M_TAB-BSTMG, M_TAB-BSTME, 71 M_TAB-DMBTR,
                 M_TAB-WAERS.
    ENDLOOP.
    ULINE.
    DIF_QUAN = KUM_WEMNG - POS_TAB-WEMNG.
    DIF_WERT = KUM_WEWRT - POS_TAB-WEWRT.
    WRITE: /22 'Sum:', KUM_WEMNG, POS_TAB-AMEIN, 71 KUM_WEWRT,
        / 'Balance Quantity Document - Order:',
          'Quantity:', DIF_QUAN, 'Value:', DIF_WERT.
    SKIP 1.
  ENDIF.
ENDLOOP.

CLEAR SY-DBCNT.
*...change order items.
IF TEST_? IS INITIAL AND NOT UPOS_TAB[] IS INITIAL.
  UPDATE AFPO FROM TABLE UPOS_TAB.
ENDIF.
SKIP 1.
WRITE: / 'Changed Orders:', SY-DBCNT.

******** End of    Report                                                                                                          

SAP查询事务、表属于哪个模块

   这个功能主要是在汇报SAP的产品问题时,让你知道该选择你所汇报的问题所哪个子模块的。它可以依据事务代码、表、程序名、域、数据元素来查找。
     方法:SE38,执行报表程序:RSSTATUS .

Sunday, February 27, 2011

异地同行转账和跨行转账哪个更便宜

按常规,我们会理解,同行肯定比跨行要便宜,但是,请看截图:
  以下转账额度均为1500元,时间上相关了两月。


  建行转工行,手续费7.5,费率 0.5% :








工行转工行,手续费13.5,接近1%

  
 不符合大家的常规思维吧,这就对了,我们知道在天朝,有着各种各种神奇。
  
  我不是要证明建行比工行好,其实他们都灰常滴的黑.
  这收费,真是晶晶亮,透心凉 。 


  每月的工钱,发下来前要给黑社会交税。买东西时,还得再给黑社会上税。转个账,还得让人刮掉一层。我只想说,去你妈逼的这个变相的奴隶社会。

Wednesday, February 16, 2011