◆◆0[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]

2021-03-13 12:34

阅读:398

[隐藏]
  • 1, 前台操作
  • 2, BAPI实现
  • 3, 保存批次数据库表

下面介绍SAP SD的销售订单外向交货单按批次拆分(Batch-Managed),包括前台操作和调用bapi  ‘BAPI_OUTB_DELIVERY_CHANGE’ 实现。

1, 前台操作

按批次拆分操作:

外向交货单Tcode: VL02n

技术图片

选中10行项目,点击‘批次拆分’按钮,填写批次后,回车,会将项目号和库位自动带出(视具体配置而定)

技术图片

点保存后,原来航项目10数量自动变更,变成0.

删除批次拆分操作:

选中刚才创建的拆分项目90001和90002,点删除按钮。

技术图片

10行项目数量会自动更新,重新变成3

技术图片

2, BAPI实现

完整代码:

其中

 
1
LW_ITEM_DATA-USEHIERITM      = ‘1‘.

查看了domain中的固定值:‘1’代表Batch Subitem

技术图片

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
REPORT ztest_bapi_sobitch.
 
PARAMETERS p_vbeln TYPE vbeln_vl DEFAULT ‘8000003765‘.
 
"测试批次拆分
DATA:
  lit_header_partner   LIKE TABLE OF bapidlvpartnerchg           , "交货:合作伙伴更改
  lit_header_deadlines LIKE TABLE OF bapidlvdeadln               , "交货截止日期
  lit_item_data        LIKE TABLE OF bapiobdlvitemchg            , "更改外向交货拣配数据项目等级
  lit_item_control     LIKE TABLE OF bapiobdlvitemctrlchg        , "外向交货项目级别控制数据
  lit_ret           LIKE TABLE OF bapiret2   WITH HEADER LINE , "返回参数
  lit_item_data_spl    LIKE TABLE OF /spe/bapiobdlvitemchg       , "更改向外交货拣配数据项目等级(SPE)
  is_header_data      LIKE          bapiobdlvhdrchg             , "更改外向交货拣配数据表头等级
  is_header_control   LIKE          bapiobdlvhdrctrlchg         , "外向交货标题级别控制数据
  iv_delivery         LIKE          bapiobdlvhdrchg-deliv_numb  . "交货
 
DATA:
  lwa_header_partner   LIKE          bapidlvpartnerchg           , "交货:合作伙伴更改
  lwa_header_deadlines LIKE          bapidlvdeadln               , "交货截止日期
  lwa_item_data        LIKE          bapiobdlvitemchg            , "更改外向交货拣配数据项目等级
  lwa_item_control     LIKE          bapiobdlvitemctrlchg        , "外向交货项目级别控制数据
  lwa_return           LIKE          bapiret2                    . "返回参数
 
 
DATA: l_techn_control  TYPE bapidlvcontrol.
DATA:
  ls_item         TYPE bapiobdlvitemchg,
  ls_item_t       TYPE bapiobdlvitemchg,
  ls_item_control TYPE bapiobdlvitemctrlchg,
  ls_deadlines    TYPE bapidlvdeadln.
 
iv_delivery = p_vbeln. "交货单号
 
 
 
"头信息
is_header_data-deliv_numb     = p_vbeln. "交货单号
is_header_control-deliv_numb  = p_vbeln.
 
"修改原10行项目数量
CLEAR lwa_item_data.
lwa_item_data-deliv_numb     = p_vbeln.
lwa_item_data-deliv_item     = 10.      "原行项目
lwa_item_data-dlv_qty        = 1.
lwa_item_data-dlv_qty_imunit = 1.
lwa_item_data-base_uom       = ‘TO‘.    "基本单位
lwa_item_data-sales_unit     = ‘TO‘.    "销售单位
 
lwa_item_data-fact_unit_nom   = 1.      "销售数量转换成SKU的分子(因子)
lwa_item_data-fact_unit_denom = 1.      "销售数量转换为 SKU 的值(除数)
 
APPEND lwa_item_data TO lit_item_data .
 
CLEAR lwa_item_control.
lwa_item_control-deliv_numb = p_vbeln.
lwa_item_control-deliv_item = 10.       "原行项目
lwa_item_control-chg_delqty = ‘X‘.      "数量修改标志
 
APPEND lwa_item_control TO lit_item_control.
 
 
 
"新拆分的批次
CLEAR lwa_item_data.
lwa_item_data-deliv_numb = p_vbeln.
lwa_item_data-deliv_item = ‘900001‘.       "拆分后的新行项目
lwa_item_data-hieraritem = 10.             "上级行项目
lwa_item_data-batch      = ‘YS91480001‘.   "新批次
lwa_item_data-dlv_qty    = 1.              "自己重新计算拆分后的数量,
lwa_item_data-dlv_qty_imunit = 1.
lwa_item_data-fact_unit_nom   = 1.       "销售数量转换成SKU的分子(因子)
lwa_item_data-fact_unit_denom = 1.       "销售数量转换为 SKU 的值(除数)
lwa_item_data-base_uom        = ‘TO‘.    "基本单位
lwa_item_data-sales_unit      = ‘TO‘.    "销售单位
lwa_item_data-usehieritm      = ‘1‘.
 
APPEND lwa_item_data TO lit_item_data.
 
 
CLEAR lwa_item_data.
lwa_item_data-deliv_numb = p_vbeln.
lwa_item_data-deliv_item = ‘900002‘.    "拆分后的新行项目
lwa_item_data-hieraritem = 10.          "上级行项目
lwa_item_data-batch      = ‘YS91480002‘."新批次
lwa_item_data-dlv_qty    = 1.
lwa_item_data-dlv_qty_imunit = 1.
 
lwa_item_data-fact_unit_nom   = 1.       "销售数量转换成SKU的分子(因子)
lwa_item_data-fact_unit_denom = 1.       "销售数量转换为 SKU 的值(除数)
lwa_item_data-base_uom        = ‘TO‘.    "基本单位
lwa_item_data-sales_unit      = ‘TO‘.    "销售单位
lwa_item_data-usehieritm      = ‘1‘.
 
APPEND lwa_item_data TO lit_item_data.
 
 
CLEAR lwa_item_control.
lwa_item_control-deliv_numb = p_vbeln.
lwa_item_control-deliv_item = ‘900001‘. "拆分后的新行项目
lwa_item_control-chg_delqty = ‘X‘.      "数量修改标志
APPEND lwa_item_control TO lit_item_control  .
 
CLEAR lwa_item_control.
lwa_item_control-deliv_numb = p_vbeln.
lwa_item_control-deliv_item = ‘900002‘."拆分后的新行项目
lwa_item_control-chg_delqty = ‘X‘.     "数量修改标志
APPEND lwa_item_control TO lit_item_control  .
 
CALL FUNCTION ‘BAPI_OUTB_DELIVERY_CHANGE‘
  EXPORTING
    header_data      = is_header_data
    header_control   = is_header_control
    delivery         = iv_delivery
  TABLES
    header_partner   = lit_header_partner
    header_deadlines = lit_header_deadlines
    item_data        = lit_item_data
    item_control     = lit_item_control
    return           = lit_ret
*   ITEM_DATA_SPL    = IT_ITEM_DATA_SPL
  .
DATA: l_msg TYPE string.
 
IF lit_ret[] IS INITIAL.
  COMMIT WORK AND WAIT.
  WRITE:/ ‘批次拆分成功‘.
  RETURN.
ENDIF.
 
LOOP AT lit_ret WHERE type = ‘E‘.
  CLEAR l_msg.
  MESSAGE ID  lit_ret-id
      TYPE   ‘E‘
      NUMBER lit_ret-number
      WITH   lit_ret-message_v1
             lit_ret-message_v2
             lit_ret-message_v3
             lit_ret-message_v4
      INTO   l_msg.
 
  WRITE:/ l_msg.
 
ENDLOOP.

选择画面:

技术图片

3, 保存批次数据库表

外向交货单批次的相关数据保存在表LIPS中,

LIPS-UECHA:批次拆分项目的上层项目

以上面的数据为例:

LIKP

技术图片

LIPS

技术图片

VBFA: 销售凭证流

技术图片

以上。


评论


亲,登录后才可以留言!