如下所示情况:
BAPI传值如下所示
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = gs_head-vbeln
order_header_inx = ls_h_inx
TABLES
return = lt_return
order_item_in = lt_item_in
order_item_inx = lt_item_inx
schedule_lines = lt_schedule
schedule_linesx = lt_schedulex
conditions_in = lt_conditions_in
conditions_inx = lt_conditions_inx
extensionin = lt_extensionin.
其中lt_conditions_in / lt_conditions_inx 传入更新价格条件的值
lt_conditions_in = VALUE #( BASE lt_conditions_in
( itm_number = ls_item-posnr
cond_type = 'ZPR0'
cond_value = ls_item-zkbetr
currency = ls_prcd-waers ) ).
lt_conditions_inx = VALUE #( BASE lt_conditions_inx
( itm_number = ls_item-posnr
cond_type = 'ZPR0'
updateflag = 'U'
cond_value = 'X'
currency = 'X' ) ).
上述赋值代码导致价格条件重复。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
为了解决重复的条件类型,实现代码段如下:
lt_conditions_in = VALUE #( BASE lt_conditions_in
( itm_number = ls_item-posnr
cond_st_no = ls_prcd-stunr
cond_count = |{ ls_prcd-zaehk ALPHA = IN }|
cond_type = 'ZPR0'
cond_value = ls_item-zkbetr
currency = ls_prcd-waers ) ).
lt_conditions_inx = VALUE #( BASE lt_conditions_inx
( itm_number = ls_item-posnr
cond_st_no = ls_prcd-stunr
cond_count = |{ ls_prcd-zaehk ALPHA = IN }|
cond_type = 'ZPR0'
updateflag = 'U'
cond_value = 'X'
currency = 'X' ) ).
即:传值的时候,必须传入原条件类型对应的字段值cond_st_no 和cond_count
上述两个字段的取值来源:根据
VBAK-knumv =prcd_elements-knumv
and VBAP-POSNR = prcd_elements-posnr
从表prcd_elements中获取