ABAP SALV实现弹出ALV选择
问题场景
需要弹出一个ALV并获取选择的数据
实现思路
- 跳转屏幕
- 弹出ALV(通过SALV)
- 弹出ALV(通过REUSE_ALV_POPUP_TO_SELECT)
实现效果
因为这里需要的是单选,所以没有多选列

实现代码
MODULE sel_zfretype INPUT.DATA:lt_zmmt041 LIKE TABLE OF zmmt041,lt_twlad LIKE TABLE OF twlad,lt_twlad01 LIKE TABLE OF twlad.DATA:lfdnr TYPE lfdnr_twlad.DATA: lt_msg TYPE rs_t_msg,ls_msg TYPE bal_s_msg.DATA: lf_one_msg_as_sys_msg TYPE flag.DATA go_alv TYPE REF TO cl_salv_table.DATA: go_functions TYPE REF TO cl_salv_functions_list,go_selections TYPE REF TO cl_salv_selections,go_layout TYPE REF TO cl_salv_layout,go_display TYPE REF TO cl_salv_display_settings.DATA: gr_columns TYPE REF TO cl_salv_columns_table.DATA: gr_column TYPE REF TO cl_salv_column_table.DATA lt_rows TYPE salv_t_row.DATA:ls_row TYPE LINE OF salv_t_row.DATA:lv_wlzs LIKE zmmtydand-menge.DATA:BEGIN OF lt_sel OCCURS 1,zbjh LIKE zmmt041-zbjh,zxmh LIKE zmmt041-zxmh,zfylx LIKE zmmt041-zfylx,zfylx_t LIKE zmmt041-zfylx_t,zvendor LIKE zmmt041-zvendor,name2 LIKE zmmt041-name2,zkunnr LIKE zmmt041-zkunnr,name1 LIKE zmmt041-name1,zarea LIKE zmmt041-zarea,zcity LIKE zmmt041-zcity,zcountry LIKE zmmt041-zcountry,zarea_t LIKE zsdt010-zarea_t,zcity_t LIKE zsdt010-zcity_t,zcountry_t LIKE zsdt010-zcounty_t,zdj LIKE zmmt041-zdj,zdtszl LIKE zmmt041-zdtszl,zsl LIKE zmmt041-zsl,zbz LIKE zmmt041-zbz.DATA:END OF lt_sel.DATA:lt_lfa1 LIKE TABLE OF lfa1 WITH HEADER LINE,lt_zsdt0101 TYPE TABLE OF zsdt010 WITH HEADER LINE.REFRESH:lt_zmmt041,lt_twlad,lt_twlad01."校验供应商IF g_wa_data-lifnr IS INITIAL.REFRESH lt_msg.CLEAR ls_msg.ls_msg-msgty = 'E'.ls_msg-msgid = 'ZMM01'.ls_msg-msgno = '113'.APPEND ls_msg TO lt_msg.IF lt_msg IS NOT INITIAL.cl_epic_ui_services=>show_messages_with_alog(it_messages = lt_msgiv_one_msg_direct = lf_one_msg_as_sys_msg ).CLEAR:g_wa_item_fre-zfretype.RETURN.ENDIF.ENDIF."处理费用类型描述CHECK g_wa_item_fre-zfrename <> '运输费用'.IF g_wa_item_fre-zfrename EQ '运输费用'.RETURN.ELSE.SELECT SINGLE zfrename INTO g_wa_item_fre-zfrenameFROM zmmt037WHERE zfretype = g_wa_item_fre-zfretype.ENDIF.CLEAR:g_wa_item_fre-zfredj,g_wa_item_fre-zfresl,g_wa_item_fre-zfretax,g_wa_item_fre-zfrecefy,g_wa_item_fre-zfreje."处理单价和税率SELECT * FROM zmmt041 INTO CORRESPONDING FIELDS OF TABLE lt_zmmt041WHERE zvendor = g_wa_data-lifnr AND vstel = g_wa_data-vstelAND zwxp = g_wa_data-zwxp AND zfylx = g_wa_item_fre-zfretypeAND zstatus = '3' AND zyxqc < sy-datum AND zyxqd > sy-datumAND zwzc = g_wa_data-zwzc."modify by wangk at 20230214 其他费用选择逻辑变更"处理最小桶数/重量,过滤高于最小桶数/重量的lv_wlzs = 0.LOOP AT g_it_item.lv_wlzs = lv_wlzs + g_it_item-menge.ENDLOOP.DELETE lt_zmmt041[] WHERE zdtszl >= lv_wlzs.IF lt_zmmt041[] IS INITIAL.g_wa_item_fre-zfrejhw = 'X'.RETURN.ENDIF."选择报价REFRESH:lt_sel,lt_lfa1,lt_zsdt0101.MOVE-CORRESPONDING lt_zmmt041[] TO lt_sel[].SELECT * FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE lt_lfa1FOR ALL ENTRIES IN lt_selWHERE lifnr = lt_sel-zvendor.SELECT * FROM zsdt010 INTO CORRESPONDING FIELDS OF TABLE lt_zsdt0101.LOOP AT lt_sel INTO DATA(ls_sel)."供应商READ TABLE lt_lfa1 WITH KEY lifnr = ls_sel-zvendor.IF sy-subrc = 0.ls_sel-name2 = lt_lfa1-sortl.ENDIF."三级地址IF ls_sel-zarea IS NOT INITIAL.READ TABLE lt_zsdt0101 WITH KEY zarea = ls_sel-zarea.IF sy-subrc = 0.ls_sel-zarea_t = lt_zsdt0101-zarea_t.ENDIF.ENDIF.IF ls_sel-zcity IS NOT INITIAL.READ TABLE lt_zsdt0101 WITH KEY zcity = ls_sel-zcity zarea = ls_sel-zarea.IF sy-subrc = 0.ls_sel-zcity_t = lt_zsdt0101-zcity_t.ENDIF.ENDIF.IF ls_sel-zcountry IS NOT INITIAL.READ TABLE lt_zsdt0101 WITH KEY zcounty = ls_sel-zcountry zcity = ls_sel-zcity zarea = ls_sel-zarea.IF sy-subrc = 0.ls_sel-zcountry_t = lt_zsdt0101-zcounty_t.ENDIF.ENDIF.MODIFY lt_sel FROM ls_sel.CLEAR:ls_sel.ENDLOOP.TRY.cl_salv_table=>factory(IMPORTINGr_salv_table = go_alv"方法生成的ALV容器对象CHANGINGt_table = lt_sel[] )."alv展示的数据CATCH cx_salv_msg.ENDTRY.go_functions = go_alv->get_functions( ).go_functions->set_all( 'X' )."设置默认按键go_selections = go_alv->get_selections( ).go_selections->set_selection_mode( if_salv_c_selection_mode=>single )."设置选择模式go_display = go_alv->get_display_settings( ).go_display->set_fit_column_to_table_size( 'X' )."列自适应gr_columns = go_alv->get_columns( ).gr_columns->set_optimize( 'X' ).gr_column ?= gr_columns->get_column( 'ZBZ' )."需处理的列gr_column->set_long_text( '备注' ).gr_column->set_medium_text( '备注' ).gr_column->set_short_text( '备注' ).
*gr_column->set_output_length( 15 ).gr_column ?= gr_columns->get_column( 'NAME2' )."需处理的列gr_column->set_long_text( '分包方' ).gr_column->set_medium_text( '分包方' ).gr_column->set_short_text( '分包方' ).gr_column ?= gr_columns->get_column( 'NAME1' )."需处理的列gr_column->set_long_text( '送达方' ).gr_column->set_medium_text( '送达方' ).gr_column->set_short_text( '送达方' ).gr_column ?= gr_columns->get_column( 'ZAREA_T' )."需处理的列gr_column->set_long_text( '目的城市(省)' ).gr_column->set_medium_text( '目的城市(省)' ).gr_column->set_short_text( '省' ).gr_column ?= gr_columns->get_column( 'ZCITY_T' )."需处理的列gr_column->set_long_text( '目的城市(市)' ).gr_column->set_medium_text( '目的城市(市)' ).gr_column->set_short_text( '市' ).gr_column ?= gr_columns->get_column( 'ZCOUNTRY_T' )."需处理的列gr_column->set_long_text( '目的城市(县/区/镇)' ).gr_column->set_medium_text( '目的城市(县/区/镇)' ).gr_column->set_short_text( '县/区/镇' ).gr_column ?= gr_columns->get_column( 'ZDTSZL' )."需处理的列gr_column->set_long_text( '最低桶数/重量' ).gr_column->set_medium_text( '最低桶数/重量' ).gr_column->set_short_text( '最低桶数/重量' ).gr_column ?= gr_columns->get_column( 'ZDJ' )."需处理的列gr_column->set_long_text( '单价' ).gr_column->set_medium_text( '单价' ).gr_column->set_short_text( '单价' ).gr_column ?= gr_columns->get_column( 'ZAREA' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZCITY' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZCOUNTRY' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZFYLX' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZBJH' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZXMH' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZVENDOR' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZKUNNR' ).gr_column->set_visible( cl_salv_column_table=>false ).gr_column ?= gr_columns->get_column( 'ZSL' ).gr_column->set_visible( cl_salv_column_table=>false ).IF go_alv IS BOUND.go_alv->set_screen_popup(start_column = 10end_column = 110start_line = 5end_line = 15 ).go_alv->display( ). "调用显示方法ENDIF.REFRESH:lt_rows.lt_rows = go_selections->get_selected_rows( ).IF lt_rows[] IS INITIAL.g_wa_item_fre-zfrejhw = 'X'.RETURN.ENDIF.LOOP AT lt_rows INTO ls_row.READ TABLE lt_sel INTO DATA(ls_zmmt041) INDEX ls_row.g_wa_item_fre-zfredj = ls_zmmt041-zdj.g_wa_item_fre-zfretax = ls_zmmt041-zsl.g_wa_item_fre-zfrejhw = ''.CLEAR:ls_row.ENDLOOP.
ENDMODULE.
实现过程思路
- 因为屏幕这块做的比较多了,所以这次就想通过ALV实现,一开始使用的函数:REUSE_ALV_POPUP_TO_SELECT。使用这个函数遇到了1个问题:无法实现单选。一直没有找到解决方案,就放弃了。
- 采用SALV实现,系统提供了一个示例程序可以参考:SALV_TEST_TABLE_SELECTIONS
使用这个方案也是需要解决几个问题:a.列的宽度自适应 b.隐藏列 c.实现单单选效果 d.修改列对应的描述 e.获取返回的数据
问题a: 想通过下面这个方法实现
go_display = go_alv->get_display_settings( ).
go_display->set_fit_column_to_table_size( 'X' )."列自适应
但是调试一直不生效,没找到问题出在哪里。
后面通过另外一种方案实现:
gr_columns = go_alv->get_columns( ).
gr_columns->set_optimize( 'X' ).
成功达到了想要的效果。
问题b:
这里我想到了fieldcat,但是SALV的fieldcat是通过以下实现的
gr_column ?= gr_columns->get_column( 'ZAREA' ).
gr_column->set_visible( cl_salv_column_table=>false ).
问题c:
go_selections = go_alv->get_selections( ).
go_selections->set_selection_mode( if_salv_c_selection_mode=>single )."设置选择模式
这里有几种选择模式

问题d:
gr_columns = go_alv->get_columns( ).
gr_column ?= gr_columns->get_column( 'ZBZ' )."需处理的列
gr_column->set_long_text( '备注' ).
gr_column->set_medium_text( '备注' ).
gr_column->set_short_text( '备注' ).
*gr_column->set_output_length( 15 ).
gr_column下面有很多方法

这里面也有几个关于前导0的函数,我也是多次调试没有生效,截止到现在没有找到问题的原因,因为最近需求比较急,我就没花时间去深究。
问题e:
在display( )方法后面可以通过函数获取选择的行。
IF go_alv IS BOUND.go_alv->set_screen_popup(start_column = 10end_column = 110start_line = 5end_line = 15 ).go_alv->display( ). "调用显示方法
ENDIF.REFRESH:lt_rows.
lt_rows = go_selections->get_selected_rows( ).LOOP AT lt_rows INTO ls_row.READ TABLE lt_sel INTO DATA(ls_zmmt041) INDEX ls_row.
ENDLOOP.
附加收获
下面是一段逻辑流,遇到的问题及解决方案:
- 编辑后保存不了——没有写FIELD
- 写了MODULE没有生效——需要计算的数据一定顺序一定在被计算的后面,比如下面的zfreje和zfrecefy是由zfredj和zfresl计算出来的,那么顺序上zfreje和zfrecefy要在上面
- 改了zfretype其他字段没有更新——因为zfretype的优先级最高,所以要放在最后,这样zfretype对应的MODULE才会覆盖前面的字段。
LOOP AT g_it_item_fre.CHAIN.FIELD g_wa_item_fre-zno.FIELD g_wa_item_fre-zfreje.FIELD g_wa_item_fre-zfrecefy.FIELD g_wa_item_fre-zfredj MODULE js_zfreje ON REQUEST.FIELD g_wa_item_fre-zfresl MODULE js_zfreje ON REQUEST.FIELD g_wa_item_fre-zfretax.FIELD g_wa_item_fre-zfrejhw.FIELD g_wa_item_fre-zfretype MODULE sel_zfretype ON REQUEST.MODULE tab_item_fre_modify ON CHAIN-REQUEST.ENDCHAIN.FIELD g_wa_item_fre-boxMODULE tab_item_fre_mark ON REQUEST.ENDLOOP.
相关文章:
ABAP SALV实现弹出ALV选择
问题场景 需要弹出一个ALV并获取选择的数据 实现思路 跳转屏幕弹出ALV(通过SALV)弹出ALV(通过REUSE_ALV_POPUP_TO_SELECT) 实现效果 因为这里需要的是单选,所以没有多选列 实现代码 MODULE sel_zfretype INPUT.…...
git check-pick,git patch 与 git stash 详解
大家好,我是 17。 今天和大家聊一聊 git check-pick,git patch 与 git stash 的用法。 git cherry-pick 为什么要用 cherry-pick? 不适合 merge 的场景就可以考虑 cherry-pick。 试想下面这些场景 只想同步分支的部分提交。两个分支是两上完全独立…...
OA漏洞-到处搜集整理
一米OA getfile.jsp 任意文件读取漏洞 原文链接 漏洞复现 一米OA getfile.jsp 任意文件读取漏洞 一米OA协同办公系统,集成了OA办公自动化系统、手机客户端、专业报表工具,为全国千万企业用户提供全功能、性价比高的OA软件。一米OA getfile.jsp文件存在任意文件读取漏洞&am…...
web端接收读卡器卡片信息
项目背景 通过电脑连接的读卡器读取卡片信息,并由web页面接收和处理卡片信息。 读卡器抛出卡片信息流程 卡片贴近或放置到读卡器上读卡器解析卡片信息,并形成固定格式的字符串,包括的信息有:卡片写入的数据、卡片原数据&#x…...
BUUCTF-练习场-WEB-第一部分(8道)
[极客大挑战 2019]EasySQL 1payload:1 or 11#是闭合前面的查询语句,or 11恒成立,可以使用or句子绕过判断,#用于注释,注释后面的内容不再执行,所以该sql命令会返回表内所有内容,其实就是实现一个…...
Java Reflection 实战- Class类
Java Reflection 实战 - Class Java 反射使得在运行时检查类、接口、字段和方法成为可能,而不需要在编译时知道类、方法等的名称。也可以使用反射来实例化新对象、调用方法和获取/设置字段值。 Java反射的功能相当强大,可以说是非常有用。例如ÿ…...
背包问题理解思路(01背包、完全背包、分组背包)
这两天把经典的三个背包问题看了一下,网上大多文章是以代码和公式为主,因为平时没刷过算法题所以理解起来花了些时间,固写一篇文章记录理解思路,本文不包含代码实现(理解了思路代码实现应该是小问题,网上一…...
Mr. Cappuccino的第39杯咖啡——Kubernetes之深入理解Pod
Kubernetes之深入理解PodPod相关概念Pod详细配置清单Pod核心配置Pod基本配置1. 创建yaml文件2. 创建namespace并根据yaml文件创建资源3. 查看namespace下的pod列表以及pod的详细信息Pod中多个容器的名称和端口号不能相同Pod镜像拉取策略Pod环境变量Pod端口相关设置Pod资源相关配…...
SqlSession 和 SqlSessionTemplate 简单使用及注意事项
1、SqlSession 简单使用 先简单说下 SqlSession 是什么?SqlSession 是对 Connection 的包装,简化对数据库操作。所以你获取到一个 SqlSession 就相当于获取到一个数据库连接,就可以对数据库进行操作。 SqlSession API 如下图示:…...
1. QSaveFile和QFile的简单使用
1. 说明 QSaveFile和QFile两个类都是用来操作文件的,区别在于QSaveFile在对文件进行写入时有一种保护机制,再写入出错时,不会对源文件中的内容进行操作。该类在执行写操作时,会先将内容写入到一个临时文件中,如果没有…...
工业4.0是如何优化垃圾处理行业的
如今,工业4.0正在影响着制造业和物流等行业,其发展潜力在未来还有望进一步扩大。一些全球领先的垃圾处理公司已经开始在水处理和废物回收等领域应用工业4.0。工业4.0的创新给这个领域带来了一些必要的改进。随着环境危机的加剧,垃圾处理行业面…...
vue 动画(transition)
一、 实现原理 在插入、更新、移除 DOM 元素时,在合适的时候给元素添加样式类名,配合 CSS 样式使用,实现动画效果。 通俗来讲,就是将要进行动画操作的 DOM 元素用 transition 标签包裹起来。在此html元素运动前,运动…...
Python 爬虫工程师面试经验分享,金三银四
🙃 作为一个 Python 爬虫工程师,我可以分享一些我在面试中的经验和建议。 首先一点是在面试中要表现自信、友好、乐于合作,同时对公司的业务和文化也要有一定的了解和兴趣,这些也是公司在招聘中看重的因素。 文章目录🕛…...
MySQL实战篇-MySQL 降配导致的实例宕机
问题描述 由于近期对服务器进行了降配,该mysql数据库会进行批量写入操作,直接导致实例宕机 查看错误日志: 2021-02-02T09:09:23.557505Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 16791ms. The settings might not be optimal. (fl…...
时隔多年,这次我终于把动态代理的源码翻了个地儿朝天
本文内容整理自 博学谷狂野架构师 动态代理简介 Proxy模式是常用的设计模式,其特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。 用户可以更加结构图࿰…...
数据分析-深度学习 Tensorflow Day6
我们需要解决的问题:1: 什么是bp 神经网络?2:理解bp神经网络需要哪些数学知识?3:梯度下降的原理4: 激活函数5:bp的推导。1.什么是bp网络?引用百度知道回复:“我们最常用的…...
leaflet 设置多个marker,导出为一个geojson文件(066)
第066个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用L.marker设置多个markers, 通过数据重组,导出为geojson文件。 这里面 ayer instanceof L.Marker 是一个很重要的判断条件,可以灵活地去运用。 直接复制下面的 vue+openlayers源代码,操作2分钟即可…...
企业与第三方供应商合作时,会存在哪些安全风险?
随着现代社会的发展,企业供应链、产业供应链已日渐成熟。其中,供应商与企业的关系也由最初的纯粹买卖关系发展成了合作伙伴关系。在整个供应链体系中,供应商与其受众承担着供应链中环环相扣的责任,可以说,企业安全的薄…...
技术源自洛克希德·马丁,光场XR眼镜FYR解析
专注于医疗场景的一家XR眼镜厂商FYR(全称:FYR Medical)近期亮相,并宣布完成了260万美元A轮融资,本轮融资由NuVasive领投,资金将用于开发世界上第一个XR光场“放大镜”类产品。据青亭网了解,NuVa…...
剑指 Offer 10- II. 青蛙跳台阶问题(LeetCode 70. 爬楼梯)(动态规划打表)
题目: 链接:剑指 Offer 10- II. 青蛙跳台阶问题;LeetCode 70. 爬楼梯 难度:简单 相关博文:剑指 Offer 10- I. 斐波那契数列(动态规划打表) 一只青蛙一次可以跳上1级台阶,也可以跳上…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
