我是在做sap导入订单信息时报错订单不存在,但是实际是有这个订单的。
原本业务操作是通过migo去操作的,但是为了方便要开发一个导入信息自动发货这样的功能。
问题发生在BAPI_GOODSMVT_CREATE这个bapi执行完之后返回订单不存在
DATA: BEGIN OF upload OCCURS 0,
aufnr LIKE zppzydkd-aufnr,
zvinr LIKE zppzydkd-zvinr,
bktxt LIKE zppzydkd-bktxt,
matnr LIKE zcpm_list2-matnr,
belnr LIKE zppzydkd-belnr,
pgflag LIKE zppzydkd-pgflag,
belnr1 LIKE zppzydkd-belnr1,
menge LIKE zcpm_list2-menge,
END OF upload,
*&& 权限检查
BEGIN OF GT_T001W OCCURS 0,
WERKS TYPE T001W-WERKS,
END OF GT_T001W.
DATA: is_common LIKE zseaicommon.
DATA: is_property TYPE zseaiproperty.
*&-EAI传输规范
DATA: begin_date(8) TYPE c, "开始抓数日期
begin_time(8) TYPE c, "开始抓数时间
end_date(8) TYPE c, "完成抓数日期
end_time(8) TYPE c. "完成抓数时间
DATA: gs_upload LIKE TABLE OF upload WITH HEADER LINE.
DATA: gt_upload LIKE TABLE OF upload WITH HEADER LINE.
DATA: ga_upload LIKE TABLE OF upload WITH HEADER LINE.
*-BAPI变量
DATA: BEGIN OF item OCCURS 0.
INCLUDE STRUCTURE bapi2017_gm_item_create.
DATA: END OF item.
DATA: BEGIN OF return OCCURS 0.
INCLUDE STRUCTURE bapiret2.
DATA: END OF return.
DATA: itab TYPE kcde_cells OCCURS 0 WITH HEADER LINE,
header LIKE bapi2017_gm_head_01 OCCURS 0 WITH HEADER LINE,
headret LIKE bapi2017_gm_head_ret OCCURS 0 WITH HEADER LINE,
code LIKE bapi2017_gm_code OCCURS 0 WITH HEADER LINE,
document LIKE bapi2017_gm_head_ret-mat_doc.
DATA: LT_GOODSMVT_SERIALNUMBER LIKE TABLE OF BAPI2017_GM_SERIALNUMBER.
DATA: LS_GOODSMVT_SERIALNUMBER LIKE LINE OF LT_GOODSMVT_SERIALNUMBER.
DATA:lv_item_line TYPE int4.
FIELD-SYMBOLS:<ls_item> LIKE LINE OF item.
LOOP AT gt_upload.
REFRESH: header,item.
CLEAR : header,item.
CLEAR ls_goodsmvt_serialnumber.
header-pstng_date = sy-datum.
header-doc_date = sy-datum.
header-pr_uname = sy-uname.
header-header_txt = gt_upload-bktxt. "凭证抬头文本
* item-spec_stock = 'K'. "特殊库存
item-move_type = '261'. "移动类型
* item-move_stloc = gt_upload-lgort. "收货库存地点
item-material = gt_upload-matnr. "物料
item-entry_qnt = 1. "数量
item-stge_loc = 'V101'. "发货库存地点
item-orderid = gt_upload-aufnr. "订单号
* ls_goodsmvt_serialnumber-serialno = ga_upload-zvinr.
* item-batch = gt_upload-charg. "批次
item-plant = '9003'. "发货工厂
* item-vendor = gt_upload-lifnr. "供应商
READ TABLE item ASSIGNING <ls_item>
WITH KEY orderid = gt_upload-aufnr
material = gt_upload-matnr
plant = '9003'
stge_loc = 'V101'
move_type = '261'.
* move_plant = gt_upload-werks
* move_stloc = gt_upload-lgort.
IF sy-subrc = 0.
<ls_item>-entry_qnt = <ls_item>-entry_qnt + 1.
ELSE.
APPEND item.
ENDIF.
DESCRIBE TABLE item LINES lv_item_line.
ls_goodsmvt_serialnumber-matdoc_itm = lv_item_line.
ls_goodsmvt_serialnumber-serialno = gt_upload-zvinr.
APPEND ls_goodsmvt_serialnumber TO lt_goodsmvt_serialnumber.
CLEAR item.
* -调用发货BAPI,输出结果
PERFORM bapi_dkdfh USING gt_upload-aufnr.
ENDLOOP.
FORM bapi_dkdfh USING orderno.
REFRESH: code,return.
CLEAR : code,return,document.
"MB1B发货的代码
code-gm_code = '03'.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = header
goodsmvt_code = code
IMPORTING
goodsmvt_headret = headret
materialdocument = document
TABLES
goodsmvt_item = item
goodsmvt_serialnumber = lt_goodsmvt_serialnumber
return = return.