REPORT  Z_CREATE_PR.

DATA: BEGIN OF GT_DATA1 OCCURS 0,
            BSART   TYPE STRING, "凭证类型
            BNFPO   TYPE STRING, "项目
*            KNTTP   TYPE STRING, "科目分配类别
            MATNR   TYPE STRING,  "商品代码
*            TXZ01   TYPE STRING, "短文本
            MENGE   TYPE STRING, "数量
            MEINS   TYPE STRING, "单位
            EEIND   TYPE STRING, "交货日期
*            MATKL   TYPE STRING, "物料组
            WERKS   TYPE STRING, "工厂
            EKGRP   TYPE STRING, "采购组
            AFNAM   TYPE STRING, "申请者
            BEDNR   TYPE STRING, "需求跟踪号
            SAKTO   TYPE STRING, "总帐科目
            KOSTL   TYPE STRING, "成本中心
            ANLN1   TYPE STRING, "资产
            AUFNR   TYPE STRING, "订单
            PREIS   TYPE STRING,  "评估价格
            WAERS   TYPE STRING, "币种
            PEINH   TYPE STRING, "价格单位
            DISPO   TYPE STRING, "MRP控制者
            STR1    TYPE STRING,"行项目文本-传送文本
            STR2    TYPE STRING,"行项目文本-预算年度
            STR3    TYPE STRING,"行项目文本-资产类别
        END OF GT_DATA1.

DATA: BEGIN OF GT_DATA OCCURS 0,
            BEDNR   TYPE STRING, "需求跟踪号
            BSART   TYPE STRING, "凭证类型
            BNFPO   TYPE STRING, "项目
*            KNTTP   TYPE STRING, "科目分配类别
            MATNR   TYPE STRING,  "商品代码
*            TXZ01   TYPE STRING, "短文本
            MENGE   TYPE STRING, "数量
            MEINS   TYPE STRING, "单位
            EEIND   TYPE STRING, "交货日期
*            MATKL   TYPE STRING, "物料组
            WERKS   TYPE STRING, "工厂
            EKGRP   TYPE STRING, "采购组
            AFNAM   TYPE STRING, "申请者
            SAKTO   TYPE STRING, "总帐科目
            KOSTL   TYPE STRING, "成本中心
            ANLN1   TYPE STRING, "资产
            AUFNR   TYPE STRING, "订单
            PREIS   TYPE STRING,  "评估价格
            WAERS   TYPE STRING, "币种
            PEINH   TYPE STRING, "价格单位
            DISPO   TYPE STRING, "MRP控制者
            STR1    TYPE STRING,"行项目文本-传送文本
            STR2    TYPE STRING,"行项目文本-预算年度
            STR3    TYPE STRING,"行项目文本-资产类别
        END OF GT_DATA.

DATA: BEGIN OF GT_OUT OCCURS 0,
            TEXT(255),
          END OF GT_OUT.

DATA: PR_ITEM LIKE TABLE OF  BAPIEBANC WITH HEADER LINE,
          PR_ACCOUNT LIKE TABLE OF BAPIEBKN WITH HEADER LINE,
          PR_ITEM_ID LIKE TABLE OF BAPIEBANTX WITH HEADER LINE,
          PR_RETURN LIKE TABLE OF BAPIRETURN WITH HEADER LINE.
DATA: L_RETURN LIKE PR_RETURN.
DATA: LV_MESSAGE(255).

DATA: PR_NO TYPE BAPIEBANC-PREQ_NO.
DATA: BNFPO TYPE BNFPO.
DATA: MATNR TYPE MATNR.
DATA: PP_FILE TYPE STRING.

PARAMETERS:P_FILE(128) .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  PERFORM GET_FILE.

START-OF-SELECTION.
  PERFORM GET_DATA.
  PERFORM CREATE_PR.
  PERFORM WRITE_OUT.
*&---------------------------------------------------------------------*
*&      Form  GET_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_FILE .
  CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
            DEF_FILENAME     = P_FILE
            MASK             = ',*.txt,*.TXT.'
*'',*.xls,*.XLS.'如果读入txt文件,在后边就需要用函数
*  CALL FUNCTION 'WS_UPLOAD'
            MODE             = 'O'
            TITLE            = 'File Name'
       IMPORTING
            FILENAME         =  P_FILE
       EXCEPTIONS
            INV_WINSYS       = 1
            NO_BATCH         = 2
            SELECTION_CANCEL = 3
            SELECTION_ERROR  = 4
            OTHERS           = 5.
  PP_FILE = P_FILE.

ENDFORM.                    " GET_FILE
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                      = PP_FILE
     FILETYPE                      = 'ASC'
     HAS_FIELD_SEPARATOR           = 'X'
*   HEADER_LENGTH                 = 0
     READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
    TABLES
      DATA_TAB                      = GT_DATA1
   EXCEPTIONS
     FILE_OPEN_ERROR               = 1
     FILE_READ_ERROR               = 2
     NO_BATCH                      = 3
     GUI_REFUSE_FILETRANSFER       = 4
     INVALID_TYPE                  = 5
     NO_AUTHORITY                  = 6
     UNKNOWN_ERROR                 = 7
     BAD_DATA_FORMAT               = 8
     HEADER_NOT_ALLOWED            = 9
     SEPARATOR_NOT_ALLOWED         = 10
     HEADER_TOO_LONG               = 11
     UNKNOWN_DP_ERROR              = 12
     ACCESS_DENIED                 = 13
     DP_OUT_OF_MEMORY              = 14
     DISK_FULL                     = 15
     DP_TIMEOUT                    = 16
     OTHERS                        = 17
            .
  IF SY-SUBRC <> 0.
    CASE SY-SUBRC.
      WHEN 1.MESSAGE 'FILE_OPEN_ERROR ' TYPE 'E'.
      WHEN 2.MESSAGE 'FILE_READ_ERROR ' TYPE 'E'.
      WHEN 3.MESSAGE 'NO_BATCH' TYPE 'E'.
      WHEN 4.MESSAGE 'GUI_REFUSE_FILETRANSFER  ' TYPE 'E'.
      WHEN 5.MESSAGE 'INVALID_TYPE ' TYPE 'E'.
      WHEN 6.MESSAGE ' NO_AUTHORITY' TYPE 'E'.
      WHEN 7.MESSAGE 'UNKNOWN_ERROR' TYPE 'E'.
      WHEN 8.MESSAGE 'BAD_DATA_FORMAT ' TYPE 'E'.
      WHEN 9.MESSAGE 'HEADER_NOT_ALLOWED' TYPE 'E'.
      WHEN 10.MESSAGE 'SEPARATOR_NOT_ALLOWED' TYPE 'E'.
      WHEN 11.MESSAGE 'HEADER_TOO_LONG ' TYPE 'E'.
      WHEN 12.MESSAGE 'UNKNOWN_DP_ERROR' TYPE 'E'.
      WHEN 13.MESSAGE ' ACCESS_DENIED ' TYPE 'E'.
      WHEN 14.MESSAGE 'DP_OUT_OF_MEMORY ' TYPE 'E'.
      WHEN 15.MESSAGE 'DISK_FULL  ' TYPE 'E'.
      WHEN 16.MESSAGE 'DP_TIMEOUT' TYPE 'E'.
      WHEN 17.MESSAGE ' OTHERS  ' TYPE 'E'.
      WHEN OTHERS.
    ENDCASE.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  LOOP AT GT_DATA1.
    MOVE-CORRESPONDING GT_DATA1 TO GT_DATA.
    APPEND GT_DATA.
    CLEAR: GT_DATA,GT_DATA1.
  ENDLOOP.
ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  CREATE_PR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM CREATE_PR .
  LOOP AT GT_DATA.
    BNFPO = GT_DATA-BNFPO.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = BNFPO
      IMPORTING
        OUTPUT = BNFPO.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = GT_DATA-MATNR
      IMPORTING
        OUTPUT = MATNR.
    PR_ITEM-DOC_TYPE   = GT_DATA-BSART. "凭证类型
    PR_ITEM-PREQ_ITEM  = BNFPO. "项目
*    PR_ITEM-ACCTASSCAT = GT_DATA-KNTTP."科目分配类别
    PR_ITEM-MATERIAL = MATNR."商品代码
*    PR_ITEM-SHORT_TEXT = GT_DATA-TXZ01."短文本
    PR_ITEM-QUANTITY  = GT_DATA-MENGE. "数量
    PR_ITEM-UNIT = GT_DATA-MEINS."单位
    PR_ITEM-DELIV_DATE = GT_DATA-EEIND.  "交货日期
*    PR_ITEM-MAT_GRP = GT_DATA-MATKL.   "物料组
    PR_ITEM-PLANT  = GT_DATA-WERKS."工厂
    PR_ITEM-PUR_GROUP = GT_DATA-EKGRP."采购组
    PR_ITEM-PREQ_NAME = GT_DATA-AFNAM."申请者
    PR_ITEM-TRACKINGNO = GT_DATA-BEDNR."需求跟踪号
    PR_ITEM-C_AMT_BAPI = GT_DATA-PREIS."评估价格
    PR_ITEM-CURRENCY = GT_DATA-WAERS."货币码
    PR_ITEM-PRICE_UNIT = GT_DATA-PEINH."价格单位
    PR_ITEM-MRP_CONTR = GT_DATA-DISPO."MRP控制者
    APPEND PR_ITEM.
    CLEAR PR_ITEM.

PR_ACCOUNT-PREQ_ITEM = BNFPO. "项目
    PR_ACCOUNT-G_L_ACCT = GT_DATA-SAKTO.   "总帐科目
    PR_ACCOUNT-COST_CTR = GT_DATA-KOSTL.  "成本中心
    PR_ACCOUNT-ASSET_NO = GT_DATA-ANLN1. "资产
    PR_ACCOUNT-ORDER_NO = GT_DATA-AUFNR. "订单
    PR_ACCOUNT-CO_AREA = 'BELL'.
    APPEND PR_ACCOUNT.
    CLEAR PR_ACCOUNT.

PR_ITEM_ID-PREQ_ITEM = BNFPO."项目
    PR_ITEM_ID-TEXT_ID = 'B03'.
    PR_ITEM_ID-TEXT_LINE = GT_DATA-STR1."行项目文本-传送文本
    APPEND PR_ITEM_ID.
    CLEAR PR_ITEM_ID.

PR_ITEM_ID-PREQ_ITEM = BNFPO."项目
    PR_ITEM_ID-TEXT_ID = 'B07'.
    PR_ITEM_ID-TEXT_LINE = GT_DATA-STR2."行项目文本-预算年度
    APPEND PR_ITEM_ID.
    CLEAR PR_ITEM_ID.

PR_ITEM_ID-PREQ_ITEM = BNFPO."项目
    PR_ITEM_ID-TEXT_ID = 'B08'.
    PR_ITEM_ID-TEXT_LINE = GT_DATA-STR3."行项目文本-资产类别
    APPEND  PR_ITEM_ID.
    CLEAR  PR_ITEM_ID.

AT END OF BEDNR.

CALL FUNCTION 'BAPI_REQUISITION_CREATE'
* EXPORTING
*   SKIP_ITEMS_WITH_ERROR                =
*   AUTOMATIC_SOURCE                     = 'X'
       IMPORTING
         NUMBER                               = PR_NO
        TABLES
          REQUISITION_ITEMS                    = PR_ITEM
          REQUISITION_ACCOUNT_ASSIGNMENT       = PR_ACCOUNT
          REQUISITION_ITEM_TEXT                = PR_ITEM_ID
*   REQUISITION_LIMITS                   =
*   REQUISITION_CONTRACT_LIMITS          =
*   REQUISITION_SERVICES                 =
*   REQUISITION_SRV_ACCASS_VALUES        =
          RETURN                               = PR_RETURN
*   REQUISITION_SERVICES_TEXT            =
*   REQUISITION_ADDRDELIVERY             =
*   EXTENSIONIN                          =
                .
      LOOP AT PR_RETURN WHERE TYPE = 'E' OR TYPE = 'A'.
      ENDLOOP.
      IF SY-SUBRC = 0.
        CLEAR: LV_MESSAGE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        LOOP AT PR_RETURN INTO L_RETURN WHERE TYPE = 'E' .
          CONCATENATE LV_MESSAGE L_RETURN-MESSAGE ';'
            INTO LV_MESSAGE.
        ENDLOOP.
        CONCATENATE GT_DATA-BEDNR LV_MESSAGE INTO GT_OUT-TEXT.
        APPEND GT_OUT.
        CLEAR GT_OUT.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            WAIT = 'X'.
        CONCATENATE PR_NO '创建成功' INTO GT_OUT-TEXT.
        APPEND GT_OUT.
        CLEAR GT_OUT.
      ENDIF.
      FREE PR_ITEM.
      FREE PR_ACCOUNT.
      FREE PR_ITEM_ID.
      FREE PR_RETURN.

ENDAT.
  ENDLOOP.

ENDFORM.                    " CREATE_PR
*&---------------------------------------------------------------------*
*&      Form  WRITE_OUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM WRITE_OUT .
  LOOP AT GT_OUT.
    WRITE: / GT_OUT-TEXT.
  ENDLOOP.
ENDFORM.                    " WRITE_OUT

以下为数据格式(行项目以回车键换行,列以TAB分隔):
ZB 10 100009 10 EA 20100915 D005
ZB 10 100008 10 EA 20100915 D005

创建采购申请---BAPI_REQUISITION_CREATE相关推荐

  1. ME51N 创建采购申请

    1业务说明 当寻源后,将寻源结果汇总,并创建采购申请,之后据此创建采购订单. 此文档使用BAPI:BAPI_REQUISITION_CREATE创建采购申请 2前台实现 事务代码:ME51N 3代码实 ...

  2. SAP MM ME51N 创建采购申请单据时候永远取物料主数据基本计量单位

    SAP MM ME51N 创建采购申请单据时候,采购申请单据的计量单位永远取物料主数据基本计量单位 1>MM03 to see the Base UoM and other UoM for ma ...

  3. CO40/CO41转生产订单下达时不能创建采购申请

    一.配置 CO01创建生产订单,创建时生成采购申请,改为下达时创建采购申请.通过配置,将预留/采购申请 更改为2即可. 但是CO41和CO40通过配置,并不能达到更改预留/采购申请 为2. 二.调试源 ...

  4. SAP创建采购申请的时候供货源信息不完整

    如图所示,原先该物料的对应的供应商的采购信息记录已经维护好.货源清单也已经创建,但是在ME51N创建采购申请的时候发现红色框的供应商是没显示出来的. 首先检查货源清单ME01,数据维护完整,然后返回到 ...

  5. SAP中复制创建采购申请的过程

    如主题,类似采用参照或复制方式创建在办公软件中的是很常用的功能和方法.本身也只是操作上的问题.笔者刚好遇到,所以就记录下来. SAP中有时采购申请者可以会将关键字段填错,而又无法更改.如下图订单,创建 ...

  6. ABAP 创建及修改采购申请

    创建采购申请: BAPI_PR_CREATE 修改采购申请:BAPI_PR_CHANGE 审批采购申请:BAPI_REQUISITION_RELEASE (按行) 取消审批采购申请:BAPI_REQU ...

  7. 采购申请 RFC BAPI

    1.1 创建采购申请 新版本: CALL FUNCTION 'BAPI_PR_CREATE'       EXPORTING         PRHEADER  = IS_PRHEADER       ...

  8. 采购申请审批策略增强

    一般而言审批策略特征类创建时,特征项都是从CEBAN 和 CEKKO两个结构里取值. 但是有时候,审批策略控制过程中,需要其他非以上两结构中字段, 比如PS那边创建的采购申请需要些项目的,或者是采购申 ...

  9. 采购申请审批策略增强_SAP刘梦_新浪博客

    一般而言审批策略特征类创建时,特征项都是从CEBAN 和 CEKKO两个结构里取值. 但是有时候,审批策略控制过程中,需要其他非以上两结构中字段, 比如PS那边创建的采购申请需要些项目的,或者是采购申 ...

最新文章

  1. 时空特征--Learning Spatiotemporal Features with 3D Convolutional Networks
  2. errors'MessageBoxA' : function does not take 1 parameter
  3. matlab导入txt数据_如何正确的将txt文本数据导入到Word中使用?
  4. Golang精编100题
  5. 与AI大牛面对面:人工智能机器人,助手还是终结者?| 活动报名
  6. SQL里变量的声明以及常用函数举例
  7. INNER JOIN连接两个表、三个表、五个表的SQL语句
  8. hdoj1465错排公式的应用(递推)
  9. 秒改文件md5,各PC系统可用
  10. 苹果8参数_iPhone11 iPhone11Pro哪里买最便宜靠谱划算 2020双十一苹果手机购机攻略...
  11. 李宏毅《机器学习》笔记:3.误差分析和梯度下降
  12. 去除spire.doc去水印
  13. 实验一计算机基础和网络知识竞赛,1、计算机知识竞赛活动方案
  14. html里top是向下,css left right top bottom定位
  15. java获取电脑麦克风_Java的API的声音 - 捕捉麦克风(Java Sound API - capturing microphone)...
  16. 高等代数 线性映射(第9章)6 线性函数与对偶空间
  17. 内核里强制关机和重启
  18. 台式计算机显示器发蓝,电脑屏幕颜色偏蓝的四种解决方法
  19. 利用PHP制作简单的内容采集器
  20. 树莓派伴侣–Mate One

热门文章

  1. ROS学习笔记(一)
  2. 【腾讯Bugly干货分享】Android Patch 方案与持续交付
  3. python-sendcmd被动模式访问ftp
  4. MongoDB整库备份与还原以及单个collection备份、恢复方法
  5. 微软宣布.NET开发环境将开源 支持Mac OS X和Linux
  6. 脊柱关节炎的目标治疗推荐
  7. Java中的一直不能掌握的switch-case语句
  8. 【Mac】安装 tesserocr 遇到的一些坑(‘cinttypes' file not found)
  9. 我看百度和Google
  10. 【PHP】Sublime下PHP网站开发指南