SAP: CS03 Enhancement LCSDIFAZ / MC29LFF1

这篇博客详细介绍了在SAP CS03中如何实现LCSDIFAZ和MC29LFF1的增强功能。通过调用函数模块ZWF_BOM_APPRBOX和ZKZ_CHECK_CUSTOM_PRGM,检查并执行BOM(物料清单)的相关操作。在执行这些操作前,进行了权限检查、工作流状态验证以及BOM状态的判断,确保了数据的安全性和一致性。
摘要由CSDN通过智能技术生成

LCSDIFAZ:

FORM MAST_INSERT.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form MAST_INSERT, Start                                                                                                                           A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 2  ZBOM_IMPLEMEMENTATION.    "active version
CALL FUNCTION 'ZWF_BOM_APPRBOX'
  EXPORTING
    MATNR         TSD-MATNR
    WERKS         TSD-WERKS
    STLAN         TSD-STLAN
    AENNR         TSD-AENNR
          .
ENDENHANCEMENT.

 

FUNCTION ZWF_BOM_APPRBOX.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(MATNR) TYPE  MATNR OPTIONAL
*"     VALUE(WERKS) TYPE  WERKS_D OPTIONAL
*"     VALUE(STLAN) TYPE  STLAN OPTIONAL
*"     VALUE(AENNR) TYPE  AENNR OPTIONAL
*"----------------------------------------------------------------------
  DATA: L_OBJKEY TYPE SIBFBORIID.
  DATA: L_SPID TYPE ZSPID.
  DATA: L_STLST TYPE STLST.
  DATA: L_WFID TYPE ZWFID.
  DATA: L_TYPEID TYPE SWO_OBJTYP.
  DATA: SWO_RETURN TYPE SWOTRETURN.
  DATA: IT_CONTAINER TYPE TABLE OF SWCONT WITH HEADER LINE.
  DATA: L_ISLAU TYPE ZISLAU.
  DATA: L_STSPID TYPE ZSPID.

  IF SY-TCODE <> 'CS02' AND SY-TCODE <> 'CS03'.
    EXIT.
  ENDIF.

*  AUTHORITY-CHECK OBJECT 'C_STUE_NOH' ID 'NOHIS' FIELD 'X'.
*  IF SY-SUBRC = 0.
*    EXIT.
*  ENDIF.

  L_TYPEID 'BUS1080'.
  L_OBJKEY+0(18MATNR.
  L_OBJKEY+18(4WERKS.
  L_OBJKEY+22(1STLAN.

  CALL FUNCTION 'SWU_OBJECT_PUBLISH'
    EXPORTING
      OBJTYPE           L_TYPEID
      OBJKEY            L_OBJKEY
      MODE              'D'
    EXCEPTIONS
      OBJTYPE_NOT_FOUND 1
      OTHERS            2.
  IF SY-SUBRC <> 0.
    MESSAGE A018(ZWF_1).
  ENDIF.

  "Check enhancement program or not (ZCS02)
  CALL FUNCTION 'ZKZ_CHECK_CUSTOM_PRGM'
    EXCEPTIONS
      CUSTOM_PRGM 1
      OTHERS      2.
  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

  CALL FUNCTION 'ZWF_BOM_ISEDIT'
    EXPORTING
      MATNR   MATNR
      WERKS   WERKS
      STLAN   STLAN
      AENNR   AENNR
    EXCEPTIONS
      NOT_EDIT 1
      OTHERS   2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFUNCTION.

 

FUNCTION ZKZ_CHECK_CUSTOM_PRGM.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  EXCEPTIONS
*"      CUSTOM_PRGM
*"----------------------------------------------------------------------
  DATA: L_TCVARIANT TYPE SHDTVCIU-TCVARIANT.
  DATA: L_RC TYPE SY-SUBRC.

  CALL FUNCTION 'RS_HDSYS_GET_TC_VARIANT'
    IMPORTING
      TCVARIANT L_TCVARIANT
      RC        L_RC.
  IF L_RC AND L_TCVARIANT IS NOT INITIAL.
    RAISE CUSTOM_PRGM.
  ENDIF.

ENDFUNCTION.

 

FUNCTION ZWF_BOM_ISEDIT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(MATNR) TYPE  MATNR OPTIONAL
*"     VALUE(WERKS) TYPE  WERKS_D OPTIONAL
*"     VALUE(STLAN) TYPE  STLAN OPTIONAL
*"     VALUE(AENNR) TYPE  AENNR OPTIONAL
*"  EXCEPTIONS
*"      NOT_EDIT
*"----------------------------------------------------------------------
  DATA: L_OBJKEY TYPE SIBFBORIID.
  DATA: L_SPID TYPE ZSPID.
  DATA: L_STLST TYPE STLST.
  DATA: L_WFID TYPE ZWFID.
  DATA: L_OBJTYPE TYPE SWO_OBJTYP.
  DATA: SWO_RETURN TYPE SWOTRETURN.
  DATA: IT_CONTAINER TYPE TABLE OF SWCONT WITH HEADER LINE.
  DATA: L_ISLAU TYPE ZISLAU.
  DATA: L_INSTID TYPE SIBFBORIID.
  DATA: WA_SWWUSERWI TYPE SWWUSERWI,
        IT_SWWUSERWI TYPE SWWUSERWI OCCURS 0.
  DATA: G_WIID TYPE SWW_WIID.
  DATA: L_TYPEID TYPE SIBFTYPEID.

  CHECK SY-TCODE 'CS02'.

  CLEAR: SY-MSGID, SY-MSGTY, SY-MSGNO, SY-MSGV1, SY-MSGV2, SY-MSGV3, SY-MSGV4.

  L_OBJTYPE 'BUS1080'.
  L_OBJKEY+0(18MATNR.
  L_OBJKEY+18(4WERKS.
  L_OBJKEY+22(1STLAN.

  "Get WFID
  CALL FUNCTION 'ZKZ_GET_OBJ_ATTR'
    EXPORTING
      OBJTYPE       L_OBJTYPE
      OBJKEY        L_OBJKEY
      VERB          'WFID'
      ACCESS        'G'
    IMPORTING
      RETURN        SWO_RETURN
    TABLES
      CONTAINER     IT_CONTAINER
    EXCEPTIONS
      DISPLAY_ERROR 1
      OTHERS        2.

  IF SY-SUBRC NE OR SWO_RETURN-CODE NE 0.
    EXIT.
  ENDIF.
  READ TABLE IT_CONTAINER WITH KEY ELEMENT 'WFID'.
  L_WFID IT_CONTAINER-VALUE.

  "If launch workflow
  CALL FUNCTION 'ZWF_CHECK_WF_RUN'
    EXPORTING
      WFID    L_WFID
    EXCEPTIONS
      NOT_RUN 1
      OTHERS  2.
  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

  "Get BOM status
  CALL FUNCTION 'ZWF_CHECK_BOM_STATUS'
    EXPORTING
      MATNR             MATNR
      WERKS             WERKS
      STLAN             STLAN
      BATCH_CHECK_ALTER 'X'
    IMPORTING
      STLST             L_STLST
    EXCEPTIONS
      CHECK_BOM_FAILURE 1
      OTHERS            2.
  IF SY-SUBRC 0.
    IF L_STLST <> 2.
      "If BOM status is 2 (active) then no any checking
      "If BOM status is 1 (inactive)
      "then check current user has authorization to modify or not

      "Get current O/S work item
      "To fix exception no workflow trigger but create approval log
      "Check work item created or not, if not, no check edit mode
      CALL FUNCTION 'ZKZ_GET_CURR_WI'
        EXPORTING
          TYPEID       'BUS1080'
          INSTID       L_OBJKEY
          WFID         L_WFID
        TABLES
          IT_SWWUSERWI IT_SWWUSERWI.
      IF IT_SWWUSERWI[] IS INITIAL.
        EXIT.
      ENDIF.
      READ TABLE IT_SWWUSERWI INTO WA_SWWUSERWI INDEX 1.
      G_WIID WA_SWWUSERWI-WI_ID.
      IF G_WIID IS INITIAL.
        EXIT.
      ENDIF.

      "Get current approval step
      CALL FUNCTION 'ZKZ_GET_NEXT_STEP'
        EXPORTING
          WFID   L_WFID
          INSTID L_OBJKEY
        IMPORTING
          SPID   L_SPID.

      "Check user has authorization to edit or not
      CALL FUNCTION 'ZKZ_CHECK_MOD_AUTH'
        EXPORTING
          WFID    L_WFID
          INSTID  L_OBJKEY
          SPID    L_SPID
        EXCEPTIONS
          NO_AUTH 1
          OTHERS  2.
      IF SY-SUBRC <> 0.
        SY-MSGID 'ZWF_1'.
        SY-MSGTY 'A'.
        SY-MSGNO '011'.
        SY-MSGV1 'BOM is under approval'.
        RAISE NOT_EDIT.
      ENDIF.
    ELSE.
      IF AENNR IS INITIAL.
        SY-MSGID 'ZWF_1'.
        SY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值