DEMO:修改外向交货单BAPI_OUTB_DELIVERY_CHANGE_SAP刘梦_新浪博客

DEMO:修改外向交货单BAPI_OUTB_DELIVERY_CHANGE

简单demo,交货单数量 1,然后维护上序列号(有的公司没有启用序列号就不需要了)

REPORT  zdemo_vl02n.

TABLES:likp,lips.


PARAMETERS:p_vbeln TYPE vbeln_vl.
PARAMETER:p_sernr TYPE objk-sernr.


DATA:ls_header_data     LIKE  bapiobdlvhdrchg,
     ls_header_control  LIKE  bapiobdlvhdrctrlchg,
     lv_delivery        LIKE  bapiobdlvhdrchg-deliv_numb.
DATA:lt_item_data        LIKE TABLE OF  bapiobdlvitemchg,
     lt_item_control    LIKE TABLE OF bapiobdlvitemctrlchg ,
     lt_item_serial_no  LIKE TABLE OF bapidlvitmserno .
DATA:ls_item_data       LIKE    bapiobdlvitemchg,
     ls_item_control    LIKE  bapiobdlvitemctrlchg ,
     ls_item_serial_no  LIKE    bapidlvitmserno .

DATA:lt_return          TYPE TABLE OF bapiret2.
DATA:lt_lips            TYPE TABLE OF lips.
DATA:ls_lips            TYPE          lips.
DATA:lt_ser01           TYPE TABLE OF ser01.
DATA:ls_ser01           TYPE          ser01.
DATA:lt_objk            TYPE TABLE OF objk.
DATA:ls_objk            TYPE          objk.


"交货单信息
SELECT * FROM lips INTO TABLE lt_lips WHERE vbeln = p_vbeln.

"交货单系列号的凭证抬头
SELECT * FROM ser01 INTO TABLE lt_ser01 WHERE lief_nr = p_vbeln.

"交货单对应的物料 序列号
IF lt_ser01[] IS NOT INITIAL.
  SELECT * FROM objk INTO TABLE lt_objk FOR ALL ENTRIES IN lt_ser01
    WHERE obknr = lt_ser01-obknr.
ENDIF.


CLEAR lt_item_serial_no[].

"填写物料 序列号
LOOP AT lt_lips INTO ls_lips.

  READ TABLE lt_ser01 INTO ls_ser01
     WITH KEY lief_nr = ls_lips-vbeln
              posnr   = ls_lips-posnr.

  CHECK sy-subrc = 0.

  LOOP AT lt_objk INTO ls_objk WHERE obknr = ls_ser01-obknr.

    CLEAR ls_item_serial_no.
    ls_item_serial_no-deliv_numb = ls_lips-vbeln.
    ls_item_serial_no-itm_number = ls_lips-posnr.
    ls_item_serial_no-serialno = ls_objk-sernr.

    APPEND ls_item_serial_no TO lt_item_serial_no[].
  ENDLOOP.

ENDLOOP.

*&最后一个行项目上 数量加一,加一个物料 和序列号
ls_item_serial_no-deliv_numb = ls_lips-vbeln.
ls_item_serial_no-itm_number = ls_lips-posnr.
ls_item_serial_no-serialno = p_sernr.

APPEND ls_item_serial_no TO lt_item_serial_no[].

"修改交货单数量
CLEAR ls_item_data.
CLEAR lt_item_data[].
ls_lips-lfimg  = ls_lips-lfimg   1.

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-dlv_qty     =  ls_lips-lfimg  .
ls_item_data-dlv_qty_imunit =  ls_lips-lfimg.
ls_item_data-fact_unit_denom =   1.
ls_item_data-fact_unit_nom =   1.
ls_item_data-sales_unit =   'EA'.
ls_item_data-base_uom =   'EA'.


APPEND ls_item_data TO lt_item_data.

CLEAR ls_item_control.
CLEAR lt_item_control[].
ls_item_control-deliv_numb = ls_lips-vbeln..
ls_item_control-deliv_item = ls_item_data-deliv_item.
ls_item_control-chg_delqty = 'X'.

APPEND ls_item_control TO lt_item_control.


lv_delivery = p_vbeln.
ls_header_data-deliv_numb = p_vbeln.
ls_header_control-deliv_numb = p_vbeln.



CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
  EXPORTING
    header_data                   = ls_header_data
    header_control                = ls_header_control
    delivery                      = lv_delivery

  TABLES
*   HEADER_PARTNER                =
*   HEADER_PARTNER_ADDR           =
*   HEADER_DEADLINES              =
   item_data                     = lt_item_data
   item_control                  = lt_item_control
   item_serial_no                = lt_item_serial_no
*   SUPPLIER_CONS_DATA            =
*   EXTENSION1                    =
*   EXTENSION2                    =
    return                        = lt_return
*   TOKENREFERENCE                =
*   ITEM_DATA_SPL                 =
*   COLLECTIVE_CHANGE_ITEMS       =
*   NEW_ITEM_DATA                 =
*   NEW_ITEM_DATA_SPL             =
*   NEW_ITEM_ORG                  =
*   ITEM_DATA_DOCU_BATCH          =
          .

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值