SAP MM BAPI_PO_CREATE1的用法

SAP MM BAPI_PO_CREATE1的用法  

初步对BAPI_PO_CREATE1有了一点了解,下面对这个bapi做一些我的体会讲解:

下面先将程式上传, 在程式中我只简单的对poheader和poitem做了一些输入,产生了一张po,并且po中只可以有一个项被采购,其实其中还有其他可以加入,例如:
schedule,account,一起其他一些东西,,在这个程式中我就不在做介绍了,我将在后续的文章中说出我对这个bapi的其他体会,希望大家关注我的博克,谢!

REPORT 
ZCREATPOBAPI                           
.

TABLES
BAPIMEPOHEADER.

CONSTANTS : C_X
VALUE 'X'.

DATA
WA_POHEADER TYPE BAPIMEPOHEADER.  "所要增加的内容
DATA WA_POHEADERX TYPE BAPIMEPOHEADERX. "针对要增加的内容做一个标记,其实标记过了才可以被修改的
DATA WA_POITEM    TYPE BAPIMEPOITEM.   "po中item的内容,工作区
DATA ITAB_POITEM LIKE TABLE OF WA_POITEM. po中item的内容,内表

DATA WA_POITEMX
TYPE BAPIMEPOITEMX.  "po中item增加内容的标记 工作区
DATA ITAB_POITEMX LIKE TABLE OF WA_POITEMX."po中item增加内容的标记 内表
DATA WA_RETURN  TYPE BAPIRET2.     "消息 返回 ,工作区
DATA ITAB_RETURN LIKE TABLE OF WA_RETURN. "消息返回, 内表

*HEADER.
PARAMETERS: P_NUMBER LIKE  BAPIMEPOHEADER-PO_NUMBER,
            P_COCODE
LIKE  BAPIMEPOHEADER-COMP_CODE DEFAULT 'CN01',
            P_DOTYPE
LIKE  BAPIMEPOHEADER-DOC_TYPE  DEFAULT 'ZST3',
            P_STATUS
LIKE  BAPIMEPOHEADER-STATUS    DEFAULT 'I',
            P_CRDATE
LIKE  BAPIMEPOHEADER-CREAT_DATE ,
            P_CRDABY
LIKE  BAPIMEPOHEADER-CREATED_BY DEFAULT SY-UNAME,
            P_ITEMIN
LIKE  BAPIMEPOHEADER-ITEM_INTVL DEFAULT '1',
            P_VENDOR
LIKE  BAPIMEPOHEADER-VENDOR     DEFAULT 'TWM4',
           
P_LANGU  LIKE  BAPIMEPOHEADER-LANGU,
            P_PMNTTR
LIKE  BAPIMEPOHEADER-PMNTTRMS   DEFAULT 'COD',
           
P_PURCH  LIKE  BAPIMEPOHEADER-PURCH_ORG  DEFAULT 'CN01',
           
P_PURGR  LIKE  BAPIMEPOHEADER-PUR_GROUP  DEFAULT  'KXX',
            P_DOCDAT
LIKE  BAPIMEPOHEADER-DOC_DATE,
           
P_VATCN  LIKE  BAPIMEPOHEADER-VAT_CNTRY  DEFAULT  'CNY'.
*ITEM
SELECTION-SCREEN SKIP.
PARAMETERS: P_POITEM    LIKE BAPIMEPOITEM-PO_ITEM DEFAULT '1',
           
P_MATNER    LIKE BAPIMEPOITEM-MATERIAL,
           
P_PLANT     LIKE BAPIMEPOITEM-PLANT DEFAULT 'CKH1',
           
P_LOCT      LIKE BAPIMEPOITEM-STGE_LOC DEFAULT '0000',
           
P_QUANTI    LIKE BAPIMEPOITEM-QUANTITY ,
           
P_NETPRI    LIKE BAPIMEPOITEM-NET_PRICE,
           
P_PRICEU    LIKE BAPIMEPOITEM-PRICE_UNIT,
           
P_RENAME    LIKE BAPIMEPOITEM-PREQ_NAME DEFAULT SY-UNAME,
           
P_PRDATE    LIKE BAPIMEPOITEM-PERIOD_IND_EXPIRATION_DATE DEFAULT
'D'.

 

 

*herader data
wa_poheader-po_number   = P_NUMBER .
wa_poheader-comp_code   = P_COCODE .
wa_poheader-doc_type    = P_DOTYPE .
wa_poheader-status      = P_STATUS .
wa_poheader-creat_date  = P_CRDATE.
wa_poheader-CREATED_BY = P_CRDABY.
wa_poheader-item_intvl = P_ITEMIN.
wa_poheader-vendor     = P_VENDOR.
wa_poheader-langu      = P_LANGU .
wa_poheader-pmnttrms   = P_PMNTTR.
wa_poheader-purch_org  = P_PURCH .
wa_poheader-pur_group  = P_PURGR .
wa_poheader-doc_date   = P_DOCDAT.
wa_poheader-vat_cntry   = P_VATCN .

*po header flag
wa_poheaderx-po_number   = 'X' .
wa_poheaderx-comp_code   = 'X' .
wa_poheaderx-doc_type    = 'X' .
wa_poheaderx-status      = 'X' .
wa_poheaderx-creat_date  = 'X'.
wa_poheaderx-created_by = 'X'.
wa_poheaderx-item_intvl = 'X'.
wa_poheaderx-vendor     = 'X'.
wa_poheaderx-langu      = 'X' .
wa_poheaderx-pmnttrms   = 'X'.
wa_poheaderx-purch_org  = 'X' .
wa_poheaderx-pur_group  = 'X' .
wa_poheaderx-doc_date   = 'X'.
wa_poheaderx-vat_cntry   = 'X' .

*po item data
wa_poitem-po_item                   
= P_POITEM.
wa_poitem-MATERIAL                  
= P_MATNER .
wa_poitem-PLANT                     
= P_PLANT  .
WA_POITEM-STGE_LOC                  
= P_LOCT .
wa_poitem-QUANTITY                  
= P_QUANTI .
wa_poitem-NET_PRICE                 
= P_NETPRI .
wa_poitem-PRICE_UNIT                
= P_PRICEU .
wa_poitem-PREQ_NAME                 
= P_RENAME .
wa_poitem-PERIOD_IND_EXPIRATION_DATE = P_PRDATE .
APPEND WA_POITEM TO ITAB_POITEM.

*po item flag
wa_poitemx-po_item                  
= p_poitem.
wa_poitemx-po_itemx                  
= 'X'.
wa_poitemx-MATERIAL                  
= 'X' .
wa_poitemx-PLANT                     
= 'X'.
WA_POITEMX-STGE_LOC                  
= 'X'.
wa_poitemx-QUANTITY                  
= 'X'.
wa_poitemx-NET_PRICE                 
= 'X'.
wa_poitemx-PRICE_UNIT                
= 'X'.
wa_poitemx-PREQ_NAME                 
= 'X'.
wa_poitemx-PERIOD_IND_EXPIRATION_DATE = 'X'.
append wa_poitemx to itab_poitemx.

*call bapi
  CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
      POHEADER    = wa_poheader
      POHEADERX   = wa_poheaderX
    TABLES
      RETURN      =
ITAB_RETURN
      POITEM      =
ITAB_POITEM
      POITEMX     = itab_poitemx.
*      POACCOUNT   = I_PO_ACCOUNT
*      POACCOUNTX  = I_PO_ACCOUNTX
*      POSCHEDULE  = I_PO_SCHEDULE
*      POSCHEDULEX = I_PO_SCHEDULEX.

DATA ERROR_LOG
TYPE C.
LOOP AT ITAB_RETURN INTO WA_RETURN.
  IF WA_RETURN-TYPE = 'E'.
    ERROR_LOG = 'X'.
    EXIT.
  ENDIF.
  CLEAR WA_RETURN.
ENDLOOP.
IF ERROR_LOG = 'X'.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
    .
  WRITE 'MESSAGE ERROR'.
  LOOP AT ITAB_RETURN INTO WA_RETURN.
    WRITE: / WA_RETURN-TYPE, WA_RETURN-MESSAGE.
    CLEAR WA_RETURN.
  ENDLOOP.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT   = 'X'.
  LOOP AT ITAB_RETURN INTO WA_RETURN.
    WRITE: / WA_RETURN-TYPE ,WA_RETURN-MESSAGE.
    CLEAR WA_RETURN.
  ENDLOOP.
ENDIF.

 

时间: 2024-10-23 22:52:46

SAP MM BAPI_PO_CREATE1的用法的相关文章

SAP MM Planning File 作用及其生成方式

SAP MM Planning File 作用及其生成方式   Planning File的作用是这个文件里包含的物料才会参与MRP(CBP)的运算.   它的生成方式如下: 一旦物料主数据创建,当MRP VIEW维护好,且有有效的MRP TYPE的时候,系统会自动将该物料信息写入Planning File里.   如果该物料创建的时候,没有维护有效的MRP Type,后来维护好了一个有效的MRP TYPE:或者物料从一个有效的MRP TYPE改成了另外一个MRP TYPE, 系统不会自动将这个

SAP MM 已经配置好了审批策略,为啥创建的PR单据里不出现release strategy选项卡?

SAP MM 明明已经配置好了审批策略,为啥创建的PR单据里不出现release strategy选项卡?   如下的设置,       该审批策略检查PR里的工厂代码和PR的单据类型, 而不管金额多少.   采购申请单据,   单据类型是NB,工厂是3200.问题出在哪里?   经查,得知审批策略中的classification设置有误,如下图:     虽然该审批策略不看PR金额,只看工厂和PR单据类型,但是'Total Value of Item'特性值也不能是空着的.应该改成 '>=0'

SAP MM FK08 (Confirm change vendor) Usage Research

SAP MM FK08 (Confirm change vendor) Usage Research As we known that SAP system has a transaction code FK08 can be used to confirm change vendor.     This functionality was not setup in my previous SAP projects.   If we want to use this functionality,

SAP MM 成本中心采购场景采购申请审批策略配置'挖坑填坑'之成本中心

SAP MM 成本中心采购场景采购申请审批策略配置'挖坑填坑'之成本中心   笔者参与的D项目是一个从零开始的实施项目.项目里有成本中心采购场景,需要各个部门业务人员手工提交采购申请,填写好各自成本中心的code, 然后走相关的审批流程.笔者在这个项目里,对于采购申请的审批,是在单据level审批的,启用了classification.   成本中心相关的特性参数如下:   这几天笔者完成了相关的配置,在自己测试的时候却发现,创建的采购申请里根本不出现release strategy选项卡,导致

SAP MM MB1B + 移动类型321,提示:Enter Goods Receipt Number 之分析与对策

SAP MM MB1B + 移动类型321,提示:Enter Goods Receipt Number 之分析与对策   笔者所在的D项目,是一个从零开始的实施项目.目前正在方案实施阶段,笔者复制SAP标准的warehouse Number的配置数据,创建了项目自己的warehouse number, 该仓库号下WM层面的移动类型也是复制SAP标准的移动类型配置数据.   在自己测试的过程中,发现了一个之前从没有遇到过的问题:MB1B 加移动类型321 将质检库存释放到可用库存的事务界面里,输入

SAP MM PO上不勾选‘Origin Accept.’也能用107 + 109 组合移动类型收货

SAP MM PO上不勾选'Origin Accept.'也能用107 + 109 组合移动类型收货 [2016原创字-2016002] 如下PO的item 20没有勾选'Origin Accept.'选项,   却依旧能使用107+109 组合移动类型对其执行收货:        

SAP MM Transportation of PR Release Strategy with Classification

SAP MM Transportation of PR Release Strategy with Classification   笔者所在的D项目是一个从零开始实施的项目,是故作为实施顾问,笔者需要靠自己为各种业务流程的实现出方案,没有现成的global template可以拿来推广了,并且我们现在设计的方案,将会作为客户的全球模板推广到其它工厂.   项目的客户是一家德国跨国企业设在中国的制造工厂.德国人严谨而保守的做事风格,也体现在该工厂的日常管理中.首先,各个部门大老板,几乎都是从德国

SAP MM 移动类型107和109之研究

SAP MM 移动类型107和109 之研究 采购订单收货的移动类型,最常见的当属101,102,122以及161.  103和105是一对,用来先收到供应商冻结库存(无价值),然后再用105收到自己的库存里.这种业务应该是用到先进行物料质量判定再决定是否收货的业务场景.  那么107和109移动类型用于什么场景呢 ?  在采购单行项目细节里,有一个Checkbox叫作'Origin Accept.'(原始接收).如下图: 打上这个勾,表示这个料在供应商那里就已经得到认可了,肯定要收货给钱的.打

SAP MM PR单据类型的配置里‘Control’和’Doc.Type’字段的作用?

SAP MM PR单据类型的配置里'Control'和'Doc.Type'字段的作用?   Control:如果选成了T,是使用于STO(公司间转储或者公司内转储),需要将Plant当作VENDOR. Control indicator for purchasing document type Allows differentiation between the various kinds of purchasing document. Use On the basis of the purch