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' .
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.
转载自:http://blog.csdn.net/twty5210/article/details/6003114