ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DEMO

2019-10-04 20:52:15  阅读:229  来源: 互联网

标签:gt DEMO lv item lt TYPE po


MM模块:

BAPI_PO_CREATE1

DATA:"PO  BAPI参数
  lv_ebeln         TYPE ebeln,
  ls_poheader      TYPE bapimepoheader,
  ls_poheaderx     TYPE bapimepoheaderx,
  ls_potext        TYPE bapimepotext,

  lt_poitem        LIKE TABLE OF bapimepoitem WITH HEADER LINE,
  lt_poitemx       TYPE TABLE OF bapimepoitemx WITH HEADER LINE,
  lt_potext        TYPE TABLE OF bapimepotext,

  lt_poschedule    TYPE TABLE OF bapimeposchedule WITH HEADER LINE,
  lt_poschedulex   TYPE TABLE OF bapimeposchedulx WITH HEADER LINE,
  lt_pocond        TYPE TABLE OF bapimepocond,
  lt_pocondx       TYPE TABLE OF bapimepocondx,
  lt_pocomponents  TYPE TABLE OF bapimepocomponent,
  lt_pocomponentsx TYPE TABLE OF bapimepocomponentx,
  "通用
  lt_return        TYPE TABLE OF bapiret2 WITH HEADER LINE,
  lv_msg           TYPE bapi_msg.


LOOP AT p_gt_checkabox_po_header ASSIGNING FIELD-SYMBOL(<fs1>)..
*&---------------------------------------------------------------------*
*      PO create
  CLEAR:lv_ebeln,l_labor,l_werks,l_lifnr,i_bukrs.
  SELECT SINGLE bukrs   INTO  i_bukrs FROM t001k WHERE bwkey = <fs1>-kunnr."公司代码
  l_labor = <fs1>-labor."
  l_werks = <fs1>-kunnr..""门店,工厂
  l_lifnr = <fs1>-lifnr."供应商
  ls_poheader = VALUE #(  doc_type = COND #( WHEN l_labor = '001' THEN 'ZTB' ELSE 'GB' )""采购凭证类型
*                               vendor = |{ ls_item-s_werks ALPHA = IN }| "ls_item-s_werks
                           vendor =  COND #( WHEN ls_poheader-doc_type = 'ZTB' THEN  |0000010001| ELSE |{ <fs1>-lifnr ALPHA = IN }  |  )
                           purch_org = '1000' "采购组织
                           pur_group = '101'  "采购组
                           comp_code = i_bukrs
                           currency = 'CNY'
                           doc_date = sy-datum "采购凭证日期
                           langu = sy-langu
                           status = 'I' ).


  ls_poheaderx = VALUE #( doc_type = 'X'
                           vendor = 'X'
                           purch_org = 'X'
                           pur_group = 'X'
                           comp_code = 'X'
                           currency = 'X'
                           doc_date = 'X'
                           langu = 'X'
                           status = 'X' ).

  REFRESH: lt_poitem,lt_poitemx, lt_poschedule,lt_poschedulex,lt_return,lt_potext.
  CLEAR: lv_cnt,lv_cnt_item.

  LOOP AT p_gt_checkabox_po_items WHERE  kunnr =  <fs1>-kunnr
                                          AND    zshdh =  <fs1>-zshdh
                                           AND     lifnr =  <fs1>-lifnr..
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input  = p_gt_checkabox_po_items-matnr
      IMPORTING
        output = p_gt_checkabox_po_items-matnr.
    lv_cnt = lv_cnt + 1.
    lv_cnt_item = lv_cnt * 10.
    lt_poitem-po_item  = lv_cnt_item.
    lt_poitem-material = p_gt_checkabox_po_items-matnr.
    lt_poitem-plant    = l_werks.
    lt_poitem-stge_loc = 1000.
    lt_poitem-quantity = p_gt_checkabox_po_items-zcysl.
    lt_poitem-po_unit  = p_gt_checkabox_po_items-meins."单位
    lt_poitem-ret_item = 'X'.
    lt_poitem-net_price =  p_gt_checkabox_po_items-zdj.
    APPEND lt_poitem .

    lt_poitemx-po_item  = lv_cnt_item.
    lt_poitemx-material = 'X'.
    lt_poitemx-plant    = 'X'.
    lt_poitemx-stge_loc = 'X'.
    lt_poitemx-quantity = 'X'.
    lt_poitemx-po_unit  = 'X'.
    lt_poitemx-ret_item = 'X'.
    lt_poitemx-net_price = 'X'.
    APPEND lt_poitemx .

    lt_poschedule-po_item = lv_cnt_item.
*      lt_poschedule-delivery_date = p_gt_checkabox_po_items-zdbrq.
    lt_poschedule-delivery_date = sy-datum.
    APPEND lt_poschedule.


    lt_poschedulex-po_item = lv_cnt_item.
*      lt_poschedulex-delivery_date = p_gt_checkabox_po_items-zdbrq.
    lt_poschedulex-delivery_date =  sy-datum..
    APPEND lt_poschedulex.
    CLEAR: lt_poitem,lt_poitemx, lt_poschedule,lt_poschedulex.

    ls_potext-text_id = 'F01'.
    ls_potext-text_line =  p_gt_checkabox_po_items-zshdh."退货单号
    ls_potext-po_item = lv_cnt_item.
    APPEND ls_potext TO lt_potext.
    CLEAR:ls_potext.
  ENDLOOP.

  CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
      poheader         = ls_poheader
      poheaderx        = ls_poheaderx
    IMPORTING
      exppurchaseorder = lv_ebeln
*     EXPHEADER        =
*     EXPPOEXPIMPHEADER            =
    TABLES
      return           = lt_return
      poitem           = lt_poitem
      poitemx          = lt_poitemx
*     POADDRDELIVERY   =
      poschedule       = lt_poschedule
      poschedulex      = lt_poschedulex
      potextitem       = lt_potext.

  LOOP AT lt_return  WHERE type CA 'AE'.
  ENDLOOP.
  IF sy-subrc EQ 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    e_type = 'E'.
    e_msg =  |采购凭证 { lv_ebeln } 创建失败:{ lt_return-message } |.
  ELSE.
    e_type = 'S'.
    e_msg =  |采购凭证 { lv_ebeln } 创建成功 !|..
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
  ENDIF.
*-----------进行过账
  DATA:l_flag TYPE char1.
  CLEAR:l_flag.
  IF lv_ebeln IS NOT INITIAL.
    DO 20 TIMES.
      CALL FUNCTION 'ENQUEUE_EMEKKOE'
        EXPORTING
          mode_ekko      = 'E'
          mode_ekpo      = 'E'
          mandt          = sy-mandt
          ebeln          = lv_ebeln
        EXCEPTIONS
          foreign_lock   = 1
          system_failure = 2
          OTHERS         = 3.
      IF sy-subrc = 0.
        l_flag = 'X'.
        EXIT.
      ENDIF.
      WAIT UP TO 1 SECONDS.
    ENDDO.

    IF l_flag = ''.
      e_type = 'E'.
      e_msg = |采购凭证 { lv_ebeln } 被锁定 !|.
    ENDIF.
  ENDIF.
ENDLOOP.

BAPI_GOODSMVT_CREATE

  DATA:l_lines TYPE ekpo-ebelp.
  DATA e_type TYPE bapi_mtype.
  DATA:e_msg TYPE bapi_msg.
  DATA:goodsmvt_header  TYPE bapi2017_gm_head_01,
       goodsmvt_code    TYPE bapi2017_gm_code,
       goodsmvt_headret TYPE bapi2017_gm_head_ret,
       goodsmvt_item    TYPE bapi2017_gm_item_create OCCURS 0 WITH HEADER LINE,
       return           TYPE bapiret2                OCCURS 0 WITH HEADER LINE.

  goodsmvt_header  =  VALUE #( pstng_date = sy-datum
                               doc_date  = sy-datum ).
  LOOP AT p_gt_checkabox_po_items WHERE  kunnr =  <fs1>-kunnr
                                      AND    zshdh =  <fs1>-zshdh.
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input  = p_gt_checkabox_po_items-matnr
      IMPORTING
        output = p_gt_checkabox_po_items-matnr.
    l_lines = l_lines + 00010.
    goodsmvt_item = VALUE #( material = p_gt_checkabox_po_items-matnr
                             stge_loc = '1000'  "库存地点
                             move_type = '101'
                             plant = p_gt_checkabox_po_items-kunnr
                             entry_qnt =  p_gt_checkabox_po_items-zcysl
                             po_number = lv_ebeln
                             po_item = l_lines
                             entry_uom = p_gt_checkabox_po_items-meins
                             mvt_ind = 'B' ).
    APPEND goodsmvt_item.
  ENDLOOP .

  goodsmvt_code = '01'.
  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header  = goodsmvt_header
      goodsmvt_code    = goodsmvt_code
*     TESTRUN          = ' '
*     GOODSMVT_REF_EWM =
    IMPORTING
      goodsmvt_headret = goodsmvt_headret
*     MATERIALDOCUMENT =
*     MATDOCUMENTYEAR  =
    TABLES
      goodsmvt_item    = goodsmvt_item
*     GOODSMVT_SERIALNUMBER         =
      return           = return.

  IF goodsmvt_headret IS NOT INITIAL.
    e_type  = 'S'.
    e_msg = |物料凭证{ goodsmvt_headret-mat_doc }创建成功;|.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    e_type = 'E'.
*        error_flag = 'X'.
    READ TABLE return WITH KEY type = 'E'.
    IF sy-subrc = 0.
      e_msg = |物料凭证创建失败,失败原因:{ return-message } |.
    ENDIF.
  ENDIF.

 

<style></style>

 

<style></style>

 

标签:gt,DEMO,lv,item,lt,TYPE,po
来源: https://www.cnblogs.com/ckstock/p/11623251.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有