銷售價格建立/更改BAPI

今天想談談本身在建立銷售價格遇到的問題,以前一段時間客戶要求可以批量執行VK11/VK12進行銷售價格的建立和修改。查閱了網上的資料和SAP的論壇,發現一個函數BAPI_PRICES_CONDITIONS彷佛能解決這個問題,這裏只要可以改變bapi函數的參數就能實現建立或者更改的操做,具體對應關係以下:api

從上面能夠看出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.
相關文章
相關標籤/搜索