1、首先ucomm功能
CASE r_ucomm.
WHEN '&IC1'. "跳转ME23N
IF rs_selfield-fieldname = 'PARTNER'.
PERFORM call_trans_bp USING rs_selfield.
ENDIF.
ENDCASE.
2、PERFORM跳转功能实现
FORM call_trans_bp USING rs_selfield TYPE slis_selfield.
**********************************************************************
DATA: lv_suppl_role_exist TYPE char1,
lv_role_start TYPE bu_partnerrole,
lv_aktyp TYPE bu_aktyp,
lv_sicht_start TYPE bu_sicht,
lv_vartp_start TYPE bu_vartp,
lv_state_fcode TYPE char1,
lv_state TYPE char1,
lv_nav_disable TYPE xflag,
lv_locator_disable TYPE xflag,
lv_part_sw_allowed TYPE char1,
lv_save_to_leave TYPE xflag VALUE 'X',
lv_group_selection_enabled TYPE xflag,
lv_bp_number TYPE char40,
lt_tb003 TYPE TABLE OF bus_tb003_t,
lt_partnerroles TYPE bup_partnerroles_t,
ls_fldvl TYPE bus0fldval,
lt_fldvl TYPE bu_bus0fldval_t,
ls_rolegrp TYPE bup_partnerrolegroupings,
lt_rolegrp TYPE TABLE OF bup_partnerrolegroupings,
lv_issue_msg TYPE xflag.
**********************************************************************
lv_sicht_start = 'BUA130'.
lv_part_sw_allowed = 'X'.
lv_save_to_leave = 'X'.
lv_group_selection_enabled = 'X'.
lv_state = '3'.
**********************************************************************
lv_aktyp = '02'.
lv_bp_number = RS_SELFIELD-VALUE. "供应商编号
* Providing the business partner number to the business partner dialog.
ls_fldvl-tbfld = 'BUS000FLDS-PARTNER'.
ls_fldvl-fldvl = RS_SELFIELD-VALUE."wr02d-site_bp. "A033
INSERT ls_fldvl INTO TABLE lt_fldvl.
SELECT SINGLE bu_group
INTO @DATA(l_group)
FROM but000
WHERE partner = @RS_SELFIELD-VALUE.
* In case of creation, provide the BP grouping
* IF gv_bp_exists NE abap_true.
ls_fldvl-tbfld = 'BUS000FLDS-BU_GROUP'.
ls_fldvl-fldvl = l_group."wr02d-bp_grp_site. "ZD04
INSERT ls_fldvl INTO TABLE lt_fldvl.
* In case of creation of a retail site, the type of the attached Business Partner
* is organization.
ls_fldvl-tbfld = 'BUS000FLDS-TYPE'.
ls_fldvl-fldvl = '2'.
INSERT ls_fldvl INTO TABLE lt_fldvl.
* ENDIF.
**********************************************************************
* Call Business Partner Maintenance
CALL FUNCTION 'BUP_PARTNER_MAINTAIN_REDIRECT'
EXPORTING
i_aktyp = lv_aktyp "activity in BP transaction
i_xinit = '' "No display of the entry screen
i_xsave = 'X' "= SAVE Button is always offered (for create, change and display)
i_sicht_start = lv_sicht_start "view to start the BP maintenance
i_role = lv_role_start "role / rolegrouping to start the BP maintenance
i_nav_disable = lv_nav_disable "disable navigation completely
i_locator_disable = lv_locator_disable "disable the locator window
i_xallow_partner_switch = lv_part_sw_allowed "disable the switch to another BP
i_save_to_leave = lv_save_to_leave "leave to site maintenance after saving
i_group_selection_enabled = lv_group_selection_enabled " Provided BP grouping shall not be changeable
IMPORTING
e_state = lv_state
e_state_fcode = lv_state_fcode "contains info how the user left the business partner maintenance
e_bp_number = lv_bp_number
TABLES
t_fldvl = lt_fldvl "predefined field values
t_role = lt_partnerroles "BP roles that can be maintained
t_rolegrp = lt_rolegrp. "BP groupings that can be maintained
ENDFORM.