要用到两个BADI:VENDOR_ADD_DATA和VENDOR_ADD_DATA_CS。下面只是简述一下过程,仅供参考,一些细节问题在实际使用的时候还请多考虑考虑。
1、自建表ZVENDOR_ADD_ON,字段包括客户端,供应商号以及增强屏幕上要显示的一些字段,如DATA。
2、VENDOR_ADD_DATA_CS是带FILTER的,需要从SPRO里配置屏幕组,配置路径为:财务会计(新)-》应收帐目和应付帐目-》供应商帐户-》主数据-》供应商主记录创建准备-》业务合作伙伴主记录里的特殊客户字段-》在供应商主记录中准备自由修改增强。这个配置是跨CLIENT的,首先创建一个屏幕组ZZ,给个描述如附加数据,然后在屏幕组下创建一个TAB页,编号1,功能代码ZTAB,描述附加数据。
3、新建一个FUNCTION GROUP:Z_VENDOR_DATA,新建一个屏幕100,绘制自建表里要显示的字段DATA。这个字段你可以单独定义个变量,也可以从FUNCTION GROUP定义个全局的结构如WA_VENDOR,这个字段名就用wa_vendor-data,我一般这么写,这个随个人喜好。在屏幕的PBO里面,写上当TCODE为XK03的时候,这个字段的INPUT状态为0。PAI在这次增强里没有用到,不予处理。在FUNCTION GROUP里新建两个FM:
z_vendor_data_read 从数据库读取附加字段值
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(P_LIFNR) TYPE LIFNR
*"----------------------------------------------------------------------
SELECT SINGLE * FROM ZVENDOR_ADD_ON
INTO WA_VENDOR WHERE LIFNR = P_LIFNR.
z_vendor_data_save 将附加字段值保存到数据库
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(P_LIFNR) TYPE LIFNR
*"----------------------------------------------------------------------
DATA:WA LIKE ZVENDOR_ADD_ON.
SELECT SINGLE * FROM ZVENDOR_ADD_ON INTO WA
WHERE LIFNR = P_LIFNR.
IF SY-SUBRC NE 0.
WA-LIFNR = P_LIFNR.
WA-DATA = WA_VENDOR-DATA.
IF WA-DATA <> ''.
INSERT INTO ZVENDOR_ADD_ON VALUES WA.
ENDIF.
ELSE.
UPDATE ZVENDOR_ADD_ON
SET DATA = WA_VENDOR-DATA WHERE LIFNR = P_LIFNR.
ENDIF.
4、将BADI:VENDOR_ADD_DATA实现一下,如ZVENDOR_ADD_DATA,进入方法CHECK_ADD_ON_ACTIVE写下如下代码,然后激活。目的就是激活屏幕ZZ。这个时候你从XK03应该看到TOOLBAR上多了个:附加数据的按钮。
CASE I_SCREEN_GROUP.
WHEN 'ZZ'.
E_ADD_ON_ACTIVE = 'X'.
WHEN OTHERS.
ENDCASE.
5,将BADI:VENDOR_ADD_DATA_CS实现一下,如ZVENDOR_ADD_DATA_CS,
进入GET_TAXI_SCREEN方法写下如下代码。其中E_PROGRAM 为FUNCTION GROUP的主程序名。
IF FLT_VAL = 'ZZ'.
IF I_TAXI_FCODE = 'ZTAB'.
E_SCREEN = '0100'.
E_PROGRAM = 'SAPLZ_VENDOR_DATA'.
E_HEADERSCREEN_LAYOUT = ''.
ENDIF.
ENDIF.
进入SET_DATA方法,调用FM:z_vendor_data_read
进入GET_DATA方法,调用FM:z_vendor_data_save
最后效果如下:
阅读(3603) | 评论(0) | 转发(0) |