首页 > IT职业 > IT生活 > MM 批量创建采购订单
MM 批量创建采购订单
测试函数:BAPI_PO_CREATE1
测试实现:通过BAPI函数创建一般PO和服务PO,通过下载模板上传数据实现批量创建
测试参数:
IMP:
POHEADER (EKKO PO抬头数据)
POHEADERX (PO 抬头数据激活)
EXP:
EXPPURCHASEORDER (PO NUMBER)
TABLES:
RETURN
POITEM (EKPO PO项目数据)
POITEMX
POADDRDELIVERY (PO项目地址信息)
POSCHEDULE (PO计划行信息)
POSCHEDULEX
POACCOUNT (PO账户信息)
POACCOUNTPROFITSEGMENT (预留特性值)
POACCOUNTX
POCONDHEADER (EKBO PO定价信息)
POCONDHEADERX
POCOND
POCONDX
POLIMITS (ESUH PO限制信息)
POCONTRACTLIMITS (PO合同的限制信息)
POSERVICES (ESLL PO服务信息)
POSRVACCESSVALUES (PO服务账户的信息)
POSERVICESTEXT (PO服务行文本)
EXTENSIONIN
EXTENSIONOUT
POEXPIMPITEM (EIPO PO贸易数据信息)
POEXPIMPITEMX
POTEXTHEADER (PO抬头文本)
POTEXTITEM (PO项目文本)
ALLVERSIONS (PO版本)
POPARTNER (PO合作伙伴)
测试程序:
1 激活POHEADER POHEADERX POITEM POITEMX等表可以创建一般PO
2 另激活POCONDHEADER POCONDHEADERX可设定PO定价信息
3 另激活POSERVICES POSRVACCESSVALUES可创建服务PO
4 通过GUI_DOWNLOAD和GUI_UPLOAD函数实现批量创建
5 通过CALL METHOD可实现对下载的模板的编辑
************************************************************
*类型池定义
TYPE-POOLS: SLIS,
OLE2.
*透明表定义
TABLES: EKKO,
EKPO,
EKET,
LFA1,
MARD.
*下载模版用变量定义
DATA: LW_TITLE TYPE STRING,
LW_PATH TYPE STRING,
LW_FILE_T TYPE FILETABLE,
LW_FILE_W TYPE FILE_TABLE,
LW_SUBRC TYPE I.
DATA: G_FILENAME TYPE STRING,
G_CONTINUE(1).
DATA: APPLICATION TYPE OLE2_OBJECT, "excel object
WORKBOOK TYPE OLE2_OBJECT, "excel workbook objcet
SHEET TYPE OLE2_OBJECT, "workbook sheet object
COLUMNS TYPE OLE2_OBJECT, "sheet col objcet
ROWS TYPE OLE2_OBJECT, "sheet row objcet
RANGE TYPE OLE2_OBJECT, "range
RANGE1 TYPE OLE2_OBJECT, "range1
FONT TYPE OLE2_OBJECT, "font
CELL TYPE OLE2_OBJECT, "cell
CELL1 TYPE OLE2_OBJECT, "cell1
SHEET1 TYPE OLE2_OBJECT, "workbook sheet object
BORDERS TYPE OLE2_OBJECT. "borders
*上传数据用内表定义
DATA: BEGIN OF TAB_G_ITAB_H OCCURS 0,
EBELN(10), "原订单号码
BSART(8), "订单类型
LIFNR(6), "供应商
RESWK(8), "供货工厂
BEDAT(8), "凭证日期
EKORG(8), "采购组织
EKGRP(6), "采购组
BUKRS(8), "公司代码
SUBMI(6), "汇总号
F01(8), "表头文本
F05(8), "传送条目
F26(6), "合同号
F27(6), "联系人
F28(4), "电话
F29(4), "传真
F51(8), "报关单号
F52(6), "ISO号
KNTTP(12), "账目分配类别
PSTYP(8), "项目类别
MATNR(4), "物料
TXZ01(8), "物料描述
MENGE(13), "数量
EINDT(8), "交货时间
NETPR(4), "净价
PEINH(4), "每
MEINS(4), "OPU
MATKL(6), "物料组
WERKS(4), "工厂
LGORT(8), "仓储地点
BEDNR(6), "跟踪号
IDNLF(12), "供应商物料号
UEBTO(12), "超量交货容差
UNTTO(12), "不足交货容差
REMARK(8), "装运须知
EMLIF(10), "交货供应商
LBLKZ(8), "SC vend
MWSKZ(4), "税码
F02(8), "项目文本
XHBL(8), "移除扣皮
SRV_NO(8), "服务行
SRVPOS(6), "服务号
KTEXT1(6), "短文本
D_MENGE(4), "数量
BASE_UOM(4), "单位
CR_PRICE(6), "总价格
KSCHL(8), "条件类型
KBETR(8), "条件价格
KOEIN(8), "条件货币
KPEIN(2), "每
KMEIN(4), "UoM
KUMZA(4), "分子
KUMNE(6), "CConDe
END OF TAB_G_ITAB_H.
TYPES: BEGIN OF TYP_G_ITAB,
EBELN TYPE STRING, "原订单号码
BSART TYPE STRING, "订单类型
LIFNR TYPE STRING, "供应商
RESWK TYPE STRING, "供货工厂
BEDAT TYPE STRING, "凭证日期
EKORG TYPE STRING, "采购组织
EKGRP TYPE STRING, "采购组
BUKRS TYPE STRING, "公司代码
SUBMI TYPE STRING, "汇总号
F01 TYPE STRING, "表头文本
F05 TYPE STRING, "传送条目
F26 TYPE STRING, "合同号
F27 TYPE STRING, "联系人
F28 TYPE STRING, "电话
F29 TYPE STRING, "传真
F51 TYPE STRING, "报关单号
F52 TYPE STRING, "ISO号
KNTTP TYPE STRING, "账目分配类别
PSTYP TYPE STRING, "项目类别
MATNR TYPE STRING, "物料(新)
TXZ01 TYPE STRING, "物料描述
MENGE TYPE STRING, "数量
EINDT TYPE STRING, "交货时间
NETPR TYPE STRING, "净价
PEINH TYPE STRING, "每
MEINS TYPE STRING, "OPU
MATKL TYPE STRING, "物料组
WERKS TYPE STRING, "工厂
LGORT TYPE STRING, "库存地
BEDNR TYPE STRING, "跟踪号
IDNLF TYPE STRING, "供应商物料号
UEBTO TYPE STRING, "超量交货容差
UNTTO TYPE STRING, "不足交货容差
REMARK TYPE STRING, "装运须知
EMLIF TYPE STRING, "交货供应商
LBLKZ TYPE STRING, "SC vend
MWSKZ TYPE STRING, "税码
F02 TYPE STRING, "项目文本
XHBL TYPE STRING, "移除扣皮
SRV_NO TYPE STRING, "服务行
SRVPOS TYPE STRING, "服务号
KTEXT1 TYPE STRING, "短文本
D_MENGE TYPE STRING, "数量
BASE_UOM TYPE STRING, "基本计量单位
CR_PRICE TYPE STRING, "总价格
KSCHL TYPE STRING, "条件类型
KBETR TYPE STRING, "条件价格
KOEIN TYPE STRING, "条件货币
KPEIN TYPE STRING, "每
KMEIN TYPE STRING, "UoM
KUMZA TYPE STRING, "分子
KUMNE TYPE STRING, "CConDe
END OF TYP_G_ITAB.
DATA: TAB_G_ITAB TYPE TABLE OF TYP_G_ITAB WITH HEADER LINE.
*BAPI定义
"抬头
DATA: REC_POHEADER LIKE BAPIMEPOHEADER,
REC_POHEADERX LIKE BAPIMEPOHEADERX.
"项目
DATA: TAB_POITEM TYPE TABLE OF BAPIMEPOITEM,
REC_POITEM LIKE BAPIMEPOITEM,
TAB_POITEMX TYPE TABLE OF BAPIMEPOITEMX,
REC_POITEMX LIKE BAPIMEPOITEMX.
"交货
DATA: TAB_POSCHEDULE TYPE TABLE OF BAPIMEPOSCHEDULE,
REC_POSCHEDULE LIKE BAPIMEPOSCHEDULE,
TAB_POSCHEDULEX TYPE TABLE OF BAPIMEPOSCHEDULX,
REC_POSCHEDULEX LIKE BAPIMEPOSCHEDULX.
"文本
DATA: TAB_TEXTHEADER TYPE TABLE OF BAPIMEPOTEXTHEADER,
REC_TEXTHEADER LIKE BAPIMEPOTEXTHEADER,
TAB_TEXTITEM TYPE TABLE OF BAPIMEPOTEXT,
REC_TEXTITEM LIKE BAPIMEPOTEXT.
"服务PO
DATA: TAB_POACCOUNT TYPE TABLE OF BAPIMEPOACCOUNT, "Account Assignment Fields
REC_POACCOUNT LIKE BAPIMEPOACCOUNT,
TAB_POACCOUNTX TYPE TABLE OF BAPIMEPOACCOUNTX,
REC_POACCOUNTX LIKE BAPIMEPOACCOUNTX,
TAB_POSERVICES TYPE TABLE OF BAPIESLLC, "External Services: Service Lines
REC_POSERVICES LIKE BAPIESLLC,
TAB_POSRVACCESSVALUES TYPE TABLE OF BAPIESKLC, "External Services: Account Assignment Distribution for Service Lines
REC_POSRVACCESSVALUES LIKE BAPIESKLC.
"U类型定价
DATA: TAB_POCONDHEADER TYPE TABLE OF BAPIMEPOCONDHEADER,
REC_POCONDHEADER LIKE BAPIMEPOCONDHEADER,
TAB_POCONDHEADERX TYPE TABLE OF BAPIMEPOCONDHEADERX,
REC_POCONDHEADERX LIKE BAPIMEPOCONDHEADERX.
DATA: TAB_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
DATA: BEGIN OF TAB_G_MESSAGE OCCURS 0,
MESSAGETEXT(225),
END OF TAB_G_MESSAGE.
DATA: G_MESSAGETEXT(225).
DATA: G_EBELN LIKE BAPIMEPOHEADER-PO_NUMBER,
G_EBELP LIKE EKPO-EBELP,
G_PCKG_NO LIKE BAPIESLLC-PCKG_NO,
G_SUBPCKG_NO LIKE BAPIESLLC-SUBPCKG_NO.
DATA: TAB_G_EBELN TYPE TABLE OF ZTMMPO WITH HEADER LINE.
DATA: BEGIN OF TAB_G_XHBL OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
XHBL LIKE EKPO-XHBL,
END OF TAB_G_XHBL.
*---------------------------------------------------------------------*
* SELECTION-SCREEN
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
PARAMETERS: P_PATH(80) DEFAULT 'C:批量创建PO模板.XLS'.
SELECTION-SCREEN SKIP 1.
PARAMETERS: R_DOWNLD RADIOBUTTON GROUP A,
R_CREAT RADIOBUTTON GROUP A.
SELECTION-SCREEN END OF BLOCK A.
*---------------------------------------------------------------------*
* SELECT-OF-SELECTION
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
PERFORM FRM_F4_PATH.
INITIALIZATION.
CREATE OBJECT APPLICATION 'EXCEL.APPLICATION'.
START-OF-SELECTION.
G_FILENAME = P_PATH.
IF R_DOWNLD = 'X'.
PERFORM FRM_DATA_DOWNLOAD.
ELSEIF R_CREAT = 'X'.
PERFORM FRM_DATA_UPLOAD.
PERFORM FRM_DATA_CREAT.
PERFORM FRM_DATA_OUT.
ENDIF.
*&---------------------------------------------------------------------*
*& Form FRM_F4_PATH
*&---------------------------------------------------------------------*
FORM FRM_F4_PATH.
LW_TITLE = 'SELECT'.
LW_PATH = 'c:'.
CLEAR LW_FILE_T[].
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = LW_TITLE
INITIAL_DIRECTORY = LW_PATH
CHANGING
FILE_TABLE = LW_FILE_T
RC = LW_SUBRC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4.
LOOP AT LW_FILE_T INTO LW_FILE_W.
P_PATH = LW_FILE_W.
EXIT.
ENDLOOP.
ENDFORM. " FRM_F4_PATH
*&---------------------------------------------------------------------*
*& Form FRM_DATA_DOWNLOAD
*&---------------------------------------------------------------------*
FORM FRM_DATA_DOWNLOAD.
CLEAR: TAB_G_ITAB[],
TAB_G_ITAB_H[].
*下载进度指示
PERFORM FRM_PROCESS_TEXT USING 0 '程序正在下载模版,请等待!'.
*编写模版标题
TAB_G_ITAB_H-EBELN = '原订单号码'.
TAB_G_ITAB_H-BSART = '订单类型'.
TAB_G_ITAB_H-LIFNR = '供应商'.
TAB_G_ITAB_H-RESWK = '供货工厂'.
TAB_G_ITAB_H-BEDAT = '凭证日期'.
TAB_G_ITAB_H-EKORG = '采购组织'.
TAB_G_ITAB_H-EKGRP = '采购组'.
TAB_G_ITAB_H-BUKRS = '公司代码'.
TAB_G_ITAB_H-SUBMI = '汇总号'.
TAB_G_ITAB_H-F01 = '表头文本'.
TAB_G_ITAB_H-F05 = '传送条目'.
TAB_G_ITAB_H-F26 = '合同号'.
TAB_G_ITAB_H-F27 = '联系人'.
TAB_G_ITAB_H-F28 = '电话'.
TAB_G_ITAB_H-F29 = '传真'.
TAB_G_ITAB_H-F51 = '报关单号'.
TAB_G_ITAB_H-F52 = 'ISO号'.
TAB_G_ITAB_H-KNTTP = '账目分配类别'.
TAB_G_ITAB_H-PSTYP = '项目类别'.
TAB_G_ITAB_H-MATNR = '物料(新)'.
TAB_G_ITAB_H-TXZ01 = '物料描述'.
TAB_G_ITAB_H-MENGE = '数量'.
TAB_G_ITAB_H-EINDT = '交货时间'.
TAB_G_ITAB_H-NETPR = '净价'.
TAB_G_ITAB_H-PEINH = '每'.
TAB_G_ITAB_H-MEINS = 'OPU'.
TAB_G_ITAB_H-MATKL = '物料组'.
TAB_G_ITAB_H-WERKS = '工厂'.
TAB_G_ITAB_H-LGORT = '仓储地点'.
TAB_G_ITAB_H-BEDNR = '跟踪号'.
TAB_G_ITAB_H-IDNLF = '供应商物料号'.
TAB_G_ITAB_H-UEBTO = '超量交货容差'.
TAB_G_ITAB_H-UNTTO = '不足交货容差'.
TAB_G_ITAB_H-REMARK = '装运须知'.
TAB_G_ITAB_H-EMLIF = '交货供应商'.
TAB_G_ITAB_H-LBLKZ = 'SC vend'.
TAB_G_ITAB_H-MWSKZ = '税码'.
TAB_G_ITAB_H-F02 = '项目文本'.
TAB_G_ITAB_H-XHBL = '移除扣皮'.
TAB_G_ITAB_H-SRV_NO = '服务行'.
TAB_G_ITAB_H-SRVPOS = '服务号'.
TAB_G_ITAB_H-KTEXT1 = '短文本'.
TAB_G_ITAB_H-D_MENGE = '数量'.
TAB_G_ITAB_H-BASE_UOM = '单位'.
TAB_G_ITAB_H-CR_PRICE = '总价格'.
TAB_G_ITAB_H-KSCHL = '条件类型'.
TAB_G_ITAB_H-KBETR = '条件价格'.
TAB_G_ITAB_H-KOEIN = '条件货币'.
TAB_G_ITAB_H-KPEIN = '每'.
TAB_G_ITAB_H-KMEIN = 'UoM'.
TAB_G_ITAB_H-KUMZA = '分子'.
TAB_G_ITAB_H-KUMNE = 'CConDe'.
APPEND TAB_G_ITAB_H.
*编写模版范例
TAB_G_ITAB-EBELN = '2630000820'.
TAB_G_ITAB-BSART = 'SG30'.
TAB_G_ITAB-LIFNR = '0221004731'.
TAB_G_ITAB-RESWK = ''.
TAB_G_ITAB-BEDAT = SY-DATUM.
TAB_G_ITAB-EKORG = 'SG11'.
TAB_G_ITAB-EKGRP = 'SG1'.
TAB_G_ITAB-BUKRS = 'SG'.
TAB_G_ITAB-SUBMI = ''.
TAB_G_ITAB-F01 = ''.
TAB_G_ITAB-F05 = ''.
TAB_G_ITAB-F26 = ''.
TAB_G_ITAB-F27 = ''.
TAB_G_ITAB-F28 = ''.
TAB_G_ITAB-F29 = ''.
TAB_G_ITAB-F51 = ''.
TAB_G_ITAB-F52 = ''.
TAB_G_ITAB-KNTTP = ''.
TAB_G_ITAB-PSTYP = ''.
TAB_G_ITAB-MATNR = '001.001.009'.
TAB_G_ITAB-TXZ01 = '1 行器 KEYSTONE PNEUM.ACT.F79U-03622'.
TAB_G_ITAB-MENGE = '2'.
TAB_G_ITAB-EINDT = SY-DATUM.
TAB_G_ITAB-NETPR = '15'.
TAB_G_ITAB-PEINH = '1'.
TAB_G_ITAB-MEINS = 'PC'.
TAB_G_ITAB-MATKL = ''.
TAB_G_ITAB-WERKS = 'SG01'.
TAB_G_ITAB-LGORT = '0032'.
TAB_G_ITAB-BEDNR = ''.
TAB_G_ITAB-IDNLF = ''.
TAB_G_ITAB-UEBTO = ''.
TAB_G_ITAB-UNTTO = ''.
TAB_G_ITAB-REMARK = ''.
TAB_G_ITAB-EMLIF = ''.
TAB_G_ITAB-LBLKZ = 'X'.
TAB_G_ITAB-MWSKZ = 'P5'.
TAB_G_ITAB-F02 = ''.
TAB_G_ITAB-XHBL = ''.
TAB_G_ITAB-SRV_N
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22764754/viewspace-1028211/ ,如需转载,请注明出处,否则将追究法律责任。