ABAP

ABAP——内表与工作区

一、基本概念

  1. 内表 ,内表实际上是一个临时存储空间,有效范围是当前程序,内表存放多条记录,其中,内表分为无表头内表有表头内表
  2. 工作区 ,实际上就是一个结构,工作区存放一条记录

二、定义

types: begin of typ_01,
         name type char20, "姓名
         sex  type char5, "性别
         age  type i, "年龄
       end of typ_01.

1、内表的定义

1)无表头内表的定义

方法1:结构定义内表

data gt_01 type [Standard] table of typ_01.

方法2:内表定义内表

data gt_02 like TABLE OF typ_01.

方法2:工作区定义内表

DATA gt_03 like TABLE OF work_area_1.
2)带表头内表的定义
*1
data gt_04 type table of typ_01 WITH HEADER LINE.
*2
data gt_05 like TABLE OF typ_01 WITH HEADER LINE.
*3
DATA gt_06 like TABLE OF work_area_1 WITH HEADER LINE.

2、工作区的定义

方法1:结构定义工作区

data gs_01 type typ_01.

方法2:内表定义工作区

data gs_02 like line  of gt_01.

方法3:工作区定义工作区

data gs_03 like work_area_2.  

三、对内表中的数据进行操作

1、对无表头的内表进行操作

1)添加数据-需要借助工作区
gs_01-name =  '李四'.
gs_01-sex  =  '女'.
gs_01-age  =  '23'.
append语句
append gs_01 to gt_01. "追加数据
insert语句
insert gs_01 into gt_01 [index 1]."插入数据到指定行
2)查询内表数据
loop at gt_01 into gs_01.
  write: / gs_01-name,gs_01-sex,gs_01-age.
endloop.

2、向有表头的内表中添加数据

1)添加数据-直接添加即可,无需借助工作区
gt_04-name =  '李四'.
gt_04-sex  =  '女'.
gt_04-age  =  '23'.
append gt_02.
2)查询内表数据
LOOP AT gt_04.
write: / gt_04-name.
ENDLOOP.

ABAP——屏幕

1、创建程序

1)在Tcode输入se38,点击回车,输入程序名称(程序名必须以Z开头),点击创建;

在这里插入图片描述

2)在弹出的弹窗中输入简短描述(Title),类型选择“可执行程序”,并点击保存;

在这里插入图片描述

3)若程序需要传输至其他环境,则输入开发类(包)后保存,若不需要,选择本地对象 即可;

在这里插入图片描述

2、绘制设计屏幕

1)系统进入程序设计界面,点击箭头所指按钮,会在左侧出现创建的程序名;

在这里插入图片描述

2)右击程序名,选择“创建”,选择“屏幕”,需要在弹出的弹框中输入屏幕编号(以0100为例),点击确定,右侧会出现三个小窗口,在“属性”窗口里输入简短描述,在格式为OK的一行中的名称填入OK_CODE,点击逻辑流,点击格式化,会出现Screen Painter;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3)点击左侧列表在屏幕中添加控件,双击控件,会弹出属性框,设置属性,若控件显示红色,则表示未正确设置,特别注意按钮与输入输出框的属性:

①、按钮实现保存功能时,一定要写上按钮的功能码,功能码一定要大写,不要选择功能类型;
②、按钮实现退出功能时,一定要写上按钮的功能码,功能码一定要大写,功能类型一定要选择E;
③输入输出框的name一定要记得,你设置的name起到一个临时变量的作用,输入的内容会暂时保存在你设置的name变量中。

4)点击逻辑流进入逻辑流窗口并进行一下操作;

在逻辑流窗口的最后中输入“Module Cancel At EXIT-command”,双击该语句中的Cancel字段,在弹出的窗口中点“是”,系统会在主程序中创建相应的“Module Cancel input”模块,与此类似,去掉注释后,双击“Module User_command_0100.”中的User_command_0100,在弹出的窗口中点是,会在主程序中生成Module User_command_0100 Input模块,具体代码见主程序代码。
在这里插入图片描述

5)以上步骤完成后,检查,保存,激活,关闭Screen Painter,

3、创建数据库(自行百度)

在创建数据表的过程中要注意字段名的一致性。

4、完整主程序代码如下所示

*在主程序中声明以下变量:
TYPES:BEGIN OF str_01,
  co_id type char30,
  co_name type char30,
  co_time type char30,
  co_addr type char30,
  co_ente type char30,
  END OF str_01.

*内表
DATA gt TYPE TABLE OF str_01.
*工作区
DATA gs TYPE str_01.
*变量OK_CODE与SAVE_OK:其中OK_code是用来记录功能码的
DATA OK_CODE TYPE SY-UCOMM.
DATA SAVE_OK TYPE SY-UCOMM.
*屏幕中输入输出框的name
data INPUT_00 TYPE CHAR30.
DATA INPUT_01 TYPE CHAR30.
DATA INPUT_02 TYPE CHAR30.
DATA INPUT_03 TYPE CHAR30.
DATA INPUT_04 TYPE CHAR30.

*调用屏幕
START-OF-SELECTION.
CALL SCREEN '0100'.

*逻辑流中相应的模块的代码
*退出屏幕模块
*&---------------------------------------------------------------------*
*&      Module  CANCEL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE CANCEL INPUT.
  LEAVE PROGRAM.
ENDMODULE.
*保存按钮模块
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*实现:将输入框中的内容保存到内表中
MODULE USER_COMMAND_0100 INPUT.
  SAVE_OK = OK_CODE.
  CLEAR OK_CODE.
  *若SABE_OK 与保存按钮的功能码相同,则将输入框中的内容保存到工作区中
  if save_ok = 'SAVE'.
	  gs-co_id = INPUT_00.
	  gs-co_name = INPUT_01.
	  gs-co_time = INPUT_02.
	  gs-co_addr = INPUT_03.
	  gs-co_ente = INPUT_04.
	  *将工作区中的数据保存到内表中
	  APPEND gs to gt.
	  *将工作区中的内容保存到数据表中
	  INSERT INTO zsscompany VALUES gs.
	  *成功执行后弹出success字样
	  MESSAGE 'success' TYPE 'I'.
	endif.
ENDMODULE.

依次点击“检查”-“保存”-“激活”-“直接处理”,执行程序。

5、结果

在这里插入图片描述

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值