ABAP是SAP软件R / 3,S / 4HANA,CRM和许多其他软件的编程语言。
我有一个具有不同状态和多个工厂的工单表,如下所示: 植物 订单ID 地位 工厂1 订单1 打开 工厂1 订单2 已发布 工厂1 订单3 完全的 工厂1 订单4 打开 普...
我正在使用服务器配置将项目迁移到 PyRFC。 我的程序正在注册一个要调用的函数。传入的数据分为 3 个 DTP,因此我的函数将被校准...
我有几个“使用消息类”创建的自定义异常类。由于我无法直接从他们那里获取消息,因此我想创建一个实用程序方法,从给定的
我尝试在分离器容器内使用 ALV 网格。 目前,我在尝试管理变体时遇到了一个错误。 “管理变体”屏幕是空的。 我认为出现这个问题是因为...
我需要更新名为 ANLZ 的数据库表中名为 F1 和 F2 的两个字段。 表 ANLA 有一个名为 ACTIVE 的字段,用于说明 ANLZ 中的字段是否可以更新。 连接两者的钥匙...
如何在ABAP CDS 7.40中模拟LEFT和RIGHT函数?
Eclipse(2023 年 6 月版)在下面的 SAP CDS 视图上显示语法错误,我无法在我们的 SAP ECC 系统中保存/激活它,但完全相同的代码正在保存/激活 fi...
Eclipse(版本 2023 年 6 月版)在以下 SAP CDS 语法上显示错误,我无法在 SAP ECC_System_1 中保存/激活它,但完全相同的代码可以正常保存/激活...
我正在调用 cl_abap_typedescr=>describe_by_name 方法。它可能会抛出 TYPE_NOT_FOUND 异常。我来自 c#,在 c# 中很容易捕获这样的错误。但在
我需要为 SAP RAP 服务实现读取方法。 在读取调用中,我需要发送基于消息的条件。 但创建了相同的行为定义,但该方法不是触发...
sap.ui.core.util.File.save 文件损坏?
我想在前端下载一个来自后端的 OData 文件。 该文件使用 FM 'SCMS_BASE64_ENCODE_STR' 进行编码,现在我想对其进行解码并使用 SAPUI5 下载它。 我...
我尝试调试 OData 服务的 ABAP 堆栈,我发现这个调用需要更多时间,被称为“加载 MPC 类”,与所有 DPC 和 DPC_EXT 类相同,...
调用 HR_INFOTYPE_OPERATION 时清除 ITXEX 字段
我们在维护 Infotype 记录的 ITXEX 字段(长文本指示)时遇到了困难。 假设我们在 Infotype 数据库表中获得了一条现有记录,其中填充了长文本(ITXEX 字段
我正在实现一个并行执行相同代码两次的报告。 为了实现这一目标,我执行以下操作: 调用函数“my_func” 开始新任务“T1”目的地“NONE” 呼叫 go_r...
我在使用我无法弄清楚的简单转换时遇到问题。 运行代码在转换行给出以下错误消息(异常类 CX_ST_REF_ACCESS) 我在使用简单的转换时遇到问题,我无法弄清楚。 运行代码在转换行CX_ST_REF_ACCESS处给出以下错误消息(异常类<tt:loop name="PurchaseOrder" ref="PurchaseOrder">): 访问引用节点“PURCHASEORDER”时出错。引用节点未定义或没有必要的类型 使用CALL Transformation时出现错误。 我尝试使用简单转换从 XML 中读取数据。 这是我的简单转换: <?sap.transform simple?> <tt:transform xmlns:tt="http://www.sap.com/transformation-templates"> <tt:root name="PurchaseOrder"/> <!-- Root element: PurchaseOrder --> <tt:template> <tt:loop name="PurchaseOrder" ref="PurchaseOrder"> <PurchaseOrder> <!-- Address Elements --> <Address> <tt:loop name="Adress" ref="PurchaseOrder.Address"> <Name> <tt:value ref="Name"/> </Name> <Street> <tt:value ref="Street"/> </Street> <City> <tt:value ref="City"/> </City> <State> <tt:value ref="State"/> </State> <Zip> <tt:value ref="Zip"/> </Zip> <Country> <tt:value ref="Country"/> </Country> </tt:loop> </Address> <!-- DeliveryNotes Element --> <DeliveryNotes> <tt:value ref="PurchaseOrder"/> </DeliveryNotes> <!-- Items Section --> <Items> <tt:loop ref="PurchaseOrder"> <Item> <ProductName> <tt:value ref="ProductName"/> </ProductName> <Quantity> <tt:value ref="Quantity"/> </Quantity> <USPrice> <tt:value ref="USPrice"/> </USPrice> <tt:cond> <Comment> <tt:value ref="Comment"/> </Comment> </tt:cond> <tt:cond> <ShipDate> <tt:value ref="ShipDate"/> </ShipDate> </tt:cond> </Item> </tt:loop> </Items> </PurchaseOrder> </tt:loop> </tt:template> </tt:transform> 我的ABAP代码(精简到相关部分): TYPES: BEGIN OF ty_address, name TYPE string, street TYPE string, city TYPE string, state TYPE string, zip TYPE string, country TYPE string, END OF ty_address. TYPES: BEGIN OF ty_item, productname TYPE string, quantity TYPE i, usprice TYPE p DECIMALS 2, comment TYPE string, " Optionales Feld für Kommentar shipdate TYPE d, " Optionales Feld für ShipDate END OF ty_item. DATA: BEGIN OF ty_purchase_order, addresses TYPE TABLE OF ty_address, " Mehrere Address-Einträge deliverynotes TYPE string, items TYPE TABLE OF ty_item, " Tabelle mit Items END OF ty_purchase_order. DATA: gv_file TYPE string, " Datei für den Upload lt_xml_table TYPE TABLE OF string, " Tabelle für XML-Zeilen gv_xml_string TYPE string. " Für das gesamte XML als String gv_file = p_file. CALL METHOD cl_gui_frontend_services=>gui_upload EXPORTING filename = gv_file * codepage = '1252' CHANGING data_tab = lt_xml_table EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 not_supported_by_gui = 17 error_no_gui = 18 OTHERS = 19. LOOP AT lt_xml_table INTO DATA(lv_line). CONCATENATE gv_xml_string lv_line INTO gv_xml_string. ENDLOOP. CALL TRANSFORMATION ZJB_TRAN0 SOURCE XML gv_xml_string RESULT PurchaseOrder = ty_purchase_order. 最后是我想要处理的 XML 文件: <PurchaseOrder> <Address> <Name>Ellen Adams</Name> <Street>123 Maple Street</Street> <City>Mill Valley</City> <State>CA</State> <Zip>10999</Zip> <Country>USA</Country> </Address> <Address> <Name>Tai Yee</Name> <Street>8 Oak Avenue</Street> <City>Old Town</City> <State>PA</State> <Zip>95819</Zip> <Country>USA</Country> </Address> <DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes> <Items> <Item> <ProductName>Lawnmower</ProductName> <Quantity>1</Quantity> <USPrice>148.95</USPrice> <Comment>Confirm this is electric</Comment> </Item> <Item> <ProductName>Baby Monitor</ProductName> <Quantity>2</Quantity> <USPrice>39.98</USPrice> <ShipDate>1999-05-21</ShipDate> </Item> </Items> </PurchaseOrder> 在转换中,您不应该在顶部 XML 节点 (<PurchaseOrder>) 之前循环,因为顶部 XML 节点是唯一的。 发生错误CX_ST_REF_ACCESS: ABAP 名称不存在 或者实际类型不是预期的类型 当涉及到循环时,它隐含地意味着ABAP节点是一个内表,但事实并非如此。 在你的例子中,语句<tt:loop name="PurchaseOrder" ref="PurchaseOrder">引用(ref)根名称“PurchaseOrder”,它引用ABAP变量TY_PURCHASE_ORDER,它是一个结构,所以循环是没有意义的。 ABAP 名称的混乱/ref 为了避免混淆,我建议在转换 (ref) 中以全部大写形式指示 ABAP 名称,以避免与 XML 名称混淆。您将看到您指示的 ABAP 名称在您的 ABAP 代码中不存在(ADDRESS 而不是 ADDRESSES)。 例如,最好输入以下内容,而不是 <tt:root name="PurchaseOrder"/> 和 <tt:loop name="Adress" ref="PurchaseOrder.Address">: <tt:root name="PURCHASEORDER"/> <tt:template> <PurchaseOrder tt:ref="PURCHASEORDER"> ... <tt:loop name="Adress" ref="ADDRESSES"> 注意,ref可以有多种表达方式,如<PurchaseOrder tt:ref="PURCHASEORDER">和<tt:loop name="Adress" ref="ADDRESSES">所示,它们都有相同的含义(设置当前ABAP节点指针),不同之处在于前缀tt:当 XML 元素不是 ST 命令时需要。 关于loop的困惑 您应该在 <Address> 之前循环,而不是之后,因为 <Address> 在 XML 文件中多次出现。 <tt:loop ref="ADDRESSES"> <address> ... </address> </tt:loop> 关于loop name="..."的困惑 如果您不提及名称,则无需注明名称。如果您有两个或多个嵌套循环,则名称很有用,例如引用内循环(例如第二级)中的 ABAP 内容 引用外循环(例如第一级)。 <tt:loop ref="ADDRESSES"> ... <address> ... </address> </tt:loop> NB:关于ABAP代码,我猜您将ty_purchase_order设置为变量,因为在尝试将其设置为类型时出现语法错误,这是由于addresses TYPE TABLE OF ty_address(也是items),因为复杂的内部表类型必须是“完整”,即指定表类别和键,例如完整的可能是addresses TYPE STANDARD TABLE OF ty_address WITH EMPTY KEY。
正如人们可能知道的那样,我们有一个方便的 MOVE-CORRESPONDING 子句作为 EXPANDING NESTED TABLES: 移动对应: 到 扩展嵌套表。 基本上是什么...
一般来说,我会尝试让我的问题可重现。 在这种情况下我找不到办法。请随时指导我如何获取更多详细信息,我将附上。 在某些情况下,我们使用 ABAP ...
如何设置@Conclusion.filter.defaultValue的日期范围?
我正在使用 ABAP Restful 应用程序编程模型 - oData v2。 我希望能够默认指定一个日期范围,例如过去 3 个月内的 CreationDate。 在非常基础的层面上,我可以定义...
我正在尝试使用 Restful ABAP 编程模型 (RAP) 来涵盖以下用例: 接收数据时包含字段 a、字段 b、字段 c 和字段 d 执行逻辑来转换入站
我需要构造一个语句,根据另一个表中的存在情况来填充列值。我猜测 CTE (7.51 abapwith ) 和 select case 的组合可以完成这项工作,但我无法写...
我想将一个大数据库表复制到另一个。这是我目前的方法: 使用 HOLD lv_db_cursor FOR 打开光标 从 zcustomers 中选择 *。 做。 刷新 gt_custom。 获取下一个光标