大家好,欢迎来到IT知识分享网。
1、在涉及到数字计算的时候可能会要求数值保留几位小数,以百分比的形式显示占比:
2、定义选择条件:
(1)单选
PARAMETERS:P1 RADIOBUTTON GROUP R1 DEFAULT ‘X’ USER-COMMAND CREATE,”创建领料单
P2 RADIOBUTTON GROUP R1.”修改领料单
(2)多选
PARAMETERS:p1 AS CHECKBOX DEFAULT ‘X’ USER-COMMAND CREATE,”采购模式,寄售或标采
p2 AS CHECKBOX .”标采
(3)判断条件:if p1 = ‘X’(注意这里一定是大X)
3、定义字段类型,字段名为name1,字段类型参考LFA1的name1
NAME1 TYPE LFA1–NAME1,”供应商名称
4、PERFORM FRM_GET_DATA.调用 form FRM_GET_DATA.
5、汇总:
LOOP AT IT_itab1.
it_itab2-matnr =it_itab1-matnr. “ 物料
it_itab2-werks =it_itab1-werks. “ 工厂
it_itab2-lifnr = it_itab1-lifnr. “供应商
it_itab2-menge =it_itab1-menge. ” 开票数
it_itab2-wrbtr =it_itab1-wrbtr. ” 开票净额
COLLECT IT_itab2
ENDLOOP.
这是根据物料,工厂,供应商汇总开票数和开票净额
6、for all entries in :
使用for all entries in语句将不能使用join的聚集表或者需要使用select的内表与内表串联。
SELECT
EINA~MATNR“物料
EINA~LIFNR“供应商编码
EINA~INFNR“采购信息记录号
EINE~WERKS“工厂
INTO CORRESPONDING FIELDS OF TABLE IT_EINENA
FOR ALL ENTRIES IN IT_ITAB
WHERE MATNR = IT_ITAB–MATNR
AND LIFNR = IT_ITAB–LIFNR.
7、inner join(等值连接):只返回两个表中联结字段相等的行
SELECT
RSEG~MATNR“物料编码,物料号
RSEG~WERKS“事业部
RSEG~BELNR“凭证编号
RBKP~LIFNR“供应商编码
RBKP~BUDAT“记账日期
INTO CORRESPONDING FIELDS OF TABLE IT_RSEGRBKP
FROM RSEG INNER JOIN RBKP ON RSEG~BELNR = RBKP~BELNR
WHERE MATNR IN S_MATNR
AND BUDAT IN S_BUDAT.
8、binary search 二分查找
READ TABLE TAB2 WITH KEY COLUMN1 = ‘0800113864’ COLUMN2 = ‘2012‘ COLUMN3 = ‘3018054318′ BINARY SEARCH.
的时候,使用到COLUMN1 = ‘0800113864’ COLUMN2 = ‘2012‘ COLUMN3 = ‘3018054318′ ,则对此系统中内表排序的时候需要依照此三个字段进行排序。
9、报表展示字段及显示名称
FORM SET_FIELDCAT .
PERFORM CREATE_FIELD_CATALOG USING: “‘CHECK’ ‘列号’ ‘X’ ‘X’ ‘5’,
‘MATNR’ ‘物料号’ ” ” ’13’,
‘MAKTX’ ‘物料描述’ ” ” ’20’,
‘WGBEZ’ ‘物料组’ ” ” ’10’, ENDFORM.
10、对重复的代码可以写在一个form中,然后perform调用
11、将一个表的数据赋给另外一个表:it_itab[] = it_itab2[].
12、将一个表的数据添加到另一个表中:append lines of it_itab3to it_itab2.
其中it_itab2和it_itab3是带表头的内表
13、abap开发不建议多层loop嵌套,会导致执行效率低,一般情况下是loop里用read语句查找符合条件的数据,使用read的时候一定要判断sy-subrc是否为0(为0表示有数据),如果不判断的话容易导致内存溢出。
使用SELECT语句选择查询:
SY-SUBRC = 0: 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。
SY-SUBRC = 4: 没有数据。
SY-SUBRC = 8: 只有使用“SELECT SINGLE FOR UPDATE”时才会有,
表示: WHERE条件指定的记录不止一行,结果是没有记录被选中。
14、Read和loop的区别:
内表中只有一条记录的时候,或者是读取的条件能确定内表中的唯一一条记录的时候使用read,如果有多条重复数据那么就建议使用loop。
15、按类型定义变量
ABAP的变量需要通过关键字DATA进行声明,当同时声明多个变量时,需要在DATA后面加冒号,如“DATA:”,每个变量可以分配默认值,使用”VALUE ‘默认值’”进行定义,基本语法如下:
DATA <变量名>(长度) TYPE <数据类型> VALUE <默认值>.
例如:定义一个C类型变量“TEST1”,长度为10,默认值为“HelloSap” 。
DATAtest1(10) TYPE C VALUE ‘HELLO SAP’.
16、定义使用到的类型池及选择屏幕所要参照的表名(
slis应该是个Package.声明了它后就可以用它包括的函数、类、消息等。
* type-pools define(定义使用到的类型池)
TYPE-POOLS:SLIS.
* tables define(定义选择屏幕所要参照的表名)
TABLES:AFKO,AFPO,ZMM015.
17.将所有输出的数据放在一个it_itab里可以提高执行效率。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/10000.html