abap 帮助文档 中文_一个13年ABAP老兵的建议:了解这些知识对ABAP开发有百利而无一害...

在Jerry之前的图片推送中,我提到了SAP社区上这样一篇博客:

Proof of Concept: Deploying ABAP in Kubernetes

https://blogs.sap.com/2020/02/06/proof-of-concept-deploying-abap-in-kubernetes

[图片] 1

ef9a9402ff28b754173b1038d0442b36.png

里面介绍了SAP Linux实验室的工程师们将ABAP应用服务器各组件进行容器化并部署到Kubernetes上的尝试。

读完这篇博客后,我很想把其大意译成中文分享给大家,但是看到作者在博客里分享的这张架构图后,我觉得还是先有必要单独用一篇文章回顾一下ABAP Netweaver服务器的组成部分,作为探讨ABAP容器化的预备知识储备,因此就有了这篇文章。

[图片] 2

743680544364ae543f6c4667ff67483f.png

本文简单回顾ABAP Netweaver应用服务器的主要组件。虽然即使不了解这些知识,也不影响ABAP开发人员完成日常工作,但是很多ABAP编程的最佳实践都和这些知识有着千丝万缕的联系,知其然知其所以然,能帮助大家写出更健壮更高效的ABAP应用。

什么是ABAP Netweaver应用服务器?

SAP Netweaver应用服务器是SAP ABAP应用开发和运行平台,ABAP开发人员在上面可以专注于具体业务逻辑的开发,凡涉及到更底层的基础设施相关任务,比如请求的负载均衡,进程的派生,同步和调度,内存管理,服务器多实例间缓存同步等等,统统交由Netweaver平台本身处理。如此一来,一个ABAP开发人员,即使不具备精深的计算机组成原理,操作系统,计算机网络等领域知识,也能胜任SAP应用的开发工作。

ABAP Netweaver应用服务器和SAP解决方案的关系?

本文讨论的SAP解决方案,仅限于那些基于ABAP技术栈的SAP产品。

Google里根据关键字"SAP ABAP three layer"搜索,能找到很多基于ABAP技术的SAP解决方案的三层经典架构图:

[图片] 3

6083f9e9f6ade0122a1541ec9a2beb4b.png

随便点开一张查看:

[图片] 4

b7884a573d11679896733119fe579f24.png

SAP客户位于图中最上面的展现层(Presentation Layer),通过SAP GUI这个客户端软件或者浏览器访问SAP系统;

SAP系统的软件,安装在ABAP Netweaver服务器上,响应用户请求,完成对应的业务逻辑。ABAP Netweaver服务器位于上图中间的应用层。

最底层是数据库层,很多SAP产品都支持不同类型的数据库,比如SAP HANA,Oracle数据库,SQL Server等。

[图片] 5

d80c38b4b745a11008ba73aeb5d7a192.png

部分ABAP开发人员觉得,我们既然能够直接在ABAP Netweaver里用OPEN SQL对数据库表进行读写操作,那么Netweaver应用服务器本身就包含了数据库层。这样理解其实不正确。我们在Netweaver SE38里编写的OPEN SQL代码,会通过Netweaver内部的数据库接口,转换成数据库提供商相关的原生SQL语句在数据库里执行,并且从最底层的数据库层,到应用层里的ABAP程序之间的数据传输,也是通过数据库接口完成的。

[图片] 6

ff1fc312fc00831d3a315973c6bec370.png

本文讨论的ABAP Netweaver服务器的组成部分,位于三层架构中的应用层。

ABAP Netweaver服务器实例

运行在物理机器上的ABAP应用服务器,按照其用途的不同,又可分为两种实例:应用服务器实例和ABAP SAP中央服务实例(ABAP SAP Central Services instances, 缩写为ASCS instances), 也就是下图两个灰色矩形框代表的实例。

[图片] 7

29bd2e07aa359a7081883b3a0052cc1e.png

一个典型的SAP系统一般由一到多个应用服务器实例和一个ASCS实例组成。

从上图左边的矩形框里,能观察到ABAP应用服务器实例包含的主要组件有:

(1) Internet Communication Manager (ICM)

(2) ABAP dispatcher

(3) 工作进程

(4) RFC Gateway

(5) Start Service

下面是对这些组件的简要介绍。

Internet Communication Manager (ICM)

ICM是Netweaver服务器里一个单独的进程,由ABAP Dispatcher启动并监控,负责SAP系统和外部的网络通信。基于收到请求URL的解析,ICM会将请求分发给具体的handler进行处理。

ICM常用的与Internet交互的协议有HTTP,HTTPS,SMTP等。

下图是ICM的架构图。

[图片] 8

525e8b058b703085b625243cb4326b5d.png

Thread Control:该线程负责接收外界请求,从ICM线程池中取出空闲的工作线程,将请求的上下文交给工作线程。

工作线程:负责请求的具体处理,包含一个I/O处理器,可以用来进行网络的输入和输出操作。对于不同协议类型的请求,Thread Control会调度包含了对应协议插件的工作线程。

Watchdog:如果一个工作线程在任务处理时出现了等待某个响应直至超时的情况,Watchdog会将该工作线程释放,避免其无限期的等待,这样该工作线程可以服务于其他请求。而Watchdog会继续等待尚未到来的响应。其后如果响应到达,Watchdog会通知Thread control, 后者会继续调用新的工作线程来处理。

Signal Handler:处理来自操作系统或者其他进程的信号。

Connection Info: 这张表维护了每个连接的状态信息,包括内存管道等。

Memory Pipes:内存管道是基于内存的通讯数据结构,用于将ICM接收到的外部请求包含的数据转交给工作线程。

Internet Server Cache:服务器端的缓存,对于重复的请求可以加快响应速度。

ABAP Dispatcher和工作进程

二者的关系在下图体现得很清晰,ABAP应用服务器上运行着许多工作进程(Work Process),这些进程类型各异,负责处理各种类型不同的请求。

[图片] 9

27cfab3b0d6a80cb83d7c6ad426b1a4e.png

事务码SM50里能看到当前应用服务器上的工作进程明细,比如下图显示用于处理用户普通事务请求的对话(Dialog)进程有30个,其中29个空闲;Update进程负责执行数据库的更新操作;Background进程处理后台作业,Spool负责打印任务。而ABAP里数据库更新的操作有V1和V2两种级别(平时大家用的默认都是V1级别),分别由下图的Update和Update Task2两种类型的工作进程完成。

[图片] 10

640d61e7cb2454174fcc53e53b0e5e42.png

Gateway

这里的Gateway和SAP Fiori里的Gateway系统是两码事,后者指代安装了SAP_GWFND这个Software Component的ABAP应用服务器,而我们现在即将讨论的Gateway,是ABAP应用服务器里的一个组件。

SAP系统之间,以及SAP系统与外部系统间通过基于TCP/IP的RFC(Remote Function Call,远程系统调用)进行通信,而Gateway作为RFC调用分发的入口,如下图所示:

[图片] 11

279f1b2c0a7821a6d3814afd5069f01f.png

值得一提的是,我们能够在SAP标准程序里看到CALL FUNCTION 'XXX' DESTINATION 'NONE'的写法,这种写法使得函数XXX仍然在调用它的应用服务器实例内部执行,而非在其他服务器上远程执行。那么这种写法不是多此一举吗?

SAP官网对这种用法的解释:Destination "NONE" has the effect that the function module is started on the same application server as the calling program, however through the RFC interface and in its own RFC context.

也就是说,通过这种方式调用的函数,即便是和调用者同处一个应用服务器实例内,也会像远程调用执行时一样,到RFC接口即Gateway组件里去走一遭。

付出这种在额外协议栈上执行开销的代价,有什么收益?那得从ABAP Netweaver里不同类型的会话说起。我们每用SAP GUI登录一次系统,会在服务器上生成一个用户会话(User Session). 每个User Session里通过命令行输入/o可以生成新的ABAP会话,每个ABAP会话内的程序调用生成新的内部会话(Internal Session).

[图片] 12

917841269c11958e8c8c025e18776ec4.png

如果直接调用函数CALL FUNCTION 'XXX', 在发起该函数调用的同一ABAP会话内,会派生一个新的内部会话去执行函数体的逻辑。如果用CALL FUNCTION 'XXX' DESTINATION 'NONE', 则会派生一个全新的用户会话,此时这个全新的用户会话,和发起函数调用的原始用户会话是完全隔离的,不共享任何数据,参数传递也是通过RFC标准的参数传递方式进行。通过这种方式,能实现被调用函数和原始程序的异步调用效果,同时两个用户会话里的程序执行完全隔离,不会彼此影响。

事务码SM04能看到ABAP应用服务器上所有的用户会话。双击某一用户会话,能看到该用户会话派生的所有ABAP会话。

[图片] 13

0ab91ab0cd96664bb8552aa71b9a37f2.png

SAP Start Service

该服务运行在部署了SAP应用服务器实例的服务器上,实现载体是Windows的系统服务(sapstartsrv.exe)和Unix系统的Daemon进程(sapstartsrv).

SAP Start Service实现的功能有:

(1) 启动和终止SAP应用服务器实例,及其运行状态的监控

(2) 应用服务器日志,跟踪和配置文件的读取与管理

ABAP SAP中央服务实例(ABAP SAP Central Services instances, ASCS)

主要包含Enqueue服务器和消息服务器。

Enqueue Server

数据库层面的锁由数据库管理,而ABAP应用程序级别的锁,比如锁一个订单,锁一个物料主数据,则通过应用程序提出锁申请,由Enqueue Server完成和管理锁。应用服务器实例上所有用户当前会话持有的锁,都维护在Enqueue服务器的锁信息管理表中,该表维护在Enqueue服务器的内存中,不会进行持久化,因此Enqueue服务器成为了ABAP系统的单点故障源之一:当Enqueue服务器由于各种原因运行时发生故障需要重启时,维护在内存中的锁信息表的数据会丢失。

[图片] 14

65cd5b414ad03a0420d7aa7d9b2b1f58.png

因此为了确保Enqueue服务器的高可用性,通常将其放到单独的物理主机上部署,甚至引入遵循主从机制的多台Enqueue服务器,将Master Enqueue服务器上的锁信息管理表同步到其他Enqueue服务器上。

[图片] 15

b7548b06bae53a070e92bf38bc054315.png

事务码SM12查看某个用户持有的应用锁:

[图片] 16

c15fba41457a95f9a19cdfad772ded39.png

SE11里打开任意一个锁对象,点击Lock Modules,进入自动生成的ABAP函数内部,就可以了解锁请求是如何从应用服务器发送到Enqueue服务器的。

[图片] 17

0ddc193ec05f9c6e183ada95d767ccc7.png

SAP Message Server

每个SAP系统只能包含一个消息服务器,该组件负责完成以下任务:

(1) 作为SAP系统内多个应用服务器实例间通讯的中央渠道

(2) 对来自客户端通过SAP GUI和SAP RFC登录请求的负载分发

当一个应用服务器实例启动后,其Dispatcher进程就会联系消息服务器,向其报告自己能够提供的服务类型。

SAP系统的消息服务器地址,可以在SAP GUI里维护该系统登录信息的Message Server字段里查询到。

[图片] 18

fc2c17931110dd7a2d0439cc4b4105da.png

上图我登录的AG3系统有多个应用服务器实例,我登录的实例编号为54,使用事务码SM53发现这个系统还有另外两个实例,编号为55和56.

[图片] 19

e0861fbda3321ad36d5a6c310e4d08a9.png

忽视SAP系统可以由多个应用服务器实例组成这一点,有时候可能会遇到一些无法按照自己期望工作的场景.比如数据库性能测量工具ST05,如果在实例A上打开跟踪,而业务代码实际执行在实例B上,那么待分析性能的应用执行完毕后,在实例A上关闭跟踪后,当然看不到性能数据。这种情况下,最保险的做法就是,在激活跟踪时,选择“在所有实例上”打开跟踪开关。

[图片] 20

b657605238716b190cc95a7b39bf576a.png

希望本文介绍的这些ABAP基础知识对你有用。有了这些预备知识,后续我们就可以去了解SAP Linux实验室的工程师们,是如何将这些组件容器化的。

感谢阅读。

ABAP幫助文檔,中文版 第一部份,ABAP/4基础 ABAP/4用户指南的第一部分描述了ABAP/4编程语言的基本组件。它们允许用户编写并运行包括所有主要操作的ABAP/4 程序。用户可以使用这些知识编写应用程序。 在第一部分的下列章节中,您将学习: 一、 ABAP/4程序结构: (一)、创建简单的ABAP/4程序 (二)、ABAP/4程序语法和格式 二、 数据处理: (一)、声明数据 (二)、将数据输出到屏幕 (三)、处理文本摘要 (四)、处理数据 三、 流控制:控制ABAP/4程序流 四、 特殊编程技术: (一)、创建和处理内表 (二)、模块化ABAP/4程序 (三)、使用字段符号 五、 存储数据: (一)、读取并处理数据库表 (二)、以簇方式存储数据对象 (三)、使用文件 一、ABAP/4程序结构 (一)、创建简单的APAP/4程序 本节描述如何创建简单的ABAP/4程序。了解如何创建ABAP/4程序将有助于了解本指南中的其它主题。 创建简单的ABAP/4程序涉及下列基本步骤: 命名程序=>指定程序属性=>编写程序代码=>测试程序 另外,本节也描述如何显示或更改现有程序以及如何从编辑器中启动程序。 此处描述的创建新ABAP/4程序的过程适用于报表和短培训程序。在开始编写报表程序之前,用户也许想先创建报表和短培训程序以熟悉ABAP/4语法。要为新事务创建模块存储,可以采用不同于报表程序的方式进行。关于如何为事务创建模块存储的详细信息,参见《ABAP/4模块池》。 关于ABAP/4编辑器和调试过程的详细信息,参见文档ABAP/4工作台工具。 本节讲述下列主题: 1) 命名程序 2) 指定程序属性 3) 编写程序 4) 测试程序 5) 显示或更改程序 6) 将事务代码分配给程序 1)、命名程序 要创建ABAP/4程序,步骤如下:  在“SAP R/3”初始屏幕上选择“工具->ABAP/4工作台”。出现“ABAP/4开发工作台”屏幕  选择“ABAP/4编辑器”,“ABAP/4编辑器初始屏幕”如下所示:  为在“程序”字段中创建的程序输入名称(关于创建程序名称的详细信息,参见《命名程序规则》)。  选择“创建”。 不论在“对象组件”下选择什么,都出现“ABAP/4:程序属性”屏幕。当命名并创建程序后,可以定义其属性(关于定义程序属性的详细信息,参见《指定程序属性》)。 创建ABAP/4程序还有其它过程。例如,可以:  选择“ABAP/4开发工作台”屏幕上的“对象浏览”。  选择“对象列表”下的“程序”。  选择“单一对象”下的“程序对象”。  输入程序名并单击“显示”。如果程序不存在,则询问是否要创建它。关于对象浏览器及创建程序其它过程的详细信息,参见文档ABAP/4工作台工具》。 命名程序规则:当创建程序名称时请遵循如下规则:  使用至少1个但不超过8个字符。  不要使用下列字符: 句点(.);逗号(,);空格( );括号'('')';单引号(');双引号("); 等号(=);星号(*);元音变音( , , , , , )和' ';百分号(%)和下划线(_): 因为这些符号是SQL语句的通配符,所以也会导致问题(参见《在程序中为行选择指定条件》)。 SAP建议在程序名称中不要使用它们。 创建程序名称时请遵守这些命名约定:  报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。任何有效字符替换x。注意SAP报表程序遵守相似的命名约定:Raxxxxxx。  任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。 2)、指定程序属性 程序属性决定程序属于哪种应用程序以及程序所链接的逻辑数据库。必须谨慎输入属性以便系统能正确处理程序(有关程序属性的详细信息,参见《重要的程序属性》)。 已经将名称分配给程序并选择“ABAP/4编辑器初始屏幕”上的“创建”时,出现“ABAP/4:程序属性”屏幕,要输入程序属性,请进行如下操作:  在字段“标题”中输入程序标题。选择描述程序功能的标题。系统自动将标题与文本摘要合并。如果以后要更改标题,请按如下操作进行:  选择“ABAP/4编辑器初始屏幕”上的“文本摘要”或“属性”。  选择“更改”。  完成两个强制字段:  如果创建报表程序,则在“类型”字段中输入1,如果创建模块存储,则在“类型”字段中输入M。关于可能类型的列表,请单击可能条目箭头。  在“应用程序”字段中为应用程序输入分类字母,如财务会计输入F。  如果创建报表(类型=1),请选择“确定”。系统将特定报表属性自动插入输入字段。然后看见附加字段“逻辑数据库”、“从应用程序”和“选择屏幕”(版本)。  指定与程序相关的所有其他属性(有关程序属性的详细信息,参见《重要的程序属性》)。  选择“保存”以保存属性。  出现“维护对象目录条目”窗口。  输入开发类。如果为培训或测试目的创建程序(如某私有对象),则输入开发类$TMP或选择“逻辑对象”。  选择“保存”以保存开发类。这将关闭“维护对象目录条目”窗口并返回“ABAP/4:程序属性”屏幕。  选择“后退”离开屏幕。如果要直接转到ABAP/4编辑器,请选择“转向->源代码”。 如果通过预定义开发类在“对象浏览器”中创建程序,则跳过步骤6到8。 重要的程序属性: 最重要的程序如下所述。关于其它属性的详细信息(或关于此处描述的属性的详细信息),请选择相关的输入字段,并单击可能的条目箭头。注意下述某些属性只适用于报表程序并不适用于其他ABAP/4程序。  类型:除了类型1(如同报表的独立程序)和M(模块存储),还应该注意类型I(包含程序)。包含程序是个独立的程序,它有两个主要特征。首先,它包含程序代码,不同程序都可使用该代码。其次,它用于模块化程序源代码,该代码分成逻辑相关部分。其中每个部分都存储在不同的包含程序中。包含程序改善源代码的可读性并有助于维护。(有关包含程序的详细信息,参见《包含程序》)。  应用程序:“应用程序”字段包括应用程序的缩写,如,财务会计缩写为F。该必需条目使系统能将程序分配给适当的业务区。  开发类:开发类对系统之间进行传输非常重要。执行传输时,可以将分配给某个开发类的工作台对象组合起来。如果用户在某组中工作,也许要将程序分配给现有开发类或创建新的开发类。分配给开发类$TMP的程序是私有对象并且不能传输到其他系统。但是,也可以通过选择“ABAP/4编辑器初始屏幕”上的“程序->重新分配...”更改分配给程序的开发类。  应用程序中的逻辑数据库(仅报表程序):这些属性决定报表使用哪个逻辑数据库检索数据,以及逻辑数据库属于哪个应用程序。应用程序中数据库名称必须是唯一的。但是,整个系统可以包括数个同名数据库。因此指定应用程序很重要。关于逻辑数据库的详细信息,参见《逻辑数据库的特征和维护》。如果报表程序直接读取数据,而未使用逻辑数据库(关于此主题的详细信息,参见《用逻辑数据库访问数据库表》),则应该象通常一样指定应用程序,但将“逻辑数据库”字段置空。  选择屏幕版本(仅报表程序):如果没有指定选择屏幕版本,则系统在逻辑数据库选择标准、报表特定参数及选择选项的基础上自动创建选择屏幕(关于选择屏幕的详细信息,参见《使用选择屏幕》)。如果想使用自己的选择屏幕,请在此字段中输入号码。该号码必须小于1000。可以通过按F4或在DBxxxSEL程序中找到现有选择屏幕号码(详细信息,参见《逻辑数据库选择》)。  大写/小写:显示和存储时,如果要让ABAP/4编辑器将程序代码与输入时保持相同,则请将该字段置空。如果选择该字段,则所有的程序代码(除了引号中的文本及注释外)都转换成大写字母。屏幕显示依赖于所使用的编辑器模式(详细信息,参见文档ABAP/4工作台工具》。  编辑器锁定:如果设置此属性,则其他用户则不能修改、改名或删除程序。只有用户可以更改程序、维护属性、文本摘要及文档;或者解除锁定。  定点算术:如果设置此属性,系统则根据小数点位数将类型P字段四舍五入,或用零填补(关于类型P字段的详细信息,参见《数字数据类型》)。这种情况下,无论在用户主记录中指定了什么,小数点字符总是句点(.)。  通过变式启动(仅报表程序):如果设置该属性,则用户只可以使用变式启动报表程序。在启动程序之前,必须创建至少一个报表变式(关于创建变式的详细信息,参见《使用变体预设置选择》)。 3)、编写程序 在ABAP/4编辑器中编写ABAP/4程序。 可以直接从“ABAP/4程序属性”屏幕切换到编辑器,也可以从“ABAP/4编辑器初始屏幕”中调用编辑器。进行如下操作:  在“ABAP/4程序属性”屏幕上选择“转向->源代码”或“源代码”。选定“源代码”并选择“ABAP/4编辑器初始屏幕”上的“更改”。出现“ABAP/4编辑器编辑程序”屏幕。系统自动输入第一个ABAP/4 语句,如:REPORT or PROGRAM. 对于,系统使用在“ABAP/4编辑器初始屏幕”上输入的名称。 语句REPORT和PROGRAM实际上具有相同功能。它们使系统能识别报表程序或任何其他ABAP/4程序并允许为输出列表指定一定的标准: REPORT或PROGRAM语句可以有不同的参数,如LINE-SIZE、LINE-COUNT或NOSTANDARD PAGE HEADING。这些参数主要适用于报表程序,用来分析数据并输出结果列表。关于列表的详细信息, 参见《创建列表》或参见《REPORT和PROGRAM上的关键字文档》。  输入程序代码。  选择“检查”进行语法检查。然后系统扫描程序代码寻找语法错误及不相容处。如果检查出错误,则出现消息报告它并且有可能的话将建议解决方案或更正。将光标放在适当的位置上。  选择“保存”保存代码。源文本存储在程序库中。 4)、测试程序 测试程序检查代码是否正确工作。 为测试目的要运行程序,选择“ABAP/4编辑器编辑程序”屏幕上的“程序->执行”。 系统执行该程序,如同从“ABAP/4编辑器初始屏幕”中启动的一样。例如,创建报表程序之后,则首先出现从中输入条件的选择屏幕,然后是结果列表。 如果正创建ABAP/4程序模块,则必须在运行程序之前创建事务代码(关于创建事务代码的详细信息,参见《对话编程简介》)。 出于测试目的,可以先不进行保存,直接运行某个不是模块存储部件的程序。编辑器保留一个包含更改的临时版本。但是,测试结束后必须返回编辑器以确保所有更改都已保存。 5)、显示或更改程序 本节主要说明如何显示或更改现有程序。此处相关的是技术步骤而不是实际代码更改。 要显示或更改程序,请进行如下操作:  在“ABAP/4编辑器初始屏幕”上的“程序”字段中输入要更改的程序名称。  选择“源代码”并选择“显示”或“更改”。如果选择“更改”则继续步骤3。如果选择“显示”,则看到“ABAP/4编辑器显示程序”屏幕。此处也显示源代码,但不能进行更改。可以通过选择“显示->更改”切换到更改模式。  如果其他用户锁定该程序对编辑器的访问,则系统显示下列消息:User forbade all changes.在这种情况下,不能更改程序。要更改程序,必须将它复制到新程序中并用新程序名再开始步骤1。否则,继续步骤5。  输入对程序代码的更改。  选择“检查”检查语法。  保存程序的更改版本。如果更改程序的私有版本(开发类$TMP),则立即保存更改版本。如果从 $TMP之外的开发类更改程序,则会出现一个窗口,从中可以指定更正号。  运行程序测试它(关于测试的详细信息,参见《测试程序》)。 6)、将事务代码分配给程序 可以将事务代码分配给类型1的单独程序,以后就将这些程序作为事务代码处理。 在《编写ABAP/4事务》中对事务有说明。 进行如下操作:  按照本节上述主题所述,创建单独程序。  在“ABAP/4开发工作台”屏幕上选择“开发->其它工具->事务”。  填入事务名称并选择“维护事务”屏幕上的“创建”  在下列对话屏幕上选择“报表事务”  在下列“创建报表事务”屏幕上填入所需条目“事务文本”和“程序”。  将事务代码保存在开发类中。 ………………
ABAP/4用户指南是关于ABAP/4编程语言的手册。其目的在于: 向新的ABAP/4程序员提供从基本语言组件到复杂报表和事务编码的全面指导 向资深ABAP/4程序员提供解决特殊问题的参考方案 为满足这些需求,特提供一个整体概述并将本指南分成三个部分,循序渐进,逐步深入: ABAP/4的基本组件 如何编写报表程序 如何编写事务 ABAP/4用户指南目的不在于替换ABAP/4关键字文档。APAP/4的关键字文档可以通过如下方式调用 从“ABAP/4编辑器:初始屏幕”(事务 SE38)中选择“实用程序->ABAP/4关键字文档 选择ABAP/4编辑器中的“帮助” 将光标放在ABAP/4编辑器中的关键字上,然后按下F1键 ABAP/4用户指南的真正目的在于说明如何使用以及为何使用ABAP/4关键字。并为此提供了许多示例,构成用户自己测 试程序的基础。要获取详细信息,可以进行以下某种操作: 关于关键字的详细信息,请参阅关键字文档。 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字 文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题和关键字 ”。屏幕右侧就会出现一个名称列表。对于所有以ABEN而非TITL开头的名称,如果双击树结构中的主题,则会出 现文本屏幕。 关于如何提高ABAP/4任务性能的技巧,请从“ABAP/4开发工作台”上选择事务SE30或“测试->运行时间分析”,然后 单击“提示和技巧”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值