abap

SAP扫盲系列之一:什么是SAP系统和应用服务器

耗尽温柔 提交于 2020-02-27 13:28:07
Jerry Wang,2007年加入SAP成都研究院工作至今,至今为止有13年的ABAP开发经验,SAP社区导师,SAP中国技术大使。 SAP Netweaver Application Server - SAP Netweaver应用服务器是SAP ABAP应用的开发和运行平台,ABAP开发人员在上面可以专注于具体业务逻辑的开发,而涉及到更底层的基础设施相关的任务,比如请求的负载均衡,进程同步和调度,内存管理,服务器多实例间的缓存同步等等,统统交由Netweaver平台本身处理。如此一来,一个ABAP开发人员,即使不具备精深的计算机组成原理,操作系统,计算机网络等领域知识,也能胜任SAP应用的开发工作。 什么是SAP系统? (本文仅仅讨论基于ABAP技术栈实现的SAP系统) SAP系统是SAP解决方案的组成部分,是一套实现特定业务功能的可供安装的软件系统。 SAP系统通常的组成部分: (1) 数据库 (2) 一个或多个应用服务器实例(Java或ABAP) (3) 中央服务实例(central services),比如消息服务器或者Enqueue服务器 每个SAP系统由其系统ID唯一标识,该ID为一个三位数的字符,由大写字母或者数字组成,比如AG3. 什么是应用服务器实例 - Application Server instance SAP系统的代码运行在SAP应用服务器实例上

ABAP--如何限制REUSE_ALV_GRID_DISPLAY_LVC函数的某行某列的编辑(代码样例)

那年仲夏 提交于 2020-02-26 07:45:29
*&---------------------------------------------------------------------* *& Report ZDEMO_ALVGRID_EDIT * *& * *&---------------------------------------------------------------------* *& * *& Example of a simple ALV Grid Report * *& ................................... * *& * *& The basic ALV grid, Enhanced to display specific fields as * *& editable depending on field value * *&---------------------------------------------------------------------* REPORT ZDEMO_ALVGRID_EDIT . TABLES: ekko. TYPE-POOLS: slis. "ALV Declarations *Data Declaration *---------------- TYPES: BEGIN OF t_ekko, ebeln TYPE

ABAP 数据库操作

↘锁芯ラ 提交于 2020-02-25 22:06:56
Open SQL中使用INSERT、UPDATE、MODIFY和DELETE语句进行数据的更新操作,其中当SY-DBCNT返回为0,则表示操作成功,此外还 将返回实际操作的数据行数。需要指明的是Open SQL本身并不进行操作权限的检查,若需要进行设定,则要在系统中创建授权对象。 一.INSERT语句 Open SQL中的INSERT语句用于向数据库中插入新条目。 1.插入单行数据: INSERT INTO dbtab VALUES wa. INSERT INTO dbtab FROM wa. wa为工作区,是与数据库具有相同结构的数据对象,一般直接基于数据库结构声明。该语句也可以将数据插入视图中,首先该视图所有字段必须来自同一个数据库表,而且在数据字典中的maintenance status属性必须设定为read and change 注:如果相同表关键字的数据条目已经存在,则不能重新插入,只能对非关键字进行更改(UPDATE,MODIFY) 2.插入多行数据 INSERT dbtab FROM TABLES itab. 其中itab是内表,包含希望插入的数据条目。 注:内表应与数据库的行结构一致。 所有条目成功插入,则SY-SUBRC返回0 使用ACCEPTING DUPLICATE可避免该错误。 INSERT dbtab FROM TABLE itab ACCEPTING

SAP ABAP 处理字符串串串串串串串串(详细)

谁说我不能喝 提交于 2020-02-25 05:33:05
关于ABAP中处理字符串的方法,非常详细,学习过程中总结一下分享给大家,,, ABAP/4 提供多个处理类型 C 即字符串 的数据对象的关键字。 处理字符串 的方法有: 1.拆分字符串split 2.连接字符串 3.获得字符串长度 4.压缩字段内容(去空格) 5.搜索字符串 6.覆盖字符字段 7.替换字段内容 8.转换大/小写并替换字符 9.转换为可排序格式 10 . 根据第一个或最后一个字符移动字段串SHIFT 11.MOVE TO 分配字符串部分 12.字符串的比较 ----------------------------------- 1.拆分字符串 语法: SPLIT <c> AT <del> INTO <c1> ... <cn>. 1 DATA: STRING(60), 2 P1(20) VALUE '', 3 P2(20) VALUE '', 4 P3(20) VALUE '', 5 P4(20) VALUE '', 6 DEL(3) VALUE '***'. 7 STRING = ' Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5'. 8 WRITE STRING. 9 SPLIT STRING AT DEL INTO P1 P2 P3 P4. 10 WRITE: /'P1:' , P1. 11 WRITE: /

The name of the PUBLIC class in the current CLASS POOL must be “…” not “…”

独自空忆成欢 提交于 2020-02-24 11:59:31
问题 I'm trying to create a local class ( Z_MY_LOCAL_CLASS ) inside a global class ( Z_MY_GLOBAL_CLASS ) by clicking "Local Definitions/Implementations" in transaction se24 . Afterwards I copied the source code of another class from its source code-based view into the text area that showed up after I clicked the "local definitions" button. *"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type *"* declarations class Z_MY_LOCAL

ABAP system landscape和vue项目webpack构建的最佳实践

匆匆过客 提交于 2020-02-24 11:12:22
基于Netweaver的ABAP transport route一般都有dev,test和prod三种类型的系统。 而Vue前端项目的webpack build设置也类似。 以 SAP成都研究院数字创新空间开发的智能服务 前端实现为例, 在package.json里定义了名为dev和build两个script: "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "build": "node build/build.js" } 一旦运行npm run dev,会观察到在dev环境下使用了webpack-dev-server这个依赖启动了web服务器 当然webpack-dev-server这个依赖也必须定义在package.json的dependencies区域里: npm install把所有依赖下载到本地后,也能观察到webpack-dev-server.js这个依赖的实现: 执行命令行npm run dev, 实际上执行的命令行为: node "C:Usersi042416Documents_DISCodeSmartServiceFront ode_modules.bin..webpack

sap --- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介

偶尔善良 提交于 2020-02-24 06:45:41
刚开始学ABAP的时候,学到iternal table时,感觉一阵混乱. 搞不清楚什么是work area,什么是header line,以及occurs是干什么用的. 今天终于差不多搞明白了(我还是太弱啊...BS自己一下) 所以还是记录下来..省得自己以后再忘记... 先是用TYPES关键字定义一个行(row)的类型.如下: TYPES: BEGIN OF line, field1 TYPE i, field2 TYPE i, END OF line. 这里的line,就相当于一个自定义的类型,表示一行(row)的字段(field). 这里一行有两个字段field1和field2. 然后是声明一个work area: DATA wa TYPE line. 我用C++(还是对cpp最有好感^^)的概念理解就是, line是一个class,而wa是一个object. 接着是声明一个每一行的类型是line的internal table: DATA itab TYPE line OCCURS 0. 我在暂时把OCCURS作为了区别工作区和内表的标志. OCCURS应该有更深层次的意义,但我目前只能领悟至此... 当我们用以上这个方法来声明一个iternal table时,可以选择是否有无header line. 上面这句就是没有header line的.改成如下就有了: DATA

ABAP数据表的操作

故事扮演 提交于 2020-02-14 02:00:28
ABAP数据表的操作 这几天对于数据标的操作表较多,自己从网上找资料和自己动手操作总结了一些数据表的增删改查操作,希望对一些初学者有所帮助,仅供参考。 开源的数据库操作都离不开INSERT、UPDATE、MODIFY和DELETE语句。其中当SY-DBCNT返回为0,则表示操作成功,此外还将返回实际操作的数据行数。需要指明的是Open SQL本身并不进行操作权限的检查,若需要进行设定,则要在系统中创建授权对象。 一.INSERT语句 Open SQL中的INSERT语句用于向数据库中插入新条目。 1.插入单行数据:dbtab是内表,wa是工作区。 INSERT INTO dbtab VALUES wa. INSERT INTO dbtab FROM wa. 内表:Internal memory table 内存中的表,是外设(屏幕、磁盘,打印机等)和数据库表数据交换的中介。 wa为工作区,是与数据库具有相同结构的数据对象,一般直接基于数据库结构声明。该语句也可以将数据插入视图中,首先该视图所有字段必须来自同一个数据库表,而且在数据字典中的maintenance status属性必须设定为read and change 注:如果相同表关键字的数据条目已经存在,则不能重新插入,只能对非关键字进行更改(UPDATE,MODIFY) 2.插入多行数据:datab是内表,itab是表

ABAP调用CIS webservice

左心房为你撑大大i 提交于 2020-02-13 15:34:10
FUNCTION ZMLSCP1_FR0008. *"----------------------------------------------------------------------*"*"本地接口: *" IMPORTING*" VALUE(I_EBELN) TYPE EBELN OPTIONAL*" VALUE(I_MATNR) TYPE MATNR OPTIONAL*" EXPORTING*" VALUE(O_STATU) TYPE CHAR1*" VALUE(O_MSG) TYPE CHAR255*" TABLES*" OT_RESOURCE STRUCTURE ZSRM_RESOURCE*"----------------------------------------------------------------------*&Flag0-手动;1-自动 DATA:L_TABIX TYPE SY-TABIX. DATA:LV_FLAG TYPE C. DATA:LV_CON TYPE STRING. DATA: ERROR TYPE REF TO CX_AI_SYSTEM_FAULT. DATA: PRXY TYPE REF TO ZCO_REQUEST_IMATNR_RESOURCE_SE."Proxy NameDATA: Z_IN TYPE

abap case when 例子

心已入冬 提交于 2020-02-11 12:49:52
/*--> */ /*--> */ DATA : gv_1 TYPE c . DATA : gv_2 TYPE i . gv_2 = 60 . IF gv_2 >= 0 AND gv_2 < 60 . gv_1 = 'A' . ELSEIF gv_2 >= 60 AND gv_2 < 70 . gv_1 = 'B' . ELSEIF gv_2 >= 70 AND gv_2 < 80 . gv_1 = 'C' . ELSEIF gv_2 >= 80 AND gv_2 < 90 . gv_1 = 'D' . ELSEIF gv_2 >= 90 AND gv_2 <= 100 . gv_1 = 'E' . else . gv_1 = 'F' . ENDIF . CASE gv_1 . WHEN 'A' . * MESSAGE '.BACK.' TYPE 'i'. WRITE : / gv_2 , '不及格' . WHEN 'B' . * MESSAGE '.CANCEL.' TYPE 'i'. WRITE : / gv_2 , '及格' . WHEN 'C' . * MESSAGE '.exit.' TYPE '1'. WRITE : / gv_2 , '中' . WHEN 'D' . * MESSAGE '.CANCEL.' TYPE 'i'. WRITE : / gv_2 , '良好