elegantok

REPORT  zmb31.
TABLES:mseg, mkpf, rm07m, t158b,t001l, msegk.

DATA: mat_doc LIKE bapi2017_gm_head_ret-mat_doc.

DATA:save_code LIKE sy-ucomm,
     ok_code LIKE sy-ucomm,
     loc_msg(50),
     gmnga LIKE afru-gmnga,
     mtsnr LIKE  rm07m-mtsnr,
     errflag..

DATA:BEGIN OF gt_afpo OCCURS 0.
        INCLUDE STRUCTURE afpo.
DATA:END OF gt_afpo.

DATA:gmhead LIKE bapi2017_gm_head_01.

DATABEGIN OF gmcode.
        INCLUDE STRUCTURE bapi2017_gm_code.
DATAEND OF gmcode.

DATABEGIN OF mthead.
        INCLUDE STRUCTURE bapi2017_gm_head_ret.
DATAEND OF mthead.

DATABEGIN OF itab OCCURS 100.
        INCLUDE STRUCTURE bapi2017_gm_item_create.
DATAEND OF itab.

DATABEGIN OF errmsg OCCURS 10.
        INCLUDE STRUCTURE bapiret2.
DATAEND OF errmsg.

INITIALIZATION.
  t001l-lgort = \' BG01\'.
  mseg-lgort = \' BG01\'.
  mseg-werks = \'1103\'.
  mkpf-bldat = sy-datum.
  mkpf-budat = sy-datum.
  t158b-bwart = \'101\'.
*  rm07m-sobkz = \'\'.         "特殊库存
  rm07m-werks = \'1103\'.
  rm07m-lgort = \' BG01\'.
  mseg-erfme = \'PC\'.
  gmcode-gm_code = \'02\'.


***********gmcode-gm_code取值含义*******
********01     MB01
********02     MB31
********03     MB1A
********04     MB1B
********05     MB1C
********06     MB11
********07     MB04


  gmhead-pstng_date = sy-datum."mkpf-bldat.
  gmhead-doc_date = sy-datum."mkpf-budat.
  gmhead-pr_uname = sy-uname.

  itab-material = \'000000003000000098\'.
  itab-plant = \'1103\'.
  itab-stge_loc = \'BG01\'.
  itab-move_type = \'101\'.
  itab-spec_stock = \'BG01\'..
  itab-entry_qnt = \'6\'.
  itab-entry_uom = \'EA\'.
  itab-po_number = \'4500000097\'.
  itab-po_item = \'00010\'.
  itab-mvt_ind = \'B\'.
  itab-move_mat = \'3000000098\'.
  itab-move_plant = \'1103\'.
  itab-move_stloc = \'BG01\'.
  itab-nb_slips = 1.

  APPEND itab.

  CALL FUNCTION \'BAPI_GOODSMVT_CREATE\'
    EXPORTING
      goodsmvt_header  = gmhead
      goodsmvt_code    = gmcode
    IMPORTING
      goodsmvt_headret = mthead
      materialdocument = mat_doc
    TABLES
      goodsmvt_item    = itab
      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.

      gmhead-ref_doc_no = \'\'.
      gmhead-header_txt = \'\'.
      mseg-matnr = \'\'.
      msegk-mat_kdauf = \'\'.
      msegk-mat_kdpos = \'\'.
      mseg-erfmg = \'\'.
      rm07m-mtsnr = \'\'.
      gmnga = \'\'.
      mkpf-bktxt = \'\'.
    ENDIF.
  ELSE.
    MESSAGE \'这不是正确的发料单或者已经创建凭证!\' TYPE \'E\'.
  ENDIF.

  CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\'
    EXPORTING
      wait = \'X\'.

------------------------------261 /262 生产订单收退料------------------------

 

  REPORT test.
*物料凭证的抬头数据
DATA:

li_gm_head TYPE STANDARD TABLE OF bapi2017_gm_head_01,
l_gm_head LIKE bapi2017_gm_head_01,
*为BAPI货物移动分配事务代码
li_gm_code TYPE STANDARD TABLE OF bapi2017_gm_code,
l_gm_code LIKE bapi2017_gm_code,

*返回单据号码
l_mat_doc LIKE bapi2017_gm_head_ret-mat_doc,

*凭证项目
li_gm_item TYPE STANDARD TABLE OF bapi2017_gm_item_create,
l_gm_item LIKE bapi2017_gm_item_create,

*-------------------------
li_return TYPE STANDARD TABLE OF bapiret2,
l_return TYPE bapiret2,
*Error flag
l_errflag(1TYPE c.

*&---------------------------------------------------------------------*
*&      Form  CALLBAPI
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*填写表头数据

  l_gm_head-pstng_date = sy-datum.
  l_gm_head-doc_date = sy-datum.
  APPEND l_gm_head TO li_gm_head.
*分配事务代码
  l_gm_code-gm_code = \'03\'.
  APPEND l_gm_code TO li_gm_code.

*发货明细
  l_gm_item-material = \'000000003102000245\'.                "10 410A
  l_gm_item-plant = \'1201\'.
  l_gm_item-stge_loc = \'1006\'.
  l_gm_item-move_type = \'261\'"移动类型(库存管理)
*  l_gm_item-mvt_ind   = \'F\'.
  l_gm_item-entry_qnt = \'1\'.
  l_gm_item-entry_uom = \'EA\'.
  l_gm_item-orderid = \'000010003579\'"MO号
  l_gm_item-reserv_no = \'0000107118\'"预留/相关需求的编号 RESB~RSNUM
  l_gm_item-res_item = \'0019\'" 预留 / 相关需求的项目编号 RESB~RSPOS
*  l_gm_item-XSTOB = \'X\'.                   “冲销标志,不修改移动类型261,做完以后也是262;使用262,但此处不设置还是261.

                 gm_code  = 03  和  05  此处都是对的,不知道是不是bugger
  APPEND l_gm_item TO li_gm_item.

  CALL FUNCTION \'BAPI_GOODSMVT_CREATE\'
  EXPORTING
  goodsmvt_header = l_gm_head
  goodsmvt_code = \'03\'
* RETURN
  IMPORTING
* GOODSMVT_HEADRET = L_MAT_DOC
  materialdocument = l_mat_doc
  TABLES
  goodsmvt_item = li_gm_item
  return = li_return
  .
  CLEAR l_errflag.
  MESSAGE i005(ymess) WITH l_mat_doc.

  IF l_errflag IS INITIAL.
    CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\'.
  ELSE.
    MESSAGE i005(ymess) WITH \'ERROR\'.
  ENDIF.

分类:

技术点:

相关文章:

  • 2021-07-18
  • 2022-12-23
  • 2022-12-23
  • 2021-12-09
  • 2022-12-23
  • 2021-07-03
  • 2021-11-15
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-18
  • 2021-11-18
  • 2022-12-23
  • 2021-12-22
  • 2022-12-23
相关资源
相似解决方案