SAP BP主数据公司代码视图(LFB1)屏幕增强

目录

1.SE11扩张增强结构

​2.创建函数组 ZPRMMFG002

3.BUS1创建应用程序

4.BUS23创建数据集

5.BUS2创建字段组

6.BUS3创建视图 

7.BUS4创建部分

​8.BUS5创建屏幕 

9.BUS6创建屏幕顺序(如果是添加到标准页签,则不需要该步骤)

10.BUSD维护业务伙伴视图

11.BUS7维护事件函数,需要对ISDAT、XCHNG、DSAVB事件进行维护


PS:不管是增强到标准页签或者是新增页签,都可以按照该步骤进行开发,增强到标准页签的步骤文中有补充说明。

1.SE11扩张增强结构

2.创建函数组 ZPRMMFG002

创建子屏幕9000

 PBO部分:

MODULE status_9000 OUTPUT.
  DATA:
    lv_activ TYPE bu_aktyp.

  CALL FUNCTION 'BUS_PBO'.

  CALL METHOD cvi_bdt_adapter=>get_activity
    RECEIVING
      r_activity = lv_activ.

* If display mode,make custom fields can't edit
  IF lv_activ = '03'.
    LOOP AT SCREEN.
      IF screen-group1 = 'GP1'.
        screen-input = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDMODULE.

 PAI部分:

MODULE user_command_9000 INPUT.
  CALL FUNCTION 'BUS_PAI'.
ENDMODULE.

3.BUS1创建应用程序

4.BUS23创建数据集

5.BUS2创建字段组

 将需要增强到屏幕上的字段添加到字段组

6.BUS3创建视图 

 ZPRMMFM_BP_LFB1_PBO代码:

FUNCTION zprmmfm_bp_lfb1_pbo.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"----------------------------------------------------------------------

  DATA:
    lt_lfb1     TYPE STANDARD TABLE OF lfb1,
    lv_compcode TYPE bukrs.

  lv_compcode = cvi_bdt_adapter=>get_current_company_code( ).

* step 1: request data from xo for dynpro structure
  cvi_bdt_adapter=>data_pbo(
    EXPORTING
      i_table_name = gv_tab_name_lfb1
    IMPORTING
      e_data_table = lt_lfb1
  ).

  IF lt_lfb1 IS INITIAL.
    CLEAR gs_lfb1.
  ELSE.
    READ TABLE lt_lfb1 INTO gs_lfb1 WITH KEY bukrs = lv_compcode.
  ENDIF.

ENDFUNCTION.

 ZPRMMFM_BP_LFB1_PAI代码:

FUNCTION zprmmfm_bp_lfb1_pai.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"----------------------------------------------------------------------
  DATA:
    lt_lfb1     TYPE STANDARD TABLE OF lfb1,
    lv_compcode TYPE bukrs.

  lv_compcode = cvi_bdt_adapter=>get_current_company_code( ).

  CHECK cvi_bdt_adapter=>is_direct_input_active( ) = abap_false.

* step 1: update xo memory from dypro structure
  cvi_bdt_adapter=>get_current_bp_data(
    EXPORTING
      i_table_name = gv_tab_name_lfb1
    IMPORTING
      e_data_table = lt_lfb1
  ).

  IF lt_lfb1 IS INITIAL.
    IF gs_lfb1 IS NOT INITIAL.
      APPEND gs_lfb1 TO lt_lfb1.
    ENDIF.
  ELSE.
    READ TABLE lt_lfb1 ASSIGNING FIELD-SYMBOL(<fs_lfb1>)
      WITH KEY bukrs = lv_compcode.

    <fs_lfb1>-zobject     = gs_lfb1-zobject.
    <fs_lfb1>-zdecision   = gs_lfb1-zdecision.
    <fs_lfb1>-zcapitalist = gs_lfb1-zcapitalist.
    <fs_lfb1>-zcurrency   = gs_lfb1-zcurrency.
    <fs_lfb1>-zbankde     = gs_lfb1-zbankde.
  ENDIF.

  cvi_bdt_adapter=>data_pai(
    i_table_name = gv_tab_name_lfb1
    i_data_new   = lt_lfb1
    i_validate   = abap_false
  ).
ENDFUNCTION.

将视图分配给字段组

7.BUS4创建部分

8.BUS5创建屏幕 

8.1 如果需要将增强屏幕添加到标准页签,可以借助BDT分析事物代码:BDT_ANALYZER,找到当前屏幕,将上一步BUS4创建的“部分”分配给该屏幕即可。

8.2 如果需要新增一个自定义页签,则需要在此处新建屏幕,本例为新建页签

记得将抬头部分也包括进来

9.BUS6创建屏幕顺序(如果是添加到标准页签,则不需要该步骤)

 分配屏幕序列

创建屏幕分类

分配屏幕分类

同时在FS0001中将新建的屏幕序列维护进来,此处的FS0001可以借助BDT分析工具BDT_ANALYZER找到,可以参照步骤8.1中的截图。

10.BUSD维护业务伙伴视图,根据需求进行维护,本例只针对FI供应商需要显示增强页签

10.1 分配数据集

10.2 分配调用程序

10.3 分配屏幕序列(如果是添加到标准页签,则不需要该步骤)

11.BUS7维护事件函数,需要对ISDAT、XCHNG、DSAVB事件进行维护

BP标准事件调用流程图:

ISDAT事件维护:

FUNCTION zprmmfm_lfb1_event_isdat.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"----------------------------------------------------------------------

  DATA:
    ls_data TYPE bussdi3-data.

  CALL FUNCTION 'CVIV_BUPA_LFB1_GET'
    IMPORTING
      e_lfb1 = gs_lfb1
      e_data = ls_data.

  lfb1-zobject     = gs_lfb1-zobject.
  lfb1-zdecision   = gs_lfb1-zdecision.
  lfb1-zcapitalist = gs_lfb1-zcapitalist.
  lfb1-zcurrency   = gs_lfb1-zcurrency.
  lfb1-zbankde     = gs_lfb1-zbankde.

ENDFUNCTION.

XCHNG事件维护: 

FUNCTION zprmmfm_lfb1_event_xchng.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  EXPORTING
*"     REFERENCE(E_XCHNG) TYPE  BOOLEAN
*"----------------------------------------------------------------------

  IF lfb1-zobject <> gs_lfb1-zobject .
    e_xchng = 'X'.
  ENDIF.

  IF lfb1-zdecision <> gs_lfb1-zdecision.
    e_xchng = 'X'.
  ENDIF.

  IF lfb1-zcapitalist <> gs_lfb1-zcapitalist.
    e_xchng = 'X'.
  ENDIF.

  IF lfb1-zcurrency <> gs_lfb1-zcurrency.
    e_xchng = 'X'.
  ENDIF.

  IF lfb1-zbankde <> gs_lfb1-zbankde.
    e_xchng = 'X'.
  ENDIF.

ENDFUNCTION.

DSAVB事件维护: 

FUNCTION zprmmfm_lfb1_event_dsavb.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"----------------------------------------------------------------------

  DATA:
    lt_lfb1 TYPE STANDARD TABLE OF lfb1.

  APPEND gs_lfb1 TO lt_lfb1.

  CALL FUNCTION 'CVIV_BUPA_LFB1_COLLECT'
    EXPORTING
      i_subname = 'INCL_EEW_LFB1'
    TABLES
      t_lfb1    = lt_lfb1.

ENDFUNCTION.

 以上为所有配置点,增强效果:

 备注:所有的描述需要在各自对应语言环境下分别维护。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
给您提供一份修改后的代码: ```cpp #include "ros/ros.h" #include <websocketpp/config/asio_client.hpp> #include <websocketpp/client.hpp> #include <websocketpp/common/thread.hpp> #include <iostream> typedef websocketpp::client<websocketpp::config::asio_tls_client> client; class WebSocketClient { public: WebSocketClient() { // 设置websocket的回调函数 m_client.set_message_handler(std::bind(&WebSocketClient::on_message, this, std::placeholders::_1, std::placeholders::_2)); } void start() { // 连接到websocket服务器 websocketpp::lib::error_code ec; client::connection_ptr con = m_client.get_connection("wss://autopilot-test.t3go.cn:443/api/v1/vehicle/push/message/LFB1FV696M2L43840", ec); if (ec) { std::cout << "连接失败: " << ec.message() << std::endl; return; } // 运行websocket的事件循环 m_client.init_asio(); m_client.start_perpetual(); m_client.connect(con); websocketpp::lib::thread asio_thread(&client::run, &m_client); asio_thread.join(); } void perceptionCallback(const std_msgs::String::ConstPtr& msg) { // 发送消息到websocket服务器 std::string serialized_data = msg->data; m_client.send(serialized_data, websocketpp::frame::opcode::text); } private: void on_message(websocketpp::connection_hdl hdl, client::message_ptr msg) { // 处理websocket服务器返回的消息 std::cout << "收到消息: " << msg->get_payload() << std::endl; } client m_client; }; int main(int argc, char** argv) { ros::init(argc, argv, "websocket_client"); ros::NodeHandle nh; WebSocketClient ws_client; // 订阅感知话题 ros::Subscriber sub = nh.subscribe("perception_topic", 1000, &WebSocketClient::perceptionCallback, &ws_client); // 运行ROS事件循环 ros::spin(); return 0; } ``` 这份代码使用了websocketpp库来创建websocket客户端,并在ROS中订阅了一个感知话题。当收到该话题的消息时,就会将消息序列化后发送到websocket服务器。同时,也会监听websocket服务器返回的消息并进行处理。请注意,这份代码需要安装websocketpp库才能编译通过。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值