SAP MIGO抬头屏幕增强

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值