事务代码:ME31K

显示合同:ME33K

查看行项目

  1. BP实现

*&---------------------------------------------------------------------*
*& Report YTEST004
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ytest004.

*--------------------------------------------------------------------*
*     Define BAPI parameters
*--------------------------------------------------------------------*
DATA: l_flag 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.

ls_header-number     = '3190400007'.  "合同号
ls_header-vendor     = 'L1900001'.  "供应商
ls_header-doc_type   = 'WK'.  "协议类型
*ls_header-agreement  = '3190400007' . " 协议编号
ls_header-comp_code  = '1000'.  "公司代码
ls_header-doc_date   = sy-datum.  "协议日期
ls_header-vper_start = sy-datum. "协议起始日期
ls_header-vper_end   = sy-datum + 10.  "协议截至日期
ls_header-purch_org  = '8000'.  "采购组织
ls_header-pur_group  = 'E01'.  "采购组
ls_header-acum_value = 100000. "目标值
ls_header-currency   = 'USD'.  "货币
ls_header-langu      = sy-langu.

ls_headerx-number     = 'X'.  "合同号
ls_headerx-vendor     = 'X'.  "供应商
ls_headerx-doc_type   = 'X'.  "协议类型
*ls_headerx-agreement  = 'X' ." 协议编号
ls_headerx-comp_code  = 'X'.  "公司代码
ls_headerx-doc_date   = 'X'.  "协议日期
ls_headerx-vper_start = 'X'. "协议起始日期
ls_headerx-vper_end   = 'X'.  "协议截至日期
ls_headerx-purch_org  = 'X'.  "采购组织
ls_headerx-pur_group  = 'X'.  "采购组
ls_headerx-acum_value = 'X'.  "目标值
ls_headerx-currency   = 'X'.  "货币
ls_headerx-langu      = 'X'.

*--------------------------------------------------------------------*
*   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    = '00010'.     "行号
ls_item-material   = 'M5100001'.       物料
*  ls_item-short_text = gwa_out-txz01.     "端文本
*  ls_item-matl_group = gwa_out-matkl.     "物料组
*  ls_item-plant      = gwa_out-werks.     "工厂
*  ls_item-target_qty = gwa_out-ktmng.     "目标数量
*  ls_item-po_unit    = gwa_out-meins.     " 采购订单计量单位
*  ls_item-po_unit_iso = gwa_out-meins.    " ISO代码中的定单单位

ls_item-net_price  = 100.     净价
*  ls_item-price_unit = 'L'.      " 价格单位
ls_item-orderpr_un = 'L'.       订单价格单位(采购)
ls_item-tax_code = 'J0'.        税码
ls_item-orderpr_un_iso = 'L'.   "订单价格单位(采购)
*  ls_item-acctasscat = 'U'.               "科目分配类别
*  ls_item-item_cat   = 0.                 "项目类别
APPEND ls_item TO lt_item.

ls_itemx-item_no     = '00010'.  "行号
ls_itemx-item_nox    = 'X'.  "行号
ls_itemx-material     = 'X'.       物料
*  ls_itemx-short_text  = 'X'.  "端文本
*  ls_itemx-matl_group  = 'X'.  "物料组
*  ls_itemx-plant       = 'X'.  "工厂
*  ls_itemx-target_qty  = 'X'.  "目标数量
*  ls_itemx-po_unit     = 'X'.
*  ls_itemx-po_unit_iso = 'X'.

ls_itemx-net_price   = 'X'.  "净价
*  ls_itemx-price_unit  = 'X'.  "价格单位
ls_itemx-orderpr_un  = 'X'.
ls_itemx-tax_code = 'X'.      税码
ls_itemx-orderpr_un_iso = 'X'.
*  ls_itemx-acctasscat = 'X'.            "科目分配类别
*  ls_itemx-item_cat   = 'X'.              "项目类别

APPEND ls_itemx TO lt_itemx.
*ENDLOOP.

*--------------------------------------------------------------------*
*   Create contract
*--------------------------------------------------------------------*
*IF g_action = cns_create.
"无合同号,新建

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'
    EXPORTING
      wait = 'X'.
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.

FUNCTION zfmm04.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(LT_HT) TYPE  ZTTMM04
*"  EXPORTING
*"     VALUE(LS_SIGN) TYPE  ZESIGN
*"     VALUE(LS_MESSAGE) TYPE  ZEMESSAGE
*"     VALUE(O_EBELN) TYPE  EBELN
*"----------------------------------------------------------------------
  DATA:l_ebeln         TYPE bapimeoutheader-number,         "#EC NEEDED
       gs_ekko         TYPE ekko,

extensionin     LIKE bapiparex
                      OCCURS 0 WITH HEADER LINE,
       gt_extensionout TYPE bapiparex_t,
       gt_return       TYPE bapiret2_t,
       gs_return       TYPE bapiret2,

gs_header       TYPE bapimeoutheader,
       gs_headerx      TYPE bapimeoutheaderx,

gs_item         TYPE bapimeoutitem,
       gt_item         TYPE bapimeout_t_item,

gs_itemx        TYPE bapimeoutitemx,
       gt_itemx        TYPE bapimeout_t_itemx.

DATA: gt_ht TYPE STANDARD TABLE OF zsmm04,
        gs_ht TYPE zsmm04.
  DATA: index    TYPE ebelp.
  DATA: l_werks  TYPE werks_d.
  DATA: l_bukrs TYPE bukrs.
  gt_ht = lt_ht.

READ TABLE gt_ht INTO gs_ht INDEX 1.
  IF sy-subrc = 0.
    l_werks = gs_ht-werks.
  ENDIF.

SELECT
    SINGLE
    bukrs
    INTO l_bukrs
    FROM t001k JOIN t001w ON t001k~bwkey = t001w~bwkey
      WHERE t001w~werks = l_werks.

SORT gt_ht BY lifnr evrtn evart ekorg ekgrp kdatb .

index = 10.
  LOOP AT gt_ht INTO gs_ht.

抬头数据
    gs_header-number     = gs_ht-evrtn.  "合同号
    gs_header-vendor     = gs_ht-lifnr.  "供应商
    gs_header-doc_type   = gs_ht-evart.  "协议类型
    gs_header-comp_code  = l_bukrs.      "公司代码
    gs_header-doc_date   = gs_ht-kdatb.  "协议日期
    gs_header-vper_start = gs_ht-kdatb.  "协议起始日期
    gs_header-vper_end   = gs_ht-kdate.  "协议截至日期
    gs_header-purch_org  = gs_ht-ekorg.  "采购组织
    gs_header-pur_group  = gs_ht-ekgrp.  "采购组
    gs_header-acum_value = gs_ht-ktwrt.  "目标值
    gs_header-currency   = gs_ht-waers.  "货币
    gs_header-langu      = sy-langu.

gs_headerx-number     = 'X'.  "合同号
    gs_headerx-vendor     = 'X'.  "供应商
    gs_headerx-doc_type   = 'X'.  "协议类型
    gs_headerx-comp_code  = 'X'.  "公司代码
    gs_headerx-doc_date   = 'X'.  "协议日期
    gs_headerx-vper_start = 'X'. "协议起始日期
    gs_headerx-vper_end   = 'X'.  "协议截至日期
    gs_headerx-purch_org  = 'X'.  "采购组织
    gs_headerx-pur_group  = 'X'.  "采购组
    gs_headerx-acum_value = 'X'.  "目标值
    gs_headerx-currency   = 'X'.  "货币
    gs_headerx-langu      = 'X'.

行项目数据
    gs_item-item_no    = index.                 "行号
    gs_item-material   = gs_ht-matnr.           "物料
    gs_item-net_price  = gs_ht-netpr.           净价
*    gs_item-TARGET_QTY = 10.                   " 目标数量
    gs_item-plant      = gs_ht-werks.           工厂
*    gs_item-price_unit = 1.                    " 价格单位
    gs_item-orderpr_un = gs_ht-bprme.           订单价格单位(采购)
    gs_item-tax_code = gs_ht-mwskz.             税码
*    gs_item-orderpr_un_iso = 'L'.              "采购订单价格单位的 ISO 代码
    gs_item-acctasscat = gs_ht-epstp.           "科目分配类别
    gs_item-item_cat   = gs_ht-knttp.           "项目类别
    APPEND gs_item TO gt_item.

gs_itemx-item_no        = index.          "行号
    gs_itemx-item_nox       = 'X'.              "行号
    gs_itemx-material       = 'X'.              物料
    gs_itemx-net_price   = 'X'.                 "净价
*    gs_itemx-TARGET_QTY  = 'X'.                "目标数量
    gs_itemx-plant      = gs_ht-werks.          工厂
*    gs_itemx-price_unit  = 'X'.                "价格单位
    gs_itemx-orderpr_un  = 'X'.                 "订单价格单位(采购)
    gs_itemx-tax_code = 'X'.                    "税码
*    gs_itemx-orderpr_un_iso = 'X'.             "采购订单价格单位的 ISO 代码
    gs_itemx-acctasscat = 'X'.                  "科目分配类别
    gs_itemx-item_cat   = 'X'.                  "项目类别
    APPEND gs_itemx TO gt_itemx.

index = index + 10.
    AT END OF kdatb.
      CALL FUNCTION 'BAPI_CONTRACT_CREATE'
        EXPORTING
          header             = gs_header
          headerx            = gs_headerx
*         TESTRUN            = PA_TEST
        IMPORTING
          purchasingdocument = l_ebeln
        TABLES
          return             = gt_return
          item               = gt_item
          itemx              = gt_itemx
          extensionin        = extensionin.
      index = 10.
    ENDAT.
    LOOP AT gt_return INTO gs_return WHERE type = 'E' OR type = 'A'.
      ls_sign = 'E'.
    ENDLOOP.

IF ls_sign <> 'E'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      ls_sign = 'S'.
      ls_message = '合同创建成功'.
      o_EBELN = l_ebeln.
    ELSE.
      ls_sign = 'E'.
      LOOP AT gt_return INTO gs_return WHERE type = 'E' OR type = 'A' .
        ls_message = ls_message && gs_return-message.
      ENDLOOP.
    ENDIF.

CLEAR gs_ht.
  ENDLOOP.

CLEAR index.
  CLEAR ls_sign.

ENDFUNCTION.

创建框架协议(价值合同)相关推荐

  1. 直接创建框架协议、合同

    创建框架协议.合同,可能有多种前端起因,但也有业务场景需要直接创建的. 系统功能的设计匠心独运,极具人性化,对供应商.物料.协议类型.项目类别.税率等项的输入,现场推送实现了"可能.必要.最 ...

  2. SAP MM框架协议,合同

    1 me31k 框架协议,数量合同,价值合同 有效日期 创建:ME31K 修改:ME32K 显示:ME33K 审批:ME35K 可以在工厂条件总览里加入多个工厂,针对多个工厂框架协议 2 定义一个订单 ...

  3. 框架协议、合同的下达

    框架协议.合同分两种:执行合同和非执行合同. 执行合同属于一单一议.单次.立即(或近期)据以创建采购订单的合同(后文详解). 非执行合同属于多次.较长期间内,逐次创建采购订单的合同. 非执行合同在创建 ...

  4. 修改并完善框架协议、合同的类型、有效期及目标值等

    对于已创建的框架协议.合同,在审批发布前,还可以修改其合同类型.有效期.目标值等信息.

  5. SD从零开始10 框架协议(Outline Agreement)—合同/计划协议

    一. SD中的合同/框架协议 (2015-05-24 21:41:50) 转载▼ 标签: sap sd 合同/框架协议 分类: ERP.MES与企业信息化 一. 合同有数量合同.价值合同.服务合同.主 ...

  6. 使用BAPI_CONTRACT_CREATE创建采购合同框架协议

    *&---------------------------------------------------------------------* *& Report  ZMMF201 ...

  7. 五、框架协议——合同

    1.框架协议的概念 ➽框架协议(Outline Agreement)是一个SAP术语,它用于描述与供应商之间的长期采购行为,是一个与供应商的长期约定,可以依据与供应商预先确定好的价格条件和服务条款,为 ...

  8. 配额协议与框架协议-合同

    1)配额协议是指 由采购申请单转采购订单的时候根据配额比例来把此采购单分配给指定的供应商,谁的配额比例越低就分配给谁. 配额比例=已分配配额数量+配额基数/配额. 2)草案协议(数量合同)是指给指定的 ...

  9. SAP 框架协议(outline agreements)

    框架协议:签订长期的合同,产品范围比较固定,供应商的特点比较固化 A.合同(contract 事务码ME31K):主要包括数量.价值的合同,有限制管控的作用 数量合同:后续参考合同协议做PO,数量累计 ...

最新文章

  1. VS生成dll和lib库文件
  2. Linux下main函数带参数问题和atoi函数详解
  3. 台式计算机M丅BF是什么,中南民族大学计算机系统结构试卷
  4. PLC和MCU单片机有什么差异
  5. .Net中EF通用数据层小结
  6. python的localtime函数_python的内置函数time
  7. 卓有成效的管理者(笔记)——有效的决策
  8. ModifyStyle, ModifyStyleEx
  9. linux怎么看本机ip,linux下查看本机IP的两种方法
  10. 微信小程序里面嵌套的h5使用微信sdk配置踩坑
  11. 小程序 web-view 打开 微信公众号文章
  12. VBA---查单元格,行/列,区域边界情况,用end(xlup) .row , end(xldown) .row 等
  13. 联想拯救者Y7000P更新BIOS
  14. 工作遇坑-Cannot allocate memory问题解决方法
  15. LDAP应用:OpenLDAP集成到Jumpserver
  16. 小姐姐太强了,动图展示 10 大 Git 命令,不会都难
  17. Jetpack Compose——remember、mutableStateOf、rememberSaveable
  18. Java——包的定义及使用
  19. 中国女篮63-51战胜欧洲劲旅拉脱维亚 获钻石杯季军
  20. Linux通过修改date命令,验证shadow的密码有效期,提示期和宽限期

热门文章

  1. Laravel之Contracts和Facades详解
  2. 【JVM】JVM07(类加载阶段详细解析)
  3. 计算机无节电模式,电脑无故进入节电模式是怎么回事
  4. AttifyOS 3.0下载(固件提取)物联网评估测试工具集成系统
  5. c语言打印地址的格式错误,正确的格式说明符打印指针或地址?
  6. ios+html5+选取照片,iOS 自定义图片选择器 1 - PhotoKit
  7. html盒子毛玻璃效果,css毛玻璃效果(外加background属性)
  8. ARM各系列CPU与STM32之间的关系
  9. 读书笔记之计算机操作系统的启动——《操作系统真相还原》
  10. Fedex寄快递流程