分类 SAP 下的文章

一般来说,标准的字段都可以用SE11来创建搜索帮助,但是有时候这里的满足不了需求或者,相同的数据元素需要用不同的搜索帮助类型,就需要用别的方式实现

1、用函数:F4IF_INT_TABLE_VALUE_REQUEST 来传递内表显示

    AT SELECTION-SCREEN ON VALUE-REQUEST FORs_kunnr2.PERFORMshow_f4.FORMshow_f4.TYPES: BEGIN OFt_kunnrhelp,
kunnr
TYPE kna1-kunnr,
name1
TYPE kna1-name1,
stras
TYPE kna1-stras,END OFt_kunnrhelp.DATA:wa_kunnrhelp TYPEt_kunnrhelp,
it_kunnrhelp
LIKE TABLE OFwa_kunnrhelp.SELECT kna1~kunnr kna1~name1 kna1~stras INTO CORRESPONDING FIELDS OF TABLEit_kunnrhelpFROM kna1 INNER JOIN knvv ON kna1~kunnr =knvv~kunnrWHERE knvv~vkorg = '1006' AND kna1~name1 LIKE '%湖南省%'.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTINGretfield= 'KUNNR'dynpprog= sy-cprog
dynpnr
= '1000'dynprofield= 'S_KUNNR2'value_org= 'S' TABLESvalue_tab=it_kunnrhelpEXCEPTIONSparameter_error= 1no_values_found= 2OTHERS= 3.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.CLEARit_kunnrhelp.FREE: it_kunnrhelp.ENDFORM.

原文链接:https://blog.csdn.net/wtxhai/article/details/90698683

1.2、SAP屏幕框架的创建
        SAP页面设计中的框架不但可以保证SAP程序外观设计的美观大方,并可以提供诸如按钮,页签等功能组件。
1.2.1、创建包含文本的基本框架
        基本框架的创建语法如下:
        SELECTION-SCREEN BEGIN OF BLOCK block [ WITH FRAME [ TITLE title ] ] [ NO INTERVALS ]. “限制所创建的框架只有一个输入项”
        SELEDTION-SCREEN END OF BLOCK block.

 

 

 

     1.2.2、实现屏幕元素质检的换行
    通过在框架结构中嵌入代码:SELECTION-SCREEN SKIP [ n ],能实现屏幕元素间的换行,n表示换行数目。

 

 

 

     1.2.3、在屏幕上输出直线
         通过语句SELECTION-SCREEN ULINE 1(79) [ / ][ pos ] ( len )可以实现在屏幕上画出一条直长度直线,其中[ / ]表示换行,[ pos ]表示直线起始的位置,( len )表示长度。

 

 

    1.2.4、在屏幕上输出自定义文本及图表
    SELECTION-SCREEN BEGION OF LINE.
   SELECTION-SCREEN COMMENT [ / ] [ pos ] ( len ) text. "len限制输入文本的长度
    SELECTION-SCREEN END OF LINE.

 

 

     1.2.5、在屏幕中实现按钮效果
     很多桌面程序的设计习惯通过按钮来实现与用户动作的交互。在SAP选择开发中也可以实现按钮功能。
     SELECTION-SCREEN PUSHBUTTON [ \ ] [ pos ] ( len ) button_text  "按钮的位置
                                                                                USER-COMMAND fcode      "为按钮分配事件功能代码
                                                                               [ VISIBLE LENGTH vlen ]      "输出长度
                                                                               [ MODIFY ID modid ]               "编辑组ID号码
    1.2.9、在屏幕上创建页签
      SAP允许直接通过ABAP代码在屏幕上创建一个页签。
      语法:SELECTION-SCREEN BEGIN OF TABBED BLOCK <block> FOR n LINES
      每个页签都是由一个单独的子屏幕控制,n代表分页控件的高度,屏幕载入时必须先通过INITIALIZATION事件对其初始化。

*&---------------------------------------------------------------------**& Report ZTEST_SELECTION_SCREEN*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------*
REPORTztest_selection_screen.TABLES: mara.SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.  "定义子屏幕100
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-001.SELECT-OPTIONS : mat1 FOR mara-matnr NO INTERVALS.SELECTION-SCREEN SKIP 1.PARAMETERS chk1 AS CHECKBOX DEFAULT 'X'.SELECTION-SCREEN END OF BLOCKa1.SELECTION-SCREEN END OF SCREEN 100.*定义子屏幕200
SELECTION-SCREEN BEGIN OF SCREEN 200AS SUBSCREEN.PARAMETERS : mat2 LIKE mara-matnr.SELECTION-SCREEN END OF SCREEN 200.*定义一个TAB空间,取名为MYTAB,空间高度为5,共分为两个页签,BUTTON1,BUTTON2.*两个也签的功能代码分别为PUSH1,PUSH2
SELECTION-SCREEN : BEGIN OF TABBED BLOCK mytab FOR 5 LINES,
TAB (
20) button1 USER-COMMANDpush1,
TAB (
20) button2 USER-COMMANDpush2,END OF BLOCKmytab.*为TAB控件分配初始化值,引用TEXT element定义为本 INITIALIZATION.
button1
= TEXT-010.
button2
= TEXT-020.
mytab
-prog = sy-repid.
mytab
-dynnr = 100.*为TAB控件页签单击事件,选择不同的页签显示不同的子屏幕 AT SELECTION-SCREEN.CASE sy-ucomm.
WHEN
'PUSH1'.
mytab
-dynnr = 100.
mytab
-activetab = 'BUTTON1'.
WHEN
'PUSH2'.
mytab
-dynnr = 200.
mytab
-activetab = 'BUTTON2'.ENDCASE.

原文链接:https://blog.csdn.net/wtxhai/article/details/90632686

        用户通过屏幕操作来实现与SAP的数据交互,而SAP的屏幕开发一般分为两种,一种是通过SAP ABAP语法创建屏幕元素,称之为选择屏幕,选择屏幕主要是用来输入查询参数;第二种是通过SAP的屏幕编辑器开发,通过屏幕编辑器可以实现数据多种展现模式。

1.1、屏幕基本输入域对象的创建及相关属性

         SAP中可以通过ABAP来创建屏幕元素,共分为两种模式,一种是通过SELECT-OPTIONS语法来建立数据输入域,另一种则是通过PARAMETERS语法来创建数据输入域。

1.1.1、屏幕元素创建的基本语法

          SELECT-OPTIONS与PARAMETERS的属性有很多相似之处,但是SELECT-OPTIONS创建的是一个输入的区间,其定义时必须制定参考表及参考字段,SELECT-OPTIONS<对象名>FOR<参考对象>。

PARAMETERS通常用于建立一个单一的屏幕输入对象,其参考对象相对比较灵活,可以参考数据表的字段,也可以参考具体的数据元素,PARAMETERS<对象名>LIKE/TYPE<参考对象>。

 

1.1.2、动态定义输入域的参考对象

        SAP允许动态定义屏幕输入域的对象,这样可以对一些需要动态变更屏幕元素的程序带来莫大的方便(例如SAP的表对象查询程序,则可以通过动态字段来变更查询输入条件)。动态对象的定义实际上是通过修改参考对象的地址来实现类型的变换,当参考对象的值与数据对象中的字段一致时,则会参考该数据字段类型建立屏幕对象,如下图所示:

 

 

1.1.3、屏幕输入域显示参数控制

        SELECT-OPTIONS和PARAMETERS的显示参数控制机制基本类似。

     1.OBLIGATORY必输项控制
        控制该屏幕元素是否为必输项,SELECT-OPTIONS一般只对下限值字段(LOW字段)有效。
     2.NO-DISPLAY显示控制
        程序运行后不显示该对象,SELECT-OPTIONS与PARAMETERS属性一致。
     3.VISIBLE LENGTH vlen显示长队控制
        控制对象的显示长度,其取值范围为1-18.
     4.NO-EXTENSION多行输入控制
        SELECT-OPTIONS和PARAMETERS所定义的对象都可以输入多行数值,加上该参数后,限制只能输入单一行,在屏幕对象后面的多行输入控制按钮将隐藏。
     5.NO-INTERVALS输入范围值控制
         该属性针对于SELECTION-OPTIONS所定义的对象是输入范围值,上限值到下限值,在内表中分别为“LOW”和“HIGH”两个字段,加上该参数后,在屏幕上只会显示上限值输入字段。
     6.MODIFY ID modid 编辑组控制
         该参数可以将定义的屏幕对象进行分组,以方便在程序运行中对分组的对象属性进行统一修改及控制,例如控制某组对象为不可输入,如下代码中将G2分钟的对象在屏幕输出时设置为不可输入。该属性 在SELECT-OPTIONS和PARAMETERS中的操作基本一致。

 

 

 

1.1.4、输入值的控制

        SAP提供数据输入控制参数来控制屏幕对象的输入值,包括如下。

     1.控制输入默认值
      ● DEFAULT vall [ TO val2 ] [ OPTION opt ] [ SIGN sgn]控制输入默认值范围
        该参数针对SELECT-OPTIONS所定义对象屏幕加载后所显示的默认值,其中vall [ TO val2 ]为输入值的上下限,OPTION代表数据关系,SIGN代表输入类型,具体如下表:

栏目名 参考值 描述
SIGN I或者E 输入类型,I表示包括,E表示排除
OPTION NB或者BT 表示前后输入栏关系,NB(不包括)、BT(包括)

 

         输入默认值范围也可以在程序加载时进行更改,代码如下:

 

 

    ● DEFAULT vall
        控制PARAMETERS所对应对象输入默认值范围:该参数定义对象在屏幕加载后所显示的默认值,输入默认值范围也可以在程序加载时进行更改。
    2. LOWER CASD允许输入小写字母
        SAP所有屏幕字段输入后都会将字母默认转换为大写,加上该参数允许输入小写字母。
    3. MATCHCODE OBJECT search help 屏幕对象F4帮助
        为屏幕对象加上指定的F4帮助,F4帮助功能会在数据字典章节做具体介绍,系统也提供了很多已经定义好的F4帮助对象,如下图所示。

 

 

    4. MEMORY ID pid 定义SELECT-OPTIONS内存参数
        可以将屏幕对象输入的值保存到制定的内存参数,通过GET PARAMETERS方法可以直接从内从读取该对象的值,如以下代码,将内存值取到制定字段并输出。

 

 

1.1.5屏幕对象的F1/F4输入帮助功能
    1. HELP-REQUEST [ FOR {LOW | HIGH} ]字段的F1帮助
         当选中SAP屏幕中的指定字段并按键盘上的F1时,可以调用自定义的程序或者系统帮助文件,该功能通常被称为F1帮助。F1帮助可以通过ABAP事件AT SELECTION-SCREEN来控制,在自定义程序中,可以通过调用系统标准函数HELP_OBJECT_SHOW(或者HELP_OBJECT_SHOW_FOR_FIELD)来实现。

 

 

     2.VALUE-REQUEST [ { LOW | HIGH } ] 字段的F4帮助
        当在指定的字段F4键时,可以调用自定义的程序或者系统帮助数据,该过程是通过但是F4事件来触发的,所以也可以通过ABAP语法事件控住语法AT SELECTION-SCREEN来调用。
        当该参数主要是在定义帮助数据时使用,在参照数据表建立的屏幕对象一般会取用默认帮助对象,与F1不同的是,F1是进行信息提示,而F4是显示填充值的列表,所以取得值将返回给所操作的屏幕对象,可以调用系统函数F4IF_FIELD_VALUE_REQUEST参照某一具体字段来维护F4帮助,如下所示:

 

 

     3.NO DATABASE SELECTION不选取逻辑数据库约束
        在调用逻辑数据库的程序中,往往会对用户输入的数据按权限来进行筛选,倘若在定义的对象后面加上NO DATABASE SELECTION参数,该对象所输入的对象则不会收到逻辑数据库的约束。
        目前ABAP中需要运用NO DATABASE SELECTION定义的逻辑数据库比较少,例如HR模块关联的PNP逻辑数据库中,其所有的帮助条件都采用Search Help的方式进行定义。而在引用逻辑数据库FIS开发的程序中,通过按F4键只能看到用户权限所限制的数据,以连接编号CONNID字段为例,通过按F4键只能看到用户被分配的CONNID的取值范围。在引用逻辑库的程序中,通过NO DATABASE SELECTION参数可以读取非限制条件的数据。逻辑数据库可以在ABAP编辑器的属性页面进行定义。执行逻辑数据库需要引用定义NODES或TABLES,使用NO DATABASE SELECTION定义如下:

 

 

    1.1.6、PARAMETERS屏幕元素的特性功能开发
                 PARAMETERS所创建的对象除了数据输入域外,还可以创建其他比较特殊的屏幕对象。
    1.定义复选框
       相关语法:PARAMETERS < 对象名 > AS CHECKBOX  [ USER-COMMAND fcode]
       在屏幕上产生一个复选框,当复选框对象被选中时,其值为“X”,否则为空。在所对应的对象后面加上命令[USER-COMMAND fcode ],可以定义该复选框的单击事件代码,在ABAP代码中,通过事件控制语句AT SELECTION-SCREEN和START-OF-SELECTION过程可以捕捉该单击事件。
        所操作的事务代码被保存在系统变量SY-UCOMM中,如下图:

 

 

     2.定义单选按钮
        相关语法:PARAMETERS < 对象名 > RADIOBUTTON GROUP group [ USER-COMMAND fcode ]
        在屏幕上产生一个单选按钮,当单选按钮被选中时,其值为“X”,否则为空。定义多个单选按钮,需要加上GROUP参数来定义分组,每组按钮数量不能小于两个。同一分组的单选按钮选择值之间会相互约束,每次只能有一个被选中。
        加上[ USER-COMMAND fcode ]可以定义该单选按钮的单价事件代码,ABAP中的AT SELECTION-SCREEN和START-OF-SELECTION过程中可以出发该事件,所操作的事件代码被保存到系统变量SY-UCOMM中。如下图:

 

 

       3.创建下拉列表

        相关语法:PARAMETERS < 对象名 > AS LISTBOX VISIBLE LENGTH vlen [ USER-COMMAND fcode ]

 

 

 

 


————————————————
版权声明:本文为CSDN博主「wtxhai」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wtxhai/article/details/90632686

原文链接:https://www.cnblogs.com/icycore/p/10493237.html

有的时候,需要知道近段时间SQLSERVER执行了什么语句,可以用下面的方法:

SELECT     TOP 1000 QS.creation_time, SUBSTRING(ST.text, (QS.statement_start_offset / 2) + 1,
                      ((CASE QS.statement_end_offset WHEN - 1 THEN DATALENGTH(st.text) ELSE QS.statement_end_offset END - QS.statement_start_offset) / 2) + 1)
                      AS statement_text, ST.text, QS.total_worker_time, QS.last_worker_time, QS.max_worker_time, QS.min_worker_time
FROM         sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE     QS.creation_time BETWEEN '2017-09-09 10:00:00' AND '2017-09-11 18:00:00' AND ST.text LIKE '%%'
ORDER BY QS.creation_time DESC