'BAPI_OUTB_DELIVERY_CHANGE' 

    关于交货单批次拆分,BAPI准备数据时,如果没有输入基本单位和销售单位,物流过账的时候OK,但到财务就会发现拆分的批次行没有单位。LIPS中新插入的批次拆分的行中,没有基本单位和销售单位。比较奇怪的是,PRD频繁重现这个问题,DEV却无法重现,后来只能在代码里加上基本单位和销售单位。我推测是必须加的,因为在批次拆分的时候,CONTROL里面只有对数量的FLAG,没有针对单位的FLAG,因此肯定是要在准备的行项目数据中提供信息。

 

 

转载两段代码。

 

 

http://hi.baidu.com/sdslee/blog/item/d655201106f3c0f7c2ce79a8.html

 

 

 

*Set Delivery Header data
    g_delivery_no = g_scr_vbeln.

    gs_header_data-deliv_numb     = g_delivery_no.
    gs_techn_control-upd_ind      = 'U'.
    gs_header_control-deliv_numb = g_delivery_no.

   SORT gt_batch[] BY posnr ASCENDING.
   LOOP AT gt_batch INTO gs_batch.

     ON CHANGE OF gs_batch-posnr.
       READ TABLE lt_posnr INTO ls_posnr
         WITH KEY posnr = gs_batch-posnr BINARY SEARCH.
       IF sy-subrc = 0.
          l_count = ls_posnr-count.
       ENDIF.

       SELECT SINGLE lfimg kcmeng  INTO (l_dlv_qty,l_kcmeng) FROM lips
         WHERE vbeln = g_delivery_no AND posnr = gs_batch-posnr.
       IF sy-subrc = 0.
          ls_item_data-dlv_qty = l_dlv_qty.
       ENDIF.

        ls_item_data-dlv_qty         = ls_item_data-dlv_qty - l_count.
        ls_item_data-dlv_qty_imunit = ls_item_data-dlv_qty.

        ls_item_data-deliv_numb    = g_delivery_no.
        ls_item_data-material      = gs_batch-matnr.
        ls_item_data-deliv_item    = gs_batch-posnr.
*        ls_item_data-dlv_qty       = 1.
*        ls_item_data-dlv_qty_imunit = 1.
        ls_item_data-fact_unit_nom    = 1.
        ls_item_data-fact_unit_denom = 1.
       APPEND ls_item_data TO gt_item_data.
       CLEAR ls_item_data.
       CLEAR l_count.
     ENDON.

      ls_item_data-deliv_numb    = g_delivery_no.
      ls_item_data-material      = gs_batch-matnr.
      ls_item_data-deliv_item    = l_deliv_item.
      ls_item_data-hieraritem    = gs_batch-posnr.
      ls_item_data-dlv_qty       = 1.
      ls_item_data-dlv_qty_imunit   = 1.
      ls_item_data-fact_unit_nom    = 1.
      ls_item_data-fact_unit_denom = 1.
      ls_item_data-batch            = gs_batch-batch.
      ls_item_data-usehieritm       = '1'.
     APPEND ls_item_data TO gt_item_data.

      ls_item_control-deliv_numb = g_delivery_no.
      ls_item_control-deliv_item = l_deliv_item.
      ls_item_control-chg_delqty = 'X'.
     APPEND ls_item_control TO gt_item_control.

      ls_item_control-deliv_numb = g_delivery_no.
      ls_item_control-deliv_item = gs_batch-posnr.
      ls_item_control-chg_delqty = 'X'.
     COLLECT ls_item_control INTO gt_item_control.

      l_deliv_item = l_deliv_item + 1.
   ENDLOOP.


   CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
     EXPORTING
        header_data                    = gs_header_data
        header_control                 = gs_header_control
        delivery                       = g_delivery_no
        techn_control                  = gs_techn_control
     TABLES
        item_data                      = gt_item_data
        item_control                   = gt_item_control
       return                         = gt_return
*           TOKENREFERENCE                 =
*           ITEM_DATA_SPL                  =
*           COLLECTIVE_CHANGE_ITEMS        =
*           NEW_ITEM_DATA                  =
*           NEW_ITEM_DATA_SPL              =
*           NEW_ITEM_ORG                   =
*           item_data_docu_batch           = gt_spbatch
              .

   IF gt_return[] IS INITIAL.
     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait = 'X'.
   ELSE.

     WRITE : '由于以下原因操作失败',/.
     LOOP AT gt_return INTO gs_return .
       WRITE: 'item', sy-tabix, gs_return-message, / .

http://hi.baidu.com/gary_c/blog/item/56fb5e1685c9695cf2de3246.html

 

BAPI 更改交货单 & 更改捡配 'BAPI_OUTB_DELIVERY_CHANGE'
2010年07月31日 星期六 下午 05:45

REPORT  z_update_delivery.

TABLES likp.
PARAMETERS p_del LIKE likp-vbeln DEFAULT ''.

DATA:
str_header_data LIKE bapiobdlvhdrchg,
str_header_control LIKE bapiobdlvhdrctrlchg.

DATA it_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.
DATA it_header_deadlines TYPE STANDARD TABLE OF bapidlvdeadln
WITH HEADER LINE.

DATA :item_data LIKE bapiobdlvitemchg OCCURS 0 WITH HEADER LINE,
       item_control LIKE bapiobdlvitemctrlchg OCCURS 0 WITH HEADER LINE,
       wa_lips LIKE lips OCCURS 0 WITH HEADER LINE.

DATA: v_16(16) TYPE c.

DATA v_del LIKE bapiobdlvhdrchg-deliv_numb.
SELECT SINGLE * FROM likp WHERE vbeln = p_del.
CONCATENATE sy-datum sy-uzeit INTO v_16.


*str_HEADER_DATA-GROSS_WT
*UNIT_OF_WT_ISO
*VOLUMEUNIT_ISO

str_header_data-unload_pt = likp-ablad.
str_header_data-unit_of_wt = likp-gewei.
str_header_data-incoterms1 = likp-inco1.
str_header_data-incoterms2 = likp-inco2.
str_header_data-door = likp-lgtor.
str_header_data-dlv_block = likp-lifsk.
str_header_data-dlv_prio = likp-lprio.
str_header_data-net_weight = likp-ntgew.
str_header_data-route = likp-route.
str_header_data-deliv_numb = likp-vbeln.
str_header_data-volumeunit = likp-voleh.
str_header_data-volume = likp-volum.
str_header_data-ship_cond = likp-vsbed.

v_del = likp-vbeln.
str_header_data-deliv_numb = likp-vbeln.
str_header_control-gdsi_date_flg = 'X'.
it_header_deadlines-timetype = 'WSHDRWADTI'.
it_header_deadlines-timestamp_utc = v_16.
APPEND it_header_deadlines.

SELECT  * INTO wa_lips FROM lips WHERE vbeln = p_del.
   item_data-deliv_numb = wa_lips-vbeln.
   item_data-deliv_item = wa_lips-posnr.
   item_data-material = wa_lips-matnr.
   item_data-batch = wa_lips-charg.
   item_data-dlv_qty = 2.
   item_data-dlv_qty_imunit = 2.
   item_data-fact_unit_nom = wa_lips-umvkz.
   item_data-fact_unit_denom = wa_lips-umvkn.
   item_data-conv_fact = wa_lips-umref.
   item_data-gross_wt = wa_lips-brgew.
   item_data-net_weight = wa_lips-ntgew.
   item_data-unit_of_wt = wa_lips-gewei.
   item_data-volumeunit = wa_lips-voleh.
   item_data-sales_unit = wa_lips-vrkme.
   item_data-base_uom = wa_lips-meins.
   item_data-stock_type = wa_lips-insmk.
   item_data-val_type = wa_lips-bwtar.
   item_data-insplot = wa_lips-qplos.
   item_data-volume = wa_lips-volum.
  APPEND item_data.

   item_control-deliv_numb = wa_lips-vbeln.
   item_control-deliv_item = wa_lips-posnr.
   item_control-chg_delqty = 'X'.
  APPEND item_control.
ENDSELECT.


CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
  EXPORTING
     header_data       = str_header_data
     header_control    = str_header_control
     delivery          = v_del
  TABLES
     header_deadlines = it_header_deadlines
     item_data         = item_data
     item_control      = item_control
    return           = it_return.
COMMIT WORK.


*& 更改拣配数量
DATA:vbkok_wa TYPE vbkok,
      vbpok_tab TYPE vbpok OCCURS 0 WITH HEADER LINE,
      xlips TYPE lips OCCURS 0 WITH HEADER LINE .
CLEAR: vbkok_wa, vbpok_tab, xlips.
REFRESH: vbpok_tab, xlips.

vbkok_wa-vbeln_vl = p_del.


SELECT * FROM lips INTO TABLE xlips
WHERE vbeln = vbkok_wa-vbeln_vl.

LOOP AT xlips.
   CLEAR: vbpok_tab.
   vbpok_tab-vbeln_vl = xlips-vbeln.
   vbpok_tab-posnr_vl = xlips-posnr.
   vbpok_tab-vbeln = xlips-vbeln.
   vbpok_tab-posnn = xlips-posnr.
*vbpok_tab-vbtyp_n = 'Q'.
   vbpok_tab-pikmg = xlips-lfimg.
   vbpok_tab-meins = xlips-meins.
   vbpok_tab-ndifm = 0.
   vbpok_tab-taqui = ' '.
   vbpok_tab-charg = xlips-charg.
   vbpok_tab-matnr = xlips-matnr.
   vbpok_tab-orpos = 0.
  APPEND vbpok_tab.
ENDLOOP.

CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'
EXPORTING
vbkok_wa = vbkok_wa
synchron = 'X'
* NO_MESSAGES_UPDATE = ' '
* NICHT_SPERREN = ' '
* AUFRUFER_T = ' '
* IF_ERROR_MESSAGES_SEND = 'X'
TABLES
vbpok_tab = vbpok_tab

=============

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bapi_outb_delivery_confirm_dec报错是由于在执行交货确认过程中出现了问题。该错误通常有以下几种可能的原因: 1. 数据输入错误:可能是输入了错误的交货批次号、物料号或交货数量。在调用BAPI函数之前,应该仔细检查输入的数据是否正确,确保数据的准确性。 2. 缺少必要的输入数据:在执行交货确认时,可能需要提供一些必要的参数或数据,如交货批次、物料号、客户编码等。如果缺少了这些必要的数据,就会引发该错误。需要检查代码中是否确实提供了全部必要的数据。 3. 系统配置问题:可能是由于系统配置不正确或缺少必要的配置导致错误。在出现该错误时,可以检查系统配置是否正确,并与系统管理员联系以解决问题。 4. 网络通信故障:在执行BAPI函数时,可能由于网络通信故障导致传输数据错误或中断,从而引发该错误。可以检查网络连接是否正常,并重试操作以解决问题。 当遇到bapi_outb_delivery_confirm_dec报错时,建议首先检查输入数据的准确性和完整性,确保提供了必要的参数和数据。如果问题仍然存在,可以进一步检查系统配置和网络连接,并与相关人员合作以找到解决方案。 ### 回答2: "bapi_outb_delivery_confirm_dec报错"是SAP系统中的一个错误信息。这个错误通常发生在使用BAPI函数模块“BAPI_OUTB_DELIVERY_CONFIRM_DEC”时。 这个错误可能是由于以下几种情况引起的: 1. 数据错误:在使用BAPI函数模块时,输入的参数数据有错误。可能是一些必备的参数没有填写,或者参数的格式不正确。需要仔细检查输入的数据并修正错误。 2. 代码错误:这个错误也可能是由于在调用BAPI函数模块时的代码错误引起的。可能是程序中对BAPI函数模块的调用方式、参数传递等有误。需要检查相关的程序代码并修复错误。 3. 系统配置错误:这个错误也可能由于系统配置不正确引起。可能是系统中相关的配置参数、表数据等存在问题。需要查找相关配置并进行修复。 为了解决这个问题,可以采取以下步骤: 1. 检查输入的参数:仔细检查使用BAPI函数模块时传递的参数,确保参数的完整性、正确性和有效性。 2. 检查相关代码:仔细检查程序代码,包括BAPI模块的调用方式、参数传递等,确保代码的正确性。 3. 检查系统配置:查找相关的系统配置,包括相关的配置参数、表数据等,确保系统配置正确。 4. 查找解决方案:在SAP系统的帮助文档、论坛等资源中查找是否有解决此问题的方案。也可以咨询SAP系统管理员或技术支持人员来获取帮助。 总之,解决"bapi_outb_delivery_confirm_dec报错"的关键是仔细检查输入参数、代码逻辑和系统配置,以确定错误的具体原因,并采取相应的措施来修复错误。需要根据具体情况来调整解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值