VA01销售订单批导问题解决

 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.
"-----------------------------@斌将军-----------------------------

 

定期更文,欢迎关注

posted @ 2020-05-09 17:50  斌将军  阅读(1470)  评论(0编辑  收藏  举报