【Demo】改变SO项目状态并取消拒绝原因实现
生活随笔
收集整理的這篇文章主要介紹了
【Demo】改变SO项目状态并取消拒绝原因实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
銷售訂單審批狀態配置的數據表有三級(轉自:博客鏈接):
- 狀態參數文件的數據表是TJ20,對應的語言描述表TJ20T;
- 用戶狀態條目的數據表是TJ30,對應的語言描述表TJ30T,注意字段TJ30-ESTAT(用戶狀態)是條目的自增長值,不可以編輯,格式“Exxx”,例如E0001、E0002;
- 用戶狀態控制的數據表是TJ31,字段MODKZ存放編輯標志,1為允許、2為允許但警告、3為禁止。
下面的Demo的作用是改變審批狀態,同時取消行項目拒絕原因。
1、更新審批狀態
data: ls_objnr type jsto-objnr. clear: ls_objnr.ls_objnr = 'VB' && vbap-vbeln && vbap-posnr.call function 'I_CHANGE_STATUS'exportingobjnr = ls_objnrestat_inactive = 'E0002'estat_active = 'E0004'stsma = 'ZSD001'exceptionscannot_update = 1others = 2.這里要是狀態沒有把控到位則會出現Dump。
2、取消拒絕原因
perform change_so using vbap-vbeln vbap-posnrchanging lv_flag.if lv_flag = 'S'."取消成功elseif lv_flag = 'E'."取消失敗endif.form change_so using p_vbeln p_posnrchanging p_flag.data: l_vbeln type bapivbeln-vbeln,l_headx type bapisdh1x,l_ret type table of bapiret2 with header line,l_item type table of bapisditm with header line,l_itemx type table of bapisditmx with header line.refresh:l_item,l_itemx,l_ret.l_headx-updateflag = 'U'.l_item-itm_number = p_posnr.l_item-reason_rej = ''.append l_item. clear l_item.l_itemx-itm_number = p_posnr.l_itemx-updateflag = 'U'.l_itemx-reason_rej = 'X'.append l_itemx. clear l_itemx.call function 'BAPI_SALESORDER_CHANGE'exportingsalesdocument = p_vbelnorder_header_inx = l_headxtablesreturn = l_retorder_item_in = l_itemorder_item_inx = l_itemx.loop at l_ret where type ca 'AEX'.p_flag = 'E'.endloop.if sy-subrc <> 0.call function 'BAPI_TRANSACTION_COMMIT'exportingwait = 'X'.p_flag = 'S'.else.call function 'BAPI_TRANSACTION_ROLLBACK'.endif.endform.?
總結
以上是生活随笔為你收集整理的【Demo】改变SO项目状态并取消拒绝原因实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【整理】固定资产后续业务处理
- 下一篇: 【配置】固定资产组织结构配置