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
ZB 10 100008 10 EA 20100915 D005
PR 创建的更多相关文章
- 如何参与开源项目 - 细说 GitHub 上的 PR 全过程
目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...
- 合并Spark社区代码的正确姿势
原创文章,转载请保留出处 最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2.0也能用上, ...
- 所有标准API
序号 系统版本 模块 应用场景 类型 API/接口 参数规格 样例代码 备注 登记者 登记时间 关键字 1 12.1.3 AP 付款核销 API ap_pay_invoice_pkg.ap_pay_i ...
- Docker实战:更轻松、更愉快、更高效
编者按:借助Docker,我们可以更容易地进行web应用部署,而同时不必头疼于项目依赖.环境变量以及各种配置问题,Docker可以快捷.高效地处理好这一切.而这也是本教程所要实现的主要目的.以下是作者 ...
- 10年经验17张图带你进入gitflow企业项目代码版本管理的最佳实践
前言 对于项目版本管理,你是否存在这样的痛点:项目分支多而杂不好管理,git log界面commit信息错乱复杂无规范,版本回退不知道选择什么版本合适--. 项目版本管理的最佳实践系列,笔者将以两篇文 ...
- Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!
Visual Studio 2019 v16.10有什么新功能? 我们很高兴地宣布Visual Studio 2019 v16.10 GA 和 v16.11 preview 1发布.此版本使我们的主题 ...
- 1.5 外部销售自动创建为内部PR
1.5 外部销售自动创建为内部PR 1.5.1 业务方案描述 外部销售订单登记后,在销售订单录入界面点击一个创建内部申请按钮,自动将外部销售订单创建为内部申请,创建后将不得再次创 ...
- RFC 在OA中创建PR
创建PR:BAPI_REQUISITION_CREATE BAPI_PR_CREATE "Create Enjoy Purchase Requisistion ...
- 如何在ASP.Net创建各种3D图表
我们都知道,图表在ASP.NET技术中是一种特别受欢迎而又很重要的工具.图表是表示数据的图形,一般含有X和Y两个坐标轴.我们可以用折线,柱状,块状来表示数据.通过图表控件,我们即能表示数据又能比较各种 ...
随机推荐
- [原创]checkstyle下载与安装
checkstyle是一款功能很强的java静态代码检查工具,为eclipse的插件.在网上看了,大致有两种安装方法.第一种 为联网,在eclipse里输入URL下载:另一种为下载好插件后,离线安装. ...
- 前端相关技术之ajax相关
AJAX技术点 async javascript and xml:异步的js和xml,用js异步去操作xml ajax用于数据交互,不能操作DOM –节省用户操作,时间,提高用户体验,减少数据请求 – ...
- Oracle性能调优
这部分目前主要是从网上搜集来的,后续要在实践中慢慢体会. v$sqltext: 存储的是被分割的sql v$sqlarea: 存储的是完整的sql和一些统计信息,比如累计的执行次数.逻辑读.物理读等( ...
- Noip2014 提高组 day1 T1· 生活大爆炸版石头剪刀布
生活大爆炸版 石头剪刀布 描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第 8 集中出现了一种石头剪刀布的升级版 ...
- C# Process打开程序并移动窗口到指定位置
process.start只是按指定的参数来运行一个程序,而这个程序自己运行起来是什么样子的就不是Process所能处理的了,不过当程序运行起来后倒是可以通过Process的MainWindowHan ...
- 前端CSS编程之道-LESS
由于前端css编写繁琐,最近开始学习LESS,用LESS编写文件.less文件可以直接编译成我们要的.css文件 学习Less 我下面是我练习时的截图,希望小伙伴也能动手自己写一下,而不是复制粘贴模式 ...
- Linux下备份系统至另一硬盘
首先会想到dd命令. 但,, 1,若是小硬盘还好,上T的大硬盘这样做肯定不明智; 2,况且dd是在硬件层面的拷贝,前面的MBR也会随之恢复到另一个盘,若源硬盘是100G,目标盘是200G,又会出问题, ...
- MicroPython开发板TPYBoard关于USB-HID的应用
USB-HID是Human Interface Device的缩写,属于人机交互操作的设备,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球.电话拨号设备.VCR遥控等等设备. ...
- poj1159 dp最长公共子串
//Accepted 204 KB 891 ms //dp最长公共子串 //dp[i][j]=max(dp[i-1][j],dp[i][j-1]) //dp[i][j]=max(dp[i][j],dp ...
- allegro si(三)
前言:si的教程市面上是很少的,layout是台湾工程师的强项,还有就是日本人,国人爱用AD. si的教程中靠谱的还是张飞的收费课程,还有华为的资料. Cadence SI 仿真实验步骤如下: 1.熟 ...