采购订单批量创建 BAPI_PO_CREATE1

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

*& REPORT  ZMM_PO_CREATE

*&

*& REPORTNAME   :批量创建PO

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

*& CREATED BY   : LIUXINYUAN

*& CREATED DATE : 2015-03-16

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

REPORT  ZMM_PO_CREATE.

TYPE-POOLS: SLIS.

TYPE-POOLS:ICON.

*订单类型+采购组织+公司代码+采购组+工厂+供应商+合并标记相同

TYPES:BEGIN OF TY_PO,

BSART TYPE EKKO-BSART,   "订单类型

EKORG TYPE EKKO-EKORG,   "采购组织

BUKRS TYPE EKKO-BUKRS,   "公司代码

EKGRP TYPE EKKO-EKGRP,   "采购组

WERKS TYPE EKPO-WERKS,   "工厂

LIFNR TYPE EKKO-LIFNR,   "供应商

HBBJ(3),                 "合并标记

PSTYP TYPE EKPO-PSTYP,   "行项目类别

MATNR TYPE EKPO-MATNR,   "物料号

MENGE(13)," TYPE EKPO-MENGE,   "数量

EINDT TYPE EKET-EINDT,   "交货期

END OF TY_PO.

DATA:IT_PO TYPE TABLE OF TY_PO WITH HEADER LINE,

WA_PO TYPE TY_PO.

TYPES:BEGIN OF TY_PO_RESULT,

BSART TYPE EKKO-BSART,   "订单类型

EKORG TYPE EKKO-EKORG,   "采购组织

BUKRS TYPE EKKO-BUKRS,   "公司代码

EKGRP TYPE EKKO-EKGRP,   "采购组

WERKS TYPE EKPO-WERKS,   "工厂

LIFNR TYPE EKKO-LIFNR,   "供应商

PSTYP TYPE EKPO-PSTYP,   "行项目类别

MATNR TYPE EKPO-MATNR,   "物料号

MENGE(13)," TYPE EKPO-MENGE,   "数量

EINDT TYPE EKET-EINDT,   "交货期

HBBJ(1),                 "合并标记

EBELN TYPE EKPO-EBELN,

EBELP TYPE EKPO-EBELP,

FLAG(1),

MESSAGE(200),

END OF TY_PO_RESULT.

DATA:IT_PO_RESULT TYPE TABLE OF TY_PO_RESULT WITH HEADER LINE,

TIT_PO_RESULT TYPE TABLE OF TY_PO_RESULT WITH HEADER LINE.

DATA:LV_MESSAGE TYPE STRING.

DATA:LV_EBELN TYPE EKPO-EBELN.

DATA IT_FLDTAB TYPE TPIT_T_FNAME  WITH HEADER LINE.

DATA: L_IRC TYPE I,L_LINE TYPE I.

DATA:L_TEXT(200).

DATA:IT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA:G_INFO TYPE STRING.

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

* CONSTANTS                                                            *

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

CONSTANTS:                            """上传数据准备

C_BEGIN_ROW TYPE I VALUE 1,       "BEGINNING ROW OF EXCEL FILE

C_BEGIN_COL TYPE I VALUE 1,       "BEGINNING COLUMN OF EXCEL FILE

C_END_ROW   TYPE I VALUE 50000,   "ENDING ROW OF EXCEL FILE

C_END_COL   TYPE I VALUE 100.     "ENDING COLUMN OF EXCEL FILE

*DATA:LV_DTYPE(1).

**ALV

DATA:GT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT.

DATA:GS_EVENT_EXIT TYPE SLIS_EVENT_EXIT.

DATA:GT_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE.

DATA:GC_GLAY TYPE LVC_S_GLAY.

DATA:GS_LAYOUT    TYPE LVC_S_LAYO,     "SLIS_LAYOUT_ALV,

WK_REPID     LIKE SY-REPID.

DATA:GS_GRID TYPE LVC_S_GLAY.

DATA:TEM_GRID TYPE REF TO CL_GUI_ALV_GRID.

DATA:GT_EVENTS TYPE SLIS_T_EVENT.

DATA:GS_EVENTS LIKE LINE OF GT_EVENTS.

DATA:LV_DATUM TYPE SY-DATUM.

SELECTION-SCREEN: FUNCTION KEY 1.   "激活下载模板按钮

**选择屏幕

SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-001.

*    SELECT-OPTIONS:S_BUKRS FOR BKPF-BUKRS.

*    SELECT-OPTIONS:S_BUDAT FOR BKPF-BUDAT.

*    SELECT-OPTIONS:S_BELNR FOR BKPF-BELNR.

PARAMETERS:P_FILE  LIKE RLGRAP-FILENAME ."DEFAULT ‘C:\USERS\ADMINISTRATOR\DESKTOP\计划独立需求的批量导入模板.XLS‘.   "上载文件路径

SELECTION-SCREEN END OF BLOCK MAIN.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

PERFORM FRM_GET_FILENAME USING P_FILE.

AT SELECTION-SCREEN.

*  LOOP AT S_WERKS.

*        AUTHORITY-CHECK OBJECT ‘Z_MM_003‘

*                            ID ‘WERKS‘ FIELD S_WERKS-LOW.

*        IF SY-SUBRC <> 0.

*            MESSAGE E019(ZMM001) WITH S_WERKS-LOW.

*        ENDIF.

*  ENDLOOP.

AT SELECTION-SCREEN OUTPUT.

**主程序

START-OF-SELECTION.

PERFORM FRM_RETRIVE_DATA.

PERFORM FRM_BAPI_CREATE_PO .

PERFORM FRM_DOWNLOAD_DATA.

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

*&      FORM  FRM_BAPI_CREATE_PO

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

*       TEXT

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

*  -->  P1        TEXT

*  <--  P2        TEXT

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

FORM FRM_BAPI_CREATE_PO .

DATA: POHEADER  LIKE TABLE OF BAPIMEPOHEADER  WITH HEADER LINE ,

POHEADERX LIKE TABLE OF BAPIMEPOHEADERX WITH HEADER LINE,

RETURN LIKE TABLE OF BAPIRET2  WITH HEADER LINE,

POITEM    LIKE TABLE OF BAPIMEPOITEM WITH HEADER LINE,

POITEMX LIKE TABLE OF BAPIMEPOITEMX WITH HEADER LINE,

POSCHEDULE LIKE TABLE OF BAPIMEPOSCHEDULE WITH HEADER LINE,

POSCHEDULEX LIKE TABLE OF BAPIMEPOSCHEDULX WITH HEADER LINE,

POTEXTITEM LIKE TABLE OF BAPIMEPOTEXT WITH HEADER LINE.

CONSTANTS: CON VALUE ‘X‘.

DATA: LIFNR TYPE LFA1-LIFNR,

NETPR TYPE EKPO-NETPR,

ROW TYPE I,

SCHEDULELINE TYPE I.

DATA: EPO LIKE BAPIMEPOHEADER-PO_NUMBER.

DATA: L_RETURN LIKE RETURN.

DATA: LV_ERROR(1).

DATA: LV_AA TYPE STRING,

LV_TYPE TYPE DD01V-DATATYPE.

REFRESH IT_PO_RESULT.

CLEAR IT_PO_RESULT.

REFRESH TIT_PO_RESULT.

CLEAR TIT_PO_RESULT.

SORT IT_PO BY BSART EKORG BUKRS EKGRP WERKS LIFNR HBBJ.

LOOP AT IT_PO.

CLEAR WA_PO.

MOVE-CORRESPONDING IT_PO TO WA_PO.

AT NEW HBBJ.

REFRESH TIT_PO_RESULT.

CLEAR TIT_PO_RESULT.

CLEAR LIFNR.

LIFNR = WA_PO-LIFNR.

CLEAR LV_AA.

CLEAR LV_TYPE.

CALL FUNCTION ‘NUMERIC_CHECK‘

EXPORTING

STRING_IN  = LIFNR

IMPORTING

STRING_OUT = LV_AA

HTYPE      = LV_TYPE.

IF LV_TYPE = ‘NUMC‘.

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT‘

EXPORTING

INPUT = LIFNR

IMPORTING

OUTPUT = LIFNR.

ENDIF.

POHEADER-DOC_TYPE     = WA_PO-BSART.

POHEADER-VENDOR       = LIFNR.

POHEADER-PURCH_ORG    = WA_PO-EKORG.

POHEADER-PUR_GROUP    = WA_PO-EKGRP.

POHEADER-COMP_CODE    = WA_PO-BUKRS.

POHEADER-DOC_DATE     = SY-DATUM.

POHEADERX-DOC_TYPE    = CON.

POHEADERX-VENDOR      = CON.

POHEADERX-PURCH_ORG   = CON.

POHEADERX-PUR_GROUP   = CON.

POHEADERX-COMP_CODE   = CON.

POHEADERX-DOC_DATE    = CON.

ENDAT.

ROW = ROW + 10.

POITEM-PO_ITEM = ROW.          "采购凭证的项目编号

POITEM-QUANTITY = WA_PO-MENGE. "采购订单数量

POITEM-MATERIAL = WA_PO-MATNR.

POITEM-PLANT = WA_PO-WERKS.    "工厂

IF WA_PO-PSTYP <> ‘‘.

SELECT SINGLE

PSTYP

INTO POITEM-ITEM_CAT

FROM T163Y

WHERE SPRAS = ‘1‘

AND EPSTP = WA_PO-PSTYP.

ELSE.

POITEM-ITEM_CAT = WA_PO-PSTYP.

ENDIF.

IF WA_PO-BSART = ‘ZNPI‘.

POITEM-FREE_ITEM = ‘X‘.

ENDIF.

APPEND POITEM.

CLEAR POITEM.

POITEMX-PO_ITEM = ROW .  "采购凭证的项目编号

POITEMX-QUANTITY = CON.  "采购订单数量

POITEMX-MATERIAL = CON.

POITEMX-PLANT = CON.     "工厂

POITEMX-ITEM_CAT = CON.

IF WA_PO-BSART = ‘ZNPI‘.

POITEMX-FREE_ITEM = CON.

ENDIF.

APPEND POITEMX.

CLEAR POITEMX.

MOVE-CORRESPONDING WA_PO TO TIT_PO_RESULT.

TIT_PO_RESULT-EBELP = ROW.

APPEND TIT_PO_RESULT.

CLEAR TIT_PO_RESULT.

SCHEDULELINE = SCHEDULELINE + 1.

POSCHEDULE-PO_ITEM = ROW . "采购凭证的项目编号

POSCHEDULE-SCHED_LINE = SCHEDULELINE . "采购凭证的项目编号

POSCHEDULE-DEL_DATCAT_EXT = ‘D‘."交货日期的类别

POSCHEDULE-DELIVERY_DATE = WA_PO-EINDT."交货日期

POSCHEDULE-QUANTITY  = WA_PO-MENGE."采购订单数量

APPEND POSCHEDULE.

CLEAR POSCHEDULE.

POSCHEDULEX-PO_ITEM = ROW . "采购凭证的项目编号

POSCHEDULEX-SCHED_LINE = SCHEDULELINE . "采购凭证的项目编号

POSCHEDULEX-DEL_DATCAT_EXT = CON."交货日期的类别

POSCHEDULEX-DELIVERY_DATE = CON."交货日期

POSCHEDULEX-QUANTITY  = CON."采购订单数量

APPEND POSCHEDULEX.

CLEAR POSCHEDULEX.

AT END OF HBBJ.

CALL FUNCTION ‘BAPI_PO_CREATE1‘

EXPORTING

POHEADER               = POHEADER

POHEADERX              = POHEADERX

*                     POADDRVENDOR           =

*                     TESTRUN                =

*                     MEMORY_UNCOMPLETE      =

*                     MEMORY_COMPLETE        =

*                     POEXPIMPHEADER         =

*                     POEXPIMPHEADERX        =

*                     VERSIONS               =

*                     NO_MESSAGING           =

*                     NO_MESSAGE_REQ         =

*                     NO_AUTHORITY           =

*                     NO_PRICE_FROM_PO       =

IMPORTING

EXPPURCHASEORDER       = EPO

*                     EXPHEADER              =

*                     EXPPOEXPIMPHEADER      =

TABLES

RETURN = RETURN

POITEM                 = POITEM

POITEMX                = POITEMX

*                     POADDRDELIVERY         =

POSCHEDULE             = POSCHEDULE

POSCHEDULEX            = POSCHEDULEX

*                     POACCOUNT              =  POACCOUNT

*                     POACCOUNTPROFITSEGMENT =

*                     POACCOUNTX             = POACCOUNTX

*                     POCONDHEADER           =

*                     POCONDHEADERX          =

*                     POCOND                 =

*                     POCONDX                =

*                     POLIMITS               =

*                     POCONTRACTLIMITS       =

*                     POSERVICES             =

*                     POSRVACCESSVALUES      =

*                     POSERVICESTEXT         =

*                     EXTENSIONIN            =

*                     EXTENSIONOUT           =

*                     POEXPIMPITEM           =

*                     POEXPIMPITEMX          =

*                     POTEXTHEADER           =

*                     POTEXTITEM             =  POTEXTITEM

*                     ALLVERSIONS            =

*                     POPARTNER              =

*                     POCOMPONENTS           =

*                     POCOMPONENTSX          =

*                     POSHIPPING             =

*                     POSHIPPINGX            =

*                     POSHIPPINGEXP          =

.

CLEAR LV_ERROR.

LOOP AT RETURN INTO L_RETURN WHERE TYPE = ‘E‘ .

LV_ERROR = ‘1‘.

EXIT.

ENDLOOP.

IF LV_ERROR = ‘1‘.

CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK‘.

CLEAR LV_MESSAGE.

LOOP AT RETURN INTO L_RETURN WHERE TYPE = ‘E‘ .

CONCATENATE LV_MESSAGE L_RETURN-MESSAGE ‘;‘ INTO LV_MESSAGE.

ENDLOOP.

LOOP AT TIT_PO_RESULT.

TIT_PO_RESULT-FLAG = ‘E‘.

CONCATENATE ‘创建PO失败:‘ LV_MESSAGE INTO TIT_PO_RESULT-MESSAGE.

MODIFY TIT_PO_RESULT.

CLEAR TIT_PO_RESULT.

ENDLOOP.

ELSE.

CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘

EXPORTING

WAIT = ‘X‘.

CLEAR LV_EBELN.

LOOP AT RETURN INTO L_RETURN WHERE TYPE = ‘S‘ AND ID = ‘06‘ AND NUMBER = ‘017‘.

LV_EBELN = L_RETURN-MESSAGE_V2.

ENDLOOP.

LOOP AT TIT_PO_RESULT.

TIT_PO_RESULT-FLAG = ‘S‘.

TIT_PO_RESULT-MESSAGE = ‘创建PO成功!‘.

TIT_PO_RESULT-EBELN = LV_EBELN.

MODIFY TIT_PO_RESULT.

CLEAR TIT_PO_RESULT.

ENDLOOP.

ENDIF.

LOOP AT TIT_PO_RESULT.

MOVE-CORRESPONDING TIT_PO_RESULT TO IT_PO_RESULT.

APPEND IT_PO_RESULT.

CLEAR IT_PO_RESULT.

ENDLOOP.

REFRESH: POITEM,POITEMX,POSCHEDULE,POSCHEDULEX,POHEADER,POHEADERX,RETURN.

CLEAR: IT_PO, WA_PO, ROW, POITEM,POITEMX,POSCHEDULE,POSCHEDULEX,POHEADER,POHEADERX,RETURN.

ENDAT.

ENDLOOP.

ENDFORM. " FRM_BAPI_CREATE_PO

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

*&      FORM  FRM_GET_FILENAME

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

*       TEXT

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

*      -->P_P_FILE  TEXT

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

FORM FRM_GET_FILENAME  USING  P_FILE.

DATA: L_FILETAB   TYPE FILETABLE,

L_RC      TYPE I.

CLEAR L_FILETAB.

REFRESH L_FILETAB.

* OPEN DIALOG

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

EXPORTING

WINDOW_TITLE         = ‘选择上传的文件‘

*     DEFAULT_EXTENSION    =

DEFAULT_FILENAME     = ‘*.XLS‘

*     FILE_FILTER          = ‘*.XLS‘

INITIAL_DIRECTORY    = ‘C:\‘

MULTISELECTION       = ‘‘

CHANGING

FILE_TABLE           = L_FILETAB

RC                   = L_RC

EXCEPTIONS

CNTL_ERROR           = 1

ERROR_NO_GUI         = 2

NOT_SUPPORTED_BY_GUI = 3

OTHERS               = 4.

* GET FILE PATH

CHECK L_RC EQ 1.

READ TABLE L_FILETAB INDEX 1 INTO P_FILE.

ENDFORM.                    " FRM_GET_FILENAME

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

*&      FORM  FRM_RETRIVE_DATA

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

*       TEXT

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

*  -->  P1        TEXT

*  <--  P2        TEXT

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

FORM FRM_RETRIVE_DATA.

CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR‘

EXPORTING

TEXT = ‘数据处理中.................‘.

DATA I_EXCEL TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.

REFRESH I_EXCEL.

CLEAR I_EXCEL.

*从已知文件名读入内表

CALL FUNCTION ‘KCD_EXCEL_OLE_TO_INT_CONVERT‘

EXPORTING

FILENAME                = P_FILE

I_BEGIN_COL             = 1

I_BEGIN_ROW             = 1

I_END_COL               = 20

I_END_ROW               = 65535

TABLES

INTERN                  = I_EXCEL[]

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE              = 2

OTHERS                  = 3.

IF SY-SUBRC <> 0.

MESSAGE  ‘打开文件错误,请检查文件,确保关闭文件!‘ TYPE ‘E‘.

STOP.

ENDIF.

REFRESH IT_PO.

CLEAR IT_PO.

LOOP AT I_EXCEL.

CASE I_EXCEL-COL.

WHEN ‘001‘.

WRITE I_EXCEL-VALUE TO IT_PO-BSART.

WHEN ‘002‘.

WRITE I_EXCEL-VALUE TO IT_PO-EKORG.

WHEN ‘003‘.

WRITE I_EXCEL-VALUE TO IT_PO-BUKRS.

WHEN ‘004‘.

WRITE I_EXCEL-VALUE TO IT_PO-EKGRP.

WHEN ‘005‘.

WRITE I_EXCEL-VALUE TO IT_PO-WERKS.

WHEN ‘006‘.

WRITE I_EXCEL-VALUE TO IT_PO-LIFNR.

WHEN ‘007‘.

WRITE I_EXCEL-VALUE TO IT_PO-PSTYP.

WHEN ‘008‘.

WRITE I_EXCEL-VALUE TO IT_PO-MATNR.

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT‘

EXPORTING

INPUT = IT_PO-MATNR

IMPORTING

OUTPUT = IT_PO-MATNR.

WHEN ‘009‘.

WRITE I_EXCEL-VALUE TO IT_PO-MENGE.

WHEN ‘010‘.

WRITE I_EXCEL-VALUE TO IT_PO-EINDT.

IF I_EXCEL-VALUE <> ‘交货期‘.

CALL FUNCTION ‘CONVERT_DATE_TO_INTERNAL‘

EXPORTING

DATE_EXTERNAL = I_EXCEL-VALUE

IMPORTING

DATE_INTERNAL = IT_PO-EINDT.

ENDIF.

WHEN ‘011‘.

WRITE I_EXCEL-VALUE TO IT_PO-HBBJ.

ENDCASE.

AT END OF ROW.

APPEND IT_PO.

CLEAR  IT_PO.

ENDAT.

ENDLOOP.

* 删除表头

DELETE IT_PO INDEX 1.

ENDFORM.                    " FRM_RETRIVE_DATA

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

*&      Form  FRM_DOWNLOAD_DATA

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

*       下载数据到xls文件

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

FORM FRM_DOWNLOAD_DATA .

DATA:LV_FILENAME TYPE STRING.

DATA:BEGIN OF T_FIELDNAMES  OCCURS 0,

NAME TYPE CHAR20,

END OF T_FIELDNAMES.

REFRESH T_FIELDNAMES.

CLEAR T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘订单类型‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘采购组织‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘公司代码‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘采购组‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘工厂‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘供应商‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘行项目类别‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘物料号‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘数量‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘交货期‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘合并标记‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘采购订单号‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘采购订单行项目‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘订单创建是否成功标记‘.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = ‘订单创建返回信息‘.

APPEND T_FIELDNAMES.

CLEAR LV_FILENAME.

CONCATENATE ‘C:\PO批导日志‘ SY-DATUM SY-UZEIT ‘.XLS‘ INTO LV_FILENAME.

CALL FUNCTION ‘GUI_DOWNLOAD‘

EXPORTING

FILENAME                        = LV_FILENAME "‘C:\1234.XLS‘

FILETYPE                        = ‘DAT‘

"这里一般用DAT,如果用ASC则1000-不会显示为-1000,而DAT会显示为-1000,如果用DBF则不会有缩进,即字符前面的空格会被除去,而且字符的前导0也会输出。

CODEPAGE                        = ‘8404‘

TABLES

DATA_TAB                        = IT_PO_RESULT

FIELDNAMES                      = T_FIELDNAMES.

MESSAGE ‘已完成创建凭证,结果保存在C盘目录下,请查看!.‘ TYPE ‘I‘.

ENDFORM.                    " FRM_DOWNLOAD_DATA

时间: 2024-08-26 08:33:50

采购订单批量创建 BAPI_PO_CREATE1的相关文章

3.12 批量创建采购订单

3.12.1   业务方案描述 在生成采购订单前,由采购员审核计划结果,根据供应商的供货状况调整供应商供货数量.供货日期. 所有合格供应商都能够通过下单平台批量下达采购订单,尽管供应商没有供货比例,或供货比例为0. 一个集成的界面,清晰的列出MRP/DRP结果,及相关辅助信息.以帮助仓管员调整计划时获得一些决策信息: 1)审核计划结果: 2)指定供应商: 3)调整计划结果: 4)批量生成采购订单: 3.12.2   业务方案逻辑控制(包含三部分) MRP建议补充程序: 1)将ASL中的该物料可供

SAP ABAP编程 创建采购订单

FUNCTION zmm_jsd_creatpo. *"---------------------------------------------------------------------- *"*"Local interface: *"  IMPORTING *"     VALUE(JSD) TYPE  ZMM_YS_JSD_HEAD-JSD *"  EXPORTING *"     VALUE(E_FLAG) TYPE  C

3.11 手工创建采购订单价格控制

3.11.1   业务方案描述 对Oracle标准<采购订单>界面进行手工下达时进行价格控制. 对于手工创建采购的订单,不希望通过输入采购价格,而是需要从一揽子采购协议中直接获取价格.如果没有协议价格,需要取该物料的标准成本. 3.11.2   业务方案逻辑控制 1. 单价取值逻辑: 1) 按照订单上的供应商.供应商地点.物料编码自动查找一揽子采购协议,用创建日期与一揽子采购协议上的日期分段匹配价格. 2) 如果找不到,则取一揽子协议行上的价格. 3)如果取不到,取该物料编码标准成本. 4)如

SAP收货时自动创建采购订单(或106 ,自动建立退货采购订单)

在实际业务中,常常出现到货物料没有订单或订单未批准的现象,按照SAP的标准流程,应该拒绝收货.但在实际业务中,这些物料可能是紧急采购的急件,如不及时处理,将会影响生产计划的安排.对于这种特殊情况,其实SAP有很灵活的处理方式,即由收货自动创建订单.需要说明的是,这种操作方式并不是SAP推荐的,不应在实际业务中大量采用. 具体流程如下: 1.移动类型101已在后台设置为自动创建定单.具体方法是:进入IMG后台,物料管理->库存管理和实际库存->收货->自动创建采购订单,双击进入后,将101

【MM系列】SAP 采购订单的批量修改

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单的批量修改 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 现在有一个需求,我们需要冻结一批采购订单,但是由于批量冻结的后果无法预知,我们打算用一个折中的办法. 利用采购订单行项目中的“最近收货日期”字段,下面我们先看一下它的解释. 最近可能的收货这是收货(GR)的最近的可接受日期. 如果

100小时练习配置---创建采购订单后做MIGO时报错

新建了物料,也用该物料创建的PO,但在用PO做MIGO收货的时候报下面的错误: 通过去找该工厂下的科目确定配置发现也不是配置问题.后面看物料主数据的时候才发现是物料会计1页签的评估类没有进行维护,如图: 然后就想通过MM02直接更改,但会报个错误,如下: 这是因为该物料已经做了相应的采购单,如果没有库存或者没有建其他单据的时候可以直接更改,但建了采购单之后要把对应的采购单删除之后才能更改, 下面是各种情况更改对应物料的评估类的解决办法: 若已存在已估价库存,则仅可以如下更改评估分类: a) 将物

3.21 采购订单导入MDS

3.21.1   业务方案描述 同一企业集团内部的不同法人之间,双方间内部往来业务频繁.受集团财务各自独立核算的要求,买方和卖方间采用买卖方式进行业务运作和财务结算. 对于买方,按照内部商定的协议价格创建采购订单,下达采购订单.对于卖方,则按照采购订单的数量及需求日期进行生产供应. 为实现企业集团内部不同组织间计划需求的衔接控制,可以将需求组织内未完成的向供应组织采购的采购订单,导入供应组织的MDS中,用于驱动供应组织的的物料需求计划. 涉及逻辑:即:自动将需求组织的采购订单导入供应组织的MDS

批量创建SO

生成一般销售订单和退货订单所要使用的BAPI不同, 一般销售订单: BAPI_SALESORDER_CREATEFROMDAT2 退货订单: BAPI_CUSTOMERRETURN_CREATE 二者的参数基本一样. 以下为例: " tables for bapiDATA: gt_order_header_in   LIKE bapisdhd1.DATA: gt_order_header_inx  LIKE bapisdhd1x.DATA: gt_return            LIKE b

MM--发票校验 及基于采购订单的MIRO发票校验过程(

一.介绍发票校验是物料管理(MM)系统的一部分.它提供物料管理部分和财务会计, 成本控制和资产管理部分的连接.物料管理模块的发票校验为以下目的服务:它完成物料采购的全过程 - 物料采购从采购申请开始,接下来是采购和收货, 并以收到发票而结束.它允许处理不基于物料采购的发票(例如,服务费, 其它花费,过程费用, 等等).它允许处理贷项凭证, 既可以是发票的取消, 也可以是打折扣. 发票校验不是对支付进行处理, 也不是对发票进行分析. 这些需要处理的信息被传递到其它部门. 发票校验的任务包括:输入接