如何动态修改sap屏幕sap 自定义菜单文本内容

查看: 1805|回复: 5
如何动态改变屏幕中元素参照的表中的字段
论坛徽章:0
各位好,请教如下问题:
如何动态改变屏幕中元素参照的表中的字段,现在只能初始,如果我再做个按钮什么的,点一下让parameter改变参照的字段,怎么才能实现呢!!!!!!!
DATA w_name TYPE char20.
PARAMETER p_dynmic LIKE (w_name).
INITIALIZATION.
&&w_name = 'BKPF-BUKRS'.
论坛徽章:0
しゅさん, 等待你的回答呢!!!!!!
论坛徽章:2
期待高手回答.....
照你这样, 参照的字段只能在INITIALIZATION. 里面来改变.
而如果加入按钮用pushbutton. 那么按钮事件只能在AT SELECTION-SCREEN. 里面写.
2者没法在同一地方.
如果你把可能用到的parameter全列出来, 然后按钮触发事件显示(隐藏)部分parameters, 应该可以达到类似得1功能.
论坛徽章:0
现在用选择屏幕的function key 作为触发源, 但是没达到预期效果,
没有修改PARAMETER p_dynmic 参照的新字段,是不是要刷屏.
DATA: functxt TYPE smp_dyntxt,
& && &w_name&&TYPE char20.
PARAMETERS: p_dymic LIKE (w_name).
SELECTION-SCREEN: FUNCTION KEY 1.
INITIALIZATION.
&&w_name = 'BKPF-BUKRS'.
&&functxt-icon_id& &= '@9T@'.
&&functxt-icon_text = '爸爸变儿子'.
&&sscrfields-functxt_01 = functxt.
AT SELECTION-SCREEN.
&&CASE sscrfields-ucomm.
& & WHEN 'FC01'.
& && &IF functxt-icon_id& &= '@9T@'.
& && &&&w_name = 'MARA-MATNR'.
& && &&&CLEAR functxt.
& && &&&functxt-icon_id& &= '@9S@'.
& && &&&functxt-icon_text = '儿子变爸爸'.
& && &&&sscrfields-functxt_01 = functxt.
& && &ELSE.
& && &&&w_name = 'BKPF-BUKRS'.
& && &&&CLEAR functxt.
& && &&&functxt-icon_id& &= '@9T@'.
& && &&&functxt-icon_text = '爸爸变儿子'.
& && &&&sscrfields-functxt_01 = functxt.
& && &ENDIF.
&&ENDCASE.
论坛徽章:11
换个思路,开始就定义好两个parameter,初始显示一个隐藏一个,按按钮过后互换
论坛徽章:6
楼上签名真逗
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号ABAP&屏幕上动态修改按钮的图标
对于屏幕上画出来的按钮,有时候需要根据用户动作修改图标。这个功能可以通过设置多个按钮,然后根据需要显示只想要看到的按钮,也可以只画一个按钮,通过修改图标码动态修改
第一种比较直接,但是比较麻烦,这里介绍第二种的实现方法
1.在屏幕上画一个按钮,在属性的程序页签中勾上 输出字段
2.在事件处理中 根据要求设置图标
&&&&&&but&=&'@0Y@'."图标代码的获取
下面有详细介绍
&&&&&&but&=&'@0Z@'.
&&&&ENDIF.
这样就可以动态显示图标了
至于图标的编码 可以通过SE11 进行查找,在SE11中的 TYPE GROUP中输入
ICON,里面有图标对应的代码。至于要看图标长怎么样 可以直接输入ICON 查看。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&ABAP开发(94)
REPORT& z_barry_mod_sel_text.
TABLES mara.
PARAMETER p_test(10).
SELECT-OPTIONS: s_test FOR mara-matnr ,
&&&&&&&&&&&&&&& s_matnr FOR mara-matnr .
*INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
& PERFORM mod_sel_text USING sy-repid 'P' 'P_TEST' 'P类型测试'.
& PERFORM mod_sel_text USING sy-repid 'S' 'S_TEST' 'S类型测试'.
*&---------------------------------------------------------------------*
*&&&&&& FORM& MOD_SEL_TEXT
*&---------------------------------------------------------------------*
FORM mod_sel_text USING p_repid kind parameter text .
& DATA sel TYPE rsseltexts OCCURS 1 WITH HEADER LINE.
& REFRESH sel.
& sel-name = parameter.
& sel-kind = kind.
& sel-text&& = text.
& APPEND sel.
& CALL FUNCTION 'SELECTION_TEXTS_MODIFY'
&&& EXPORTING
&&&&& program&&&&&&&&&&&&&&&&&&&& = p_repid
&&& TABLES
&&&&& seltexts&&&&&&&&&&&&&&&&&&& = sel
&&& EXCEPTIONS
&&&&& program_not_found&&&&&&&&&& = 1
&&&&& program_cannot_be_generated = 2
&&&&& OTHERS&&&&&&&&&&&&&&&&&&&&& = 3.
& IF sy-subrc && 0.
&&& MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
&&&&&&&&&&& WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDFORM.&&&&&&&&&&&&&&&&&&& &MOD_SEL_TEXT
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:233607次
积分:3391
积分:3391
排名:第6772名
原创:103篇
转载:70篇
(1)(1)(1)(4)(2)(4)(4)(1)(10)(7)(26)(3)(6)(9)(9)(8)(20)(1)(4)(40)(7)(5)[SAP ABAP开发技术小结]反射,动态创建内表、结构、变量 - SAP当前位置:& &&&[SAP ABAP开发技术小结]反射,动态创建内表、结构、[SAP ABAP开发技术小结]反射,动态创建内表、结构、变量&&网友分享于:&&浏览:0次[SAP ABAP开发技术总结]反射,动态创建内表、结构、变量
声明:原创作品,转载时请注明文章来自博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自:
其实ABAP中没有反射这一概念,这是从JAVA中来的,我只是个比喻。它也用于动态编程,比如来用动态的创建一个结构、内表等,虽然直接可以通过cl_alv_table_create=&create_dynamic_table的来动态创建一个内表,但在不借助于这些已有的方法时,我们该如何创建?
CL_ABAP_TYPEDESCR
& |--CL_ABAP_DATADESCR
& |&& |--CL_ABAP_REFDESCR
& |&& |--CL_ABAP_COMPLEXDESCR
& |&&&&&& |--CL_ABAP_
& |&&&&&& |--CL_ABAP_
& |--CL_ABAP_
&&&& |--CL_ABAP_
&&&& |--CL_ABAP_INTFDESCR
DATA: structtype& TYPE&REF&TO cl_abap_structdescr.structtype ?= cl_abap_typedescr=&name( 'spfli' ).
DATA: datatype TYPE&REF&TO cl_abap_datadescr,field(5) TYPE&c.datatype ?= cl_abap_typedescr=&describe_by_( field ).
: elemtype TYPE&REF&TO cl_abap_elemdescr.elemtype = cl_abap_elemdescr=&i( ).elemtype = cl_abap_elemdescr=&get_c( 20 ).
: oref1 TYPE REF TO object.DATA: descr_ref1 TYPE REF TO cl_abap_typedescr.CREATE OBJECT&oref1 TYPE ('C1'). "C1为类名descr_ref1 = cl_abap_typedescr=&(&oref1 ).
还有一种:describe_by_data_ref
1.14.1.TYPE HANDLE
handle只能是CL_ABAP_DATADESCR或其子类的引用变量,注:只能用于Data类型,不能用于Object类型,即不能用于CL_ABAP_ OBJECTDESCR,所以没有:
CREATE OBJECT&dref TYPE HANDLE objectDescr.
DATA: dref TYPE REF TO data,c10type TYPE REF TO cl_abap_.c10type = cl_abap_elemdescr=&get_c( 10 ).dref TYPE HANDLE c10type.DATA: x20type TYPE REF TO cl_abap_elemdescr.x20type = cl_abap_elemdescr=&get_x( 20 ).FIELD-SYMBOLS: &fs& TYPE any.ASSIGN dref-&* TO &fs& CASTING TYPE HANDLE x20type.
1.14.2.动态创建数据Data或对象Object
& TYPES: ty_i TYPE i.& DATA: dref TYPE REF TO ty_i .&&CREATE DATA dref TYPE ('I')."根据基本类型名动态创建数据& dref-&* = 1.& WRITE: / dref-&*." 1
& ."根据类名动态创建实例对象
1.14.3.动态创建基本类型变量、结构、内表
DATA: dref_str TYPE REF TO data,&&&&& dref_tab TYPE REF TO data,&&&&& dref_i TYPE REF TO data,& itab_type TYPE REF TO cl_abap_tabledescr,& struct_type TYPE REF TO cl_abap_structdescr,& elem_type TYPE REF TO cl_abap_elemdescr,& table_type TYPE REF TO cl_abap_tabledescr,& comp_tab TYPE cl_abap_structdescr=&component_table WITH HEADER LINE.FIELD-SYMBOLS :&fs_itab& TYPE ANY TABLE.**=========动态创建基本类型elem_type ?= cl_abap_elemdescr=&get_i( ).CREATE DATA dref_i TYPE HANDLE elem_type ."动态的创建基本类型数据对象**=========动态创建结构类型struct_type ?= cl_abap_typedescr=&describe_by_name( 'SFLIGHT' )."结构类型comp_tab[] = struct_type-&get_components( )."组成结构体的各个字段组件* 向结构中动态的新增一个成员comp_tab-name = 'L_COUNT'."为结构新增一个成员comp_tab-type = elem_type."新增成员的类型对象INSERT comp_tab INTO comp_tab INDEX 1.* 动态创建结构类型对象struct_type = cl_abap_structdescr=&create( comp_tab[] ).CREATE DATA dref_str TYPE HANDLE struct_type."使用结构类型对象来创建结构对象**=========动态创建内表* 基于结构类型对象创建内表类型对象itab_type = cl_abap_tabledescr=&create( struct_type ).CREATE DATA dref_tab TYPE HANDLE&itab_type."使用内表类型对象来创建内表类型ASSIGN dref_tab-&* TO &fs_itab&."将字段符号指向新创建出来的内表对象"**========给现有的内表动态的加一列table_type ?= cl_abap_tabledescr=&describe_by_data( itab ).struct_type ?= table_type-&get_table_line_type( ).comp_tab[] = struct_type-&get_components( ).comp_tab-name = 'FIDESC'.comp_tab-type = cl_abap_elemdescr=&get_c( 120 ).INSERT comp_tab INTO comp_tab INDEX 2.struct_type = cl_abap_structdescr=&create( comp_tab[] ).itab_type = cl_abap_tabledescr=&create( struct_type ).CREATE DATA dref_tab TYPE HANDLE itab_type.
1.14.4.类对象反射
CLASS c1 DEFINITION.& PUBLIC SECTION.&&& DATA: c VALUE 'C'.&&& METHODS: test.ENDCLASS.CLASS c1 IMPLEMENTATION.& METHOD:test.&&& WRITE:/ 'test'.& ENDMETHOD.ENDCLASS.START-OF-SELECTION.& TYPES: ty_c.& DATA: oref TYPE REF TO object .& DATA: oref_classdescr TYPE REF TO cl_abap_classdescr .& CREATE OBJECT oref TYPE ('C1')."根据类名动态创建实例对象& "相当于Java中的Class类对象& ?= cl_abap_classdescr=&describe_by_object_ref( oref ).& DATA: t_attrdescr_tab TYPE abap_attrdescr_tab WITH HEADER LINE,"类中的属性列表&&&&&&& t_methdescr_tab TYPE abap_methdescr_tab WITH HEADER LINE."类中的方法列表& FIELD-SYMBOLS &fs_attr& TYPE any.& t_attrdescr_tab[] = oref_classdescr-&attributes.& t_methdescr_tab[] = oref_classdescr-&methods.& LOOP AT t_attrdescr_tab."&&& ASSIGN oref-&(t_attrdescr_tab-name)&TO &fs_attr&.&&& WRITE: / &fs_attr&.& ENDLOOP.& LOOP AT t_methdescr_tab."&&& CALL METHOD oref-&(t_methdescr_tab-name).& ENDLOOP.
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有

我要回帖

更多关于 sap自定义语言描述 的文章

 

随机推荐