效果图:
DATA:LS_TE_MARA TYPE BAPI_TE_MARA ,
LS_TE_MARAX TYPE BAPI_TE_MARAX .
DATA: WA_BAPIMATHEAD TYPE BAPIMATHEAD.
DATA:GS_DESCRIPTION TYPE BAPI_MAKT.
DATA: WA_CLIENTDATA TYPE BAPI_MARA.
DATA: WA_CLIENTDATAX TYPE BAPI_MARAX.
DATA: WA_PLANTDATA TYPE BAPI_MARC.
DATA: WA_PLANTDATAX TYPE BAPI_MARCX.
DATA LT_INTERNATIONALARTNOS LIKE TABLE OF BAPI_MEAN .
DATA: LS_INTERNATIONALARTNOS LIKE BAPI_MEAN .
DATA:LS_UNITSOFMEASURE LIKE BAPI_MARM,
LS_UNITSOFMEASUREX LIKE BAPI_MARMX .
DATA:LT_BAPIPAREX TYPE TABLE OF BAPIPAREX ,
LS_BAPIPAREX TYPE BAPIPAREX .
DATA:LT_BAPIPAREXX TYPE TABLE OF BAPIPAREXX ,
LS_BAPIPAREXX TYPE BAPIPAREXX .
*"库存地点
DATA: WA_BAPI_MARD TYPE BAPI_MARD.
DATA: WA_BAPI_MARDX TYPE BAPI_MARDX.
DATA: WA_BAPI_MBEW TYPE BAPI_MBEW.
DATA: WA_BAPI_MBEWX TYPE BAPI_MBEWX.
DATA: WA_BAPI_MVKE TYPE BAPI_MVKE.
DATA: WA_BAPI_MVKEX TYPE BAPI_MVKEX.
*仓库
DATA: WA_BAPI_MLGN TYPE BAPI_MLGN.
DATA: WA_BAPI_MLGNX TYPE BAPI_MLGNX.
DATA:LV_MESSAGE TYPE STRING .
DATA:LV_ALL_MESSAGE TYPE STRING .
DATA:
LT_UNITSOFMEASURE LIKE TABLE OF BAPI_MARM,
LT_UNITSOFMEASUREX LIKE TABLE OF BAPI_MARMX.
*仓储类型
DATA: WA_BAPI_MLGT TYPE BAPI_MLGT.
DATA: WA_BAPI_MLGTX TYPE BAPI_MLGTX.
*税分类
DATA: I_TAXCLASSIFICATIONS TYPE TABLE OF BAPI_MLAN.
DATA: WA_TAXCLASSIFICATIONS TYPE BAPI_MLAN.
*错误消息
DATA: WA_BAPIRET2 TYPE BAPIRET2.
DATA: I_BAPI_MATRETURN2 TYPE TABLE OF
BAPI_MATRETURN2 WITH HEADER LINE.
DATA: GT_DESCRIPTION TYPE TABLE OF BAPI_MAKT.
DATA:GT_MEASURE LIKE TABLE OF BAPI_MARM,
WA_MEASURE LIKE BAPI_MARM,
GT_MEASUREX LIKE TABLE OF BAPI_MARMX,
WA_MEASUREX LIKE BAPI_MARMX.
DATA: LV_FLAG TYPE CHAR01 .
*创建基本视图和EAN数据。
WA_BAPIMATHEAD-BASIC_VIEW = 'X'.
*基本视图。
WA_BAPIMATHEAD-MATERIAL = GS_HEAD-MATNR . "物料
*基本EAN数据。
CLEAR: LS_UNITSOFMEASURE.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_HEAD-MEINS
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASURE-ALT_UNIT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LS_UNITSOFMEASURE-GROSS_WT = GS_HEAD-BRGEW .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_HEAD-GEWEI
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASURE-UNIT_OF_WT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WA_CLIENTDATA-NET_WEIGHT = GS_HEAD-NTGEW.
WA_CLIENTDATA-UNIT_OF_WT = LS_UNITSOFMEASURE-UNIT_OF_WT.
WA_CLIENTDATAX-NET_WEIGHT = 'X'.
WA_CLIENTDATAX-UNIT_OF_WT = 'X'.
LS_UNITSOFMEASURE-EAN_UPC = GS_HEAD-EAN11 .
LS_UNITSOFMEASURE-EAN_CAT = GS_HEAD-NUMTP .
LS_UNITSOFMEASURE-LENGTH = GS_HEAD-LAENG .
LS_UNITSOFMEASURE-WIDTH = GS_HEAD-BREIT .
LS_UNITSOFMEASURE-HEIGHT = GS_HEAD-HOEHE .
LS_UNITSOFMEASURE-UNIT_DIM = GS_HEAD-MEABM .
LS_UNITSOFMEASURE-VOLUME = GS_HEAD-VOLUM .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_HEAD-VOLEH
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASURE-VOLUMEUNIT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
APPEND LS_UNITSOFMEASURE TO LT_UNITSOFMEASURE .
CLEAR: LS_UNITSOFMEASUREX.
LS_UNITSOFMEASUREX-ALT_UNIT = LS_UNITSOFMEASURE-ALT_UNIT .
LS_UNITSOFMEASUREX-GROSS_WT = 'X' .
LS_UNITSOFMEASUREX-EAN_UPC = 'X' .
LS_UNITSOFMEASUREX-EAN_CAT = 'X' .
LS_UNITSOFMEASUREX-LENGTH = 'X' .
LS_UNITSOFMEASUREX-WIDTH = 'X' .
LS_UNITSOFMEASUREX-HEIGHT = 'X' .
LS_UNITSOFMEASUREX-UNIT_DIM = 'X' .
LS_UNITSOFMEASUREX-VOLUME = 'X' .
LS_UNITSOFMEASUREX-VOLUMEUNIT = 'X' .
LS_UNITSOFMEASUREX-UNIT_OF_WT = 'X' .
APPEND LS_UNITSOFMEASUREX TO LT_UNITSOFMEASUREX .
CLEAR LS_INTERNATIONALARTNOS .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_HEAD-MEINS
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_INTERNATIONALARTNOS-UNIT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LS_INTERNATIONALARTNOS-UNIT_ISO = SPACE .
LS_INTERNATIONALARTNOS-EAN_UPC = GS_HEAD-EAN11 .
LS_INTERNATIONALARTNOS-EAN_CAT = GS_HEAD-NUMTP .
LS_INTERNATIONALARTNOS-DEL_FLAG = SPACE .
APPEND LS_INTERNATIONALARTNOS TO LT_INTERNATIONALARTNOS .
*附加EAN .
LOOP AT GT_MARM INTO GS_MARM .
CLEAR LS_UNITSOFMEASURE .
CLEAR LS_UNITSOFMEASUREX .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_MARM-MEINH
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASURE-ALT_UNIT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_MARM-MEINH
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASURE-ALT_UNIT_ISO
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LS_UNITSOFMEASURE-GROSS_WT = GS_MARM-BRGEW .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_MARM-GEWEI
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASURE-UNIT_OF_WT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LS_UNITSOFMEASURE-EAN_UPC = GS_MARM-EAN11.
LS_UNITSOFMEASURE-EAN_CAT = GS_MARM-NUMTP .
LS_UNITSOFMEASURE-LENGTH = GS_MARM-LAENG .
LS_UNITSOFMEASURE-WIDTH = GS_MARM-BREIT .
LS_UNITSOFMEASURE-HEIGHT = GS_MARM-HOEHE .
LS_UNITSOFMEASURE-UNIT_DIM = GS_MARM-MEABM .
LS_UNITSOFMEASURE-VOLUME = GS_MARM-VOLUM .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_MARM-VOLEH
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASURE-VOLUMEUNIT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LS_UNITSOFMEASURE-NUMERATOR = GS_MARM-UMREZ .
LS_UNITSOFMEASURE-DENOMINATR = GS_MARM-UMREN .
APPEND LS_UNITSOFMEASURE TO LT_UNITSOFMEASURE .
CLEAR: LS_UNITSOFMEASUREX.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_MARM-MEINH
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASUREX-ALT_UNIT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_MARM-MEINH
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_UNITSOFMEASUREX-ALT_UNIT_ISO
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LS_UNITSOFMEASUREX-GROSS_WT = 'X' .
LS_UNITSOFMEASUREX-EAN_UPC = 'X' .
LS_UNITSOFMEASUREX-EAN_CAT = 'X' .
LS_UNITSOFMEASUREX-LENGTH = 'X' .
LS_UNITSOFMEASUREX-WIDTH = 'X' .
LS_UNITSOFMEASUREX-HEIGHT = 'X' .
LS_UNITSOFMEASUREX-UNIT_DIM = 'X' .
LS_UNITSOFMEASUREX-VOLUME = 'X' .
LS_UNITSOFMEASUREX-VOLUMEUNIT = 'X' .
LS_UNITSOFMEASUREX-NUMERATOR = 'X' .
LS_UNITSOFMEASUREX-DENOMINATR = 'X'.
LS_UNITSOFMEASUREX-UNIT_OF_WT = 'X' .
APPEND LS_UNITSOFMEASUREX TO LT_UNITSOFMEASUREX .
CLEAR LS_INTERNATIONALARTNOS .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = GS_MARM-MEINH
LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_INTERNATIONALARTNOS-UNIT
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LS_INTERNATIONALARTNOS-UNIT_ISO = LS_INTERNATIONALARTNOS-UNIT .
LS_INTERNATIONALARTNOS-EAN_UPC = GS_MARM-EAN11 .
LS_INTERNATIONALARTNOS-EAN_CAT = GS_MARM-NUMTP .
LS_INTERNATIONALARTNOS-DEL_FLAG = SPACE .
APPEND LS_INTERNATIONALARTNOS TO LT_INTERNATIONALARTNOS .
ENDLOOP.
*默认字段
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = WA_BAPIMATHEAD
CLIENTDATA = WA_CLIENTDATA
CLIENTDATAX = WA_CLIENTDATAX
PLANTDATA = WA_PLANTDATA
PLANTDATAX = WA_PLANTDATAX
STORAGELOCATIONDATA = WA_BAPI_MARD
STORAGELOCATIONDATAX = WA_BAPI_MARDX
VALUATIONDATA = WA_BAPI_MBEW
VALUATIONDATAX = WA_BAPI_MBEWX
WAREHOUSENUMBERDATA = WA_BAPI_MLGN
WAREHOUSENUMBERDATAX = WA_BAPI_MLGNX
SALESDATA = WA_BAPI_MVKE
SALESDATAX = WA_BAPI_MVKEX
STORAGETYPEDATA = WA_BAPI_MLGT
STORAGETYPEDATAX = WA_BAPI_MLGTX
IMPORTING
RETURN = WA_BAPIRET2
TABLES
MATERIALDESCRIPTION = GT_DESCRIPTION
TAXCLASSIFICATIONS = I_TAXCLASSIFICATIONS[]
UNITSOFMEASURE = LT_UNITSOFMEASURE
UNITSOFMEASUREX = LT_UNITSOFMEASUREX
INTERNATIONALARTNOS = LT_INTERNATIONALARTNOS
EXTENSIONIN = LT_BAPIPAREX
EXTENSIONINX = LT_BAPIPAREXX
RETURNMESSAGES = I_BAPI_MATRETURN2[].
LOOP AT I_BAPI_MATRETURN2 WHERE TYPE CA 'EAX'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = I_BAPI_MATRETURN2-ID
MSGNR = I_BAPI_MATRETURN2-NUMBER
MSGV1 = I_BAPI_MATRETURN2-MESSAGE_V1
MSGV2 = I_BAPI_MATRETURN2-MESSAGE_V2
MSGV3 = I_BAPI_MATRETURN2-MESSAGE_V3
MSGV4 = I_BAPI_MATRETURN2-MESSAGE_V4
IMPORTING
MESSAGE_TEXT_OUTPUT = LV_MESSAGE.
LV_FLAG = 'X'.
CONCATENATE LV_ALL_MESSAGE LV_MESSAGE INTO LV_ALL_MESSAGE .
LV_FLAG = 'X'.
ENDLOOP.
IF LV_FLAG IS INITIAL .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
* IMPORTING
* RETURN =
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
* IMPORTING
* RETURN =
.
CONCATENATE GS_CUST-MSGTX 'EAN' GS_MARC-WERKS '操作失败:'LV_ALL_MESSAGE INTO GS_CUST-MSGTX .
ENDIF.