nangnangchuai / sap

0 stars 0 forks source link

屏幕中的select-options多选框和常用的组件 #16

Open nangnangchuai opened 5 years ago

nangnangchuai commented 5 years ago
REPORT  YY_LTT_SELECTSCREEN1.

DATA :gt_sflight   TYPE  TABLE OF sflight,   
           gs_sflight  TYPE   sflight.

 SELECT-OPTIONS: s_carrid  FOR gs_sflight-carrid. 

 SELECT * from sflight INTO  CORRESPONDING FIELDS OF TABLE gt_sflight  “列自动匹配放入
 WHERE  carrid IN s_carrid .                         "页面输入的参数会自动给s_carrid

   LOOP AT gt_sflight INTO  gs_sflight .
     write : / gs_sflight-carrid,gs_sflight-connid.
   ENDLOOP .

image

nangnangchuai commented 5 years ago

书中参考297页面

nangnangchuai commented 5 years ago

SELECT-OPTIONS: s_carrid FOR gs_sflight-carrid NO-EXTENSION NO INTERVALS.

SELECT-OPTIONS: s_carrid FOR gs_sflight-carrid DEFAULT 'A' TO 'Z'.

SELECT-OPTIONS: s_carrid FOR gs_sflight-carrid.

nangnangchuai commented 5 years ago

定义一个单选按钮 PARAMETERS : p_down TYPE c RADIOBUTTON GROUP ra1 DEFAULT 'X', "Read Server File 讲server中的文件读出来在屏幕显示 p_up TYPE c RADIOBUTTON GROUP ra1.

nangnangchuai commented 5 years ago

goto-->text element--->text selection可以修改页面的文字显示 image

nangnangchuai commented 5 years ago

给页面画一个框的代码 image

  SELECTION-SCREEN BEGIN OF  BLOCK BLOCK1 WITH FRAME TITLE TEXT-T01.
 PARAMETERS  :
  p_down                     TYPE c RADIOBUTTON GROUP ra1  DEFAULT 'X',    "设置是默认选中的状态
  p_up                         TYPE c RADIOBUTTON GROUP ra1.
   SELECTION-SCREEN END OF  BLOCK BLOCK1.

其中TEXT-T01需要双击--确定新建,输入如下的信息

image

nangnangchuai commented 5 years ago

男女设置在一行显示

 SELECTION-SCREEN  BEGIN OF LINE.

 SELECTION-SCREEN  END OF LINE.

image

 SELECTION-SCREEN BEGIN OF  BLOCK BLOCK2 WITH FRAME TITLE TEXT-T02.

 SELECTION-SCREEN  BEGIN OF LINE.
 PARAMETERS  :
  p1                  TYPE c RADIOBUTTON GROUP ra2  DEFAULT 'X' ,  

  p2                  TYPE c RADIOBUTTON GROUP ra2.

 SELECTION-SCREEN  END OF LINE.
 SELECTION-SCREEN END OF  BLOCK BLOCK2.

当设定 SELECTION-SCREEN BEGIN OF LINE.会将radiobutton设置的名称去掉

 SELECTION-SCREEN BEGIN OF  BLOCK BLOCK2 WITH FRAME TITLE TEXT-T02.

     SELECTION-SCREEN  BEGIN OF LINE.

  PARAMETERS  p1                     TYPE c RADIOBUTTON GROUP ra2  DEFAULT 'X' .
 SELECTION-SCREEN COMMENT (10) TEXT-T03 FOR FIELD p1.   ”设定为男.FOR FIELD实现标签和按钮的绑定

  PARAMETERS  p2                       TYPE c RADIOBUTTON GROUP ra2.
  SELECTION-SCREEN COMMENT (10) TEXT-T04 FOR FIELD p2 . "设定为女

    SELECTION-SCREEN  END OF LINE.
   SELECTION-SCREEN END OF  BLOCK BLOCK2.

界面效果修改为: image

nangnangchuai commented 5 years ago

设定按钮的位置 SELECTION-SCREEN POSITION 70. "从最左边屏幕栏距离70的位置开始输出


     SELECTION-SCREEN BEGIN OF  BLOCK BLOCK2 WITH FRAME TITLE TEXT-T02.

     SELECTION-SCREEN  BEGIN OF LINE.

  PARAMETERS  p1                     TYPE c RADIOBUTTON GROUP ra2  DEFAULT 'X' .
 SELECTION-SCREEN COMMENT (10) TEXT-T03 FOR FIELD p1.

 SELECTION-SCREEN POSITION 70.             "从最左边屏幕栏距离70的位置开始输出

  PARAMETERS  p2                       TYPE c RADIOBUTTON GROUP ra2.
  SELECTION-SCREEN COMMENT (10) TEXT-T04 FOR FIELD p1.

    SELECTION-SCREEN  END OF LINE.
   SELECTION-SCREEN END OF  BLOCK BLOCK2.

界面效果 image

nangnangchuai commented 5 years ago

PARAMETERS p_check AS CHECKBOX. "设置一个checkbox的按钮,默认长度是1

nangnangchuai commented 5 years ago

SELECTION-SCREEN SKIP 3. 空出3行

nangnangchuai commented 5 years ago

SELECTION-SCREEN ULINE. 画出一条横线

nangnangchuai commented 5 years ago

YY_LTT_SELECTSCREEN1

文件的名称

nangnangchuai commented 5 years ago

错误提示信息message

image REPORT YY_LTT_SELECTSCREEN1 MESSAGE-ID ZHQ NO STANDARD PAGE HEADING. ***中间省略

IF gt_sflight IS NOT INITIAL.

LOOP AT gt_sflight INTO gs_sflight . write : / gs_sflight-carrid,gs_sflight-connid. ENDLOOP . ELSE. MESSAGE S001 WITH '没有数据'.
ENDIF.


点击ZHQ--》选择新建----》

&1代表占位符,表示一个变量,当我们设置 MESSAGE S002 WITH '没有数据'. 其中_没有数据_就是参数就会赋值给&1. image

注意;E类型的报错,会四画面卡住,所以用下面的语句代替E类型错误 MESSAGE S002 DISPLAY LIKE 'E'.

nangnangchuai commented 5 years ago


nangnangchuai commented 5 years ago

checkbox (一)

一组组件的显示与隐藏

描述:当选中复选框之后,进行回车操作,下面的组件进行不显示。 当补选中复选框,进行回车操作,下面的组件显示出来。


PARAMETERS p_check AS CHECKBOX. "设置一个checkbox的按钮,默认长度是1
SELECTION-SCREEN BEGIN OF BLOCK BLOCK3 WITH FRAME TITLE TEXT-T06.
PARAMETERS p5 RADIOBUTTON GROUP GP1 MODIF ID DEF.
PARAMETERS p6 RADIOBUTTON GROUP GP1 MODIF ID DEF.
PARAMETERS p7 RADIOBUTTON GROUP GP1 MODIF ID DEF.
PARAMETERS p8 RADIOBUTTON GROUP GP1 MODIF ID DEF.

SELECTION-SCREEN END OF BLOCK BLOCK3.

AT SELECTION-SCREEN OUTPUT. "画面输出相关的操作。回车操作。

IF p_check = 'X'. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'DEF'. SCREEN-INVISIBLE = '1'. SCREEN-INPUT = '0'. MODIFY SCREEN. "屏幕使用之后一定要修改 ENDIF. ENDLOOP. ENDIF.



_使用的方法 MODIF ID XXX./ RADIOBUTTON GROUP 组件。
                   界面的显示操作写在PBO中。_

![图片](https://user-images.githubusercontent.com/42036227/63395972-1b5e9580-c3f8-11e9-8561-fc3131d732a5.png)
nangnangchuai commented 5 years ago

checkbox (二)

描述:想实现点击checkbox,不用点击回车的操作,就可以实现下面组件的显示与隐藏 方法:添加user command 后面的名称无所谓

PARAMETERS p_check AS CHECKBOX USER-COMMAND check. "设置一个checkbox的按钮,默认长度是1
SELECTION-SCREEN BEGIN OF BLOCK BLOCK3 WITH FRAME TITLE TEXT-T06.
PARAMETERS p5 RADIOBUTTON GROUP GP1 MODIF ID DEF.
PARAMETERS p6 RADIOBUTTON GROUP GP1 MODIF ID DEF.
PARAMETERS p7 RADIOBUTTON GROUP GP1 MODIF ID DEF.
PARAMETERS p8 RADIOBUTTON GROUP GP1 MODIF ID DEF.

SELECTION-SCREEN END OF  BLOCK BLOCK3.

AT SELECTION-SCREEN OUTPUT.

IF p_check = 'X'.
  LOOP AT SCREEN.
    IF SCREEN-GROUP1 = 'DEF'.
       SCREEN-INVISIBLE = '1'.
       SCREEN-INPUT = '0'.
       MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDIF.

可以参考的链接: https://blog.csdn.net/sapliumeng/article/details/18653159

nangnangchuai commented 5 years ago

AT SELECTION-SCREEN API常常写的方法.

AT SELECTION-SCREEN. PERFORM SELECTION_SCREEN_API.

ENDFORM. &--------------------------------------------------------------------- & Form SELECTION_SCREEN_API &---------------------------------------------------------------------*

nangnangchuai commented 5 years ago

双击事件 AT LINE-SELECTION. 描述:

双击哪一行,界面显示哪一行。 当双击Report List所输出的某行数据时,触发AT LINE-SELECTION事件。而HIDE定义使输出的内容和当前选择相关联,会自动获取该行内容,如下

DATA mytext(20).

START-OF-SELECTION. PERFORM write_and_hide.

AT LINE-SELECTION. "双击事件 CASE mytext. WHEN 'line1'. WRITE: '你选择了第一行'. WHEN 'line2'. WRITE: '你选择了第二行'. WHEN 'line3'. WRITE: '你选择了第三行'. WHEN OTHERS. WRITE: '你选择了第四行'. ENDCASE. CLEAR mytext. &--------------------------------------------------------------------- & Form WRITE_AND_HIDE &---------------------------------------------------------------------*

endform. " WRITE_AND_HIDE

图片

图片

YY_LTT_REPORTDEMO1

nangnangchuai commented 5 years ago

https://bbs.csdn.net/topics/260066544

nangnangchuai commented 5 years ago

https://www.cnblogs.com/foxting/archive/2012/07/10/2585174.html

nangnangchuai commented 5 years ago

设置输出的颜色。

图片

nangnangchuai commented 5 years ago

分页全部显示报表中的程序。 图片

REPORT  YY_LTT_REPORTDEMO1 NO STANDARD PAGE HEADING.
DATA :PAGE_LINE TYPE I VALUE 10,
      ICONTAB LIKE STANDARD TABLE OF V_ICON WITH HEADER LINE,   "声明内表的同时,同时声明同名的工作区
      Num TYPE I.

*----------------绘制一个表头----------------
 TOP-OF-PAGE.
     WRITE: /2 'Pages:',SYST-PAGNO RIGHT-JUSTIFIED.
     ULINE AT /1(80).
     WRITE: /1(1) SY-VLINE,'ID' COLOR 1,
             7(1) SY-VLINE ,'ICON' COLOR 1,
             15(1) SY-VLINE,'NAME' COLOR 1,
             41(1) SY-VLINE, 'SHORTTEXT' COLOR 1,
             80(1) SY-VLINE.
     ULINE AT /1(80).

START-OF-SELECTION. " 屏幕中开始去数据库取数

     SELECT * FROM ICON INNER JOIN ICONT ON ICON~ID = ICONT~ID INTO
        CORRESPONDING FIELDS OF TABLE ICONTAB WHERE ICONT~LANGU = SY-LANGU.

*------------------遍历一个内表中的内容放到工作区中,同名的内表和工作区可以省掉 into 工作区--------
LOOP AT ICONTAB.
       WRITE: /1(1) SY-VLINE,SY-TABIX LEFT-JUSTIFIED,
               7(1) SY-VLINE,ICONTAB-ID AS ICON LEFT-JUSTIFIED,
               "LEFT-JUSTIFIED:左对齐,RIGHT_JUSTIFIED:右对象,CENTERED:居中对齐。
               15(1) SY-VLINE,ICONTAB-NAME,
               41(1) SY-VLINE,ICONTAB-SHORTTEXT,
               80(1) SY-VLINE.
       ULINE /1(80).

       Num = SY-TABIX MOD PAGE_LINE.
       IF Num = 0.
         NEW-PAGE.  "新的一页
       ENDIF.

ENDLOOP.
nangnangchuai commented 5 years ago

使用到的文件: YY_LTT_REPORTDEMO1 YY_LTT_SELECTSCREEN1