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 语句直接更新。。。。
以上。
不错,感谢整理!
2020-01-16 2:37 下午