一般而言审批策略特征类创建时,特征项都是从CEBAN 和 CEKKO两个结构里取值。
但是有时候,审批策略控制过程中,需要其他非以上两结构中字段,
比如PS那边创建的采购申请需要些项目的,或者是采购申请做了增强,有些增强字段。
这个时候,可以用ceban-usrc1 ceban-usrc2这两个值存储部分字段值,
但是字段过多,
则可以使用自定义配置表,
配置表中客户维护需要校验哪些字段,并根据这些字段判断出增强策略;
然后把审批策略值赋给ceban-usrc1
配置特征类的特征项时,只维护一个usrc1特征项,
如下图:
[cl03:特征类,只维护一个特征]
[ct04:特征维护时,附加数据使用ceban-usrc1]
自定义审批策略配置表:
维护好后,在增强中,通过如工程,类型,科目等最终确定审批策略(如"U2M1"),然后赋给ceban-usrc1。
系统则可根据usrc1值确定对应审批策略。
具体如下:
首先看些配置相关的:spro
双击某行
点击分类
如果usrc1赋值后,跟“批准策略的用户字段的格式字段”值一致,
采购申请凭证类型也一致,【可以把凭证类型的校对放入自建表,此处只留usrc1】
则会采用审批策略:B115 (审批组B1,审批策略:15)
smcd查看增强 M06B0002
【如若知道exit_函数名想得到enhancement ,从MODSAP表查】
主要是根据其他控制条件,确定审批策略,赋值给e_ceban-usrc1
值得注意的是
如果usrc1这个字段在程序里没取到值,
建议给他赋个永远不能取到的值:比如ZZZZ
这样避免usrc1这个字段为空,而配置中恰有该字段为空的审批策略,
这样就会误取
为了做的更严谨【前提是usrc1赋值时,赋为系统配置的审批策略】,
获取到usrc1这个字段(即审批策略)后,去配置表校验
配置表:T16FT
(配置视图 :V_16FS)
如果发现获取的值在系统没有,则赋值为ZZZZ。
这样更好些
一般的值都可以在ceban这个结构里取
如果做了增强,
这里做了增强,
那么EBAN表也需要做增强
这俩字段都做增强了,
意味着如果调用bapi做采购申请创建修改等
也需要在附加字段里把这个增强字段加上
lw_itm-csid = '991'.
lw_itm-preq_item = '00010'.
extensionin-structure =
'BAPI_TE_REQUISITION_ITEM'.
extensionin-valuepart1 =
lw_itm.
APPEND extensionin.
CALL FUNCTION 'BAPI_REQUISITION_CREATE'
IMPORTING
number
= pr_no
TABLES
requisition_items
= pr_item
requisition_account_assignment = pr_account
requisition_item_text
= pr_item_id
return
= pr_return
extensionin
= extensionin[].
具体实例:
http://blog.sina.com.cn/s/blog_c0978c9b0101i15v.html
另外,创建采购申请的途径很多,比如MM的,PS操作等,还有自开发程序
各种情况应该考虑清楚
可能有些值是传不进来的
所以只能直接取屏幕值或者靠ABAP内存或者sap内存