abap 定义变量 like、type、for的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abap 定义变量 like、type、for的区别相关的知识,希望对你有一定的参考价值。

    TYPE是确定数据对象所属的数据类型,参考数据字典类型和内置数据类型,比如:

    DATA:LF_TXT(15)  TYPE  C  VALUE ‘Hello world’.

    注解:数据对象LF_TXT的数据类型就是C,长度是15,初始值是Hello world

    LIKE也是确定数据对象的所属类型,参考数据对象,比如:

    DATA:LF_TXB    LIKE   LF_TXT  VALUE 'How are you?'.

    注解:数据对象LF_TXB的类型是参考数据对象LF_TXT声明的,所以,LF_TXB的数据类型是  

              C,长度是15,初始值是How are you?.

    FOR有两种用法(选择屏幕中定义复杂选择标准、声明RANGE内表),比如:

    SELECT-OPTIONS  seltab  FOR   MARA-MATNR.

    RANGES: lr_matnr    FOR   MARA-MATNR.

    以上两个声明的前提,必须在之前增加一句话 TABLES:MARA.

       RANGE表在ABAP中的使用非常广泛。

参考技术A type 直接声明数据类型,如 DATA L_NO1 TYPE C.
like 是通过数据元素或对象间接引用,如 DATA L_NO2 LIKE MARA-MATNR.
FOR ? 定义变量中没有FOR这个关键字吧。
你还是说的 SELECT-OPTIONS S_MTART FOR MARC-MTART.
参考技术B 知道怎么用就行了。

测试ABAP 分配WBS元素结算规则

ABAP 分配WBS元素结算规则

DATA : LT_COBRB LIKE TABLE OF COBRB WITH HEADER LINE.
DATA : LV_OBJNR LIKE PRPS-OBJNR.
DATA : LV_TYPE TYPE CHAR01,
       LV_MSG TYPE CHAR255.

PARAMETERS : P_PSPNR TYPE PS_POSNR OBLIGATORY.
PARAMETERS : P_ANLN1 TYPE ANLN1 OBLIGATORY.

START-OF-SELECTION.

*** 获取对象号
  SELECT SINGLE OBJNR
    FROM PRPS
    INTO LV_OBJNR
    WHERE PSPNR = P_PSPNR.

*** 检查结算规则是否存在
  SELECT *
    FROM COBRB
    INTO CORRESPONDING FIELDS OF TABLE LT_COBRB
    WHERE OBJNR = LV_OBJNR.
  IF LT_COBRB[] IS NOT INITIAL.
    CALL FUNCTION 'K_SRULE_SAVE_UTASK'
      TABLES
*       T_COBRA_INSERT    =
*       T_COBRA_UPDATE    =
*       T_COBRA_DELETE    =
*       T_COBRB_INSERT    =
*       T_COBRB_UPDATE    =
        T_COBRB_DELETE    = LT_COBRB[]
      EXCEPTIONS
        SRULE_UTASK_ERROR = 1.
    IF SY-SUBRC = 0 .
      COMMIT WORK.WAIT UP TO 1 SECONDS.
    ELSE.
      LV_TYPE = 'E'.
      LV_MSG = '结算规则存在且删除失败'.
      EXIT.
    ENDIF.
  ENDIF.

  CLEAR:LT_COBRB[].

*** 结算类型:FUL 完全结算
  CALL FUNCTION 'CONVERSION_EXIT_PERBZ_INPUT'
    EXPORTING
      INPUT  = 'FUL'
    IMPORTING
      OUTPUT = LT_COBRB-PERBZ.
*** 科目分配种类:FXA 固定资产
  CALL FUNCTION 'CONVERSION_EXIT_OBART_INPUT'
    EXPORTING
      INPUT     = 'FXA '
    IMPORTING
      OUTPUT    = LT_COBRB-KONTY
    EXCEPTIONS
      NOT_FOUND = 1.

  LT_COBRB-ANLN1 = P_ANLN1.
  LT_COBRB-ANLN2 = '0000'.

  LT_COBRB-OBJNR = LV_OBJNR.
  LT_COBRB-LFDNR = '001'.
  LT_COBRB-KOKRS = 'CN30'.
  LT_COBRB-PROZS = '100.00'.
  LT_COBRB-BUKRS = 'CN30'.
  APPEND LT_COBRB.

  CALL FUNCTION 'K_SRULE_SAVE_UTASK'
    TABLES
*     T_COBRA_INSERT    =
*     T_COBRA_UPDATE    =
*     T_COBRA_DELETE    =
      T_COBRB_INSERT    = LT_COBRB[]
*     T_COBRB_UPDATE    =
*     T_COBRB_DELETE    =
    EXCEPTIONS
      SRULE_UTASK_ERROR = 1.
  IF SY-SUBRC = 0 .
    LV_TYPE = 'E'.
    LV_MSG = '结算规则维护成功'.
    COMMIT WORK.
  ELSE.
    LV_TYPE = 'E'.
    LV_MSG = '结算规则维护失败'.
    EXIT.
  ENDIF.

END-OF-SELECTION.

  WRITE : LV_TYPE,LV_MSG.

以上是关于abap 定义变量 like、type、for的区别的主要内容,如果未能解决你的问题,请参考以下文章

abap怎么定义数据类型啊

ABAP运行时类型服务 Runtime Type Services (RTTS)

测试ABAP 分配WBS元素结算规则

测试ABAP 分配WBS元素结算规则

ABAP基础:数据类型

abap简单报表,alv显示,按钮事件