ABAP学习基本知识重点总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ABAP学习基本知识重点总结
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的注
释上请求帮助(F1), 则系统显示分配给字段f的帮助文本. SELECTION-SCREEN COMMENT /1(20) text-t01. ?组合选择屏幕元素. SELECTION-SCREEN BEGIN OF
LINE. ..........
SELECTION-SCREEN END OF LINE.
这些元素将出现在屏幕的同一行中.
SELECTION-SCREEN BEGIN OF BLOCK block [WITH FRAME [TITLE title]] [NO
INTERVALS]. .........
SELECTION-SCREEN END OF BLOCK block.
5. 屏幕对象的F1/F4输入帮助功能.
1). HELP-REQUEST [ FOR LOW|HIGH ]. 字段的F1 帮助功能.
当在SAP选择屏幕的字段中按下F1 键时, 可以调用自定义的程序或系统帮助文件. F1 帮助可以通过ABAP 事件AT SELECTION-SCREEN 来控制, 在自定义程序中, 可以通过调用系统标准函数HELP_OBJECT_SHOW 或HELP_OBJECT_SHOW_FOR_FIELD 来实现.
SELECT-OPTIONS: s_date FOR sy-datum.
AT SELECTION-SCREEN ON HELP-REQUEST FOR s_date-low.
PERFORM show_f1.
FORM show_f1 .
DATA: t_link LIKE STANDARD TABLE OF tline WITH HEADER LINE.
CALL FUNCTION 'HELP_OBJECT_SHOW'
EXPORTING
dokclass = 'DE'
doklangu = sy-langu
dokname = 'SYDATUM'
TABLES
links = t_link .
ENDFORM.
2). VALUE-REQUEST [ FOR LOW|HIGH ]. 字段的F4 键帮助.
在指定的字段按F4 键时, 可以调用自定义的程序或系统帮助数据. 也是通过AT SELECTION-SCREEN
来调用. 与F1 不同的是, F1 是进行信息提示, 而F4 是显
示填充值的列表. 可以调用F4IF_FIELD_VALUE_REQUEST 参照某一个具体表字段来维护F4 帮助.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_date-low.
PERFORM show_f4.
FORM show_f4 .
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'SYST' "参照表
fieldname = 'DATUM' "参照字段
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_DATE'. "解发事件的屏幕对象名称.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_file1.
PERFORM get_file_name USING s_file1 'O'.
FORM get_file_name USING p_path LIKE rlgrap-filename mode TYPE c.
DATA tmp_filename LIKE rlgrap-filename.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = 'D:\ '
mask = ',*.*,*.*.'
mode = mode
IMPORTING
filename = tmp_filename
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc = 0.
p_path = tmp_filename.
ENDIF.
ENDFORM.
6. 在屏幕上输出自定义文本及图标.
TYPE-POOLS: icon.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (12) mytext.
PARAMETER: name LIKE sy-uname.
SELECTION-SCREEN END OF LINE.
INITIALIZATION.
CONCATENATE icon_manager '输入人员编号' INTO mytext.
在文本元素中加入图标.
每个图标都由一个两位长度的代码进行标识, 在字符前面加上"@"符号表示对该图标进行引用. 可以通过数据字典查看TYPE Group: ICON, 通过ICON NAME 寻找
对应的ID 列. 或通过程序RSTXICON 来查看SAP中所有图标及代码的对应关系列表.
7. 在屏幕中实现按钮效果.
TYPE-POOLS: icon.
TABLES: sscrfields. " 引用屏幕字段属性
" 创建屏幕按钮对象
SELECTION-SCREEN: PUSHBUTTON 2(10) but1 USER-COMMAND cli1,
PUSHBUTTON 20(30) but2 USER-COMMAND cli2 VISIBLE LENGTH 10. INITIALIZATION.
CONCATENATE icon_message_information '按钮1' INTO but1.
CONCATENATE icon_message_information '按钮2' INTO but2.
AT SELECTION-SCREEN.
CASE sscrfields. " 捕捉按钮功能代码, 也可以用SY-UCOMM.
WHEN 'CLI1'.
MESSAGE '按钮1事件' TYPE 'I'.
WHEN 'CLI2'.
MESSAGE '按钮2事件' TYPE 'I'.
ENDCASE.
8. 子屏幕的创建.
子屏幕分为两种, 一种为Include Screen, 可以通过Report 端程序直接调用; 一种为SubScreen, 需要通过Screen Painter 所创建屏幕引用.
Include Screen 相关语法如下:
PARAMETERS: type as CHECKBOX.
CALL SELECTION-SCREEN 123 STARTING AT 10 10 ENDING AT 80 10.
SELECTION-SCREEN BEGIN OF SCREEN 123 as WINDOW TITLE text-t01.
PARAMETERS: matnr LIKE mara-matnr.
PARAMETERS: werks like marc-werks.
SELECTION-SCREEN END OF SCREEN 123.
9. 在工具栏上新增功能按钮.
按钮的定义保存在结构体SSCRFIELDS 中, n 为一个整数类型的序号, 例如当n 等于1时, 按钮的描述保存在字段SSCRFIELDS-FUNCTXT_01 中, 按钮的功能代码
将默认赋值为"FC01", 保存在字段SSCRFIELDS-UCOMM 中.
TABLES: sscrfields.
PARAMETERS: parm LIKE mara-matnr.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
INITIALIZATION.
MOVE 'BUTTON1' TO sscrfields-functxt_01.
MOVE 'BUTTON2' TO sscrfields-functxt_02.
AT SELECTION-SCREEN.
IF SSCRFIELDS-UCOMM = 'FC01'.
MESSAGE '按钮1事件' TYPE 'I'.
ELSEIF SSCRFIELDS-UCOMM = 'FC02'.
MESSAGE '按钮2事件' TYPE 'I'.
ENDIF.
10. 在屏幕上创建页签.
SELECTION-SCREEN BEGIN OF TABBED BLOCK FOR n lines.
每个页签都是由一个单独的子屏幕控制, n 代表分页控件的高度, 屏幕载入进必须先通过INITIALIZATION 事件对其属性初始化.
TABLES: mara.
" 定义子屏幕100
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS: mat1 FOR mara-matnr NO INTERVALS.
SELECTION-SCREEN SKIP 1.
PARAMETERS: chk1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK bk1.
SELECTION-SCREEN END OF SCREEN 100.
" 定义子屏幕200
SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
PARAMETERS: mat2 LIKE mara-matnr.
SELECTION-SCREEN END OF SCREEN 200.
" 定义一个TAB空间, 取名为MYTAB, 控件高为5, 共有两个页签.
" 两个页签的功能代码分别为PUSH1, PUSH2.
SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 5 LINES,
TAB (20) button1 USER-COMMAND push1,
TAB (20) button2 USER-COMMAND push2,
END OF BLOCK mytab.
" 为TAB控件分配初始化值.
INITIALIZATION.
button1 = text-010.
button2 = text-020.
mytab-prog = sy-repid.
mytab-dynnr = 100.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'PUSH1'.
mytab-dynnr = 100.
mytab-activetab = 'BUTTON1'.
WHEN 'PUSH2'.
mytab-dynnr = 200.
mytab-activetab = 'BUTTON2'.
ENDCASE.
屏幕元素属性的控制.
屏幕中所有的对象都有独立的属性, 在SAP程序执行中, 可以通过系统变量SCREEN来读取每个屏幕对象的具体属性, SCREEN是一个标准的结构体, 其常用属性及参
数如下:
NAME: 屏幕对象的名称.
INPUT: 设置屏幕输入域对象不否允许输入值( 0: 不可输入, 1: 可输入), 默认值为 1. ?INVISIBLE: 设置对象在输出到屏幕后时是否可见, ( 0: 可见, 1: 不可见).
PARAMETERS: mat1 like mara-matnr.
INITIALIZATION.
LOOP AT SCREEN.
IF screen-name = 'MAT1'.
screen-input = '0'.
screen-invisible = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
选择屏幕事件.
选择屏幕的处理也是通过事件驱动的, 这些事件是一些预定义的
ABAP代码块. 选择屏幕中不存在任何由程序员设定的流逻辑(普通屏幕的行为由流逻辑进行控制),
取而代之的是在程序中定义一系列相关的事件块, 由运行环境在处理选择屏幕的过程中触发. 选择屏
幕中各个事件在程序中出现的位置是任意的, 与其调用顺序无
关. 选择屏幕事件将出现在INITIALIZATION 事件和START-OF-SELECTION 事件中间; 对于使用CALL SELECTION-SCREEN 调用的自定义选择屏幕, 这些选择屏幕
将出现在当前处理块中.
所有的选择屏幕事件都使用AT SELECTION SCREEN 语句引导.
INITIALIZATION 事件.
该事件在屏幕未显示之前执行, 对程序设置值及屏幕元素进行初始化赋值.
TOP-OF-PAGE.
创建新的Write List 时触发.
TOP-OF-PAGE DURING LINE-SELECTION.
An event block is triggered for the corresponding events during the creation of details lists.
You have to use system fields like sy-lsind to distinguish between the individual details lists.
START-OF-SELECTION 事件.
该事件由程序单击执行按钮时触发.
END-OF-SELECTION 事件.
该事件应用于所有数据处理完成, 即START-OF-SELECTION相关事件执行完成,但输出屏幕还未显示之前.在实际开发中主要用于一些执行结果的检验等, 其输出数据
叠加于同一输出屏幕中.
AT SELECTION-SCREEN OUTPUT事件.
选择屏幕的PBO事件, 在每次选择屏幕被调用之前触发, 可以在其中进行选择屏幕输出之前的准备工作, 比如在程序中动态地对选择屏幕
元素的输出属性进行修改.
AT SELECTION-SCREEN 事件.
是选择屏幕的PAI事件, 在用户输入的所有数据都被传输到程序中之后被触发, 也是选择屏幕中最后被触发的事件. 在选择屏幕中, 用户回车, 选择某GUI按钮,功
能键或者菜单键之后, 如果系统检查无误, 将触发该事件.
AT SELECTION-SCREEN ON field 事件.
是针对选择屏幕中某字段输入的PAI事件, 当该字段值被传递给程序时被触发, 可以应用于该字段本身的正确性检查, 如果系统提示错误, 则可以在该字段中重新
输入, 此时其它字段元素呈灰色, 不接受输入.
AT SELECTION-SCREEN ON BLOCK block 事件.
是针对选择屏幕某元素区域输入的PAI事件, 当该区域内的所有字段的值被传递给程序时被触发, 可以应用于该区域元素整体的正确性检查.
AT SELECTION-SCREEN ON RADIOBUTTON GROUP rad1.
作为单选按钮, 必须整体进行输入检查, 不能单独使用ON field选项进行.
AT SELECTION-SCREEN ON seltab.
AT SELECTION-SCREEN ON END OF seltab.
这两个事件只有在使用多行选择对话框时才可能被触发, 其中ON seltab 用于用户逐行输入后的正确性检查, 而ON END OF seltab 用于整个选择表输入结束后
各行的检查.
AT SELECTION-SCREEN ON HELP-REQUEST FOR field.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR field.
选择屏幕中的POH和POV事件, 当光标位于某屏幕字段时, 用户按下F1和F4键, 将触发ON
HELP-REQUEST 和
ON VLAUE-REQUEST事件.
AT LINE-SELECTION.
在Write List 中双击某行触发.
屏幕事件的中止.
EXIT: 中止当前事件模块.
STOP: 强制中止所有事件.
REJECT: 应用于读取逻辑数据库的程序.
* 设置MBLNR的帮助按钮调用MB51来作为选择屏幕上的物料凭证的搜索帮助FORM FRM_HELP_MBLNR USING P_P_MBLNR.
CALL TRANSACTION 'MB51'.
GET PARAMETER ID 'MBN' FIELD P_MBLNR.
ENDFORM.
ABAP中使用for all entries in小结
ABAP开发中,使用for all entries in语句将不能使用join的聚集表(例如BSEG)或者需要使用select的内表与内表串联。
以BSEG为例:
select belnr hkont
from bsis
into corresponding fields of table itab1
where ....
if not itab1[] is initial.
select kunnr lifnr belnr
from bseg
into corresponding fields of table itab2
for all entries in itab1
where belnr = itab1-belnr and hkont = itab1-hkont and ....
endif.
由于BESG不能和BSIS做内联,所以先将BSIS要获取的内容放到内表itab1中,然后用for all entries in 来串联。
注意:
1、必须要判断for all entries in后面的内表是否为空,如果为空,
where条件中与内表中字段进行比较的结果全部为真,会导致取出非常多的数据,影响系统性能。
2、使用for all entries in,对于最后得出的结果集系统会自动删除重复行(即使用
了distinct)。
如果要保留重复行记录,要在SELECT语句中添加足够的key(有必要时,增加全部key),以保证结果集中所需重复项目不会被删除。
3、对于内表中作为条件替换用项目,不能使用LIKE,BETWEEN,IN比较操作符。
这些比较操作符都是不确定比较操作符(将选择条件设定在一个范围内),而for all entries in 语句的作用相当于将选择条件块全部并列开来,用OR连接,如果每个OR分支中又是不确定的范围,那么系统性能将大大降低。
4、使用该语句时,ORDER BY语句和HAVING语句将不能使用。
5、使用该语句时,除COUNT( * )以外的所有合计函数(MAX,MIN,AVG,SUM)都不能使用。
6、使用 for all entries in 虽然在某些方面很方便的,但很耗内存。
7、itab-field作为占位符被替换,所以定义内表itab时不要使用with header line,以免造成混淆。
2015-7-17
MOVE-CORRESPONDING struc1 TO struc2:将相应的结构1移动至结构2
内表ITAB1有A B C三个字段. 内表ITAB2有 B C两个字段. 那么MOVE-CORRESPONDING ITAB1 TO ITAB2.的效果和ITAB2-B = ITAB1-B. ITAB2-C = ITAB1-C. 相同了
2015-7-18
DATA: r1 TYPE REF TO c1.
属于ABAP面向对象编程,c1是一个类,r1定义了这个类的对象2015-7-27
转帖总结一下ABAP中的各种接口技术
/doc/915583455.html,/penley/archive
/2008/11/12/1332140.html
下面总结一下ABAP中的各种接口技术,因为学习时间不是很长,肯定还不全(还有增强、出口等),以后再补上。
针对具体的情况,选择不同的接口方法,或几种方法并行使用。
一、CPI-C
1、是基础,但不是很常用,比较底层
2、使用C语言简单举例
二、RFC
1、R3系统之间
(1)在调用系统上进行RFC目标系统的配置(TCODE:SM59)(2)在远程系统上创建允许远程访问的功能模块
(3)调用方法及举例(同步、异步、事务性)
2、R3与外部系统之间
(1)外部程序调用SAP功能(功能模块、BAPI)
(2)SAP调用外部程序
(3)互调举例:
A.C/C++
B.OCX、SAP.Functions
三、Connectors
(1)SAP Business Connector(SAP BC)
(2)SAP Marketplace Connector
(3).NET Connector、Java Connector、DCOM Connector、Lotus Connector (4)各种方法调用举例(包括可能的互调)
四、OLE
1、Excel作为OLE客户端
2、ABAP作为OLE2控制器
3、自定义OLE程序与SAP通讯举例
五、Desktop Office Integrated(DOI)
主要以项目中经常使用的Excle为例说明
六、WebService
1、R3中创建WebService的方法(举函数模块产生WebService 的方法)
(1)定义函数模块并选择函数组
(2)根据向导生成WebService
(3)使用TCODE “wsadmin”和“wsconfig”对服务进行管理和配置
(4)生成WSDL和测试WebService
3、外部系统使用R3的WebService(举例C#程序使用方法)
4、R3调用外部系统上的WebService(举例使用.NET WebService)
(1)根据WebService连接,使用se80,创建代理类(Proxy Object),并激活
(2)为代理类配置逻辑端口(TCODE:lpconfig)
(3)在程序中使用代理类完成WebService中方法的调用
七、FTP
配合数据迁移的方法(标准导入程序、定制BDC、LSMW、DXWB),可完成一些接口功能。
1、条件
(1)服务器和客户端程序(SAPFTPA和SAPFTP)
(2)服务器配置
(3)IIS或Serv-U建立FTP服务
2、操作方式
(1)连接到FTP服务器
(2)进行操作(执行FTP命令)
(3)断开与FTP服务器的连接
3、操作实例
(1)获取FTP服务器上的文件列表
(2)本地与FTP之间的文件交换
(3)应用服务器与FTP服务器之间的文件交换
八、外部数据库
1、连接外部数据库
(1)服务器端配置(DBCON)
(2)访问SQL Server数据库,必须要求R3系统安装在Windows系统上(因为需要一些DLL库支持)(3)访问外部Oracle 数据库
2、使用Native SQL进行数据库操作
九、ALE and EDI、IDoc接口
十、SAP Exchange Infrastructure(SAP XI)。