1.效果
2. BADI:MB_MIGO_BADI增强
2.1 创建函数组ZFG_MIGO,增强屏幕9001

屏幕字段绑定的结构

函数组top声明全局变量zss_migo_h


2.2 实施IF_EX_MB_MIGO_BADI~PBO_HEADER方法
读取表ZMMT0010增强的领料用途到PBO,设置增强的子屏幕,增强页签名称等处理
METHOD if_ex_mb_migo_badi~pbo_header.
DATA ls_head TYPE zss_migo_h.
DATA ls_godynpro TYPE godynpro.
FIELD-SYMBOLS <ls_data> TYPE any.
FIELD-SYMBOLS <ls_header> TYPE any.
ASSIGN ('(SAPLMIGO)GODYNPRO') TO <ls_data>.
ASSIGN ('(SAPLMIGO)GOHEAD') TO <ls_header>.
ls_godynpro = <ls_data>.
e_cprog = 'SAPLZFG_MIGO'.
e_dynnr = '9001'.
e_heading = '附加信息'.
IF ls_godynpro-action = 'A04'. "查看凭证
SELECT SINGLE zzllyt_h
INTO ls_head-zzllyt_h
FROM zmmt0010
WHERE mblnr = ls_godynpro-mat_doc
AND mjahr = ls_godynpro-doc_year.
CALL FUNCTION 'ZFM_MIGO_SET_H_DATA'
EXPORTING
is_input = ls_head.
ENDIF.
ENDMETHOD.
函数ZFM_MIGO_SET_H_DATA 输出数据到抬头增强屏幕
FUNCTION zfm_migo_set_h_data.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IS_INPUT) TYPE ZSS_MIGO_H
*"----------------------------------------------------------------------
MOVE-CORRESPONDING is_input TO zss_migo_h.
ENDFUNCTION.
2.3 实施IF_EX_MB_MIGO_BADI~PAI_HEADER方法
METHOD if_ex_mb_migo_badi~pai_header.
DATA: ls_head TYPE zss_migo_h.
CALL FUNCTION 'ZFM_MIGO_GET_H_DATA'
IMPORTING
es_output = ls_head.
gs_exdata_header-zzllyt_h = ls_head-zzllyt_h.
ENDMETHOD.
函数:ZFM_MIGO_GET_H_DATA从抬头增强屏幕获取数据
FUNCTION zfm_migo_get_h_data.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" REFERENCE(ES_OUTPUT) TYPE ZSS_MIGO_H
*"----------------------------------------------------------------------
MOVE-CORRESPONDING zss_migo_h TO es_output.
ENDFUNCTION.
2.4 实施IF_EX_MB_MIGO_BADI~CHECK_HEADER方法
必填检查
METHOD if_ex_mb_migo_badi~check_header.
FIELD-SYMBOLS: <fs_kernel_class> TYPE any.
FIELD-SYMBOLS: <fs_gohead> TYPE gohead.
DATA lv_ref_kernel TYPE REF TO object.
DATA ls_bapiret2 TYPE bapiret2.
DATA lt_item TYPE goitem_t.
DATA lv_error TYPE char1.
DATA lv_func_area_fg TYPE char1.
ASSIGN ('(SAPLMIGO)GOHEAD') TO <fs_gohead>.
FIELD-SYMBOLS : <zgodynpro> TYPE godynpro.
ASSIGN ('(SAPLMIGO)GODYNPRO') TO <zgodynpro>.
CHECK sy-subrc = 0.
IF <zgodynpro>-action = 'A07' AND <zgodynpro>-refdoc = 'R10'.
ASSIGN ('(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL') TO <fs_kernel_class>.
IF sy-subrc = 0.
lv_ref_kernel ?= <fs_kernel_class>.
* 获取MIGO中的行项目数据
CALL METHOD lv_ref_kernel->('GET_PT_GOITEM')
IMPORTING
e_pt_goitem = lt_item.
LOOP AT lt_item INTO DATA(ls_item).
SELECT COUNT(*)
FROM csks
WHERE kokrs = 'BAK1'
AND func_area IN ( '0200','0500' )
AND kostl = @ls_item-kostl
AND datbi > @sy-datum.
IF sy-subrc = 0.
lv_func_area_fg = abap_true. "FUNC_AREA=0200销售OR 0500
ENDIF.
IF ( ls_item-werks = '1100' OR ls_item-werks = '1200')
AND ( ls_item-bwart = '201' OR ls_item-bwart = 'Z11' )
AND ( ls_item-kostl = '1100A01169' OR lv_func_area_fg = abap_true ).
gv_activetab = 'OK_GOHEAD_EXT_1'.
IF gs_exdata_header-zzllyt_h IS INITIAL.
ls_bapiret2-type = 'E'.
ls_bapiret2-id = 'ZMM001'.
ls_bapiret2-number = '019'.
APPEND ls_bapiret2 TO et_bapiret2.
CLEAR: ls_bapiret2.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDMETHOD.
2.5 实施IF_EX_MB_MIGO_BADI~POST_DOCUMENT方法
保存增强字段+物料凭证信息到自定义表


MOVE-CORRESPONDING is_mkpf TO gs_exdata_header.
CALL FUNCTION 'ZFM_SAVE_HEAD_DB' IN UPDATE TASK
EXPORTING
is_head = gs_exdata_header.
函数:ZFM_SAVE_HEAD_DB 保存抬头增强数据
FUNCTION zfm_save_head_db.
*"----------------------------------------------------------------------
*"*"更新函数模块:
*"
*"*"本地接口:
*" IMPORTING
*" VALUE(IS_HEAD) TYPE ZMMT0010
*"----------------------------------------------------------------------
MODIFY zmmt0010 FROM is_head.
IF sy-subrc NE 0.
MESSAGE a398(00) WITH '更新表zmmt0010失败'.
ENDIF.
ENDFUNCTION.
2.6 满足条件下,默认激活tabstrip增强页签


传递增强页签的功能码给tabstrip控件的activetab属性

隐式增强位置:程序LMIGOHC2
class:lcl_migo_header 的 method :pbo


1772

被折叠的 条评论
为什么被折叠?



