最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

ABAP-BSP调用Webdynpro页面

来源:动视网 责编:小OO 时间:2025-09-25 04:50:36
文档

ABAP-BSP调用Webdynpro页面

1、BSP调用WebDynpro页面实例目的:在BSP(BUSINESSSERVERPAGES)程序中调用WebDynpro页面。说明:在实现该实例前,需先熟悉WebDynpro程序的开发。涉及内容:1.1SE80BSP程序调用WebDynpro页面1.1.1BSP页面添加按钮元素1、T-CODE:SE80进入“对象导航“界面,程序类型选择“业务服务器页面应用程序”(英文:BusinessServerPagesApplication),然后在程序名处输入程序名,找到业务功能对应的视图,如图1.
推荐度:
导读1、BSP调用WebDynpro页面实例目的:在BSP(BUSINESSSERVERPAGES)程序中调用WebDynpro页面。说明:在实现该实例前,需先熟悉WebDynpro程序的开发。涉及内容:1.1SE80BSP程序调用WebDynpro页面1.1.1BSP页面添加按钮元素1、T-CODE:SE80进入“对象导航“界面,程序类型选择“业务服务器页面应用程序”(英文:BusinessServerPagesApplication),然后在程序名处输入程序名,找到业务功能对应的视图,如图1.
1、BSP调用WebDynpro页面实例

目的:在BSP(BUSINESS SERVER PAGES)程序中调用WebDynpro页面。

说明:在实现该实例前,需先熟悉WebDynpro程序的开发。

涉及内容:

1.1 SE80 BSP程序调用WebDynpro页面

1.1.1 BSP页面添加按钮元素

    1、T-CODE:SE80进入“对象导航“界面,程序类型选择“业务服务器页面应用程序”(英文:BusinessServerPages Application),然后在程序名处输入程序名,找到业务功能对应的视图,如图1.1.1-1:

图1.1.1-1

    说明:

    a、本练习对采购订单进行更改。

    2、找到要添加WebDynpro页面的BSP视图页面,然后双击进入页面代码中,并将代码更改为可编辑状态,如图1.1.1-2:

图1.1.1-2

    3、在BSP页面需要添加按钮的位置处添加按钮代码,如图1.1.1-3:

图1.1.1-3

    说明:

    a、代码如下:

    

    

    "float:left">

    ','送货标签和货物标签打印' ,'width=800,height= 400,resizable=yes,scrollbars=yes')">

    

    

    b、代码说明:

    其中,变量lv_url是新页面的URL(下一节将讲URL如何获取值);为了让新按钮与自带按钮显示在同一行,在标准按钮控件前要加html 标签:"float:left">

1.1.2 BSP页面生成按钮元素URL

    1、在BSP页面中添加生成URL代码,添加位置如图1.1.2-1:

图1.1.2-1

    2、添加代码如下:

DATA: lv_url TYPE string,

  d_url(255) TYPE c,

  lv_app_name TYPE string,

  host TYPE string,

  port TYPE string,

  out_protocol TYPE string,

  in_parameters TYPE tihttpnvp,

  wa_params LIKE LINE OF in_parameters,

  lv_iview TYPE string,

  gf_value_old TYPE /sapsrm/char512,

  gf_clength TYPE int2.

  DATA:  lo_window_manager TYPE REF TO if_wd_window_manager,

  lo_api_component  TYPE REF TO if_wd_component,

  lo_window         TYPE REF TO if_wd_window.

* Use the WD application created and pass a value to the parameter SC_GUID:

  wa_params-name = 'Z_ORDER_GUID'."Z_ORDER_GUID是URL参数名

  wa_params-value = ls_header_po-GUID.

  APPEND wa_params TO in_parameters.

  lv_app_name = 'Z_ORDER_BC_PRINT'."Z_ORDER_BC_PRINT是WebDynpro程序名称

  CALL METHOD cl_http_server=>if_http_server~get_location

  IMPORTING

  host         = host

  port         = port

  out_protocol = out_protocol.

  CALL METHOD cl_wd_utilities=>construct_wd_url

  EXPORTING

  application_name = lv_app_name

  in_host          = host

  in_port          = port

  in_protocol      = out_protocol

  in_parameters    = in_parameters

  namespace        = 'sap'

  IMPORTING

  out_absolute_url = lv_url."lv_url为URL值存放的位置,在上一届添加按钮元素中调用

    说明:

    a、URL参数名Z_ORDER_GUID:新页面的数据关联是根据该参数(ORDER的GUID全球唯一标识)关联的;

    b、WebDynpro程序名Z_ORDER_BC_PRINT:WebDynpro中进行开发;

c、如上代码直接嵌入BSP页面的抬头部分的<%...%>中。

    到这里BSP程序调用WebDynpro页面就完成了。

1.2 SE80 WebDynpro页面初始化数据

    这一节简要介绍BSP调用的WebDynpro程序"Z_ORDER_BC_PRINT"中数据的处理。如需了解WebDynpro的开发,请参考“ABAP-WebDynpro实例.docx”文件。

1.2.1 组件COMPONENTCONTROLLER配置

    1、Context-Node创建,如图1.2.1-1:

图1.2.1-1

    2、Context-Attribute创建,如图1.2.1-2:

图1.2.1-2

    3、Methods-WDDOINIT控制器初始化数据,如图1.2.1-3:

图1.2.1-3

    说明:

    a、代码如下:

method WDDOINIT .

  DATA lo_nd_z_order_guid TYPE REF TO if_wd_context_node.

  DATA lo_el_z_order_guid TYPE REF TO if_wd_context_element.

  "Element_z_order_guid由Element_和Context的名称组成

  DATA ls_z_order_guid TYPE wd_this->Element_z_order_guid.

  DATA lv_order_guid TYPE wd_this->Element_z_order_guid-order_guid.

*   navigate from  to  via lead selection

  "wdctx_z_order_guid由wdctx_和Context的名称组成

  lo_nd_z_order_guid = wd_context->get_child_node( name = wd_this->wdctx_z_order_guid ).

*   @TODO handle non existant child

*   IF lo_nd_z_asn_guid IS INITIAL.

*   ENDIF.

*   get element via lead selection

  lo_el_z_order_guid = lo_nd_z_order_guid->get_element( ).

*   @TODO handle not set lead selection

  IF lo_el_z_order_guid IS INITIAL.

  ENDIF.

*   @TODO fill attribute

*   lv_asn_guid = 1.

  lv_order_guid = cl_wd_runtime_services=>get_url_parameter( name = 'Z_ORDER_GUID' ).

*   set single attribute

  lo_el_z_order_guid->set_attribute(

    name =  `ORDER_GUID` "Context的Attribute名

    value = lv_order_guid ).

endmethod.

    b、a中的代码就是获取WebDynpro程序的URL,并将URL的值赋给Context的Attribute。

1.2.2 视图初始化数据处理

    这里只介绍视图中初始化数据的处理,对于其他业务操作不做介绍。

    1、视图初始化数据,如图1.2.2-1:

图1.2.2-1

    说明:

    a、代码如下:

method WDDOINIT .

  DATA:

       lo_component TYPE REF TO if_wd_component,

       lo_context TYPE REF TO if_wd_context,

       lo_controller type REF TO if_wd_controller,

       lo_node type REF TO if_wd_context_node,

       lo_child TYPE REF TO if_wd_context_node,

       lo_cmp_usage TYPE REF TO if_wd_component_usage,

       lv_guid                     TYPE bbp_guid,

       lr_header_order            TYPE BBP_PDS_SUSPO_HEADER_D,

       lr_items_order             TYPE STANDARD TABLE OF BBP_PDS_SUSPO_ITEM_D,

       ls_items_order             TYPE  BBP_PDS_SUSPO_ITEM_D,

       lr_partern TYPE TABLE OF BBP_PDS_PARTNER,

       node_order_h TYPE REF TO if_wd_context_node,

       node_order_i TYPE REF TO if_wd_context_node,

       node_order_p TYPE REF TO if_wd_context_node.

  lo_component = wd_comp_controller->wd_get_api( ).

  lo_controller ?= lo_component.

  CALL METHOD lo_controller->get_context

    RECEIVING

      context = lo_context.

  lo_node = lo_context->root_node.

  lo_child = lo_node->get_child_node( 'Z_ORDER_GUID' ).

  CALL METHOD lo_child->GET_ATTRIBUTE

    EXPORTING

      NAME  = 'ORDER_GUID'

    IMPORTING

      VALUE = lv_guid."获取全局Attribute'ORDER_GUID'赋给lv_guid

  CALL FUNCTION 'BBP_PD_SUSPO_GETDETAIL'

    EXPORTING

      I_GUID    = lv_guid

    IMPORTING

      E_HEADER  = lr_header_order

*     ET_ATTACH =

    TABLES

      E_ITEM    = lr_items_order

      E_PARTNER = lr_partern."根据URL值lv_guid查询采购订单抬头、行项目、合作伙伴的信息,供后续使用

  loop at lr_items_order INTO ls_items_order.

    SHIFT ls_items_order-ordered_prod LEFT DELETING LEADING '0'.

    SHIFT ls_items_order-SRC_ITM_ID LEFT DELETING LEADING '0'.

    SHIFT ls_items_order-NUMBER_INT LEFT DELETING LEADING '0'.

    modify lr_items_order FROM ls_items_order.

  ENDLOOP.

  DELETE lr_partern WHERE PARTNER_FCT <> '00000019'.

  node_order_h = WD_CONTEXT->get_Child_Node( name = 'Z_ORDER_PRINT_H' ).

  node_order_i = WD_CONTEXT->get_Child_Node( name = 'Z_ORDER_PRINT_I' ).

  node_order_p = WD_CONTEXT->get_Child_Node( name = 'Z_ORDER_PARTNER' ).

  node_order_h->BIND_STRUCTURE( lr_header_order ).

  node_order_i->bind_table( lr_items_order ).

  node_order_p->bind_table( lr_partern ).

endmethod.

    到这里BSP调用WebDynpro程序就完成了。

文档

ABAP-BSP调用Webdynpro页面

1、BSP调用WebDynpro页面实例目的:在BSP(BUSINESSSERVERPAGES)程序中调用WebDynpro页面。说明:在实现该实例前,需先熟悉WebDynpro程序的开发。涉及内容:1.1SE80BSP程序调用WebDynpro页面1.1.1BSP页面添加按钮元素1、T-CODE:SE80进入“对象导航“界面,程序类型选择“业务服务器页面应用程序”(英文:BusinessServerPagesApplication),然后在程序名处输入程序名,找到业务功能对应的视图,如图1.
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top