BBP_DOC_SAVE_BADI是SRM系统中单据保存时触发的BADi,这个BADi是过滤期相关的,所以使用这个badi时要注意增加对象类型,比如要想在合同保存时触发就要加上BUS2000113,否则合同保存时并不能进入这个BADi如下:
SRM合同保存的触发按钮如下,
一个简单例子,在合同保存时中更改一个字段值,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
METHOD if_ex_bbp_doc_save_badi~bbp_doc_save.
DATA:es_header TYPE bbp_pds_ctr_header_d,
ls_header_u TYPE bbp_pds_ctr_header_u.
DATA:lt_msg TYPE STANDARD TABLE OF bbp_pds_messages,
ls_msg TYPE bbp_pds_messages,
lv_msg(255) TYPE c.
* 读取缓存数据
CALL FUNCTION 'BBP_PD_CTR_GETDETAIL'
EXPORTING
i_guid = iv_doc_guid
IMPORTING
e_header = es_header.
es_header-zdhhth = 'BAIDUSAP.COM'. "更新一个自定义字段值,
* 将新值更新到合同中
MOVE-CORRESPONDING es_header TO ls_header_u.
CALL FUNCTION 'BBP_PD_CTR_UPDATE'
EXPORTING
i_save = 'X'
i_header = ls_header_u
* IMPORTING
* es_header = ls_header_d
TABLES
* i_item = lt_ctr_item
* i_dis = lt_dis
e_messages = lt_msg.
<!--StartFragment --> <span class="L0S52">UPDATE </span>bbp_pdhsc <span class="L0S52">SET </span>zdhhth <span class="L0S55">= </span>es_header<span class="L0S70">-</span>zdhhth <span class="L0S52">WHERE </span>guid <span class="L0S55">= </span>iv_doc_guid<span class="L0S55">.</span>
ENDMETHOD.
|
自定义字段是保存在标准表BBP_PDHSC中的,这个表要用update 语句直接更新。。。。
以上。