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

石头 三月 20, 2017 BAPI 9,583 views 0

[隐藏]

下面介绍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: 销售凭证流

以上。

原文地址:https://www.cnblogs.com/lvdong18847870057/p/12533514.html

时间: 2024-07-31 00:36:34

◆◆0[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]的相关文章

销售订单、外向交货单、交货 bapi

转自[http://www.cnblogs.com/elegantok/archive/2009/10/18/1585398.html]***********SALES ORDER INPUT CREATION. REPORT soi. PARAMETERS: p_auart TYPE auart OBLIGATORY.PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.PARAM

SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现

如下STO,是从公司代码SZSP转入CSAS, 如下图示的内向交货单180018660.该内向交货单是在外向交货单80016325 发货过账的时候自动触发的, 如何实现这个功能? 1)定义输出类型(output type)SPED SPRO > Logistic Execution > Shipping > Basic Shipping Functions > Output Control > Output Determination > Maintain Output

「SAP技术」SAP VL02N 执行批次拆分报错,说不允许批次拆分?

1,如下新建的DN 80017843,storage location 字段值为空.VL02N 试图去做批次拆分失败,系统报错说,Batch split is not permitted for material 74000096 in item 000020 2,手工去维护了2个ITEM的存储地比如1003,回车后,批次字段就可以编辑了,如下图示: 保存. 3, 重新执行VL02N过来修改这个DN,将storage location 字段清空,批次字段还是可以编辑,并没有以为storage l

SAP ABAP SD 常用BAPI

1.创建标准销售订单的bapi:BAPI_SALESORDER_CREATEFROMDAT2 2.创建退货销售订单的bapi:BAPI_CUSTOMERRETURN_CREATE 3.更改销售订单 bapi:BAPI_SALESORDER_CHANGE 4.根据销售订单创建交货单:BAPI_DELIVERYPROCESSING_EXEC 销售订单是允许多个销售订单创建一个交货单Tcode:VL10A VL10C 在使用这个BAPI的表参数时,肯定是要传入每一个交货单的行项目的,参数如图: 这个结

20160621-BAPI 更改外向DN&更改拣配

参考代码转自:http://blog.sina.com.cn/s/blog_4c66402b01012lgr.html 感谢. 测试一把,再做总结. 1.更改外向交货单: 2.更改内向交货单. http://blog.sina.com.cn/s/blog_4c66402b01012lgr.html REPORT Y_CHANGE_ODN. TABLES LIKP. PARAMETERS P_DEL LIKE LIKP-VBELN DEFAULT ''. DATA: STR_HEADER_DATA

模块 BAPI

MM模块1. BAPI_MATERIAL_SAVEDATA 创建物料主数据注意参数EXTENSIONIN的使用,可以创建自定义字段例如WA_BAPI_TE_MARA-MATERIAL = ITAB_UP-MATNR.T_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MARA'.T_EXTENSIONIN-VALUEPART1 = WA_BAPI_TE_MARA.APPEND T_EXTENSIONIN.WA_BAPI_TE_MARAX-MATERIAL = ITAB_UP-M

BAPI

MM模块 1. BAPI_MATERIAL_SAVEDATA 创建物料主数据 注意参数EXTENSIONIN的使用,可以创建自定义字段 例如:WA_BAPI_TE_MARA-MATERIAL = ITAB_UP-MATNR. T_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MARA'. T_EXTENSIONIN-VALUEPART1 = WA_BAPI_TE_MARA. APPEND T_EXTENSIONIN. WA_BAPI_TE_MARAX-MATERIAL = I

Javascript定时器(三)——setTimeout(func, 0)

setTimeout(func, 0)可以使用在很多地方,拆分循环.模拟事件捕获.页面渲染等 一.setTimeout中的delay参数为0,并不是指马上执行 <script type="text/javascript"> function delay1() { console.log('delay1'); } function delay2() { console.log('delay2'); } function delay3() { console.log('dela

C# 合并及拆分Word文档

本文简要分析一下如何如何使用C#简单实现合并和拆分word文档.平时我们在处理多个word文档时,可能会想要将两个文档合并为一个,或者是将某个文档的一部分添加到另一个文档中,有的时候也会想要将文档拆分.在Word中,合并或拆分文档最简单的方式就是打开一个原文档的副本文件,复制我们需要的部分,删除不需要的部分,然后再保存文档.使用这种方法在文档比较多或者比较大时手动操作起来比较费时,以下是使用C#实现合并一个Word文档的某一个section到另一个文档或者合并两个完整的Word文档到一个单独的文