本人开始转行到SAP开发

sap开发核心语言ABAP
有套视频大概一个多月可以入门,
我发现自学一个东西真的很有意思,每天下班后闭关修炼,加成自己,多年后你就是大神,你还怕没收入吗?咳咳有点说多了下面,我随便记录一下自己的学习比较毕竟散,我是用来自己看的。

FI 财务报表
co成本控制
sd销售模块
mm 物料管理
pp生产模块

abap开发模块
basis 补丁,硬件
pm 工厂管理
ps项目管理
QM质量管理
数据字典是一个工具,和新华字典类似
数据字典点主要功能为保证数据点完整性,一致性,安全性。
结构是什么?
结构就是有系列的字段组成
元素是什么?
元素就是单独点一些数据
数据类型是数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。在SAP中,数据类型有3种:

  1. Data element:最基本的数据单位,没有结构,定义了数据的描述,数据类型和长度等其他特征。
  2. Structure:由数据元素或者其他的数据类型组成的一个特定结构。
  3. Table type:table类型的数据元素,可存放多行数据。
    LIKE???LINE?OF
    数据字典定义点表不是直接创建一个物理表,而是在中间层创建一个表,创建完成后它自动的在后台创建一个物理表
    abap数据字典的基本对象,表,视图,数据类型,域,搜索帮助,锁对象。六大对象。
    database-vice数据库视图
    Projection -view投影视图
    Maintenance view维护视图
    Help view帮助视图
    SAP
    SE16:专门看表数据的。
    SM30:查看视图数据的。
    SAP数据类型
    程序命名GUI法
    以Z开头
    报表是ZR
    接口是I
    打印是F
    快速调整字体大小 Ctrl + 鼠标滚轮
    剪切一行 Ctrl + Shift + X
    删除一行 Ctrl + Shift + L
    复制一行 Ctrl + Shift + T
    转成小写 Ctrl + L
    转成大写 Ctrl + U
    大小写相互转换 Ctrl + K
    取消 Ctrl + Z
    重做 Ctrl + Y
    原地复制一行 Ctrl + D
    tableType:表类型。
    我的程序
    ZOROGRAM_F0029

    Z51SAP_CAO
    表格维护生成器
    1.SE54
    2.在se11表格中实用程序中选择维护生成器
    权限组指点是查看的权限,选择无权限,函数组只要给个名字就可以了。
    数据库视图
    其中数据库视图主要是用来查数据的。
    维护视图专门用来维护数据

LOC锁:
释放锁DEQ
加锁:ENQ

语法:
数据类型缩写
DECIMALS x表示小数 位。
C:文本型,默认长度为1,默认值为 space(空).
D: 日期型,默认长度8 允许长度8 ,默认值为 00000000 ,格式为 YYYYMMDD.
F:浮点型,默认长度8 允许长度8 ,默认值为 0.
I:整型,默认长度4 允许长度10 ,默认值为 0
N: 数值型,默认长度1允许长度31 ,默认值为 ‘00000000’ 表示存储数值类型的字符串。
P:压缩型,默认长度8 允许长度16 ,默认值为 0,将两个十进制数字压缩到1个字节注意如果需要存储小数必须指定小数的个数。
T:时间类型,默认长度6 允许长度6 ,默认值为 ‘000000’ 时间。
P型小数点要使用DECIMAL声明小数位n.
变量定义;DAta:后面跟name

like用在已经定于好的数据类型

type用在定义数据类型。

常量定义:constants;name
打印关键词 WRITE
move-corresponding 用于结构赋值,仅复制相同名称的字段

=赋值是基本赋值

WRITE xx(数据源) to xx(赋值对象)。

move xx to xx(同上)。
c类型转N类型只保留数值,其他忽略。

C类型不能直接转行I类型需要通过N类型转换。

小数位赋值时一定要“”否则系统不知道你中间那个点是结束还是什么。

系统常量的意思:
SY-SUBRC:语句执行后的返回值,0表示成功
SY-DATUM:当前服务器日期
SY-UZEIT:当前服务器时间
SY-ULINE:255长度的水平线
SY-VLINE:垂直线 SY-INDEX:循环说执行的次数
SY-TABIX:内表循环的次数
SY-DYNNR:当前Screen号
SY-MANDT:当前登录的Client号
SY-STEPL:返回当前操作的屏幕行号(Table Control)
SY-LOOPC:当前表格控件在屏幕中的总行数(Table Control)
SY-UCOMM:PAI所出发的功能代码
SY-DYNNR:当前屏幕号
SY-MSGID:Message Class
SY-MSGNR:Message Number
SY-MSGTY:Message Type
SY-MSGV1~4:Message Variant
SY-LINCT:REPROT语句中设定的LINE-COUNT
SY-LINSZ:REPROT语句中设定的LINE-SIZE
SY-SROWS:当前窗口的列表行数
SY-SCOLS:当前窗口的列表栏目数
SY-PAGNO:当前页的页码
SY-LINNO:当前选定行的行号
SY-COLNO:当前选定列的列号
SY-LSIND:当前列表索引,第一级列表为1
SY-LILLI:选择某行时光标行位置
SY-CUROW:选择某行时光标列位置
SY-REPID:返回当前程序名
MOVE-CORRESSPONDING to :此表达的是:
各种符号意思:
+

/

mod(除法的一种取余)
=或EQ(等于)
<>或><或者 NE(不等于)
<或LT(小于)

或GT(大于)
<=或LE(小于等于)
=或GE(大于等于)
逻辑运算符号
AND 且。
OR 或。
not 非。
移位
关键词
SHIFT XX(数据源) by x(整数需要移动多少位) PLACES (默认往left(左)移动right(右))
指定字符串c从c1位置开始移位。
shift c(数据源)up to c1(指定的位置)
write sy-subrc(检查是否成功,成功返回0否则返回4)

移除字符串c左边/右边的子字符串c1:
SHIFT c LEFT/RIGHT DELETING LEADING/ TRAILING c1

把‘abcdefg’中的abc替换成123
REPLACE ‘ABC’ WITH ‘123’ INTO ‘ABCDEFG’.
去除所有空格
condense (数据源) no-GAPS.

查找某个字符串
SEARCH (数据源) for(目标数据)

TYPE STANDARD TABLE OF定义标准内表

什么叫执行语句
除了定义点语句其他语句都叫执行语句。

条件控制语句
DATA: lv_number type int2.
DATA lv_result TYPE int2.
lv_number = 7.
lv_result = lv_number mod 2.
write: sy-uline.
IF lv_result = 0.
WRITE:/,‘偶数’.
else.
write:/,‘基数’.
ENDIF.

CLEAR 内表。
清除变量内容
常量不能被清空

CONTINUE:无条件终止当前循环,直接执行下一次循环
CHECK: 有条件终止当前循环
EXIT:终止所有循环

PERFORM作用是用来调用封装的代码。

WITH HEADER LINE这是一个旧bai说法,定义内表的时du候,你可以指定是否创建一个zhi同名的表头(工作区)
内表

内存中建立的临时表。

内表有三种类型

1standard:标准表

2sorted:排序表

3hashed:哈希表

共同点:

都可以对内存的数据进行插入,删除,修改操作
不同点:

标准表:在插入数据时并不对数据行的地址进行重新排序存储。

排序表:在增加和插入时要对数据存储的地址进行重新排序。

哈希表:只能通过关键字进行访问,在检索数据里与数据行数无关。

内表的初始化:CLEAR只能清空工作行。

数据库插入只有一个insert关键字

内表有三个关键字

insert插入一行或者多行数据。

append也是表示插入,内表仅用于存储数据,可以进行附加。

collect也是表示插入,内表去重复,统计字段之和。

initial:表示空行

SPLIT <需要拆分的程序> AT <拆分条件> INTO h1…hn(h为变量名称使用空格隔开)。

使用"LOOP … ASSIGNING …"可以直接修改内表中的数据,而不需要先将内表数据复制到相应工作区,然后再更新回去,性能提高。

BREAK-POINT.表示断点

  • 参考定义
    DATA: itab4 like itab1.“参考已定义的内表”
    data: itab6 TYPE TABLE OF (数据库表名称).“参考数据库表定义内表”
    DATA: itab7 TYPE STANDARD TABLE OF zschange.“参考表结构定义内表”
    *排序表,哈希表
    DATA itab8(内表名称) TYPE SORTED TABLE OF 数据库表名称 WITH UNIQUE KEY 关键字(数据库字段).“排序表”
    DATA itab9(内表名称) TYPE HASHED TABLE OF 数据库表名称 WITH UNIQUE KEY carrid.“数据库字段”

*定义工作区
DATA:ls_itab1 type ty_inab1.

WITH HEADER LINE 此关键词就是在定义内表的时候定义一个名字相同的工作空间,(旧方法)。

通过DESCRIBE获得内表的行
DESCRIBE TABLE LINES n
DESCRIBE?TABLE?emp?LINES?n1.???"表中无数据,回执为0.

  • 内表处理
    *添加条目
    ls_itab1-field1 = ‘00001’.
    ls_itab1-field2 = 00001.
    INSERT ls_itab1 INTO itab1 INDEX 1.
    APPEND ls_itab1 to itab1 .
    COLLECT ls_itab1 INTO itab1.
  • 添加条目排序表
    ls_itab1-field1 = ‘00001’.
    ls_itab1-field2 = 00001.
    INSERT ls_itab1 INTO itab8 INDEX 1.
  • APPEND ls_itab1 to itab8 .
    COLLECT ls_itab1 INTO itab8.
  • 添加一个内表到另一个内表中
    append lines of itab1 to itab2.
    append lines of itab1 FROM 1 to 2 to itab2.
    INSERT LINES OF itab1 to itab2.

DELETE TABLE itab WITH TABLE KEY k1=v1…kn=vn.

按具体值删除

DELETE TABLE itab [FROM wa].

参照其它内表值删除

DELETE itab INDEX idx.

删除具体行数据

DELETE itab FROM idx1 TO idx2.

删除具体行数范围间数据

DELETE ADJACENT DUPLICATES FROM itab.

删除重复数据,执行此条件前必须先排序

BOOK1[] = BOOK[].内表赋值给内表。

APPEND INITIAL LINE TO

排序
sort itab(名称) [by f1 f2…fn]
sql
SELECT语法结构:
SELECT FROM
?INTO
WHERE
GROUP BY
ORDER BY

其中各关键字的属性描述如下:
SELECT :具体的查询字段。
SELECT SINGLE:定义单行查询。
FROM :所查询的透明表。
INTO :查询结果赋值对象,赋值到具体表或结构体。
INTO (…):将查询结果赋值到具体字段。
INTO CORRESPONDING FILES OF :将查询结果按字段匹配赋值给具体的内表或者结构体。
WHERE :查询条件。
GROUP BY :分组查询条件。
ORDER BY :排序条件。

使用SELECT…ENDSELECT语法能循环读取及操作查询
通过系统参数SY-DBCNT可以获取当前读取数据的行数
COUNT():统计查询总数
SUM():统计表中某个数值字段的总和
AVG():统计表中某个数值字段的平均值
MAX():统计表中某个字段的最大值
MIN() :统计表中某个字段的最小值。

IKE LINE OF后面接一个内表,表示一个DATA参数具有和内表一样的结构(structure),例如有一个TABLES:Z_USER,Z_USER有两个字段,一个ID,一个NAME,那么

DATA:WA LIKE LINE OF Z_USER 表示WA和Z_USER的STRUCTURE一样,可以吧WA当做Z_USER的WORK AREA来用。

LIKE TABLE OF 后面接一个STRUCTURE,表示一个DATA参数是一个内表,这个内表的结构和后面接的那个结构一样,

与alv事件相关事务代码
se37
REUSE_ALV_EVENTS_GET
常用事物
user_command 客户响应

top_of_page 标题栏的设置

pf_status_set 工具栏设置

调用alv显示:REUSE_ALV_EVENTS_GET(在工具模式中输入以上函数)

判断内表是否为空的语句为:
IF IT_DATA IS INITIAL. "如果内表为空

*执行体

ENDIF.

IF NOT IT_DATA IS INITIAL. "如果内表不为空

*执行体

ENDIF.
lav事件常用的
user_command

top_of_page

pf_status_set

rrc远程函数

使用CALL FUNCTION 语句调用方法函数注意函数名称必须是大写而且要用单引号包裹例子:

CALL FUNCTION ‘BC400_MOS_POWER’

EXPORTING表示输入参数的关键字。

IMPORTING表示输出参数的结果关键字。

se80叫做对象开发浏览器,可以查看所有的开发对象。

补充前导零的函数:‘CONVERSION_EXIT_ALPHA_INPUT’。

内存有两种,一种是sap内存,一种是abap内存,

sap内存要比abap中的内存要大。

sap内存不管你打开了多少个窗口,所有的内存都是共享的,

abap只是针对一个进程进行内存共享,如果一个用户开启多个窗口其中内存不是共享的,

CALL TRANSACTION ‘’.在同一个程序中调用另一个程序的语法。

还可以使用submit {程序名称}

abap内存共享成功需要他们定义的变量名称要一致才行。

DEFAULT 此关键词是设置默认值的意思。

MEMORY ID 往sap内存中设置默认值。

AS CHECKBOX 复选框关键字 长度只能唯一超过就报错,复选框如果选中对应的值是大写的X 否则就是空格。

RADIOBUTTON GROUP{名称}单选框,所以在书写的时候最少需要两个元素才能使用,当然可以定义多组单选框以名称为分组。

AS LISTBOX 下拉菜单。

VISIBLE LENGTH 10显示长度,我们肉眼能看到的长度并不是输出参数的长度。

SELECT-OPTIONS name for(参考)data_object
.
name 为选择选项的名称

data_object是一个预定义的变量,或者数据库表的字段。

SELECT-OPTIONS是当做内表来进行的包含四列 sing (符号),optin(比较符号),low(最小值),high(最大值)

它定义的类型是char2只能是字母来表达。

types 声明表。

调试的时候出现帽子一样的图标表示他是一个内表。

no INTERVALS 表示所有的选择元素都只有一个输入项。

屏幕事件就是点击某一个按钮触发不同的事件表示不同的功能。

INTO CORRESPONDING FIELDS OF的作用:匹配工作区
,(INTO CORRESPONDING FIELDS OF TABLE的作用是:表字段名转换在查询过程中我们通常会遇到这样的情况,将透明表查询值直接传递给内表:

两表中字段结构一样,但字段名称却不同

通常的情况下将字段名称设为一致的

除此之那还可以用AS关键字,就像SQL中的用法一样

程序有五种程序:可执行程序,模块池程序都可以插入屏幕,函数程序,接口程序,子程序。)

对话屏幕:客户操作之后和程序进行交互叫对话屏幕,

跟程序显示相关的程序都在pbo里边,用户触发了某一个事件,我们要进行响应这部分逻辑流写在了pai里边

LEAVE PROGRAM.退出屏幕。

LEAVE SCREEN:退出当前屏幕。

concatenate表示字符串拼接的意思。

在查询过程中我们通常会遇到这样的情况,将透明表查询值直接传递给内表:

两表中字段结构一样,但字段名称却不同

通常的情况下将字段名称设为一致的

除此之那还可以用AS关键字,就像SQL中的用法一样

*这个意思是新语法,不用自己再创建内表或者工作空间它自动创建

    INTO TABLE @DATA(lt_zsdt02_021)

*FOR ALL ENTRIES IN这是一个固定写法,以内表中的某些字段为条件在数据库中取数,我们一般bai使用for all entries in 语句将该表与内du表串联。

    FOR ALL ENTRIES IN @gt_item

    WHERE zvbeln EQ @gt_item-zvbeln.

select single?single选取的数据要放到 工作区中,而不能放到表中。

INTO TABLE与APPENDING TABLE的区别 从字面看好像作用是相同的,但具体使用以来还是有区别的。

如果都是从数据库表中select一次数据,添加到内表中,他们的作用相同;

但是多次,他们的作用则有很大差别,INTO TABLE:将数据select出来添加到内表时会将内表先清空再添加,

而APPENDING TABLE则会直接追加,实现累计效果。

程序二:
LOOP AT it_marc.

it_marc-dispo = ‘G00’.

it_marc-plifz = 5.

MODIFY it_marc TRANSPORTING dispo plifz.

ENDLOOP.
程序二使用了TRANSPORTING子句,
更新内部表记录时仅更新DISPO,PLIFZ两个字段.

CALL METHOD

特殊符号 &表示拼接字符串代码如下:
DATA name(300) TYPE c VALUE 'spfli AS p ’
& ’ INNER JOIN sflight AS f ’
& ‘ON p~carrid = f~carrid and p~connid = f~connid’ &
'inner join sbook as b ’ &
‘ON b~carrid = f~carrid AND b~connid = f~connid AND b~fldate = f~fldate’.

abap 命名规范
数据定义(data definitions):

type类型 : TY_

全局变量 GV_

局部变量 LV_

全局工作区GS_

本地工作区: LS_

全局内表:GT_

局部内表: LT_

指针(field symbols):

本地结构:<LFS_*>

全局结构:<GFS_*>

功能模块:

输入参数:IV_ eg: IV_MATERIAL

输出参数): EV_

changing-parameter :CV_

表 :T_* eg:T_MATERIAL

类 (Class) :

输入参数:IV_ eg: IV_MATERIAL

输出参数: EV_

changing-parameter :CV_

结果 : RV_

异常 :ZCX_ eg: ZCX_ERROR

Parameter : P_*

Select-Options : S_*

Range Field : R_*

Interface : ZIF_*

LOOP … ASSIGNING …的使用

表示指针指向的地址。

Field-Symboles: like ITAB.

LOOP AT ITAB ASSIGNING <WA>.

  I = SY-TABIX MOD 2.

  IF I = 0.

    <WA>-FLAG = 'X'.

  ENDIF.

ENDLOOP.

事件
双击事件:&IC1

SKIP FIRST SCREEN意思是:跳过第一个屏幕。

REF TO(参考)用来定义类和接口。

触发异常:
Raise.
如果在function的调用中指定异常,控制直接返回调用程序。

如果未列出该异常,则程序会因运行是错误而终止。

变式是什么:
这个我不清楚确切的定bai义,但du根据我以往用的情况,这个变式多半是zhi指,你自己设定的特殊格式和内容。

比dao如你在使用一个报表时,你常用几个信息,你就可以将这些信息输入后,点那个小框框(变式),

保存一个名字,下次你再用的时候,可以直接将你保存的名字输入,就不必一个一个的重新填写了。
massge 类型 E类型就是在屏幕下方出现提示,I类型就是弹出一个提升框。
instance 级别,叫做实例属性 必须要创建一个对象接受才能拿来用。
constant 常量级别,可以当作静态属性来用。
判断对象是否创建成功 使用关键字 is bound (是否被绑定)。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
30天ABAP程序 ABAP并不难,有人说SAP系统重在管理思想,不在技术,通常对有编程经验的读者不用任何培训参考一些相关资料就可立即上手. 简单介绍下ABAP/4的一些特征: 1.和SAP紧密结合,尤其在开发报表方面,坦率地讲,除了和SAP集成的好处,.我定认为ABAP在报表开发上比Crystal report Tool要高效简单. 2.和VB一样 ,ABAP是解释形的,如读者精通VB,ABAP应该豪不费力,倒是既然SAP是企业管理解决方案,ABAPer必须对企业管理流程熟悉. 解释性的另一好处是可以很好跟踪程序逻辑(使用/H),这对了解业务逻辑的实和追踪错误很有效. 和VB不同的是,VB跟踪时允许程序运行指针随意往回或往全拉而ABAP程序去不行, 但是ABAP程序允许在运行时修改变量的值,这是编译程序不能做到的. 当然通常编译比解释执行的速度会更快. ABAP程序执行并不直接读取源代码,而是执行内部经过“生成”的描述,对于ABAP/4字典的修改激活后将触发内部描述的重新生成,如程序并没激活就执行原版本,或者出现错误(程序没激活可能造成ABAP Dumping ABAP). 3.在对数据库处理方面,除了可直接执行SQL(使用native sql,缺点是错误处理很难控制,相当于有开发环境将SQL 语句直接传给DB去执行),SAPABAP开发环境层还提供了一套Open SQL访问底层数据库. 4. 程序员都知道Windows平台下开发都支持事件驱动,Windows系统本身也支持事件驱动,ABAP也提供了事件驱动,这表现在Dialog编程方面,但是ABAP在此方面并不强,而且相对讲也比较难于掌握(在后面会讨论). 5.基于面向对象的风靡,ABAP在此方面也有相当反应,在SAP强大的软件包中提供了大量可重复使用的程序,读者也可定义类并使用它快速建立新的对象. 6.类似Java,ABAP开发的程序能运行于任何操作系统(Java有Java虚拟机,ABAP也有ABAP processor),多种数据库(比如在ABAP字典中实现了透明表对各种底层数据库表的映射,这样在ABAP层看到的透明表就和具体数据库无关),各种网络系统.
很高兴听到你对转行到Unity游戏开发的兴趣!转行是一个挑战,但也是一个机会来习新的技能和追求自己的兴趣。下面是一些步骤和资源,可以帮助你开始转行到Unity游戏开发: 1. 习Unity引擎:Unity是一款流行的游戏开发引擎,它提供了丰富的工具和功能来创建游戏。你可以通过官方网站(https://unity.com/)下载并安装Unity引擎。同时,Unity还提供了大量的教程和文档,可以帮助你入门和深入习。 2. 习C#编程语言:Unity使用C#作为主要的编程语言。如果你已经有Java开发的经验,习C#将会相对容易,因为两者在语法上有很多相似之处。你可以通过在线教程、书籍或者参加培训课程来习C#。 3. 完成Unity游戏开发教程:为了熟悉Unity的工作流程和开发过程,你可以完成一些基础的Unity游戏开发教程。这些教程将帮助你了解如何创建场景、添加角色、实现游戏逻辑等。 4. 参与游戏开发项目:参与实际的游戏开发项目是提高技能和经验的最佳方式。你可以加入游戏开发社区,寻找志同道合的人一起合作开发游戏项目。这样可以帮助你建立自己的作品集,并且习到更多实际的开发经验。 5. 持续习和提升:游戏开发是一个不断进步和习的领域。除了掌握Unity和C#的基础知识外,你还可以习其他相关的技术,如游戏设计、图形、物理模拟等。参加游戏开发相关的培训、研讨会和会议也是不错的选择。 希望以上的步骤和资源对你转行到Unity游戏开发有所帮助!祝你好运!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值