下面是使用VB Call BAPI_CREATE_PO建立PO的例子的部分,首先使用SE37 测试,基本上建立PO最简单只需要以下参数. 注意vendor必须是10位数,如果长度不足,请加0
tvendor = Mid("0000000000", 1, 10 - Len(Trim(VENDOR.Text))) + Trim(VENDOR.Text)
'保证如果vendor length<10补充到10位,否则就会出错
poheader.Value("VENDOR") = tvendor
poheader.Value("PURCH_ORG") = "1000" 'Trim(Text2.Text)
poheader.Value("PUR_GROUP") = "111" ' Trim(Text3.Text)
poheader.Value("DOC_TYPE") = "NB" 'Trim(Text4.Text)
poitems.Rows.Add
poitems.Value(1, "PUR_MAT") = "C-010" ' Trim(Text5.Text)
poitems.Value(1, "PLANT") = "1100" 'Trim(Text6.Text)
poitems.Value(1, "NET_PRICE") = "222" ' Trim(Text7.Text)
poitemschedule.Rows.Add
poitemschedule.Value(1, "DELIV_DATE") = "2005/08/16" 'Text8.Text
poitemschedule.Value(1, "QUANTITY") = "888" ' Text9.Text
使用物料主数据
物料移动报表
LIS系统简介 |
企业SD的一般流程汇总: 典型的SD开发有(不包含SD模块增强). 发票打印|销售分析报表|Credit Note申请Form|Shipping Note|Sales Forecast|Dunning Letter|Shipment Status|Packing List|产品批次和系列号报表等. 由于SD可能有大量的用户增强,在实例中有几个典型的案例. |
1.读取销售文本
2.销售订单审批
3.
4.
5.
6.
7.
8.
企业PP的一般流程汇总: 典型的SD开发有(不包含SD模块增强). 发票打印|销售分析报表|Credit Note申请Form|Shipping Note|Sales Forecast|Dunning Letter|Shipment Status|Packing List|产品批次和系列号报表等. 由于SD可能有大量的用户增强,在实例中有几个典型的案例.
|
1.MD04 save的Prod极其素原的PR
2.
3.
4.
5.
6.
7.
8.
|
在HR,AP,AP,GL,Consolidation,Real Estate,Special Purpose Ledger等多模快都能发现有效性检查(Validation)配置,所谓 Validation 不过是在凭证保存前根据设置条件判断此凭证是否有效,再根据Validation设置的消息类型(关于消息请参考第例消息控制)决定凭证是否允许保存(顺利保存的),对稍微了解ABAP开发基础的用户是很容易理解的.
凭证Validation,Substitution和User Exit的使用保证了凭证能成功通过某些企业实际的自订复杂业务检测最后保存在数据库中.
*** 可使用 Validation 检测在记帐时某些 cost center 只能对应到具体某 Functional Area( 如上了 Functional Area 的话 ), 某些费用类科目只能记到某具体
Cost center 等 .
比较实用的Validation IMG T-code有: OB28:AP/AR/GL Doc.| OAZ1:AM Posting| GCVW:Global Validation(In SPL,Company Level)|GCVV:Local Validation(In SPL, Company code Level). |
下面以OB28为例,详细说明Validation的用法.(IMG Path如图7-1标号1)
[1]定义记帐确认.
[2]定义会计凭证退代.
建立Validation步骤:
下面以Line Validation STLINE只允许用户STONEF在5100(本位币HKD)记帐时本位货币金额不超过1000HKD为例子,详细介绍Validation的配置步骤.
***当然使用其他配置也能达到相同效果.
1. 选择Callup Point建立Validation Name(如图7-2).
[1]1.在凭证抬头触发 2.凭证行项目触发 3.整个凭证触发,触发通常发生在用户按Enter键和保存之时.
[2]新建Validation时按F2进入详细画面(如图7-3)
[3]1表示激活,只有选择激活后Validation才真正起作用.
2.Validation 建立步骤详解(如图7-3).
[1]新建Validation,如在此新建Validation要回到图7-2按New entries然后激活.
[2] 新建Step,一个Step包含先决条件,检查和消息. 图7-3 Step001表示的是在
Company code 5100(Local Currency HKD)下如果User是STONEF,如记帐本位币超过1000HKD,就弹出错误消息ZFIMSG 017(关于消息剖析请参考第例消息控制).
***Validation触发的条件是满足先决条件但是不满足检查条件.
[3]Rule可用在Validation,Substitution,Report Write Selection甚至ATP check,简单理解,经常用到的一些判断条件可建立成Rule,将Prerequisite和check建立俩Rule-ZRULE1(图7-4)和ZRULE2(图略.BSEG-DMBTR <= '1000.00'),和图7-2效果一样,不同的是此俩rule还可用在Substitution等中(请看第 8 例凭证的退代),可重复使用.
重复性的好处还表现在你只要修改rule(比如现在STONEF允许最大记帐金额是
2000),所有用到此rule的Validation,Substitution全部生效.
图7-5使用Rule和图7-3直接使用ABAP code效果一样.
***Rule 做为一个条件可用在定义其它Rule,比如ZRULE3 包含ZRULE1 and 其他条件.
[4]Header Validation只可选BKPF字段和只在凭证头回车或保存凭证触发.
[5]Item Validation先决条件可选BKPF和BSEG,但是Check只能选BSEG字段,否则不被触发.
*** 比如先决条件条件是BKPF-BUKRS,Check是BKPF-USNAM,很明显这是无效的Validation.
另一个问题是如有多个行项目满足了条件会弹出多条消息.
[6]整个凭证有效,就是在Doc Header,Item回车和保存都触发.
[7]先决条件条件(参照[2]).
[8]检查(参照[2]).
[9]SAP消息使用在多种地方,比如想打印传真PO需要建立一个相应消息,另外消息还用在处理程序例外上,在这里是指后者(更详细请参考第例消息控制).
如上图7-6.
[1]E表示消息定义为错误类别,此时不可保证凭证,I,W类别只是给出信息和警告,允许凭证保存,如选A,则会退出当前Tcode操作.
[2]用户可使用 Tcode:SE91字定义的Message Class(图7-7).
[3].在此选择了消息号017使用了俩参数(&),&表示在实际弹出消息时能使用实际值取代&.
[4].使用消息变量.
图7-8表示用户STONEF在使用FB50手工记帐时,Local currency amount>1000
时出现的错误(Validation ZSTLINE生效,消息的俩&参数被BKPF-USNAM和BSEG-DMBTR代替),出现的错误消息,由于凭证俩行Amount都>1000,此消息将弹出俩次.
1.ZSTLINE显然对USER STONEF操作所产生的任何会计凭证都有效,比如只想限制STONE在使用FB50记帐但是F-53付款时却允许超过1000HKD,请在先决条件上再加上Tcode FB50则Validationi就只对FB50有效. 2.想用Tcode比如FB50测试新建Validation,起码要求退出当前操作再进入,否则SAP会从缓冲中读数据认为还是上次的配置,结果拥护却认为配置失败,最保证的方法是从Validation IMG窗口使用/O FB50(或其它Tcode). 3.这种方法同样适用于任何其它相同情况的测试. |