欢迎来到萧静默的博客

书山有路勤为径,学海无涯苦作舟。

SAP-ABAP-取枚举值及批次特征值描述

1、枚举值取得方法

有的字段是下拉框形式的,就是枚举类型,这个时候取到的值实际上是序列号1、2、3......,在ALV报表上显示就是数字,需要转成对应的值。

要取得这个枚举值,需要知道这个字段的域,这个域按如下方法去找,先找到这个字段

 

 

 

 

 此时把这个域记下来,用于以下两种方法取枚举值。

第一、使用函数

DATA: lt_values TYPE TABLE OF dd07v,
      ls_value  TYPE dd07v.

CALL FUNCTION 'DD_DOMVALUE_TEXT_GET'
  EXPORTING
    DOMNAME             = 域(用上面查到的)
    VALUE               = 这里填枚举的序号
   LANGU               = '1 '  这里是1代表ZH
*   BYPASS_BUFFER       = ' '
 IMPORTING
   DD07V_WA            =  lt_values
*   RC                  =
          .

取出来的是表,需要LOOP或者READ下取值,实际就是这个表里的

 第二种、直接select去取值

先根据字段所在的主表取得对应的枚举序号,再使用下面的查询语句取得枚举序号对应的值。

SELECT SINGLE DDTEXT INTO LS_DATA-ZCPXHTY FROM DD07T WHERE DOMVALUE_L = LS_DATA-ZCPXHTY AND  DOMNAME = 'ZD_CPXHTY' AND DDLANGUAGE = '1'.

2、批次特征值取得方法

"取特征值
    DATA:LS_OBJEK TYPE CUOBN,
         LS_OBTAB TYPE TABELLE,
         LS_KLART TYPE KLASSENART,
         LS_CLASS TYPE KLASSE_D.
    DATA:LT_CLASS      TYPE TABLE OF SCLASS,
         LT_OBJECTDATA TYPE TABLE OF CLOBJDAT.
    CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
      EXPORTING
        I_MATNR = LS_DATA-MATNR
        I_CHARG = LS_DATA-CHARG
        I_WERKS = LS_DATA-WERKS
      IMPORTING
        E_OBJEK = LS_OBJEK
        E_OBTAB = LS_OBTAB
        E_KLART = LS_KLART
        E_CLASS = LS_CLASS.

    CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
      EXPORTING
        CLASS              = LS_CLASS
        CLASSTEXT          = 'X'
        CLASSTYPE          = LS_KLART
*       CLINT              = 0
        FEATURES           = 'X'
        LANGUAGE           = SY-LANGU
        OBJECT             = LS_OBJEK
        OBJECTTABLE        = LS_OBTAB
*       KEY_DATE           = SY-DATUM
        INITIAL_CHARACT    = 'X'
*       NO_VALUE_DESCRIPT  =
        CHANGE_SERVICE_CLF = 'X'
*       INHERITED_CHAR     = ' '
*       CHANGE_NUMBER      = ' '
      TABLES
        T_CLASS            = LT_CLASS
        T_OBJECTDATA       = LT_OBJECTDATA
*       I_SEL_CHARACTERISTIC       =
*       T_NO_AUTH_CHARACT  =
      EXCEPTIONS
        NO_CLASSIFICATION  = 1
        NO_CLASSTYPES      = 2
        INVALID_CLASS_TYPE = 3
        OTHERS             = 4.
    IF SY-SUBRC <> 0.
* Implement suitable error handling here
    ENDIF.

    SORT LT_OBJECTDATA BY ATNAM.

    READ TABLE LT_OBJECTDATA INTO DATA(LS_OBJECTDATA) WITH KEY ATNAM = 'Z_BATCH_DJ' BINARY SEARCH.
    READ TABLE LT_OBJECTDATA INTO DATA(LS_OBJECTDATA1) WITH KEY ATNAM = 'Z_BATCH_ZJGL' BINARY SEARCH.

    IF SY-SUBRC = 0.
      LS_DATA-ZDJ = LS_OBJECTDATA-AUSP1.
    ENDIF.

以上方法是先取得物料+工厂+批次的四个批次特征的参数

E_OBJEK
E_OBTAB
E_KLART
E_CLASS

用这四个参数填入另外一个函数里取批次特征值

会得到关于这个物料+工厂+批次的,也就是MSC3N里分类中的所有值

 再根据对应的特征描述(或者特征编号,可以F1去看特征编号)取对应的值。

posted @ 2025-04-28 08:54  萧静默  阅读(166)  评论(0)    收藏  举报