有人能简单地给我解释一下ABAP中发生了什么吗?
我很高兴有人能解释这个概念,以及它与继承的关系,以及它如何提高性能。字段符号可以说是指针。也就是说,如果您为字段符号指定了任何内容,则该符号将与变量强耦合,对字段符号的任何更改都将立即更改变量。在性能方面,如果您在内部表上循环,就可以使用它。您可以循环到fieldsymbol中,而不是循环到结构中。如果对内部表格进行了修改,则可以直接修改fieldsymbol。然后您可以去掉modify指令,该指令用于将结构的更改映射回内部表的相应行。
读表赋值
我有以下资料:
Types: begin of ty_main,
bukrs like bseg-bukrs,
fstyl type lvc_t_styl,
end of ty_main.
DATA: it_main TYPE TABLE OF ty_main,
wa_main LIKE LINE OF it_main.
Loop it_main into wa_main where fstyl-style =
我有3个从F111调用的元素,它们是610-1610-2和610-3。
我想在这3个元素中传递相同的数据。
除了将相同的数据写入3次之外,是否可以用其他方式执行此操作
谢谢我不知道F111,但据我所知,您说有一个标准驱动程序,其算法从一个SAPscript窗口中选择要打印的元素(类似于Case paym.When'1'。调用函数“WRITE_FORM”exporting element='610-1',等等),您已经将标准SAPscript表单替换为自定义表单。在自定义SAPscript表单中,
我想从一个内部表中删除条目,该表在一列中没有“+”。现在,如果我想像这样删除它:
DELETE internal_table where field1 <> '+'.
DELETE internal_table,其中field1'+'。
它不起作用。这意味着,它将“+”作为正则表达式,只选择长度为1的任何字符
现在,我尝试了几种方法:
DELETE internal_table where field1 <> '\+'.
DELETE internal_table w
以下代码是否有最简单/最快的方法:
DATA: lv_knuma_ag LIKE STANDARD TABLE OF zta_fg_hdr WITH HEADER LINE.
RANGES: lr_knuma_ag FOR zta_fg_hdr-knuma_ag.
"Select `knuma_ag` and save it to internal table `lv_knuma_ag`
LOOP AT li_promo.
SELECT dest~knuma_ag
FRO
这是我的代码,我刚开始abap编程,想做一个小程序来学习。。。但我被困在读取txt文件从我的本地机器,我不能继续。。。
错误显示文件未打开。。。
cx_sy_file_open_mode捕获的异常语句open DATASET用于访问应用服务器上的文件。要访问前端,请使用类CL\u GUI\u FRONTEND\u SERVICES的方法。例如,检查报告图形\u IGS\u拉链\u演示
report try1.
class register definition.
public secti
我有一个ABAP-OO类,我想在其中调用方法foo()中的函数模块。有两种情况(A和B)我必须使用方法foo()。假设案例A为默认情况,使用时需要如下功能模块:
METHOD foo.
CALL FUNCTION 'A_FUNCTION'
EXPORTING
required_param_x = something
required_param_y = something_else.
" optional_param = " i am commen
我试图搜索8个表并检查是否存在某个值。我搜索了很多,我想我必须使用字段符号和动态语句。这是在报告(可执行程序)中完成的。
到目前为止,我有一个内部表,里面有8个必须搜索的表名:
BEGIN OF lt_tables_to_search_coll OCCURS 0,
name TYPE tabname,
END OF lt_tables_to_search_coll.
lt_tables_to_search_coll-name = 'TAB_01'.
APPEND lt_ta
使用7.40语法有更好的方法吗?我无法使用READ语句,因为我使用的是范围表
lr_vstel = VALUE #( sign = 'I' option = 'EQ'
( low = '5161' ) ( low = '5361' ) ).
lr_lgort = VALUE #( sign = 'I' option = 'EQ'
( low = '4004' ) ( low = '9013' )
首先,我没有ABAP的经验,我在这里是靠猜测操作的
我想向现有报告中的SELECT添加条件。
现有代码如下所示:
SELECT SINGLE *
FROM EKPO
WHERE EBELN = GT_MSEG-EBELN
AND EBELP = GT_MSEG-EBELP.
如果字段F1是某个值,字段F2是0,我想添加一个条件来排除记录(两个条件都必须为true才能排除记录)。我试过这个:
SELECT SINGLE *
FROM EKPO
WHERE EBELN =
“移动到”与x=y之间是否有任何性能增益?我有一个非常老的计划,我正在优化,我想知道是否值得把所有的行动都付诸实施。关于ABAP优化的任何其他一般提示也很好。这两种说法是:
"
要将数据对象源的值分配给变量目标,请使用以下语句:
MOVE source TO destination.
或同等声明
destination = source.
“不,这只是以两种不同方式表示的相同操作。没有什么好处。如果你想要一般的提示,我建议你仔细研究。如果您必须优化特定的程序,请使用跟踪工具(在最新版本中使用
我刚刚开始使用ABAP编写一个程序,我有一个屏幕(名为9007),其中包含一个输入/输出字段,我想用数据库中的变量填充它
开头是这样的:
PROGRAM ZMCQ.
MODULE USER_COMMAND_9007 INPUT.
SELECT SINGLE FIELD1
FROM ZTABLE_NAME INTO ??? *it doesn't work to put the field name there *
WHERE FIELD2 EQ 3.
ENDMODULE.
我被困在这
交叉张贴于:
我正在我们的代码库中运行功能正确性检查,但一些我认为在功能上不正确的对象没有被拾取:
我有以下代码,它没有使用完整的键,也没有order by语句:但它通过了检查:
搜索有问题的语句以查找不带
订购人
。ATC是否存在任何已知问题,或者下面的代码在功能上是否正确
select frgco from zmm_rel_codes up to 1 rows
into lv_frgco
where ekorg = lv_ekorg
and
我有一个程序可以执行以下操作:
用户要求程序在ALV中显示Z*表格。
然后,它选择一个表并按下SELECTTAB按钮,它将运行以下命令:
**--Display screen with the fields listed for the given table
call screen 200 starting at 10 2 ending at 70 22.
但程序停止时出现以下错误:
不允许模式对话框中的呼叫屏幕(非模式)
我想要的是以下内容:
1.用户从ALV中选择一个表。
2.
我只想问一下如何计算内部表中的重复项。我想这样做是为了让我计算每个客户的数量,并将其放入“客户数量”列中
Sales Employee Customer Customer Count
a 1 2
a 2 2
b 3 3
b
在哪里可以看到类CL\u SALV\u EXPORT\u DB\u STORAGE的ALV\u EXTRACT\u MODE的允许值
也许我是瞎的,但我用se80和看着班级都找不到它
请耐心等待,我是ABAP新手。在我的NetWeaver 7.52中,类CL\u SALV\u EXPORT\u DB\u存储没有ALV\u EXTRACT\u模式,我认为您与EXPORT\u类型相关的任何地方,如方法EXPORT中所示
该参数被键入为SALV_BS_CONSTANT,并直接转发到方法体中的EXPOR
我试图从一个内部表中显示alv中的表,其中的行是从存储在数据库中的表中添加的。如果没有where条件,我会看到alv中显示的行,但如果select语句中有where条件,则不会返回任何行
代码如下:
REPORT ZSAM.
DATA: IT_1 TYPE STANDARD TABLE OF VBAK.
select vbeln audat netwr waerk vkorg vtweg
from VBAK
into corresponding fields of Ta
我需要显示一个弹出窗口,其中包含数据库表字段中的数据(Tab1-camp_type)
此时,我创建了一个UI组件(ZUIC_TYPES),一个表视图(VWTYPES),并添加了必要的表字段
在我的上下文节点的DO\u PREPARE\u OUTPUT方法中,我编写了代码,它应该会给出camp\u type字段中的所有值,但我只得到一个值重复37次(我的表中有37行)
如何在弹出窗口中获取所有数据
这是我的密码:
DATA:lr_table TYPE REF TO crmc_mkt
我有一个类似于下面的选择:
SELECT DISTINCT
SCARR~CARRID,
SCARR~CARRNAME,
MIN( SPFLI~DISTANCE ) AS MIN_DISTANCE
FROM SCARR JOIN SPFLI ON SPFLI~CARRid = SCARR~CARRid
GROUP BY
SCARR~CARRID,
SCARR~CARRNAME
INTO TABLE @DATA(result).
在实际情况中,这些是其他表,我在SELECT
标签: Abap
directory-listing
我需要获取SAP中服务器端目录的列表。我如何在ABAP中实现这一点?是否有我可以调用的内置SAP功能
理想情况下,我需要一个可以传递路径作为输入的函数,该函数将返回内部表中的文件名列表。答案是调用函数模块EPS\u GET\u DIRECTORY\u LISTING。
目录名称->目录名称
文件掩码->传递'*'以获取所有文件
注意:这不会处理真正大的文件名(80个字符以上),它会截断名称。调用函数RZL\u READ\u DIR\u LOCAL:
FUNCTION RZL_READ_DIR_L
HRIQ_UPDATE_INFTY返回sy subrc=0。但它实际上并没有对其进行任何更改。部分源代码:
DATA:
lt_single_1001 TYPE STANDARD TABLE OF p1001 WITH HEADER LINE,
lt_1001 TYPE STANDARD TABLE OF hrp1001 WITH HEADER LINE.
SELECT * FROM hrp1001 INTO TABLE lt_1001 WHERE
obji
因此,正如我所看到的,Smartform的文本元素是(至少在本质上非常类似于)SAPScript文本。
我甚至可以在Smartform文本中包含Sapscript命令,它们显示得好像做了什么。
但是,当我测试表单时,似乎忽略了这些命令。
所以我的问题是:这些文本命令没有被解释有什么原因吗?它们是否可以在Smartform中解释,或者这只是使用同一个编辑器打开这些文本的副作用
背景:
我问这个问题是因为我必须检查Smartforms中的硬编码逻辑,我很好奇文本中的命令是否可以被视为“逻辑”,
标签: Abap
generic-programming
我是否可以定义一个ABAP方法,其中返回的参数和任何导入的参数都具有泛型类型,但仍然可以在单行中作为函数方法调用?
换言之,我想替换这个:
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_external_value
IMPORTING
output = lv_internal_value.
与:
不幸的是,类方法不能有非类型化的返回参数这一事实阻止我将函数方法的返回值声
我在循环语句中遇到了这个问题
我有一个循环:
loop at lt assigning <ls> where <condition> (im using loop instead of reaf table coz i need to use GE and LE logical statements)
if sy-subrc = 0.
result = <ls>-FIELD.
else.
result = ''.
标签: Abap
sap-selection-screens
在ABAP中,是否可以动态评估字符串模板
通常情况下,编译器将检查代码中的一些字符串模板。(花括号中的变量在编译时由编译器检查)
但是,是否可以在运行时对字符串求值
因此,不是:
data(val) = |System ID: { sy-sysid }|.
我希望插入的字符串来自其他地方,例如:
parameter: p_file type string lower case default '/mnt/{ sy-sysid }/file.txt'.
在本例中,我希望在运行时计算p_file
我使用功能模块“REUSE_ALV_GRID_DISPLAY_LVC”向最终用户输出一个内部表。我想使用户能够筛选此列表。因此,可以使用“设置过滤器”功能,但遗憾的是,“排除在选择范围之外”(红色交通灯)选项不可用:-(是否可以访问此选项
我没有看到树的林:-)除了使用第二个/或第三个选项卡“排除单个值”-请添加一个最小的示例(代码!)来重现问题。如果是,请将此标记为答案。
在我要做的程序中,它会显示每个公司代码的信息。
例如:
Fiscal Year | 4030 | 4020 | 4040 | 4050 | 4070 | TOTAL
1/2010 | 423.12 | 89.79 ..... | ......| .... | .....
2/2010 |234.00 | 04.38 ..... | ...... | .... |.....
3/2010 |432.652 | 98.80 ..... | ...... |
我想将记录添加到内部表中。当我试图添加时,t表示
字段“ITAB_EMPLOYEE”未知,但有一个字段的名称与“ITAB_EMPLOYEE_I”类似
REPORT zitab_siddhi.
TYPES: BEGIN OF EMPLOYEE,
EMPID TYPE C,
EMPNAME TYPE string,
EMPADDRESS TYPE c,
EMPEM
标签: Abap
dynprofunction-module
我需要获取数据库相关信息,以提取SAP中相应T代码的功能模块组名和屏幕号。你能提供一些关于这个要求的想法吗
谢谢你的预支 请看表TSTCP。不确定参数是如何存储在字段PARAM中的,但它们应该在字段PARAM中。可能是重复的,谢谢您的回复。。有没有办法根据T代码找到准确的屏幕编号?我看到了你的答案,但我开始调试它,它将执行3000多行代码。我可以知道我应该如何找到有效的方法来解决这个问题吗?所有答案中都有点隐藏,这是HMa的第3条,您要查找的数据在表TSTC中。
我已经创建了一个BOPF对象,如文档中所述
根据帮助,每次用户按下ENTER或save按钮时都会触发验证,现在我希望只有当用户按下save按钮时才会触发验证,我该怎么做?文档中的屏幕截图显示验证应该激活触发器Update和Delete。但是,屏幕截图被剪辑在右侧。验证是否也有触发器检查处于活动状态?不,它没有该标志
有没有办法用ABAP将数据库查询结果转换为json/yaml/xml
DATA: lt_flight TYPE STANDARD TABLE OF sflight,
lrf_descr TYPE REF TO cl_abap_typedescr,
lv_json TYPE string.
SELECT * FROM sflight INTO TABLE lt_flight.
* serialize table
ABAP7.40添加了line\u exists(…)谓词函数来分析内部表。但是有什么方法可以检查特定列是否为初始值或与目标值不同的行吗?
例如,如何检查具有初始材质列的行,如表中的第三行
Document Country Material
9001287 US 198572111
9001296 FR 160023941
9001297 EG
我想问一下,是否可以将CASE语句直接写入WHERE子句(我知道WHERE子句也可以通过字符串传递)
可以在WHERE子句中使用OR运算符
SELECT * FROM db_table INTO TABLE @mt_table[]
WHERE key1 = @l_key1
AND key2 = @l_key2
AND key3 = @l_key3
AND key4 = @l_key4
AND ( ( l_auth = 'A' AND username = @sy-una
在SE11中激活字段元素域时,我遇到以下错误:
在导入新软件期间激活字典对象被阻止
我在开发环境中使用具有SAP\u ALL授权的“test”用户执行此操作
如何删除此错误?< P>此消息出现在软件导入的中间(如升级或导入支持包)。导入/升级在一个或多个阶段修改DDIC对象,手动激活对象可能会在升级过程中导致问题(直至导致系统无法使用)。有关更多详细信息,请参阅
这是一个警告,不是错误,因此您可以继续激活。但您必须绝对确保没有修改作为软件导入一部分的对象
根据ABAP文档,命令最多等待x秒需要i型操作数。但是,我想等待x毫秒或类似的时间。迄今为止,无论是官方文件还是其他几个论坛帖子都没有帮助
有没有办法指定等待几秒钟的时间?我刚才是这样解决的:
DATA: timestart TYPE timestampl,
timeend TYPE timestampl,
millisecs TYPE timestampl,
imilli TYPE i VALUE 200.
GET TIME STAMP FIELD timestart.
如何获取内部表的行数?我想我可以在上面循环。但一定有更理智的方法
我不知道这是否有区别,但代码应该在4.6c版本上运行。您可以使用以下功能:
DESCRIBE TABLE <itab-Name> LINES <variable>
描述表格行
调用后,变量包含内部表的行数。此任务还有一个内置函数:
variable = lines( itab_name ).
与所描述的“纯”ABAP语法一样,函数“lines()”将表itab_name的行数写入变量。如果我正确理解
标签: Abap
sap-data-dictionary
我的bukrs字段需要搜索帮助。问题是数据应该来自不同的系统。有两个系统,比如X和Y。我在X系统中运行一个程序
在选择屏幕上,存在bukrs字段。当我点击搜索帮助时,数据应该来自系统Y
我听说可以提取数据来搜索帮助,但在网站上找不到足够的信息
致以最良好的祝愿
5个月的SAP/ABAP经验:)若要使用自定义数据选择创建搜索帮助,您可以在搜索帮助中定义搜索帮助出口。要以自定义方式而不是从数据库表中选择数据,请转到搜索帮助的“定义”选项卡,删除输入“选择方法”的内容,并在输入“搜索帮助退出”中输入功
我有一个名为ZCL_RM_SPREADSHEETML的类
它在“类型”选项卡中有一个名为TY_STYLE的类型,其可见性为“Public”,并使用直接类型条目定义
当我尝试在调用方代码中声明以下内容时:
DATA : wa_blue_style TYPE zcl_rm_spreadsheetml-ty_style.
我得到以下信息:
The type "ZCL_RM_SPREADSHEETML" has no structure and therefore no
component calle
我正在Business Warehouse中开发一个程序,该程序允许您通过使用rspcchain表遵循父链到子链的层次结构来绘制所有流程链。目前,我已将输出打印到屏幕上,但希望将此输出导出到excel。我一直无法找到一个功能模块,以满足这一目的,所以任何帮助将不胜感激
注意-在了解了可用的SALV类之后,我更改了代码以不同的方式显示表
REPORT Z_PC_VARIANT_MAPPING.
*Declaring types and variables
TYPES: BEGIN OF t_c
My Web Dynpro视图在运行时生成一个短转储,在显示之前,但在通过WDDOINIT和WDDOMODIFYVIEW方法正确运行之后
短转储表示无法通过“NULL”对象引用进行访问。并在CL_NW7_VIEW_ELEMENT_ADAPTER=>CREATE_NW7_BY_VIEW_ELEMENT中的标准SAP代码中出现几个级别
短转储包含以下搜索提示:
对象\u对象引用\u未\u分配
CL_NW7_视图_元素_适配器===CP
通过视图元素创建NW7
我已删除了可能无法正确初始化对象的嵌入视
标签: Abap
opensqlinternal-tables
我已经声明了一个内部表
DATA ITAB_DEPT TYPE TABLE OF ZCLOUD9_DEPT WITH HEADER LINE.
SELECT A~DEPT_ID A~DEPT_NAME A~DEPT_NO A~EMP_ID B~FIRST_NAME B~LAST_NAME
INTO TABLE ITAB_DEPT FROM ZCLOUD9_DEPT AS A
INNER JOIN ZCLOUD9_EMP AS B
ON A~EMP_ID = B~EMP_ID
WHERE A~
在ABAP Workbench中,我选择了一个变量(如附件所示)
我希望ABAP工作台突出显示ABAP代码中所有出现的所选变量
可能吗
按F2键或双击导航到声明,然后使用where used索引(黄色正方形,三个箭头指向远离它的方向)。除了@vwegert的答案,您还可以双击声明
希望能有帮助
有没有办法确定销售订单是否已经发出?我应该从哪张桌子上看?有一些建议建议我使用VBAP.VBELN作为VBFA.VBELV的where条件,然后获取VBFA.VBELN,我将使用它从VBUP表中进行选择,其中VBUP.VBTYP_N='J'
他说,如果是J,那就意味着,它已经是商品了
我知道“J”代表交货。但是,有没有其他方法或更简单的方法来确定销售订单是否已经发出
非常感谢。销售订单本身没有货物移动状态。您需要按照文档流(表VBFA)首先获取销售订单的交货编号,然后获取交货头状态(表VBUK)
背景:我正在使用cl\u salv\u表类来生成和修改ALV。此ALV显示一个类型为zpm_et_qual_notif_s的表格,其中每个偶数行是一个类型为CHARlength1的分隔符字段,其名称为DELIM1,DELIM2…等。因为没有理由在ALV中显示分隔符列,所以我想删除它们
注意:我在标题中保留了“ABAP Dictionary/Internal Structure”的泛型,因为我是否从ABAP Dictionary结构或从中定义的内部表确定列数对我来说并不重要
对我来说,简单的解决
(此问题测试数据所需SAP标准修改的访问键)
引言:
我希望找到对特定SAP标准存储库对象(IDES测试数据集)的特定类型的修改。
修改位于功能组的包含中(在功能组的功能池中的系统定义的包含文件下列出)。
到目前为止,我发现SMODILOG表是修改的中心列表(客户对Dev.Env.Objects的修改日志)
测试数据:
我的测试数据是功能组V07A,该功能组具有例如include LV07A014(LV07ANNN include的一部分)。通过在其源代码中插入内容(需要访问密钥才能执行此操作)
我已经使用事务BOBX创建了一个自定义业务对象。我希望为此BO实施更改文档,以记录对此BO所做的所有事务数据更改。这些变更文档应包含所有相关信息,如变更对象数据集、新旧值、变更日期和时间以及进行变更的人员姓名
可能吗
提前感谢。如果您真的想使用SAP变更文档,SAP提供了一个可重复使用的BO/BOFU/Change\u文档,允许实施以记录BOs的所有变更。在业务套件系统中,BO是业务套件基础层的一部分,在S/4系统上,它是S/4基础层的一部分。有关如何集成的更多详细信息,请查看官方帮助()。欢迎
我必须看看哪个程序调用哪个屏幕。SAP ABAP中是否有包含调用屏幕条目的表。检查表:
T185V-子屏幕
D020T-屏幕/程序
TRDIR-通用程序目录
屏幕是从它所属的程序调用的。请你详细说明一下上下文,你到底需要什么?
各位程序员早上好
我正在尝试从SAP(ABAP)中的“远程”系统读取表格。
使用RFC_READ_TABLE函数可正确返回字段表,但不返回数据
data: options type table of rfc_db_opt with header line.
data: fields type table of rfc_db_fld with header line.
data: data type table of tab512 with header line.
CALL FUNCTION
我有两个内部表格,类型为OFtype字符串标准表格
第一个表包含数据
| K1 | K2 | K3 |
| K1 | K2 |
第二个表包含数据
| K1 | K2 | K3 |
| K1 | K2 |
在ABAP中,检查第二个表项是否完全存在于第一个表中的最快方法是什么?也许是内联函数
DATA lt_current_values TYPE stringtab.
DATA lt_previous_values TYPE stringtab.
APPEND 'K1' TO lt_p
有没有办法从SAP外部使用BAPI将数据写入或插入ADRC表?最好的选择是BAPI\u地址org\u更改,它可以删除/更新地址记录、电子邮件、便笺、电话等
代码示例(来自标准帮助):
数据:对象类型如bapi4001_1-objtype,
像bapi4001\u 1-objkey这样的对象,
obj_id_ext,如bapi4001_1-扩展,
上下文,如bapi4001\u 1-context,
地址号,如adrc addrnumber,
bapiadtel与bapiadtel一样出现在标题行
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 36 页