ABAP学习知识
2015-1-1
事务码:ST22 查看报错信息
2015-1-14
abap基本语法
语法特点
关键字不区分大小写
内表:可变长度的数据对象
OPEN SQL
代码
type-pools:slis 类型组用于需要用ABAP已经预定义好的类型组(结构) occurs l 结构体后面老式定义类表的方法
DATA:
gt_fieldcat type 类表参照类表生成类表
xx2 like line of xx1 参照参照XX1创建工作区XX2
gt_fieldcat type 结构参照结构生成工作区(结构)
statrt -of-selection
perform frm_get_data 调用方法
end statrt -of-selection
form frm_get_data.方法申明
form frm_1.//做什么作用
form frm_2.
endform.
into correspoding fields of table
s_buker
gt_ek[]表示类表
binary search;二分查找办法
sy-subrc=0 0:成功4:错误8:数据太多
2015-1-15
报表开发
自定义程序Y或者Z开始
Z_SD_RPT_0001 销售模块报表
corresesponding fields of 取出的数据自动匹配内表里面的属性赋值
if 内表is not null
MESSAGE '输入的条件错误' type 'E' E表示ERROR
leave list processing 自动退出到输入频幕
exit.
查询数据的时候加入条件
设置fieldscat 标
avl函数
i_callback_program =sy-repid 调用系统当前的执行程序
_PF_STATUS:工具栏
USER_command:工具栏按钮操作指令类似于事件
TOP:写入表头
html以HTML样式写入表头
IS_LAYOUT:布局
IT_FIELDCAT:刚刚定义的内表抬头显示字段的名称
IT_EXCL```:排除不需要用的表头
I_SAVE:布局
IT_EVENTS:时间
IS_PRINT:调用打印*
IT_ALV_GRAPHIS:图形资料,展示图形
TABLES
T_OUTTAB:需要展示的数据内表
频幕
ppo pAi 循环
2015-1-16
SE18:查看
se19:实现
SE24:查找BODY增强CL_1i3ui12uii
SMOD:SAP增强
增强:增加
程序所有现在无法满足的功能
四代增强
1、直接修改标准程序缺点:问题不可控,工作量相当大
2、SAP预留可写代码的包含文件标准程序调用优势:SAP提供预留接口,不会对其他模块造成影响,缺点:无法重用
3、bodi增强面向对象继承
4、面向对象全部自定义
ALV_SWITCH_···每次都要调用的BODI 不能实例化其他都能实例化
MCHB~MATNR
MAKT~MAKTX
MCHB~LGORT
MARA~MEINS
MCHB~CHARG
MCHB~ERSDA
MCHB~ERNAM
MCHB~CLABS
MCHB~CINSM
INTO CORRESPONDING FIELDS OF GT_STOCK
WHERE MCHB~WERKS IN S_WERKS
AND MCHB-MATNR IN S_MATNR
AND MAKT-MAKTX LIKE S_MAKTX.
2015-7-15
"设置MBLNR的帮助按钮
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MBLNR.
"权限对象检查
AUTHORITY-CHECK OBJECT 'M_MSEG_WWA'
ID 'WERKS' FIELD P_WERKS
ID 'ACTVT' FIELD '01'.
PERFORM FRM_HELP_MBLNR USING P_MBLNR.
2015-7-16
选择屏幕开发.
选择屏幕
分类:ABAP用户通过屏幕操作来实现与SAP数据的交互, 而SAP的屏幕开发一般分为两种:
第一种是通过SAP ABAP 语法创建屏幕元素, 称之为选择屏幕.
第二种是通过SAP的屏幕编辑器开发.
1. 屏幕元素创建的语法.
SELECT-OPTIONS: 对象名称FOR 参考对象.
PARAMETERS: 对象名TYPE/LIKE 参考对象.
例如:
TABLES: mara.
SELECT-OPTIONS: s_matnr for mara-matnr.
PARAMETERS: s_matnr like mara-matnr.
PARAMETERS: s_matnr type matnr.
SELECT-OPTIONS 在程序中生成一个含有四个组件的内表---选择表, 该表具体
如下:
DATA: BEGIN OF seltab OCCURS 0,
SING(1),
OPTION(2),
LOW LIKE f,
HIGH LIKE F,
ENND OF seltab.
SIGN 是标志位, 允许值为I 和E, 其意义为确定储存在字段OPTION 中的运算符是否需要取反, I 表示"包含", E 表示"排除", 等于在逻辑表达式中加一个NOT.
OPTION 包含选择运算符. 如果HIGH 字段为空, 则可以填充EQ(=), NE(<>), GT(>), GE(>=), LT(<), LE(<=), CP, NP. 其中CP 和NP 只有当在输入字段中使
用了通配符("*"或"+")时它们才有效.
如果HIGH 字段不为空, 则可以使用BT (位于) 和NB(不位于), 其功能相当于BETWEEN 和NOT BETWEEN.
选择表可以进行多行选择标准的设定.
基本规则是: 如果选择表为空, 则选择所有的数据; 如果选择表有多行, 则将所有的SIGN 为"I" 数据选出后, 再排除掉其中所有的满足标志为"E" 的数据行.
具体规则如下:
?如果选择表为空, 即用户未输入任何数据, 则条件 f IN seltab 恒为真.
?如果选择表中只包含SIGN 为I 的行"i1" ... , "in", 则相当于条件( i1 OR ... OR in ) 的组合.
?如果选择表中只包含SIGN 为 E 的行"e1" ... , "em", 则相当于条件( NOT e1 ) AND ... AND ( NOT em) 的组合.
?如果选择表中即包含SIGN 为I 的行"i1" ... , "in", 又包含SIGN 为 E 的行"e1" ..., "em" ,则相当于条件(i1 OR ... OR in ) AND ( NOT e1 )
AND ... AND ( NOT em) 的组合.
动态定义输入域的参考对象.
DATA: name TYPE string.
SELECT-OPTIONS: s_name for (name).
AT SELECTION-SCREEN OUTPUT.
name = 'MARA-MATNR'.
2. 屏幕输入域显示参数控制.
?OBLIGATORY 必输项控制.
?NO-DISPLAY 显示控制.
?VISIBLE LENGTH vlen 显示长度控制.
?NO-EXTENSION 多行输入控制. 限制SELECT-OPTIONS 多行输入.
?NO-INTERVALS. 输入范围控制.
?MODIFY ID modid 编辑组控制. 该参数可以将所定义的屏幕对象进行分组, 以方便在程序运行中对分组的对象属性进行统一修改及控制.
?VALUE CHECK 进行值检查. 如果参数字段参照数据字典中的类型定义, 可以使用该选项检查用户输入值是否符合该字段的约束表中的数据或者是否属于数
据字典中定义的值列表, 否则系统将给出错误消息.
?MEMORY ID pid.
?AS CHECKBOX. 创建复选框.
?RADIOBUTTON GROUP radi. 创建单选按钮组.
?PARAMETERS <对象名> AS LISTBOX VISIBLE LENGTH vlen. 创建下拉列表.
SELECT-OPTIONS: p1 FOR mara-matnr MODIF ID g1,
p2 FOR mara-matnr MODIF ID g1,
p3 FOR mara-matnr MODIF ID g2,
p4 FOR mara-matnr MODIF ID g2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF NOT screen-group1 IS INITIAL.
IF screen-group1 = 'G2'.
screen-input = 0.
screen-invisible = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
******************************************
下拉列表.
PARAMETER: p_lang(20) AS LISTBOX VISIBLE LENGTH 22.
AT SELECTION-SCREEN OUTPUT.
PERFORM setlist.
FORM setlist .
TYPE-POOLS vrm.
DATA values TYPE vrm_values WITH HEADER LINE.
values-key = 'CHINESE'.
values-text = '中国人'.
APPEND values.
values-key = 'AMERICAN'.
values-text = '美国人'.
APPEND values.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_LANG'
values = values[]
EXCEPTIONS
id_illegal_name = 1
OTHERS = 2.
ENDFORM.
3. 输入值的控制.
?控制输入默认值. SELECT-OPTIONS, Default val1 [TO val2] [OPTION opt] [SIGN sgn].
?DEFAULT val1. 控制PARAMETER 对象输入的默认值.
?LOWER CASE 容许输入小写字母. SAP 所有屏幕字段输入后都会将字母默认转换为大写, 加上该参数后允许输入小写字母.
?MATCHCODE OBJECT search_help. 为屏幕对象加上指定的F4 帮助.
?MEMORY ID pid 定义SELECT-OPTIONS 内存参数. 可以将屏幕对象输入的值保存到指定的内在参数中, 通过GET parameter 方法可以直接从内存读取该
对象的值.
DATA: s_date TYPE d.
SELECT-OPTIONS: d1 FOR sy-datum MEMORY ID m1 NO INTERVALS.
START-OF-SELECTION.
GET PARAMETER ID 'M1' FIELD s_date.
WRITE s_date.
4. 其它选择屏幕元素.
?SELECTION-SCREEN SKIP [n]. 产生空行.
?SELECTION-SCREEN ULINE [[/]jpos(len)]. 在选择屏幕中给一行或几行中的一部分加下划线. 其中"/" 用于换行控制.
?SELECTION-SCREEN COMMENT [/]pos(len) comm [ FOR FIELD f]. 如果使用FOR FIELD f. 则该注释分配给参数或选择标准f. 如果用户在该元素f的注