銷售價格創建/更改BAPI


今天想談談自己在創建銷售價格遇到的問題,之前一段時間客戶要求能夠批量執行VK11/VK12進行銷售價格的創建和修改。查閱了網上的資料和SAP的論壇,發現一個函數BAPI_PRICES_CONDITIONS似乎能解決這個問題,這里只要能夠改變bapi函數的參數就能實現創建或者更改的操作,具體對應關系如下:

從上面可以看出009/005(創建)003(刪除)004(更改)。但是在實際運用中發現了問題,其一是009或者005不對日期進行檢查,相同的日期段能在AXXX價格表里面存在二條,其二是日志表CDHDR/CDPOS中不存在更改的記錄,不便於以后追尋問題。但是大數據期初創建價格條件時本人覺得這個函數還是很好用的,速度比BDC快(本人不才,后面為了需求的安全性考慮使用了該方法,各位ABAP大神有更好的方法請留言賜教)。附上刪除的代碼:

 1   DATA:
 2     gs_bapicondct  TYPE bapicondct,
 3     gs_bapicondhd  TYPE bapicondhd,
 4     gs_bapicondit  TYPE bapicondit,
 5     gs_bapiret2    TYPE bapiret2,
 6     gt_bapicondct  TYPE TABLE OF bapicondct,
 7     gt_bapicondhd  TYPE TABLE OF bapicondhd,
 8     gt_bapicondit  TYPE TABLE OF bapicondit,
 9     gt_bapicondqs  TYPE TABLE OF bapicondqs,
10     gt_bapicondvs  TYPE TABLE OF bapicondvs,
11     gt_bapiknumhs  TYPE TABLE OF bapiknumhs,
12     gt_mem_initial TYPE TABLE OF cnd_mem_initial,
13     gt_bapiret2    TYPE TABLE OF bapiret2.
14      CLEAR:gt_bapicondct,gt_bapicondhd,gt_bapicondit,gt_bapicondqs,
15           gt_bapicondvs,gt_bapiret2,gt_bapiknumhs,gt_mem_initial.
16 *   如果截止日期更改的話刪除原記錄再插入
17     IF gs_item-datbi <> gs_item-datbi_o.
18       gs_bapicondct-operation  = '003'.
19       gs_bapicondct-cond_no    = gs_item-knumh.
20       CONCATENATE gs_item-vkorg gs_item-vtweg gs_item-kunnr gs_item-matnr
21              INTO gs_bapicondct-varkey.
22       gs_bapicondct-applicatio = 'V'.
23       gs_bapicondct-cond_usage = 'A'.
24       gs_bapicondct-table_no   = '305' .
25       gs_bapicondct-cond_type  = 'ZA01'.
26       gs_bapicondct-valid_to   = gs_item-datbi_o.
27       gs_bapicondct-valid_from = gs_item-datab_o.
28       APPEND gs_bapicondct TO gt_bapicondct.
29 
30       " KONH
31       gs_bapicondhd-operation  = '003'.
32       gs_bapicondhd-cond_no    = gs_item-knumh.
33       gs_bapicondhd-varkey     = gs_bapicondct-varkey.
34       gs_bapicondhd-applicatio = 'V'.
35       gs_bapicondhd-cond_usage = 'A'.
36       gs_bapicondhd-table_no   = '305' .
37       gs_bapicondhd-cond_type  = 'ZA01'.
38       gs_bapicondhd-valid_from = gs_bapicondct-valid_from.
39       gs_bapicondhd-valid_to   = gs_bapicondct-valid_to.
40       APPEND gs_bapicondhd TO gt_bapicondhd.
41 
42       " KONP tabel
43       gs_bapicondit-operation  = '003'.
44       gs_bapicondit-cond_no    = gs_item-knumh.
45       gs_bapicondit-cond_count = '01'.
46       gs_bapicondit-applicatio = 'V'.
47       gs_bapicondit-cond_type  = 'ZA01'.
48       gs_bapicondit-scaletype  = 'A'.
49       gs_bapicondit-calctypcon  = 'C'.
50       gs_bapicondit-numconvert  = '1'.
51       gs_bapicondit-denominato  = '1'.
52       SELECT SINGLE meins FROM mara INTO gs_bapicondit-base_uom
53        WHERE matnr = gs_item-matnr.
54       gs_bapicondit-condcurren = gs_item-konwa.
55       gs_bapicondit-conditidx  = '1'.
56       gs_bapicondit-cond_value = gs_item-kbetr.
57       gs_bapicondit-condcurr   = gs_item-konwa.
58       gs_bapicondit-cond_p_unt = gs_item-kpein.
59       gs_bapicondit-cond_unit  = gs_bapicondit-base_uom.
60       APPEND gs_bapicondit TO gt_bapicondit.
61       CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
62         EXPORTING
63           pi_initialmode       = ''
64           pi_physical_deletion = 'X'
65         TABLES
66           ti_bapicondct        = gt_bapicondct[]
67           ti_bapicondhd        = gt_bapicondhd[]
68           ti_bapicondit        = gt_bapicondit[]
69           ti_bapicondqs        = gt_bapicondqs[]
70           ti_bapicondvs        = gt_bapicondvs[]
71           to_bapiret2          = gt_bapiret2[]
72           to_bapiknumhs        = gt_bapiknumhs[]
73           to_mem_initial       = gt_mem_initial[]
74         EXCEPTIONS
75           update_error         = 1
76           OTHERS               = 2.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM