BAPI_OUTB_DELIVERY_CREATE_SLS 创建外向交货单(参考SO)


转载自:http://blog.sina.com.cn/s/blog_58e2e76b0100xjpd.html

report zcreate_dn.
*---Bapi Data Define
data:delivery type bapishpdelivnumb-deliv_numb,
num_deliveries type bapidlvcreateheader-num_deliveries,
sales_order_items like bapidlvreftosalesorder occurs 0 with header line,
return like bapiret2 occurs 0 with header line .

start-of-selection.
*---Assign Value
sales_order_items-ref_doc = '0000002008'. "订单号
sales_order_items-ref_item = '000010'. "行项目号
sales_order_items-dlv_qty = 1. "数量
sales_order_items-sales_unit = 'EA'. "单位
append sales_order_items.

*---Call BAPI Function
call function 'BAPI_OUTB_DELIVERY_CREATE_SLS'
importing
delivery = delivery
num_deliveries = num_deliveries
tables
sales_order_items = sales_order_items
return = return.

call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.






### 如何在 `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、付费专栏及课程。

余额充值