Web Dynpro中使用ALV组件对内表的定制输出的实现
Web Dynpro中使用ALV组件对内表的定制输出的实现一、ALV在Web Dynpro中的应用 (2)1.ALV在Web Dynpro中的优势 (2)二、ALV在Web Dynpro中的实现 (2)1.业务场景假设 (2)2.Web Dynpro中ALV的初级调用 (2)(1)创建Web Dynpro程序:ZEG_WDA_ALV (2)(2)在程序的根节点组件下添加ALV组件SALV_WD_TABLE (3)(3)在程序的控制器的属性下面创建ALV组件SALV_WD_TABLE (3)(4)在程序的视图界面的属性下面添加ALV组件SALV_WD_TABLE (4)(5)在程序的视图界面的布局下创建UI元素 (5)(6)在程序的视图界面的Context下创建Node和Attribute信息 (5)(7)设置UI元素与Context的关联 (10)(8)创建提交按钮的是处理事件 (11)(9)提交按钮事件对应的函数实现 (12)(10)在WDDOMODIFYVIEW方法中调用ALV组件 (14)(11)将VIEW嵌入到Windows中,并将VIEW下面的子View嵌入 (18)(12)激活保存程序 (21)(13)创建WEB应用程序节点Web Dynpro Application (22)(14)测试实现效果 (23)3.Web Dynpro中ALV的定制调用 (25)(1)ALV定制调用的过程和代码模板 (26)(2)根据自定义的顺序显示ALV表格的字段顺序(两种方法) (28)(3)根据自定义的名称显示ALV表格的字段名称 (30)(4)隐藏ALV表格的某个字段 (31)4.本教程中ALV输出的最终代码以及实现效果如下: (32)(1)ALV_FORMAT的代码 (32)(2)ALV对应的最终实现效果 (34)一、ALV在Web Dynpro中的应用1.ALV在Web Dynpro中的优势ALV在Web Dynpro中是已经集成好的组件,具有相对灵活的设置功能。
相对于表格输出数据,ALV的优势主要表现在ALV组件输出的内容相对美观,另外就是组件自带了一些标准的实用功能,比如导出到表格,打印设置以及过滤设置等,同时提供了灵活的参数进行设置。
二、ALV在Web Dynpro中的实现1.业务场景假设系统中现有自建表ZTT_STUDENT学生信息表(教程:《ABAP中域(Domain)、数据元素(Data Element)、表(Table)的创建》一文中创建),需要检索出所有男学生的清单,并以ALV形式输出。
2.Web Dynpro中ALV的初级调用(1)创建Web Dynpro程序:ZEG_WDA_ALV通过T‐code SE80进入对象管理器,按照图上所示创建名为“ZEG_WDA_ALV”的WDA程序,并点击主菜单上的保存按钮进行保存。
(2)在程序的根节点组件下添加ALV组件SALV_WD_TABLE双击左边导航栏中的程序根节点调出组件界面,点击菜单上的修改图标,这时候右边的Used Components页签下的输入状态变成了可编辑状态,Component Use下名字任意取(ALV_OUTPUT),Component可以点选系统已经存在的组件SALV_WD_TABLE,也可以直接输入,然后回车,带出其他相信,点击主菜单中的保存按钮保存。
(3)在程序的控制器的属性下面创建ALV组件SALV_WD_TABLE双击左边导航栏中的组件控制器(COMPONENTCONTROLLER),调出控制器界面,在属性Properties 页签下,点击新建按钮按照下图所示分别引入与我们之前定义的ALV_OUTPUT相关的两个组件。
(4)在程序的视图界面的属性下面添加ALV组件SALV_WD_TABLE在导航栏的视图VIEWS节点下,双击MAIN视图,打开视图界面,在属性Properties页签下,按照上一步同样的方法引入与我们之前定义的ALV_OUTPUT相关的两个组件,点击主菜单保存。
(5)在程序的视图界面的布局下创建UI元素在视图界面的布局Layout页签下,创建上图中的UI元素,具体细节如下:创建完毕后点击主菜单保存布局设计。
(6)在程序的视图界面的Context下创建Node和Attribute信息在Context界面下,在某个节点上右击所创建的对象均为该节点的子对象,子对象可以为节点Node或者属性Attribute。
这里的Node相当于ABAP中数据定义部分自定义的结构,而Attribute 则相当于自定义的变量。
只有单个变量才能被UI元素关联应用,从而实现用户与程序的数据交互。
在视图界面的上下文Context页签下,在Context MAIN的根节点Context上右击创建Node:CONDITION,用以存放搜索区的Attribute。
除了维护Node Name以外,其他属性保持默认,点击确定即可。
在刚创建的CONDITION节点上右击创建Attribute:GENDER。
维护属性名:GENDER,数据类型:Z_GENDER(此数据元素为我之前已经定义过的,设置了域取值范围,为了能自动实现后面对应的UI元素的自动下拉效果做了铺垫)。
再在根节点Context上右击创建表格LT_STUDENT,表格的实现是通过在创建Node时将Cardinality 设置为“0..n”,Selection设置为“0..1”实现的。
这里各项参数的意义具体见下图:在创建节点LT_STUDENT的界面,还需要维护节点名、参照的数据字典结构(非必须维护字段,但本例中维护后可以减少单独去建立每个Attribute的工作),点击Add Attribute from Structure按钮,即可选择所需要引用的字段,如下图所示:这里除了MANDT客户端不用选外,其他的都选上,确定。
最终建立的所有的Node和Attribute以及对应的所属关系如上,点击主菜单保存。
(7)设置UI元素与Context的关联回到布局Layout页签下,双击UI元素XB,设置Selectedkey为Context中的CONDITION下的GENDER,如下图所示。
(8)创建提交按钮的是处理事件回到布局Layout页签下,双击UI元素SUBMIT,创建其对应的事件的onAction为SEARCH,会弹出Action的对话框,填入描述,并保存即可。
Action创建完成后,在视图界面的行为Action页签下,会自动显示刚刚创建的SEARCH事件,同时会生成一个对应的方法,见下一步。
(9)提交按钮事件对应的函数实现在上一步中创建SEARCH行为后,在视图界面的方法Method页签下,会自动生成一个名为ONACTIONSERACH的事件处理器(也是一种方法,对应ABAP中的本地函数),双击该事件处理器的名称后,可以进入其编程界面,如下图所示:以下为ONACTIONSEARCH方法的实现过程:①通过向导引入节点LT_STUDENT的定义以及实例化节点lo_nd_lt_student②手工定义获取查询结果的内容的内表lt_lt_student③通过向导引入CONDITION节点下的Attribute的值,传入参数lv_gender④自定义查询语句,并将查询结果存入lt_lt_student中⑤通过节点参数lo_nd_lt_student的BIND_TABLE方法将查询结果绑到节点下即可具体最终优化的代码如下:(红色部分为需要对应修改的部分)(10)在WDDOMODIFYVIEW方法中调用ALV组件在调用ALV组件之前,必须要保存和激活之前所在步骤了,否则引用的时候会找不到对应的方法。
激活方法可参看后面的第12步。
之后我们通过以下办法引入:在WDDOMODIFYVIEW的代码编辑框中,将光标定位于要插入引用对象的位置,然后点击向导按钮,先引入Context中LT_STUDENT节点,操作如下:引入后会自动带出下面这段代码:上一步一样,系统也会自动引入一段代码,这里就不列出了。
点参数传入ALV组件。
WDDOMODIFYVIEW方法的最终代码如下:(红色部分为需要自行更改的部分)(11)将VIEW嵌入到Windows中,并将VIEW下面的子View嵌入双击导航栏中的窗口节点,调出窗口界面,然后将视图节点下的MAIN拖拽至窗口中展开窗口下的VIEW,可以看到我们在UI元素创建步骤中设置的子VIEW名字:VIEW_ALV,右击该子VIEW,会显示嵌入视图Embed View,点击该选项后,弹出嵌入选项:这里直接选择使用的组件Component Use,弹选接口为Table的组件,会自动带出其他两个选项:嵌入的视图View to be Embedded和视图的组件Component of View。
如下图:最终子视图嵌入成功后,会在试图下面再生成一个更底层视图TABLE,这个TABLE即为ALV输出的载体。
只需要给这个Table所对应的节点进行传值(第9步中有代码进行传值,详见第8步代码的注释),就可以进行输出了。
(12)激活保存程序双击根程序的节点,点击激活按钮进行程序激活,激活过程中可能会弹出激活提示以及开发类、传输请求信息等,根据需要选择即可。
(13)创建WEB应用程序节点Web Dynpro Application(14)测试实现效果3.Web Dynpro中ALV的定制调用从上一步中实现的ALV输出结果来看,ALV输出有以下和实际需求匹配不契合的特点:①标题的列名显示都是字段名称(引用了数据元素的字段除外,显示的是数据元素的描述)②标题的输出顺序也基本是按照参照的表格的字段顺序③原表中未引用的主键字段(比如最后的MANDT客户端号)也会被带出,排在最后面好在这些问题,ALV组件都提供了相应的接口进行定制,我们就根据图上所示,对ALV输出做出以下三种基础定制:①ALV表格的字段显示顺序根据自己的定义显示②ALV表格的字段名称根据自己定义的显示③ALV表格的不需要的字段进行隐藏(1)ALV定制调用的过程和代码模板①在VIEW视图的方法Method页签下新建方法:ALV_FORMAT②在VIEW视图的方法WDDOMODIFYVIEW中添加对ALV_FORMAT的调用具体代码如下(可复制):③ALV_FORMAT的代码实现ALV_FORMAT的具体代码如下(红色标记的字体为需要根据实际情况更改的部分):(2)根据自定义的顺序显示ALV表格的字段顺序(两种方法)①通过调整所引用表格的字段排序实现实际上,我们已经知道了ALV表格输出的内容实际上是Context中参照的表格结构LT_STUDENT 对应的内容,因此只需要调整LT_STUDENT中Attribute的排序,就可以实现排序的调整。
【内部顾问技能收集】ABAP模块技能统计
【内部顾问技能收集】ABAP模块技能统计[复制]1. 姓名 [填空题] *_________________________________2. 工号 [填空题] *_________________________________请勾选您已熟练掌握的技能点,如不熟悉请保留空值。
3. 基础技能 [多选题]□DEBUG(能够熟练地进行利用关键字对字符串进行操作)□前台数据追踪(前台数据追踪的方法,如何查找标准程序,ST05跟踪程序)□字符串操作(能够熟练地进行利用关键字对字符串进行操作)4. 批处理开发 [多选题]□BDC开发(能够熟练使用SHDB录屏以及进行BDC批导开发)□BAPI(能够查找BAPI,并且使用BAPI完成批量操作的开发)5. ALV [多选题]□ALV的基础开发(简单的ALV开发)□ALV高级开发(自定义GUI状态栏按钮,ALV颜色设置,保存信息至内表)□ALV Tree (ALV树形开发)6. Smartforms [多选题]□SF基础开发(简单的SF开发)□SF中级开发(自定义样式,修改字体格式,颜色,大小)□SF高级开发(会在SF中编写代码,实现取数或者编辑样式,会自定义非标准的纸张格式)7. (Form) [多选题]□Form的基础开发(简单的Form开发)□Form中级开发(能在Form中通过语句控制输出流,实现不同条件的显示)□Form高级开发(通过调用外部程序,在Form中实现变量计算,调用外部文本元素)8. 屏幕开发 [多选题]□屏幕基础开发(能够使用向导创建TABLE control进行简单的数据显示)□屏幕中级开发(能够不适用向导独自创建table control,并且能够进行数据的增删改查)□屏幕高级开发(熟悉利用屏幕的各种控件进行屏幕开发)9. 增强 [多选题]□一代增强(SAP预留程序)□二代增强(SMOD,CMOD的USER-EXIT)□三代增强(BADI增强)□四代增强(ECC6后的ENHANCEMENT)□BAPI增强□BTE增强□Search Help增强10. 接口 [多选题]□I/F文件上下载(以文件形式进行传输方式实现)□RFC(外部系统调用 RFC函数实现)□IDOC(通过IDOC形式将数据文件发送进行交互)□DBCO(通过链接访问外部数据库的方式进行查询)□WEB Service (Web Service 和其他系统交互)11. 其他技能 [多选题]□Function的基础开发□自定义号码段范围□程序中实现表锁定或条目锁定□Query开发□逻辑数据库开发□OLE开发(能够使用OLE开发导出Excel或Word)□程序优化(能够对自开发程序进行报表速度/效率的优化)□WEB DYNPRO的开发□PI的配置及实现□银企直连(https,http,TCP/IP等协议的交互)□表格维护生成器(能够根据需要维护好表格维护生成器的状态(如自动带出日期,是否可编辑,是否显示等)□ADOBE报表(通过SFP开发展示报表)□数据归档开发。
OO实现ALV TABLE 八:ALV的布局功能
OO实现ALV TABLE 八:ALV的布局功能在ALV的输出结果中,我们可以利用ALV提供的标准功能(过滤,排序,汇总)对输出结果正行操作。
比如说我们对一个结果进行了排序和过滤等的动作,下次再运行这个报表的时候可以选择一个功能直接运行这些动作。
这就需要布局(Layout)的功能了。
首先我们设置布局的功能按钮。
ls_key-report = sy-repid.lr_layout = gr_table->get_layout( ).lr_layout->set_key( ls_key ).lr_layout->set_save_restriction( l_restrict ).lr_layout->set_default( 'X' ).IF p_lay IS NOT INITIAL.lr_layout->set_initial_layout( p_lay ).ENDIF.设置前台选项页面。
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.PARAMETERS: p_lay LIKE disvariant-variant.SELECTION-SCREEN SKIP.PARAMETERS: p_save1 RADIOBUTTON GROUP rg DEFAULT 'X',p_save2 RADIOBUTTON GROUP rg,p_save3 RADIOBUTTON GROUP rg.SELECTION-SCREEN END OF BLOCK blk.设置前台布局选项功能搜索帮助DATA: ls_layout TYPE salv_s_layout_info,ls_key TYPE salv_s_layout_key,l_restrict TYPE salv_de_layout_restriction.l_restrict = get_restrict( ).ls_key-report = sy-repid.ls_layout = cl_salv_layout_service=>f4_layouts(s_key = ls_keyrestrict = l_restrict ).layout = ls_layout-layout.下面是效果图下面是程序的所有代码:REPORT y_xin_002.*变量定义TYPES: BEGIN OF gs_spfli,mandt TYPE spfli-mandt,carrid TYPE spfli-carrid,connid TYPE spfli-connid,countryfr TYPE spfli-countryfr, cityfrom TYPE spfli-cityfrom, airpfrom TYPE spfli-airpfrom, countryto TYPE spfli-countryto, cityto TYPE spfli-cityto,airpto TYPE spfli-airpto,fltime TYPE spfli-fltime,deptime TYPE spfli-deptime,arrtime TYPE spfli-arrtime,distance TYPE spfli-distance,distid TYPE spfli-distid,fltype TYPE spfli-fltype,period TYPE spfli-period,END OF gs_spfli.TYPES ty_spfli TYPE gs_spfli OCCURS 0.*选择屏幕SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.PARAMETERS: p_lay LIKE disvariant-variant.SELECTION-SCREEN SKIP.PARAMETERS: p_save1 RADIOBUTTON GROUP rg DEFAULT 'X',p_save2 RADIOBUTTON GROUP rg,p_save3 RADIOBUTTON GROUP rg.SELECTION-SCREEN END OF BLOCK blk.*----------------------------------------------------------------------* * CLASS lcl_alv DEFINITION*----------------------------------------------------------------------* * ALV操作类(定义)*----------------------------------------------------------------------* CLASS lcl_alv DEFINITION.PUBLIC SECTION.METHODS: getdata "取得要显示的数据RETURNING value(lt_tab) TYPE ty_spfli,alv_full "全屏Grid列表处理方法IMPORTING value(lt_tab) TYPE ty_spfli.CLASS-METHODS: f4_layout "布局选项的搜索帮助EXPORTING value(layout) TYPE disvariant-variant,get_restrict "取得约束选项的值RETURNING value(restrict) TYPEsalv_de_layout_restriction.PRIVATE SECTION.DATA: gr_table TYPE REF TO cl_salv_table.ENDCLASS. "lcl_alv DEFINITION*----------------------------------------------------------------------* * CLASS lcl_alv IMPLEMENTATION*----------------------------------------------------------------------* * ALV操作类(实现)*----------------------------------------------------------------------* CLASS lcl_alv IMPLEMENTATION.*取得要显示的数据METHOD getdata.SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_tab FROM spfli.ENDMETHOD. "getdata*输出全屏网格列表的方法METHOD alv_full.DATA: lr_functions TYPE REF TO cl_salv_functions_list,lr_selections TYPE REF TO cl_salv_selections,lr_layout TYPE REF TO cl_salv_layout,ls_key TYPE salv_s_layout_key,l_restrict TYPE salv_de_layout_restriction.l_restrict = lcl_alv=>get_restrict( )."创建实例TRY.cl_salv_table=>factory(IMPORTINGr_salv_table = gr_tableCHANGINGt_table = lt_tab).CATCH cx_salv_msg.ENDTRY."设置布局功能按钮ls_key-report = sy-repid.lr_layout = gr_table->get_layout( ).lr_layout->set_key( ls_key ).lr_layout->set_save_restriction( l_restrict ).lr_layout->set_default( 'X' ).IF p_lay IS NOT INITIAL.lr_layout->set_initial_layout( p_lay ).ENDIF."显示ALV的标准功能lr_functions = gr_table->get_functions( ).lr_functions->set_all( 'X' ).""显示列表gr_table->display( ).ENDMETHOD. "alv_full*前台布局选项搜索帮助METHOD f4_layout.DATA: ls_layout TYPE salv_s_layout_info,ls_key TYPE salv_s_layout_key,l_restrict TYPE salv_de_layout_restriction.l_restrict = get_restrict( ).ls_key-report = sy-repid.ls_layout = cl_salv_layout_service=>f4_layouts(s_key = ls_keyrestrict = l_restrict ).layout = ls_layout-layout.ENDMETHOD. "f4_layout*取得约束选项的值METHOD get_restrict.CASE 'X'.WHEN p_save1.restrict = if_salv_c_layout=>restrict_none.WHEN p_save2.restrict = if_salv_c_layout=>restrict_user_dependant.WHEN p_save3.restrict = if_salv_c_layout=>restrict_user_independant.ENDCASE.ENDMETHOD. "constructorENDCLASS. "lcl_alv IMPLEMENTATION*&---------------------------------------------------------------------* *& Form f_main*&---------------------------------------------------------------------* * 整合数据,执行*----------------------------------------------------------------------* FORM f_main.DATA: lt_tab TYPE ty_spfli,lr_alv TYPE REF TO lcl_alv.CREATE OBJECT lr_alv."取得要显示的数据lt_tab = lr_alv->getdata( ).lr_alv->alv_full( lt_tab ).ENDFORM. "f_main*布局搜索帮助AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_lay.CALL METHOD lcl_alv=>f4_layoutIMPORTINGlayout = p_lay.*执行动作START-OF-SELECTION.PERFORM f_main.。
WEB DYNPRO操作步骤
1、创建普通的WEB DYNPRO2、加载组件(SALV_WD_TABLE、WDR_SELECT_OPTIONS)3、创建COMPONENTCONTROLLER的CONTEXT页面创建NODE(数据NODE)a)b)4、在默认的VIEW的LAYOUT里创建组件及调整布局5、把COMPONENTCONTROLLER的CONTEXT复制到视图CONTEXT节点下6、在组件使用里为ALV组件的INTERFACECONTROLLER_USAGE的CONTEXT绑定数据NODEa)b)c)7、在默认的视图中Methods中加入三个方法(初始化屏幕、初始化ALV视图、初始化ALV数据)并加入到方法WDDOINIT中。
a)b)8、在PROPERTIES中加入两个组件的信息9、在默认视图中的ATTRIBUTES里添加GO_SELECT_OPTIONS、LR_CONFIG属性(为步骤10准备)10、为INIT_SELECTION_SCREEN、INIT_GETDATA、INIT_ALV添加代码注:INIT_SELECTION_SCREEN、INIT_ALV、INIT_GETDATA11、为ACTION里的SCREEN_BUTTON添加事件代码注:SEARCH_BUTTON12、在默认窗口WINDOW页中为VIEW_CONTAINER_UIELEMENT嵌套组件METHOD init_selection_screen.DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.lo_cmp_usage=wd_this->wd_cpuse_select_options().IF lo_cmp_usage->has_active_component()IS INITIAL.lo_cmp_usage->create_component().ELSE.EXIT.ENDIF.*---2.get选择屏幕的引用DATA lo_interfacecontroller TYPE REF TO iwci_wdr_select_options.lo_interfacecontroller=wd_this->wd_cpifc_select_options()."修改SELECT_OPTIONS *DATA lv_r_helper_class TYPE ref to if_wd_select_options.wd_this->go_select_options=lo_interfacecontroller->init_selection_screen().*---3.设置全局信息CALL METHOD wd_this->go_select_options->set_global_optionsEXPORTINGi_display_btn_cancel=abap_falsei_display_btn_check=abap_falsei_display_btn_reset=abap_falsei_display_btn_execute=abap_false.*---4.增加select-optionsDATA:lo_data TYPE REF TO data.CALL METHOD wd_this->go_select_options->create_range_tableEXPORTINGi_typename='S_FROM_CIT'RECEIVINGrt_range_table=lo_data.CALL METHOD wd_this->go_select_options->add_selection_fieldEXPORTINGi_id='FROMCITY'it_result=lo_data.ENDMETHOD.METHOD init_alv.********************************************************************************8*...get ALV Component Usage***************************************************************************8DATA:lr_comp_alv TYPE REF TO if_wd_component_usage,lr_comp_if_alv TYPE REF TO iwci_salv_wd_table,lr_config TYPE REF TO cl_salv_wd_config_table.*get reference of component_usage interfacelr_comp_alv=wd_this->wd_cpuse_salv()."修改*instant component_usageIF lr_comp_alv->has_active_component()IS INITIAL.lr_comp_alv->create_component().ENDIF.*get COMPONENTCONTROLLERlr_comp_if_alv=wd_this->wd_cpifc_salv()."修改*get Configure ALVlr_config=lr_comp_if_alv->get_model().wd_this->lr_config=lr_config.************************************************************************set table property of ALV***********************************************************************DATA:if_table_setting TYPE REF TO if_salv_wd_table_settings.if_table_setting?=lr_config.***set read_onlyif_table_setting->set_read_only(abap_false).*set selection_mode*AUTO TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE'00',"TableSelectionMode.auto*SINGLE TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE'02',"TableSelectionMode.single*MULTI TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE'04',"TableSelectionMode.multi*NONE TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE'06',"TableSelectionMode.none*SINGLE_NO_LEAD TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE'07',"TableSelectionMode.singleNoLead *MULTI_NO_LEAD TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE'08',"TableSelectionMode.multiNoLead if_table_setting->set_selection_mode('02').if_table_setting->set_footer_visible(if_salv_wd_c_table_settings=>footer_visible_true).if_table_setting->set_empty_table_text('No data found!').***set visiable rows.if_table_setting->set_visible_row_count(10).if_table_setting->set_tooltip('online help').if_table_setting->set_multi_column_sort(abap_true).*define column tableDATA:lt_columns TYPE salv_wd_t_column_ref,ls_columns TYPE salv_wd_s_column_ref.*define UI elementDATA:lc_input TYPE REF TO cl_salv_wd_uie_input_field.*define column headerDATA:lc_column_header TYPE REF TO cl_salv_wd_column_header.*set columns tablelt_columns=lr_config->if_salv_wd_column_settings~get_columns().DATA:lc_field TYPE REF TO cl_salv_wd_field.DATA:lv_aggr_rule TYPE REF TO cl_salv_wd_aggr_rule.DATA:lv_sort_rule TYPE REF TO cl_salv_wd_sort_rule.LOOP AT lt_columns INTO ls_columns.CASE ls_columns-id.WHEN'MANDT'.lc_column_header=ls_columns-r_column->get_header().lc_column_header->set_ddic_binding_field(if_salv_wd_c_column_settings=>ddic_bind_none).lc_column_header->set_text('客户').ENDCASE.ENDLOOP.***************************************Set standard function***************************************(dis)allow pdf exporter and functionlr_config->if_salv_wd_std_functions~set_pdf_allowed(abap_false).*(dis)allow calculationlr_config->if_salv_wd_std_functions~set_aggregation_allowed(abap_true).*(dis)allow export excellr_config->if_salv_wd_std_functions~set_export_allowed(abap_true).lr_config->if_salv_wd_std_functions~set_edit_check_available(abap_false).lr_config->if_salv_wd_std_functions~set_edit_undo_allowed(abap_false).*(dis)allow show graphiclr_config->if_salv_wd_std_functions~set_graphic_allowed(abap_true).*display as hierarchy(In tab DISPLAY)lr_config->if_salv_wd_std_functions~set_hierarchy_allowed(abap_true).*Set display count numberlr_config->if_salv_wd_std_functions~set_count_records_allowed(abap_true).*set show UNDO functionlr_config->if_salv_wd_std_functions~set_edit_undo_allowed(abap_false).*hide insert and append functionlr_config->if_salv_wd_std_functions~set_edit_insert_row_allowed(abap_false).lr_config->if_salv_wd_std_functions~set_edit_append_row_allowed(abap_false).lr_config->if_salv_wd_std_functions~set_edit_delete_row_allowed(abap_false). *---4.CREATE FUNCTIONSDATA:lo_function_settings TYPE REF TO if_salv_wd_function_settings.DATA:lo_cl_salv_wd_function TYPE REF TO cl_salv_wd_function.DATA:lo_cl_salv_wd_fe TYPE REF TO cl_salv_wd_fe.DATA:lo_cl_salv_wd_fe_button TYPE REF TO cl_salv_wd_fe_button.lo_function_settings?=lr_config."4.1增加发送给供应商按钮CALL METHOD lo_function_settings->create_functionEXPORTINGid='BUTTON_CREATE'RECEIVINGvalue=lo_cl_salv_wd_function.CREATE OBJECT lo_cl_salv_wd_fe_button."初始化一个buttion对象CALL METHOD lo_cl_salv_wd_fe_button->set_text"设置button文本EXPORTINGvalue='ALV BUTTON'.CALL METHOD lo_cl_salv_wd_fe_button->set_image_source"设置button图标EXPORTINGvalue='ICON_CREATE'CALL METHOD lo_cl_salv_wd_function->set_editor"将button对象引入function EXPORTINGvalue=lo_cl_salv_wd_fe_button.ENDMETHOD.DATA lo_nd_spfli_node TYPE REF TO if_wd_context_node.DATA lt_spfli_node TYPE wd_this->elements_spfli_node.lo_nd_spfli_node=wd_context->get_child_node(name=wd_this->wdctx_spfli_node).SELECT*INTO CORRESPONDING FIELDS OF TABLE lt_spfli_nodeFROM spfli.lo_nd_spfli_node->bind_table(new_items=lt_spfli_node set_initial_elements=abap_t rue).method ONACTIONSEARCH_BUTTON.DATA:lo_data type REF TO data,LR_FROMCITY TYPE RANGE OF S_FROM_CIT,LR_TOCITY TYPE RANGE OF S_TO_CITY.FIELD-SYMBOLS:<fs_table>TYPE ANY TABLE.*---1.从select screen获取搜索条件"1.1FROMCALL METHOD wd_this->GO_SELECT_OPTIONS->GET_RANGE_TABLE_OF_SEL_FIELDEXPORTINGI_ID='FROMCITY'RECEIVINGRT_RANGE_TABLE=lo_dataASSIGN lo_data->*to<fs_table>.IF sy-subrc=0.LR_FROMCITY=<fs_table>.ENDIF.CALL METHOD wd_this->GO_SELECT_OPTIONS->GET_RANGE_TABLE_OF_SEL_FIELDEXPORTINGI_ID='TOCITY'RECEIVINGRT_RANGE_TABLE=lo_dataASSIGN lo_data->*to<fs_table>.IF sy-subrc=0.LR_TOCITY=<fs_table>.ENDIF.DATA lo_nd_spfli_node TYPE REF TO if_wd_context_node.DATA lt_spfli_node TYPE wd_this->elements_spfli_node.lo_nd_spfli_node=wd_context->get_child_node(name=wd_this->wdctx_spfli_node).SELECT*INTO CORRESPONDING FIELDS OF TABLE lt_spfli_nodeFROM spfliwhere cityfrom in LR_FROMCITYand cityto in LR_TOCITY.IF sy-subrc=0.DATA lo_api_controller TYPE REF TO if_wd_controller.DATA lo_message_manager TYPE REF TO if_wd_message_manager.DATA ls_message_area TYPE string VALUE'MESSAGE_AREA'.lo_api_controller?=wd_this->wd_get_api().CALL METHOD lo_api_controller->get_message_managerRECEIVINGmessage_manager=lo_message_managerCALL METHOD lo_message_manager->report_successEXPORTINGmessage_text='成功'receivingmessage_id=ls_message_area.ENDIF.lo_nd_spfli_node->bind_table(new_items=lt_spfli_node set_initial_elements=abap_true). endmethod.。
WebDynpro For ABAP培训
❖ Supply Function效果
上下文映射(Context Mapping)
❖ Context的创建与Mapping Context Mapping允许控制器(通常为View控制器)访问由某些其它 控制器预处理的数据,因为映射关系允许直接参考其它控制器中的数 据,所以无需复制或移动该数据。
lo_cmp_usage->create_component( ). endif.
❖ 重用ALV控件
1、添加SALV_WD_TABLE Component的引用
❖ 重用ALV控件
2、Component Controller和Viw Controller中添加ALV控件的引用
❖ 重用ALV控件
3、在Viw 中添加控件ViewControllerUIElement 4、在Window中,对View中的ViewControllerUIElement添加ALV View的引用
元素
基数类型: 0..允许一个元素 1..n:允许一个或多个元素
所有节点都多包括一个元素集合,即使是在集合 中的元素最大数量限制为1的情况下。
12
❖ Context属性
SINGLETON:单实例还是多实例,一般是相对于SUPPLY FUNCTION而言,比如在加载 一个包含多行的表时,每一行包含的更详细数据不会被首先加载,而只有在用户选中并 查特定行时,与该行相关的数据在会被读取 Supply Function:是一种用于重新填充子节点的机制,可为Controller的每个Context 分配Supply Function。
✓ 定制控制器
可选的,可用于封装组件控制器的子函数,可在一个组件中定义多个。
✓ 配置控制器
当相应的组件实施特殊配置和个性化功能时,才必须用这种控制器,可能存在一个。
REUSE_ALV_GRID_DISPLAY超详细讲解
一、REUSE_ALV_GRID_DISPLAY详解调用功能模块:CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_interface_check = '' 接口一致性检查i_callback_program = sy-repid 当前程序名is_layout = layout 输出样式it_fieldcat = fieldcat[] 字段定义描述表i_callback_pf_status_set = 'PF_STATUS_SET' 触发事件调用子程序i_callback_user_command = 'USER_COMMAND' 鼠标事件操作子程序it_events = i_events[] 出口程序触发事件i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE' ALV输出表头设置i_grid_settings = wl_lvc_s_glay 打印表头设置it_sort = sortable[] 排序设置TABLESt_outtab = ig_outEXCEPTIONSprogram_error = 1OTHERS = 2.常用属性:(赋值’’中内容必须为大写)1.Fieldcatdata: fieldcat type slis_t_fieldcat_alv with header line.it_fieldcat = fieldcat[]属性(用来定义表单中的各个列的相关信息)Fieldcat-col_pos = n. 输出列Fieldcat-tabname = ‘FIELDNAME’.对应的内表字段名Fieldcat-seltext_s/m/l = ‘列名’.输出列文本(_s:短文本_l:长文本)Fieldcat-emphasize = ‘CX10’.带有颜色的高亮列(其中X=(1-7)颜色同format)Fieldcat-hotspot = ‘X’.作为热点显示可触发鼠标触发事件Fieldcat-currency = ‘CURRKEY’.表TCURX 中的货币名称Fieldcat-quantity(3) 计量单位Fieldcat-qfieldname 参考计量单位的字段名称Fieldcat-round = n. 四舍五入至小数位数下n 位Fieldcat-exponent = n. 浮点数的幂指数为n Fieldcat-key = ‘X’.关键字段Fieldcat-icon = ‘X’.作为图标输出Fieldcat-symbol = ‘X’.输出作为符号Fieldcat-checkbox = ‘X’.作为复选框输出Fieldcat-just = SPACE, 'R', 'L', 'C'. 对齐方式Fieldcat-lzero = ‘X’.输出前导零Fieldcat-no_sign = ‘X’.输出抑制符号Fieldcat-no_zero = ‘X’.为输出隐藏零Fieldcat-edit_mask = SPACE, mask.. 输出为mask的模式Fieldcat-fix_column = ‘X’.固定列Fieldcat-do_sum = ‘X’.总计列值总和Fieldcat-no_out = ‘X’.列不输出Fieldcat-tech = ‘X’.该字段为技术字段Fieldcat-outputlen = n 列的字符宽度为nFieldcat-decimals_out = n 能控制小数点的位数为n Fieldcat-datatype = C,I,N…定义数据类型2.SORTdata: sortable type slis_t_sortinfo_alv with header line.it_sort = sortable[]属性(排序)Sortable-Fieldname 字段名Up 升序排列Down 降序排列Subtot3.Layoutdata: layout type slis_layout_alv .is_layout = layout属性(用于定义ALV表单的相关格式、属性)info_fieldname = 'LINE_COLOR'. 设置特殊行颜色(将LINE_COLOR增加到内表字段,写'CX10'到特殊行的LINE_COLOR, X为颜色值)colwidth_optimize = ‘X’.优化列宽设置no_colhead = 'X'. 不显示列名no_vline = 'X'. 不显示列间竖线zebraf2code = '&ETA'. 设置触发弹出详细信息窗口的功能码,这里是双击no_vline 这个用来设置列间隔线detail_initial_linesdetail_popup 是否弹出详细信息窗口detail_titlebar 设置弹出窗口的标题栏totals_texttotals_onlygroup_change_editheader_text4.按钮DATA: i_events TYPE slis_t_event WITH HEADER LINE.事件:it_events = i_events[]i_callback_pf_status_set = 'PF_STATUS_SET'i_callback_user_command = 'USER_COMMAND'出口程序触发事件对应子程序:FORM PF_STATUS_SET USING rt_extab TYPE slis_t_extab.FORM user_command USING ucomm LIKE sy-ucomm selfield TYPEslis_selfield.系统按钮功能码:功能代码: 函数文本: 图标名称:&ETA 细节ICON_SELECT_DETAIL&EB9 调用报告... ICON_TABLE_SETTINGS&REFRESH 刷新ICON_REFRESH&ALL 全部选择ICON_SELECT_ALL&SAL 取消全选ICON_DESELECT_ALL&OUP 按升序排列ICON_SORT_UP&ODN 按降序排列 ICON_SORT_DOWN&ILT 设置过滤器ICON_FILTER&UMC 总计ICON_SUM&SUM 小计... ICON_INTERMEDIATE_SUM &RNT_PREV 打印预览 ICON_LAYOUT_CONTROL &VEXCEL Microsoft Excel ICON_XLS&AQW 字处理... ICON_WORD_PROCESSING %PC 本地文件 ... ICON_EXPORT%SL 邮件收件人ICON_MAIL&ABC ABC 分析ICON_ABC&GRAPH 图形ICON_GRAPHICS&OL0 更改布局... ICON_ALV_VARIANTS&OAD 选择格式... ICON_ALV_VARIANT_CHOOSE &AVE 保存格式... ICON_ALV_VARIANT_SAVE &INFO 信息ICON_INFORMATION4.ALV表头设置i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'form top_of_page using cl_dd type ref to cl_dd_document.语法同HTML fomat二、REUSE_ALV_GRID_DISPLAY常用参数用法by liyi*******************Neusoft Group ERP Division Jan.2008This document contains 17 pages. It can be transmitted or printed as a whole. No portion of it can be modified or reproduced without the written permission from the author.Table of Contents1. 前提条件 (8)2. 开发实例 (9)3. 附件 (16)KEY WORDS :REUSE_ALV_GRID_DISPLAY 参数1.前提条件ALV Report是SAP中一种常见的报表展现形式,它可以标准化、简单化R/3系统中的表单,可以提供给用户一个统一的表单格式以及用户接口。
使用ALV内嵌(In-place),出现白板!设置officeexcel安全性.
使用ALV内嵌(In-place),出现白板!设置officeexcel安全性.1、问题:点击ALV工具栏的"Excel"图标后,出现空白的内嵌Excel界面,无法正常显示报表数据。
可按以下思路解决:(1)检查Excel中的宏安全设置选项。
访问方法:启动Excel,点击“T ools”菜单,选择“Option”菜单项,在弹出的“Option”窗体点击“Security”标签页,再点击窗体右下角的“Macro Security...”按钮,在弹出的“Security”窗体点击“Trusted Publishers”标签页,然后点击“Trust acccess to Visual Basic Project”前面的复选框,点击“确定”逐层退出。
保存当前Excel文件。
(切记:一定要保存。
)以上操作在本机设置一次即可,除非Excel程序被卸载重装。
注:大部分情况下完成这一步的设置即可解决。
(2)尽量关闭不需要的Excel窗口及其他应用程序。
ALV报表很耗内存,使用ALV的内嵌Excel功能占用的内存更是惊人,所以在你使用这个功能之前,尽可能关闭外部Excel窗口和其他应用程序,以释放更多的可用内存供SAP使用,否则Windows会使用虚拟内存,这将导致响应速度变慢甚至无法正常显示数据。
(3)清空本机登录用户的SAP硬盘缓存文件有些异常是由于历史缓存文件导致的。
先退出SAP GUI,清空SAP缓存文件,缓存文件的存放目录在SAP GUI的Option下的Local Data中设置,在该目录下有一个SapWorkDir目录,把这个目录下的文件全部删除即可。
2、如何上传自定义的Excel数据模板。
(1)先下载SAP标准模板sap_mm.xls。
Transaction Code:OAORClass name填:ALVLAYOUTTEMPLATESClass type填:OTObject key填:SAP_STANDARD_TEMPLATE执行后,选择sap_mm.xls,然后点击“Documents”菜单下的“Export”菜单项(或按Ctrl+F6),指定导出文件的存放目录,确定即中。
WebDynpro
SAP Web Dynpro 一步一步创建一个结构清晰的Web Dynpro本教程目的:1对NetWeaver 整体清晰的了解2对开发环境有深刻的印象3理解Webdynpro的一些基本概念4熟知Webdynpro的设计5认识组件的重用性6学习更多用户界面知识主题:1NetWeaver 浏览2开发环境介绍Sap Web 应用服务器开发框架Sap NetWeaver 开发IDE3Web Dynpro 介绍4一步一步开发Web Dynpro架构设计详细设计实现5Web Dynpro 本质属性Web Dynpro组件Web Dynpro模式6总结演示应用程序Sap NetWeaver 介绍Sap NetWeaver是一个java和ABAP的应用和集成平台业务环境Sap NetWeaver架构图人员集成信息集成过程集成平台开发环境Sap Web 应用服务器是所有SAP解决方案和客户开发应该的基础架构图开发模型图开发生命周期图开发框架SAP为开发的所有过程和生命周期提供了一个集成的和强健的框架此开发框架的动机1在大多J2EE的开发环境IDE市场中所提供的开发框架都有一定的限制2一系列在开发人员机器上为每个工程建立可持续的开发环境是非常必要的JA V A/ABAP 开发框架ABAP1为编译和测试提供了一个一体化的环境2实例编译最小化完整的3可持续性集成测试JA V A1解藕性的中心服务器有效性性能离线使用2本地文件和目录3本地测试环境详细的JA VA 开发框架SAP NetWeaver Developer Studio它是基于Eclipse IDE并为开发业务应用提供了一所有的开发工具1SAP在Eclipse 上提供了一个完整工具集(视图)2所有客户和合作者都可以通过开发插件来扩展开发环境3通过Eclipse的视图提供了一个独立的个性化的开发工具集4无缝集成了所有SAP的开发框架(设计时仓库,变化管理,软件逻辑)各层次图解Web Dynpro 介绍Web Dynpro是SAP基于标准的J2EE的一种高级编程模式,同时提供了创建Web形式的业务应用和客户化界面的开发和运行时环境优势1 目标为一个企业级质量Web开发环境设计最大化,代码最小化逻辑和布局分离提供专用的后台提供可重用组件用户界面可配置性支持Web服务和数据绑定特性2软件发布包跨平台3提高客户体念通过高忠实度的用户界面基于浏览器无其它痕迹屏幕更新通过局部重载动态的客户端缓存提高性能508存取度最小刷新整屏无闪动个性界面Web Dynpro 编程范例1可重用性组件可过模型构造应用2基于数据类型信息的服务3最大抽象化和最小代码图开化的管理视图空间视图布局视图导航视图嵌套声名式的应用数据管理数据结构化数据流程局部和全局数据4模型-视图-控制架构模型:封装业务逻辑和持久化视图:定义可视化数据控制:处理事件,更新模型,显示下一个视图模型-视图-控制应用的表现层和业务逻辑层设计模式Web Dynpro 原数据模型规则视图和布局每个视图都自己的布局连接导航定义所有可能的视图顺序视图集和视图区域一个视图区域能显示多个视图但一次只能显示一个视图集是视图区域排列规则控制器=上下文(局部数据)+客户化编程存取其它的控制器规则是相关可用性客户化编程是不能用原数据模型表达需求每个控制器都有可继承的本地数据结构模型被称为控制上下文视图和控制器视图是在界面上定义了用户想看到的数据视图控制器是从用户那理处理事件客户化控制器提供了一个全局服务数据绑定和映射数据绑定和映射是为了数据交换自动化数据通过绑定和映射进行自由交换每个视图的控件都由控制器中的上下文绑定一些控件比如表可以绑定到多个节点上下文节点可以被映射到其它上下文的相似节点映射能传播数据和传递数据选择状态在后台数据模型提供了向后台存取的接口代理连接到后台系统(My Sap,Web 服务)Web Dynpro 跨平台特性Web Dynpro 工具Web Dynpro 一步一步开发架构设计架构设计包括应用在子应用中的角色决定,子应用到组件的声名及其它的一些不在详细设计过程中的概念和过程决定步骤一:定义数据模型步骤二:定义组件步骤三:定义结构步骤四:定义流程实例:ItemSearch 架构步骤五:定义上下文节点步骤六:定义动做和方法详细设计在详细设计中组件的内部结构将被增加,用来实现操作步骤七:定义视图步骤八:定义视图布局和流程步骤九:定义控件步骤十:定义控件的布局步骤十一:定义上下文节点和映射步骤十二:定义绑定控件步骤十三:定义动作和方法步骤十四:定义绑定动作实现步骤十五:实现方法和事件处理器Web Dynpro 组件把应用分解成可重用的组件总结。
Webdynpro如何通过代码去控制一个ALV的TABLE组件步骤
具体代码参考:ZWD_QUOTATION_CREATE_C1~VIEW(V_QUOTE_PRICE)~WDDOINIT方法如何通过代码去控制一个ALV组件的TABLE格式步骤:Step 1:在Webdynpro组件的已使用组件中添加ALV组件Step 2:在具体应用到ALV组件的视图上的组件使用上添加我们之前定义的ALV组件Step 3:通常在视图的WDDOINIT方法里去开始定制ALV的显示格式。
首先要实例化ALV组件,如下图。
实例化后,会自动生成下列代码,操控ALV组件之前,必须先实例化它,否则无法操控。
Step 4:取的ALV组件的模型取的下列代码Step 5:配置每列的中文名称DATA:LT_COLUMNS TYPE SALV_WD_T_COLUMN_REF,LS_COLUMN TYPE SALV_WD_S_COLUMN_REF,LR_COLUMN TYPE REF TO CL_SALV_WD_COLUMN,LR_HEADER TYPE REF TO CL_SALV_WD_COLUMN_HEADER,LR_INPUT_FIELD TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD,LR_CHECKBOX TYPE REF TO CL_SALV_WD_UIE_CHECKBOX.DATA: lo_col_head TYPE REF TO cl_salv_wd_column_header.”列的抬头*根据table获取列lt_columns = lv_value->if_salv_wd_column_settings~get_columns( ).LOOP AT lt_columns INTO ls_column.lr_column = ls_column-r_column.CALL METHOD lr_column->get_headerRECEIVINGvalue = lo_col_head.”实例化列的抬头lo_col_head->set_prop_ddic_binding_field(property = if_salv_wd_c_ddic_binding=>bind_prop_textvalue = if_salv_wd_c_ddic_binding=>ddic_bind_none ).CALL METHOD lo_col_head->set_textEXPORTINGvalue = ‘具体列的显示名称’.Step 6:某列作为按钮,可输入框,或者复选框等等特殊性质的列以按钮为例,首先定义个按钮对象DATA: lr_button1 TYPE REF TO cl_salv_wd_uie_button.DATA: lr_column1 TYPE REF TO cl_salv_wd_column.这里我们采取了另一种获取COLUMEN对象,之前是采用(lt_columns = lv_value->if_salv_wd_column_settings~get_columns( ).LOOP AT lt_columns INTO ls_column.lr_column = ls_column-r_column.)lr_column1 = lo_value->if_salv_wd_column_settings~get_column( `PRICE_ BTN` ).CREATE OBJECT lr_button1.这里实例化BUTTON对象,他不需要任何输入参数,原因在于他的构造方法是不需要输入参数的,所以直接CREATE OBJECT即可lr_button1->set_text( `配置价格`).lr_button1->set_enabled( abap_true ).lr_column1->set_cell_editor( lr_button1 ).同理如果是一个CHECK_BOXLR_CHECKBOX TYPE REF TO CL_SALV_WD_UIE_CHECKBOX.CREATE OBJECT LR_CHECKBOXEXPORTINGCHECKED_FIELDNAME = LS_COLUMN-ID."-- ls_name-name.这里需要一个输入参数,是因为构造函数中有一个输入参数。
ABAP_WebDynpro实例
1、WebDynpro 实例目的:将SAP中开发的程序在Web中运行进而不需要在客户机上安装SAPGUI。
说明:涉及容:1.1 SE80 创建 WebDynpro 程序1、T-CODE: SE80进入“对象导航”界面,程序类型选择“WebDynpro组件/ 接口”,然后在程序名处输入程序名,如图LIT:巨Workbench Edit βoto Utiities(M) Environment 系统(X) 群助(H)。
昼丽▼:oELeg秘口⅛aβ⅛益唇43处国囱酚匾Object Navigator。
且IH 否Edit ObjectWeb Dynpro 组件/接口「[L TESTI∣丁∣工∣国产程序名称∣> ∣.∣∣⅜ !.]ι[^][⅞]∣[⅞1[≡l[⅞1∣[al对象名称描述▼ a CL_SUS_C_ASN_DETAIL_VIEW Controller Chss for SRMSUS, □超类, 口接口, 口属性, g方法图L IT2、光标置于程序名称处,点击“火车”(或者名称旁边的小眼镜),如果程序不存在(如果存在,则直接显示如图1.1-5)则跳出提示框,然后点击“是”,如图1. 1-2:Object NavigatorR 。
邕目 ⅛Edit Object 曲MIME 资源库 ―j 品资源库浏览券靠资源后信息翩e! g )标记浏览器! I⅛传输组织器1 [Web Dy 叩r°组件/接口_」❷We b Dynpro 组件/接口 Z_TEST1不存在是否创建对象 |Z_TEST1 3 ?▼ 6 CL_SUS_C_ASN_DETAIL_vW图L ・3图测试奥源座 ©蝌 Web Dynpro 笫件/接口包口口圆囱।国【 是 1 s l χ 方类口性比 超接属亡 图 1.1-23、输入程序描述,选择类型, 接更改,然后打钩,如图1.1-3: 窗口名称及视图名称会自动带出来,可以直 © Web Dynpro :组件/创建界面 ×4、选择“包”(或存于本地对象),然后点击保存,如图图1.1-4图中也可以查询系统标准的或自定义的页格式。
ABAP Web dynpro ALV report table
ABAP Web dynpro ALV report tableHere are the simple instruction of how to insert an ALV report table into your web dynpro for ABAP application. Implementing an interactive ALV report is a very simple process but once added provides extensive functionality such as sorting, edit, printing, export to excel, various views of same data... It also allows the final user to manipulate the report to their liking by re-ordering fields and even hiding some altogether!Before following these steps you need to have created a Basic Web Dynpro, which will only take about 5mins as it does not need to do anything, all the one linked to here does is display the text 'Helloworld'. Once you have your basic web dynpro which contains a simply view, window and application you can follow the steps below to insert an ALV table into it.Step 1 - Create a View Container UIElementWithin the layout tab of your VIEW add a new element of type ViewContainerUIElement and give it a name, such as VIEWCONT1. This will be used to display your ALV table.Step 2 - Create your context nodeNow create your context which will be used to generate your ALV grid table. I.e. the fields in this context will make up the columns of your ALV table. Double click on the ComponentController and select the 'Context' tab. Now add a new node to the context node (right click the context and select Create->Node).Step 2 - Populate properties of your context nodeGive the new node a name and enter which table structure you want to base it on (i.e. structure you want your ALV grid based on ). Also rememeber to set the cardinality to0:n (or 1:n) to denote a table.Step 3 - Add field attributes to your context nodeNow click on the 'add attributes from structure' button, and select your desired table fields.Step 4 - context node created!Press the green tick on both the new popup screens to return to your context section, your new context node should now have been added.Step 5 - Populate Context used by ALV within VIEWGo to the context tab of your VIEW and drag the ALV table context(ALV_TABLE) from the right hand side to the left hand conext node.Step 6 - Assign ALV Component usageWithin the Used Components tab of the web dynpro main properties screen add a new component usage SALV_WD_TABLE and give it a usage name of your choice (ALV_COMP).Step 7 - Access the Component usageWithin the left hand object tree expand Component Usages and then the usage you just created (ALV_COMP). Now double click on INTERFACECONTROLLER_USAGEStep 8 - Assign controller usage to ALV usageClick on the 'Controller Usage' button and select your web dynpro componentStep 9 - Assign context to ALV usage dataA second context view will open on the right hand side containing the context node you created earlier for your ALV table. Simply drag this node from the right hand side to the left hand side DATA node.Step 10 - Embed the ALV into VIEW ContainerGo to your main window where the view (VIEW1) has been embeded. Expand the view until you reach the VIEW Container VIEWCONT1. Now right click on the View Container and select 'Embed View'Step 11 - choose view to embedClick the drop down option of the 'View to Be Embedded' field and select the TABLE view of your ALV component usage (ALV_COMP).Step 12 - Add ABAP code to populate ALV tableWithin the WDDOINTINIT method of your VIEW (VIEW1) enter the following code. * create local data variable to access context informationData: context_node type ref to if_wd_context_node.* create table based on context structuredata: it_scarr type STANDARD TABLE OF if_view1=>element_ALV_TABLE,wa_scarr like line of it_scarr.*select data from required SAP tableselect *fromscarrinto table it_scarr.* bind data to context used by ALVcontext_node = wd_context->get_child_node( name = 'ALV_TABLE').context_node->BIND_table(it_scarr ).Step 13 - All done!Well thats it your all done, simply save and activate everything and execute the application. you should see something like the following...Step 14 - Populate Context used by ALV within VIEWNote: You will notice that client is displayed within the ALAV even though you did not select the client field during the context creation stage. This is just to demonstrate that all fields from the route structure are brought through to the ALV despite how many you actually choose.If you dont want certain fields to appear you can create a structure which does not contain them or insert some code to hide fields of the web dynpro ALV you do not want to see.Check out web dynpro ALV select options if you want to add user selection to your ALV report. This allows the user to resrict the output results based on select option input fields.。
