目录
1业务场景
事务代码:VA01创建销售订单,VA02修改销售订单
可以通过BAPI_SALESORDER_CREATEFROMDAT2批量创建
可以通过BAPI_SALESORDER_CHANGE批量修改
2.难点解决
2.1特性内部错误
在导入特性时,有些特性是需要通过后台计算得到的,如果导入的特性值和计算
出的结果不一致,就会报内部错误,另外如果传入的特性值不符合特性值的范围
规定,也会报内部错误。
2.2修改条件类型
当新增条件类型时,需要将更新标识改为"I",当修改时,需要将更新标识改为"U",并为条件类型的cond_count计数器赋值"01",否则更新时报错。
2.3删除条件类型
因为本程序是接口,在修改时,如果某现有的条件类型没有传过来,则认为该条件类型要删除。逻辑是,在查找现有的人工维护的条件类型,与传过来的条件类型作对比,如果现有的在传入接口中的条件类型找不到,则证明要删除该条件类型。
在删除中,除了行项目、条件类型的名称和计数器外,不导入任何数据,并在更新标识中打上"D",表明删除该操作。
取值逻辑为:
删除条件类型的赋值操作:
2.4修改订单状态
在修改时将订单状态从待审改为审批通过,其中对象编号和状态参数文件字段可以作为以下的查表字段。
待审和审批通过状态的名称,我们可以通过对象编号VB2000000377000000到JEST中查找,查找到的是状态。
如果想查看状态的文本信息,需要去查找文本描述表。
E开头的状态,需要到TJ30T中查找
I开头的状态,需要到TJ02T中查找
状态参数文件Z_SD001需要到TJ20T中查找
获取OBJNR,
将状态从待审更新到审批通过。
2.5修改业务伙伴
创建时将参数传入bapiparnr
修改时将参数传入bapiparnrc
2.6修改订单数量
当修改时,需要导入计划行,否则会报错
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、在配置定价过程中,把需要手动维护的打上勾。
配置的路径是:
选中使用的定价过程,双击控制数据
其中定价过程在销售订单的位置:
但是这样维护完之后,在前台创建销售订单时,条件里面必须手动输入Z001,然后带出条件类型。
2、但有时候业务需要在前台创建时,点击条件后就出现价格为空的几个条件类型,只用手动修改金额即可,不需要在手动输入Z001等条件类型。如果必须这样,那只好在调用BAPI时,将手动维护的几个都传值,不用传金额的空着,然后用G清理重复项。
2.8维护伙伴地址
"-----------------------------@斌将军-----------------------------
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.
"-----------------------------@斌将军-----------------------------