ABAP开发基础.docx

上传人:b****7 文档编号:10306819 上传时间:2023-02-10 格式:DOCX 页数:43 大小:37.33KB
下载 相关 举报
ABAP开发基础.docx_第1页
第1页 / 共43页
ABAP开发基础.docx_第2页
第2页 / 共43页
ABAP开发基础.docx_第3页
第3页 / 共43页
ABAP开发基础.docx_第4页
第4页 / 共43页
ABAP开发基础.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

ABAP开发基础.docx

《ABAP开发基础.docx》由会员分享,可在线阅读,更多相关《ABAP开发基础.docx(43页珍藏版)》请在冰豆网上搜索。

ABAP开发基础.docx

ABAP开发基础

[推薦]ABAP編程基礎

Ø資料類型

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:

COUNTER TYPEPDECIMALS3.

         NAME(10)TYPECVALUE'DELTA'.

         S_DATE  TYPEDVALUE'19991203'.

exp:

  DATA:

BEGINOFPERSON,

           NAME(10)TYPEC,

           AGE     TYPEI,

           WEIGHT  TYPEDECIMALS2,

         ENDOFPERSON.

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

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

exp:

 CONSTANTS PI TYPE P DECIMALS 5 VALUE '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:

 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敍述則是用

  在指定數據型態。

  

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

Ø輸出

一.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'112030',

            A(5) TYPECVALUE'AB  CDE'.

     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,

     PACK TYPEPDECIMALS1.

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:

BEGINOF OCCURS ,

                   TYPE,

                 [ TYPE,

                   TYPE,

                   …                 ]

               ENDOF .

    語法:

          DATA   OCCURS  [WITH HEADER LINE]

          Example:

                  DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.

                  

格式二.  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,

            COL2    TYPEI,

      ENDOFITAB.

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

      COLLECT ITAB.

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

      COLLECT ITAB.

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

      COLLECT ITAB.

此時,internaltable中放的是2筆資料,分別為:

      ITAB-COL1       ITAB-COL2

       'ABC'              90

       'XYZ'              20

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

INS

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

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1