zoukankan      html  css  js  c++  java
  • 函数使用十二:BAPI_CONTRACT_CREATE

    *&---------------------------------------------------------------------*
    *& Report  ZBAPI_WB21
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    
    REPORT  ZBAPI_CONTRACT_CREATE.
    
    DATA: L_FLAG TYPE C,
          CNS_YES TYPE C.
    DATA:L_EBELN    TYPE BAPIMEOUTHEADER-NUMBER,                "#EC NEEDED
         LS_EKKO    TYPE EKKO,
    
         EXTENSIONIN LIKE BAPIPAREX  OCCURS 0 WITH HEADER LINE,
         LT_EXTENSIONOUT TYPE BAPIPAREX_T,
         LT_RETURN       TYPE BAPIRET2_T,
         LS_RETURN       TYPE BAPIRET2,
    
         LS_HEADER       TYPE BAPIMEOUTHEADER,
         LS_HEADERX      TYPE BAPIMEOUTHEADERX,
    
         LS_ITEM         TYPE BAPIMEOUTITEM,
         LT_ITEM         TYPE BAPIMEOUT_T_ITEM,
         LS_ITEMX        TYPE BAPIMEOUTITEMX,
         LT_ITEMX        TYPE BAPIMEOUT_T_ITEMX.
    
    *--------------------------------------------------------------------*
    *   Header赋值
    *--------------------------------------------------------------------*
    CLEAR: LS_HEADER,LS_HEADERX,L_FLAG.
    REFRESH: LT_RETURN, LT_ITEM, LT_ITEMX.
    
    *READ TABLE gt_out INTO gwa_out INDEX 1.
    *
    *IF gwa_out-ebeln IS NOT INITIAL.
    *  g_action = cns_modify.
    *ELSE.
    *  g_action = cns_create.
    *ENDIF.
    CNS_YES = 'X'.
    
    *LS_HEADER-NUMBER    = '4600000005'."gwa_out-ebeln.  "采购凭证号
    LS_HEADER-VENDOR    = '0000400007'."gwa_out-lifnr.  "供应商
    LS_HEADER-DOC_TYPE  = 'MK'."gwa_out-bsart.  "协议类型
    LS_HEADER-COMP_CODE = '8000'."gwa_out-bukrs.  "公司代码
    LS_HEADER-DOC_DATE  = SY-DATUM."gwa_out-bedat.  "协议日期
    *ls_header-vper_start  = sy-datum."gwa_out-kdatb. "协议起始日期
    *ls_header-vper_end   = sy-datum."gwa_out-kdate.  "协议截至日期
    LS_HEADER-PURCH_ORG  = '8000'."gwa_out-ekorg.  "采购组织
    LS_HEADER-PUR_GROUP  = '007'."gwa_out-ekgrp.  "采购组
    *ls_header-acum_value = ."gwa_out-ktwrt.  "目标值
    LS_HEADER-CURRENCY   = 'USD'."gwa_out-waers.  "货币
    LS_HEADER-LANGU      = SY-LANGU.
    LS_HEADER-VPER_START      = SY-DATUM.
    LS_HEADER-VPER_END      = SY-DATUM.
    
    *LS_HEADERX-NUMBER    = CNS_YES.  "合同号
    LS_HEADERX-VENDOR    = CNS_YES.  "供应商
    LS_HEADERX-DOC_TYPE  = CNS_YES.  "协议类型
    LS_HEADERX-COMP_CODE = CNS_YES.  "公司代码
    LS_HEADERX-DOC_DATE  = CNS_YES.  "协议日期
    LS_HEADERX-VPER_START  = CNS_YES. "协议起始日期
    LS_HEADERX-VPER_END   = CNS_YES.  "协议截至日期
    LS_HEADERX-PURCH_ORG  = CNS_YES.  "采购组织
    LS_HEADERX-PUR_GROUP  = CNS_YES.  "采购组
    *ls_headerx-acum_value = cns_yes.  "目标值
    LS_HEADERX-CURRENCY   = CNS_YES.  "货币
    LS_HEADERX-LANGU      = CNS_YES.
    LS_HEADERX-VPER_START      = CNS_YES.
    LS_HEADERX-VPER_END      = CNS_YES.
    
    *--------------------------------------------------------------------*
    *   Header 自定义字段赋值
    *--------------------------------------------------------------------*
    DATA: LS_BAPI_TE_MEOUTHEADERX LIKE BAPI_TE_MEOUTHEADERX,
          LS_BAPI_TE_MEOUTHEADER  LIKE BAPI_TE_MEOUTHEADER.
    
    *CLEAR extensionin.
    *ls_bapi_te_meoutheader-number = gwa_out-ebeln.
    *ls_bapi_te_meoutheader-zhtnum = gwa_out-zhtnum.  "外部合同号
    *ls_bapi_te_meoutheader-zlotno = gwa_out-zlotno.  "LOT包号
    *ls_bapi_te_meoutheader-zcgblx = gwa_out-zcgblx.  "采购包类型
    *ls_bapi_te_meoutheader-zhtbz  = gwa_out-zhtbz.   "采购立项号
    *ls_bapi_te_meoutheader-zcgnum = gwa_out-zcgnum.  "采购任务
    *extensionin-structure = 'BAPI_TE_MEOUTHEADER'.
    *CALL METHOD cl_abap_container_utilities=>fill_container_c
    *  EXPORTING
    *    im_value               = ls_bapi_te_meoutheader
    *  IMPORTING
    *    ex_container           = extensionin-valuepart1
    *  EXCEPTIONS
    *    illegal_parameter_type = 1
    *    OTHERS                 = 2.
    *APPEND extensionin.
    *
    *CLEAR extensionin.
    *ls_bapi_te_meoutheaderx-number = gwa_out-ebeln.
    *ls_bapi_te_meoutheaderx-zhtnum = cns_yes.  "外部合同号
    *ls_bapi_te_meoutheaderx-zlotno = cns_yes.  "LOT包号
    *ls_bapi_te_meoutheaderx-zcgblx = cns_yes.  "采购包类型
    *ls_bapi_te_meoutheaderx-zhtbz  = cns_yes.   "采购立项号
    *ls_bapi_te_meoutheaderx-zcgnum = cns_yes.  "采购任务
    *extensionin-structure = 'BAPI_TE_MEOUTHEADERX'.
    *CALL METHOD cl_abap_container_utilities=>fill_container_c
    *  EXPORTING
    *    im_value               = ls_bapi_te_meoutheaderx
    *  IMPORTING
    *    ex_container           = extensionin-valuepart1
    *  EXCEPTIONS
    *    illegal_parameter_type = 1
    *    OTHERS                 = 2.
    **  EXTENSIONIN-VALUEPART1 = LS_BAPI_TE_MEOUTHEADERX.
    *APPEND extensionin.
    
    *--------------------------------------------------------------------*
    *   Item赋值
    *--------------------------------------------------------------------*
    CLEAR: LS_ITEM,LS_ITEMX,LT_ITEM[],LT_ITEMX[].
    *LOOP AT gt_out INTO gwa_out.
    CLEAR: LS_ITEM, LS_ITEMX.
    
    LS_ITEM-ITEM_NO    = 10."gwa_out-ebelp.  "行号
    LS_ITEM-MATERIAL    = '3TE50G1803J2'." "物料
    LS_ITEM-SHORT_TEXT = 'C.彩电.HU50N3030UWR.P/S..美国'."gwa_out-txz01.  "端文本
    *  ls_item-matl_group = ."gwa_out-matkl.  "物料组
    LS_ITEM-MATL_GROUP      = 'G14001'."gwa_out-werks.  "工厂
    LS_ITEM-PLANT      = '8000'."gwa_out-werks.  "工厂
    LS_ITEM-STGE_LOC      = 'Q012'."gwa_out-werks.  "工厂
    LS_ITEM-TARGET_QTY = 10."gwa_out-ktmng.  "目标数量
    LS_ITEM-PO_UNIT    = 'PC'."gwa_out-meins.
    *  ls_item-po_unit_iso    = ."gwa_out-meins.
    LS_ITEM-NET_PRICE  = 400."gwa_out-netpr.  "净价
    *  ls_item-price_unit = ."gwa_out-peinh.  "价格单位
    *  ls_item-orderpr_un = ."gwa_out-meins.  "订单价格单位(采购)
    *  ls_item-orderpr_un_iso = ."gwa_out-meins.  "订单价格单位(采购)
    *  ls_item-acctasscat = 'U'.            "科目分配类别
    *  ls_item-item_cat   = 0.              "项目类别
    *LS_ITEM-EMATERIAL = '9TD47G11033'.
    APPEND LS_ITEM TO LT_ITEM.
    
    LS_ITEMX-ITEM_NO     = '10'."gwa_out-ebelp.  "行号
    LS_ITEMX-ITEM_NOX    = CNS_YES.  "行号
    LS_ITEMX-MATERIAL = CNS_YES.  "端文本
    LS_ITEMX-SHORT_TEXT = CNS_YES.  "端文本
    *  ls_itemx-matl_group = cns_yes.  "物料组
    LS_ITEMX-MATL_GROUP      = CNS_YES.  "工厂
    LS_ITEMX-PLANT      = CNS_YES.  "工厂
    LS_ITEMX-STGE_LOC      = CNS_YES.  "工厂
    LS_ITEMX-TARGET_QTY = CNS_YES.  "目标数量
    LS_ITEMX-PO_UNIT    = CNS_YES.
    *  ls_itemx-po_unit_iso    = cns_yes.
    
    LS_ITEMX-NET_PRICE  = CNS_YES.  "净价
    *  ls_itemx-price_unit = cns_yes.  "价格单位
    *  ls_itemx-orderpr_un = cns_yes.
    *  ls_itemx-orderpr_un_iso = cns_yes.
    *  ls_itemx-acctasscat = cns_yes.            "科目分配类别
    *  ls_itemx-item_cat   = cns_yes.              "项目类别
    *LS_ITEMX-EMATERIAL   = CNS_YES.
    APPEND LS_ITEMX TO LT_ITEMX.
    *ENDLOOP.
    
    
    *--------------------------------------------------------------------*
    *   Create contract
    *--------------------------------------------------------------------*
    IF SY-SUBRC = 0.
      "无合同号,新建
    
      CALL FUNCTION 'BAPI_CONTRACT_CREATE'
         EXPORTING
           HEADER                = LS_HEADER
           HEADERX               = LS_HEADERX
    *      TESTRUN               = PA_TEST
         IMPORTING
           PURCHASINGDOCUMENT    = L_EBELN
         TABLES
           RETURN                = LT_RETURN
           ITEM                  = LT_ITEM
           ITEMX                 = LT_ITEMX
           EXTENSIONIN           = EXTENSIONIN.
    
    ELSE.
      " 有合同号,修改
      L_EBELN = LS_HEADER-NUMBER.
      CALL FUNCTION 'BAPI_CONTRACT_CHANGE'
        EXPORTING
          PURCHASINGDOCUMENT    = L_EBELN
          HEADER                = LS_HEADER
          HEADERX               = LS_HEADERX
    *      TESTRUN               = PA_TEST
        IMPORTING
          EXP_HEADER            = LS_HEADER
        TABLES
          RETURN                = LT_RETURN
          ITEM                  = LT_ITEM
          ITEMX                 = LT_ITEMX
          EXTENSIONIN           = EXTENSIONIN.
    
    ENDIF.
    
    L_FLAG = 'S'.
    LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E' OR TYPE = 'A'.
      L_FLAG = 'E'.
      EXIT.
    ENDLOOP.
    
    IF L_FLAG EQ 'S'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ENDIF.
    
    *IF l_flag EQ 'S'.
    *  IF g_action EQ cns_create.
    *    MESSAGE s836 WITH l_ebeln.
    *  ELSE.
    *    MESSAGE s837 WITH l_ebeln.
    *  ENDIF.
    *ELSE.
    *  IF g_action EQ cns_create.
    *    MESSAGE s838 WITH l_ebeln.
    *  ELSE.
    *    MESSAGE s839 WITH l_ebeln.
    *  ENDIF.
    *ENDIF.
    
    IF NOT LT_RETURN IS INITIAL.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_STRUCTURE_NAME = 'BAPIRET2'
        TABLES
          T_OUTTAB         = LT_RETURN
        EXCEPTIONS
          OTHERS           = 0.
    ENDIF.

    如果报错E BAPI 1 No instance of object type PurchasingContract has been created. External reference: # 1   PurchasingContract   # 1 HEADER 0 

    说明可能是参数没有填完全,仔细检查一遍。

  • 相关阅读:
    git-format-patch如何指定补丁生成的Subject格式
    openwrt生成的交叉编译器在哪里
    git如何在自动生成补丁时指定补丁名的起始编号
    hyper-v安装虚拟机ubuntu 18.04 64bit后无法使能增强模式怎么办
    Best regards缩写是什么
    git如何自动打补丁
    ubuntu 18.04 64bit build tensorflow report error:C++ compilation of rule '//tensorflow/core/kernels:broadcast_to_op' failed (Exit 4)
    linux安装yaml时出现Could not find a version that satisfies the requirement yaml (from versions: ) No matching distribution found for yaml
    String.format保留小数位数
    BigDecimal的保留位数和四舍五入的方法
  • 原文地址:https://www.cnblogs.com/sapSB/p/13632876.html
Copyright © 2011-2022 走看看