SAP 非限制转销售订单 BAPI

19 篇文章 1 订阅

MIGO 移动类型413 非限制转销售订单
反之,移动类型411 E
BAPI

FORM process_migo_411e.

"BAPI變數
DATA: ls_goodsmvt_header TYPE bapi2017_gm_head_01, "物料異動表頭資訊
ls_goodsmvt_code TYPE bapi2017_gm_code, "物料異動的作業代碼
ls_goodsmvt_headret TYPE bapi2017_gm_head_ret, "物料異動輸出訊息
lt_goodsmvt_item TYPE bapi2017_gm_item_create OCCURS 0 WITH HEADER LINE. "物料異動表身資訊
DATA: lv_line_id TYPE mb_line_id, "物料異動的表身唯一值
lv_num TYPE numc4. "訊息的流水號
DATA w_return TYPE bapiret2.
DATA : gt_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE.

CLEAR:
ls_goodsmvt_header,
ls_goodsmvt_code,
ls_goodsmvt_headret,
lt_goodsmvt_item,
lt_goodsmvt_item[],
gt_return,
gt_return[].

ls_goodsmvt_header-pstng_date = p_datum.
ls_goodsmvt_header-doc_date = p_datum.

ls_goodsmvt_header-header_txt = ‘特殊发货单过账-去批次’.

"============== BAPI 物料異動指派作業代碼 ===================
"01 Goods receipt for purchase order
"02 Goods receipt for production order
"03 Goods issue
"04 Transfer posting
"05 Other goods receipt
"06 Reversal of goods movements
"07 Subsequent adjustment with regard to a subcontract order
ls_goodsmvt_code-gm_code = ‘04’.

"============== BAPI 物料文件表身資訊 =========================
"物料文件項目
CLEAR:lv_line_id .
lv_line_id = lv_line_id + 1.
lt_goodsmvt_item-line_id = lv_line_id. "物料文件項目唯一值

  • lt_goodsmvt_item-mvt_ind = ‘F’. "異動指示「F」
    lt_goodsmvt_item-move_type = ‘411’.
    lt_goodsmvt_item-spec_stock =‘E’.
  • lt_goodsmvt_item-batch = is_zdbt_pp_011-batch_num.
  • CLEAR:lt_goodsmvt_item-batch.

lt_goodsmvt_item-entry_qnt = gs_tab-zygzs.

CALL FUNCTION ‘CONVERSION_EXIT_CUNIT_INPUT’
EXPORTING
input = gs_tab-meins
language = sy-langu
IMPORTING
output = lt_goodsmvt_item-entry_uom
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
"若轉換失敗用原來的單位
lt_goodsmvt_item-entry_uom = gs_tab-meins.
ENDIF.
lt_goodsmvt_item-material_long = gs_tab-matnr.

  • lt_goodsmvt_item-orderid = gs_tab-aufnr.

*goodsmvt_item-val_sales_ord = gs_alv-vbeln. "原销售订单
*goodsmvt_item-val_s_ord_item = gs_alv-posnr. "原销售订单行项目
*goodsmvt_item-sales_ord = gs_alv-vbeln. "目标销售订单
*goodsmvt_item-s_ord_item = gs_alv-posnr. "目标销售订单行项目

lt_goodsmvt_item-val_sales_ord = gs_tab-vbeln_p.
lt_goodsmvt_item-val_s_ord_item = gs_tab-posnr.

lt_goodsmvt_item-plant = gs_tab-werks.
lt_goodsmvt_item-stge_loc = gs_tab-lgort.
lt_goodsmvt_item-move_stloc = gs_tab-lgort.

APPEND lt_goodsmvt_item.

"呼叫 BAPI 執行過帳功能

CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
goodsmvt_header = ls_goodsmvt_header
goodsmvt_code = ls_goodsmvt_code

  • testrun          = testrun
    

    IMPORTING
    goodsmvt_headret = ls_goodsmvt_headret
    TABLES
    goodsmvt_item = lt_goodsmvt_item
    return = gt_return.

    READ TABLE gt_return WITH KEY type = ‘E’ INTO w_return.
    IF sy-subrc <> 0.

    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
    EXPORTING
    wait = ‘X’.

  • gs_tab-zstatus = ‘S’.
    gs_tab-zstat = g_green.
    CONCATENATE gs_tab-zmessage '-去特殊库存成功!'ls_goodsmvt_headret-mat_doc
    INTO gs_tab-zmessage.

ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

  • gs_tab-zstatus = ‘E’.
    gs_tab-zstat = g_red.
    CONCATENATE gs_tab-zmessage ‘-去特殊库存失败!’ w_return-message
    INTO gs_tab-zmessage.
    ENDIF.

ENDFORM.

有个特殊情况在执行时,明明库位里有对应销售订单库存,可是提示库存地点没有库存,折腾很久才发现,是物料没有扩充对应库存地点,使用MMSC扩充即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值