ABAP中如何创建ranges table type?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP中如何创建ranges table type?相关的知识,希望对你有一定的参考价值。

如果会debug,其实range table就是所谓的屏幕字段变量,当你定义select-option的时候,你去debug,你会看见range table的


TYPES : BEGIN OF TY_DATA,
  SIGN(1)   TYPE C,
  OPTION(2) TYPE C,
  LOW       TYPE MATNR,
  HIGH      TYPE MATNR,
END OF TY_DATA.
DATA : WA_DATA TYPE TY_DATA,
       S_DATA  TYPE TABLE OF TY_DATA,
       IT_MARA TYPE TABLE OF MARA.
"这里相当于屏幕low的位置放了一个值
WA_DATA-SIGN    = 'I'.
WA_DATA-OPTION  = 'EQ'.
WA_DATA-LOW     = '1000'.
APPEND WA_DATA TO S_DATA.
"这里相当于屏幕low和high都放值
WA_DATA-SIGN    = 'I'.
WA_DATA-OPTION  = 'BT'.
WA_DATA-LOW     = '1000'.
WA_DATA-HIGH    = '1010'.
APPEND WA_DATA TO S_DATA.
SELECT *
  FROM MARA
  INTO TABLE IT_MARA
 WHERE MATNR IN S_DATA.

追问

已经解决,谢谢!

参考技术A TABLES : vbak,vbuk,vbkd.
 
DATA: lt_vbak LIKE TABLE OF vbak,
      lw_vbak LIKE LINE OF lt_vbak,
      i_line TYPE i.
      
RANGES: i_customer_id FOR vbak-kunnr.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_kunnr FOR vbak-kunnr.
SELECTION-SCREEN END OF BLOCK b1.

start-of-selection.

  LOOP AT p_kunnr.
    CLEAR i_customer_id.
    IF p_kunnr-high = space.
      MOVE-CORRESPONDING p_kunnr TO i_customer_id.
      MOVE 'EQ' TO i_customer_id-option.
    ELSE.
      MOVE-CORRESPONDING p_kunnr TO i_customer_id.
      MOVE 'BT' TO i_customer_id-option.
    ENDIF.
    APPEND i_customer_id.
  ENDLOOP.

Power Query中如何把多列数据合并?

参考技术A 转换成

(一) 把单个字段组合成一个列

Table.ToColumns(源)

(二) 把需要合并的样式单独组合

Table.FromColumns(List.Range(单字段组合,0,1)&

                 List.Range(单字段组合,1,3))

解释:第一个List.Range目的是为了固定班级字段;第2个List.Range是为了提取第一组的数据。然后和2个列表进行组合并转成Table格式。

同一样的操作,提取第二部分的数据。

(三) 组合表格

Text.Combine将之前组合的表格进行合并。

(四) 重命名字段名

如果有用,动动小手请点个赞。

以上是关于ABAP中如何创建ranges table type?的主要内容,如果未能解决你的问题,请参考以下文章

ABAP中,用Ranges定义的内表,由于数据量大导致运行错误

abap中创建函数时,如何将输入的参数设置为表格

Abap range 表相关问题

求助:Web Dynpro for ABAP的Table如何得到被选中的多行

ABAP 实现 vba 设置range的属性问题

通过ABAP程序创建透明表