利用函数BAPI_PR_CREATE开发采购申请批导

项目中,期初采购申请批导也是必须的,下面代码是利用BAPI    BAPI_PR_CREATE开发的采购申请批导函数,批导结果会保存在txt文本文件中,分享一下,希望对用到的兄弟有帮助。

*&---------------------------------------------------------------------*

*& Report  ZMM_PR_BATCH_INPUT

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZMM_PR_BATCH_INPUT .

TYPES:BEGIN OF TY_ITAB,

WBS_ELEMENT(24),

MATERIAL(18),

QUANTITY(13),

UNIT(3),

DELIV_DATE(8),

PURCH_ORG(4),

*      KNTTP TYPE EBAN-KNTTP,

END OF TY_ITAB.

DATA:ITAB TYPE TABLE OF TY_ITAB WITH HEADER LINE.

DATA:WA TYPE TY_ITAB.

TYPES:BEGIN OF TY_RESULT,

WBS_ELEMENT(24),

MATERIAL(18),

QUANTITY(13),

UNIT(3),

DELIV_DATE(8),

PURCH_ORG(4),

*      KNTTP TYPE EBAN-KNTTP,

FLAG(1),

NUMBER TYPE BAPIMEREQHEADER-PREQ_NO,

MESSAGE(1200),

END OF TY_RESULT.

DATA:IT_RESULT TYPE TABLE OF TY_RESULT with header line.

data: g_info type string.

DATA:PRHEADER TYPE BAPIMEREQHEADER,

PRHEADERX TYPE BAPIMEREQHEADERX,

NUMBER TYPE BAPIMEREQHEADER-PREQ_NO,

PRITEM TYPE TABLE OF BAPIMEREQITEMIMP WITH HEADER LINE,

PRITEMX TYPE TABLE OF BAPIMEREQITEMX WITH HEADER LINE,

PRITEMTEXT TYPE TABLE OF BAPIMEREQITEMTEXT WITH HEADER LINE,

PRACCOUNT TYPE TABLE OF BAPIMEREQACCOUNT WITH HEADER LINE,

PRACCOUNTX TYPE TABLE OF BAPIMEREQACCOUNTX WITH HEADER LINE,

RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

DATA:FLAG(1).

selection-screen begin of block shi with frame title text-001.

parameters:p_file like rlgrap-filename memory id zy1 obligatory.

PARAMETERS:P_WERKS LIKE MARC-WERKS OBLIGATORY.

parameters:P_CHECK  RADIOBUTTON GROUP SHI,

P_CHECK1  RADIOBUTTON GROUP SHI.

selection-screen end of block shi.

at selection-screen on value-request for p_file.

CALL FUNCTION ‘F4_FILENAME‘

EXPORTING

program_name  = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name     = p_file.

*at selection-screen.

*****加权限对象-----

*  IF P_WERKS IS NOT INITIAL.

*    AUTHORITY-CHECK OBJECT ‘M_BANF_WRK‘

*                        ID ‘ACTVT‘ FIELD ‘01‘

*                        ID ‘WERKS‘ FIELD P_WERKS.

*    IF SY-SUBRC <> 0.

*      MESSAGE E019(ZMM001) WITH P_WERKS.

*    ENDIF.

*  ENDIF.

START-OF-SELECTION.

PERFORM FRM_GETDATA.

PERFORM FRM_MVT_BAPI.

PERFORM FRM_DOWNLOAD.

*&---------------------------------------------------------------------*

*&      Form  FRM_GETDATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FRM_GETDATA .

CALL FUNCTION ‘WS_UPLOAD‘

EXPORTING

*   CODEPAGE                      = ‘ ‘

FILENAME                      = P_FILE

FILETYPE                      = ‘DAT‘

*   HEADLEN                       = ‘ ‘

*   LINE_EXIT                     = ‘ ‘

*   TRUNCLEN                      = ‘ ‘

*   USER_FORM                     = ‘ ‘

*   USER_PROG                     = ‘ ‘

*   DAT_D_FORMAT                  = ‘ ‘

* IMPORTING

*   FILELENGTH                    =

TABLES

DATA_TAB                      = ITAB

* EXCEPTIONS

*   CONVERSION_ERROR              = 1

*   FILE_OPEN_ERROR               = 2

*   FILE_READ_ERROR               = 3

*   INVALID_TYPE                  = 4

*   NO_BATCH                      = 5

*   UNKNOWN_ERROR                 = 6

*   INVALID_TABLE_WIDTH           = 7

*   GUI_REFUSE_FILETRANSFER       = 8

*   CUSTOMER_ERROR                = 9

*   OTHERS                        = 10

.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.                    " FRM_GETDATA

*&---------------------------------------------------------------------*

*&      Form  FRM_MVT_BAPI

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FRM_MVT_BAPI .

DATA:m_SBDKZ TYPE MARC-SBDKZ.

LOOP AT ITAB.

MOVE-CORRESPONDING ITAB TO IT_RESULT.

CLEAR m_SBDKZ.

SELECT SINGLE

SBDKZ

INTO m_SBDKZ

FROM

MARC

WHERE MATNR = ITAB-MATERIAL AND WERKS = P_WERKS.

*    IF ITAB-KNTTP = ‘‘.

*        IT_RESULT-FLAG = ‘E‘.

*        IT_RESULT-MESSAGE = ‘科目分配为空‘.

*        APPEND IT_RESULT.

*        CLEAR IT_RESULT.

*    ELSEIF ITAB-KNTTP = ‘1‘ AND m_SBDKZ = ‘2‘.

*        IT_RESULT-FLAG = ‘E‘.

*        IT_RESULT-MESSAGE = ‘系统库存按非项目管理‘.

*        APPEND IT_RESULT.

*        CLEAR IT_RESULT.

*    ELSEIF ITAB-KNTTP = ‘2‘ AND m_SBDKZ = ‘1‘.

*        IT_RESULT-FLAG = ‘E‘.

*        IT_RESULT-MESSAGE = ‘系统库存按项目管理‘.

*        APPEND IT_RESULT.

*        CLEAR IT_RESULT.

*    ELSE.

IF P_CHECK = ‘X‘.

PRHEADER-PR_TYPE = ‘NB‘.

ELSE.

PRHEADER-PR_TYPE = ‘ZNB‘.

ENDIF.

PRHEADERX-PR_TYPE = ‘X‘.

PRITEM-PREQ_ITEM = ‘00010‘.

PRITEM-MATERIAL = ITAB-MATERIAL.

PRITEM-PLANT = P_WERKS.

PRITEM-QUANTITY = ITAB-QUANTITY.

PRITEM-UNIT = ITAB-UNIT.

PRITEM-DELIV_DATE = ITAB-DELIV_DATE.

*       Modified by liuxy2010-01-25

IF m_SBDKZ = ‘1‘.

PRITEM-ACCTASSCAT = ‘Q‘.

ELSE.

PRITEM-ACCTASSCAT = ‘‘.

ENDIF.

PRITEM-PURCH_ORG = ITAB-PURCH_ORG.

APPEND PRITEM.

CLEAR PRITEM.

PRITEMX-PREQ_ITEM = ‘00010‘.

PRITEMX-MATERIAL = ‘X‘.

PRITEMX-PLANT = ‘X‘.

PRITEMX-QUANTITY = ‘X‘.

PRITEMX-UNIT = ‘X‘.

PRITEMX-DELIV_DATE = ‘X‘.

PRITEMX-ACCTASSCAT = ‘X‘.

PRITEMX-PURCH_ORG = ‘X‘.

APPEND PRITEMX.

CLEAR PRITEMX.

PRITEMTEXT-PREQ_ITEM = ‘00010‘.

PRITEMTEXT-TEXT_ID = ‘B01‘.

PRITEMTEXT-TEXT_LINE = ITAB-WBS_ELEMENT.

APPEND PRITEMTEXT.

CLEAR PRITEMTEXT.

PRACCOUNT-PREQ_ITEM = ‘00010‘.

PRACCOUNT-SERIAL_NO = ‘01‘.

PRACCOUNT-WBS_ELEMENT = ITAB-WBS_ELEMENT.

APPEND PRACCOUNT.

CLEAR PRACCOUNT.

PRACCOUNTX-PREQ_ITEM = ‘00010‘.

PRACCOUNTX-SERIAL_NO = ‘01‘.

PRACCOUNTX-WBS_ELEMENT = ‘X‘.

PRACCOUNTX-PREQ_ITEMX = ‘X‘.

APPEND PRACCOUNTX.

CLEAR PRACCOUNTX.

CALL FUNCTION ‘BAPI_PR_CREATE‘

EXPORTING

PRHEADER                    = PRHEADER

PRHEADERX                   = PRHEADERX

*       TESTRUN                     =

IMPORTING

NUMBER                      = NUMBER

*       PRHEADEREXP                 =

TABLES

RETURN                      = RETURN

PRITEM                      = PRITEM

PRITEMX                     = PRITEMX

PRITEMTEXT                  = PRITEMTEXT

*       PRITEMEXP                   =

*       PRITEMSOURCE                =

PRACCOUNT                   = PRACCOUNT

*       PRACCOUNTPROITSEGMENT       =

PRACCOUNTX                  = PRACCOUNTX

*       PRADDRDELIVERY              =

*       PRITEMTEXT                  =

*       PRHEADERTEXT                =

*       EXTENSIONIN                 =

*       EXTENSIONOUT                =

*       PRVERSION                   =

*       PRVERSIONX                  =

*       ALLVERSIONS                 =

.

CLEAR RETURN.

LOOP AT RETURN WHERE TYPE = ‘E‘ OR TYPE = ‘A‘.

FLAG = ‘X‘.

IT_RESULT-FLAG = ‘E‘.

CONCATENATE IT_RESULT-MESSAGE ‘&‘ RETURN-MESSAGE INTO IT_RESULT-MESSAGE.

ENDLOOP.

IF FLAG = ‘X‘.

CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK‘.

ELSE.

CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘.

wait up to 1 seconds.

IT_RESULT-FLAG = ‘S‘.

IT_RESULT-MESSAGE = ‘成功创建!‘.

IT_RESULT-NUMBER = NUMBER.

ENDIF.

APPEND IT_RESULT.

CLEAR IT_RESULT.

CLEAR PRHEADER.

CLEAR PRHEADERX.

CLEAR NUMBER.

REFRESH PRITEM.

CLEAR PRITEM.

REFRESH PRITEMX.

CLEAR PRITEMX.

REFRESH PRITEMTEXT.

CLEAR PRITEMTEXT.

REFRESH PRACCOUNT.

CLEAR PRACCOUNT.

REFRESH PRACCOUNTX.

CLEAR PRACCOUNTX.

CLEAR FLAG.

REFRESH RETURN.

CLEAR RETURN.

*    ENDIF.

ENDLOOP.

ENDFORM.                    " FRM_MVT_BAPI

*&---------------------------------------------------------------------*

*&      Form  FRM_DOWNLOAD

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM FRM_DOWNLOAD .

CALL FUNCTION ‘GUI_DOWNLOAD‘

EXPORTING

*    BIN_FILESIZE                    =

FILENAME                        = ‘C:/PR批导结果表.TXT‘

FILETYPE                        = ‘ASC‘

APPEND                          = ‘ ‘

*    WRITE_FIELD_SEPARATOR           = ‘ ‘

*    HEADER                          = ‘00‘

*    TRUNC_TRAILING_BLANKS           = ‘ ‘

*    WRITE_LF                        = ‘X‘

*    COL_SELECT                      = ‘ ‘

*    COL_SELECT_MASK                 = ‘ ‘

*    DAT_MODE                        = ‘ ‘

*    CONFIRM_OVERWRITE               = ‘ ‘

*    NO_AUTH_CHECK                   = ‘ ‘

*    CODEPAGE                        = ‘ ‘

*    IGNORE_CERR                     = ABAP_TRUE

*    REPLACEMENT                     = ‘#‘

*    WRITE_BOM                       = ‘ ‘

*    TRUNC_TRAILING_BLANKS_EOL       = ‘X‘

*    WK1_N_FORMAT                    = ‘ ‘

*    WK1_N_SIZE                      = ‘ ‘

*    WK1_T_FORMAT                    = ‘ ‘

*    WK1_T_SIZE                      = ‘ ‘

*  IMPORTING

*    FILELENGTH                      =

TABLES

DATA_TAB                        = IT_RESULT

*    FIELDNAMES                      =

*  EXCEPTIONS

*    FILE_WRITE_ERROR                = 1

*    NO_BATCH                        = 2

*    GUI_REFUSE_FILETRANSFER         = 3

*    INVALID_TYPE                    = 4

*    NO_AUTHORITY                    = 5

*    UNKNOWN_ERROR                   = 6

*    HEADER_NOT_ALLOWED              = 7

*    SEPARATOR_NOT_ALLOWED           = 8

*    FILESIZE_NOT_ALLOWED            = 9

*    HEADER_TOO_LONG                 = 10

*    DP_ERROR_CREATE                 = 11

*    DP_ERROR_SEND                   = 12

*    DP_ERROR_WRITE                  = 13

*    UNKNOWN_DP_ERROR                = 14

*    ACCESS_DENIED                   = 15

*    DP_OUT_OF_MEMORY                = 16

*    DISK_FULL                       = 17

*    DP_TIMEOUT                      = 18

*    FILE_NOT_FOUND                  = 19

*    DATAPROVIDER_EXCEPTION          = 20

*    CONTROL_FLUSH_ERROR             = 21

*    OTHERS                          = 22

.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

WRITE:‘数据成功保存到C盘根目录下,请查看!‘.

ENDFORM.                    " FRM_DOWNLOAD

时间: 2024-10-10 01:29:33

利用函数BAPI_PR_CREATE开发采购申请批导的相关文章

利用函数CS_BI_BOM_CREATE_BATCH_INPUT1 开发BOM批导程序

项目中,静态数据BOM批导是项目上线时,必须的步骤,下面代码是在CX项目中利用函数CS_BI_BOM_CREATE_BATCH_INPUT1做的BOM批导程序,程序中用EXCEL表格作为导入模板,并把批到结果以txt格式保存下来,分享一下,希望对需要的兄弟有帮助. *----------------------------------------------------------------------* * Program Name          : BOM批导入 * Purpose  

利用函数BAPI_REQUIREMENTS_CREATE开发计划独立需求批导程序

项目中,计划独立需求批导也是项目上线时,用到的程序,下面代码是在某项目中利用函数BAPI_REQUIREMENTS_CREATE计划独立需求批导程序,分享一下,希望对需要的兄弟有帮助. *&---------------------------------------------------------------------* *& Report  ZPP_CUS_JHXQ *& *&--------------------------------------------

利用SD_SALESDOCUMENT_CREATE 批导动态数据SO

期初上线时,SO作为动态数据,是批导入系统必须做的一步,好多朋友利用bdc.lsmw.scatt等工具都可以做,下面是项目中利用SD_SALESDOCUMENT_CREATE 进行批导的一些代码,分享一下,希望对用到的朋友有帮助. *&---------------------------------------------------------------------* *& Report  ZSD_BATCH_SO *& *&---------------------

客户/供应商主数据批导

客户/供应商主数据维护中,SAP提供了两个强大的类cmd_ei_api=>maintain_bapi和VMD_EI_API 下面是客户主数据维护的例子,供应商的类似.当客户编码为数据类型时,一定要将客户编码补0,否则系统会出现莫名其妙的错误. *&---------------------------------------------------------------------* *& 程序名称:ZSDB0002 *& 作者    : *& 开发日期: *&am

【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程

[DSP开发]利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:前端是时间基于VS2010工程,在windows上实现了对openjpeg2000的改写,实现了从内存中读取数据进行解压缩的工作.由于某些技术储备需要,将其移植到DSP6455中进行解压缩.本文记录的就是整个移植过程. 0. 异想天开:试图在CCS上直接使用VS2010生成好的编译库 这个想法是一直就有的,在调试VS

[android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

    最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--只显示网格而没有显示地图,网络连接和APIKey申请都是正确的,就是不知道为什么不能显示,网上也有很多人遇到这个问题,有的是SDK更新不兼容.而且网上很多百度地图都是使用V2.3.1版本,后来没有办法只有通过baidumapapi_v2_4_1.jar完成显示地图. 其中需要注意的是使用2.3.1时调用manager.init(

利用HTP工具包开发报表

利用这种方式的优点是不需要跑请求就可以打印报表 工具包中常用程序说明 htp.print 语法   htp.print (cbuf | dbuf | nbuf); 作用   generates a line in an HTML document. 参数   cbuf in varchar2 or dbuf in dateor nbuf in number Generates Generates a line in an HTML document based on the value pass

画画一样开发软件 申请审批管理系统开发案例9

第九部分:手机端查看页功能开发: 打开项目依次进入:"Mobile View"->"申请审批管理"页->"<>Content"元件->"Row"元件->"Pane3"元件->"<On Click>"元件->"查看页"->"<>Content"中. 添加一个普通行为处理元件

微信公众平台开发(一) 申请微信公众账号

一.微信公众平台介绍 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,可以群发文字.图片.语音.视频.图文消息五个类别的内容. 二.注册微信公众号 1.注册地址: https://mp.weixin.qq.com/ 点击右上角的"立即注册"申请微信公众账号. 2.填写基本信息 3.激活邮箱账号 到邮箱中收取邮件,激活公众平台账号. 4.信息登记 通过邮箱激活后,填写基本信息.选择为"个人"后,后面只能选择&qu