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常见语句ABAP是一种商业程序语言,主要用于企业软件开发。
它是一种高级语言,允许开发人员以模块化的方式编写企业范围的应用程序。
在这篇文章中,我们将探讨一些常见的ABAP语句,这些语句有助于开发人员提高程序开发的效率和质量。
1. 数据定义语句数据定义语句用于定义变量、常量和数据类型。
在ABAP中,可以用以下语句定义可变变量:DATA:<变量名> TYPE <数据类型>。
其中,“<变量名>”是变量的名称,“<数据类型>”是变量的类型。
以下是一些常见的数据定义语句:DATA:age TYPE I。
//定义一个整型变量“age”DATA:name TYPE CHAR10。
//定义一个字符型变量“name”DATA:salary TYPE P DECIMALS 2。
//定义一个数值型变量“salary”,并指定小数位数为22. 控制结构语句控制结构语句用于控制程序的执行流程。
在ABAP中,可以使用以下语句:IF <条件>。
//执行某些代码ENDIF。
其中,“<条件>”是一个逻辑条件,如果为真,则执行if和endif之间的代码。
以下是一些常见的控制结构语句:IF age > 18。
WRITE: / '成年人'。
//如果age大于18,则输出“成年人”ENDIF。
CASE <变量>。
WHEN <值1>。
//执行某些代码1WHEN <值2>。
//执行某些代码2...ENDCASE。
其中,“<变量>”是一个变量名称,用于比较。
如果变量等于<值1>,则执行“执行某些代码1”,如果变量等于<值2>,则执行“执行某些代码2”,以此类推。
以下是一个简单的例子:CASE gender。
WHEN 'M'。
WRITE: / '男性'。
ABAP学习总结1.ABAP语法ULINE. ----画一条横线SY-VLINE 画竖线SKIP. 跳一行系统变量如下:Internal table(内表)内表数据类型: Structure , 数据库表, 用户自定义数据类型.定义内表:Structure : DATA ITAB TYPE (STANDARD) TABLE OF YTEST_TAB.数据库表: DATA ITAB TYPE TABLE OF SFLIGHT.自定义数据类型: TYPES: BEGIN OF 1_TYPE,NAME(50) TYPE C,AGE TYPE I,END OF 1_TYPE.DATA ITAB TYPE TABLE OF 1_TYPE.表头行:在定义内表的时候,后面加上”WITH HEADER LINE”,则同时定义了该内表的同名工作区,该定义被称作表头行,例如:注: APPEND 与INSERT 区别: APPEND插入内表最后一行, INSERT 可以插入指定位置.数据字典:数据字段(TABLE FIELD), 域(DOMAIN), 数据元素(DATA ELEMENT).数据字段:数据表中的字段.域: 描述一个字段类型和长度等信息.数据元素: 描述一个字段的用途.数据字段→域→数据元素. ()收索帮助)SELECT :对数据结构: 当从数据库表中查询出的数据,放入数据结构中时,要有ENDSELECT, 例如: SELECT * FROM SPFLI UP TO 5 ROWS INTO A_SPFLI.WRITE : / A_SPFLI-CONNID,A_SPFLI-CARRID,A_SPFLI-CITYFROM, A_SPFLI-CITYTO.ENDSELECT.对内表 : 当从数据库表中查询出的数据, 放入内表中时,可有可无 ENDSELECT,例如:SELECT * FROM SPFLI UP TO 5 ROWS INTO TABLE TA_SPFLI.*从数据库表中读数据到内表中,直接从内表输出*如果TA_SPFLI没有定义HEADER LINE,这儿会报错的LOOP AT TA_SPFLI.WRITE : / TA_SPFLI-CONNID,TA_SPFLI-CARRID,TA_SPFLI-CITYFROM,TA_SPFLI-CITYTO.ENDLOOP.UP TO 5 ROWS : 读取前5行,不再继续往下读PACKAGE SIZE 5 : 以5行为一组,继续往下读.例如:*以每次读取5条记录,直到读取完所有数据SELECT * INTO TABLE WA_SPFLI FROM SPFLI PACKAGE SIZE 5.*输出内表内的数据LOOP AT WA_SPFLI.WRITE : / WA_SPFLI-CARRID,WA_SPFLI-CITYFROM,WA_SPFLI-CITYTO.ENDLOOP.*输出5条后输出一条线ULINE.ENDSELECT.(内链接)ULINE.WRITE / '内连接'.ULINE.*定义结构DATA : BEGIN OF ARCD,CARRID TYPE SPFLI-CARRID,CONNID TYPE SPFLI-CONNID,FLDATE TYPE SFLIGHT-FLDATE,END OF ARCD.*定义工作区DATA ARCD1 LIKE ARCD.*关联数据表,读取前10条记录,写入工作区,并输出SELECT SPFLI~CARRID SPFLI~CONNID SFLIGHT~FLDATE INTO ARCD1 FROM SPFLI INNER JOIN SFLIGHT ON SPFLI~CARRID = SFLIGHT~CARRID AND SPFLI~CONNID = SFLIGHT~CONNID UP TO 20 ROWS.WRITE : / ARCD1-CARRID,ARCD1-CONNID,ARCD1-FLDATE.ENDSELECT.列表颜色设置:例如:*----------标准列表输出SKIP.ULINE.FORMAT COLOR COL_GROUP.WRITE / '前景和背景颜色设置'.FORMAT COLOR OFF.*数据库表SPFLI相关TABLES SPFLI.SKIP.*输出表头,背景灰绿FORMAT COLOR COL_HEADING.ULINE AT /(91).WRITE : / SY-VLINE,(15) '航线承办人',SY-VLINE,(15) '航班连接',SY-VLINE, (15) '国家代码',SY-VLINE,(15) '起飞城市',SY-VLINE,(15) '起飞机场',SY-VLINE.ULINE AT /(91).FORMAT COLOR OFF.*SY-VLINE是画竖线,ULINE是画横线*输出内容,关键字为'DL'红色SELECT * FROM SPFLI UP TO 10 ROWS.IF SPFLI-CARRID = 'DL'.FORMAT COLOR COL_NEGATIVE INVERSE OFF."背景色,红色ELSEIF SPFLI-CARRID = 'AZ'.FORMAT COLOR COL_NEGATIVE INVERSE ON."前景色,红色ELSE.FORMAT COLOR OFF INVERSE OFF.ENDIF.WRITE : / SY-VLINE,(15) SPFLI-CARRID,SY-VLINE,(15) SPFLI-CONNID,SY-VLINE,(15) SPFLI-COUNTRYTO,SY-VLINE,(15)SPFLI-CITYFROM,SY-VLINE,(15)SPFLI-AIRPFROM,SY-VLINE.ULINE AT /(91).ENDSELECT.从服务器上下载指定人的源码: se38 - >Z_DOWNLOAD_DOC -> 执行- > 输入要下载人的用户名和保存路径- > 执行即可将指定人的所有源码下载下来SAP: System , Applications and Products in Data Processing . 即数据处理的系统应用和产品.ERP巨人: --- SAP公司创立于1972 年, 其总部设在德国南部的小城walldorf.ERP(Enterprise Resource Planning , 企业资源计划) 是建立在现代企业的先进管理思想基础之上, 利用信息技术为企业提供决策, 计划, 控制和业务评估的全方位的系统的解决平台.企业流: 物流, 资金流, 信息流.SAP基本结构: 数据库, 应用层和显示层.R/3 ( R 意为实时处理, Realtime).SAP模块:生产计划控制(PP) , 物料管理(MM) , 销售与分销(SD) , 财务会计(FI), 管理会计(CO), 人力资源(HR), 设备管理(PM), 项目管理(PS), 固定资产管理(AM), 资料管理(BW) , 售后服务管理(SM), 工作流管理(WF), 质量管理(QM), 基本系统组件(BC). . .SAP系统开发人员主要接触对象:Basis系统和开发平台及ABAP系统设计语言.ABAP(Advanced Business Application Programming).处理块(Processing Blocks) 是ABAP程序的主要结构单元, 定义了程序在不同状态下执行的具体功能, 在程序编译运行过程中, 每一个块都是一个独立的实体.数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的, 其他所有语句则都必须隶属于某个处理块.程序类型数据元素: 是构成结构和表等复杂类型的基本组件. 域: 则定义数据元素的技术属性, 具有包括数据字典中的基本内置数据类型,长度和小数位.所有数据元素都必须属于一个域.内表排序使用SORT语句.确定数据对象属性:DATA: text(8) TYPE c VALUE ‘abcdefgh’ , len TYPE i.DESCRIBE FIELD text LENGTH len.WRITE: text , ‘has length’ , len .其输出为: abcdefgh has length 8.MOVE 字段TO 字段=> 赋值.MOVE source TO destination. destination = source.可以使用MOVE-CORRESPONDING 语句在两个结构体中所有同名组件赋值, 而目标结构体中其他字段的值不变.MOVE-CORRESPONDING add_company TO company .字段符号:系统不直接为字段符号本身保留内存空间, 而是将其指向一个数据对象.声明字段符号: FIELD-SYMBOLS <fs> TYPE D.分配数据对象: 静态分配: ASSIGN f TO <fs> .动态分配: ASSIGN (f) TO <fs> .动态分配不是将字段f分配给字段符号<fs> , 而是先找到字段f 的内容, 再将该内容作为一个新的数据对象名称分配给<fs> . 例:FIELD-SYMBOLS: <fs> .DATA: str(20) TYPE c VALUE ‘Output String’ .Name(20) TYPE c VALUE ‘str’ .*Static assignmentASSIGN name TO<fs> .WRITE: / <fs>.*Dynamic assignmentASSIGH (name) TO <fs> .WRITE: / <fs>.输出结果为:StrOutput StringREAD语句只能应用于内表数据对象.静态数据对象: STATICS , 与DATA , TYPES 格式一样.宏的定义: DEFINE name .<statement>.END-OF-DEFINITION.SE24 -> 定义全局类SE37 -> 定义FUNCTION .访问类成员: oref -> attr . 属性或方法.Oref => attr . 静态属性或方法.继承: CLASS c1 DEFINITION INHERITING FROM ……………………ENDCLASS. <类的定义>CLASS c1 IMPLEMENTATION.………ENDCLASS. <类的实现>抽象类: CLASS c1 DEFINITION ABSTRACT.……….ENDCLASS.最终类; CLASS c1 DEFINITION FINAL .……….ENDCLASS.接口: INTERFACE intf .DATA …..CLASS-DATA……(静态属性).METHOD……ENDINTERFACE.实现接口:CLASS class DEFINITION . <类定义>PUBLIC SECTION.…….INTERFACES: intf1, intf2……ENDCLASS.CLASS class IMPLEMENTATION.……METHOD intf1~imeth1. (实现接口方法)…….ENDMETHOD.…….ENDCLASS.DATA object TYPE REF TO class.创建对象:CREATE OBJECT object .通过内表将多条数据插入数据库表:INSERT dbtab FROM TABLE itab ACCEPTING DUPLICATE KEYS.其中accepting duplicate keys 选项的效果是: 如果出现关键字相同条目, 系统将SY-SUBRC返回4 , 并跳过该条目, 并更新所有其他条目.UPDATE:单行: UPDATE dbtab FROM wa . (工作区).多行: UPDATE target FROM TABLE itab . (内表).MODIFY: 相当于INSERT 和UPDATE 语句结合.添加或更新单行: MODIFY dbtab FROM wa.添加或更新多行: MODIFY dbtab FROM TABLE itab.DELETE:单行: DELETE dbtab FROM wa.多行: DELETE dbtab FROM TABLE itab.SY-DBCNT 返回实际已删除的行数.一般性的报表时间触发过程如下:1.LOAD-OF-PROGRAM.2.INITIALIZATION.3.AT SELECTION-SCREEN OUTPUT. AT SELECTION-SCREEN. 4.START-OF-SELECTION5.GET 和GET LATE6.END-OF-SELECTION7.TOP-OF-PAGE END-OF-PAGE8.AT LINE-SELECTION AT-USER-COMMANDRFC: (Remote Function Call , 远程功能调用).RFM: 可以提供给其他系统进行远程调用的程序模块是支持RFC 的功能模块, 即RFM(Remote-Enabled Function Module). 支持远程调用的功能模块.RFC模式:1.同步RFC2.异步RFC3.事务性RFC4.队列RFC5.并行RFC模块条件调用:单字段: FIELD field MODULE mod ON INPUT/REQUEST. INPUT: 当field中包含非初始值时, 才调用ABAP模块mod; 如果用户将字段值由其他改回初始值, 也不能触发mod. REQUEST: 只有用户在该字段中输入值时(包括空值和原值) , 才调用ABAP模块mod.组合字段:CHAIN.FIELD: f1 , f2 , …MODULE mod1 ON CHAIN-INPUT/CHAIN-REQUEST.FIELD: g1 , g2 , ……MODULE mod2 ON CHAIN-INPUT/CHAIN-REQUEST.……ENDCHAIN.当fi 之一满足条件时, mod1被调用, 当fi或gi满足条件时, mod2被调用.锁:问题一:锁对象(Lock Object)和 FM(Function Module),激活Lock Object时,产生的 FM 的名字是什么?答案:首先要在 ABAP 字典中创建锁对象,然后才能在 ABAP 程序中设锁。
sap abap基础语法
SAP ABAP的基础语法包括:
1.关键字:每个语句的第一个单词必须是ABAP关键字,且单词之间至少要
用一个空格分隔。
2.句点符号:每个语句结束必须要用句号,标志着语句的完成。
3.大小写:ABAP不区分大小写,一般关键字大写,操作数小写。
4.命名规则:使用至少1个但不超过8个字符,且ABAP语言的数据类型包
括八种基本数据类型。
5.链语句方式:连续多行的第一个关键字相同,可使用链语句方式减少输入。
6.结构化编程:包括顺序、选择和循环结构,分别由IF、CASE和LOOP等
关键字实现。
一数据类型和对象在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学习(1):基本语法介绍ABAP学习ABAP学习基本资料整理。
ABAP基本语法ABAP中不区分⼤⼩写,例如:Type 和type表⽰⼀个意思。
1基本数据类型ABAP基本数据类型:I : 整形数据;C:字符型数据;N:只包含数字的字符串;P:包装数据类型;F:浮点类型;D:⽇期类型;T:时间类型;X:⼗六进制数据。
F和P类型都保存浮点数,P的精度⽐F更⾼,⼀般使⽤P类型。
⽰例:"整型DATA:num1 type I."字符型DATA:num2(3) type C."数字字符型DATA:num3(4) type N."包装类型,decimals指定⼩数位数,只有P类型可⽤DATA:num4(10) type P DECIMALS 4."浮点型DATA:num5 type F."⽇期型DATA:num6 type D."时间型DATA:num7 type T."16进制型DATA:num8(10) type X."字符串DATA:num9 type string."C,N,X,P可以使⽤length定义长度DATA:num10 TYPE C LENGTH 14."赋值操作"move to 语句"MOVE 1333 TO num1.num1 = 1234567890.num2 = 'abc'.num3 = '0010'.num4 = '1.23456789'.num5 = '12.3456789'.num6 = sy-datum.num7 = sy-uzeit.num8 = 1234567890.write :/ 'num1=',num1,'num2=',num2,'num3=',num3,'num4=',num4,'num5=',num5,'num6=',num6,'num7=',num7,'num8=',num8."字符串转I,"不能有汉字,不能是科学计数法"num9 = '1.23300000E+2'.num9 = '12.33334'.num1 = num9.WRITE:/ 'num1',num1."字符串转Cnum9 = '中'.num2 = num9.WRITE:/ 'num2',num2."字符串转N,会将⼩数点去掉num9 = '22.33'.num3 = num9.WRITE:/ 'num3',num3."字符串转P,num9 = '12.3456'.num4 = num9.WRITE:/ 'num4',num4."字符串转F,会变成科学计数法显⽰num9 = '12.34567'.num5 = num9.WRITE:/ 'num5',num5."字符串转D,MMDDYYYY"输出:09302018num9 = '20180930'.num6 = num9.WRITE:/ 'num6',num6."字符串转T,hhmmssnum9 = '014423'.num7 = num9.WRITE:/ 'num7',num7."字符串转X,长度超过20位,截取前20字符num9 = '123456789012345678901234'.num8 = num9.WRITE:/ 'num8',num8."科学计数法转换DATA:str TYPE char25 VALUE '4.3999999999999997E-2'. DATA:m_str LIKE CHA_CLASS_DATA-SOLLWERT. DATA:c_str(16) TYPE C.DATA:c_num(16) TYPE P DECIMALS 3.MOVE str to m_str."科学计数法字符串转换成数字CALL FUNCTION'QSS0_FLTP_TO_CHAR_CONVERSION' EXPORTINGI_NUMBER_OF_DIGITS = 3I_FLTP_VALUE = m_strI_VALUE_NOT_INITIAL_FLAG = 'X'I_SCREEN_FIELDLENGTH = 16 IMPORTINGE_CHAR_FIELD = c_str.IF sy-subrc = 0.WRITE:/ c_str.c_num = c_str.WRITE:/ c_num.ENDIF."不⽤function转换,QSOLLWERTE作为中间数据"将科学计数法字符串转换为其他数据DATA:mid_str TYPE QSOLLWERTE.mid_str = str.c_num = mid_str.View Code2 type定义数据类型语法结构:Types :<类型名> type <数据类型>Types :<类型名> like <数据对象或数据类型>定义结构体Types: begin of <结构名>,<资料名> type <数据类型>,…………end of <结构名>.Data: begin of <结构名>,<资料名> type <数据类型>,…………end of <结构名>."******************************************************************"type定义数据类型"******************************************************************TYPES: length TYPE I.TYPES: str(20) TYPE C.TYPES: BEGIN OF person,Name(10) type C,Age type I,END OF person.3变量声明相关语法:data: <变量名> type <数据类型> [value <值>] 。
abap基础语法ABAP基础语法ABAP(Advanced Business Application Programming)是一种高级业务应用编程语言,主要用于SAP系统开发。
它由SAP公司开发并广泛应用于企业资源计划(ERP)系统中。
ABAP基础语法是学习ABAP编程的第一步,掌握基础语法对于编写高效、可维护的ABAP程序至关重要。
本文将介绍ABAP基础语法的一些重要概念和常用语句。
1. 数据类型在ABAP中,我们可以声明各种不同的数据类型,如整数型(INT)、字符型(CHAR)、浮点型(FLOAT)等。
声明变量时需要指定变量的数据类型,并可以为其赋初值。
2. 变量和常量ABAP中可以通过“DATA”关键字声明变量,并使用“CONSTANTS”关键字声明常量。
变量和常量用于存储和操作数据,在程序中起到关键的作用。
3. 运算符ABAP支持各种算术、比较和逻辑运算符,用于进行数值计算、条件判断和逻辑操作。
例如,加法运算符(+)、等于运算符(=)和逻辑与运算符(AND)等。
4. 控制语句ABAP提供了多种控制语句,用于根据条件执行不同的代码块。
常用的控制语句包括IF语句、CASE语句和LOOP语句等。
这些语句可以帮助我们实现程序的流程控制和逻辑判断。
5. 函数和方法ABAP中可以定义函数和方法,用于封装一段可重用的代码。
函数是一段独立的代码,可以接受输入参数并返回一个结果。
方法是与对象相关联的代码,可以访问对象的属性和方法。
6. 内部表内部表是ABAP中一种重要的数据结构,类似于其他编程语言中的数组或列表。
内部表用于存储一组有序的数据,并可以通过索引或关键字访问。
我们可以使用内部表来处理和操作数据。
7. 结构体ABAP中的结构体是一种复合数据类型,可以包含多个字段。
结构体用于组织和存储相关的数据,并可以通过字段名访问各个字段的值。
8. 类和对象ABAP是一种面向对象的编程语言,支持类和对象的概念。
1、ST05是用于在开发ABAP程序时,对应事务码取得的字段是“数据结构”而不是“透明表”的时候,通过ST05的“SQL跟踪”来获得相关“Select”的语句;一般查看“REC”列耗时比较多的“Select”语句;2、跟踪时如果有涉及到“数量”这类有对数据表进行更新或插入操作的,则直接去查Update 和Insert的SQL语句;3、在跟踪后,直接双击“对象名”列的名称,点选“表格”转到“SE11”的表字段表;4、ABAP程序开头的Tables:“数据表名”,只有在屏幕中有用到的表,才需要声明;在程序中用到的表则不需要进行在Tables内声名;5、抓SAP“文本”字段的数据,要先自定义变量,然后通过SE37的函数“FUNCTION ‟ZREAD_TEXT‟”取回文本数据;6、新建的ABAP程序,在测试运行的时候要先进行“激活”,才能测试运行;7、SE93:把ABAP写好的程序指定一个事务码执行;8、abap引号内的字符‟‟必须要是大写;9、ABAP select 里面的语句,不能像mssql有那么丰富的函数使用,需要导到内表后再对数据进行操作;10、‟EQ‟是单个数据值,‟BT‟是between区间的意思。
11、在写select inner join 里面,要注意是否需要加上销售组织的条件;on 条件1 and 销售组织条件。
12、SELECTION-SCREEN,里面有两个子项,PARAMETERS和select-options。
PARAMETERS 一般是用于必输项的屏幕参数设置,如果这个参数不是必输项的,就要用select-options。
在select ...where条件里,用PARAMETERS的条件语法是“数据字段= 屏幕字段”;而select-options的条件语法是“数据字段in 屏幕字段”。
13、在where判断一个日期型数据是空,不是DEAKT = ‟‟,也不是DEAKT is initial,而应该写成DEAKT = ‟00000000‟ (8个0)。
一数据类型和对象在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 字段。