今天做一个需求,需修改STO创建的DN(内向交货单,外向交货单)单项目中的库存地点,就是LIPS-LGORT。
开始时想在交货过账时顺便一起修改,我使用的是WS_DELIVERY_UPDATE过账的,在过账的程序如下,在网上找到说是加入口KZLGO这个标记可修改,但我测试总是不成功,不成功代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
... LS_VBPOK_TAB-LFIMG = LS_LIPS-LFIMG. LS_VBPOK_TAB-VRKME = LS_LIPS-VRKME. LS_VBPOK_TAB-MEINS = LS_LIPS-MEINS. LS_VBPOK_TAB-LGORT = LS_CONFG-RESLO_FH2."内采单DC对应 LS_VBPOK_TAB-KZLGO = 'X'. APPEND LS_VBPOK_TAB TO LT_VBPOK_TAB. CLEAR LS_VBPOK_TAB. AT END OF VBELN. *---发货过账 CALL FUNCTION 'WS_DELIVERY_UPDATE' EXPORTING VBKOK_WA = I_VBKOK COMMIT = 'X' DELIVERY = L_VBELN UPDATE_PICKING = 'X' TABLES VBPOK_TAB = LT_VBPOK_TAB PROT = LT_PROT EXCEPTIONS ERROR_MESSAGE = 1 OTHERS = 2. |
后来没有办法,只能是使用DN单的更新BAPI函数,在过账前进行修改一下,
1.成功代码
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
*&---------------------------------------------------------------------* *& Report ZTES10 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZTEST10. TABLES: LIPS. PARAMETERS: P_VBELN TYPE LIPS-VBELN. DATA: LS_STR_HEADER_DATA LIKE BAPIOBDLVHDRCHG, LT_STR_HEADER_CONTROL LIKE BAPIOBDLVHDRCTRLCHG, LS_TECHN_CONTROL LIKE BAPIDLVCONTROL. DATA: LT_ITEM_DATA LIKE TABLE OF BAPIOBDLVITEMCHG, LS_ITEM_DATA LIKE BAPIOBDLVITEMCHG, LT_ITEM_CONTROL LIKE TABLE OF BAPIOBDLVITEMCTRLCHG, LS_ITEM_CONTROL LIKE BAPIOBDLVITEMCTRLCHG, LT_ITEM_DATA_SPL LIKE TABLE OF /SPE/BAPIOBDLVITEMCHG, LS_ITEM_DATA_SPL LIKE /SPE/BAPIOBDLVITEMCHG, LT_RETURN LIKE TABLE OF BAPIRET2, LS_RETURN LIKE BAPIRET2. DATA: LT_LIPS LIKE TABLE OF LIPS, LS_LIPS LIKE LIPS. SELECT * INTO TABLE LT_LIPS FROM LIPS WHERE VBELN = P_VBELN. LS_STR_HEADER_DATA-DELIV_NUMB = P_VBELN. LT_STR_HEADER_CONTROL-DELIV_NUMB = P_VBELN. LS_TECHN_CONTROL-UPD_IND = 'U'. LOOP AT LT_LIPS INTO LS_LIPS. LS_ITEM_DATA-DELIV_NUMB = LS_LIPS-VBELN. LS_ITEM_DATA-DELIV_ITEM = LS_LIPS-POSNR. LS_ITEM_DATA-MATERIAL = LS_LIPS-MATNR. LS_ITEM_DATA-BATCH = LS_LIPS-CHARG. LS_ITEM_DATA-DLV_QTY = LS_LIPS-LFIMG. LS_ITEM_DATA-DLV_QTY_IMUNIT = LS_LIPS-LFIMG. LS_ITEM_DATA-HIERARITEM = LS_LIPS-POSNR. LS_ITEM_DATA-USEHIERITM = 1. LS_ITEM_DATA-FACT_UNIT_NOM = LS_LIPS-UMVKZ. LS_ITEM_DATA-FACT_UNIT_DENOM = LS_LIPS-UMVKN. LS_ITEM_DATA-BASE_UOM = LS_LIPS-MEINS. LS_ITEM_DATA-SALES_UNIT = LS_LIPS-VRKME. APPEND LS_ITEM_DATA TO LT_ITEM_DATA. LS_ITEM_CONTROL-DELIV_NUMB = LS_LIPS-VBELN. LS_ITEM_CONTROL-DELIV_ITEM = LS_LIPS-POSNR. LS_ITEM_CONTROL-CHG_DELQTY = 'X'. APPEND LS_ITEM_CONTROL TO LT_ITEM_CONTROL. LS_ITEM_DATA_SPL-DELIV_NUMB = LS_LIPS-VBELN. LS_ITEM_DATA_SPL-DELIV_ITEM = LS_LIPS-POSNR. LS_ITEM_DATA_SPL-PICK_DENIAL = 'X'. LS_ITEM_DATA_SPL-STGE_LOC = 'C001'. "库存地点 APPEND LS_ITEM_DATA_SPL TO LT_ITEM_DATA_SPL. LS_ITEM_DATA_SPL-DELIV_NUMB = LS_LIPS-VBELN."交货 LS_ITEM_DATA_SPL-DELIV_ITEM = LS_LIPS-POSNR."原行项目 LS_ITEM_DATA_SPL-STGE_LOC = 'C001'. "库存地点 APPEND LS_ITEM_DATA_SPL TO LT_ITEM_DATA_SPL. ENDLOOP. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING HEADER_DATA = LS_STR_HEADER_DATA HEADER_CONTROL = LT_STR_HEADER_CONTROL DELIVERY = P_VBELN TECHN_CONTROL = LS_TECHN_CONTROL TABLES * HEADER_DEADLINES = IT_HEADER_DEADLINES ITEM_DATA = LT_ITEM_DATA LS_ITEM_CONTROL = LT_ITEM_CONTROL ITEM_DATA_SPL = LT_ITEM_DATA_SPL RETURN = LT_RETURN. IF SY-SUBRC = 0. COMMIT WORK. ENDIF. * IF lt_return[] IS INITIAL. * CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' * EXPORTING * wait = 'X'. |