引用:PS CJ20N 项目定义属性字段增强 (qq.com)
达成效果:
一、CJ20N添加字段
二、用户出口CNEX0006
CMOD分配CNEX0006
出口EXIT_SAPLCJWB_002
找到全局文件ZXCN1TOP,引入PROJ,定义判断是否可编辑的变量G_DISPLAY
实现包含文件ZXCNU11
数据展示到子屏幕
获取标准屏幕是否可编辑标识SAP_DISPLAY_ONLY
出口EXIT_SAPLCJWB_003
屏幕字段传入到数据表
编辑0600屏幕新增字段
获取客户名称,当输入客户编号后,带出客户名称显示在后边的文本框中
输入流
MODULE get_kunnr_name INPUT. IF PROJ-KUNNR IS NOT INITIAL. SELECT SINGLE NAME1 FROM KNA1 INTO PROJ-NAME1 WHERE KUNNR = PROJ-KUNNR. ENDIF. ENDMODULE.
输出流
MODULE status_0600 OUTPUT. LOOP AT SCREEN. IF G_DISPLAY = 'X'. SCREEN-INPUT = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE.
激活以上全部文件即可
三、校验必输项
虽然给客户编号设置了必输,但是只有进入所在的页签才能校验必输,如果创建后直接保存,必输不起作用,因此需要在保存的时候校验,客户编号是否为空
BADI:PROJECTDEF_UPDATE
SE19创建对应的增强,在AT_SAVE方法中,添加如下代码
METHOD if_ex_projectdef_update~at_save. IF im_projectdefinition-kunnr IS INITIAL. sy-msgid = 'ZNHPS100'. sy-msgno = '012'."客户编码必输 RAISE error_with_message. ELSE. IF im_projectdefinition-vbukr IS NOT INITIAL. DATA:lv_kunnr TYPE kunnr. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = im_projectdefinition-kunnr IMPORTING output = lv_kunnr. SELECT COUNT(*) FROM knb1 WHERE kunnr = @lv_kunnr AND bukrs = @im_projectdefinition-vbukr. IF sy-subrc NE 0. sy-msgid = 'ZNHPS100'. sy-msgno = '013'."客户编码不存在 sy-msgv1 = im_projectdefinition-kunnr. sy-msgv2 = im_projectdefinition-vbukr. CLEAR:sy-msgv3,sy-msgv4. RAISE error_with_message. ENDIF. ENDIF. ENDIF. ENDMETHOD.
这样,当报异常时,就可以将自定义的消息类和消息号,通过标准代码展示出来,解决了客户编号的必输校验问题
^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^