zoukankan      html  css  js  c++  java
  • 2019.11.07【每天学点SAP小知识】Day2

    今天学习一下内表的表达式在ABAP 7.4之后的语法:

    SELECT FROM mara INTO TABLE @DATA(gt_mara)
    UP TO 10 ROWS. DATA gt_mara_sort TYPE SORTED TABLE OF mara WITH UNIQUE KEY primary_key COMPONENTS matnr.
    "
    旧语法
    DATA LV_MATKL TYPE MARA-MATKL. READ TABLE GT_MARA INDEX 1 INTO DATA(LS_MARA).
    READ TABLE gt_mara_sort INTO DATA(ls_mara_sort1INDEX USING KEY primary_key.
    READ TABLE gt_mara_sort INTO DATA(ls_mara_sort2WITH KEY matnr 'AT001'.
    IF SY-SUBRC EQ 0.
      LV_MATKL = LS_MARA_SORT2-MATKL.
    ENDIF.
    "新语法 DATA(LS_MARA_NEW) = GT_MARA[ 1 ].
    DATA(ls_mara_sort1_newgt_mara_sort1[ KEY primary_key INDEX ].
    "若是gt_mara_sort已经按照matnr排序,则按照二分法搜索
    DATA
    (ls_mara_sort2_newgt_mara_sort2[ matnr 'AT001' ].

    DATA(LV_MATKL_NEW) = GT_MARA_SORT2[ MATNR = 'AT001' ]-MATKL.
    
    
    "检查是否存在某个数据
    "旧语法
    READ TABLE gt_mara TRANSPORTING NO FIELDS WITH KEY matnr 'AT001'.
    "新语法 CHECK line_exists( gt_mara[ matnr = 'AT001' ] ).

    "得到数据在内表中的行
    
    "旧语法
    DATA lv_tabix TYPE sy-tabix.
    READ TABLE gt_mara TRANSPORTING NO FIELDS WITH KEY matnr = 'AT001'.
    IF sy-subrc EQ 0.
      lv_tabix = sy-tabix.
    ENDIF.
    
    "新语法
    DATA(lv_tabix_new) = line_index( gt_mara[ matnr = 'AT001' ] ).

    注意事项:若当GT_MARA 中不存在 matnr = 'AT001'的数据时, 直接执行 

    DATA(LS_MARA= GT_MARA[ MATNR 'AT001' ].
    会使程序dump,所以一般写成如下的样子:

    ASSIGN gt_mara[ matnr = 'AT001' ] TO FIELD-SYMBOL(<fs>).
    IF sy-subrc EQ 0.
    *  ...
    ENDIF.

     - TAB 学习技术 热爱生活

  • 相关阅读:
    蛇形填数字 (附书上例题答案)
    排列 (C++实现)
    分数化小数(C++)
    Operating System 1.2 什么是操作系统
    Python知识点入门笔记——基本控制流程
    Python知识点入门笔记——基本运算和表达式
    Python知识点入门笔记——Python的基本数据类型
    网络架构遵循原则
    浏览器输入网址后发生了这些
    JAVA解析XML有哪几种方法?并简述各自的优缺点
  • 原文地址:https://www.cnblogs.com/jxzhu/p/11811589.html
Copyright © 2011-2022 走看看