SAP ABAP屏幕(Dialog)开发中,获取文本框的内容并且存到数据库中。
续更SAP相关内容。
这次讲一下在ABAP屏幕开发中怎样获取文本框的值。
在C# Winform开发中,我们直接 textBox.Text就可以取到文本框的值,但在ABAP中要繁琐一些。
好了,操作。
(一) 捕获到按钮的点击事件。
(1)首先定义一个标准的功能码来接收按钮的功能码(我们前面说过的,在ABAP中,按钮事件是通过获取按钮的属性值之一:功能码来实现的)。
DATA STATUS_CODE TYPE sy-ucomm "定义一个名字为STATUS_CODE的变量,它的类型参照系统中自带的名字为sy-ucomm的标准功能码"
(2)通过case 功能码 when 来接收按钮点击的动作,因为不同按钮的功能码是不一样的。
(二) 获取文本框的内容并加入数据库。
(1)此时,可以捕捉到按钮的点击动作了,下面我们要做的是保存按钮点击后,获取到文本框的值(ABAP中获取文本框的值是通过调一个名字为DYNP_VALUES_READ的函数来实现的)。
"①获取文本框的值"
DATA: dynpfields TYPE TABLE OF dynpread WITH HEADER LINE. "定义一个名字为dynpfields的内表变量,同时还制定它是一个工作区"
CLEAR: dynpfields, dynpfields[].
dynpfields-fieldname = 'TXT_ORDERNO'. "TXT_ORDERNO是文本框的名字"
APPEND dynpfields.
CALL FUNCTION 'DYNP_VALUES_READ' "调用函数DYNP_VALUES_READ,这个函数的作用就是读取文本框的值"
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
TABLES
dynpfields = dynpfields "将参数传入"
EXCEPTIONS
OTHERS = 9.
IF sy-subrc = 0. "SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,0表示成功"
READ TABLE dynpfields WITH KEY fieldname = 'TXT_ORDERNO'. "读取获取到的值。"
dynpfields-fieldvalue = dynpfields-fieldvalue. "将读取到的值传给我们dynpfields变量中的fieldvalue字段"
ENDIF.
(2)此时我们就获取到一个文本框的值了,其他文本框同上(这里我还没有找到批量获取文本框值得方法,大家有想法我们可以要论一下),接下来就是插入到数据库中。
"②往数据库表添加数据"
DATA:obj_Order TYPE zhbtorderhdr. "定义一个名为obj_Order的变量,它的数据类型参照数据库中一张名为zhbtorderhdr的表"。
obj_Order-e_orderno = dynpfields-fieldvalue."dynpfields-fieldvalue是从文本框中获取到的值"
obj_Order-e_orderdate = ''. "数据库中此字段的数据类型为DAYS"
obj_Order-e_orderqty ='9.9'. "数据库中此字段的数据类型为DEC"
obj_Order-e_ordersalesname = '888'."数据库中此字段的数据类型为CHAR"
obj_Order-e_ordermaterilno = '666'. "数据库中此字段的数据类型为CHAR"
obj_Order-e_ordercustomername = '876'."数据库中此字段的数据类型为CHAR"
INSERT INTO zhbtorderhdr VALUES obj_Order. "插入到数据库中名为zhbtorderhdr的表中"
好啦,完事儿啦,有缺陷目前尚未解决:没有找到批量获取文本框的办法。
post SAP-Garson
原文链接:https://blog.csdn.net/weixin_45963929/article/details/118218924文章来自于网络,如果侵犯了您的权益,请联系站长删除!