You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ABAP中打开事务码BP时直接进入Sales(销售)视图

ABAP代码启动事务码BP直接进入Sales(Vertrieb)视图的解决方案

希望通过ABAP代码启动事务码BP时直接进入“Sales”(Vertrieb)视图,但当前代码仅打开默认起始页面。请问是否需要子标题ID?若是,该如何查找?若否,还有其他解决方法吗?

当前使用的代码:

METHOD open_bupa.
  DATA(request) = NEW cl_bupa_navigation_request( ).
  request->set_partner_number( i_bupa ).
  request->set_bupa_activity( request->gc_activity_display ).
  request->set_maintenance_id( request->gc_maintenance_id_partner ).
  request->set_bupa_partner_role( VALUE #( role = 'ZDEB' bpview = 'ZDEB' ) ).

  DATA(options) = NEW cl_bupa_dialog_joel_options( ).
  options->set_locator_visible( abap_false ).
  SET PARAMETER ID: 'VKO' FIELD i_current_row-sales_org,
                    'VTW' FIELD i_current_row-distribution_channel,
                    'SPA' FIELD i_current_row-sector.
  cl_bupa_dialog_joel=>start_with_navigation(
      EXPORTING
        iv_request              = request
        iv_options              = options
        iv_in_new_internal_mode = abap_false
        iv_in_new_window        = abap_false
      EXCEPTIONS
        already_started         = 1
        not_allowed             = 2
        OTHERS                  = 3
    ).
  IF sy-subrc = 2.
    MESSAGE i011.
  ENDIF.
ENDMETHOD.

一、是否需要子标题ID?

是,必须指定**视图ID(子屏幕ID)**才能直接跳转到Sales视图,默认启动BP只会打开主概览页面。

二、如何查找Sales视图对应的ID?

有两种可靠方式:

  • 手动查询(推荐):
    1. 正常打开事务码BP,输入目标合作伙伴编号,切换到Sales(Vertrieb)视图
    2. 点击菜单「系统→状态」,在弹出窗口的「屏幕数据」区域找到「子屏幕」字段,对应的数值就是该视图的ID(例如常见的Sales视图ID为0008,但不同角色/系统可能有差异,以实际值为准)
  • SE80查询:
    1. 打开SE80,输入BP的主程序SAPLBU_PARTNER
    2. 展开「屏幕」节点,查找名称包含「Sales」或「Vertrieb」的子屏幕,记录对应的编号

三、修改代码实现直接跳转

基于你的现有代码,有两种修改方式:

方式1:使用cl_bupa_navigation_request的set_view_id方法

在创建request对象后添加一行代码,指定视图ID:

request->set_view_id( '0008' ). " 替换为你实际查到的Sales视图ID

方式2:补充设置参数ID BPA

在SET PARAMETER ID块中添加对BPA的设置,作为补充(部分场景下单独用方式1可能不生效):

SET PARAMETER ID: 'VKO' FIELD i_current_row-sales_org,
                  'VTW' FIELD i_current_row-distribution_channel,
                  'SPA' FIELD i_current_row-sector,
                  'BPA' FIELD '0008'. " 替换为实际视图ID

完整修改后的代码示例

METHOD open_bupa.
  DATA(request) = NEW cl_bupa_navigation_request( ).
  request->set_partner_number( i_bupa ).
  request->set_bupa_activity( request->gc_activity_display ).
  request->set_maintenance_id( request->gc_maintenance_id_partner ).
  request->set_bupa_partner_role( VALUE #( role = 'ZDEB' bpview = 'ZDEB' ) ).
  request->set_view_id( '0008' ). " 指向Sales视图的ID

  DATA(options) = NEW cl_bupa_dialog_joel_options( ).
  options->set_locator_visible( abap_false ).
  SET PARAMETER ID: 'VKO' FIELD i_current_row-sales_org,
                    'VTW' FIELD i_current_row-distribution_channel,
                    'SPA' FIELD i_current_row-sector,
                    'BPA' FIELD '0008'. " 补充参数设置

  cl_bupa_dialog_joel=>start_with_navigation(
      EXPORTING
        iv_request              = request
        iv_options              = options
        iv_in_new_internal_mode = abap_false
        iv_in_new_window        = abap_false
      EXCEPTIONS
        already_started         = 1
        not_allowed             = 2
        OTHERS                  = 3
    ).
  IF sy-subrc = 2.
    MESSAGE i011.
  ENDIF.
ENDMETHOD.

四、备选方案(如果上述方法无效)

如果通过cl_bupa_dialog_joel的方式仍无法跳转,可以直接使用CALL TRANSACTION命令并跳过初始屏幕:

METHOD open_bupa.
  SET PARAMETER ID 'BUT' FIELD i_bupa.
  SET PARAMETER ID 'VKO' FIELD i_current_row-sales_org.
  SET PARAMETER ID 'VTW' FIELD i_current_row-distribution_channel.
  SET PARAMETER ID 'SPA' FIELD i_current_row-sector.
  SET PARAMETER ID 'BPA' FIELD '0008'. " 替换为实际视图ID

  CALL TRANSACTION 'BP' AND SKIP FIRST SCREEN.
ENDMETHOD.

内容的提问来源于stack exchange,提问作者Schesam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 17:57:13