我想对具有 6 个关键字段的数据库表执行 SELECT 查询,假设它们是 keyA、keyB、...、keyF。
作为我的 ABAP 功能模块的输入参数,我确实收到了一个具有关键字段结构的内部表,因此该内部表中的每个条目对应于数据库表中的一个元组。
因此,我只需要从数据库表中选择与我的内部表中的条目相对应的所有元组。此外,我想在完全相同的查询中聚合该数据库表中的金额列。
在伪 SQL 中,查询将如下所示:SELECT SUM(amount) FROM table WHERE (keyA, keyB, keyC, keyD, keyE, keyF) IN {internal table}。
但是,这种表示在 ABAP OpenSQL 中是不可能的。
只允许声明一列(例如 keyA),而不是组合键。此外,我只能在关键字 IN 后使用“选择表”(带有 SIGN、OPTIOn、LOW、HIGH 的那些)。使用 FOR ALL ENTRIES 似乎可行,但是在这种情况下我不能使用 SUM,因为在同一查询中不允许聚合。
有什么建议?
在SQ02
事务中,我想使用 check 命令。我可以OR
用另一个运算符替换该运算符,从而缩短命令吗?SQL中是否存在像 , 这样的运算符IN
?检查命令类似于:
CHECK SKB1-BUKRS EQ '1000'
or CHECK SKB1-BUKRS EQ '2001'
or CHECK SKB1-BUKRS EQ '5221'
。SQL中是否存在像 , 这样的运算符IN
?
CHECK SKB1-BUKRS in ('1000', '2001', '5221')
当我在记录处理部分写入:START-OF-SELECTION 时。检查 gt_ranges 中的 skb1-bukrs。
我正在探索 hybris 销售云试用版。我想使用邮递员测试 oauth2,我不知道这是否正确,但我通过转到{subaccount}在 SAP Cloud Platform cockpit 中创建了一个客户端应用程序| 安全 | 身份验证 | 客户。我在订阅中放了什么?在邮递员中,我应该把什么作为范围?
在 Cloud Foundry 上部署项目之前,为什么需要将此文件添加到我的 JAVA 项目中?是强制性的吗?
我试图使用以下代码将文本写入本地文件:
data: fname(60), text type string value 'la la la'.
fname = 'myfile.txt'.
OPEN DATASET fname FOR OUTPUT IN TEXT MODE encoding default.
TRANSFER text TO fname.
CLOSE DATASET fname.
write 'done'.
Run Code Online (Sandbox Code Playgroud)
程序运行正常,执行后出现"完成".但是我在PC上找不到文本文件"myfile.txt"(它不在SAP工作目录中).
附加信息 我使用FM GUI_DOWNLOAD得到了这个,但是我必须使用OPEN DATASET,TRANSFER方法,因为我在后台程序中写这个(由BSP使用SUBMIT调用).
在 SAP ERP GUI 中,对于报告选择标准:当没有为该字段维护文档时,如何获取与屏幕字段关联的技术信息?
通常,当该字段有文档时,我可以在该字段处于焦点时按 F1。这将打开帮助窗口。在帮助窗口中,有一个技术信息按钮。按下它将弹出一个对话框,其中包含与屏幕字段相关的更多技术细节。如果没有为该领域维护文档,我如何获得此信息?
TIA, 马丁
所以我刚刚发现了字符串模板,它们非常棒。是否有资源可以让我找到每个 SAP 版本为 ABAP 带来的功能?
严格来说,这不是一个 SO 问题,但如果所有 ABAP 开发人员能够研究版本中的新增内容,那么这将使他们变得更好。
正如Horst Keller在他的ABAP和JSON帖子中提到的那样,“ ABAP原生支持7.0.2版和7.03 / 7.31版(内核补丁116)JSON”。
在我看来过于通用的情况下,恰好是7.02,因为以下行:
writer = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
返回错误: "The field CO_XT_JSON is unknown, but there is a field with the similar name CO_XT_XOP".
那么有什么方法可以轻松生成JSON吗?
编辑:SAP的屏幕截图-状态
我必须根据 where 条件在我的内部表上执行循环,但根据我的程序的模式,必须在运行时修改 where 条件的字段。
我知道在 SELECT 语句中这是可能的,但是当我在循环中执行此操作时出现错误。
这是我的代码:
CASE gv_cdvue.
WHEN 'L'.
lv_condi = 'dcmdr GE gv_daybf OR dcmdr LE gv_daybf '.
WHEN 'C'.
lv_condi = 'dcldr GE gv_daybf OR dcldr LE gv_daybf '.
WHEN 'E'.
WHEN OTHERS.
ENDCASE.
LOOP AT gt_plcad INTO ls_plcad WHERE (lv_condi).
....
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)
我的错误是:
Statement concluding with "...(LV_CONDI)" ended unexpectedly.
Run Code Online (Sandbox Code Playgroud) 我从来不需要在 ABAP 系统中存储密码..现在是学习新东西的时候了......
我需要存储一个密码,我在 ABAP 系统上使用它来连接到不同的系统,因此我无法存储(单向)哈希。
我遇到了一些功能模块,例如FIEB_PASSWORD_ENCRYPT
(使用硬编码密钥)或一些存储密码的 base64 编码版本的建议(天哪!)=> 两者都只会阻止任何人“快速读取”密码,如果它在屏幕,不防止任何人窃取它。
我还遇到了SECSTORE
(SAP Help Link),它显然只能由 SAP 组件使用,不能由自定义应用程序使用。
基本上,我的需求是
以加密形式将密码存储在某个数据库表中
不可能(至少很难)通过该表上的普通选择获得密码
以清晰的形式从数据库表中获取,以便能够将其传递给“其他系统”
我不想重新发明轮子,尤其是在安全领域。
我认为,必须有一些东西可以用于这个目的......
更新为什么我需要那个:
免责声明:我目前正在讨论这是否可以变成基本身份验证,这既不安全也不安全(标题与正文)。但是使用基本身份验证,我可以使用目标配置,而目标配置又使用 SECSTORE。由于涉及多方并且对系统的访问是多层次的,因此这个讨论很长......