说明:创建,修改内部合同,表头有自定义增强字段。

FORM FRM_PROCESS_SAVE_DATA .
*--------------------------------------------------------------------*
*     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.

*--------------------------------------------------------------------*
*   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.

LS_HEADER-NUMBER    = GWA_OUT-EBELN.  "合同号
  LS_HEADER-VENDOR    = GWA_OUT-LIFNR.  "供应商
  LS_HEADER-DOC_TYPE  = GWA_OUT-BSART.  "协议类型
  LS_HEADER-COMP_CODE = GWA_OUT-BUKRS.  "公司代码
  LS_HEADER-DOC_DATE  = GWA_OUT-BEDAT.  "协议日期
  LS_HEADER-VPER_START  = GWA_OUT-KDATB. "协议起始日期
  LS_HEADER-VPER_END   = GWA_OUT-KDATE.  "协议截至日期
  LS_HEADER-PURCH_ORG  = GWA_OUT-EKORG.  "采购组织
  LS_HEADER-PUR_GROUP  = GWA_OUT-EKGRP.  "采购组
  LS_HEADER-ACUM_VALUE = GWA_OUT-KTWRT.  "目标值
  LS_HEADER-CURRENCY   = GWA_OUT-WAERS.  "货币
  LS_HEADER-LANGU      = SY-LANGU.

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.

*--------------------------------------------------------------------*
*   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    = GWA_OUT-EBELP.  "行号
    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.
    LS_ITEM-NET_PRICE  = 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.              "项目类别
    APPEND LS_ITEM TO LT_ITEM.

LS_ITEMX-ITEM_NO     = GWA_OUT-EBELP.  "行号
    LS_ITEMX-ITEM_NOX    = CNS_YES.  "行号
    LS_ITEMX-SHORT_TEXT = CNS_YES.  "端文本
    LS_ITEMX-MATL_GROUP = CNS_YES.  "物料组
    LS_ITEMX-PLANT      = 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.              "项目类别
    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'.
  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.

ENDFORM.                    " FRM_PROCESS_SAVE_DATA

BAPI:BAPI_CONTRACT_CREATE(内部合同创建)相关推荐

  1. SAP S4 MM前台操作讲解-采购合同创建

    采购合同创建 概念及功能说明 合同是与供应商达成的长期协议,内容包括根据预定条件供应物料或提供服务.其采用预定义期间和预定义总采购量或特定的采购总值. 存在以下合同类型: ● 数量合同MK 签发审批订 ...

  2. esp32使用内部flash创建文件系统

    文章目录 ESP32使用内部flash创建文件系统 声明 简介 参考资料 环境 硬件 步骤 修改flash大小 查看硬件flash大小 复制工程 修改flash大小 添加分区表 复制分区表 修改分区表 ...

  3. 【SAP-CO】内部订单创建的系统操作

    事务代码:KO01 在"创建内部订单:初始屏幕"界面输入订单类型. 说明:订单类型下的"类"指的是订单类别,如销售订单.采购订单.生产订单和内部订单等.通常,内 ...

  4. BAPI : 计划订单的创建,修改和删除批导问题

    #遇见问题: 1.这三个BAPI一般用在批导程序中,有时候赋值过程中就会忽视计划订单的前导零.并且,在SE37里面对BAPI进行测试的时候,不输入前导零BAPI也会返回正确的结果,然而程序里并不行.个 ...

  5. 创建框架协议(价值合同)

    事务代码:ME31K 显示合同:ME33K 查看行项目 BP实现 *&------------------------------------------------------------- ...

  6. VA41 销售合同创建BAPI

    一.事务代码VA41 合同创建的过程和销售订单几乎一致 二.调用BAPI 调用BAPI为BAPI_CONTRACT_CREATEFROMDATA 传参和销售订单BAPI:BAPI_SALESORDER ...

  7. ABAP 销售订单创建BAPI:BAPI_SALESORDER_CREATEFROMDAT2总结

    1.运用过程的问题与原因 1.1报错:请输入买方或运达方 原因:其实就是订单抬头没有买方,主要是因为销售订单合作伙伴表ORDER_PARTNERS中字段ITM_NUMBER销售和分销凭证的项目号给赋值 ...

  8. 企业微信外部群和内部群有什么区别?如何创建外部群

    一.企业微信外部群和内部群的区别 1.成员来源渠道不同 企业微信内部群的群成员必须是同一公司的企业微信用户,而外部群是可以同时含有不同企业的企业微信用户与个人微信用户的. PS:需要注意的是,因为微信 ...

  9. 【ABAP】固定资产创建BAPI无法自动写入增强字段处理

    固定资产创建BAPI无法自动写入增强字段处理 通过实现增强点"AIST0002"给SAP固定资产主数据屏幕添加自定义字段(增强实现这里省略). (下图的增强字段仅供参考) 目前需要 ...

最新文章

  1. springboot中使用ApplicationListener和ApplicationEvent /@EventListener监听事件
  2. DCC-GARCH模型及动态CoVaR计算 案例与代码
  3. python灰度处理_python 简单图像处理(14) 灰度图腐蚀和膨胀,开运算、闭运算...
  4. 基于VTD自带的场景 进行场景搭建
  5. 我爱淘冲刺阶段站立会议每天任务5
  6. 药品计算机系统操作知识培训,新版GSP:计算机系统专业知识培训测试题(6)
  7. CRC校验原理及其C语言实现
  8. 5个省,7大 “5G+智能电网” 落地应用案例!
  9. 摄影测量:ERDAS自动、手动和导入特征点对(超详细)
  10. 微信开发(3)微信支付
  11. vue使用FullCalendar插件实现会议预约功能,个性化实现周视图
  12. windows程序设计(一)
  13. 计算机的真正发明者,楚泽真正的“计算机之父”
  14. C++使用ADODB连接数据库
  15. 魔众文库系统 v3.5.0 预览页数调整,批量操作命令,多处优化
  16. 不知道;不知道;我知道了;那我也…
  17. 净水器的数字电路理论基础
  18. PHP获取手机号归属地,PHP获取2017最新手机号段属地类
  19. 计算机全国统考深圳考点,2019深圳市公务员考试笔试考点及考场安排表汇总(各考区)-深圳市考试院...
  20. 作业:会员制营销|Email营销(关于山姆公司的)

热门文章

  1. 给公司员工上的培训1——微观规范
  2. VS2002 与 IIS6.0的一个bug
  3. 为什么产品经理总在焦虑
  4. 【人物】徐小平:远离创业的3个死亡陷阱
  5. 利用jvisualvm分析JVM,进行性能调优
  6. Linux下防火墙开放端口
  7. CentOS6.5 gcc升级到4.8.2
  8. Intellij导入子项目时,maven列表子项目灰色不可用---解决方法
  9. Spark UDF变长参数的二三事儿
  10. Hibernate插入错误:GenericJDBCException: could not insert: