SAP基础知识学习整理.docx

上传人:b****1 文档编号:3225477 上传时间:2023-05-05 格式:DOCX 页数:59 大小:32.69KB
下载 相关 举报
SAP基础知识学习整理.docx_第1页
第1页 / 共59页
SAP基础知识学习整理.docx_第2页
第2页 / 共59页
SAP基础知识学习整理.docx_第3页
第3页 / 共59页
SAP基础知识学习整理.docx_第4页
第4页 / 共59页
SAP基础知识学习整理.docx_第5页
第5页 / 共59页
SAP基础知识学习整理.docx_第6页
第6页 / 共59页
SAP基础知识学习整理.docx_第7页
第7页 / 共59页
SAP基础知识学习整理.docx_第8页
第8页 / 共59页
SAP基础知识学习整理.docx_第9页
第9页 / 共59页
SAP基础知识学习整理.docx_第10页
第10页 / 共59页
SAP基础知识学习整理.docx_第11页
第11页 / 共59页
SAP基础知识学习整理.docx_第12页
第12页 / 共59页
SAP基础知识学习整理.docx_第13页
第13页 / 共59页
SAP基础知识学习整理.docx_第14页
第14页 / 共59页
SAP基础知识学习整理.docx_第15页
第15页 / 共59页
SAP基础知识学习整理.docx_第16页
第16页 / 共59页
SAP基础知识学习整理.docx_第17页
第17页 / 共59页
SAP基础知识学习整理.docx_第18页
第18页 / 共59页
SAP基础知识学习整理.docx_第19页
第19页 / 共59页
SAP基础知识学习整理.docx_第20页
第20页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SAP基础知识学习整理.docx

《SAP基础知识学习整理.docx》由会员分享,可在线阅读,更多相关《SAP基础知识学习整理.docx(59页珍藏版)》请在冰点文库上搜索。

SAP基础知识学习整理.docx

SAP基础知识学习整理

数据类型

C:

字符串

D:

日期型格式为YYYYMMDD例:

'1999/12/03'

F:

浮点数长度为8

I:

整数

N:

数值组成的字符串如:

011,'302'

P:

PACKED数用于小数点数值如:

12.00542

T:

时间格式为:

HHMMSS如:

'14:

03:

00'

X:

16进制数如:

'1A03'

*-------------------------------------------------------------------------------------*

变数宣告

DATA[][][decimals]

变数名称

变数类型及长度

初值

小数位数

exp:

DATA:

COUNTERTYPEPDECIMALS3.

NAME(10)TYPECVALUE'DELTA'.

S_DATETYPEDVALUE'19991203'.

exp:

DATA:

BEGINOFPERSON,

NAME(10)TYPEC,

AGETYPEI,

WEIGHTTYPEDECIMALS2,

ENDOFPERSON.

另外,有關DATA宣告的指令還有:

CONSTANTS(宣告常數)、STATICS(臨時變數宣告).

exp:

CONSTANTSPITYPEPDECIMALS5VALUE'3.14159'.

STATICS敘述

宣告的變數僅在目前的程式中使用,結束後會自動釋放

語法:

STATICS[][][]

系統專用變數說明

系統內部專門創建了SYST這個STRUCTURE,里面的欄位存放系統變數,常用的系統變數有:

SY-SUBRC:

系統執行某指令后,表示執行成功与否的變數,'0'表示成功

SY-UNAME:

當前使用者登入SAP的USERNAME;

SY-DATUM:

當前系統日期;

SY-UZEIT:

當前系統時間;

SY-TCODE:

當前執行程式的Transactioncode

SY-INDEX:

當前LOOP循環過的次數

SY-TABIX:

當前處理的是internaltable的第几筆

SY-TMAXL:

Internaltable的總筆數

SY-SROWS:

屏幕總行數;

SY-SCOLS:

屏幕總列數;

SY-MANDT:

CLIENTNUMBER

SY-VLINE:

畫豎線

SY-ULINE:

畫橫線

TYPE敘述

用來指定資料型態或宣告自定資料型態

Example:

TYPES:

BEGINOFMYLIST,

NAME(10)TYPEC,

NUMBERTYPEI,

ENDOFMYLIST.

DATALISTTYPEMYLIST.

LIKE敘述

跟TYPE敘述使用格式相同,如

DATATRANSCODELIKESY-TCODE.

不同的是LIKE用在已有值的資料項,如系統變數,而TYPE敘述則是用

在指定資料型態。

*-------------------------------------------------------------------------------------*

输出

一.WRITE語句

ABAP/4用來在屏幕上輸出資料的指令是WRITE指令,例如:

WRITE:

'USERNAMEIS:

',SY-UNAME.

二.指定屏幕輸出位置

指定輸出位置的語句格式為:

WRITE:

[AT][/][][()]資料項[]

其中:

/:

在下一行輸出

:

指定輸出的行號;

):

指定輸出位數(長度)

:

指定顯示格式參數,參數有:

LEFT-JUSTIFIED資料靠左對齊

CENTERED資料靠中間對齊

RIGHT-JUSTIFIED資料靠右對齊

UNDER正對在資料項的下面顯示

NO-GAP緊接著顯示,不留空格

USINGEDITMASK:

使用內嵌子元顯示,如12:

03:

20

USINGNOEDITMASK:

不使用內嵌子元

NO-ZERO:

數字前面0的部分不顯示

NO-SIGN:

不顯示正負號

DECIMALS:

顯示位小數

EXPOENT:

F(浮點數)指數的值

ROUND:

四舍五入至小數點后

CURRENCY:

幣別顯示

DD/MM/YY:

日期顯示格式

MM/DD/YY:

YY/MM/DD:

YY/DD/MM

MM/DD/YYYY:

DD/MM/YYYY

YYYY/MM/DD:

YYYY/DD/MM:

例如1:

WRITE:

/10(6)'ABCDEFGHIJK'.

輸出結果為:

ABCDEF

例如2:

DATA:

XTYPEIVALUE'11:

20:

30',

A(5)TYPECVALUE'ABCDE'.

WRITE:

/XUSINGEDITMASK'__:

__:

__'.

WRITE:

/XUSINGEDITMASK'$___,___'.

WRITE:

/YNO-GAP.

輸出結果為:

11:

20:

30

$112,030

ABCDEF

例如3:

DATA:

LENTYPEIVALUE10,

POSTYPEIVALUE11,

TEXT(10)VALUE'1234567890'

WRITE'Thetext------------appearsinthetext.'.

WRITEATPOS(LEN)TEXT.

WRITETO语句的基本形式

要将值(文字)或源字段内容写入目标字段,可以使用WRITETO语句:

语法

WRITETO[

DATA:

NUMBERTYPEFVALUE'4.3',

TEXT(10),

FLOATTYPEF,

PACKTYPEPDECIMALS1.

WRITENUMBER.

WRITENUMBERTOTEXTEXPONENT2.

WRITE/TEXT.

WRITENUMBERTOFLOAT.

WRITE/FLOAT.

WRITENUMBERTOPACK.

WRITE/PACK.

MOVENUMBERTOPACK.

WRITE/PACK.

exp:

DATA:

NAME(10)VALUE'SOURCE',

SOURCE(10)VALUE'Antony',

TARGET(10).

...

WRITE(NAME)TOTARGET.

WRITE:

TARGET.

exp:

DATA:

COUNTERTYPEI.

COMPUTECOUNTER=COUNTER+1.

COUNTER=COUNTER+1.

ADD1TOCOUNTER.

在此,三条运算语句进行相同算术运算

输出屏幕上的线和空行

用下列语法,可以在输出屏幕上生成水平线:

语法

ULINE[AT[/][][()]].

它等同于

WRITE[AT[/][][()]]SY-ULINE.

AT后的格式规范,与在在屏幕上定位WRITE输出(页28)中为WRITE语句说明的格式规范完全一样。

如果没有格式规范,系统则开始新的一行,并用水平线填充该行。

否则,只按指定输出水平线。

生成水平线的另一种方法,是在WRITE语句中键入恰当数量的连字符,如下所示:

WRITE[AT[/][][()]]'-----...'.

垂直线

用下列语法,可以在输出屏幕上生成垂直线:

语法

WRITE[AT[/][]]SY-VLINE.

WRITE[AT[/][]]'|'.

空行

用下列语法,可以在输出屏幕上生成空行:

语法

SKIP[].

该语句从当前行开始,在输出屏幕上生成个空行。

如果没有指定的值,就输出一个空行。

要将输出定位在屏幕的指定行上,请使用:

语法

SKIPTOLINE.

该语句允许将输出位置向上或向下移动。

四.顯示圖示:

語法:

WRITE:

ASSYMBOL.

WRITE:

ASICON.

例如:

INCLUDE.

INCLUDE.

WRITE:

/'Phonesymbol:

',SYM_PHONEASSYMBOL.

WRITE:

/'AlarmIcon:

',ICON_VOICE_OUTPUTASICON.

要查看系統所提供有那些符號及圖示,可選擇'EDIT'下的'InsertStatement',選擇'Write',接下來選擇要查看的群組,如SYMBOL或ICON,接下來按'Display'即可.

*-------------------------------------------------------------------------------------*

一.InternalTable的宣告

ABAP/4中的InternalTable是一种DataStructure,類似于其他語言中的STRUTURE,它可以由几個不同類型的欄位(field)組成,用來表示具有不同屬性的某一事物,單獨一筆資料表示某個事物,多筆資料表示具有相同屬性的多個事物.

Internaltable的定義有以下几种格式:

格式一.DATA:

BEGINOFOCCURS,

TYPE,

[TYPE,

TYPE,

…]

ENDOF.

語法:

DATAOCCURS[WITHHEADERLINE]

Example:

DATAVECTORTYPEIOCCURS10WITHHEADERLINE.

格式二.TYPES:

BEGINOF,

TYPE,

[TYPE,

TYPE,

…]

ENDOF.

TYPESTYPEOCCURS.

格式三.DATA:

BEGINOF.

INCLUDESTRUCTURE.

DATA:

ENDOF.

DATA:

LIKEOCCURS.

exp:

TYPESVECTORTYPEIOCCURS10.

TYPES:

BEGINOFLINE,

COLUMN1TYPEI,

COLUMN2TYPEI,

COLUMN3TYPEI,

ENDOFLINE.

TYPESITABTYPELINEOCCURS10.

TYPES:

BEGINOFDEEPLINE,

TABLE1TYPEVECTOR,

TABLE2TYPEITAB,

ENDOFDEEPLINE.

TYPESDEEPTABLETYPEDEEPLINEOCCURS10.

本示例创建与上例相同的内表数据类型(VECTOR和ITAB)。

然后创建数据类型DEEPLINE作为字段串,包含这些内表作为组件。

通过该字段串,数据类型DEEPTABLE被创建为内表。

因此该内表的元素本身就是内表。

exp:

TYPES:

BEGINOFLINE,

COLUMN1TYPEI,

COLUMN2TYPEI,

COLUMN3TYPEI,

ENDOFLINE.

TYPESITABTYPELINEOCCURS10.

DATATAB1TYPEITAB.

DATATAB2LIKETAB1WITHHEADERLINE.

同创建内表数据类型(页99)中所示,该示例创建数据类型ITAB作为内表。

通过使用DATA语句的TYPE参数引用ITAB,使数据对象TAB1与ITAB结构相同。

通过使用DATA语句的LIKE参数引用TAB1,使数据对象TAB2结构相同。

创建的TAB2带表头行。

因此,可以在程序中使用TAB2-COLUMN1、TAB2-COLUMN2和TAB2-COLUMN3等定位表格工作区域TAB2。

exp:

DATAFLIGHT_TABLIKESFLIGHTOCCURS10.

本示例创建数据对象FLIGHT_TAB,其结构与数据库表格SFLIGHT相同。

本示例介绍如何采用两种不同的步骤创建同一内表。

TYPESVECTOR_TYPETYPEIOCCURS10.

DATAVECTORTYPEVECTOR_TYPEWITHHEADERLINE.

在此创建一个内表数据类型VECTOR_TYPE,其行包含首先创建的基本类型I字段。

然后,通过引用VECTOR_TYPE创建数据对象VECTOR。

通过使用WITHHEADERLINE选项还创建表格工作区域VECTOR。

在这种情况下,表格工作区域包含一种类型I字段,可以通过名称VECTOR定位。

DATAVECTORTYPEIOCCURS10WITHHEADERLINE.

在这种情况下,通过直接在DATA语句中使用OCCURS选项创建完全一样的数据类型VECTOR。

*-------------------------------------------------------------------------------------*

1.TYPEStype.

2.TYPEStype(len).

3.TYPES:

BEGINOFstructype...

ENDOFstructype.

4.TYPESitabtype{TYPEtabkindOFlinetypeLIKEtabkindOFlineobj}

[WITH[UNIQUE|NON-UNIQUE]keydef][INITIALSIZEn].

5.TYPESitabtypeTYPERANGEOFtype.

TYPESitabtypeLIKERANGEOFf.

6.TYPESitabtype{TYPElinetype|LIKElineobj}OCCURSn.

*-------------------------------------------------------------------------------------*

APPENDLINE

格式:

APPENDTO

举例一:

(使用WORKAREA)

DATA:

BEGINOFLINE,

COL1TYPEI,

COL2TYPEI,

ENDOFLINE.

DATAITABLIKELINEOCCURS10.

DO2TIMES.

LINE-COL1=SY-INDEX.

LINE-COL2=SY-INDEX**2.

APPENDLINETOITAB.

ENDDO.

LOOPATITABINTOLINE.

WRITE:

/LINE-COL1,LINE-COL2.

ENDLOOP.

举例二(不使用WORKAREA)

DATA:

BEGINOFITABOCCURS10,

COL1TYPEI,

COL2TYPEI,

ENDOFITAB.

DO2TIMES.

ITAB-COL1=SY-INDEX.

ITAB-COL2=SY-INDEX**2.

APPENDITAB.

ENDDO.

LOOPATITAB.

WRITE:

/ITAB-COL1,ITAB-COL2.

ENDLOOP.

exp:

DATA:

BEGINOFITABOCCURS10,

COL1TYPEC,

COL2TYPEI,

ENDOFITAB.

DO3TIMES.

APPENDINITIALLINETOITAB.

ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX**2.

APPENDITAB.

ENDDO.

LOOPATITAB.

WRITE:

/ITAB-COL1,ITAB-COL2.

ENDLOOP.

舉例三.(加入另一個Internaltable的元素)

格式:

APPENDLINESOF[FROM][TO]TO.

的元素加入至中,可選取自的范圍.

APPENDLINESOFITABTOJTAB.

COLLECTLINE

COLLECT指令也是將元素加入Internaltable中,与APPEND的區別是:

COLLECT指令在非數值欄位相同的情況下,將數值欄位匯總.

格式:

COLLECT[INTO]

DATA:

BEGINOFITABOCCURS3,

COL1(3)TYPEC,

COL2TYPEI,

ENDOFITAB.

ITAB-COL1='ABC'.ITAB-COL2=10.

COLLECTITAB.

ITAB-COL1='XYZ'.ITAB-COL2=20.

COLLECTITAB.

ITAB-COL1='ABC'.ITAB-COL2=80.

COLLECTITAB.

此時,internaltable中放的是2筆數据,分別為:

ITAB-COL1ITAB-COL2

'ABC'90

'XYZ'20

*-------------------------------------------------------------------------------------*

INSERTLINE

將元素插入在指定的internaltable位置之前.

格式:

INSERT[INTO][INITIALLINEINTO][INDEX]

或者:

INSERTLINESOF[FROMTO]INTOINDEX

其中:

即workarea,工作區中的元素.

[INITIALLINEINTO]:

插入一筆初始化的記錄.

:

internaltable

[INDEX]:

internaltable的記錄號.(新加入的元素放在此記錄前面)

Example:

DATA:

BEGINOFLINE,

COL1TYPEI,

COL2TYPEI,

ENDOFLINE.

DATAITABLIKELINEOCCURS10.

DO3TIMES.

LINE-COL1=SY-INDEX*10.

LINE-COL2=SY-INDEX*20.

APPENDLINEINTOITAB.

ENDDO.

LINE-COL1=100.

LINE-COL2=200.

INSERTLINEINTOITABINDEX2."插入在位置2之前

LOOPATITABINTOLINE.

WRITE:

/SY-TABIX,LINE-COL1,LINE-COL2."SY-TABIX為Table位置

ENDLOOP.

執行結果:

11020

2100200"插入的元素

32040

43060

插入另一InternalTable元素

語法:

INSERTLINESOF[FROMTO]TOINDEX

的元素插入至中,位置在之前,可選取自的範圍

Example:

APPENDLINESOFITABTOJTABINDEX3.

將ITAB所有元素插入JTAB中,位置在第三個元素之前

*-------------------------------------------------------------------------------------*

讀取internaltable

格式一:

LOOPAT[INTO][FROMTO][WHERE]

ENDLOOP.

Example:

LOOPATITABINTOLINEWHERECOL1>100.

WRITE:

/SY-TABIX,LINE-COL1.

ENDLOOP.

僅讀取COL1>100的元素

格式二:

READTABLE[INTO][INDEX/WITHKEY]

舉例.(格式二)

DATA:

BEGINOFITABOCCURS10,

COL1TYPEI,

COL2TYPEI,

ENDOFITAB.

DO10TIMES.

ITAB-COL1=SY-INDEX.

ITAB-COL2=SY-INDEX*2.

APPENDITAB.

ENDDO.

READTABLEITABINDEX3.

(或者:

READTABLEITABWITHKEYCO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2