创建交货单/外向交货BAPI_OUTB_DELIVERY_CREATE_SLS/STO

这篇博客详细介绍了如何利用BAPI_OUTB_DELIVERY_CREATE_SLS在SAP系统中创建交货单,适用于销售订单(SLS)和库存转移订单(STO)场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FUNCTION Z_SD_CREATE_DN.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IM_SHIP_TYPE) TYPE  LIKP-VSART DEFAULT '01'
*"     VALUE(IM_DUE_DATE) TYPE  DATUM DEFAULT '99991231'
*"  EXPORTING
*"     VALUE(E_DN) TYPE  CHAR10
*"     VALUE(E_STATUS) TYPE  CHAR1
*"     VALUE(E_MESSAGE) TYPE  CHAR40
*"  TABLES
*"      T_DATA STRUCTURE  ZSDS0008
*"      IT_RETURN STRUCTURE  BAPIRET2 OPTIONAL
*"      IT_DN STRUCTURE  VBAK OPTIONAL
*"----------------------------------------------------------------------
  DATA : LV_SHIP_POINT TYPE          BAPIDLVCREATEHEADER-SHIP_POINT,
         LV_DUE_DATE   TYPE          BAPIDLVCREATEHEADER-DUE_DATE,
         LV_DELIVERY   TYPE          BAPISHPDELIVNUMB-DELIV_NUMB,
         LT_SO_ITEMS   LIKE TABLE OF BAPIDLVREFTOSALESORDER,
         LS_SO_ITEM       LIKE          BAPIDLVREFTOSALESORDER,
         LT_STO_ITEMS  LIKE TABLE OF BAPIDLVREFTOSTO,
         LS_STO_ITEM   LIKE          BAPIDLVREFTOSTO,
         LT_RETURN     LIKE TABLE OF BAPIRET2,
         LS_RETURN     LIKE          BAPIRET2.

  DATA : LV_TYPE(2). "PO / SO
  DATA : LV_SUCCESS.
  DATA : LV_MATNR TYPE VBAP-MATNR.
  DATA : LV_VBELN TYPE VBELN.
  DATA : LV_TABIX TYPE SY-TABIX.
  DATA : LV_CONTINUE.

  DATA : LT_LIPS TYPE TABLE OF LIPS,
         LS_LIPS TYPE          LIPS.

  DATA : BEGIN OF LS_DATA,
           DEL.
          INCLUDE STRUCTURE ZSDS0008.
  DATA : END OF LS_DATA.

  DATA : LT_DATA LIKE TABLE OF LS_DATA.

  DATA : BEGIN OF LT_VBFA OCCURS 0,
           VBELV TYPE VBFA-VBELV,   "先前凭证
           POSNV TYPE VBFA-POSNV,
           VBELN TYPE VBFA-VBELN,   "后续凭证
           POSNR TYPE VBFA-POSNN,
         END OF LT_VBFA.

  DATA : LV_MAX   TYPE I VALUE '333',
         LV_COUNT TYPE I.

  LOOP AT T_DATA.
    MOVE-CORRESPONDING T_DATA TO LS_DATA.
    APPEND LS_DATA TO LT_DATA.
  ENDLOOP.

  PERFORM FRM_DATA_CHECK TABLES LT_DATA CHANGING E_MESSAGE.

  IF E_MESSAGE IS NOT INITIAL.
    E_STATUS = '
### 如何在 `BAPI_OUTB_DELIVERY_CREATE_SLS` 中修改存储地点 在处理 SAP 外向交货单创建的过程中,如果需要通过函数模块 `BAPI_OUTB_DELIVERY_CREATE_SLS` 来指定或更改存储地点 (Storage Location),则需注意该 BAPI 主要用于基于销售订单创建交货单。对于已存在的交货单,通常会使用其他特定的 BAPI 或事务码来更新字段。 然而,在调用 `BAPI_OUTB_DELIVERY_CREATE_SLS` 创建交货单时,可以通过传递适当参数结构体内的相应字段来设置初始存储位置。具体来说: - **输入表 `T_ITEMSCHEDLINES`** 的每一项代表一个计划行项目,其中包含多个可配置属性。 对于每个条目,可以设定如下字段以影响最终生成的交货文档特性: - `STGE_LOC`: 存储地点 (Storage Location)[^1] 为了实现这一点,下面是一个 Python 风格伪代码示例展示如何构建并填充必要的数据结构以便正确地将存储地点信息传入给定的 BAPI 调用中: ```python from pyrfc import Connection, ABAPStructure, ABAPTable # 建立连接到SAP系统的实例化对象conn conn = Connection(...) # 定义 T_ITEM 和 T_ITEMSCHEDLINES 结构体 item_structure = [ ('VBELN', 'CHAR', 10), ('POSNR', 'NUMC', 6), ... ] itemschedlines_structure = item_structure + [('STGE_LOC', 'CHAR', 4)] t_item = conn.create_function('Z_GET_T_ITEM').invoke() for line in t_item: sched_line = { 'VBELN': line['VBELN'], 'POSNR': line['POSNR'], 'STGE_LOC': "NEW_STORAGE_LOCATION_CODE", # 设置新的存储地点编码 ... } # 将每一条记录加入到列表中准备批量提交至BAPI delivery_items.append(sched_line) try: result = conn.call( func='BAPI_OUTB_DELIVERY_CREATE_SLS', T_HEADER={...}, # 提头信息 T_PARTNER={...}, # 合作伙伴信息 T_SCHEDULE_LINES=delivery_items, IMPORTING={ 'RETURN': return_message }, EXPORTING={ 'DELIV_NUMBER': delivery_number } ) except Exception as e: print(f"Error occurred during BAPI call: {e}") finally: if not any([r.get('TYPE') == 'E' or r.get('TYPE') == 'A' for r in return_message]): print("Delivery created successfully with new storage location.") ``` 此段代码展示了如何利用 PyRFC 库与 SAP 系统交互,并且指定了一个新的存储地点作为其中一个调度行 (`T_ITEMSCHEDLINES`) 参数的一部分。请注意实际应用中应替换掉占位符部分以及确保所有必需的数据都已被适当地初始化和验证[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值