ABAP 实现对话框(一)

一、报表程序 VS 对话框程序

1.报表程序

  • 结构简单
  • 由事件块组成程序构架
  • 执行方式多样

2.对话框程序

  • 结构复杂
  • 包括ABAP程序代码、用户对话、图形用户接口和事务代码
  • 图形用户接口包括菜单栏、标准工具栏、应用程序工具栏和标题栏
  • 程序由事务代码触发运行

二、实现对话框程序

1.创建程序

登录SAP,输入T-code:se38 进入到ABAP编辑器。在这里创建一个新程序,按照下面的步骤
这里写图片描述

点击创建,弹出新窗口。为程序设置一个标题,属性设置为“可执行程序”
这里写图片描述
点击本地对象之后,就完成了在本地创建程序的工作
这里写图片描述

2.创建屏幕和状态

1)点击工具栏的侧栏,创建一个屏幕

这里写图片描述
在侧边栏鼠标右键程序名创建屏幕,然后会出现一个窗口,在属性栏里面填上描述信息,在元素清单一栏添加
这里写图片描述
在逻辑流这里有两个模块:PBO和PAI模块。默认是注释的,把注释去掉,双击module名称,弹出一个窗口点“是”,进入下一窗口
这里写图片描述
点击第二个,在程序中创建module
这里写图片描述
我们可以看到程序中多了一些代码
这里写图片描述

2)创建一个GUi状态和GUI标题

在侧边栏鼠标右键程序名创建状态,输入一些描述信息后,打勾。右侧可以看到用户图形接口,我们点开“功能键”添加三个按钮。完成后,点击工具栏“激活”按钮后,就可以在侧边栏看到多了一个GUI 状态。GUi标题的创建方式也是一样的。
这里写图片描述

3)创建屏幕显示

点击屏幕编号,再点击它的工具栏上的“格式”,弹出“屏幕制作器”(即对屏幕进行布局)。这里我们创建一个“文本字段”,一个”输入输出字段”,两个按钮,给它们加上一个“框”。(双击它们,就可以把它们拉出来了。。。),名称要填的不然会显示红,按钮要都添加功能码。选中某个按钮点击最上方属性图标设置功能码(响应按钮操作)。
这里写图片描述

4)在程序中设置GUI状态和GUI标题

名字是我们之前在创建时填的,这样就可以在当前的屏幕下创建GUI状态和GUI标题

module STATUS_8000 output.
  SET PF-STATUS 'STATUS'.
  SET TITLEBAR 'TITLE'.

endmodule.      
5)创建事务码(T_CODE)

在SAP首页输入t_code “se93”创建程序对应的事务码。输入事务描述以及我们的程序和屏幕编码,最后点保存
这里写图片描述
这里写图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP是一种针对SAP系统的编程语言,可以用于开发SAP系统中的各种业务应用。在ABAP实现遗传算法的具体步骤如下: 1. 定义适应度函数:适应度函数用于评估个体的适应度,通常需要根据具体问题进行定义。 2. 初始化种群:根据问题定义合适的基因编码方式,初始化一个种群,通常包括多个个体。 3. 选择操作:根据适应度函数,选择合适的个体进行交叉和变异操作,生成新的个体。 4. 评估新个体适应度:使用适应度函数对新个体进行评估,以便决定是否加入下一代种群。 5. 重复步骤3和4,直到达到预定的终止条件(如达到最大迭代次数)。 下面是一个简单的ABAP实现遗传算法的例子: ``` REPORT ZGA_EXAMPLE. DATA: individuals TYPE STANDARD TABLE OF i WITH EMPTY KEY, fitness_values TYPE STANDARD TABLE OF f WITH EMPTY KEY, new_individuals TYPE STANDARD TABLE OF i WITH EMPTY KEY, crossover_rate TYPE f VALUE 0.5, mutation_rate TYPE f VALUE 0.1, max_generations TYPE i VALUE 100. *定义适应度函数 FORM fitness_function USING i TYPE i CHANGING f_fitness TYPE f. f_fitness = i * i. "以i的平方作为适应度 ENDFORM. *初始化种群 DO 10 TIMES. APPEND sy-index TO individuals. ENDDO. *开始迭代 DO max_generations TIMES. CLEAR new_individuals. CLEAR fitness_values. *选择操作 LOOP AT individuals INTO DATA(individual). IF rand( ) <= crossover_rate. DATA index TYPE i. index = rand( size( individuals ) ) + 1. DATA partner TYPE i. READ TABLE individuals INDEX index INTO partner. new_individuals = VALUE #( ( individual + partner ) / 2 ). ELSE. new_individuals = VALUE #( ( individual ) ). ENDIF. *变异操作 IF rand( ) <= mutation_rate. new_individuals = VALUE #( ( new_individuals + rand( ) * 10 - 5 ) ). ENDIF. *评估新个体适应度 LOOP AT new_individuals INTO DATA(new_individual). DATA fitness_value TYPE f. CALL FUNCTION 'FITNESS_FUNCTION' EXPORTING i = new_individual IMPORTING f_fitness = fitness_value. APPEND fitness_value TO fitness_values. ENDLOOP. ENDLOOP. *选择下一代种群 SORT fitness_values DESCENDING. CLEAR individuals. DO 10 TIMES. DATA index TYPE i. index = rand( size( new_individuals ) ) + 1. DATA individual TYPE i. READ TABLE new_individuals INDEX index INTO individual. APPEND individual TO individuals. ENDDO. ENDDO. ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值