ABAP-MIGO批导(261移动类型)

该代码段展示了在SAP环境中使用BAPI_GOODSMVT_CREATE函数创建库存移动的过程。它首先初始化并填充必要的结构,如头部信息、代码、项目表等,然后循环处理项目细节,并调用事务处理函数进行提交或回滚。根据输出类型确定操作结果,如成功则提交事务,失败则回滚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 DATA:ls_head   TYPE bapi2017_gm_head_01,
 2      ls_code   TYPE bapi2017_gm_code,
 3      ls_item   TYPE bapi2017_gm_item_create,
 4      lt_item   TYPE TABLE OF bapi2017_gm_item_create,
 5      ls_return TYPE bapiret2,
 6      lt_return TYPE TABLE OF bapiret2.
 7 
 8 CLEAR ls_head .
 9 CLEAR ls_code .
10 CLEAR ls_item .
11 REFRESH lt_item .
12 CLEAR ls_return .
13 REFRESH lt_return .
14 
15 ls_head-pstng_date = is_input-budat .
16 ls_head-doc_date = is_input-bldat .
17 ls_head-header_txt = is_input-bktxt .
18 ls_head-ref_doc_no = is_input-xblnr .
19 
20 ls_code-gm_code = '03' .
21 
22 LOOP AT ti_item ASSIGNING FIELD-SYMBOL(<fs_item>) .
23 
24   CLEAR ls_item .
25   ls_item-material = <fs_item>-matnr .
26   ls_item-entry_qnt = <fs_item>-menge .
27   ls_item-base_uom = <fs_item>-meins .
28   ls_item-orderid = <fs_item>-aufnr .
29   ls_item-xstob = ''.
30   ls_item-move_type = '261' .
31   ls_item-plant = <fs_item>-werks .
32   ls_item-stge_loc = <fs_item>-lgort .
33   ls_item-batch = <fs_item>-charg .
34   ls_item-item_text = <fs_item>-sgtxt .
35   ls_item-sales_ord = <fs_item>-kdauf .
36   ls_item-s_ord_item = <fs_item>-kdpos .
37   ls_item-reserv_no = ls_resb-rsnum .
38   ls_item-res_item = ls_resb-rspos .
39   APPEND ls_item TO lt_item .
40 
41 ENDLOOP .
42 
43 IF es_output-type <> 'E' .
44 
45   CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
46     EXPORTING
47       goodsmvt_header  = ls_head
48       goodsmvt_code    = ls_code
49 *     TESTRUN          = ' '
50 *     GOODSMVT_REF_EWM =
51 *     GOODSMVT_PRINT_CTRL           =
52     IMPORTING
53 *     GOODSMVT_HEADRET =
54       materialdocument = es_output-mblnr
55 *     MATDOCUMENTYEAR  =
56     TABLES
57       goodsmvt_item    = lt_item
58 *     GOODSMVT_SERIALNUMBER         =
59       return           = lt_return
60 *     GOODSMVT_SERV_PART_DATA       =
61 *     EXTENSIONIN      =
62 *     GOODSMVT_ITEM_CWM             =
63     .
64 
65   IF es_output-mblnr IS INITIAL .
66 
67     es_output-type = 'E' .
68     LOOP AT lt_return INTO ls_return WHERE type = 'E' .
69 
70       es_output-message = ls_return-message && ';' && es_output-message .
71 
72     ENDLOOP .
73     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
74     
75   ELSE .
76     
77     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
78       EXPORTING
79         wait = 'X'.
80     es_output-type = 'S' .
81     es_output-message = '创建成功' .
82 
83   ENDIF .
84 
85 ENDIF .
### MIGO 261 的 IT 相关资料 MIGO(Material Incoming Goods)是 SAP 中用于处理物料收货的重要事务代码。对于移动类型 261,它通常涉及采购订单的货物接收过程中的特定逻辑和功能实现。 #### 移动类型 261 的定义 移动类型 261 是一种标准的 SAP 物料凭证移动类型,主要用于表示采购订单下的货物已到达并被记录到系统中。此类型移动会触发一系列后台操作,包括更新库存、生成物料凭证以及可能调用增强点或自定义逻辑[^1]。 #### 增强点与 BADI 使用 为了扩展 MIGO 功能,在实际业务场景下可以利用 BADIs 或其他增强机制来满足特殊需求。例如,当需要针对某些特定条件执行额外验证时,可以通过查找相关程序名称如 `ZDEMO_BADI` 并结合输入参数找到对应的 BADI 实现类 `MB_MIGO_BADI` 来完成定制开发工作[^2]。 以下是基于上述描述的一个简单示例代码片段展示如何通过 ABAP 编程访问此类对象: ```abap DATA: lo_badi TYPE REF TO zcl_mb_migo_badi. CREATE OBJECT lo_badi. lo_badi->enhance_processing( EXPORTING iv_input = 'MIGO' IMPORTING ev_output = lv_result ). ``` 这段代码展示了创建一个指向指定 BAdI 接口实例的过程,并调用了其中的方法来进行进一步的数据处理。 #### 次一致性校验逻辑 在某些情况下,企业可能会要求对特定移动类型实施更加严格的控制措施,比如确保移库前后的次号保持一致。这种需求可以在用户退出 (User Exit) 或者类似的事件处理器内部加以实现。下面给出了一段伪代码用来说明这一概念的实际应用方式[^3]: ```abap ASSIGN ('(SAPLMIGO)GODYNPRO') TO FIELD-SYMBOL(<fs>). MOVE-CORRESPONDING <fs> TO ls_godynpro . lt_mseg[] = it_mseg[] . LOOP AT lt_mseg INTO DATA(ls_mseg). IF ls_mseg-bwart IN ('311', 'Z07', '309'). CHECK ls_godynpro-charg <> ls_godynpro-umcha. MESSAGE e000(zmm001) WITH '移库前后次必须相同'. ENDIF. ENDLOOP. ``` 以上代码片段实现了这样一个功能:每当遇到预设列表内的任意一项作为 BWART 值时,则对比相应字段值;一旦发现两者不匹配即刻抛出错误消息中断当前流程继续运行下去的可能性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值