VA01销售订单批导问题解决

作者:斌将军 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:SD, 销售分销
VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

事务代码:VA01创建销售订单,VA02修改销售订单

可以通过BAPI_SALESORDER_CREATEFROMDAT2批量创建

可以通过BAPI_SALESORDER_CHANGE批量修改

## 2.1特性内部错误

在导入特性时,有些特性是需要通过后台计算得到的,如果导入的特性值和计算

出的结果不一致,就会报内部错误,另外如果传入的特性值不符合特性值的范围

规定,也会报内部错误。

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

## 2.2修改条件类型

当新增条件类型时,需要将更新标识改为"I",当修改时,需要将更新标识改为"U",并为条件类型的cond_count计数器赋值"01",否则更新时报错。

## 2.3删除条件类型

因为本程序是接口,在修改时,如果某现有的条件类型没有传过来,则认为该条件类型要删除。逻辑是,在查找现有的人工维护的条件类型,与传过来的条件类型作对比,如果现有的在传入接口中的条件类型找不到,则证明要删除该条件类型。

在删除中,除了行项目、条件类型的名称和计数器外,不导入任何数据,并在更新标识中打上"D",表明删除该操作。

取值逻辑为:

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

删除条件类型的赋值操作:

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

## 2.4修改订单状态

在修改时将订单状态从待审改为审批通过,其中对象编号和状态参数文件字段可以作为以下的查表字段。

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

待审和审批通过状态的名称,我们可以通过对象编号VB2000000377000000到JEST中查找,查找到的是状态。

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

如果想查看状态的文本信息,需要去查找文本描述表。

E开头的状态,需要到TJ30T中查找

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

I开头的状态,需要到TJ02T中查找

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

状态参数文件Z_SD001需要到TJ20T中查找

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

获取OBJNR,

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

将状态从待审更新到审批通过。

## 2.5修改业务伙伴

创建时将参数传入bapiparnr

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

修改时将参数传入bapiparnrc

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

## 2.6修改订单数量

当修改时,需要导入计划行,否则会报错

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

## 2.7定价类型

### 2.7.1定价类型介绍

A:根据等级复制和更新定价元素

B:实施完全新定价。

C:复制手动定价元素并为其它执行一个新定价

D:复制未更改的定价元素

G 复制不变定价因素且重定税款

H 重新确定运费条件

I 重新确定回扣条件

J 重新确定确认的采购净价格/价值(KNTYP=D)

K 采纳价格组件和重新确定税收

M 复制价格要素,转换值

N 传输定价组件未更改, 新成本

1\. **在创建时,可以不输入定价类型**

。但是当我们需要传入某个条件类型时,而物料又会自动带出某个条件类型,这样就会变成两个条件类型,那就使用G去掉重复。

2.当使用B时,可以将所有需要自动带的条件类型带出,但是将人工维护的条件类型去掉。

3.当使用C是,会赋值人工维护的条件类型

4.当修改时,不输入定价类型,但是logic_switch-cond_handl = 'X'.

### 2.7.2定价类型配置

在开发中,如果未输入定价类型,而导致出现两行的条件类型。

业务在配置时,某些条件类型想自动弹出,但是没有金额,需要手动维护金额。这种情况下,不输入定价类型会导致出现两行,而业务可能也配置了其他的自动弹出又不用修改金额的条件类型,这样输入G后,自动弹出又不用维护的那几个条件类型会丢失。

**目前的解决办法是:**

1、在配置定价过程中,把需要手动维护的打上勾。

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

配置的路径是:

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

选中使用的定价过程,双击控制数据

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

其中定价过程在销售订单的位置:

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图

但是这样维护完之后,在前台创建销售订单时,条件里面必须手动输入Z001,然后带出条件类型。

2、但有时候业务需要在前台创建时,点击条件后就出现价格为空的几个条件类型,只用手动修改金额即可,不需要在手动输入Z001等条件类型。如果必须这样,那只好在调用BAPI时,将手动维护的几个都传值,不用传金额的空着,然后用G清理重复项。

## 2.8维护伙伴地址

VA01销售订单批导问题解决 - 封面图
VA01销售订单批导问题解决 - 封面图
"-----------------------------@斌将军-----------------------------IF i_head-kunnr IS NOT INITIAL. SELECT SINGLE adrnr,anred,name1,ort01,land1,spras FROM kna1 INTO @DATA(ls_kna1) WHERE kunnr = @i_head-kunnr. lt_partners-partn_role = 'WE'."合作伙伴功能 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = i_head-kunnr " 送达方 IMPORTING output = lt_partners-partn_numb. lt_partners-addr_link = ls_kna1-adrnr. "送达方对应的地址信息连接 APPEND lt_partners. "传入伙伴主数据的信息 lt_partneraddresses-addr_no = ls_kna1-adrnr. lt_partneraddresses-formofaddr = ls_kna1-anred."称谓文本 lt_partneraddresses-name = ls_kna1-name1."名称 lt_partneraddresses-city = ls_kna1-ort01."城市 lt_partneraddresses-country = ls_kna1-land1."国家 lt_partneraddresses-langu = ls_kna1-spras."语言 "传入伙伴的订单地址信息 lt_partneraddresses-build_long = i_head-building."联系人 lt_partneraddresses-c_o_name = i_head-name_co."联系电话 lt_partneraddresses-str_suppl1 = i_head-str_suppl+(40)."地址 lt_partneraddresses-str_suppl2 = i_head-str_suppl+40()."地址 APPEND lt_partneraddresses.ENDIF."-----------------------------@斌将军-----------------------------
斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「VA01销售订单批导问题解决.md」整理生成,仅用于内部技术分享与学习交流。