abap基本语法汇总(汇编)
- 格式:docx
- 大小:138.24 KB
- 文档页数:73
SAP ABAP / 4 基础知识学习数据类型C :字符串D :日期型格式为YYYYMMDD 例:'1999/12/03'F : 浮点数长度为8I :整数N :数值组成的字符串如:011,'302'P : PACKED数用于小数点数值如:12.00542T : 时间格式为:HHMMSS 如:'14:03:00'X : 16进制数如:'1A03'*-------------------------------------------------------------------------------------* 变量声明DATA <F> [<Length>] <type> [<value>][decimals]<F> 变量名称<length><type> 变量类型及长度<value> 初值<decimals> 小数位数exp:DATA : COUNTER TYPE P DECIMALS 3.NAME(10) TYPE C VALUE 'DELTA'.S_DATE TYPE D VALUE '19991203'.exp:DATA : BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE DECIMALS 2,END OF PERSON.另外,有关DATA声明的指令还有: CONSTANTS(声明常数)、STATICS(临时变量声明). exp:CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.STATICS 关键字声明的变量仅在目前的程序中使用, 结束后会自动释放语法:STATICS <c> [<length>] <type> [<value>] [<decimals>]系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的栏位存放系统变量,常用的系统变量有: SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,'0'表示成功SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: 当前系统日期;SY-UZEIT: 当前系统时间;SY-TCODE: 当前执行程序的Transaction codeSY-INDEX: 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: CLIENT NUMBERSY-VLINE: 画竖线SY-ULINE: 画横线TYPE 关键字用来指定资料型态或声明自定资料型态Example:TYPES: BEGIN OF MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.LIKE 关键字跟TYPE关键字使用格式相同, 如DATA TRANSCODE LIKE SY-TCODE.不同的是LIKE 用在已有值的资料项, 如系统变量, 而TYPE关键字则是用在指定资料型态。
一些ABAP编程的知识点整理【设置SAP打印机SET_PRINT_PARAMETERS】根据画面输入的打印机名称,在打印窗口弹出后,把打印设备自动设置为打印机名称参数对应的打印设备*&---------------------------------------------------------------------**& Form FRM_SET_PRINT_PARAMETERS*&---------------------------------------------------------------------** 報嶞偺僷儔儊乕僞偺愝掕*----------------------------------------------------------------------*FORM. FRM_SET_PRINT_PARAMETERS.DATA: LC_PDEST TYPE PRI_PARAMS-PDEST,LSTR_TSP03L TYPE TSP03L.* 在TSP03L设备表中找到打印机名称画面参数P_PRTID对应的打印设备PADEST* SELECT SINGLE ** INTO LSTR_TSP03L* FROM TSP03L* WHERE LNAME = P_PRTID.* IF SY-SUBRC EQ 0.* LC_PDEST = LSTR_TSP03L-PADEST.* ENDIF.* 把取道的打印设备PADEST设置到打印窗口项目中CALL FUNCTION 'SET_PRINT_PARAMETERS'EXPORTINGDESTINATION = LC_PDESTIMMEDIATELY = CNS_X.ENDFORM. "FRM_SET_PRINT_PARAMETERS【把内表以CSV文件格式输出】* 通过文件保存对话框得到需要保存文件的全路径LC_FULLPATH CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG* EXPORTINGCHANGINGFILENAME = LC_FILENAMEPATH = LC_PATHFULLPATH = LC_FULLPATHEXCEPTIONSCNTL_ERROR = 1ERROR_NO_GUI = 2NOT_SUPPORTED_BY_GUI = 3others = 4.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.IF LC_FILENAME IS NOT INITIAL.* 这个function是关键所在,可以把一个内表的一行的所有字段用‘;’分割,然后整合成一个string放到目标内表中LITAB_CON_LIST3CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'EXPORTINGI_FIELD_SEPERATOR = CNS_COMMATABLESI_TAB_SAP_DATA = GITAB_LIST3CHANGINGI_TAB_CONVERTED_DATA = LITAB_CON_LIST3EXCEPTIONSCONVERSION_FAILED = 1OTHERS = 2.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.* 可在此目标内表的头部加上必要的headerCONCATENATE TEXT-009 "姩掕壢栚TEXT-010 "姩掕壢栚柤TEXT-011 "婡擻椞堟柤TEXT-012 "慜寧孞墇TEXT-013 "庁曽嬥妟TEXT-014 "戄曽嬥妟TEXT-015 "梻寧孞墇INTO LC_HEADERSEPARATED BY CNS_COMMA.INSERT LC_HEADER INTO LITAB_CON_LIST3 INDEX 1.* 拿到全路径之后,直接download就okCALL FUNCTION 'GUI_DOWNLOAD'EXPORTINGFILENAME = LC_FULLPATHTABLESDATA_TAB = LITAB_CON_LIST3.ENDFORM. " FRM_FILE_DOWNLOAD【如何动态指派数字字段名assign】比如有12个字段,HSL01,HSL02,HSL03,HSL04,HSL05一直到HSL12如果我在选择画面上指定要累加04~08之间的字段,那assign就可以派上用场了由于和指针的作用类同,所以下面就叫它指针1.定义指针FIELD-SYMBOLS TYPE FAGLFLEXT-HSL01.2.使用方法:定义另一个lc_p指针数据,通过do循环的sy-index 进行一条条遍历这里比较重要的是要严格控制好选择画面上low值和high值对lc_p指针的界限DO.IF S_MONAT-HIGH IS NOT INITIAL.LC_P = S_MONAT-LOW + SY-INDEX - 1.IF LC_P > S_MONAT-HIGH.EXIT.ENDIF.ELSE.LC_P = S_MONAT-LOW.IF SY-INDEX = 2.EXIT.ENDIF.ENDIF.WRITE LC_P TO LC_NUM.PERFORM. FRM_CONVERT_ALPHA_INPUT CHANGING LC_NUM.CONCATENATE LC_NAME LC_NUM INTO LC_FIELD.ASSIGN (LC_FIELD) TO .IF LSTR_DATA3-DRCRK = CNS_S.LC_SSUM = LC_SSUM + .IF LSTR_DATA3-DRCRK = CNS_H.= * ( -1 ) .LC_HSUM = LC_HSUM + .ENDIF.CLEAR LC_FIELD.ENDDO.【range table 的最新定义方法】跟旧版本的ECC的range定义方法不同,现在改用如下的定义方法:R_RACCT2 TYPE RANGE OF CHAR2,R_RACCT3 TYPE RANGE OF CHAR3,R_RACCT31 TYPE RANGE OF CHAR3,LSTR_RACCT2 LIKE LINE OF R_RACCT2,LSTR_RACCT3 LIKE LINE OF R_RACCT3,LSTR_RACCT31 LIKE LINE OF R_RACCT31.* 儗儞僕42乣49LSTR_RACCT2-SIGN = CNS_I.LSTR_RACCT2-OPTION = CNS_BT.LSTR_RACCT2-LOW = CNS_42.LSTR_RACCT2-HIGH = CNS_49.APPEND LSTR_RACCT2 TO R_RACCT2.* 儗儞僕000乣512LSTR_RACCT3-SIGN = CNS_I.LSTR_RACCT3-OPTION = CNS_BT.LSTR_RACCT3-LOW = CNS_000.LSTR_RACCT3-HIGH = CNS_512.APPEND LSTR_RACCT3 TO R_RACCT3.* 儗儞僕522乣999LSTR_RACCT31-SIGN = CNS_I.LSTR_RACCT31-OPTION = CNS_BT.LSTR_RACCT31-LOW = CNS_522.LSTR_RACCT31-HIGH = CNS_999.APPEND LSTR_RACCT31 TO R_RACCT31.【如何在标准一览画面上加上自己的系统按钮】可以在top-of-page或者start-of-selection事件中定义:SET PF-STATUS 'ZS01'.这里的'ZS01'是自己定义的,双击它进去后就别有洞天了,可以自己定义系统按钮已经各种快捷键如果要选择标准的一览出力画面,首先进入菜单:補足->テンプレート调整在弹出的窗口中选择“一览ステータス”基本的关于一览的系统按钮都有了然后自己添加需要的按钮,在GUI模块中,找一个空白的输入框中输入该按钮的parameter ID,这个ID是在程序中用到的。
一数据类型和对象在ABAP中,可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。
在程序中必须声明要使用的全部数据对象。
声明过程中,必须给数据对象分配属性,其中最重要的属性就是数据类型。
对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。
类型 P 数据允许在小数点后有数字。
有效大小可以是从 1 到 16 字节的任何值。
将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。
在小数点后最多允许 14 个数字。
1.3 确定数据对象的属性如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,可使用DESCRI BE 语句。
语法如下:DESCRI BE FIELD<f> [LENGTH <l>] [TYPE <t> [COMPON ENTS<n>]][OUTPUT-LENGTH <o>] [DECIMA LS <d>][EDIT MASK <m>].将由语句的参数指定的数据对象<f>的属性写入参数后的变量。
DESCRI1.3.1 确定字段长度要确定数据对象的长度,利用DESCRIBEFIELD语句使用 LENGTH参数,如下所示:DESCRI BE FIELD<f> LENGTH <l>.系统读取字段<f>的长度,并将值写入字段<l>。
1.3.2确定数据类型要确定字段的数据类型,利用DESCRIBEFIELD语句使用 TYPE 参数,如下所示:DESCRI BE FIELD<f> TYPE <t> [COMPON ENTS<n>].系统读取字段<f>的数据类型,然后将值写入字段<t>。
abap 语法手册ABAP语法手册ABAP(Advanced Business Application Programming)是一种用于SAP软件开发的编程语言。
这份手册将介绍ABAP语言的基本语法和常用用法,为开发人员提供一个参考指南。
1. 数据类型和变量声明:ABAP支持多种数据类型,例如整数(INT),浮点数(FLOAT),字符串(STRING)和日期(DATE)。
变量声明可以通过关键字DATA进行,例如:DATA: my_integer TYPE i.DATA: my_string TYPE string.2. 控制结构:ABAP支持常见的控制结构,如条件语句(IF...ELSE...ENDIF)和循环语句(DO...ENDDO,WHILE...ENDWHILE)。
例如:IF my_integer > 10.WRITE: 'The value is greater than 10'.ELSE.WRITE: 'The value is less than or equal to 10'.ENDIF.3. 函数和方法:ABAP允许定义函数和方法来实现特定的功能。
函数可以通过关键字FUNCTION和ENDFUNCTION来定义,而方法可以通过关键字METHOD和ENDMETHOD来定义。
例如:FUNCTION my_function.WRITE: 'Hello, world!'.ENDFUNCTION.4. 数据表和内表:ABAP中的数据表可以通过关键字DATA和TABLE来声明,内表可以通过关键字INTERNAL TABLE和TYPES来声明。
例如:DATA: my_table TYPE TABLE OF my_structure.DATA: my_internal_table TYPE TABLE OF my_structure.5. 数据访问:ABAP提供了方便的数据访问方法,例如通过SELECT语句从数据库中检索数据,或者通过READ TABLE语句从内表中检索数据。
ABAP基本语法目录1.表声明12.定义变量13.常用算术操作符:14.常用比较操作:15.赋值语句26.IF语句27.CASE语句28.DO语句29.WHILE语句210.从数据库中取数据集211.取出单行记录212.WRITE语句213.ULINE语句314.SKIP语句315.定义常量316.定义结构317.TYPES语句418.LIKE语句419.输入参数520.分块语句521.定义内表522.往内表中添加记录623.用LOOP读取内表数据624.用READ读取内表数据625.把数据库的记录读入内表626.CLEAR清空表头和表记录627.DELETE删除内表记录628.REFRESH删除内表记录629.FREE删除内表记录730.在内表中插入记录731.修改内表记录732.对内表进行排序733.内表的控制语句734.循环跳转语句735.常用系统变量836.子程序的定义837.子程序的调用838.子程序的参数传递839.常用事件840.跳出事件的方法9ABAP/4:Advanced Business Application Programming1.表声明Tables: 表名[,表名]. 声明多个表时可用逗号分隔当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。
2.定义变量Data: v1[(l)] [type t] [decimals d] [value 'xxx'].v1 是变量名。
(l) 是变量的长度。
t 是数据类型。
d 是小数位。
'xxx'是缺省值。
如:data num(10) type p decimals 3 value '1.12'.3.常用算术操作符:5.赋值语句total = 10.mess = 'this is a test!'.如果字符串中包括 ' 号,用 '' 进行付值,如:mess = 'this is a ''test''! '.6.IF语句if i = 2.write 'i 等于 2'.[else.write 'i 不等于 2'.]endif.7.CASE语句case i. 类似于VFP中的DO CASE语句when 1. write 'i = 1'.when 2. write 'i = 2'.[when others. write 'i <> 1 and i <> 2'.]endcase.8.DO语句do [n] times. 类似于VFP中的FOR语句[执行代码]enddo.9.WHILE语句while [条件]. 类似于VFP中的DO WHILE语句[执行语句]endwhile.10.从数据库中取数据集select * from 数据表 [where 条件].[操作语句]endselect.如:select * from t000 [where mandt < 200].write: / t000-mandt,t000-mtext.endselect.11.取出单行记录select single * from 数据表 [where 条件]. 注:仅取出符合条件的第一行记录select single 字段 from 数据表 into 变量 [where 条件].12.WRITE语句write: [/][定位][数据1][,[定位] [数据2]]……[/] 为插入一行空行,注意单独write一个[/]和在其它数据之前加 [/] 的效果是不一样的,单独的write[/]在插入空行后光标定位在空行的下面,在其它数据前加[/]在插入空行后光标定位于所插的空行。
一数据类型与对象在ABAP中,可以使用与标准数据声明相似得语法处理数据类型,而与数据对象无关。
在程序中必须声明要使用得全部数据对象。
声明过程中,必须给数据对象分配属性,其中最重要得属性就就是数据类型。
1、1 基本数据类型对算术运算得非整型结果(如分数)进行四舍五入,而不就是截断。
类型 P 数据允许在小数点后有数字。
有效大小可以就是从 1 到 16 字节得任何值。
将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字与符号。
在小数点后最多允许 14 个数字。
1、2 系统定义得数据对象1、3 确定数据对象得属性如果要查明数据对象得数据类型,或者要在程序得运行期间使用其属性,可使用DESCRIBE 语句。
语法如下:DESCRIBE FIELD <f> [LENGTH <l>] [TYPE <t> [COMPONENTS <n>]][OUTPUT-LENGTH <o>] [DECIMALS <d>][EDIT MASK <m>]、将由语句得参数指定得数据对象<f>得属性写入参数后得变量。
DESCRIBE FIELDS 语句具有下列参数:1、3、1 确定字段长度要确定数据对象得长度,利用DESCRIBE FIELD 语句使用 LENGTH 参数,如下所示:DESCRIBE FIELD <f> LENGTH <l>、系统读取字段<f>得长度,并将值写入字段<l>。
1、3、2确定数据类型要确定字段得数据类型,利用DESCRIBE FIELD 语句使用 TYPE 参数,如下所示:DESCRIBE FIELD <f> TYPE <t> [COMPONENTS <n>]、系统读取字段<f>得数据类型,然后将值写入字段<t>。
ABAP语句整理ADD:ADD v1 FROM v2 TO v3 GIVING v4ADD v1 THEN v2 UNTIL v3 GIVING mADD v1 THEN v2 UNTIL v3 TO mADD v1 THEN v2 UNTIL v3ADD v1 TO v2ADD-CORRESPONDING rec1 TO rec2APPEND:APPEND tablaAPPEND area1 TO tabla2APPEND INITIAL LINE TO tabla1APPEND tabla SORTED BY v3APPEND area1 TO tabla2 SORTED BY v3APPEND LINES OF tabla1 TO tabla 2APPEND LINES OF tabla1 FROM ix1 TO tabla2APPEND LINES OF tabla1 FROM ix1 TO ix2 TO tabla2ASSIGN:ASSIGN v1 TO DECIMALS dec TYPE tipoASSIGN f+off(len) TO DECIMALS dec TYPE tipoASSIGN (f) TO TYPE tipo DECIMALS decASSIGN +off(len) TO DECIMALS dec TYPE tipoASSIGN TABLE FIELD v1 TOASSIGN TABLE FIELD (f) TOASSIGN COMPONENT n OF STRUCTURE rec TO DECIMALS dec TYPE tipo ASSIGN COMPONENT name OF STRUCTURE rec TO DECIMALS dec TYPE tipo ASSIGN LOCAL COPY OF v1 TO ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TOASSIGN LOCAL COPY OF INITAL LINE tabla TO*--------------------------------------------------------------------------AT:AT END OF v1AT NEW v1AT FIRSTAT LASTAT fg WITH fg1AT LINE-SELECTIONAT USER-COMMANDAT PFxAT SELECTION-SCREENON ps1ON END OF s1ON VALUE-REQUEST FOR ps1ON HELP-REQUEST FOR ps1ON RADIOBUTTON GROUP radi1ON BLOCK blk1OUTPUT*-------------------------------------------------------------------------- AUTHORITY-CHECK:AUTHORITY-CHECK OBJECT object ID name1 FIELD f1*-------------------------------------------------------------------------- BACK:BACK*-------------------------------------------------------------------------- BREAK-POINT:BREAK-POINT lit1*-------------------------------------------------------------------------- CALL:CALL FUNCTION {AutoInsertFunctionCall}CALL FUNCTION fnc1EXPORTING p1 = v1IMPORTING p1 = v1TABLES p1 = tabla1CHANGING p1 = v1EXCEPTIONS exc1 = retc1CALL FUNCTION fnc1 STARTING NEW TASK tskname2 DESTINATION dest1DESTINATION IN GROUP grp1DESTINATION IN GROUP DEFAULT PERFORMING form1 ON END OF TASK EXPORTING p1 = v1TABLES p1 = tabla1EXCEPTIONS exc1 = retc2 MESSAGE msg2CALL FUNCTION fnc1 IN UPDATE TASK EXPORTING p1 = v1TABLES p1 = tabla1CALL FUNCTION fnc1 DESTINATION dest1 EXPORTING p1 = v1IMPORTING p1 = v1TABLES p1 = tabla1CHANGING p1 = v1EXCEPTIONS exc1 = retc2EXCEPTIONS exc1 = retc2 MESSAGE messCALL FUNCTION fnc1 IN BACKGROUND TASKAS SEPARATE UNITDESTINATION desti1EXPORTING p1 = v1TABLES p1 = tabla1CALL CUSTOMER-FUNCTION fnc1 EXPORTING p1 = v2 IMPORTING p1 = v2TABLES p1 = tabla1 CHANGING p1 = v2 EXCEPTIONS exc2 = retc1CALL SCREEN scr1STARTING AT x1 y1ENDING AT x2 y2CALL TRANSACTION tran1AND SKIP FIRST SCREEN USING tabla1MODE m1UPDATE upd1MESSAGES INTO msg1CALL DIALOG dlog1USING tablaMODE mode1AND SKIP FIRST SCREEN EXPORTING v1 FROM v2 IMPORTING v1 TO v2CALL METHOD met1 ( EXPORTING p1 = v1 IMPORTING p1 = v1 CHANGING p1 = v1 )CALL METHOD met1 EXPORTING p1 = v1 IMPORTING p1 = v1 CHANGING p1 = v1 RECEIVING p1 = v1EXCEPTIONS ex = idxCALL cfunc1ID id1 FIELD v1 ... ID id1 FIELD v2*-------------------------------------------------------------------------- CASE:CASE v1WHEN bed1stm1WHEN bed2stm2WHEN bedxWHEN OTHERSstm3ENDCASE*-------------------------------------------------------------------------- CHECK:CHECK SELECT-OPTIONSCHECK logexp1CHECK s1*-------------------------------------------------------------------------- CLEAR:CLEAR v1WITH lit1WITH NULLCLOSE:CLOSE CURSOR curs1CLOSE DATASET dsn1COLLECT:COLLECT tabla1COLLECT wrk1 INTO tabla2*-------------------------------------------------------------------------- COMMIT:COMMIT WORKAND WAIT*-------------------------------------------------------------------------- COMMUNICATION:COMMUNICATION INIT DESTINATION desti1 ID ident1 COMMUNICATION ALLOCATE ID iden1COMMUNICATION ACCEPT ID ident1COMMUNICATION SEND ID ident 1 BUFFER b1COMMUNICATION RECEIVE ID ident1BUFFER b1DATAINFO datn1STATUSINFO stat1COMMUNICATION DEALLOCATE ID ident1*-------------------------------------------------------------------------- CONCATENATE:CONCATENATE v1 v2 ... vx INTO f2SEPARATED BY f3*-------------------------------------------------------------------------- COMPUTE:COMPUTE v1 = arithexp*-------------------------------------------------------------------------- CONDENSE:CONDENSE r1NO-GAPSCONDENSE v1*-------------------------------------------------------------------------- CONSTANTS:CONSTANTS con1 ... VALUE valu1CONSTANTS con1 ... VALUE IS INITIALCONSTANTS con1(len2) ... VALUE valu1CONSTANTS con1(len2) ... VALUE IS INITIALCONSTANTS: BEGIN OF conr1,CONSTANTS: END OF conr1*--------------------------------------------------------------------------CONTINUE:CONTINUECONTROLS:CONTROLS contrl TYPE TABLEVIEW USING SCREEN*-------------------------------------------------------------------------- CONVERT:CONVERT DATE v1 INTO INVERTED-DATE v2CONVERT INVERTED-DATE v1 INTO DATE v2CONVERT TEXT text1 INTO SORTABLE CODE cod2*-------------------------------------------------------------------------- CREATE:CREATE OBJECT obj1 class2LANGUAGE lang1*--------------------------------------------------------------------------DATA:DATA: BEGIN OF tabla1INCLUDE STRUCTURE struc1DATA: END OF tabla1DATA: BEGIN OF COMMON PART cp1DATA: END OF COMMON PARTDATA: BEGIN OF tabla1 OCCURS n2VALID BETWEEN v1 AND v2DATA: END OF tabla1DATA: BEGIN OF rec1DATA: END OF rec1DATA: v1TYPE typ1LIKE v1TYPE typ1 OCCURS n2LIKE v1 OCCURS n2TYPE LINE OF ityp1LIKE LINE OF tabla1VALUE lit1DECIMALS n1WITH HEADER LINEDATA: v1(len1)TYPE tipoTYPE typ1 OCCURS n2TYPE LINE OF ityp1VALUE lit1DECIMALS n1WITH HEADER LINE*-------------------------------------------------------------------------- DEFINE:DEFINE name1stm1stm2END-OF-DEFINITION*-------------------------------------------------------------------------- DELETE:DELETE tabla1DELETE tabla1 INDEX ix2DELETE tabla1 FROM ix2 TO ix3DELETE tabla1 WHERE cond2FROM ix1TO ix2DELETE ADJACENT DUPLICATES FROM tabla1COMPARING v1 v2 ...COMPARING ALL FIELDSDELETE etab1DELETE *etab1DELETE FROM etab1 WHERE cond2CLIENT SPECIFIEDDELETE FROM (name_etab1) WHERE cond2CLIENT SPECIFIEDDELETE (name_etab1)FROM area1CLIENT SPECIFIEDDELETE etab FROM TABLE tabla2DELETE (name_etab1) FROM TABLE tablaCLIENT SPECIFIEDDELETE etab1 VERSION ver2DELETE *etab1 VERSION ver2DELETE DATASET name1DELETE FROM DATABASE etab1(ar) ID key2CLIENT v1DELETE REPORT name1DELETE TEXTPOOL name1 LANGUAGE lan2DELETE DYNPRO v1DELETE FROM SHARED BUFFER etab1(ar) ... ID*-------------------------------------------------------------------------- DESCRIBE:DESCRIBE DISTANCE BETWEEN v1 AND v2 INTO v2DESCRIBE FIELD v1DECIMALS n1EDIT MASK msk1LENGTH n1OUTPUT-LENGTH n1TYPE t1 COMPONENTS n2TYPE t1DESCRIBE LISTNUMBER OF LINES ln1INDEX ix1NUMBER OF PAGES n1INDEX ix1LINE lin PAGE pn1INDEX ix1DESCRIBE LIST PAGE pag1INDEX ix1LINE-SIZE col1LINE-COUNT lin1LINES lin1FIRST-LINE lin1TOP-LINES lin1TITLE-LINES lin1HEAD-LINES lin1END-LINES lin1DESCRIBE TABLE tabla1LINES n1OCCURS n1*-------------------------------------------------------------------------- DETAIL:DETAILDIVIDE:DIVIDE v1 BY v2DIVIDE-CORRESPONDING r1 BY r2*-------------------------------------------------------------------------- DO:DODO v1 TIMESDO n1 TIMESVARYING v1 FROM v2 NEXT v3DO n1 TIMESVARYING v1 FROM v2 NEXT v3ENDDODO 254 TIMES.MOVE '#' TO SY-ULINE+SY-INDEX(1).ENDDO*-------------------------------------------------------------------------- EDITOR-CALL:EDITOR-CALL FOR tablaTITLE textDISPLAY-MODEEDITOR-CALL FOR REPORT nameDISPLAY-MODE*-------------------------------------------------------------------------- ELSE:ELSEELSEIF logop1*-------------------------------------------------------------------------- END:END-OF-DEFINITIONEND-OF-PAGEEND-OF-SELECTIONENDATENDCASEENDDOENDEXECENDFORMENDFUNCTIONENDIFENDLOOPENDMODULEENDONENDPROVIDEENDSELECTENDWHILEEXEC SQL:EXEC SQLPERFORMING formENDEXEC*-------------------------------------------------------------------------- EXIT:EXITEXIT FROM SQLEXIT FROM STEP-LOOP*-------------------------------------------------------------------------- EXPORT:EXPORT objn1 ... objn2 TO MEMORYFROM v1 ...ID key1EXPORT objn1 ... objn2 TO DATABASE etab3(ar4) ID key5FROM v1CLIENT c1USING form_nameEXPORT obj1 ... objn2 TO DATASET dsn3(ar4) ID key5EXPORT obj1 ... objn2 TO SHARED BUFFER etab3(ar4) ID key5 FROM v1 ...CLIENT c1EXPORT DYNPRO head1 fields2 order3 match4 ID id4 EXPORT NAMETAB h f ID idEXTRACT:EXTRACT r1FETCH:FETCH NEXT CURSOR c1 INTO work2FIELD-GROUPS:FIELD-GROUPS: fgr1, fgr2 ...FIELD-SYMBOLS:FIELD-SYMBOLSSTRUCTURE stru1 DEFAULT work2TYPE typ1TYPE LINE OF typ1LIKE s1LIKE LINE OF s1FIELDS:FIELDS v1FORM:FORM pp1USING p2 p3 ...ENDFORM.FORM form_name1USING p1 p2 ...USING VALUE(p1) VALUE(p2) ... CHANGING p1 p2 ... CHANGING VALUE(p1) VALUE(p2) ... TABLES tabla1 tabla2 ... STRUCTURE name1FORMAT:FORMATCOLOR n1INTENSIFIEDINVERSEHOTSPOTINPUTRESETFREE:FREE v1FREE MEMORYID key1FREE OBJECT objname1FREE tabla1FROM:FROM etab1CLIENT SPECIFIEDBYPASSING BUFFERUP TO n ROWSFROM (etab_name1) FUNCTION:FUNCTION name1 ENDFUNCTIONFUNCTION-POOLMESSAGE-ID id1GENERATE:GENERATE REPORT progMESSAGE v1INCLUDE v1LINE v1WORD v1OFFSET v1TRACE-FILE v1DIRECTORY ENTRY v1WITHOUT SELECTION-SCREENGENERATE SUBROUTINE POOL tabla1 NAME name2 MESSAGE v1INCLUDE v2LINE v3WORD v4OFFSET v5TRACE-FILE v6GENERATE DYNPRO head1 fields2 order3 match4 ID id4 OFFSET v1TRACE-FILE v1GET:GET etab1LATEFIELDS v1 ...GET CURSOR FIELD fOFFSET v1LINE v1VALUE v1LENGTH v1GET CURSOR LINE linOFFSET v1VALUE v1LENGTH v1GET TIMEGET RUN TIMEGET RUN TIME FIELD v1GET PARAMETER ID key1 FIELD v1 GET PROPERTY OF name1 attrib2 = v3 NO FLUSHGROUP-BY:GROUP BY v1 v2 ...GROUP BY (tabla1)HIDE:HIDE lin_v1IF:IF v1 EQ v2stm1ELSEstm2ENDIFIF v1 EQ v2IF v1 LT v2IF v1 GT v2IF v1 IS INITIALIF v1 IS REQUESTEDIF v1 logexp1IF v1 logexp2IF exp1 AND exp2 ...IF exp1 OR exp2 ...IF exp1 NOT exp2 ...IF v1 CA v2IF v1 NA v2IF v1 CO v2IF v1 CN v2IF v1 CP v2IF v1 NP v2IF v1 CS v2IF v1 NS v2IF v1 MIF v1 OIF v1 ZIMPORT:IMPORT v1 tabla2 ... FROM DATABASE etab3(ar4) ID key5TO v6 ...MAJOR-ID maj1 ...MAJOR-ID maj1 MINOR-ID min2CLIENT hUSING form_name1IMPORT DIRECTORY INTO tabla1 FROM DATABASE etab2(ar3) ID key4 CLIENT cl1IMPORT v1 tabla2 ... FROM LOGFILE ID key3TO v4IMPORT DYNPRO head1 tabla2 logik3 matchc4 ID id5IMPORT v1 tabla2 ... FROM MEMORYTO v3 ...ID keyIMPORT v1 tabla2 ... FROM SHARED BUFFER etab3(ar4) ID key5TO v6CLIENT cl6INCLUDE:INCLUDE STRUCTURE rec1 INCLUDE TYPE typename1 INCLUDE pname1 INFOTYPES:INFOTYPES: n1NAME v1OCCURS n1MODE m1VALID FROM begdt1 TO enddt2 INITIALIZATION: INITIALIZATIONINPUTINSERT etab1CLIENT SPECIFIEDINSERT etab1 FROM work2 INSERT etab1 FROM TABLE tabla1 ACCEPTING DUPLICATE KEYS INSERT INTO etab1CLIENT SPECIFIEDVALUES wb2INSERT (etab)CLIENT SPECIFIEDINSERT (etab) FROM work2 INSERT (etab) FROM TABLE tabla1 ACCEPTING DUPLICATE KEYS INSERT INTO (etab1)CLIENT SPECIFIEDVALUES wb2INSERT tabla1INSERT tabla1 INDEX ix2INSERT work1 INTO tabla2INSERT work1 INTO tabla2 INDEX ix3INSERT INITIAL LINE INTO tabla2INSERT LINES OF tabla1 INTO tabla2INSERT LINES OF tabla1 FROM ix1 INTO tabla2INSERT LINES OF tabla1 FROM ix1 TO ix2 INTO tabla2INSERT LINES OF tabla1 FROM ix1 TO ix2 INTO tabla2 INDEX ix3 INSERT REPORT name FROM tablaINSERT TEXTPOOL name FROM tabla LANGUAGE l1INSERT Field groupsINSERT v1 v2 ... INTO fgroup3INTO:INTO area1INTO CORRESPONDING FIELDS OF area1INTO (v1, v2, ...)INTO TABLE tabla1PACKAGE SIZE n1INTO CORRESPONDING FIELDS OF TABLE tabla1PACKAGE SIZE n1APPENDING TABLE tabla1PACKAGE SIZE n1APPENDING CORRESPONDING FIELDS OF TABLE tabla1PACKAGE SIZE n1LEAVELEAVE PROGRAMLEAVE TO TRANSACTION tac1AND SKIP FIRST SCREENLEAVE TO SCREEN dynp1LEAVE SCREENLEAVE TO LIST-PROCESSINGAND RETURN TO SCREEN dynp1LEAVE LIST-PROCESSINGLOAD:LOAD REPORT pnam1 PART 'HEAD' INTO tabla2 LOAD REPORT pnam1 PART 'TRIG' INTO tabla2LOAD REPORT pnam1 PART 'CONT' INTO tabla2 LOAD REPORT pnam1 PART 'DATA' INTO tabla2LOAD REPORT pnam1 PART 'DDNM' INTO tabla2 LOAD REPORT pnam1 PART 'DATV' INTO tabla2 LOAD REPORT pnam1 PART 'SELC' INTO tabla2LOAD REPORT pnam1 PART 'STOR' INTO tabla2 LOAD REPORT pnam1 PART 'LITL' INTO tabla2LOAD REPORT pnam1 PART 'SYMB' INTO tabla2 LOAD REPORT pnam1 PART 'LREF' INTO tabla2LOAD REPORT pnam1 PART 'SSCR' INTO tabla2LOAD REPORT pnam1 PART 'BASE' INTO tabla2LOAD REPORT pnam1 PART 'INIT' INTO tabla2LOAD REPORT pnam1 PART 'DATP' INTO tabla2LOAD REPORT pnam1 PART 'TXID' INTO tabla2LOAD REPORT pnam1 PART 'COMP' INTO tabla2LOCAL:LOCAL v1LOOP:LOOP AT tabla1WRITE: /1 tabla1-f1ENDLOOPLOOP AT tablaFROM n1TO n2WHERE logexp1TRANSPORTING NO FIELDSLOOP AT tabla INTO waFROM n1TO n2WHERE logexp1TRANSPORTING NO FIELDSLOOP AT SCREENMESSAGE:MESSAGE msgnr1WITH v1 v2 ...RAISING exc1MESSAGE ID id1 TYPE mtyp2 NUMBER mnr3 WITH v1 v2 ...MODIFY:MODIFY etabMODIFY *etabMODIFY (etab_name1)FROM area1CLIENT SPECIFIEDMODIFY etab1 FROM TABLEMODIFY etab1 FROM TABLE tabla2 MODIFY (etab-name1) FROM TABLE tabla2 CLIENT SPECIFIEDMODIFY tabla1INDEX ix3TRANSPORTING v4 v5 ...WHERE logexp6MODIFY tabla1 FROM wk2MODIFY LINE n1INDEX ix1LINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY LINE n1 OF CURRENT PAGELINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY LINE n1 OF PAGE m2LINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY CURRENT LINELINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY SCREENMODULE:MODULE mname1stm1ENDMODULEMODULE mname1OUTPUTINPUTMOVE:MOVE v1 TO v2MOVE v1+off1(len1) TO v2+off2(len2) MOVE v1 TO v2 PERCENTAGE v3RIGHTLEFTRIGHTMOVE-CORRESPONDING rec1 TO rec2 MULTIPLY:MULTIPLY v1 BY v2MULTIPLY-CORRESPONDING r1 BY r2 NEW-LINE:NEW-LINENO-SCROLLINGSCROLLINGNEW-PAGE:NEW-PAGE PRINT ONARCHIVE MODE armodeARCHIVE PARAMETERS arparams ARCHIVE PARAMETERS arparams COPIES n1COVER TEXT litDATASET EXPIRATION days DEPARTMENT name1 DESTINATION dest1 IMMEDIATELY flagKEEP IN SPOOL flagLAYOUT layer1LINE-COUNT l1LINE-SIZE c1LIST AUTHORITY auth1LIST DATASET dsnameLIST NAME nameNEW LIST IDENTIFICATION flag NEW-SECTIONNEW-SECTIONNO DIALOGNO DIALOG PARAMETERS para1 RECEIVER r1SAP COVER PAGE m1 NEW-PAGELINE-COUNT lin1 LINE-SIZE c1NO-HEADINGNO-TITLEWITH-HEADING WITH-TITLEPRINT ON ...PRINT OFFON:ON CHANGE OF v1 stm1ENDONON CHANGE OF v1 OR v1 ...OPEN DATASET: OPEN DATASET name1 AT POSITION pos1 FILTER bsFOR APPENDING FOR INPUTFOR OUTPUTIN BINARY MODEIN TEXT MODE MESSAGE msg1TYPE t1OPEN CURSOR:OPEN CURSOR c1 FOR SELECT WITH HOLDORDER-BY:ORDER BY PRIMARY KEY ORDER BY v1 v2 ...ORDER BY (tabla) OVERLAY:OVERLAY v1 WITH v2ONLY v3PACK:PACK v1 TO v2 PARAMETERS: PARAMETERS p1AS CHECKBOXDEFAULT valueFOR TABLE etab1LIKE v1LOWER CASE MATCHCODE OBJECT objname1 MEMORY ID mid1MODIF ID key1NO-DISPLAY OBLIGATORYTYPE typ1DECIMALS n1 RADIOBUTTON GROUP radbut1 FOR TABLE etab1AS MATCHCODE STRUCTUREVALUE-REQUESTHELP-REQUESTPERFORM:PERFORM form IN PROGRAM prog CHANGING p1 p2 p3 ...IF FOUNDTABLES tabla1 tabla2 ...。
ADD:ADD v1 FROM v2 TO v3 GIVING v4ADD v1 THEN v2 UNTIL v3 GIVING mADD v1 THEN v2 UNTIL v3 TO mADD v1 THEN v2 UNTIL v3ADD v1 TO v2ADD-CORRESPONDING rec1 TO rec2APPEND:APPEND tablaAPPEND area1 TO tabla2APPEND INITIAL LINE TO tabla1APPEND tabla SORTED BY v3APPEND area1 TO tabla2 SORTED BY v3APPEND LINES OF tabla1 TO tabla 2APPEND LINES OF tabla1 FROM ix1 TO tabla2APPEND LINES OF tabla1 FROM ix1 TO ix2 TO tabla2ASSIGN:ASSIGN v1 TO <fs1> DECIMALS dec TYPE tipoASSIGN f+off(len) TO <fs> DECIMALS dec TYPE tipoASSIGN (f) TO <fs> TYPE tipo DECIMALS decASSIGN <fs1>+off(len) TO <fs2> DECIMALS dec TYPE tipoASSIGN TABLE FIELD v1 TO <fs>ASSIGN TABLE FIELD (f) TO <fs>ASSIGN COMPONENT n OF STRUCTURE rec TO <fs> DECIMALS dec TYPE tipo ASSIGN COMPONENT name OF STRUCTURE rec TO <fs> DECIMALS dec TYPE tipo ASSIGN LOCAL COPY OF v1 TO <f>ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TO <f>ASSIGN LOCAL COPY OF INITAL LINE tabla TO <f>*--------------------------------------------------------------------------AT:AT END OF v1AT NEW v1AT FIRSTAT LASTAT fg WITH fg1AT LINE-SELECTIONAT USER-COMMANDAT PFxAT SELECTION-SCREENON ps1ON END OF s1ON VALUE-REQUEST FOR ps1ON HELP-REQUEST FOR ps1ON RADIOBUTTON GROUP radi1ON BLOCK blk1OUTPUT*-------------------------------------------------------------------------- AUTHORITY-CHECK:AUTHORITY-CHECK OBJECT object ID name1 FIELD f1*-------------------------------------------------------------------------- BACK:BACK*-------------------------------------------------------------------------- BREAK-POINT:BREAK-POINT lit1*-------------------------------------------------------------------------- CALL:CALL FUNCTION {AutoInsertFunctionCall}CALL FUNCTION fnc1EXPORTING p1 = v1IMPORTING p1 = v1TABLES p1 = tabla1CHANGING p1 = v1EXCEPTIONS exc1 = retc1CALL FUNCTION fnc1 STARTING NEW TASK tskname2DESTINATION dest1DESTINATION IN GROUP grp1DESTINATION IN GROUP DEFAULTPERFORMING form1 ON END OF TASKEXPORTING p1 = v1TABLES p1 = tabla1EXCEPTIONS exc1 = retc2 MESSAGE msg2CALL FUNCTION fnc1 IN UPDATE TASKEXPORTING p1 = v1TABLES p1 = tabla1CALL FUNCTION fnc1 DESTINATION dest1EXPORTING p1 = v1IMPORTING p1 = v1TABLES p1 = tabla1CHANGING p1 = v1EXCEPTIONS exc1 = retc2EXCEPTIONS exc1 = retc2 MESSAGE messCALL FUNCTION fnc1 IN BACKGROUND TASKAS SEPARATE UNITDESTINATION desti1EXPORTING p1 = v1TABLES p1 = tabla1CALL CUSTOMER-FUNCTION fnc1EXPORTING p1 = v2IMPORTING p1 = v2TABLES p1 = tabla1CHANGING p1 = v2EXCEPTIONS exc2 = retc1CALL SCREEN scr1STARTING AT x1 y1ENDING AT x2 y2CALL TRANSACTION tran1AND SKIP FIRST SCREENUSING tabla1MODE m1UPDATE upd1MESSAGES INTO msg1CALL DIALOG dlog1USING tablaMODE mode1AND SKIP FIRST SCREENEXPORTING v1 FROM v2IMPORTING v1 TO v2CALL METHOD met1 (EXPORTING p1 = v1IMPORTING p1 = v1CHANGING p1 = v1 )CALL METHOD met1EXPORTING p1 = v1IMPORTING p1 = v1CHANGING p1 = v1RECEIVING p1 = v1EXCEPTIONS ex = idxCALL cfunc1ID id1 FIELD v1 ... ID id1 FIELD v2*-------------------------------------------------------------------------- CASE:CASE v1WHEN bed1stm1WHEN bed2stm2WHEN bedxWHEN OTHERSstm3ENDCASE*-------------------------------------------------------------------------- CHECK:CHECK SELECT-OPTIONSCHECK logexp1CHECK s1*-------------------------------------------------------------------------- CLEAR:CLEAR v1WITH lit1WITH NULLCLOSE:CLOSE CURSOR curs1CLOSE DATASET dsn1COLLECT:COLLECT tabla1COLLECT wrk1 INTO tabla2*-------------------------------------------------------------------------- COMMIT:COMMIT WORKAND WAIT*-------------------------------------------------------------------------- COMMUNICATION:COMMUNICATION INIT DESTINATION desti1 ID ident1 COMMUNICATION ALLOCATE ID iden1COMMUNICATION ACCEPT ID ident1COMMUNICATION SEND ID ident 1 BUFFER b1COMMUNICATION RECEIVE ID ident1BUFFER b1DATAINFO datn1STATUSINFO stat1COMMUNICATION DEALLOCATE ID ident1*-------------------------------------------------------------------------- CONCATENATE:CONCATENATE v1 v2 ... vx INTO f2SEPARATED BY f3*-------------------------------------------------------------------------- COMPUTE:COMPUTE v1 = arithexp*-------------------------------------------------------------------------- CONDENSE:CONDENSE r1NO-GAPSCONDENSE v1*-------------------------------------------------------------------------- CONSTANTS:CONSTANTS con1 ... VALUE valu1CONSTANTS con1 ... VALUE IS INITIALCONSTANTS con1(len2) ... VALUE valu1CONSTANTS con1(len2) ... VALUE IS INITIALCONSTANTS: BEGIN OF conr1,CONSTANTS: END OF conr1*--------------------------------------------------------------------------CONTINUE:CONTINUECONTROLS:CONTROLS contrl TYPE TABLEVIEW USING SCREEN*-------------------------------------------------------------------------- CONVERT:CONVERT DATE v1 INTO INVERTED-DATE v2CONVERT INVERTED-DATE v1 INTO DATE v2CONVERT TEXT text1 INTO SORTABLE CODE cod2*-------------------------------------------------------------------------- CREATE:CREATE OBJECT obj1 class2LANGUAGE lang1*--------------------------------------------------------------------------DATA:DATA: BEGIN OF tabla1INCLUDE STRUCTURE struc1DATA: END OF tabla1DATA: BEGIN OF COMMON PART cp1DATA: END OF COMMON PARTDATA: BEGIN OF tabla1 OCCURS n2VALID BETWEEN v1 AND v2DATA: END OF tabla1DATA: BEGIN OF rec1DATA: END OF rec1DATA: v1TYPE typ1LIKE v1TYPE typ1 OCCURS n2LIKE v1 OCCURS n2TYPE LINE OF ityp1LIKE LINE OF tabla1VALUE lit1DECIMALS n1WITH HEADER LINEDATA: v1(len1)TYPE tipoTYPE typ1 OCCURS n2TYPE LINE OF ityp1VALUE lit1DECIMALS n1WITH HEADER LINE*-------------------------------------------------------------------------- DEFINE:DEFINE name1stm1stm2END-OF-DEFINITION*-------------------------------------------------------------------------- DELETE:DELETE tabla1DELETE tabla1 INDEX ix2DELETE tabla1 FROM ix2 TO ix3DELETE tabla1 WHERE cond2FROM ix1TO ix2DELETE ADJACENT DUPLICATES FROM tabla1COMPARING v1 v2 ...COMPARING ALL FIELDSDELETE etab1DELETE *etab1DELETE FROM etab1 WHERE cond2CLIENT SPECIFIEDDELETE FROM (name_etab1) WHERE cond2CLIENT SPECIFIEDDELETE (name_etab1)FROM area1CLIENT SPECIFIEDDELETE etab FROM TABLE tabla2DELETE (name_etab1) FROM TABLE tablaCLIENT SPECIFIEDDELETE etab1 VERSION ver2DELETE *etab1 VERSION ver2DELETE DATASET name1DELETE FROM DATABASE etab1(ar) ID key2CLIENT v1DELETE REPORT name1DELETE TEXTPOOL name1 LANGUAGE lan2DELETE DYNPRO v1DELETE FROM SHARED BUFFER etab1(ar) ... ID*-------------------------------------------------------------------------- DESCRIBE:DESCRIBE DISTANCE BETWEEN v1 AND v2 INTO v2DESCRIBE FIELD v1DECIMALS n1EDIT MASK msk1LENGTH n1OUTPUT-LENGTH n1TYPE t1 COMPONENTS n2TYPE t1DESCRIBE LISTNUMBER OF LINES ln1INDEX ix1NUMBER OF PAGES n1INDEX ix1LINE lin PAGE pn1INDEX ix1DESCRIBE LIST PAGE pag1INDEX ix1LINE-SIZE col1LINE-COUNT lin1LINES lin1FIRST-LINE lin1TOP-LINES lin1TITLE-LINES lin1HEAD-LINES lin1END-LINES lin1DESCRIBE TABLE tabla1LINES n1OCCURS n1*-------------------------------------------------------------------------- DETAIL:DETAILDIVIDE:DIVIDE v1 BY v2DIVIDE-CORRESPONDING r1 BY r2*-------------------------------------------------------------------------- DO:DODO v1 TIMESDO n1 TIMESVARYING v1 FROM v2 NEXT v3DO n1 TIMESVARYING v1 FROM v2 NEXT v3ENDDODO 254 TIMES.MOVE '#' TO SY-ULINE+SY-INDEX(1).ENDDO*-------------------------------------------------------------------------- EDITOR-CALL:EDITOR-CALL FOR tablaTITLE textDISPLAY-MODEEDITOR-CALL FOR REPORT nameDISPLAY-MODE*-------------------------------------------------------------------------- ELSE:ELSEELSEIF logop1*-------------------------------------------------------------------------- END:END-OF-DEFINITIONEND-OF-PAGEEND-OF-SELECTIONENDATENDCASEENDDOENDEXECENDFORMENDFUNCTIONENDIFENDLOOPENDMODULEENDONENDPROVIDEENDSELECTENDWHILEEXEC SQL:EXEC SQLPERFORMING formENDEXEC*-------------------------------------------------------------------------- EXIT:EXITEXIT FROM SQLEXIT FROM STEP-LOOP*-------------------------------------------------------------------------- EXPORT:EXPORT objn1 ... objn2 TO MEMORYFROM v1 ...ID key1EXPORT objn1 ... objn2 TO DATABASE etab3(ar4) ID key5FROM v1CLIENT c1USING form_nameEXPORT obj1 ... objn2 TO DATASET dsn3(ar4) ID key5EXPORT obj1 ... objn2 TO SHARED BUFFER etab3(ar4) ID key5 FROM v1 ...CLIENT c1EXPORT DYNPRO head1 fields2 order3 match4 ID id4 EXPORT NAMETAB h f ID idEXTRACT:EXTRACT r1FETCH:FETCH NEXT CURSOR c1 INTO work2FIELD-GROUPS:FIELD-GROUPS: fgr1, fgr2 ...FIELD-SYMBOLS:FIELD-SYMBOLS <fs1>STRUCTURE stru1 DEFAULT work2TYPE typ1TYPE LINE OF typ1LIKE s1LIKE LINE OF s1FIELDS:FIELDS v1FORM:FORM pp1USING p2 p3 ...ENDFORM.FORM form_name1USING p1 p2 ...USING VALUE(p1) VALUE(p2) ...CHANGING p1 p2 ...CHANGING VALUE(p1) VALUE(p2) ...TABLES tabla1 tabla2 ...STRUCTURE name1FORMAT:FORMATCOLOR n1INTENSIFIEDINVERSEHOTSPOTINPUTRESETFREE:FREE v1FREE MEMORYID key1FREE OBJECT objname1FREE tabla1FROM:FROM etab1CLIENT SPECIFIEDBYPASSING BUFFERUP TO n ROWSFROM (etab_name1)FUNCTION:FUNCTION name1ENDFUNCTIONFUNCTION-POOLMESSAGE-ID id1GENERATE:GENERATE REPORT progMESSAGE v1INCLUDE v1LINE v1WORD v1OFFSET v1TRACE-FILE v1DIRECTORY ENTRY v1WITHOUT SELECTION-SCREENGENERATE SUBROUTINE POOL tabla1 NAME name2MESSAGE v1INCLUDE v2LINE v3WORD v4OFFSET v5TRACE-FILE v6GENERATE DYNPRO head1 fields2 order3 match4 ID id4OFFSET v1TRACE-FILE v1GET:GET etab1LATEFIELDS v1 ...GET CURSOR FIELD fOFFSET v1LINE v1VALUE v1LENGTH v1GET CURSOR LINE linOFFSET v1VALUE v1LENGTH v1GET TIMEGET RUN TIMEGET RUN TIME FIELD v1GET PARAMETER ID key1 FIELD v1GET PROPERTY OF name1 attrib2 = v3NO FLUSHGROUP-BY:GROUP BY v1 v2 ...GROUP BY (tabla1)HIDE:HIDE lin_v1IF:IF v1 EQ v2stm1ELSEstm2ENDIFIF v1 EQ v2IF v1 LT v2IF v1 GT v2IF v1 IS INITIALIF v1 IS REQUESTEDIF v1 logexp1IF v1 logexp2IF exp1 AND exp2 ...IF exp1 OR exp2 ...IF exp1 NOT exp2 ...IF v1 CA v2IF v1 NA v2IF v1 CO v2IF v1 CN v2IF v1 CP v2IF v1 NP v2IF v1 CS v2IF v1 NS v2IF v1 MIF v1 OIF v1 ZIMPORT:IMPORT v1 tabla2 ... FROM DATABASE etab3(ar4) ID key5TO v6 ...MAJOR-ID maj1 ...MAJOR-ID maj1 MINOR-ID min2CLIENT hUSING form_name1IMPORT DIRECTORY INTO tabla1 FROM DATABASE etab2(ar3) ID key4 CLIENT cl1IMPORT v1 tabla2 ... FROM LOGFILE ID key3TO v4IMPORT DYNPRO head1 tabla2 logik3 matchc4 ID id5IMPORT v1 tabla2 ... FROM MEMORYTO v3 ...ID keyIMPORT v1 tabla2 ... FROM SHARED BUFFER etab3(ar4) ID key5TO v6CLIENT cl6INCLUDE:INCLUDE STRUCTURE rec1INCLUDE TYPE typename1INCLUDE pname1INFOTYPES:INFOTYPES: n1NAME v1OCCURS n1MODE m1VALID FROM begdt1 TO enddt2INITIALIZATION:INITIALIZATIONINPUTINSERT etab1CLIENT SPECIFIEDINSERT etab1 FROM work2INSERT etab1 FROM TABLE tabla1ACCEPTING DUPLICATE KEYSINSERT INTO etab1CLIENT SPECIFIEDVALUES wb2INSERT (etab)CLIENT SPECIFIEDINSERT (etab) FROM work2INSERT (etab) FROM TABLE tabla1ACCEPTING DUPLICATE KEYSINSERT INTO (etab1)CLIENT SPECIFIEDVALUES wb2INSERT tabla1INSERT tabla1 INDEX ix2INSERT work1 INTO tabla2INSERT work1 INTO tabla2 INDEX ix3INSERT INITIAL LINE INTO tabla2INSERT LINES OF tabla1 INTO tabla2INSERT LINES OF tabla1 FROM ix1 INTO tabla2INSERT LINES OF tabla1 FROM ix1 TO ix2 INTO tabla2INSERT LINES OF tabla1 FROM ix1 TO ix2 INTO tabla2 INDEX ix3 INSERT REPORT name FROM tablaINSERT TEXTPOOL name FROM tabla LANGUAGE l1INSERT Field groupsINSERT v1 v2 ... INTO fgroup3INTO:INTO area1INTO CORRESPONDING FIELDS OF area1INTO (v1, v2, ...)INTO TABLE tabla1PACKAGE SIZE n1INTO CORRESPONDING FIELDS OF TABLE tabla1PACKAGE SIZE n1APPENDING TABLE tabla1PACKAGE SIZE n1APPENDING CORRESPONDING FIELDS OF TABLE tabla1PACKAGE SIZE n1LEAVELEAVE PROGRAMLEAVE TO TRANSACTION tac1AND SKIP FIRST SCREENLEAVE TO SCREEN dynp1LEAVE SCREENLEAVE TO LIST-PROCESSINGAND RETURN TO SCREEN dynp1LEAVE LIST-PROCESSINGLOAD:LOAD REPORT pnam1 PART 'HEAD' INTO tabla2 LOAD REPORT pnam1 PART 'TRIG' INTO tabla2LOAD REPORT pnam1 PART 'CONT' INTO tabla2 LOAD REPORT pnam1 PART 'DATA' INTO tabla2LOAD REPORT pnam1 PART 'DDNM' INTO tabla2 LOAD REPORT pnam1 PART 'DATV' INTO tabla2 LOAD REPORT pnam1 PART 'SELC' INTO tabla2LOAD REPORT pnam1 PART 'STOR' INTO tabla2 LOAD REPORT pnam1 PART 'LITL' INTO tabla2LOAD REPORT pnam1 PART 'SYMB' INTO tabla2 LOAD REPORT pnam1 PART 'LREF' INTO tabla2LOAD REPORT pnam1 PART 'SSCR' INTO tabla2LOAD REPORT pnam1 PART 'BASE' INTO tabla2LOAD REPORT pnam1 PART 'INIT' INTO tabla2LOAD REPORT pnam1 PART 'DATP' INTO tabla2LOAD REPORT pnam1 PART 'TXID' INTO tabla2LOAD REPORT pnam1 PART 'COMP' INTO tabla2LOCAL:LOCAL v1LOOP:LOOP AT tabla1WRITE: /1 tabla1-f1ENDLOOPLOOP AT tablaFROM n1TO n2WHERE logexp1TRANSPORTING NO FIELDSLOOP AT tabla INTO waFROM n1TO n2WHERE logexp1TRANSPORTING NO FIELDSLOOP AT SCREENMESSAGE:MESSAGE msgnr1WITH v1 v2 ...RAISING exc1MESSAGE ID id1 TYPE mtyp2 NUMBER mnr3WITH v1 v2 ...MODIFY:MODIFY etabMODIFY *etabMODIFY (etab_name1)FROM area1CLIENT SPECIFIEDMODIFY etab1 FROM TABLEMODIFY etab1 FROM TABLE tabla2MODIFY (etab-name1) FROM TABLE tabla2CLIENT SPECIFIEDMODIFY tabla1INDEX ix3TRANSPORTING v4 v5 ...WHERE logexp6MODIFY tabla1 FROM wk2MODIFY LINE n1INDEX ix1LINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY LINE n1 OF CURRENT PAGELINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY LINE n1 OF PAGE m2LINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY CURRENT LINELINE FORMAT lfmt1 lfmt2 ...FIELD VALUEFIELD FORMATMODIFY SCREENMODULE:MODULE mname1stm1ENDMODULEMODULE mname1OUTPUTINPUTMOVE:MOVE v1 TO v2MOVE v1+off1(len1) TO v2+off2(len2) MOVE v1 TO v2 PERCENTAGE v3RIGHTLEFTRIGHTMOVE-CORRESPONDING rec1 TO rec2MULTIPLY:MULTIPLY v1 BY v2MULTIPLY-CORRESPONDING r1 BY r2NEW-LINE:NEW-LINENO-SCROLLINGSCROLLINGNEW-PAGE:NEW-PAGE PRINT ONARCHIVE MODE armodeARCHIVE PARAMETERS arparamsARCHIVE PARAMETERS arparamsCOPIES n1COVER TEXT litDATASET EXPIRATION daysDEPARTMENT name1DESTINATION dest1IMMEDIATELY flagKEEP IN SPOOL flagLAYOUT layer1LINE-COUNT l1LINE-SIZE c1LIST AUTHORITY auth1LIST DATASET dsnameLIST NAME nameNEW LIST IDENTIFICATION flagNEW-SECTIONNEW-SECTIONNO DIALOGNO DIALOGPARAMETERS para1RECEIVER r1SAP COVER PAGE m1NEW-PAGELINE-COUNT lin1LINE-SIZE c1NO-HEADINGNO-TITLEWITH-HEADINGWITH-TITLEPRINT ON ...PRINT OFFON:ON CHANGE OF v1stm1ENDONON CHANGE OF v1OR v1 ...OPEN DATASET:OPEN DATASET name1AT POSITION pos1FILTER bsFOR APPENDINGFOR INPUTFOR OUTPUTIN BINARY MODEIN TEXT MODEMESSAGE msg1TYPE t1OPEN CURSOR:OPEN CURSOR c1 FOR SELECTWITH HOLDORDER-BY:ORDER BY PRIMARY KEYORDER BY v1 v2 ...ORDER BY (tabla)OVERLAY:OVERLAY v1 WITH v2ONLY v3PACK:PACK v1 TO v2PARAMETERS:PARAMETERS p1AS CHECKBOXDEFAULT valueFOR TABLE etab1LIKE v1LOWER CASEMATCHCODE OBJECT objname1MEMORY ID mid1MODIF ID key1NO-DISPLAYOBLIGATORYTYPE typ1DECIMALS n1RADIOBUTTON GROUP radbut1FOR TABLE etab1AS MATCHCODE STRUCTUREVALUE-REQUESTHELP-REQUESTPERFORM:PERFORM form IN PROGRAM progCHANGING p1 p2 p3 ...IF FOUNDTABLES tabla1 tabla2 ...USING p1 p2 p3 ...PERFORM form1(prog2)CHANGING p1 p2 p3 ...IF FOUNDTABLES tabla1 tabla2 ...USING p1 p2 p3 ...PERFORM form1USING p1 p2 p3 ...CHANGING p1 p2 p3 ...TABLES tabla1 tabla2 ...PERFORM n OF form1 form2 form3 ...PERFORM n ON COMMITLEVEL v1POSITION:POSITION colPRINT-CONTROL:PRINT-CONTROLCPI cpi1LPI lpi1SIZE size1COLORBLACKREDBLUEGREENYELLOWPINKLEFT MARGIN col1FONT font1FUNCTION v1LINE linPOSITION colPRINT-CONTROL INDEX-LINE fPROGRAM:PROGRAMPROVIDE:PROVIDE v1 v2 FROM itab3v4 v5 FROM itab6BETWEEN v7 AND v8ENDPROVIDEPUT:PUT etab1RAISE:RAISE expt1RANGES:RANGES sel FOR fOCCURS occ*-------------------------------------------------------------------------- READ:READ LINE l1FIELD VALUE v1 INTO v2INDEX ixREAD LINE lin OF CURRENT PAGEREAD LINE lin OF PAGE pagREAD CURRENT LINEREAD TABLE etab. " (-> old)READ TABLE tabla1BINARY SEARCHCOMPARING ALL FIELDSCOMPARING v1 v2 ...INDEX ix1TRANSPORTING NO FIELDSTRANSPORTING v1 v2 ...WITH KEY keyWITH KEY key BINARY SEARCHWITH KEYWITH KEY = value1READ TABLE tabla INTO area1BINARY SEARCHCOMPARING ALL FIELDSCOMPARING v1 v2 ...INDEX ix1TRANSPORTING NO FIELDSTRANSPORTING v1 v2 ...WITH KEY keyWITH KEY key BINARY SEARCHWITH KEYWITH KEY = value1READ REPORT prog INTO tabla1READ TEXTPOOL prog INTO tabla LANGUAGE l1READ DATASET dsnname1 INTO wk2LENGTH lenRECEIVE:RECEIVE RESULTS FROM FUNCTION funcIMPORTINGTABLESEXCEPTIONSREFRESH:REFRESH tabla1 FROM SELECT-OPTIONSREFRESH tabla1 FROM TABLE etab2 "-> oldREFRESH tabla1REFRESH CONTROL ctrl FROM SCREEN dynpr2REJECT:REJECT etab1REPLACE:REPLACE v1 WITH v2 INTO v3LENGTH len1*-------------------------------------------------------------------------- REPORT:REPORT repname1NO STANDARD PAGE HEADINGLINE-SIZE colLINE-COUNT lin(n)MESSAGE-ID xxDEFINING DATABASE ldb*-------------------------------------------------------------------------- RESERVE:RESERVE n LINES*-------------------------------------------------------------------------- ROLLBACK:ROLLBACK WORK*-------------------------------------------------------------------------- SCAN:SCAN ABAP-SOURCE tabla1 ... TOKENS INTO tabla2 ...FROM v1TO v1KEYWORDS FROM tabla1LEVELS INTO tabla1OVERFLOW INTO tabla1WITH ANALYSISWITH COMMENTSWITH INCLUDESWITHOUT TRMACPROGRAM FROM v1INCLUDE INTO v1MESSAGE INTO v1WORD INTO v1LINE INTO v1OFFSET INTO v1*-------------------------------------------------------------------------- SCROLL:SCROLL LIST TO FIRST PAGEINDEX ix1LINE lin1SCROLL LIST TO LAST PAGEINDEX ix1LINE lin1SCROLL LIST TO PAGE pagINDEX ix1LINE lin1SCROLL LIST TO COLUMN colINDEX ix1LINE lin1SCROLL LIST FORWARDINDEX ix1n1 PAGESSCROLL LIST BACKWARDINDEX ix1n1 PAGESSCROLL LIST LEFTINDEX ix1BY n1 PLACESSCROLL LIST RIGHTINDEX ix1BY n1 PLACESSEARCH:SEARCH v1 FOR v2ABBREVIATEDSTARTING AT n1ENDING AT n2AND MARKSEARCH tabla1 FOR v2ABBREVIATEDSTARTING AT n1ENDING AT n2AND MARK*-------------------------------------------------------------------------- SELECT:SELECT {AutoSelect}SELECT * FROM etabWHERE etab_v1 EQ v2AND etab_v3 EQ v4ENDSELECTSELECT etab_v1 etab_v2etab_v3 etab_v3FROM etabWHERE etab_v1 EQ v2AND etab_v3 EQ v4ENDSELECTSELECT * INTO wrk1FROM etabWHERE etab_v1 EQ v2AND etab_v3 EQ v4ENDSELECTSELECT * FROM etab1WHERE etab_v1 EQ v2AND etab_v3 EQ v4ORDER BY PRIMARY KEYENDSELECTSELECT * FROM etab1CLIENT SPECIFIEDBYPASSING BUFFERUP TO n5 ROWSWHERE etab_v1 EQ v2AND etab_v3 EQ v4ENDSELECTSELECT SINGLE * FROM etabWHERE etab_v1 EQ v2AND etab_v3 EQ v4SELECT *SELECT SINGLE *SELECT SINGLE FOR UPDATE *SELECT DISTINCT *SELECT etab_v1 ...SELECT SINGLE etab_v1 ...SELECT SINGLE FOR UPDATE etab_v1 ...SELECT DISTINCT etab_v1 ...SELECT (tabla1)SELECT SINGLE (tabla)SELECT SINGLE FOR UPDATE (tabla)SELECT DISTINCT (tabla)*-------------------------------------------------------------------------- INTO de SELECT:INTO wrk1INTO CORRESPONDING FIELDS OF wrk1INTO (v1, v2 ...)INTO TABLE tabla1PACKAGAE SIZEINTO CORRESPONDING FIELDS OF TABLE tablaPACKAGAE SIZEINTO APPENDING TABLE tablaPACKAGAE SIZEINTO APPENDING CORRESPONDING FIELDS OF TABLE tabla PACKAGAE SIZE*-------------------------------------------------------------------------- FROM de SELECT:FROM etab1CLIENT SPECIFIEDBYPASSING BUFFERUP TO n1 ROWSFROM (etab1)CLIENT SPECIFIEDBYPASSING BUFFERUP TO n1 ROWS*--------------------------------------------------------------------------WHERE de SELECT:WHERE where_conditionWHERE NOT where_conditionWHERE wherebedinung AND where_conditionWHERE wherebedinung OR where_conditionFOR ALL ENTRIES IN tabla1 WHERE where_conditionFOR ALL ENTRIES IN tabla1 WHERE NOT where_conditionFOR ALL ENTRIES IN tabla1 WHERE where_condition AND where_condition FOR ALL ENTRIES IN tabla1 WHERE where_condition OR where_conditionSELECT ... where_condici?FOR ALL ENTRIES IN tabla1WHERE f1 = v1WHERE f1 EQ v1WHERE f1 NE v1WHERE f1 <> v1WHERE f1 >< v1WHERE f1 LT v1WHERE f1 < v1WHERE f1 LE v1WHERE f1 <= v1WHERE f1 =< v1WHERE f1 GT v1WHERE f1 > v1WHERE f1 GE v1WHERE f1 >= v1WHERE f1 => v1WHERE f1BETWEEN v1 AND v2LIKE v1IN tabla1IN (v2, v3, ...)WHERE f1 NOTBETWEEN v1 AND v2LIKE v1IN tabla1IN (v2, v3, ...)WHERE f1 IS NULLWHERE f1 IS NOT NULLGROUP-BY de SELECT:GROUP BY v1 v2 ...HAVING wherecondGROUP BY (tabla)HAVING wherecond*-------------------------------------------------------------------------- ORDER-BY de SELECT:ORDER BY PRIMARY KEYORDER BY v1 v2 ...ORDER BY (tabla1)*-------------------------------------------------------------------------- SELECT-OPTIONS:SELECT-OPTIONS sel1 FOR v2DEFAULT lit1DEFAULT lit1 ... OPTION op2 ... SIGN ie3DEFAULT lit1 TO lit2DEFAULT lit1 TO lit1 OPTION op2 ... SIGN ie3MEMORY ID spa1MATCHCODE OBJECT mtch1MODIF ID scrg1NO-DISPLAYLOWER CASEOBLIGATORYNO-EXTENSIONNO INTERVALSNO DATABASE SELECTIONVALUE-REQUESTVALUE-REQUEST FOR LOW/HIGHHELP-REQUESTHELP-REQUEST FOR LOW/HIGH*-------------------------------------------------------------------------- SELECTION-SCREEN:SELECTION-SCREEN BEGIN OF LINESELECTION-SCREEN END OF LINESELECTION-SCREEN SKIP n1FOR TABLE etab1ID id1SELECTION-SCREEN ULINEpos1FOR TABLE etab1MODIF ID scr1ID id1SELECTION-SCREEN POSITION pos1FOR TABLE etab1SELECTION-SCREEN COMMENT fmt nameFOR TABLE etab1FOR FIELD v1MODIF ID scr1ID id1SELECTION-SCREEN PUSHBUTTON fmt name USER-COMMAND ucom FOR TABLE etab1MODIF ID scr1ID id1SELECTION-SCREEN BEGIN OF BLOCK blck1WITH FRAMETITLE titl1NO INTERVALSSELECTION-SCREEN END OF BLOCK blck1SELECTION-SCREEN FUNCTION KEY n1_5FOR TABLE etab1ID id1SELECTION-SCREEN BEGIN OF VERSION ver TEXT-xxxSELECTION-SCREEN END OF VERSION verSELECTION-SCREEN EXCLUDE ...PARAMETERS parSELECT-OPTIONS selRADIOBUTTON GROUPS radiBLOCKS blockIDS idSELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE dbtabSELECTION-SCREEN FIELD SELECTION FOR TABLE dbtab*--------------------------------------------------------------------------SET:SET BLANK LINES ONSET BLANK LINES OFFSET COUNTRY count1SET CURSOR FIELD v1OFFSET off1LINE lin1SET CURSOR LINE lin1OFFSET off1SET CURSOR col1 lin2SET EXTENDED CHECKSET LANGUAGE langu1SET LOCALE LANGUAGE lgCOUNTRY cout1MODIFIER m1SET MARGIN vcol1 vlin2SET PARAMETER ID pid1 FIELD v2SET PF-STATUS pf1EXCLUDINGIMMEDIATELYSET PROPERTY OF obj1 attrb2 = v3NO FLUSHSET RUN TIME ANALYZER ONSET RUN TIME ANALYZER OFFSET SCREEN dynnr1SET LEFT SCROLL-BOUNDARYCOLUMN col1SET TITLEBAR titl1WITH &1 &2 ...SET UPDATE TASK LOCALSET USER-COMMAND lit1*-------------------------------------------------------------------------- SHIFT:SHIFT v1CIRCULARLEFTRIGHTSHIFT r1 BY n PLACESCIRCULARLEFTRIGHTSHIFT r1 UP TO r2CIRCULARLEFTRIGHTSHIFT v1 LEFT DELETING LEADING c1SHIFT v1 RIGHT DELETING TRAILING c1*-------------------------------------------------------------------------- SKIP:SKIP TO LINE l1SKIP n*-------------------------------------------------------------------------- SORT:SORTBY v1 v2 ...ASCENDINGDESCENDINGAS TEXTSORT tabla1BY v1 v2 ...ASCENDINGDESCENDINGAS TEXT*-------------------------------------------------------------------------- SPLIT:SPLIT v1 AT v2 INTO targ1 targ2SPLIT f AT g INTO TABLE tabla*-------------------------------------------------------------------------- START-OF-SELECTION:START-OF-SELECTION*-------------------------------------------------------------------------- STATICS:STATICS v1STATICS v1(len2)STATICS: BEGIN OF rec,STATICS: END OF rec,STATICS: BEGIN OF tabla OCCURS n,STATICS: END OF tabla*-------------------------------------------------------------------------- STOP:STOP*-------------------------------------------------------------------------- SUBMIT:SUBMIT repname1SUBMIT (repname1)LINE-SIZE col1LINE-COUNT lin1VIA SELECTION-SCREENAND RETURNEXPORTING LIST TO MEMORYUSER user1 VIA JOB job2 NUMBER n3TO SAP-SPOOLDESTINATION dest1COPIES num1LIST NAME name1LIST DATASET dsname1COVER TEXT text1LIST AUTHORITY auth1IMMEDIATELY x1KEEP IN SPOOL x1NEW LIST IDENTIFICATION x1DATASET EXPIRATION days1LINE-COUNT lin1LINE-SIZE col1LAYOUT layer1SAP COVER PAGE mode1COVER PAGE x1RECEIVER rec1DEPARTMENT name1ARCHIVE MODE mode1ARCHIVE PARAMETERS para1WITHOUT SPOOL DYNPROUSING SELECTION-SETS OF PROGRAM pname1WITH SELECTION-SET v1WITH p1 logop2 v3 SIGN ie4WITH p1 BETWEEN v2 AND v3 SIGN ie4WITH p1 NOT BETWEEN v2 AND v3 SIGN ie4WITH p1 IN sel_tabla1WITH SELECTION-TABLE sel_tabla1WITH FREE SELECTIONS rsds_tabla1*-------------------------------------------------------------------------- SUBTRACT:SUBTRACT v1 FROM v2SUBTRACT-CORRESPONDING rec1 FROM rec2*-------------------------------------------------------------------------- SUM:SUM*-------------------------------------------------------------------------- SUMMARY:SUMMARY。
一数据类型和对象在ABAP中,可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。
在程序中必须声明要使用的全部数据对象。
声明过程中,必须给数据对象分配属性,其中最重要的属性就是数据类型。
1.1 基本数据类型对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。
类型 P 数据允许在小数点后有数字。
有效大小可以是从 1 到 16 字节的任何值。
将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。
在小数点后最多允许14 个数字。
1.2 系统定义的数据对象1.3 确定数据对象的属性如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,可使用DESCRIBE 语句。
语法如下:DESCRIBE FIELD <f> [LENGTH <l>] [TYPE <t> [COMPONENTS <n>]][OUTPUT-LENGTH <o>] [DECIMALS <d>][EDIT MASK <m>].将由语句的参数指定的数据对象<f>的属性写入参数后的变量。
DESCRIBE FIELDS 语句具有下列参数:1.3.1 确定字段长度要确定数据对象的长度,利用DESCRIBE FIELD 语句使用 LENGTH 参数,如下所示:DESCRIBE FIELD <f> LENGTH <l>.系统读取字段<f>的长度,并将值写入字段<l>。
1.3.2确定数据类型要确定字段的数据类型,利用DESCRIBE FIELD 语句使用 TYPE 参数,如下所示:DESCRIBE FIELD <f> TYPE <t> [COMPONENTS <n>].系统读取字段<f>的数据类型,然后将值写入字段<t>。
除返回预定义数据类型 C、D、F、I、N、P、T 和 X 外,该语句还返回2 s 对于带前导符号的两字节整型2 b 对于无前导符号的一字节整型2 h 对于内表2 C 对于组件中没有嵌套结构的结构2 C 对于组件中至少有一个嵌套结构的结构1.3.3确定输出长度要确定字段的输出长度,利用 DESCRIBE FIELD 语句使用 OUTPUT-LENGTH 参数,如下所示:DESCRIBE FIELD <f> OUTPUT-LENGTH <o>.系统读取字段<f>的输出长度,并将值写入字段<o>。
1.3.4确定小数位若要确定类型P字段的小数位的个数,利用 DESCRIBE FIELD语句使用 DECIMALS参数,如下所示:DESCRIBE FIELD <f> DECIMALS <d>.系统读取字段<f>的小数个数,并将值写入字段<d>。
1.3.5 确定转换例程要确定 ABAP/4 词典中某字段的转换例程是否存在,如果存在,名称是什么,利用DESCRIBE FIELD 语句使用 EDIT MASK 参数,如下所示:DESCRIBE FIELD <f> EDIT MASK <m>.如果 ABAP/4 词典中字段<f>的转换例程存在,则系统将其写入字段<m>,然后将系统字段 SY-SUBRC 中的返回代码设为 0。
可以像下面所显示的那样,在 WRITE 语句中将字段<m>直接用作格式模板:WRITE <f> USING EDIT MASK <m>.如果字段<f>没有转换例程,则系统将返回代码设为 4。
二数据输出到屏幕2.1 在屏幕上定位Write输出通过制定字段名称前面的格式规范,可以在屏幕上定位 WRITE 语句的输出:WRITE AT [/][<pos>][(<len>)] <f>.此处3 斜线‘/’表示新的一行3 <pos>是最长为三位数字的数字或变量,表示在屏幕上的位置3 <len>是最长为三位数字的数字或变量,表示输出长度如果格式规范只包含直接值(即,不是变量),可以忽略关键字 AT。
2.2 格式化选项对 WRITE 语句,可以使用不同的格式化选项。
WRITE ....<f><选项>.(1)所有数据类型的格式化选项:(2)数字字段的格式化选项:(3)日期字段的格式化选项:2.3输出符号和图标使用下列语法,可以在屏幕上输出符号和 R/3 图标:WRITE <symbol-name> AS SYMBOL.WRITE <icon-name> AS ICON.符号和图标的名称(<符号名>和<图标名>)是定义系统的常量,这些常量在包含程序<SYMBOL>和<ICON>(尖括号是名称的一部分)中指定。
这些包含程序也包含符号和图标的简短说明。
输出符号和图标最简单的方法是使用语句结构。
要使符号和图标对程序可用,必须在程序中输入恰当的包含程序或更易理解的包含程序<LIST>。
2.4 输出线和空行(1)水平线用下列语法,可以在输出屏幕上生成水平线:ULINE [AT [/][<pos>][(<len>)]].它等同于WRITE [AT [/][<pos>][(<len>)]] SY-ULINE.AT 后的格式规范,与在屏幕上定位 WRITE 输出中为 WRITE 语句说明的格式规范完全一样。
如果没有格式规范,系统则开始新的一行,并用水平线填充该行。
否则,只按指定输出水平线。
生成水平线的另一种方法,是在 WRITE 语句中键入恰当数量的连字符,如下所示:WRITE [AT [/][<pos>][(<len>)]] '-----...'.(2)垂直线用下列语法,可以在输出屏幕上生成垂直线:WRITE [AT [/][<pos>]] SY-VLINE.或WRITE [AT [/][<pos>]] '|'.(3)空行用下列语法,可以在输出屏幕上生成空行:SKIP [<n>].该语句从当前行开始,在输出屏幕上生成<n>个空行。
如果没有指定<n>的值,就输出一个空行。
(4)要将输出定位在屏幕的指定行上,使用:SKIP TO LINE <n>.该语句允许将输出位置向上或向下移动。
2.5 将字段内容作为复选框输出使用下列语法,可以将字段的第一个字符,作为复选框输出到输出屏幕上:WRITE <f> AS CHECKBOX.如果字段<f>的第一个字符是一个“ X”,就显示复选框已填充。
如果字段<f>的第一个字符是 SPACE,就显示复选框为空。
该语句创建的复选框,默认状态是可输入的。
就是说,用户可以通过单击鼠标来填充它们或使其为空。
三赋值在 ABAP/4 中,可以在声明语句和操作语句中给数据对象赋值。
在声明语句中,将初始值赋给声明的数据对象。
为此,可以在 DATA、常量或 STATICS 语句中使用 VALUE 参数。
要在操作语句中给数据对象赋值,可以使用:6 MOVE 语句和 WRITE TO 语句,对应于赋值运算符(=)3.1用MOVE 赋值3.1.1 基本赋值操作要将值(文字)或源字段的内容赋给目标字段,可以使用 MOVE语句或赋值运算符(=)。
MOVE 语句的语法如下所示:MOVE <f1> TO <f2>.MOVE 语句将源字段<f1>的内容传送给目标字段<f2>。
<f1>可以是任何数据对象。
<f2>必须是变量,不能是文字或常量。
传送后,<f1>的内容保持不变。
赋值运算符(=)的语法如下所示:<f2> = <f1>.MOVE 语句和赋值运算符功能相同。
3.1.2 用指定偏移量赋值可以在每条 ABAP/4 语句中为基本数据类型指定偏移量和长度。
在这种情况下,MOVE 语句语法如下:MOVE <f1>[+<o1>][(<l1>)] TO <f2>[+<o2>][(<l2>)].将字段<f1>从<o1>+1 位置开始且长度为<l1>的段内容赋给字段<f2>,覆盖从<o2>+1 位置开始且长度为<l2>的段。
在 MOVE 语句中,所有偏移量和长度指定都可为变量。
3.1.3 在字符串组件之间赋值描述的 MOVE 语句赋值方法适用于基本数据对象和结构化数据对象。
另外,还有一种MOVE 语句变体,允许将源字段串组件内容复制到目标字段串组件中。
语法如下:MOVE-CORRESPONDING <string1> TO <string2>.该语句将字段串<string1>组件的内容赋给有相同名称的字段串<string2>组件。
对于每对名称,系统都执行 MOVE 语句,如下所示:MOVE STRING1-<component> TO STRING2-<component>.系统分别执行所有必要类型转换。
该处理不同于包括整个字段串的赋值。
在这种情况下,应用不兼容的字段串和基本字段所述的转换规则。
3.2 用WRITE TO 赋值要将值(文字)或源字段内容写入目标字段,可以使用 WRITE TO 语句:WRITE <f1> TO <f2> [<option>].WRITE TO 语句将源字段<f1>内容写入目标字段<f2>。
<f1>可以是任何数据对象,<f2>必须是变量,不能是文字或常量。
写入后,<f1>内容保持不变。
对于<option>,可以使用 WRITE 语句的所有格式化选项(UNDER 和 NO-GAP 除外)。
WRITE TO 语句总是检查用户主记录中的设置。
例如,这些设置指定是将小数点显示为句号(.),还是逗号(,)。
WRITE TO 语句并不遵循类型转换中所述的转换规则。
目标字段解释为类型 C 字段。