CT04 修改特性值BAPI_CHARACT_CHANGE

本文介绍了一个使用 SAP BAPI 进行特性维护的例子,包括创建特性详情、描述及值的过程。通过调用 'BAPI_CHARACT_EXISTENCECHECK' 和 'BAPI_CHARACT_CHANGE' 函数来实现特性维护的功能。

 DATA: CHARACTNAME LIKE BAPICHARACTKEY-CHARACTNAME.
DATA: CHARACTDETAILNEW  LIKE TABLE OF BAPICHARACTDETAIL WITH HEADER LINE.
DATA: CHARACTVALUESCHARNEW LIKE TABLE OF BAPICHARACTVALUESCHAR WITH HEADER LINE.
DATA: CHARACTDESCRNEW LIKE TABLE OF BAPICHARACTDESCR WITH HEADER LINE.
DATA: CHARACTVALUESDESCRNEW LIKE TABLE OF BAPICHARACTVALUESDESCR WITH HEADER LINE.
"--DATA: RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE.
CLEAR:CHARACTNAME,CHARACTDETAILNEW,CHARACTVALUESCHARNEW,CHARACTDESCRNEW.
CLEAR:CHARACTNAME,CHARACTDETAILNEW[],CHARACTVALUESCHARNEW[],CHARACTDESCRNEW[].

DATA: CLASSBASICDATA   LIKE     BAPI1003_BASIC,
      CLASSDOCUMENT    LIKE     BAPI1003_DOCU,
      CLASSADDITIONAL  LIKE     BAPI1003_ADD,
      CLASSSTANDARD    LIKE     BAPI1003_STAND.

DATA: CLASSDESCRIPTIONS     LIKE TABLE OF  BAPI1003_CATCH_R WITH HEADER LINE,
      CLASSLONGTEXTS        LIKE TABLE OF  BAPI1003_LONGTEXT_R WITH HEADER LINE,
      CLASSCHARACTERISTICS  LIKE TABLE OF  BAPI1003_CHARACT_R WITH HEADER LINE,
      CLASSCHARVALUES       LIKE TABLE OF  BAPI1003_CHAR_VAL_R WITH HEADER LINE.
DATA: L_INDEX LIKE SY-TABIX.


CHARACTNAME = 'Z_BATCH_PVD_005'.
*檢查CHARACTNAME存在與否(不存在肯定沒有值可選)
CALL FUNCTION 'BAPI_CHARACT_EXISTENCECHECK'
  EXPORTING
    CHARACTNAME       =  CHARACTNAME
*   KEYDATE           = SY-DATUM
  TABLES
    RETURN            = O_RESULT.
READ TABLE O_RESULT WITH KEY TYPE = 'S'.
IF SY-SUBRC <> 0.
    EXIT.
ENDIF.
*-1
CLEAR: CHARACTDETAILNEW, CHARACTDETAILNEW[].
CHARACTDETAILNEW-CHARACT_NAME      = CHARACTNAME.
CHARACTDETAILNEW-DATA_TYPE         = 'CHAR'.
CHARACTDETAILNEW-LENGTH            = '12'.
CHARACTDETAILNEW-STATUS            =  '1'.
CHARACTDETAILNEW-VALUE_ASSIGNMENT  = 'M'.
CHARACTDETAILNEW-ADDITIONAL_VALUES = 'X'.
APPEND CHARACTDETAILNEW.

*-2
CLEAR: CHARACTDESCRNEW, CHARACTDESCRNEW[].
CHARACTDESCRNEW-LANGUAGE_INT       = 'E'.
CHARACTDESCRNEW-DESCRIPTION        = 'RM BATCH'.
APPEND CHARACTDESCRNEW.
CHARACTDESCRNEW-LANGUAGE_INT = '1'.
CHARACTDESCRNEW-DESCRIPTION = '原材料批号'.
APPEND CHARACTDESCRNEW.


L_INDEX = 0.
DO 2 TIMES.
     L_INDEX = L_INDEX + 1.
     IF L_INDEX = 1.  "L_INDEX=1時,執行bapi是清空值,第二次才修改值
*        *--3
         CLEAR: CHARACTVALUESCHARNEW, CHARACTVALUESCHARNEW[].
         CLEAR: CHARACTVALUESDESCRNEW, CHARACTVALUESDESCRNEW[].
     ELSE.
         IF I_BATCH[] IS INITIAL.
              CONTINUE.
         ENDIF.
         LOOP AT I_BATCH.
             CHARACTVALUESCHARNEW-VALUE_CHAR = I_BATCH-CHARG.
             APPEND CHARACTVALUESCHARNEW.
             CLEAR  CHARACTVALUESCHARNEW.

             CHARACTVALUESDESCRNEW-LANGUAGE_INT = sy-langu.
             CHARACTVALUESDESCRNEW-LANGUAGE_ISO = SY-LANGU.
             CHARACTVALUESDESCRNEW-VALUE_CHAR = I_BATCH-CHARG.
             CONCATENATE '[' I_BATCH-CHARG ']' I_BATCH-MAKTX INTO CHARACTVALUESDESCRNEW-DESCRIPTION.
             "-CHARACTVALUESDESCRNEW-DESCRIPTION = 'TEST 882'.   "I_BATCH-MATNR
             APPEND CHARACTVALUESDESCRNEW.
             CLEAR  CHARACTVALUESDESCRNEW.
         ENDLOOP.
     ENDIF.
      CALL FUNCTION 'BAPI_CHARACT_CHANGE'
        EXPORTING
          CHARACTNAME                  = CHARACTNAME
*         CHANGENUMBER                 =
*         KEYDATE                      = SY-DATUM
        TABLES
          CHARACTDETAILNEW             = CHARACTDETAILNEW
          CHARACTDESCRNEW              = CHARACTDESCRNEW
*         CHARACTVALUESNUMNEW          =
          CHARACTVALUESCHARNEW         = CHARACTVALUESCHARNEW
*         CHARACTVALUESCURRNEW         =
          CHARACTVALUESDESCRNEW        = CHARACTVALUESDESCRNEW
*         CHARACTREFERENCESNEW         =
*         CHARACTRESTRICTIONSNEW       =
          RETURN                       = O_RESULT.

        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
             WAIT = 'X'.

ENDDO.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值