MIGO配置过账后自动打印

本文详细描述了如何在MIGO发货过账时自动打印自定义表格,涉及复制标准程序、自定义SMARTFORMS和子例程,以及两种系统配置方法:复杂复制和简单修改。

1、业务需求

本文档介绍,当MIGO发货过账时,自动打印自开发表格。

2、打印程序

复制标准配置中调用的程序和子例程,到新的程序(路径可参考下文系统配置)

只用复制子例程entry_wa01即可,参考代码:

"--------------------@斌将军--------------------
REPORT ytest022.

TABLES: nast.

FORM entry_wa01 USING ent_retco ent_screen.

  DATA:fm_name               TYPE rs38l_fnam,
       ls_output_options     TYPE ssfcompop,
       ls_control_parameters TYPE ssfctrlop,
       ls_output_info        TYPE ssfcrescl,
       ls_option             TYPE ssfcresop.
  DATA:l_control_parameters  TYPE ssfctrlop.
  DATA:lv_formname TYPE tdsfname VALUE 'ZSAPM07DR_SF'."smartforms名称
  DATA:lt_head TYPE TABLE OF zmm043_fhdy_head,
       ls_head TYPE zmm043_fhdy_head,
       lt_item TYPE TABLE OF zmm043_fhdy_item,
       ls_item TYPE zmm043_fhdy_item.

  DATA: BEGIN OF nast_key,
          mblnr LIKE mkpf-mblnr,
          mjahr LIKE mkpf-mjahr,
          zeile LIKE mseg-zeile,
        END OF nast_key.

  CLEAR:ent_retco,ent_screen.

  nast_key = nast-objky.

"具体逻辑(略)
……

"调用打印函数
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      FORMNAME           = LV_FNAME
    IMPORTING
      FM_NAME            = PV_FNAME
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    LEAVE LIST-PROCESSING.
  ENDIF.

CALL FUNCTION PV_FNAME
    EXPORTING
      CONTROL_PARAMETERS = LS_SSFCTRLOP
    EXCEPTIONS
      FORMATTING_ERROR   = 1
      INTERNAL_ERROR     = 2
      SEND_ERROR         = 3
      USER_CANCELED      = 4
      OTHERS             = 5.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.
"--------------------@斌将军--------------------

3、系统配置

3.1、配置方法一:复制标准配置(复杂)

SPRO——物料管理——库存管理和实际库存——输出确定

本实例是发货场景,可以复制标准的发货WA01为ZWA1

维护输出类型

配置输出类型调用的程序为自开发的程序名,表单过程为自开发程序的子例程,表单为自开发的SMARTFORMS名称 

维护输出确定过程

维护条件

打印项目

SPRO——物料管理——库存管理和实际库存——移动类型

检查移动类型配置,是否满足要求

3.2、配置方法二:修改标准配置(简单)

修改标准配置,改动很小,配置简单,只需要将标准的输出类型WA01调用的程序换成自开发的程序名,表单过程替换为自开发程序的子例程,表单替换自开发的SMARTFORMS名称即可。

4、打印测试

过账时,自动打印物料凭证,如此也限制了只允许首次打印

如果确实需要,还可以通过MB90重复打印

定期更文,欢迎关注

<think>首先,用户的问题是:“我想查找在ABAPMIGO过账的增强点 请问ABAP MIGO 过账增强点查找”。这是在问如何在ABAP中查找MIGO过账的增强点。 从系统级指令中,我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 参考提供的引用: - 引用[1]:讨论在MIGO过账增强的CHECK_ITEM方法中通过行ID获取行项目。 - 引用[2]:关于MIGO增强过账检查物料标准价格是否发布,提到在MB_MIGO_BADI的POST_DOCUMENT中处理。 - 引用[3]:描述MIGO过账替换总账科目增强,使用MB_MIGO_BADI的LINE_MODIFY方法。 - 引用[4]:类似引用[1],关于在CHECK方法获取行项目。 这些引用都指向了同一个BADI:MB_MIGO_BADI。用户的核心需求是查找MIGO过账的增强点,所以我应该基于这些信息提供指导。 关键点: - MIGO过账的增强点主要在BADI MB_MIGO_BADI。 - 这个BADI有多个方法,如CHECK_ITEM、POST_DOCUMENT、LINE_MODIFY等,用于不同的增强场景。 步骤: 1. **介绍MB_MIGO_BADI**:这是SAP提供的标准BADI,用于MIGO事务的增强。 2. **列出常用方法**:根据引用,方法包括: - CHECK_ITEM:用于在保存前检查行项目。 - POST_DOCUMENT:用于在过账后处理。 - LINE_MODIFY:用于修改行项目数据。 3. **如何查找和实现**:指导用户如何在ABAP工作台中查找这个BADI,并实现它。 4. **示例代码**:提供简单的代码片段,展示如何实现一个方法。 5. **注意事项**:提到一些常见问题,如引用[2]中提到的自开发程序调用BAPI可能不触发某些增强。 6. **生成相关问题**:在最后添加相关问题。 回答结构: - 开头:直接回答问题,解释MIGO过账增强点。 - 主体:分步解释如何查找和实现增强点。 - 结尾:总结并生成相关问题。 使用中文回答,确保语言流畅。 引用处理: - 在回答中,当提到引用内容时,自然地添加引用标识。例如,提到CHECK_ITEM方法时,添加[^1]。 生成相关问题: - 基于主题,生成3个相关问题,如: 1. 如何实现MIGO过账的行项目检查增强? 2. MIGO增强在自开发程序中如何生效? 3. 在MB_MIGO_BADI中有哪些可用的方法? 最终输出格式: - 回答结束后,添加“§§相关问题§§”部分,列出生成的问题。</think>### ABAP MIGO 过账增强点查找指南 在ABAP中,MIGO(物料凭证过账)的增强点主要通过SAP提供的标准BADI(Business Add-In)实现。核心增强点是**MB_MIGO_BADI**,它允许开发人员在MIGO事务的不同阶段插入自定义逻辑。以下是逐步查找和实现增强点的详细说明,基于SAP最佳实践和相关引用。 #### 1. **核心增强点:MB_MIGO_BADI** MB_MIGO_BADI 是MIGO过账的标准增强框架,包含多个方法,对应不同的过账阶段: - **CHECK_ITEM**:在保存前检查行项目数据(例如,验证物料价格或订单信息)。引用中提到,可通过行ID获取行项目明细[^1][^4]。 - **POST_DOCUMENT**:在过账后处理文档(例如,检查物料标准价格是否发布)。但需注意,此方法可能不触发自开发程序调用的BAPI(如BAPI_GOODSMVT_CREATE)[^2]。 - **LINE_MODIFY**:修改行项目数据(例如,替换总账科目)[^3]。 - 其他方法:如PRE_CHECK(全局检查)、ITEM_MODIFY(行项目修改)等。 #### 2. **如何查找增强点** 在ABAP工作台(SE24/SE80)中查找MB_MIGO_BADI: 1. **打开事务码SE19**(BADI实现工具)。 2. 输入BADI名称 **MB_MIGO_BADI**,点击“显示”。 3. 查看接口方法: - 每个方法对应一个增强阶段(如CHECK_ITEM用于行项目检查)。 - 双击方法名可查看参数文档(例如,CHECK_ITEM的`I_LINE_ID`提供行项目ID)。 4. **创建实现**:点击“创建实现”,定义自定义类并重写所需方法。 #### 3. **实现示例:CHECK_ITEM方法** 以下代码展示如何在CHECK_ITEM中通过行ID获取行项目信息(基于引用[^1][^4]): ```abap METHOD if_ex_mb_migo_badi~check_item. DATA: lv_migo_class TYPE string VALUE '(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL', lv_migo_method TYPE string VALUE 'LINE_GET', lv_tabix TYPE sy-tabix, ls_item TYPE goitem. FIELD-SYMBOLS <fo> TYPE any. DATA lr_o TYPE REF TO object. TRY. ASSIGN (lv_migo_class) TO <fo>. lr_o ?= <fo>. MOVE i_line_id TO lv_tabix. CALL METHOD lr_o->(lv_migo_method) EXPORTING i_line = lv_tabix i_dependent_tables = abap_true IMPORTING es_goitem = ls_item. CATCH cx_sy_dyn_call_error. " 错误处理 ENDTRY. " 使用ls_item访问行项目数据(如生产订单号) ENDMETHOD. ``` - **说明**:此代码在MIGO保存前触发,通过动态调用内核类获取行项目详情。调试时可在MIGO操作时设置断点验证[^1]。 #### 4. **注意事项** - **增强点选择**: - 行项目检查用 **CHECK_ITEM** 或 **ITEM_MODIFY**。 - 过账后处理用 **POST_DOCUMENT**(但BAPI调用可能不触发)。 - 科目替换用 **LINE_MODIFY**(需结合自建表配置)[^3]。 - **调试技巧**:使用事务码MIGO测试过账,并在SE19中激活断点。 - **限制**:某些方法(如POST_DOCUMENT)对BAPI调用无效,需考虑其他增强点如BAPI_OUTBOUND[^2]。 #### 5. **总结** MB_MIGO_BADI 是MIGO过账的核心增强点,通过其方法可在不同阶段插入业务逻辑。优先在SE19中分析接口方法,选择匹配业务需求的方法实现。实际开发中,需结合具体场景测试增强逻辑的触发条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值