*&---------------------------------------------------------------------*
*& Report ZTESTBAPI
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztestbapi.
TYPE-POOLS:slis, vrm.
TABLES: sscrfields.
TABLES:zmmr604.
DATA:
BEGIN
OF wa_tab
OCCURS 0,
zrkno
LIKE zmmr604-zrkno,
END
OF wa_tab.
DATA:save_code
LIKE sy-ucomm,
ok_code
LIKE sy-ucomm,
loc_msg(50),
gmnga
LIKE afru-gmnga,
mtsnr
LIKE rm07m-mtsnr,
errflag.
DATA:message
type ZMESSAGE500.
data: itab
type
table
of zmms604
with
header line.
DATA:gmhead
LIKE bapi2017_gm_head_01.
DATA:
BEGIN
OF gmcode.
INCLUDE
STRUCTURE bapi2017_gm_code.
DATA:
END
OF gmcode.
DATA:
BEGIN
OF mthead.
INCLUDE
STRUCTURE bapi2017_gm_head_ret.
DATA:
END
OF mthead.
DATA:
BEGIN
OF errmsg
OCCURS
10.
INCLUDE
STRUCTURE bapiret2.
DATA:
END
OF errmsg.
DATA: mat_doc
LIKE bapi2017_gm_head_ret-mat_doc.
DATA:
BEGIN
OF itab1
OCCURS
100.
INCLUDE
STRUCTURE bapi2017_gm_item_create.
DATA:
END
OF itab1.
SELECTION-SCREEN
BEGIN
OF
BLOCK block1
WITH
FRAME
TITLE text-001.
"选择屏幕块
PARAMETERS: p_rkno
LIKE zmmr604-zrkno.
SELECTION-SCREEN
END
OF
BLOCK block1 .
AT SELECTION-SCREEN.
START-OF-SELECTION.
PERFORM createdata.
*&---------------------------------------------------------------------*
*& Form getdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM createdata.
* CALL FUNCTION 'Z_CPBARCODE_SELPROCESS'
* EXPORTING
* zrkno = p_rkno
* IMPORTING
* message_exp = message
* TABLES
* zmmt_tmpur_imp = itab.
gmhead-pstng_date = sy-datum.
"mkpf-bldat.
gmhead-doc_date = sy-datum.
"mkpf-budat.
gmhead-pr_uname = sy-uname.
gmcode-gm_code =
'02'.
select *
into corresponding
fields
of
table itab
from zmmr604
where zrkno = p_rkno.
LOOP
AT itab.
* write: message.
* WRITE: itab-matnr, itab-zkbsl.
itab1-material = itab-matnr.
itab1-plant =
'1000'.
itab1-stge_loc = itab-lgort.
itab1-move_type =
'101'.
itab1-spec_stock =
''.
itab1-mvt_ind =
'F'.
itab1-entry_qnt = itab-zkbsl.
itab1-entry_uom = itab-meins.
itab1-ORDERID = itab-aufnr.
itab1-move_plant =
'1000'.
itab1-QUANTITY = itab-zkbsl.
itab1-BASE_UOM = itab-meins.
append itab1.
ENDLOOP.
CALL
FUNCTION
'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = gmhead
goodsmvt_code = gmcode
IMPORTING
goodsmvt_headret = mthead
materialdocument = mat_doc
TABLES
goodsmvt_item = itab1
return = errmsg.
LOOP
AT errmsg.
CLEAR loc_msg.
CONCATENATE
'过帐成功!' errmsg-message
INTO loc_msg.
IF errmsg-type
EQ
'E'.
MESSAGE errmsg-message
TYPE
'E'.
errflag =
'X'.
ELSE.
MESSAGE loc_msg
TYPE
'S'.
ENDIF.
ENDLOOP.
IF errflag
IS INITIAL.
COMMIT
WORK
AND WAIT.
CLEAR loc_msg.
IF sy-subrc
NE
0.
MESSAGE
'过帐操作出现错误,请稍后重试!'
TYPE
'E'.
EXIT.
ELSE.
CONCATENATE
'物料凭证:' mat_doc
'已成功创建!'
INTO loc_msg.
MESSAGE i000(znyj13)
WITH loc_msg.
endif.
endif.
ENDFORM. "getdata
BAPI实例之003--使用BAPI函数做工单入库
REPORT Y1009.
DATA:GOODSMVT_HEADER LIKE BAPI2017_GM_HEAD_01,
GOODSMVT_CODE LIKE BAPI2017_GM_CODE,
GOODSMVT_HEADRET LIKE BAPI2017_GM_HEAD_RET,
MATERIALDOCUMENTTYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
GOODSMVT_ITEM TYPE STANDARD TABLEOF BAPI2017_GM_ITEM_CREATE,
W_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
RETURN TYPE STANDARD TABLE OF BAPIRET2,
W_RETURN TYPE BAPIRET2.
MOVE SY-DATUM TO GOODSMVT_HEADER-PSTNG_DATE.
MOVE SY-DATUM TO GOODSMVT_HEADER-DOC_DATE.
MOVE '02' TO GOODSMVT_CODE.
CLEAR: GOODSMVT_HEADRET,MATERIALDOCUMENT,MATDOCUMENTYEAR,RETURN.
*MOVE 'DY10' TO W_GOODSMVT_ITEM-PLANT.
MOVE '0001' TO W_GOODSMVT_ITEM-STGE_LOC.
MOVE '101' TO W_GOODSMVT_ITEM-MOVE_TYPE.
MOVE '1' TO W_GOODSMVT_ITEM-ENTRY_QNT.
MOVE '000001009073' TO W_GOODSMVT_ITEM-ORDERID.
MOVE 'F' TO W_GOODSMVT_ITEM-MVT_IND.
APPEND W_GOODSMVT_ITEM TO GOODSMVT_ITEM.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = GOODSMVT_HEADER
GOODSMVT_CODE = GOODSMVT_CODE
* TESTRUN = ' '
* GOODSMVT_REF_EWM =
IMPORTING
GOODSMVT_HEADRET = GOODSMVT_HEADRET
MATERIALDOCUMENT = MATERIALDOCUMENT
MATDOCUMENTYEAR = MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = GOODSMVT_ITEM
* GOODSMVT_SERIALNUMBER =
RETURN = RETURN
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
.
IF MATERIALDOCUMENT IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
WRITE:/ MATERIALDOCUMENT.
ELSE.
LOOP AT RETURN INTO W_RETURN.
WRITE:/ W_RETURN-TYPE,
W_RETURN-ID,
W_RETURN-NUMBER,
W_RETURN-MESSAGE.
ENDLOOP.
ENDIF.