需要在业务伙伴角色ZFLV01和下,供应商:文本右边添加一个附加属性页签。
首先需要在表BUT000中找到结构CI_EEW_BUT000和CI_EEW_BUT000_X中添加增强字段。
然后在se11中创建一个对应的结构ZSBP_001,在后续事件中可能会用到
然后创建一个函数组ZFG_BP,首先在包含LZFG_BPTOP中定义全局变量
TABLES: BUT000.CONSTANTS:TABLE_NAME_BUT000 TYPE FSBP_TABLE_NAME VALUE 'BUT000',FALSE TYPE BOOLE-BOOLE VALUE ''.DATA: GS_BUT000 TYPE BUT000.
创建子屏幕9001,并将字段编辑在屏幕中,如图,其中表单一定要是BUT000-XXX。
实现屏幕中的BPO和BPI。
然后创建事件函数
事件1:ISDAT 读取数据 (所有人应用程序)
FUNCTION ZFM_BP_01_ISDAT.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------DATA: LS_BP_001 TYPE ZSBP_001.CALL FUNCTION 'BUP_BUPA_BUT000_GET'IMPORTINGE_BUT000 = GS_BUT000.MOVE-CORRESPONDING GS_BUT000 TO LS_BP_001.MOVE-CORRESPONDING LS_BP_001 TO BUT000.ENDFUNCTION.
事件2:DSAVB 收集数据(所有人应用程序)
FUNCTION ZFM_BP_01_DSAVE.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------DATA: LS_BP_001 TYPE ZSBP_001.MOVE-CORRESPONDING BUT000 TO LS_BP_001.MOVE-CORRESPONDING GS_BUT000 TO BUT000.MOVE-CORRESPONDING LS_BP_001 TO BUT000.CALL FUNCTION 'BUP_BUPA_BUT000_COLLECT'EXPORTINGI_SUBNAME = 'ZSBP_001'I_BUT000 = BUT000
* I_ALL_INTERVALS = ' '.
ENDFUNCTION.
事件3:XCHNG 检查数据是否已更改
FUNCTION ZFM_BP_01_XCHNG.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" REFERENCE(E_XCHNG) TYPE BOOLE_D
*" E_XCHNG TYPE BOOLE_D 域BOOLE的数据要素: 真 (='X'), 假 (=' ')
*"----------------------------------------------------------------------DATA: LS_BP_001_NEW TYPE ZSBP_001.DATA: LS_BP_001_OLD TYPE ZSBP_001.MOVE-CORRESPONDING GS_BUT000 TO LS_BP_001_OLD.MOVE-CORRESPONDING BUT000 TO LS_BP_001_NEW.IF LS_BP_001_NEW NE LS_BP_001_OLD.E_XCHNG = 'X'.ENDIF.ENDFUNCTION.
创建PBO函数
FUNCTION ZFM_BP_BUT000_01_PBO.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------DATA:LT_BUT000 TYPE TABLE OF BUT000.* step 1: request data from xo for dynpro structureCVI_BDT_ADAPTER=>DATA_PBO(EXPORTINGI_TABLE_NAME = TABLE_NAME_BUT000IMPORTINGE_DATA_TABLE = LT_BUT000[]).IF LT_BUT000[] IS INITIAL.CLEAR GS_BUT000.ELSE.READ TABLE LT_BUT000 INTO GS_BUT000 INDEX 1.ENDIF.
ENDFUNCTION.
创建PAI函数
FUNCTION ZFM_BP_BUT000_01_PAI.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------DATA:LT_BUT000 TYPE TABLE OF BUT000.FIELD-SYMBOLS: LIKE LINE OF LT_BUT000.DATA: LS_BP_001 TYPE ZSBP_001.CHECK CVI_BDT_ADAPTER=>IS_DIRECT_INPUT_ACTIVE( ) = FALSE.
* step 1: update xo memory from dypro structureCVI_BDT_ADAPTER=>GET_CURRENT_BP_DATA(EXPORTINGI_TABLE_NAME = TABLE_NAME_BUT000IMPORTINGE_DATA_TABLE = LT_BUT000[]).IF LT_BUT000[] IS INITIAL.IF GS_BUT000 IS NOT INITIAL.GS_BUT000-PARTNER = CVI_BDT_ADAPTER=>GET_CURRENT_BP( ).APPEND GS_BUT000 TO LT_BUT000.ENDIF.ELSE.READ TABLE LT_BUT000 ASSIGNING INDEX 1.MOVE-CORRESPONDING GS_BUT000 TO LS_BP_001.MOVE-CORRESPONDING LS_BP_001 TO .ENDIF.CVI_BDT_ADAPTER=>DATA_PAI(I_TABLE_NAME = TABLE_NAME_BUT000I_DATA_NEW = LT_BUT000[]I_VALIDATE = FALSE).
ENDFUNCTION.
BDT事务码:BUPT
首先创建应用程序,双击BUS1进入后,建立新条目。
然后创建数据集,双击BUS23,进入后新建条目
创建字段组,双击BUS2后,建立新条目。然后建立字段组和字段
创建视图,双击BUS3后,建立新条目。子屏幕名可以通过执行子屏幕获得。然后将前面创建的字段组分配给视图。
创建部分,双击BUS4后,建立新条目。然后建视图分配给部分。
创建屏幕,双击BUS5后,建立新条目。然后将部分分配给屏幕。
创建屏幕顺序,双击BUS6后,建立创建屏幕顺序。然后将屏幕分配给屏幕顺序,还需要将自定义屏幕分配给标准屏幕顺序 BUP001,创建顺序种类,将屏幕顺序分配给屏幕顺序种类。
创建业务伙伴视图,双击BUSD,然后新建业务伙伴视图,然后分配数据集,然后分配应用程序
分配事件函数,双击BUS7,创建事件,然后分配功能模块 ,并且将ISDAT和XCHNG都分配函数
将视图添加到对应的伙伴角色上
SPRO->跨应用组件->SAP业务伙伴->业务合作伙伴->基本设置->商业伙伴角色->定义业务伙伴角色
定义角色:
找到对应的角色分组,将新建的BP角色分配给角色分组
效果:TJX1,TJ00000011