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

PR 创建的更多相关文章

  1. 如何参与开源项目 - 细说 GitHub 上的 PR 全过程

    目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...

  2. 合并Spark社区代码的正确姿势

    原创文章,转载请保留出处 最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2.0也能用上, ...

  3. 所有标准API

    序号 系统版本 模块 应用场景 类型 API/接口 参数规格 样例代码 备注 登记者 登记时间 关键字 1 12.1.3 AP 付款核销 API ap_pay_invoice_pkg.ap_pay_i ...

  4. Docker实战:更轻松、更愉快、更高效

    编者按:借助Docker,我们可以更容易地进行web应用部署,而同时不必头疼于项目依赖.环境变量以及各种配置问题,Docker可以快捷.高效地处理好这一切.而这也是本教程所要实现的主要目的.以下是作者 ...

  5. 10年经验17张图带你进入gitflow企业项目代码版本管理的最佳实践

    前言 对于项目版本管理,你是否存在这样的痛点:项目分支多而杂不好管理,git log界面commit信息错乱复杂无规范,版本回退不知道选择什么版本合适--. 项目版本管理的最佳实践系列,笔者将以两篇文 ...

  6. Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!

    Visual Studio 2019 v16.10有什么新功能? 我们很高兴地宣布Visual Studio 2019 v16.10 GA 和 v16.11 preview 1发布.此版本使我们的主题 ...

  7. 1.5 外部销售自动创建为内部PR

    1.5          外部销售自动创建为内部PR 1.5.1   业务方案描述 外部销售订单登记后,在销售订单录入界面点击一个创建内部申请按钮,自动将外部销售订单创建为内部申请,创建后将不得再次创 ...

  8. RFC 在OA中创建PR

    创建PR:BAPI_REQUISITION_CREATE BAPI_PR_CREATE                 "Create Enjoy Purchase Requisistion ...

  9. 如何在ASP.Net创建各种3D图表

    我们都知道,图表在ASP.NET技术中是一种特别受欢迎而又很重要的工具.图表是表示数据的图形,一般含有X和Y两个坐标轴.我们可以用折线,柱状,块状来表示数据.通过图表控件,我们即能表示数据又能比较各种 ...

随机推荐

  1. 转: CSS中overflow的用法

    Overflow可以实现隐藏超出对象内容,同时也有显示与隐藏滚动条的作用,overflow属性有四个值:visible (默认), hidden, scroll, 和auto.同样有两个overflo ...

  2. 算法导论-钢条切割 C# 递归实现

    下班前看到有位兄弟写 钢条切割问题,尝试实现C#版, 还没有实现最优版,分享一下. int[] parr; private void button1_Click(object sender, Even ...

  3. java枚举类

    enum关键字用于定义枚举类,若枚举只有一个成员, 则可以作为一种单例模式的实现方式.   枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰. 枚举类的使用 priva ...

  4. wp8.1 Study10:APP数据存储

    一.理论 1.App的各种数据在WP哪里的? 下图很好介绍了这个问题.有InstalltionFolder, knownFolder, SD Card... 2.一个App的数据存储概览 主要分两大部 ...

  5. SPOJ COT2 树上找路径上不同值的个数

    题目大意 给出多个询问u , v , 求出u-v路径上点权值不同的个数 开始做的是COT1,用主席树写过了,理解起来不难 很高兴的跑去做第二道,完全跟普通数组区间求k个不同有很大区别,完全没思路 膜拜 ...

  6. socket编程概述

    一.基本流程如下: 整个TCP过程非常类似于电话系统.TCP是有两个不同主机上的进程需要进行通信,电话系统是有两个人位于不同地区的人需要进行通信. socket:获得可用于进程通信的端点.由于Linu ...

  7. [流媒体]VLC主要模块

    libvlccore vlcthread: vlc线程是libvlccore的重要组成部分,我们在src文件夹下面android.os2.posix.win32等文件夹下包含thread.c文件,说明 ...

  8. MapReduce基础

    这篇文章翻译自Yahoo的Hadoop教程,很久之前就看过了,感觉还不错.最近想总结一下以前学的东西,看到现在关于Hadoop的中文资料还比较少,就有了把它翻译出来的想法,希望能帮助到初学者.这只是Y ...

  9. Xrun 将 app 转化为 IPA

    xcodebuild命令行打包,在使用xcodebuild编译后发现有些东西有些临时性质的东西,依然存在,搜索了一些资料,找到有clean的命令:在之前打包都是生成app文件,将app打包成ipa文件 ...

  10. python练习——水仙花数

    题目: 请判断一个数是不是水仙花数.其中水仙花数定义各个位数立方和等于它本身的三位数.输入有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)输入0表示程序输入结束.输出 ...