二维码

[三代] XD01客户主数据屏幕增强

Twilight发表于 2016-08-09 12:05Twilight 最后回复于 2016-08-09 12:05 [复制链接] 6997 0

主数据增强,我们先查找系统是否已经预留增强接口
一、SPRO路径:SPRO->后勤-常规->业务合作伙伴->客户->控制->客户所有的主数据字段的采用
XD01 1.jpg
二、准备客户主数据的自由修改增强
1、新建“屏幕组 XD”
XD01 2.jpg
2、新建“标签TAB页”
XD01 3.jpg
三、附加业务:主数据增强的处理
1、实施增强:CUSTOMER_ADD_DATA
XD01 4.jpg
XD01 6.jpg
  1.   METHOD if_ex_customer_add_data~check_add_on_active.
  2.     IF i_screen_group = 'XD'.
  3.       e_add_on_active = 'X'.
  4.     ELSE.
  5.       e_add_on_active = ''.
  6.     ENDIF.
  7.   ENDMETHOD.
复制代码

2、实施增强:CUSTOMER_ADD_DATA_CS
XD01 5.jpg
注意:这里的方法可能有好多都不用,但是我们最好都创建,不然会有TAB提示Adjustment:Interface method is not implemented,虽然只是黄色警告,但是可能会产生未知影响。
  1.   METHOD if_ex_customer_add_data_cs~get_taxi_screen.
  2.     CASE i_taxi_fcode.
  3.       WHEN 'XD_TAB'."TAB页的功能码
  4.         e_screen = '0100'."屏幕号
  5.         e_program = 'SAPLZCUSTOMER'."函数组的程序名
  6.         e_headerscreen_layout = space.
  7.     ENDCASE.
  8.   ENDMETHOD.
复制代码
  1.   METHOD if_ex_customer_add_data_cs~get_data.

  2.     CONSTANTS: c_mes_kunnr(50)  VALUE '(SAPLZCUSTOMER)KNA1-MES_KUNNR'.
  3.     FIELD-SYMBOLS: <fs_mes_kunnr> TYPE any.
  4.     ASSIGN (c_mes_kunnr) TO <fs_mes_kunnr>.
  5.     IF sy-subrc = 0.
  6.       s_kna1-mes_kunnr = <fs_mes_kunnr>.
  7.     ENDIF.

  8.   ENDMETHOD.
复制代码

四、附加业务:客户子屏幕
1、创建函数池
XD01 8.jpg
2、子屏幕
XD01 7.jpg
3、KNA1表结构增强
XD01 13.jpg
注意:这里增强了一个字段MES_KUNNR,我们在项目中经常看到该字段一般以ZZ、YY开头,这是约定俗成的规则,不是SAP强制的规定,这里只是掩饰可以不要ZZ开头,我们在真实项目中最好还是以ZZ、YY开头,保持一个良好的习惯
4、绘制屏幕元素
XD01 9.jpg
逻辑流:
  1. PROCESS BEFORE OUTPUT.
  2. *  MODULE status_0100.
  3.   MODULE screen_status_100.
  4.   MODULE set_data_100.
  5. *
  6. PROCESS AFTER INPUT.
  7. * MODULE USER_COMMAND_0100.
复制代码
  1. *----------------------------------------------------------------------*
  2. ***INCLUDE LZCUSTOMERO01.
  3. *----------------------------------------------------------------------*
  4. *&---------------------------------------------------------------------*
  5. *&      Module  SCREEN_STATUS_100  OUTPUT
  6. *&---------------------------------------------------------------------*
  7. *       text
  8. *----------------------------------------------------------------------*
  9. MODULE screen_status_100 OUTPUT.
  10.   IF sy-tcode = 'XD03'.
  11.     LOOP AT SCREEN.
  12.       IF screen-group1 = 'GR1'.
  13.         screen-input = 0.
  14.         MODIFY SCREEN.
  15.       ENDIF.
  16.     ENDLOOP.
  17.   ENDIF.

  18. ENDMODULE.                 " SCREEN_STATUS_100  OUTPUT
  19. *&---------------------------------------------------------------------*
  20. *&      Module  SET_DATA_100  OUTPUT
  21. *&---------------------------------------------------------------------*
  22. *       text
  23. *----------------------------------------------------------------------*
  24. MODULE set_data_100 OUTPUT.

  25.   TABLES:kna1.
  26.   CONSTANTS: c_mes_kunnr(50)  VALUE '(SAPMF02D)KNA1-MES_KUNNR'.
  27.   FIELD-SYMBOLS: <fs_mes_kunnr> TYPE any.
  28.   ASSIGN (c_mes_kunnr) TO <fs_mes_kunnr>.
  29.   IF sy-subrc = 0.
  30.     kna1-mes_kunnr = <fs_mes_kunnr>.
  31.   ENDIF.

  32. ENDMODULE.                 " SET_DATA_100  OUTPUT
复制代码

五、XD01测试
XD01 10.jpg
XD01 11.jpg
KNA1查看
XD01 12.jpg
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表