SAP SO销售单抬头行项目屏幕增强,新增客户自定义字段示例
  RdEelXhuDp09 2023年12月07日 31 0


1. 前言

对于销售单屏幕增强:

  • 屏幕使用sap程序SAPMV45A标准预留的两个子屏幕8309 8459
  • 增强出口BAdI & USER_EXIT
  • BAdI
  • 使用SAP BADI_SD_SALES_BASIC(SE18->BAdI名称)中
  • BADI_SLS_HEAD_SCR_CUS
  • BADI_SLS_ITEM_SCR_CUS
    进行增强
  • USER_EXIT(MV45AOZZ)
  • USEREXIT_FIELD_MODIFICATION
  • USEREXIT_MOVE_FIELD_TO_VBAK
  • USEREXIT_SAVE_DOCUMENT
  • USEREXIT_SAVE_DOCUMENT_PREPARE
  • 更多出口函数及函数作用请参考官方文档:User Exits In Sales Document Processing
  • SAP SO销售单抬头行项目屏幕增强,新增客户自定义字段示例_数据

  • 对于销售订单增强的标准变量:
  • 抬头
  • XVBAK:新数据如有变化/否则与旧数据相同
  • YVBAK:旧数据如果有变化(考虑项目)/否则为空
  • VBAK:工作区
  • 行项目
  • XVBAP:新数据如有变化/否则与旧数据相同
  • YVBAP:旧数据如果有变化(考虑项目)/否则为空
  • VBAK:工作区
  • 其他
  • 等同抬头行项目(自行测试)

2. 增强效果

  1. 抬头
  2. 行项目

3. Step1:新增两个结构并include到VBAK(销售凭证抬头表) VBAP(销售凭证行项目表)

  1. 抬头
  2. 行项目

4. Step2:屏幕增加布局

  1. 抬头
  2. 行项目

5. Step3:屏幕PBO PAI事件

  1. 抬头
MODULE status_8309 OUTPUT.
  IF SY-TCODE EQ 'VA03'.
    LOOP AT SCREEN.
      IF SCREEN-NAME = 'VBAK-ZGFH'
      OR SCREEN-NAME = 'VBAK-ZJFD'
      OR SCREEN-NAME = 'VBAK-ZXTGG'.
        SCREEN-INPUT = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDMODULE.

SAP SO销售单抬头行项目屏幕增强,新增客户自定义字段示例_mvc_02

  1. 行项目
IF SY-TCODE = 'VA03'.
  LOOP AT SCREEN .
    IF SCREEN-NAME = 'VBAP-ZXTGG'
      OR SCREEN-NAME = 'VBAP-ZYQYQ'
      OR SCREEN-NAME = 'VBAP-ZXTDYXH'
      OR SCREEN-NAME = 'VBAP-ZXTBZ'.
      SCREEN-INPUT = 0.
      MODIFY SCREEN.
    ENDIF.
    ENDLOOP.
ENDIF.

SAP SO销售单抬头行项目屏幕增强,新增客户自定义字段示例_python_03

6. Step4:用户出口保存前增强和保存后增强(程序:SAPMV45A 包含程序:MV45AFZZ)

  1. 保存前 USEREXIT_SAVE_DOCUMENT_PREPARE(新建增强点,增加校验)
IF ( SY-TCODE = 'VA01' AND SY-UCOMM = 'SICH' AND VBAK-ERDAT > '20210916' ) OR         "跳过历史订单;因为有信贷增强,所以增加了一个UCOMM ENT2
    ( SY-TCODE = 'VA01' AND SY-UCOMM = 'ENT2' AND VBAK-ERDAT > '20210916' ) OR
    ( SY-TCODE = 'VA02' AND SY-UCOMM = 'SICH' AND VBAK-ERDAT > '20210916' ).

      DATA: BEGIN OF LT_MARA OCCURS 0,
        MATNR      TYPE MARA-MATNR,
        MTPOS_MARA TYPE MARA-MTPOS_MARA,
      END OF LT_MARA.

      IF VBAK-AUART = 'Z001' OR VBAK-AUART = 'Z002' OR
      VBAK-AUART = 'Z003' OR VBAK-AUART = 'Z004' OR VBAK-AUART = 'Z005'.

        "Herder check
*      IF VBAK-ZXTGG IS  INITIAL.
*        MESSAGE |销售凭证:{ VBAK-VBELN } "抬头-附加数据B-交付-箱贴规格"未维护值,不允许保存| TYPE 'E'.
*      ENDIF.

        "ITEM Check
        SELECT MATNR MTPOS_MARA
        INTO TABLE LT_MARA
        FROM  MARA
        FOR ALL ENTRIES IN XVBAP
        WHERE MATNR = XVBAP-MATNR.

          LOOP AT XVBAP WHERE UPDKZ NE 'D'.

            READ TABLE LT_MARA TRANSPORTING NO FIELDS WITH KEY MATNR = XVBAP-MATNR MTPOS_MARA = 'NORM'.    "NORN类型物料
            IF SY-SUBRC = 0.
            IF XVBAP-ZMPXX IS  INITIAL.
              MESSAGE |销售凭证:{ XVBAP-VBELN } "行项目:{ XVBAP-POSNR }-附加数据B-铭牌数据-铭牌选项"未维护值,不允许保存| TYPE 'E'.
            ELSEIF XVBAP-ZYSBM IS INITIAL.
              MESSAGE |销售凭证:{ XVBAP-VBELN } "行项目:{ XVBAP-POSNR }-附加数据B-铭牌数据-颜色编码"未维护值,不允许保存| TYPE 'E'.
            ELSEIF XVBAP-ZYQBZ IS INITIAL.
              MESSAGE |销售凭证:{ XVBAP-VBELN } "行项目:{ XVBAP-POSNR }-附加数据B-铭牌数据-油漆标准"未维护值,不允许保存| TYPE 'E'.
            ELSEIF XVBAP-ZXTGG IS INITIAL.
              MESSAGE |销售凭证:{ XVBAP-VBELN } "行项目:{ XVBAP-POSNR }-附加数据B-交付数据-箱贴规格"未维护值,不允许保存| TYPE 'E'.
            ELSEIF XVBAP-ZYQYQ IS INITIAL.
              MESSAGE |销售凭证:{ XVBAP-VBELN } "行项目:{ XVBAP-POSNR }-附加数据B-交付数据-要求编码"未维护值,不允许保存| TYPE 'E'.
              ENDIF.
            ENDIF.

            READ TABLE LT_MARA TRANSPORTING NO FIELDS WITH KEY MATNR = XVBAP-MATNR MTPOS_MARA = 'NOR2'.    "NOR2类型物料
            IF SY-SUBRC = 0.
            IF XVBAP-ZXTGG IS INITIAL.
              MESSAGE |销售凭证:{ XVBAP-VBELN } "行项目:{ XVBAP-POSNR }-附加数据B-交付数据-箱贴规格"未维护值,不允许保存| TYPE 'E'.
              ENDIF.
            ENDIF.

          ENDLOOP.
        ENDIF.
      ENDIF.

SAP SO销售单抬头行项目屏幕增强,新增客户自定义字段示例_工作区_04

  1. 保存后:FORM USEREXIT_SAVE_DOCUMENT(无需求,未做增强)


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月07日 0

暂无评论

推荐阅读
RdEelXhuDp09