ABAP 7.4(读取表)

2020-08-27 19:42发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


 TYPES:类型ty_final开头,
          ebeln TYPE ekko-ebeln,
          bukrs TYPE ekko-bukrs,
          ebelp TYPE ekpo-ebelp,
        ty_final结束。

 数据:ty_final的lt_final类型表,
       ls_final TYPE ty_final。

 选择ebeln,从ekko到表@DATA(lt_ekko)最多5行。

 如果sy-subrc = 0。
   从ekpo中选择ebeln,ebelp进入表@DATA(lt_ekpo)
      对于@lt_ekko中的所有条目,ebeln = @ lt_ekko-ebeln。
 万一。

 排序:lt_ekko BY ebeln,lt_ekpo BY ebeln。

 在lt_ekpo INTO DATA(ls_ekpo)中循环。
   ls_final-ebeln = ls_ekpo-ebeln。
   ls_final-ebelp = ls_ekpo-ebelp。

 *使用键ebeln = ls_ekpo-ebeln二进制搜索将表lt_ekko读入DATA(ls_ekko)。

 data(ls_ekko)= lt_ekko [ebeln = ls_ekpo-ebeln]。"二进制搜索无效

   如果sy-subrc = 0。
     ls_final-bukrs = ls_ekko-bukrs。
   万一。
   追加ls_final至lt_final。

 结局。

 cl_demo_output => display(lt_final)。
 

嗨,

对于新的ABAP 7.4,如何在读取表中使用二进制搜索

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


 TYPES:类型ty_final开头,
          ebeln TYPE ekko-ebeln,
          bukrs TYPE ekko-bukrs,
          ebelp TYPE ekpo-ebelp,
        ty_final结束。

 数据:ty_final的lt_final类型表,
       ls_final TYPE ty_final。

 选择ebeln,从ekko到表@DATA(lt_ekko)最多5行。

 如果sy-subrc = 0。
   从ekpo中选择ebeln,ebelp进入表@DATA(lt_ekpo)
      对于@lt_ekko中的所有条目,ebeln = @ lt_ekko-ebeln。
 万一。

 排序:lt_ekko BY ebeln,lt_ekpo BY ebeln。

 在lt_ekpo INTO DATA(ls_ekpo)中循环。
   ls_final-ebeln = ls_ekpo-ebeln。
   ls_final-ebelp = ls_ekpo-ebelp。

 *使用键ebeln = ls_ekpo-ebeln二进制搜索将表lt_ekko读入DATA(ls_ekko)。

 data(ls_ekko)= lt_ekko [ebeln = ls_ekpo-ebeln]。"二进制搜索无效

   如果sy-subrc = 0。
     ls_final-bukrs = ls_ekko-bukrs。
   万一。
   追加ls_final至lt_final。

 结局。

 cl_demo_output => display(lt_final)。
 

嗨,

对于新的ABAP 7.4,如何在读取表中使用二进制搜索

付费偷看设置
发送
4条回答
hengyuye
1楼 · 2020-08-27 20:04.采纳回答

您不能在新表达式中使用BINARY SEARCH加法。 即使可以,也不应该。 使用排序的表类型,因此将始终通过二进制搜索算法隐式访问记录的查找。

数据:lt_ekko使用唯一键ebeln的ekko类型排序表。
Doze时光
2楼-- · 2020-08-27 20:01

您好 Dhanush Kanna

关于您的陈述:

 data(ls_ekko)= lt_ekko  [ebeln = ls_ekpo-ebeln]。"二进制搜索不起作用

当心这种类型的表读取...有时当此内部表是初始表或该行不存在时,您会 获取转储...

使用Try Catch或以下语句:DATA(ls_ekko)= VALUE#(lt_ekko [ebeln = ls_ekpo-ebeln]可选)。

闻人可可
3楼-- · 2020-08-27 19:50

您需要将内部表声明为排序表。

# p#

Sandra Rossi

感谢,一天之后阅读答案实际上是模棱两可的 我试图说的是,每当您必须键入BINARY SEARCH时,您都在使用wron g表类型。 :-)

hongfeng1314
4楼-- · 2020-08-27 19:59

嗨,我不知道执行下一个代码并能正常工作是什么错误。

类型:ty_final的开始,
ebeln TYPE ekko-ebeln,
bukrs TYPE ekko-bukrs,
ebelp TYPE ekpo-ebelp,
ty_final的结尾。

数据 :lt_final类型表ty_final,
ls_final类型类型ty_final。

SELECT ebeln,从ekko插入表@DATA(lt_ekko)到最多5行。

IF sy-subrc = 0 。
从ekpo中选择ebeln,ebelp进入表@DATA(lt_ekpo)
中@lt_ekko中所有条目的ebeln = ENDIF。


排序:lt_ekko BY ebeln ,lt_ekpo BY ebeln。


将lt_ekpo放入数据(ls_ekpo)。
ls_final-ebeln = ls_ekpo-ebeln。
ls_final-ebelp = ls_ekpo-ebelp。
读取表 lt_ekko使用键ebeln = ls_ekpo-ebeln二进制搜索进入数据(ls_ekko)。

如果sy-subrc = 0.
ls_final-bukrs = ls_ekko-bukrs。
ENDIF。
追加ls_final至lt_final。
清除ls_ekko。
ENDLOOP。 > cl_demo_output => display(lt_final)。

一周热门 更多>