MATERIAL CHANGE DOCUMENT

1. 标准的物料主数据修改记录表:CDHDR(抬头表)CDPOS(行项目)

        目前需要记录操作人员的工号,IP, 主机名

目前有外挂登录程序记录工号,

获取工号:GET PARAMETER ID 'ZLOGIN_USER' FIELD ls_ztsapcdhdr-emplyee_id.

2. 增强点 FM: CHANGEDOCUMENT_CLOSE

3. 增强代码

*&---------------------------------------------------------------------*
*& Form ZEN_MATNR_SAVE_CHANGEDOCUMENT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> PV_CDHDR
*&---------------------------------------------------------------------*
FORM zen_matnr_save_changedocument  USING pv_cdhdr TYPE cdhdr.

  DATA: ls_ztsapcdhdr TYPE ztsap_cdhdr.
  DATA: lv_emplyee_id TYPE zjpmf_user-emplyee_id,
        lv_srtfd      TYPE indx-srtfd.
  DATA: lv_zhostaddr TYPE msxxlist-hostadr,
        lv_zterminal TYPE mshostname,
        lv_zaddrstr  TYPE ni_nodeaddr.

  SELECT SINGLE COUNT(*)
    FROM cdhdr
    WHERE objectclas = pv_cdhdr-objectclas
      AND objectid   = pv_cdhdr-objectid
      AND changenr   = pv_cdhdr-changenr.
  IF sy-subrc EQ 0. "标准的有保存了
    SELECT SINGLE COUNT(*)
      FROM ztsap_cdhdr
      WHERE objectclas = pv_cdhdr-objectclas
        AND objectid   = pv_cdhdr-objectid
        AND changenr   = pv_cdhdr-changenr.
    IF sy-subrc NE 0. "客制表未保存
      lv_srtfd = pv_cdhdr-objectid.
      IMPORT lv_emplyee_id FROM DATABASE indx(z1) ID lv_srtfd.
      IF sy-subrc EQ 0.
        DELETE FROM DATABASE indx(z1) ID lv_srtfd.
      ENDIF.

      CALL FUNCTION 'TH_USER_INFO'
        EXPORTING
          client   = sy-mandt
          user     = sy-uname
        IMPORTING
          hostaddr = lv_zhostaddr
          terminal = lv_zterminal
          addrstr  = lv_zaddrstr.

      CLEAR ls_ztsapcdhdr.
      ls_ztsapcdhdr-objectclas = pv_cdhdr-objectclas.
      ls_ztsapcdhdr-objectid   = pv_cdhdr-objectid.
      ls_ztsapcdhdr-changenr   = pv_cdhdr-changenr.
      ls_ztsapcdhdr-hostname   = lv_zterminal.        " 主机名
      ls_ztsapcdhdr-ipaddr     = lv_zaddrstr.         " IP地址

      GET PARAMETER ID 'ZLOGIN_USER' FIELD ls_ztsapcdhdr-emplyee_id.
      IF ls_ztsapcdhdr-emplyee_id IS INITIAL.
          ls_ztsapcdhdr-emplyee_id = lv_emplyee_id.
      ENDIF.

      IF ls_ztsapcdhdr-emplyee_id IS NOT INITIAL.        .
        MODIFY ztsap_cdhdr FROM ls_ztsapcdhdr.
      ENDIF.
    ENDIF.
  ENDIF.


ENDFORM.

4. 增强代码种没办法在更新模式下获取到工号,即GET PARAMETER ID 'ZLOGIN_USER' FIELD ls_ztsapcdhdr-emplyee_id.无效。

只能靠
      lv_srtfd = pv_cdhdr-objectid.
      IMPORT lv_emplyee_id FROM DATABASE indx(z1) ID lv_srtfd.
      IF sy-subrc EQ 0.
        DELETE FROM DATABASE indx(z1) ID lv_srtfd.
      ENDIF.

获取工号,这个就需要在它执行直接写入工号;

5.写入工号增强:

增强一:ZCL_IM_BADI_MATERIAL_CHECK    IF_EX_BADI_MATERIAL_CHECK~CHECK_DATA

增强二:ZXMG0U02

目的就是调用之前先写入,其他的增强点也可以的啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值