Chinaunix首页 | 论坛 | 博客
  • 博客访问: 402314
  • 博文数量: 120
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 1266
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 16:04
文章分类

全部博文(120)

文章存档

2011年(4)

2010年(10)

2009年(38)

2008年(68)

我的朋友

分类:

2009-07-24 16:48:03

要用到两个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

最后效果如下:


 

阅读(3537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~