• ABAP SYNTAX COLLECTION II


     

    1,Abap的数据类型分为三种类型

    *1,类型 *2,结构 *3,内表

    *******************************************************************************

    2,数据定义

    *1 直接定义

    Data int_a type I.

    *2 参照自己定义的数据类型定义

    Type char_six(6) type c.

    Data chs type char_six.

    *3 参照se11中建立的数据类型定义

    *4 直接使用like

    Data ch4 like ch3. (其中ch3已经在se11中定义过)

    定义常数:使用constants

    基本语法:

    Constants: <const.name> type <type> value <literal>.

    CONSTANTS INT TYPE I VALUE 99.

    *******************************************************************************

    3. 选择copy按钮,输入程序名字即可(客户的程序名字,需要以Z开头)

    *******************************************************************************

    4,如何设置关键字的大小写功能?

    路径:在utilities--settings—pretty printer

    *******************************************************************************

    5,模式按钮

    作用:可以call function,写write等固定格式,message等功能

    操作方法:将光标放在程序中你要输入的地方,然后按pattern,输入你要输入的参数,回车即可。

    旁边的pretty printer 是美化program,即是以标准的缩进和注释对program

    *******************************************************************************

    6,如何进行程序调试?

    其中 F5 单步执行

    F6 执行子程序的时候,不进入子程序,即跳过子程序

    F7 跳出目前的子程序

    F8 直接执行

    *******************************************************************************

    7,在窗口上直接输入 /h 就可以进入程序调试的模式

    *******************************************************************************

    8,创建事务代码t-code:SE93

    另一种创建T-Code的方法是在程序中点击右键创建—transaction 也可以创建一个T-Code

    *******************************************************************************

    9,write:a ,b,c。

    其中的冒号是语法链的作用。

    ******************************************************************************

    10,如何定义一格结构?

    *1,直接定义结构

    Data : begin of stru_ztaly,

    Name(10) type c,

    ……

    End of stru_ztaly.

    *2,自己在程序里先定义结构类型,再参照类型定义结构对象。

    Types: begin of stru_ztaly,

    Name(10) type c,

    ……

    End of stru_ztaly.

    Data: stru_ztaly2 type stru_ztaly.

    *3,在se11定义一个公共的类型,再参照类型定义结构对象。

    Data stru_italy type ityp_s_ztaly.

    *4,使用like

    Data stru_italy2 like stru_italy (其中stru_italy是已经定义了的结构)

    *******************************************************************************

    11,如何建立内表?

    *1, 直接建内表

    Data : begin of itab_italy occurs 0,

    Ino type I,

    …..

    End of itab_italy.

    *2,自己先建一个结构类型,再根据这个结构类型建内表

    Type :begin of typ,

    ino type I,

    ……

    end of typ.

    Data: itab_typ type table of typ.

    其中关键字table不能少,否则还是结构,而不是内表

    *3,现在数据字典中建一个内表类型,再参照这个类型

    Dataitab_italys type zty_t_italy.

    说明:对内表的操作必须依靠结构进行。

    For example: append stru_italy to Itab_italy.

    增加一行到内表中。

    *4,内表输出必须依靠于结构,而且要循环输出

    For example:

    Loop at itab_italy into stru_ztaly.

    Write: / ……….

    Endloop.

    *5,特殊情况

    Tables: 表名A

    说明:定义了一个和A同样名称的数据结构。

    A type B occurs N

    说明:定义出来的一格内表

    *6data <itab> type <itabtype> [with header line]

    说明:在定义的时候同时生成一个同名的结构

    *******************************************************************************

    12,如何理解程序中的流程呢?

    说明:程序其实存放在database中的

    *******************************************************************************

    13,数据元素,结构和内表的区别是什么?

    用一句话说明:就相当于数学中的 线

    *******************************************************************************

    14, open sql与 native sql的流程区别是什么?

    说明:使用了open sql 就不必要理会后台的数据库,只要掌握了open sql就ok

    使用native sql 只和后台数据库习习相关

    上图:主要说明了

    Open sql 只能使用DML native sql 可以使用DML DDL

    Open sql 包含:insert,update,delete,modfy

    *******************************************************************************

    15,processing of tha abap processing block resumes(摘要)?

    *******************************************************************************

    16,系统参数sy-subrc的功能是?

    若返回值为 0 表示系统执行数据成功

    若返回值不为0 表示系统执行数据不成功(返回具体数据的含义参加F1帮助文件)

    *******************************************************************************

    17,message 的语法使用的例子?

    说明:

    其中bc400 message class

    message

    040the name of the airline &1 is &2.

    041:Airline &1 is not available. (&1&2 都是program中的变量)

    *******************************************************************************

    18,系统得消息类型有几种?

    其中warning的类型,可以不必理会,直接回车,就可继续执行

    Error的类型,在执行过程中若产生Error类型的,将阻止系统继续往下执行

    19,t-code:se14的作用?

    主要是调整表的作用,具体功能未知

    20,系统参数sy-dbcnt的作用是?

    Sy-dbcnt表示找到的记录的序号,第一条记录为1,第二条记录为2,最后一条记录的序号也是记录数

    21,消息管理的t-code:se91

    管理请求号t-code:se10

    创建帐号 t-code:su01

    创建角色 t-code:pfcg

    传输管理系统t-code:stms

    跨客户端的应用层次 t-code:se81

    寻找跨客户端组件 t-code:se84

    创建事务代码:t-code:se93

    创建增强工程:t-code:cmod

    22,modify语句的作用?

    这个是sap特有的语句,若该数据在数据库中存在,则update

    若该数据在数据库中不存在,则insert

    23,报表分为哪四类?

    *1,tools --query

    *2,simple lists --简单报表

    *3,interactivelists --交互式报表

    *4,alv grid Control --alv

    24,query 的特征

    *1,user basic reports

    *2,each user defines own quickviews which only they can display

    *3,uses existing data

    *4,no administrative(管理的) work

    *5,可以使用query进行修改

    *6,interface to internal(EIS,ABC,ALV)and external application

    *7,fewer functions than infoset query

    *8,no transports

    24,如何产生一个简单的报表?

    Report zrl003.

    Data:wa_spfli like spfli.

    Select carrid connid cityfrom cityto

    into corresponding fields of wa_spfli

    from spfli.

    Write: / wa_spfli-carrid, wa_spfli-connid,

    Wa_spfli-cityfrom, wa_spfli-cityto.

    Endselect.

    25,setting the list format(报表的宽度和高度)?

    基本的语法:

    Report <name> line-size <s> line-count <m[(n)]>.

    For example:

    Report zrl003 line-size 50

    Line-count 12.

    ……

    Write:…

    产生出来的效果图为:

    26,如何在程序中显示图标?

    For example:

    Report zrl003.

    Include<icon>

    Include <symbol>

    ……

    *state of free seats

    If seatsfree < 1.

    Write icon_red_light as icon.

    Elseif seatsfree >1.

    Write icon_green_light as icon.

    Endif.

    *state of booked seats

    If wa_sflight-seatocc < 10.

    Write sym_left_hand as symbol

    Endif.

    chouer523 发表于:2007.03.14 11:18 ::分类: ( SAP笔记 ) ::阅读:(1375次) :: 评论 (13) :: 引用 (0)

    27-37 [回复]

    27,设置固定列和显示最后一页的语法
    具体的例子参考sapbc405_fold_scroll_boundary
    28,系统参数sy-vline作用是画竖线
    Sy-pagno 显示页数
    Sy-colno 显示列数
    Sy-linno 显示行数
    29,如何使用checkbox and radiobutton
    参看Example
    * Radiobutton group with frame and frame text
    SELECTION-SCREEN BEGIN OF BLOCK SEATS WITH FRAME TITLE TEXT-S02.
    PARAMETERS PA_OCC RADIOBUTTON GROUP SEAT.
    PARAMETERS PA_FRE RADIOBUTTON GROUP SEAT.
    PARAMETERS PA_ALL RADIOBUTTON GROUP SEAT.
    SELECTION-SCREEN END OF BLOCK SEATS.
    * Parameters displayed in one line
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) TEXT-S03.
    SELECTION-SCREEN COMMENT POS_LOW(8) TEXT-S04.
    PARAMETERS PA_COL AS CHECKBOX.
    SELECTION-SCREEN COMMENT POS_HIGH(8) TEXT-S05.
    PARAMETERS PA_ICO AS CHECKBOX.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK OUT_PUT.
    30,如何使用select-options
    程序名称:SAPBC405_SSCD_SEL_SCREEN_I
    SAPBC405_SSCD_SEL_SCREEN_II
    其主要的语法为:
    select-options for
    Default
    Default to
    Memory id
    Lower case
    Obligatory “必输
    No-extension “不具有延伸功能
    No intervals
    屏幕输出还有一个参数为parameter
    语法为:
    Parameter p_xxxxx like 。
    而select-option 和parameter的使用区别主要在:
    *1 使用Select-option时候,默认的全部的值
    而使用parameter的时候,默认的值是空值
    *2 使用select-option 用for
    使用parameter的时候,使用的是like
    说明:
    *1 由于parameter,默认的是空值,所有在程序中,往往需要用if先进行判断是否为初始值。****initial****
    *2 在程序中如果是与范围的参数进行匹配的时候,where条件中用in
    32,如何进行初始值?
    在initialization的事件中输入
    INITIALIZATION.
    MOVE: MARK TO PA_ALL.
    MOVE: 'I' TO SO_CARR-SIGN,
    'BT' TO SO_CARR-OPTION,
    'AA' TO SO_CARR-LOW,
    'LH' TO SO_CARR-HIGH.
    APPEND SO_CARR.
    CLEAR SO_CARR.
    MOVE: 'E' TO SO_CARR-SIGN,
    'EQ' TO SO_CARR-OPTION,
    'DL' TO SO_CARR-LOW.
    APPEND SO_CARR.
    31,input checks: at selection-screen
    程序名称:SAPBC405_SSCD_AT_SEL_SCREEN
    * Check of selection criterion SO_DEPT
    **判断飞行的事件如果小于6点或者大于22点的时候,提示出错误。
    AT SELECTION-SCREEN ON so_dept.
    IF ( so_dept-low LT '060000' OR so_dept-high LT '060000' )
    OR ( so_dept-low GE '220000' OR so_dept-high GE '220000' )
    AND airp_fr EQ 'FRA'.
    MESSAGE e002(bc405).
    ENDIF.
    其中MESSAGE e002(bc405).这句中的bc405是一个message的类,而e002是一个消息
    For example:
    32,如何在程序中call selection-screen?
    程序中的部分代码为:sapbc405_sscd_call_sel_screen
    Report sapbc405_sscd_call_sel_screen
    ….
    Selection-screen: begin of screen 1100.
    Parameters: pa_cus as check box,
    Pa_agy as checkbox.
    Selection-screen:end of screen 1100.
    At selection-screen on pa_add.
    If pa_add = mark.
    Call selection-sreen 1100
    Starting at 5 5 ending at 50 10.
    If sy-subrc 0.
    Leave to screen 1000.
    Endif.
    Endif.
    显示出来的结果如下:

    33,层级报表的流程?
    说明的是:
    在使用层级报表的时候,必须要进行排序

    34,关于使用程序中的关键字notes
    说明该程序中使用了逻辑数据库

    35,在write语句中,让鼠标移到输出的栏位上就会出现手型的图标
    程序中的代码为参见例子
    if wa_flights-seatsocc gt 0.
    write: wa_flights-seatsocc hotspot on.
    else.
    write: wa_flights-seatsocc.
    endif.
    在write中如何画图标
    Write icon_red_light as icon.

    36,如何得到鼠标取得的数?
    程序中的代码为参见例子
    基本语法:
    Get cursor field [value ]
    For example:
    *1,data: field_name(30), field_value(50).
    get cursor field field_name value field_value.
    *2 Data: field_name(30).
    ……
    AT LINE-SELECTION.
    GET CURSOR FIELD field_name.
    CASE field_name.
    WHEN 'WA_FLIGHTS-CARRID'.
    SELECT SINGLE carrname currcode INTO (carrname, currcode)
    FROM scarr WHERE carrid = wa_flights-carrid.
    WRITE: / 'Airline carrier:', carrname,
    / 'Short name:', wa_flights-carrid,
    / 'Local currency of the airline:', currcode.
    WINDOW STARTING AT pos sy-curow
    ENDING AT 50 30.

    37,事件on change of
    参见例子
    On change of 、
    New page
    说明:当改变变量的时候才开始新的一页。

     
    1.ANY TABLE:即任意表类型,此种定义方式只能在传递参数的时候定义。
          例如:FORM XXX USING/CHANGING TYPE ANY TABLE .
    2.ANY TABLE包括了两种类型:INDEX TABLEHASHED TABLE
       1.INDEX TABLE:包括了STANDARD TABLESORTED TABLE
    A.      STANDARD TABLE:其实就是一个线性表,通过key访问内表是线性查找的,也就是说,随着表中记录的增加,对表的操作的时间开销也相应的增加。
    定义方法:TYPES/DATA LIKE/TYPE STANDARD TABLE OF .
    B.      SORTED TABLE:顾名思义,表中的记录是按照一定的顺序排列的。访问表的主要方式是表中定义的key,如果key不唯一,则选择index最小的那个。也可以通过index来访问排序表,如果你想通过index插入一条记录,系统会自动检查你插入的位置是否正确。所以,如果插入的时间比插入到标准表的时间会长。因此,尽量选择key来对排序表进行操作。
    定义方法:TYPES/DATA LIKE/TYPE SORTED TABLE OF .
    2.HASHED TABLE:对哈希表只能用你定义的key进行操作,而不能使用index进行操作。因此,定义哈希表必须定义unique key 。注意:所有关于使用index操作表的语句都不能用于操作哈希表。例如:sortloop等。
             定义方法:TYPES/DATA LIKE/TYPE HASHED TABLE OF .
    2.      内表的操作:
    1.创建:
          A. 定义一个结构,然后type/like这个结构
             例如:
    TYPES: BEGIN OF ,
             ...
             i> ...,
             ...
           END OF .
    DATA  TYPE STANDARD TABLE OF
                     WITH NON-UNIQUE DEFAULT KEY
                     INITIAL SIZE
                     WITH HEADER LINE.
          B. type/like系统表或者数据库表或者结构
    DATA  TYPE STANDARD TABLE OF <系统表名>
                     INITIAL SIZE
                     WITH HEADER LINE.
    2.添加数据:
          AAPPEND:直接向表中添加数据
          B.向表中插入数据:
    1. INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx] [ASSIGNING |REFERENCE INTO dref].
    2. INSERT [wa INTO|INITIAL LINE INTO] TABLE itab [ASSIGNING |REFERENCE INTO dref].
          C.相同字段求和向表里添加:
    Basic form
    COLLECT [wa INTO] itab.
    Extras:
    3.删除数据:
    4.修改数据:
  • 相关阅读:
    c.vim
    Ubuntu18.04重装指南
    [TJOI2017]城市 【树的直径+暴力+优化】
    [Bzoj3696]化合物【暴力+树形Dp】
    [JLOI2015]战争调度【暴力+树形Dp】
    [Bzoj3743][Coci2015] Kamp【换根Dp】
    [POI2017]Sabota【观察+树形Dp】
    [CQOI2009]叶子的染色【性质+树形Dp】
    COCI2014/2015 Contest#1 D MAFIJA【基环树最大独立点集】
    [牛客网] 推箱子【离散,线段树区间覆盖】
  • 原文地址:https://www.cnblogs.com/elegantok/p/1338818.html
Copyright © 2020-2023  润新知