ABAP 获取屏幕字段值,field-symbols,assign..TO.. 相关知识实例

news2024/9/21 0:42:49

ABAP  获取屏幕字段值,field-symbols,assign..TO.. 相关知识实例

以QA32质量放行程序为例子:

由于这个两个值都在结构RQEVA中,为了方便这里获取整个结构值,最后利用指针指向这个程序的这个结构即可获取当前值,具体写法如下:

program zqme_check_at_qa11.
form check_ud using new_insplot type qals ud_data type qave.
  data: lv_aufnr type qals-aufnr.
  data: lt_status type table of jstat.
  data: ls_status type jstat.
  data: lv_objnr type jsto-objnr.
  data: lt_mseg type table of mseg.

  data: lt_mch1   type table of mch1,
        ls_mch1   type mch1,
        lv_value  type c,
        lv_valuef type c.
"获取屏幕字段值     
  data lc_string(25) value '(SAPMQEVA)RQEVA-ZUS_NEU_N'.
  data lc_string_f(25) value '(SAPMQEVA)RQEVA-US_NEU_F'.
  data lc_string_d(25) value '(SAPMQEVA)RQEVA-MHD_01'.
  data lc_string_e(25) value '(SAPMQEVA)RQEVA-VCODE'.
  data lc_string_g(25) value '(SAPMQEVA)QALS-MATNR'. "程序+表+字段

  data: lv_auth type rqeva-zus_neu_n.
  data: lt_qmel type table of qmel.
  data: ls_qmel type qmel.
  data: lv_charg type qals-charg.
  data: lt_tj02t type table of tj02t,
        ls_tj02t type tj02t.

"获取屏幕字段值,类1. FIELD-SYMBOLS:FIELD-SYMBOLS 是一个关键字,用于声明一个指针变量,允许在运行时指向内存中的"某个数据对象。通过 FIELD-SYMBOLS,可以在不提前指定具体变量名的情况下,将一个"变量看作指针,并在运行时动态绑定到数据对象。
  field-symbols: <fs> type any.
  field-symbols: <fs_f> type any.
  field-symbols: <fs_date> type any.
  field-symbols: <fs_vcode> type any.
  field-symbols: <fs_matnr> type any.  
"通过变量名动态访问变量2. ASSIGN:
ASSIGN 是一个指令语句,用于将一个数据对象的引用分配给 FIELD-SYMBOLS 变量。在运行时,使用 ASSIGN 将数据对象分配给 FIELD-SYMBOLS 变量后,就可以通过 FIELD-SYMBOLS 变量直接访问和操作数据对象。示例:
  assign (lc_string) to <fs> .
  assign (lc_string_f) to <fs_f> .
  assign (lc_string_d) to <fs_date>.
  assign (lc_string_e) to <fs_vcode>.
  assign (lc_string_g) to <fs_matnr>.   

  clear:lv_auth,
        lv_value,
        lv_valuef.

  if <fs> is assigned."restricted
    lv_value = <fs>.
  endif.

  if <fs_f> is assigned."unrestricted
    lv_valuef = <fs_f>.
  endif.

data ls_mara type mara.
data ls_zmmt002 type zmmt002.
  clear ls_mara.
 clear  ls_zmmt002.

  check new_insplot-charg is not initial.

  if <fs_f> is assigned and <fs_f> = 'X'. "非限制状态
    if ud_data-vcode = 'X'."vcode = 'X' 表示限制放行
      message e009(zqm01).
    endif.
  endif.

  if <fs> is assigned and <fs> = 'X'."限制状态

    if ud_data-vcode = 'A'."表示非限制放行
      message e001(zqm01).
    endif.
  endif.


  clear ls_mara.
  select single * from mara into ls_mara where matnr = new_insplot-matnr.
  if ls_mara-mtart = 'ZXXX'and ud_data-vcode is initial ."
    message e002(zqm01).
  endif.

  check ud_data-vcode = 'A'.

  cl_salv_bs_runtime_info=>set( exporting display  = abap_false
                                            metadata = abap_false
                                            data     = abap_true ).
  field-symbols:<fs_table> type any table,
                <fs_any>   type any. "LIKE LINE OF  IT_TAB
  data:gr_data type ref to data.
  clear gr_data.
  unassign <fs_table>.

  submit zqmr_003                                         "LX02
    with pa_charg eq new_insplot-charg
    and return.

  try.
      cl_salv_bs_runtime_info=>get_data_ref( importing r_data = gr_data ).

      assign gr_data->* to <fs_table>.
    catch cx_salv_bs_sc_runtime_info.
  endtry.

  cl_salv_bs_runtime_info=>clear_all( ).

  data: lt_data type table of zqms_batchtrace,
        ls_data type zqms_batchtrace.

  refresh: lt_data.

  if <fs_table> is assigned.
    unassign <fs_any>.
    loop at <fs_table> assigning <fs_any>.
      clear ls_data.
      ls_data = <fs_any>.
      if ( ls_data-zustd = '批量限制' 
or ls_data-zustd = 'Batch limit' )

          and ls_data-charg ne new_insplot-charg.
        message e010(zqm01) with ls_data-charg .
        exit.
      endif.
      if ls_data-qmnum ne '' and ls_data-zflag = 'X'
          and ls_data-charg ne ''.

        message e005(zqm01) with ls_data-qmnum .
        exit.
      endif.
    endloop.
    unassign <fs_any>.
  endif.

  check ud_data-vcode = 'A'.
  call function 'ZQM_ECC_UPDATE_BATCH' " IN UPDATE TASK
    exporting
      is_insplot = new_insplot.

endform.

 form update_batch using new_insplot type qals .
  check new_insplot-charg is not initial.
  set update task local .
  call function 'ZQM_ECC_UPDATE_BATCH' in update task
    exporting
      is_insplot = new_insplot.

endform.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1437489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小红的字符串中值

题目描述: 小红定义一个长度为奇数的字符串的“中值”为中间那个字符。例如"kou"的中值是o。 现在小红拿到了一个字符串&#xff0c;她想知道某个字符是多少个子串的中值。你能帮帮她吗&#xff1f; 输入描述: 输出描述: 一个整数&#xff0c;代表中值为chr的连续子串…

Camunda如何发送邮件及委托代码讲解

&#x1f496;专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据&#xff0c;完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧&#x1f618; &#x1f496;什么是委托…

米贸搜|关于Facebook广告受限:在这些情况下,Meta会限制广告主的广告能力!

如果你被限制了投放广告&#xff0c;那么你会在Facebook上收到通知。 除了审查广告之外&#xff0c;Meta还监控和调查广告主在Meta技术上的行为&#xff0c;在某些情况下&#xff0c;Meta可能会对广告主施加限制&#xff0c;限制广告主的广告能力&#xff0c;这些限制旨在帮助保…

零基础学编程从入门到精通,系统化的编程视频教程上线,中文编程开发语言工具构件之缩放控制面板构件用法

一、前言 零基础学编程从入门到精通&#xff0c;系统化的编程视频教程上线&#xff0c;中文编程开发语言工具构件之缩放控制面板构件用法 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载—…

鸿蒙OS导入项目报错不能运行 @ohos\hvigor\bin\hvigor.js‘

在自学HarmonyOS时&#xff0c;想在DevEco Studio导入官方示例代码&#xff1a;待办列表&#xff08;ArkTS&#xff09;报错 C:\Users\woods\Downloads\test01\ToDoListArkTS\node_modules\ohos\hvigor\bin\hvigor.js --mode module -p moduleentrydefault -p productdefault …

IDEA上传Gitee出错

问题 今天想通过 IDEA 更下新 gitee 上的代码是发生了这个错误。 解决 在 IDEA 终端输入 git config --system --unset credential.helper原因 在一个大佬那里找到了原因 大概意思是-远端仓库的账号和密码错误&#xff0c;你本地有过账号密码登录记录&#xff0c;但不知道…

板块一 Servlet编程:第一节 HTTP协议理论与服务器请求响应原理 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程&#xff1a;第一节 HTTP协议理论与服务器请求响应原理 一、HTTP特点二、HTTP中的 URL三、两种 HTTP 请求方法&#xff1a;GET 和 POST四、请求响应的底层请求头在服务器中表现响应头在服务器中表现 在上一个板块中我们完成了所有IDEA的基础配置工作&#xf…

【MATLAB】使用梯度提升树在回归预测任务中进行特征选择(深度学习的数据集处理)

1.梯度提升树在神经网络的应用 使用梯度提升树进行特征选择的好处在于可以得到特征的重要性分数&#xff0c;从而识别出对目标变量预测最具影响力的特征。这有助于简化模型并提高其泛化能力&#xff0c;减少过拟合的风险&#xff0c;并且可以加快模型训练和推理速度。此外&…

07-使用Package、Crates、Modules管理项目

上一篇&#xff1a;06-枚举和模式匹配 当你编写大型程序时&#xff0c;组织代码将变得越来越重要。通过对相关功能进行分组并将具有不同功能的代码分开&#xff0c;您可以明确在哪里可以找到实现特定功能的代码&#xff0c;以及在哪里可以改变功能的工作方式。 到目前为止&…

人工智能|深度学习——基于全局注意力的改进YOLOv7-AC的水下场景目标检测系统

代码下载&#xff1a; 基于全局注意力的改进YOLOv7-AC的水下场景目标检测系统.zip资源-CSDN文库 1.研究的背景 水下场景目标检测是水下机器人、水下无人机和水下监控等领域中的重要任务之一。然而&#xff0c;由于水下环境的复杂性和特殊性&#xff0c;水下目标检测面临着许多挑…

有责无权的PM如何管好项目?

一、项目经理的责任和权力分析 项目经理作为项目的责任主体&#xff0c;承担着确保项目顺利完成的重要责任。他们需要确保项目达到预期目标&#xff0c;控制项目进度、成本和质量&#xff0c;并保证项目团队的有效运作。然而&#xff0c;与责任相对应的权力却并不总是与之匹配…

代码随想录算法训练营第四十五天(动态规划篇)|01背包

01背包理论基础 学习资料&#xff1a;代码随想录 (programmercarl.com) 相关链接&#xff1a;题目页面 (kamacoder.com) 背包题目分类 01背包定义 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次…

#免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程

Mac电脑苹果芯片读写NTFS硬盘bash脚本 &#xff08;ntfs.sh脚本内容在本文最后面&#xff09; ntfs.sh脚本可以将Mac系统(苹果M系芯片)上的NTFS硬盘改成可读写的挂载方式&#xff0c;从而可以直接往NTFS硬盘写入数据。此脚本免费&#xff0c;使用过程中无需下载任何收费软件。…

SpringBoo+Vue构建简洁日志文件查看系统

点击下载《SpringBooVue构建日志文件查看系统&#xff08;源代码&#xff09;》 1. 前言 想必经常做java开发的小伙伴&#xff0c;其大多数服务都是运行在linux系统上的&#xff0c;当遇到一些比较棘手的bug需要处理时&#xff0c;经常要上服务器去捞日志&#xff0c;然后通过…

网络空间内生安全数学基础(2)——编码信道数学模型

目录 &#xff08;零&#xff09;这篇博客在干什么&#xff08;一&#xff09;内生安全与香农信道编码定理&#xff08;二&#xff09;基本定义&#xff08;三&#xff09;编码信道存在定理&#xff08;三.壹&#xff09;编码信道存在第一定理&#xff08;三.贰&#xff09;编码…

Python程序员面试题精选(1)

本文精心挑选了10道Python程序员面试题&#xff0c;覆盖了Python的多个核心领域&#xff0c;包括装饰器、lambda函数、列表推导式、生成器、全局解释器锁(GIL)、单例模式以及上下文管理器等。每道题都附有简洁的代码示例&#xff0c;帮助读者更好地理解和应用相关知识点。 题目…

数据结构与算法之美学习笔记:50 | 索引:如何在海量数据中快速查找某个数据?

目录 前言为什么需要索引&#xff1f;索引的需求定义构建索引常用的数据结构有哪些&#xff1f;总结引申 前言 本节课程思维导图&#xff1a; 在第 48 节中&#xff0c;我们讲了 MySQL 数据库索引的实现原理。MySQL 底层依赖的是 B 树这种数据结构。留言里有同学问我&#xff…

《山雨欲来-知道创宇 2023 年度 APT 威胁分析总结报告》

下载链接: https://pan.baidu.com/s/1eaIOyTk12d9mcuqDGzMYYQ?pwdzdcy 提取码: zdcy

VSCode无法启动:Waiting for server log...

问题基本情况 [13:30:20.720] > code 1.86.0 (commit 05047486b6df5eb8d44b2ecd70ea3bdf775fd937) [13:30:20.724] > Running ssh connection command... /var/fpwork/reiss/vscdata/server/cplane/.vscode-server/code-05047486b6df5eb8d44b2ecd70ea3bdf775fd937 comman…

C++中的析构函数

一、析构函数概念 析构函数不是完成对象的销毁&#xff0c;对象的销毁是由编译器完成的。析构函数完成的是对象中资源的清理工作。通常是对对象中动态开辟的空间进行清理。 二、析构函数特性 1.析构函数的函数名是 ~类名 2.析构函数无参数无返回值 3.一个类中只能有一个析…