• ME51N 创建采购申请


    1业务说明

    当寻源后,将寻源结果汇总,并创建采购申请,之后据此创建采购订单。

    此文档使用BAPI:BAPI_REQUISITION_CREATE创建采购申请

    2前台实现

    事务代码:ME51N

     

    3代码实现

    3.1调用BAPI

     

    传入相应的行项目数据

     

    导入BAPI

     

    3.2扩展字段

    在EBAN表中增加自定义字段

     

    在结构BAPI_TE_REQUISITION_ITEM中定义采购申请项目编号字段,该字段必须有,也必须传值。将结构CI_EBANDB引用进来。

     

    将行项目和申请原因等字段传入结构中,再赋值给BAPI扩展内表GT_EXTENSION,传入BAPI中

     

    创建后,采购申请原因已经传入成功

     

    3.3创建服务类采购申请

    创建服务类申请没有物料号,输入相应的数据

     

    首先创建三个变量,用于存储几个编号

     

    在行项目中需要传入软件包编号

     

    输入总账科目和成本中心,并赋值序列号

     

    在服务行中,先输入软件父包

     

    再添加软件子包

     

    在REQUISITION_SRV_ACCASS_VALUES中添加软件子包对应的信息

     

    最后调用BAPI创建成功

     

    软件包的流水号维护在这个对象中,但是在BAPI赋值的时候,直接赋值0000000001即可,如果通过流水号获取赋值进去,反倒不成功。

    原因猜测可能是,系统每次都自动获取,不采用付的值,但是如果使用了流水号函数就打乱了系统自己赋值的逻辑。所以在BAPI中赋值0000000001和子包在此上+1,将服务行的父包和子包关联起来即可。

     

    采购申请保存在EBAN表中,服务保存在ESLL表中。

    3.4源代码

    "-----------------------------@斌将军-----------------------------
    DATA:LV_NUMBER    TYPE BAPIMEREQHEADER-PREQ_NO,
         GT_ITEM      TYPE TABLE OF BAPIEBANC,
         GS_ITEM      TYPE BAPIEBANC,
         GT_EXTENSION TYPE TABLE OF BAPIPAREX,
         GS_EXTENSION TYPE BAPIPAREX,
         GT_RETURN    TYPE TABLE OF BAPIRETURN,
         GS_RETURN    TYPE BAPIRETURN.
    
    DATA:LV_MESSAGE TYPE CHAR200,
         LV_CHECK   TYPE CHAR1.
    
    CLEAR:GS_ITEM.
    GS_ITEM-PREQ_ITEM = '10'."行项目号
    GS_ITEM-DOC_TYPE = 'CKSG'."采购申请凭证类型
    GS_ITEM-PUR_GROUP = 'C10'."采购组
    GS_ITEM-MATERIAL = '405481'."物料号
    GS_ITEM-PLANT     = '2000'.   "工厂
    GS_ITEM-STORE_LOC     = '2007'.   "库存地点
    GS_ITEM-QUANTITY  = '1'."数量
    GS_ITEM-PREQ_DATE = SY-DATUM."需求日期
    GS_ITEM-TRACKINGNO = ''."需求跟踪号
    GS_ITEM-FIXED_VEND = ''."固定供应商
    GS_ITEM-PREQ_NAME = 'SRM'."申请者
    GS_ITEM-VAL_TYPE = 'CR'."评估类型
    GS_ITEM-DELIV_DATE = '20200129'."交货日期
    GS_ITEM-UNIT = 'PC'."计量单位
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = GS_ITEM-MATERIAL"物料号
      IMPORTING
        OUTPUT = GS_ITEM-MATERIAL.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = GS_ITEM-FIXED_VEND"固定供应商
      IMPORTING
        OUTPUT = GS_ITEM-FIXED_VEND.
    
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT    = GS_ITEM-UNIT"计量单位
        LANGUAGE = SY-LANGU
      IMPORTING
        OUTPUT   = GS_ITEM-UNIT.
    APPEND GS_ITEM TO GT_ITEM.
    
    CLEAR:GS_EXTENSION.
    GS_EXTENSION-STRUCTURE = 'BAPI_TE_REQUISITION_ITEM'.
    GS_EXTENSION-VALUEPART1 = GS_ITEM-PREQ_ITEM && GS_ITEM-PREQ_NAME."申请原因
    APPEND GS_EXTENSION TO GT_EXTENSION.
    
    CLEAR:LV_NUMBER.
    CALL FUNCTION 'BAPI_REQUISITION_CREATE'
      EXPORTING
    *   SKIP_ITEMS_WITH_ERROR                = gt_item
        AUTOMATIC_SOURCE  = ' '
      IMPORTING
        NUMBER            = LV_NUMBER
      TABLES
        REQUISITION_ITEMS = GT_ITEM
    *   REQUISITION_ACCOUNT_ASSIGNMENT       =
    *   REQUISITION_ITEM_TEXT                =
    *   REQUISITION_LIMITS                   =
    *   REQUISITION_CONTRACT_LIMITS          =
    *   REQUISITION_SERVICES                 =
    *   REQUISITION_SRV_ACCASS_VALUES        =
        RETURN            = GT_RETURN
    *   REQUISITION_SERVICES_TEXT            =
    *   REQUISITION_ADDRDELIVERY             =
        EXTENSIONIN       = GT_EXTENSION.
    
    LV_CHECK = 'S'.
    LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE = 'A' OR TYPE = 'E'.
      LV_MESSAGE = LV_MESSAGE && GS_RETURN-MESSAGE.
      LV_CHECK = 'E'.
    ENDLOOP.
    
    IF LV_CHECK = 'S'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
      WRITE:LV_NUMBER.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ENDIF. 
    
    
    ------------------服务类采购申请源代码---------------------
    *&---------------------------------------------------------------------*
    *& Report  ZLCCTEST019
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    REPORT ZLCCTEST019.
    
    DATA:GT_ITEM           TYPE TABLE OF BAPIEBANC,
         GS_ITEM           TYPE BAPIEBANC,
         GT_SER            TYPE TABLE OF BAPIESLLC,
         GS_SER            TYPE BAPIESLLC,
         GT_SER_VALUES     TYPE TABLE OF BAPIESKLC,
         GS_SER_VALUES     TYPE BAPIESKLC,
         GT_WBS            TYPE TABLE OF BAPIEBKN,
         GS_WBS            TYPE  BAPIEBKN,
         GT_RETURN         TYPE TABLE OF BAPIRETURN,
         L_NO1             TYPE BAPIMEREQHEADER-PREQ_NO,
         LV_MESSAGE        TYPE CHAR200,
         LV_PCKG_NO        TYPE BAPIEBANC-PCKG_NO VALUE 0000000001, "软件包编号
         LV_ACCASSERIAL_NO TYPE BAPIEBKN-SERIAL_NO VALUE 01, "序列号
         LV_LINE_NO        TYPE BAPIESLLC-LINE_NO VALUE 1. "内部行编号
    
    
    GS_ITEM-PREQ_ITEM = '00010'.
    GS_ITEM-DOC_TYPE = 'CKSR'.
    GS_ITEM-PLANT = '2000'.
    GS_ITEM-QUANTITY = '1'."数量
    GS_ITEM-PREQ_NAME = '123'."申请者
    GS_ITEM-UNIT = 'LE'."计量单位
    GS_ITEM-ACCTASSCAT = 'W'."科目分配类别
    GS_ITEM-ITEM_CAT_EXT = 'D'."科目分配类别
    GS_ITEM-SHORT_TEXT = '123'."短文本
    GS_ITEM-MAT_GRP = '&DB001'."物料组
    GS_ITEM-PREQ_DATE = '20210307'."需求日期
    GS_ITEM-DELIV_DATE = '20210307'."需求日期
    GS_ITEM-DELIV_DATE = '20210307'."需求日期
    GS_ITEM-PCKG_NO = LV_PCKG_NO."软件包编号
    GS_ITEM-GR_IND = 'X'.
    GS_ITEM-GR_NON_VAL = 'X'.
    GS_ITEM-IR_IND = 'X'.
    APPEND GS_ITEM  TO GT_ITEM.
    
    GS_WBS-PREQ_ITEM = '00010'.
    GS_WBS-SERIAL_NO = LV_ACCASSERIAL_NO.
    GS_WBS-G_L_ACCT = '6601039900'.
    GS_WBS-COST_CTR = '0BE000'.
    APPEND GS_WBS  TO GT_WBS.
    
    GS_SER-PCKG_NO = LV_PCKG_NO."软件包编号
    GS_SER-LINE_NO = LV_LINE_NO."内部行编号
    GS_SER-OUTL_IND = 'X'."标识符:概要行
    GS_SER-SUBPCKG_NO = LV_PCKG_NO + 1."分包编号
    GS_SER-FROM_LINE = 1."下限
    APPEND GS_SER TO GT_SER.
    
    CLEAR:GS_SER.
    GS_SER-PCKG_NO = LV_PCKG_NO + 1."软件包编号
    GS_SER-LINE_NO = LV_LINE_NO + 1."内部行编号
    GS_SER-EXT_LINE = 0000000010."行号
    GS_SER-QUANTITY = 1."数量
    GS_SER-BASE_UOM = 'LE'."计量单位
    GS_SER-PRICE_UNIT = 1."价格单位
    GS_SER-NET_VALUE = NETPR * QUANTITY."净值
    GS_SER-SHORT_TEXT = 123."短文本
    GS_SER-MATL_GROUP = '&DB001'."物料组
    GS_SER-GR_PRICE = 10."总价
    APPEND GS_SER TO GT_SER.
    
    GS_SER_VALUES-PCKG_NO = LV_PCKG_NO + 1."软件包编号
    GS_SER_VALUES-LINE_NO = LV_LINE_NO + 1."内部行编号
    GS_SER_VALUES-SERNO_LINE = 01."服务行
    GS_SER_VALUES-SERIAL_NO = GS_SER_VALUES-SERNO_LINE."帐户分配的顺序编号
    GS_SER_VALUES-PERCENTAGE = 100."帐户分配值分配百分比
    GS_SER_VALUES-NET_VALUE = NETPR * QUANTITY."项目净值
    GS_SER_VALUES-QUANTITY = 1."数量带标记
    APPEND GS_SER_VALUES TO GT_SER_VALUES.
    
    CALL FUNCTION 'BAPI_REQUISITION_CREATE'
      EXPORTING
    *   SKIP_ITEMS_WITH_ERROR          = gt_item
        AUTOMATIC_SOURCE               = ' '
      IMPORTING
        NUMBER                         = L_NO1
      TABLES
        REQUISITION_ITEMS              = GT_ITEM
        REQUISITION_ACCOUNT_ASSIGNMENT = GT_WBS
    *   REQUISITION_ITEM_TEXT          =
    *   REQUISITION_LIMITS             =
    *   REQUISITION_CONTRACT_LIMITS    =
        REQUISITION_SERVICES           = GT_SER
        REQUISITION_SRV_ACCASS_VALUES  = GT_SER_VALUES
        RETURN                         = GT_RETURN
    *   REQUISITION_SERVICES_TEXT      =
    *   REQUISITION_ADDRDELIVERY       =
    *   EXTENSIONIN                    = GT_EXTENSION1
      .
    
    CLEAR:LV_MESSAGE.
    LOOP AT GT_RETURN INTO DATA(GL_RETURN) WHERE TYPE = 'E' OR TYPE = 'A'.
      CONCATENATE LV_MESSAGE '/' GL_RETURN-MESSAGE INTO LV_MESSAGE.
      CLEAR GL_RETURN.
    ENDLOOP.
    IF LV_MESSAGE IS INITIAL AND L_NO1 IS NOT INITIAL.
    *   提交事务
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
    ENDIF.
    
    WRITE :L_NO1.
    "-----------------------------@斌将军-----------------------------
  • 相关阅读:
    MVC<2:路由映射原理2>
    分支限界>0/1背包 小强斋
    分支限界>装载问题 小强斋
    解空间树搜索 及 最优解 小强斋
    算法>NP难度和NP完全的问题 小强斋
    算法>NP难度和NP完全的问题 小强斋
    分支限界>装载问题 小强斋
    分支限界>0/1背包 小强斋
    分支限界>15谜问题 小强斋
    分支限界>15谜问题 小强斋
  • 原文地址:https://www.cnblogs.com/BinGeneral/p/16058803.html
Copyright © 2020-2023  润新知