续更SAP相关内容。

这次讲一下在ABAP屏幕开发中怎样获取文本框的值。

在C# Winform开发中,我们直接 textBox.Text就可以取到文本框的值,但在ABAP中要繁琐一些。

好了,操作。

(一) 捕获到按钮的点击事件。

(1)首先定义一个标准的功能码来接收按钮的功能码(我们前面说过的,在ABAP中,按钮事件是通过获取按钮的属性值之一:功能码来实现的)。

DATA STATUS_CODE TYPE sy-ucomm "定义一个名字为STATUS_CODE的变量,它的类型参照系统中自带的名字为sy-ucomm的标准功能码"

iOS开发 获取word内容 iapp怎么获取编辑框内容_文本框

(2)通过case 功能码 when 来接收按钮点击的动作,因为不同按钮的功能码是不一样的。

iOS开发 获取word内容 iapp怎么获取编辑框内容_文本框_02

(二) 获取文本框的内容并加入数据库。

(1)此时,可以捕捉到按钮的点击动作了,下面我们要做的是保存按钮点击后,获取到文本框的值(ABAP中获取文本框的值是通过调一个名字为DYNP_VALUES_READ的函数来实现的)。

iOS开发 获取word内容 iapp怎么获取编辑框内容_abap_03

"①获取文本框的值"
      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)此时我们就获取到一个文本框的值了,其他文本框同上(这里我还没有找到批量获取文本框值得方法,大家有想法我们可以要论一下),接下来就是插入到数据库中。

iOS开发 获取word内容 iapp怎么获取编辑框内容_文本框_04

"②往数据库表添加数据"
      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的表中"

好啦,完事儿啦,有缺陷目前尚未解决:没有找到批量获取文本框的办法。