一、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.
"-----------------------------------------@斌将军--------------------------------------------
这样,当报异常时,就可以将自定义的消息类和消息号,通过标准代码展示出来,解决了客户编号的必输校验问题