我想向动态内部表中添加一个动态表行。
DATA: lo_structdescr TYPE REF TO cl_abap_structdescr,
lo_tabledescr TYPE REF TO cl_abap_tabledescr,
lt_components TYPE abap_component_tab,
ls_component TYPE LINE OF abap_component_tab,
lt_keys TYPE abap_keydescr_tab,
lt_table
我的递归方法中有一个传入的深结构,它包含结构和表,所以我使用RTTI检查类型、循环并执行操作,以防我找到了特定的组件。
如果当前组件是一个结构或表,那么方法会调用它自己。
问题:我导入结构时输入了any类型。到目前一切尚好。我也想把它作为A型出口。
我在这里挣扎。
如何将已编辑的深结构分配给导出参数?
METHOD process_input.
DATA: lo_type_descr TYPE REF TO cl_abap_typedescr,
lo_struct_descr TYPE REF TO cl_abap_structdescr,
lv_comp_fo
我目前正在进行一个项目,将数据提取到几个itabs中,并将它们全部保存到本地pc上的单个excel文件中。
为了将数据移动到excel文件中,我必须遍历表中的字段,这些字段似乎可以用cl_abap_structdescr=>describe_by_data和cl_abap_tabledescr=>create函数存档。在我阅读的中,作者将它们与ABAP字典表一起使用,我的目标是将它与任意内部表一起使用。
我在测试报告中尝试了它,并使用T005进行测试:
data:
lt_t005 type standard table of t005,
假设我有一个表quants,希望找出是否存在任何行,其中字段lenum不是初始值。表是使用select语句内联声明的,因此我没有可用的键。
由于我没有密钥,下面的解决方案不起作用:
line_exists( VALUE #( FOR wa IN quants WHERE ( lenum IS NOT INITIAL ) ( wa ) ) )
由于我想检查不平等,所以表表达式不起作用:
line_exists( quants[ lenum NE '' ] )
到目前为止,我提出的唯一解决办法是:
abap_true EQ REDUCE abap_bool( INIT bool =
在下面的字符串中,我需要为'(any day)‘使用re.findall,然后将其打印到分隔符',’之前
rr='PU3lserver1^server2|ABAP|Revisions|true|null|Weekend
only,ATN|server3|ABAP|Revisions|true|null|1:00 AM to 3:00 AM CET (any
day),B4P|server4^server5|ABAP|Revisions|true|Generic AFL|8:00 PM to 3:00 AM
CET (any day),C8B|server6|ABA
我需要在字段符号<itab>中获取字段名,这样我就可以使用ALV的字段目录的名称。
所以我使用了cl_abap_structdescr,但是它总是给我带来一个错误。我尝试了一个内部表,并得到了预期的结果,但我必须使用字段符号,而不是内部表。
ASSIGN lo_itab->* TO <itab>
data: go_struct type ref to cl_abap_structdescr,
gt_comp type abap_component_tab,
gs_comp type abap_componentdescr.
我使用cl_abap_structdescr->get_components获取结构中字段的列表。当我在本地声明的结构类型上使用它时,它工作得很好,但是当我在DDIC结构上使用它时,它并没有给出我期望的结果。
可复制示例:
TYPES: BEGIN OF gty_outtab,
infty TYPE infty,
uname TYPE uname,
bdate TYPE datum,
btime TYPE uzeit,
pernr TYPE pernr_d,
opera TYPE hr_opera,
begda TYPE begda,
endda TYPE
我使用下面的ABAP代码通过正则表达式查找文本:
DATA: regex TYPE REF TO cl_abap_regex,
match TYPE REF TO cl_abap_matcher,
match_result_tab TYPE match_result_tab.
TRY.
CREATE OBJECT regex
EXPORTING
pattern = '01|012345'.
CATCH cx_sy_regex .
ENDTRY.
TRY.
CRE
我尝试编译ABAP提供的声明变量、类型和类似内容的所有方法,包括过时的语法变体和acrane语法变体。因此,例如,我会在列表中包括字段组,但不包括类的声明。我目前的列表如下。我错过什么了吗?
语句声明变量
- DATA-like declarative statements数据(不包括公共部分的数据开头)、静态、参数、参数、常量
- FIELD-SYMBOLS -内联声明
-程序的实际参数
表单(子例程)、函数、方法
-其他变量声明语句
范围,SELECT-OPTIONS:还有更多?
语句声明类型
- TYPES
other statements
- DATA BEGIN OF COM
我的程序可以通过两种方式启动:
从我的一个本地类调用MAIN函数的START OF SELECTION事件。调用同一方法的ZAVGTTA4事务。
在PAI,对于BACK事件,当调用LEAVE TO SCREEN '0'.时,我的程序根据它的启动方式有两种行为方式。我想回到选择屏幕(1000)。
我想过查询堆栈,在那里我肯定能找到我的程序是如何调用的。我可以看到堆栈跟踪是不同的,但我不知道如何从程序访问我的堆栈。我听说过RTTI,我认为它可能对我有帮助。
我们正在编写一个sapjco客户端来自动化某些事情。但是,有一个函数在初始化函数时似乎有问题。其他功能块可以正确连接,但此功能块在尝试连接时崩溃。
该函数没有导入。但是我们也尝试了import,也得到了同样的结果。所以添加一个看起来并不是很有效
FUNCTION ZE237_GET_REZEPTID.
TYPES: BEGIN OF ZE237SOLLDATEN_TYP,
id TYPE ZE237SOLLDATEN-ID,
name TYPE ZE237SOLLDATEN-NAME,
END OF ZE237SOLLDATEN_TYP.
DATA lt_table TYPE
对于调用方法-静态方法调用(过时),ABAP关键字文档指出:“如果调用方法用于独立方法调用,则不可能有链接的方法调用.”
然而,下面的代码在7.40系统上愉快地执行。这不是独立方法调用的一个例子吗?否则,我到底犯了什么错?
REPORT ZUTEST3.
CLASS class_parent Definition.
PUBLIC Section.
METHODS m1 returning value(r) type ref to class_parent.
ENDCLASS.
CLASS class_parent Implementation.
Method m1.