ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » ERP二次开发 » 在选择画面上添加按钮

标题: [笔记] 在选择画面上添加按钮
在线/呼叫 bluebaby001


精华贴数 0
个人空间 0
技术积分 77 (20079)
社区积分 0 (967734)
注册日期 2006-5-31
论坛徽章:0
      
      

发表于 2008-7-12 19:00 
在选择画面上添加按钮

TYPE-POOLS: ICON, SLIS.
TABLES: BSIK,SSCRFIELDS.

SELECTION-SCREEN FUNCTION KEY 1.
INITIALIZATION.
  CONCATENATE : ICON_DELETE '' INTO SSCRFIELDS-FUNCTXT_01.


AT SELECTION-SCREEN.
  IF SSCRFIELDS-UCOMM = 'FC01'.
    MESSAGE 'CREATE OK' TYPE 'S'.
    LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
    WRITE 'haha'.
ENDIF.


只看该作者    顶部
离线 gavin
怀旧会员



来自 广东
精华贴数 0
个人空间 0
技术积分 118 (14478)
社区积分 0 (52815)
注册日期 2002-3-14
论坛徽章:0
      
      

发表于 2008-8-8 14:54 
回复 #1 bluebaby001 的帖子

这代码不全吧,我取过来,调试不出来那结果.


__________________
抱着学习的态度来的!
只看该作者    顶部
离线 zhflzhfl
小丑



精华贴数 0
个人空间 0
技术积分 302 (6518)
社区积分 100 (3450)
注册日期 2006-11-23
论坛徽章:5
2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:跳水2008年新春纪念徽章行业板块每日发贴之星 
      

发表于 2008-8-8 14:56 
这代码不全吧


只看该作者    顶部
在线/呼叫 bluebaby001


精华贴数 0
个人空间 0
技术积分 77 (20079)
社区积分 0 (967734)
注册日期 2006-5-31
论坛徽章:0
      
      

发表于 2008-8-13 15:32 
REPORT  ZZTEST_TEST.

TYPE-POOLS: ICON, SLIS.
TABLES: BSIK,SSCRFIELDS.
CONSTANTS:
CNS_BT(2)             TYPE C VALUE 'BT',
CNS_I                 TYPE C VALUE 'I'.

SELECT-OPTIONS S_DATE FOR SY-DATUM MODIF ID G2 NO-EXTENSION.
SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.
  CONCATENATE : ICON_DELETE '' INTO SSCRFIELDS-FUNCTXT_01.

  S_DATE-OPTION =  CNS_BT.
  S_DATE-SIGN   =  CNS_I.
  S_DATE-LOW    = SY-DATUM - 1.
  S_DATE-HIGH   = SY-DATUM.
  APPEND S_DATE.

AT SELECTION-SCREEN.
  IF SSCRFIELDS-UCOMM = 'FC01'.
    CLEAR: S_DATE[].
    MESSAGE 'Clear OK' TYPE 'S'.
  ENDIF.

看一下这个例子吧。
据我所知这样的FUNCTION KEY 可以最多定义5个吧,对应为FC01-FC05。
以下摘自帮助,可以看一下它的详细的用法了。

Syntax
SELECTION-SCREEN FUNCTION KEY n [ldb_additions].


Effect:

In the GUI status of the selection screen set by the system, the application toolbar contains five inactive pushbuttons, to which the function codes FC01 to FC05 are assigned. This statement activates the pushbutton of the function code FC0n, whereby a value between 1 and 5 must be entered for n.

To enable use of the pushbuttons, the statement TABLES must be used to declare an interface work area of the structure SSCRFIELDS from the ABAP Dictionary.

If a text is assigned to the component functxt_0n of the interface area sscrfields before the selection screen is called, this text is displayed on the relevant pushbutton. Otherwise, the pushbutton does not contain any text.

When the user chooses a pushbutton in the application toolbar, the runtime environment triggers the event AT SELECTION-SCREEN and the corresponding function code is transferred to the component comm of the interface work area sscrfields.

The additions ldb_additions can only be used in the selection include of a logical database.

Notes:
To assign icons, Quickinfo, and appropriate text to the pushbuttons, a data object can be defined of the structured type SMP_DYNTXT from the ABAP dictionary. The ID of the icon, a quickinfo, and the corresponding text must be assigned to the components of this data object. The content of the whole structure must then be assigned to the component functxt_0n of the interface work area sscrfields.

After the event block after AT SELECTION-SCREEN is processed, the system returns to the display of the selection screen. To exit selection screen processing or to continue by executing the program, the user can only choose Execute or Cancel. Pushbuttons on selection screens can therefore normally be used for dynamic modifications to the selection screen rather than for program control.

If the content of the component ucomm is set to a function code used in the GUI status during selection screen processing, then the selection screen processing is influenced accordingly.

Example:
Activation of two pushbuttons with icons and quick info in the application toolbar (pushbutton toolbar) of the standard selection screen of an executable program. Selecting one of these buttons preassigns different values to the input fields.

REPORT demo_sel_screen_function_key.
TYPE-POOLS icon.
TABLES sscrfields.
DATA functxt TYPE smp_dyntxt.

PARAMETERS: p_carrid TYPE s_carr_id,
            p_cityfr TYPE s_from_cit.
SELECTION-SCREEN: FUNCTION KEY 1,
                  FUNCTION KEY 2.

INITIALIZATION.
  functxt-icon_id   = icon_ws_plane.
  functxt-quickinfo = 'Preselected Carrier'.
  functxt-icon_text = 'LH'.
  sscrfields-functxt_01 = functxt.
  functxt-icon_text = 'UA'.
  sscrfields-functxt_02 = functxt.

AT SELECTION-SCREEN.
  CASE sscrfields-ucomm.
    WHEN 'FC01'.
      p_carrid = 'LH'.
      p_cityfr = 'Frankfurt'.
    WHEN 'FC02'.
      p_carrid = 'UA'.
      p_cityfr = 'Chicago'.
    WHEN OTHERS.
      ...
  ENDCASE.

START-OF-SELECTION.
  ...


只看该作者    顶部
离线 gavin
怀旧会员



来自 广东
精华贴数 0
个人空间 0
技术积分 118 (14478)
社区积分 0 (52815)
注册日期 2002-3-14
论坛徽章:0
      
      

发表于 2008-8-14 09:51 
回复 #4 bluebaby001 的帖子

这个 Buttion 加到工具栏上去了,
有没有在真正的select screen上的?


__________________
抱着学习的态度来的!
只看该作者    顶部
离线 ganghz
初级会员



精华贴数 0
个人空间 0
技术积分 2073 (767)
社区积分 5582 (266)
注册日期 2007-11-2
论坛徽章:9
奥运纪念徽章ERP板块每日发贴之星ERP板块每日发贴之星ERP板块每日发贴之星ERP板块每日发贴之星ERP板块每日发贴之星
ERP板块每日发贴之星     

发表于 2008-8-19 23:20 
解决了吗?


__________________
1388 出蓝鲨
只看该作者    顶部
在线/呼叫 bluebaby001


精华贴数 0
个人空间 0
技术积分 77 (20079)
社区积分 0 (967734)
注册日期 2006-5-31
论坛徽章:0
      
      

发表于 2008-8-30 17:21 
看一下一个比较全的例子:

REPORT  ZR113 NO STANDARD PAGE HEADING
                      LINE-SIZE  170
                      LINE-COUNT 58.

TABLES :BKPF,BSEG,S070.
TABLES SSCRFIELDS. "选择屏幕字段##
DATA:ZBKPF LIKE BKPF OCCURS 0 ,
     ZWA_BKPF LIKE BKPF.
CONSTANTS:P_VARIANT(2)      TYPE C     VALUE 'WL'.
***下面这些屏幕参数和事件没有关系,只是参数集而已.
SELECTION-SCREEN BEGIN OF BLOCK  BK1 WITH FRAME TITLE COND1.
SELECT-OPTIONS S_BUKRS FOR BKPF-BUKRS MEMORY ID BUK.
SELECT-OPTIONS S_BLART FOR BKPF-BLART NO INTERVALS .
SELECT-OPTIONS S_BELNR FOR BKPF-BELNR .
SELECT-OPTIONS S_BUDAT FOR BKPF-BUDAT DEFAULT SY-DATUM.
SELECT-OPTIONS S_BLDAT FOR BKPF-BLDAT NO INTERVALS NO-EXTENSION.
SELECT-OPTIONS S_GJAHR FOR BKPF-GJAHR MEMORY ID GJR DEFAULT SY-DATUM(4).
SELECT-OPTIONS WEEKRAN FOR S070-SPBUP NO-EXTENSION .
SELECTION-SCREEN END OF BLOCK BK1.
SELECTION-SCREEN BEGIN OF BLOCK BK2 WITH FRAME TITLE COND2.
SELECTION-SCREEN COMMENT /1(30) COMM1 .       "使用屏幕注释
SELECTION-SCREEN BEGIN OF LINE ."两单选框将在同一条线上.
PARAMETERS PNOR  RADIOBUTTON GROUP GRP1 DEFAULT 'X'."Print normal doc
PARAMETERS PPARK   RADIOBUTTON GROUP GRP1.          "Print parked doc
SELECTION-SCREEN END OF LINE .
SELECTION-SCREEN END OF BLOCK BK2.
***使用工具条按##
SELECTION-SCREEN SKIP 2 .
SELECTION-SCREEN FUNCTION KEY 1 .
SELECTION-SCREEN FUNCTION KEY 2 .
***使用屏幕按钮,两按钮在同一行.
SELECTION-SCREEN PUSHBUTTON /8(10) BUT1
                                    USER-COMMAND CLI1.
SELECTION-SCREEN PUSHBUTTON 20(10) BUT2
                                    USER-COMMAND CLI2.
***1 初始化参数.
INITIALIZATION.
  COND1  = '【Condition】'.
  COND2 = '【Normal Doc|Parked Doc】'.
  COMM1 = 'Choose Doc. Type:'. "注释赋初值.
  BUT1 = 'CLICK'.
  BUT2 = 'Hello' .
***允许5个工具条按钮对应FUNCTXT_01->FUNCTXT_05
  SSCRFIELDS-FUNCTXT_01 = 'CLICK'.
  SSCRFIELDS-FUNCTXT_02 = 'Hello'.
***初始公司值,这在有些需要后台跑的程序非常有用,除了使用variant外,

***下面的例子在初始化后公司代码选择了1000和3000排除了2000
  S_BUKRS-LOW = '1000'.
  S_BUKRS-SIGN = 'I'. "I->包含,E->排除
  S_BUKRS-OPTION = 'EQ'. "NE
  APPEND S_BUKRS.
  S_BUKRS-LOW = '2000'.
  S_BUKRS-SIGN = 'E'.
  S_BUKRS-OPTION = 'EQ'.
  APPEND S_BUKRS.
  S_BUKRS-LOW = '3000'.
  S_BUKRS-SIGN = 'E'.
  S_BUKRS-OPTION = 'EQ'.
  APPEND S_BUKRS.
***初始化doc range 从0100000000到1000000000
  S_BELNR-LOW = '0100000000'.
  S_BELNR-HIGH = '1000000000'.
  S_BELNR-SIGN = 'I' .
  S_BELNR-OPTION = 'BT'.
  APPEND S_BELNR.
***2 使用sug_get_week后得到所选日期的当前周数,在选择weekrag字段时才触发.
***当你选择weekran字段时.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR WEEKRAN-LOW.
  PERFORM SUB_GET_WEEK CHANGING WEEKRAN-LOW.

AT SELECTION-SCREEN.
***判断所选择的公司代码是否有效,通常并不是必须的.
***当然你也可将此步省略,直接在START-OF-SELECTION判断.
***根据需要可做很多vaid字段的判断.
  PERFORM SUB_VALIDATE_COMP.
  PERFORM SUB_BUTTON_RESPONSE.
***3开始选屏
START-OF-SELECTION.
  PERFORM SUB_GET_DOC.
  PERFORM SUB_WRT_DOC.
  PERFORM SUB_WRT_FOOTER.

END-OF-SELECTION.
***4.分页时显示page header或page footer.
TOP-OF-PAGE.
  PERFORM SUB_WRT_HEADER.

END-OF-PAGE.
***5.当点击行并且是点到Document NO.CAll FB03.
AT LINE-SELECTION.
  PERFORM SUB_LINE_RESPONSE.
*---------------------------------------------------------------------*
*       FORM sub_line_response                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM SUB_LINE_RESPONSE.
  DATA: ZFLDNAME  LIKE DD01L-DOMNAME,
        ZFLDVALUE LIKE TTREET-TEXT,
        ZWA_BKPF LIKE BKPF.
  GET CURSOR FIELD ZFLDNAME VALUE ZFLDVALUE .
  IF ZFLDNAME = 'ZWA_BKPF-BELNR' .
*  READ TABLE Zbkpf into zwa_bkpf WITH KEY BELNR = ZFLDVALUE.
*   SET PARAMETER ID 'BUK' FIELD zwa_bkpf-BUKRS.
*   SET PARAMETER ID 'GJR' FIELD zwa_bkpf-GJAHR.
*   SET PARAMETER ID 'BLN' FIELD zwa_bkpf-BELNR.
    SET PARAMETER ID 'BLN' FIELD ZFLDVALUE .
    CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
  ENDIF.
ENDFORM .
*---------------------------------------------------------------------*
*       FORM SUB_GET_DOC                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM SUB_GET_DOC.
  REFRESH ZBKPF .
  SELECT * FROM BKPF INTO TABLE ZBKPF
    WHERE BUKRS IN S_BUKRS
      AND BELNR IN S_BELNR
      AND GJAHR IN S_GJAHR
      AND BUDAT IN S_BUDAT.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM sub_wrt_header                                           *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM SUB_WRT_HEADER.
***Write report header
  FORMAT INTENSIFIED COLOR = 6.
  WRITE AT: /01    'Finaincial Document List Header:'(H07).
  FORMAT COLOR COL_NORMAL ON.
  FORMAT COLOR COL_HEADING ON.
  WRITE AT:/01(48)  SY-ULINE.
  FORMAT COLOR COL_HEADING OFF.
  FORMAT COLOR OFF.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM sub_wrt_FOOTER                                           *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM SUB_WRT_FOOTER.
*** write  report footer .
  FORMAT INTENSIFIED COLOR = 6.
  WRITE: /01   'Report END,Report by:' , SY-UNAME ,'on',SY-DATUM .
  FORMAT COLOR COL_NORMAL ON.
  FORMAT COLOR COL_HEADING ON.
  WRITE AT:/01(48)  SY-ULINE.
  FORMAT COLOR COL_HEADING OFF.
  FORMAT COLOR OFF.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM sub_wrt_doc                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM SUB_WRT_DOC.
***write 凭证.如ZBKPF内表with header line可直接Loop.
  ULINE /1(41).
  LOOP AT ZBKPF INTO ZWA_BKPF.
    WRITE:/ '|',ZWA_BKPF-BUKRS,'|',ZWA_BKPF-BELNR,'|',
    ZWA_BKPF-GJAHR,'|',ZWA_BKPF-BUDAT,'|'.
    ULINE /1(41).
  ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM SUB_VALIDATE_COMP                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM SUB_VALIDATE_COMP.
***判断company code的有效##
  DATA ITAB_BUKRS LIKE BKPF-BUKRS OCCURS 0 .
  SELECT  BUKRS INTO TABLE ITAB_BUKRS
    FROM T001
    WHERE BUKRS IN S_BUKRS .
  IF ITAB_BUKRS IS INITIAL.
    MESSAGE E002(00) .
  ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM SUB_BUTTON_RESPONSE                                      *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM SUB_BUTTON_RESPONSE.
***实际中换成你需要的判断,例中只显示两Error Message.
***FC01,FC02对应工具条按钮,CLI1-2对应屏幕按钮UCOMM##
  CASE SSCRFIELDS-UCOMM .
    WHEN 'CLI1'.
      MESSAGE E001(00)  WITH 'You click screen button [CLICK]'.
    WHEN 'CLI2'.
      MESSAGE E001(00)  WITH 'You click screen button [HELLO]'.
    WHEN 'FC01'.
      MESSAGE E001(00)  WITH 'You click toolbar button [CLICK]'.
    WHEN 'FC02'.
      MESSAGE E001(00)  WITH 'You click toolbar button [Hello]'.
    WHEN  OTHERS.
  ENDCASE.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM sub_get_week                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  WKRAN                                                         *
*---------------------------------------------------------------------*
FORM SUB_GET_WEEK CHANGING WKRAN LIKE S070-SPBUP.
  DATA: L_DATE      LIKE WORKFLDS-GKDAY,
        L_PERIOD    LIKE T009B-POPER,
        L_YEAR      LIKE T009B-BDATJ.
***根据选择日期得到当前周数
  CALL FUNCTION 'F4_DATE'
       EXPORTING
            DATE_FOR_FIRST_MONTH         = SY-DATUM
            DISPLAY                      = ''
       IMPORTING
            SELECT_DATE                  = L_DATE
       EXCEPTIONS
            CALENDAR_BUFFER_NOT_LOADABLE = 1
            DATE_AFTER_RANGE             = 2
            DATE_BEFORE_RANGE            = 3
            DATE_INVALID                 = 4
            FACTORY_CALENDAR_NOT_FOUND   = 5
            HOLIDAY_CALENDAR_NOT_FOUND   = 6
            PARAMETER_CONFLICT           = 7
            OTHERS                       = 8.
  CALL FUNCTION 'G_PERIOD_GET'
    EXPORTING
      DATE                           = L_DATE
***使用WL variant得到的period是周/年,空则是期间/年.
***在CO-PA或做计划时,通常是以周做period的.
      VARIANT                        = P_VARIANT  "'WL'
    IMPORTING
      PERIOD                         = L_PERIOD
      YEAR                           = L_YEAR
    EXCEPTIONS
      LEDGER_NOT_ASSIGNED_TO_COMPANY = 1
      PERIOD_NOT_DEFINED             = 2
      VARIANT_NOT_DEFINED            = 3
      OTHERS                         = 4.
  WEEKRAN-SIGN   = 'I'.
  WEEKRAN-OPTION = 'EQ'.
  CONCATENATE L_YEAR L_PERIOD+1(2) INTO WKRAN.
ENDFORM.


只看该作者    顶部
离线 everyday36
sitongyu



来自 苏州
精华贴数 0
个人空间 0
技术积分 1223 (1434)
社区积分 1512 (734)
注册日期 2008-8-30
论坛徽章:28
九尾狐狸嫦娥铁扇公主行业板块每日发贴之星行业板块每日发贴之星2008年新春纪念徽章
      

发表于 2008-9-1 16:15 
xuexi


__________________
體育菠菜|指數競猜|财神|徽章
edelivery.oracle.com
只看该作者    顶部
在线/呼叫 veyard
木头人



精华贴数 0
个人空间 0
技术积分 186 (10651)
社区积分 0 (810138)
注册日期 2006-3-22
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-9-1 21:24 
还有这玩意儿???见识了,学习学习


__________________
跟着oracle erp没完没了
只看该作者    顶部
离线 huak
皑皑白雪


精华贴数 3
个人空间 0
技术积分 10335 (116)
社区积分 8530 (184)
注册日期 2003-5-10
论坛徽章:73
奥运纪念徽章NBA2008季后赛纪念徽章NBA常规赛纪念章紫蜘蛛2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:游泳
2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:羽毛球生肖徽章2007版:兔2008年新春纪念徽章生肖徽章2007版:鸡 

发表于 2008-9-2 13:20 
ABAP???


__________________
I love my life !
Oracle Application 11i  Documention
心有多广,舞台就有多大!
世界上没有懒惰的人,只是他的目标不够吸引他。

“赌博”请到这里
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问