SAP 各模塊常用的BAPI


MM模塊
1、 BAPI_MATERIAL_SAVEDATA 創建物料主數據
注意參數EXTENSIONIN的使用,可以創建自定義字段
例如:WA_BAPI_TE_MARA-MATERIAL = ITAB_UP-MATNR.
         T_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MARA'.
         T_EXTENSIONIN-VALUEPART1 = WA_BAPI_TE_MARA.
        APPEND T_EXTENSIONIN.
 
        WA_BAPI_TE_MARAX-MATERIAL = ITAB_UP-MATNR.
   T_EXTENSIONINX-STRUCTURE = 'BAPI_TE_MARAX'.
        T_EXTENSIONINX-VALUEPART1 = WA_BAPI_TE_MARAX.
       APPEND T_EXTENSIONINX.
 
2、 BAPI_OBJCL_CREATE 分類視圖的創建
 
3、 BAPI_OBJCL_GETCLASSES 分類視圖得到詳細信息
 
4、 BAPI_MATERIAL_SAVEREPLICA 物料視圖的擴充
 
5、 BAPI_GOODSMVT_CREATE 創建物料憑證 注意表T158G可以決定goodsmvt_code
 
      GOODSMVT_CODE參數對應值:
  01 MB01
  02 MB31
  03 MB1A
  04 MB1B
  05 MB1C
  06 MB11
  07 MB04
 
6、 BAPI_GOODSMVT_CANCEL 沖銷物料憑證
 
7、 BAPI_PR_CREATE 創建PR
 
8、 BAPI_PO_CREATE1 創建PO
 
9、 BAPI_PO_CHANGE 修改PO和刪除PO
 
10、WS_REVERSE_GOODS_ISSUE 沖銷交貨單的過賬發貨
 
11、BAPI_RESERVATION_CREATE1 創建預留   如果要檢查ATP,必須使用
      BAPI_RESERVATION_CREATE
 
12、BAPI_RESERVATION_CHANGE 修改和刪除預留
 
13、PRICES_CHANGE PRICES_POST 更改物料移動平均價或者標准價格
 
 
如果要檢查ATP,必須使用第二個
SD模塊
1、 BAPI_SALESORDER_CREATEFROMDAT2 創建銷售訂單
 
2、 SD_SALESDOCUMENT_CREATE 創建銷售訂單
 
3、 BAPI_OUTB_DELIVERY_CREATE_SLS 根據銷售訂單創建交貨單
 
4、 BAPI_BILLINGDOC_CREATEMULTIPLE 創建發票,注意參數ref_doc_ca
 
5、 BAPI_SALESORDER_CHANGE 修改或者刪除銷售訂單
 
6、 MB_CANCEL_GOODS_MOVEMENT 沖銷交貨單的過賬發貨
 
7、 BAPI_BILLINGDOC_CANCEL1 發票的沖銷
 
8、 BAPI_OUTB_DELIVERY_CHANGE 修改外向交貨單
 
9、 SD_DELIVERY_UPDATE_PICKING 修改外向交貨單揀配數量
 
10、WS_DELIVERY_UPDATE 外向交貨單的發貨過賬

11、SD_CUSTOMER_MAINTAIN_ALL   創建客戶 。
        table參數中有很多表,其中X打頭代表要插入的數據,Y打頭代表要刪除的數據。
DATA: TMP   TYPE STRING,
      LEN   TYPE I,
      FLAG  TYPE CHAR1,
      SY_SUBRC(2) TYPE C.

CLEAR :E_MESS.

*--判斷是否存在同名客戶
IF I_KNA1-KUNNR IS INITIAL.
  SELECT SINGLE NAME1 INTO TMP
    FROM KNA1
   WHERE NAME1 = I_KNA1-NAME1
     AND NAME2 = I_KNA1-NAME2
    .
  IF SY-SUBRC = 0.
    FLAG    = 'X'.
    E_STATU = 'E'.
    E_MESS  = '存在名稱相同的客戶'.
  ENDIF.
ENDIF.
*--判斷郵編的長度
LEN = STRLEN( I_KNA1-PSTLZ ).
IF LEN <> 6.
  FLAG    = 'X'.
  E_STATU = 'E'.
  E_MESS  = '郵編應該是6位數'.
ENDIF.

IF FLAG = ''.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    INPUT         = I_KNA1-KUNNR
  IMPORTING
    OUTPUT        = I_KNA1-KUNNR
          .

  I_KNA1-LAND1 = 'CN'.
  I_KNA1-SPRAS = 1.
**--客戶的銷售數據
  I_KNVV-KUNNR = I_KNA1-KUNNR.
*  I_KNVV-VKORG =  ' ' ."銷售組織
  I_KNVV-VTWEG =  '10' .      "分銷渠道
  I_KNVV-SPART =  '00' .      "產品組
*  I_KNVV-BZIRK =  ' ' ."銷售地區
*  I_KNVV-VKBUR =  ' ' ."銷售部門
  I_KNVV-WAERS =  'RMB' .     "貨幣
  I_KNVV-KALKS =  '1' .       "定價過程
  I_KNVV-VERSG =  '1' .       "客戶統計組
  I_KNVV-ANTLF =  '9'.        "最大部分交貨
  I_KNVV-VSBED = '01'. "裝運條件
  I_KNVV-KZAZU = 'X'.  "訂單組合chk
  I_KNVV-ZTERM = '9101'.    "付款條件
  I_KNVV-KABSS = '0001'. "  付款擔保過程
  I_KNVV-KKBER = '9999'.   "信貸控制范圍
  I_KNVV-KTGRD = '01'.   "賬戶分配組

  IF I_KNA1-KTOKD = 'A001'.
    I_KNVV-KDGRP =  '11'.  "客戶組
    I_KNVV-KONDA =  '01'.  "價格組
    I_KNB1-FDGRV = 'E1'.    " 現金管理組
  ELSEIF I_KNA1-KTOKD = 'A002'.
    I_KNVV-KDGRP =  '21'.  "客戶組
    I_KNVV-KONDA =  '02'.  "價格組
    I_KNB1-FDGRV = 'E2'.    " 現金管理組
  ENDIF.
**--客戶的公司數據

  I_KNB1-KUNNR = I_KNA1-KUNNR.
  I_KNB1-BUKRS = I_KNVV-VKORG.
*  I_KNB1-AKONT = ''.   "統馭科目
  I_KNB1-ZTERM = '9101'.   "付款條件
  I_KNB1-XZVER = 'X'.  "付款歷史記錄chk
**--銀行
  READ TABLE T_XKNBK INDEX 1.
  IF I_KNA1-KUNNR IS NOT INITIAL.
    SELECT SINGLE * INTO T_YKNBK
      FROM KNBK
     WHERE KUNNR = I_KNA1-KUNNR
       AND BANKS = 'CN'.
    IF SY-SUBRC EQ 0.
      APPEND T_YKNBK.
    ENDIF.
  ENDIF.

  T_XKNBK-KUNNR = I_KNA1-KUNNR.
  T_XKNBK-BANKS = 'CN'.         "銀行國家代碼
  T_XKNBK-BANKL = '20000'.      "銀行碼
  MODIFY T_XKNBK INDEX 1 TRANSPORTING KUNNR BANKS BANKL.

**--客戶聯系人
  READ TABLE T_XKNVK INDEX 1.
  IF I_KNA1-KUNNR IS NOT INITIAL.
    SELECT SINGLE * INTO T_YKNVK
      FROM KNVK
     WHERE KUNNR = I_KNA1-KUNNR.
    IF SY-SUBRC EQ 0.
      APPEND T_YKNVK.
    ENDIF.
  ENDIF.

  T_XKNVK-KUNNR = I_KNA1-KUNNR.
  T_XKNVK-NAMEV = '#'.
  T_XKNVK-ABTNR = '0002'.
  T_XKNVK-PAFKT = '02'.
  MODIFY T_XKNVK INDEX 1 TRANSPORTING KUNNR NAMEV ABTNR PAFKT.
**  合作伙伴
  IF I_KNA1-KUNNR IS NOT INITIAL.
    SELECT SINGLE * INTO T_YKNVP
      FROM KNVP
     WHERE KUNNR = I_KNA1-KUNNR
       AND VKORG = I_KNVV-VKORG
       AND VTWEG = '10'
       AND SPART = '00'
       AND PARVW = 'VE'.
    IF SY-SUBRC EQ 0.
      APPEND T_YKNVP.
    ENDIF.
  ENDIF.
  T_XKNVP-KUNNR = I_KNA1-KUNNR.
  T_XKNVP-VKORG =  I_KNVV-VKORG ."銷售組織
  T_XKNVP-VTWEG =  '10' ."分銷渠道
  T_XKNVP-SPART =  '00' ."產品組
  T_XKNVP-PARVW = 'VE '.
*  T_XKNVP-PERNR = ''.
  MODIFY T_XKNVP INDEX 1 TRANSPORTING KUNNR  VKORG VTWEG SPART PARVW.
**稅收
   IF I_KNA1-KUNNR IS NOT INITIAL.
      SELECT SINGLE * INTO T_YKNVI
        FROM KNVI
       WHERE KUNNR = I_KNA1-KUNNR
         AND ALAND = 'CN'
         AND TATYP = 'MWST'.
      IF SY-SUBRC EQ 0.
        APPEND T_YKNVI.
      ENDIF.
    ENDIF.
    T_XKNVI-KUNNR = I_KNA1-KUNNR.
    T_XKNVI-ALAND = 'CN'.
    T_XKNVI-TATYP = 'MWST'.
    T_XKNVI-TAXKD = '1'.
    APPEND T_XKNVI .

  CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'
   EXPORTING
     I_KNA1                              = I_KNA1
     I_KNB1                              = I_KNB1
     I_KNVV                              = I_KNVV
     I_MAINTAIN_ADDRESS_BY_KNA1          = 'X'
     I_KNB1_REFERENCE                    = I_KNB1_REFERENCE
     I_FORCE_EXTERNAL_NUMBER_RANGE       = I_FORCE_EXTERNAL_NUMBER_RANGE
     I_NO_BANK_MASTER_UPDATE             = I_NO_BANK_MASTER_UPDATE
     I_CUSTOMER_IS_CONSUMER              = I_CUSTOMER_IS_CONSUMER
     I_RAISE_NO_BTE                      = I_RAISE_NO_BTE
     PI_POSTFLAG                         = 'X'
     PI_CAM_CHANGED                      = PI_CAM_CHANGED
     PI_ADD_ON_DATA                      = PI_ADD_ON_DATA
     I_FROM_CUSTOMERMASTER               = 'X'
   IMPORTING
     E_KUNNR                             = E_KUNNR
     O_KNA1                              = O_KNA1
   TABLES
     T_XKNAS                             = T_XKNAS
     T_XKNBK                             = T_XKNBK
     T_XKNB5                             = T_XKNB5
     T_XKNEX                             = T_XKNEX
     T_XKNVA                             = T_XKNVA
     T_XKNVD                             = T_XKNVD
     T_XKNVI                             = T_XKNVI
     T_XKNVK                             = T_XKNVK
     T_XKNVL                             = T_XKNVL
     T_XKNVP                             = T_XKNVP
     T_XKNZA                             = T_XKNZA

     T_YKNAS                             = T_YKNAS
     T_YKNBK                             = T_YKNBK
     T_YKNB5                             = T_YKNB5
     T_YKNEX                             = T_YKNEX
     T_YKNVA                             = T_YKNVA
     T_YKNVD                             = T_YKNVD
     T_YKNVI                             = T_YKNVI
     T_YKNVK                             = T_YKNVK
     T_YKNVL                             = T_YKNVL
     T_YKNVP                             = T_YKNVP
     T_YKNZA                             = T_YKNZA
     T_UPD_TXT                           = T_UPD_TXT
   EXCEPTIONS
     CLIENT_ERROR                        = 1
     KNA1_INCOMPLETE                     = 2
     KNB1_INCOMPLETE                     = 3
     KNB5_INCOMPLETE                     = 4
     KNVV_INCOMPLETE                     = 5
     KUNNR_NOT_UNIQUE                    = 6
     SALES_AREA_NOT_UNIQUE               = 7
     SALES_AREA_NOT_VALID                = 8
     INSERT_UPDATE_CONFLICT              = 9
     NUMBER_ASSIGNMENT_ERROR             = 10
     NUMBER_NOT_IN_RANGE                 = 11
     NUMBER_RANGE_NOT_EXTERN             = 12
     NUMBER_RANGE_NOT_INTERN             = 13
     ACCOUNT_GROUP_NOT_VALID             = 14
     PARNR_INVALID                       = 15
     BANK_ADDRESS_INVALID                = 16
     TAX_DATA_NOT_VALID                  = 17
     NO_AUTHORITY                        = 18
     COMPANY_CODE_NOT_UNIQUE             = 19
     DUNNING_DATA_NOT_VALID              = 20
     KNB1_REFERENCE_INVALID              = 21
     CAM_ERROR                           = 22
     OTHERS                              = 23
            .
  IF SY-SUBRC NE 0.
    SY_SUBRC = SY-SUBRC.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

     E_STATU = 'E'.
     CONCATENATE '客戶更新失敗(' SY_SUBRC '' INTO E_MESS.

  ELSE.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
     EXPORTING
       WAIT          = 'X'.
    IF SY-SUBRC = 0.
       E_STATU = 'S'.
       E_MESS  = '客戶更新成功'.
       E_KUNNR = O_KNA1-KUNNR.
    ELSE.
       E_STATU = 'E'.
       CONCATENATE '客戶更新失敗(' SY_SUBRC '' INTO E_MESS.
    ENDIF.

  ENDIF.

ENDIF.

 PM模塊

1、BAPI_OBJCL_CREATE 、
     BAPI_OBJCL_CHANGE、
     BAPI_OBJCL_GETDETAIL
     計量點通用屬性導入
 
2、MEASUREM_DOCUM_RFC_SINGLE_001 計量憑證創建
 
FI模塊
1、K_HIERARCHY_TABLES_READ 成本要素組明細
 
2、BAPI_ACC_DOCUMENT_POST 創建會計憑證
 
3、BAPI_ACC_DOCUMENT_REV_POST 反沖會計憑證   可以沖銷自開發程序生成的憑證   必須傳入交易碼參數
     BAPI_ACC_GL_POSTING_REV_POST 只能沖銷標准TCODE生成的憑證
 
4、 FCOM_COSTCENTER_CHANGEMULTIPLE
      FCOM_COSTCENTER_CREATEMULTIPLE
      BAPI_COSTCENTER_CHANGEMULTIPLE :Change One or More Cost Centers
      BAPI_COSTCENTER_CHECKMULTIPLE  :Check One or More Cost Centers
      BAPI_COSTCENTER_CREATEMULTIPLE :Create One or More Cost Centers
      BAPI_COSTCENTER_DELETEMULTIPLE :Delete One or More Cost Centers
 
CALL FUNCTION 'FCOM_COSTCENTER_CHANGEMULTIPLE'
      EXPORTING
        iv_coarea     = '9999'
        it_costcenter = it_mm
      IMPORTING
        et_message    = lt_mm
      EXCEPTIONS
        failed        = 1
        OTHERS        = 2.CALL FUNCTION 'FCOM_COSTCENTER_CREATEMULTIPLE'
      EXPORTING
        iv_coarea     = '9999'
        it_costcenter = it_cc
      IMPORTING
        et_message    = lt_cc
      EXCEPTIONS
        failed        = 1
        OTHERS        = 2.

 

 
 1    SELECT SINGLE * FROM BKPF INTO L_BKPF
 2        WHERE BUKRS = IW_BUKRS
 3          AND BELNR = IW_bELNR
 4          AND GJAHR = IW-GJAHR.
 5 
 6       REVERSAL-OBJ_TYPE = L_BKPF-AWTYP.
 7       CONCATENATE IW_-BELNR IW_-BUKRS IW_-GJAHR INTO REVERSAL-OBJ_KEY_R.
 8       REVERSAL-OBJ_KEY = REVERSAL-OBJ_KEY_R.
 9       REVERSAL-OBJ_KEY = '$'.
10 
11       CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
12        IMPORTING
13         OWN_LOGICAL_SYSTEM = REVERSAL-OBJ_SYS
14        EXCEPTIONS
15         OWN_LOGICAL_SYSTEM_NOT_DEFINED = 1
16         OTHERS = 2.
17 
18       REVERSAL-REASON_REV = '01'.  "原因
19       REVERSAL-PSTNG_DATE = SY-DATUM.
20 
21       CLEAR: RETURN.
22 
23       CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST'
24         EXPORTING
25           REVERSAL       = REVERSAL
26           BUS_ACT        = 'RFBU'
27         IMPORTING
28           OBJ_TYPE       = OBJTYPE
29           OBJ_KEY        = OBJKEY
30           OBJ_SYS        = OBJSYS
31         TABLES
32           RETURN         = RETURN
33                 .

 

4、BAPI_INCOMINGINVOICE_CREATE 發票檢驗(miro)
 
5、BAPI_INCOMINGINVOICE_CANCEL 發票校驗沖銷(mr8m)
PS模塊
1、BAPI_PS_INITIALIZATION、BAPI_BUS2001_CREATE、BAPI_PS_PRECOMMIT 創建項目定義
 
2、BAPI_PS_INITIALIZATION、BAPI_BUS2054_CREATE_MULTI、BAPI_PS_PRECOMMIT 創建WBS
創建WBS的時候,注意參數 wbs_left和 wbs_up,這個是創建有層級的WBS必須要填寫的
 
3、KBPP_EXTERN_UPDATE_CO 修改項目和WBS的預算
 
 
--------------------------------------------------------------------------------------------------------------
BAPI:BAPI_SALESORDER_CHANGE (TCODE:VA02 銷售訂單修改)
*&---------------------------------------------------------------------*
*&      Form  FRM_CHANGE_SALESORDER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LT_ITEM  text
*      -->P_LT_COND  text
*      -->P_LT_MSG  text
*      -->P_LS_HEAD  text
*      <--P_LV_EIND  text
*----------------------------------------------------------------------*

UPDATEFLAGS:
  • U = change  flg值的三種不同意義
 
          
  • D = delete
 
          
  • I = add

FORM frm_change_salesorder TABLES tp_item STRUCTURE zrmxsds004 tp_cond STRUCTURE zrmxsds005 tp_message STRUCTURE zifsret01 USING up_head LIKE zrmxsds003 CHANGING cp_eind TYPE c. DATA: ls_item LIKE zrmxsds004, ls_cond LIKE zrmxsds005, ls_msg LIKE zifsret01, ls_vbep LIKE vbep. DATA: wa_header TYPE bapisdh1, "表頭 wa_headerx TYPE bapisdh1x, "表頭標志 wa_partner TYPE bapiparnr, "業務伙伴 wa_partnerc TYPE bapiparnrc, wa_item TYPE bapisditm, "行項目 wa_itemx TYPE bapisditmx, wa_cond TYPE bapicond, "價格條件 wa_condx TYPE bapicondx, wa_schdl TYPE bapischdl, "交付計划 wa_schdlx TYPE bapischdlx, wa_return TYPE bapiret2, wa_sdls TYPE bapisdls, wa_text TYPE bapisdtext. "文本 DATA: lt_partner TYPE STANDARD TABLE OF bapiparnr, lt_partnerc TYPE STANDARD TABLE OF bapiparnrc, lt_item TYPE STANDARD TABLE OF bapisditm, lt_itemx TYPE STANDARD TABLE OF bapisditmx, lt_schdl TYPE STANDARD TABLE OF bapischdl, lt_schdlx TYPE STANDARD TABLE OF bapischdlx, lt_cond TYPE STANDARD TABLE OF bapicond, lt_condx TYPE STANDARD TABLE OF bapicondx, lt_return TYPE STANDARD TABLE OF bapiret2, lt_text LIKE STANDARD TABLE OF bapisdtext. DATA: lt_sokey TYPE STANDARD TABLE OF zrmxsds015, ls_sokey TYPE zrmxsds015. *--------------------------------------------------------------------* * Header CLEAR: wa_header,wa_headerx. IF up_head-updateflag = cns_update. wa_header-pmnttrms = up_head-zterm. "付款條件 wa_headerx-pmnttrms = cns_yes. wa_headerx-updateflag = cns_update. "Update *--------------------------------------------------------------------* * Header texts *表頭文本,若傳輸空值,則清空該字段 CLEAR: wa_text,lt_text[]. wa_text-itm_number = space. wa_text-text_id = cns_textid. wa_text-langu = sy-langu. wa_text-format_col = '*'. wa_text-text_line = up_head-tknum. "運輸合同號 APPEND wa_text TO lt_text. ENDIF. *--------------------------------------------------------------------* * Partners IF up_head-kunnr_re IS NOT INITIAL. "收票方 CLEAR: wa_partnerc. wa_partnerc-document = up_head-vbeln. wa_partnerc-itm_number = '000000'. wa_partnerc-updateflag = cns_update. wa_partnerc-partn_role = 'RE'. wa_partnerc-p_numb_new = up_head-kunnr_re. APPEND wa_partnerc TO lt_partnerc. ENDIF. IF up_head-kunnr_rg IS NOT INITIAL. "付款方 CLEAR: wa_partnerc. wa_partnerc-document = up_head-vbeln. wa_partnerc-itm_number = '000000'. wa_partnerc-updateflag = cns_update. wa_partnerc-partn_role = 'RG'. wa_partnerc-p_numb_new = up_head-kunnr_rg. APPEND wa_partnerc TO lt_partnerc. ENDIF. IF up_head-kunnr_we IS NOT INITIAL. "送達方 CLEAR: wa_partnerc. wa_partnerc-document = up_head-vbeln. wa_partnerc-itm_number = '000000'. wa_partnerc-updateflag = cns_update. wa_partnerc-partn_role = 'WE'. wa_partnerc-p_numb_new = up_head-kunnr_we. APPEND wa_partnerc TO lt_partnerc. ENDIF. *--------------------------------------------------------------------* * Items REFRESH: lt_item, lt_cond, lt_schdl, lt_itemx, lt_condx,lt_schdl. LOOP AT tp_item INTO ls_item. IF ls_item-updateflag = cns_new. "新增行項目 CLEAR wa_item. wa_item-itm_number = ls_item-posnr. wa_item-material = ls_item-mabnr. "物料 wa_item-sales_unit = ls_item-vrkme. "計量單位 wa_item-plant = ls_item-werks. "工廠 wa_item-store_loc = ls_item-lgort. "庫存地 APPEND wa_item TO lt_item. "行狀態 wa_itemx-itm_number = ls_item-posnr. wa_itemx-updateflag = cns_new. wa_itemx-material = cns_yes. wa_itemx-sales_unit = cns_yes. wa_itemx-plant = cns_yes. wa_itemx-store_loc = cns_yes. APPEND wa_itemx TO lt_itemx. "Schedule lines CLEAR: wa_schdl,wa_schdlx. wa_schdl-itm_number = ls_item-posnr. wa_schdl-req_qty = ls_item-kwmeng. "數量 APPEND wa_schdl TO lt_schdl. wa_schdlx-itm_number = ls_item-posnr. wa_schdlx-updateflag = cns_new. wa_schdlx-req_qty = cns_yes. APPEND wa_schdlx TO lt_schdlx. "新增行,需要對自動生成的生產訂單進行下達 CLEAR ls_sokey. ls_sokey-vbeln = up_head-vbeln. ls_sokey-posnr = ls_item-posnr. APPEND ls_sokey TO lt_sokey. ELSEIF ls_item-updateflag = cns_update. "更新行項目信息 * Schedule line * 僅行數量 CLEAR: wa_schdl,wa_schdlx. wa_schdl-itm_number = ls_item-posnr. wa_schdl-sched_line = '0001'. "默認都是第一行 wa_schdl-req_qty = ls_item-kwmeng. "數量 APPEND wa_schdl TO lt_schdl. wa_schdlx-itm_number = ls_item-posnr. wa_schdlx-sched_line = '0001'. wa_schdlx-updateflag = cns_update. wa_schdlx-req_qty = cns_yes. APPEND wa_schdlx TO lt_schdlx. ENDIF. ENDLOOP. *--------------------------------------------------------------------* * Item Conditions * 價格條件,需要設置該參數,才能夠修改價格條件 wa_sdls-cond_handl = cns_yes. LOOP AT tp_cond INTO ls_cond. IF ls_cond-updateflag = cns_new. "新增價格條件記錄 CLEAR: wa_cond,wa_condx. wa_cond-itm_number = ls_cond-posnr. wa_cond-cond_type = ls_cond-kschl. "定價條件 wa_cond-cond_value = ls_cond-kbetr. "價格 wa_cond-currency = ls_cond-koein. "貨幣或% wa_cond-cond_unit = ls_cond-kmein. "條件單位 wa_cond-cond_p_unt = ls_cond-kpein. "條件定價單位 APPEND wa_cond TO lt_cond. wa_condx-itm_number = ls_cond-posnr. wa_condx-cond_type = ls_cond-kschl. "定價條件 wa_condx-updateflag = cns_new. wa_condx-cond_value = cns_yes. "價格 wa_condx-currency = cns_yes. "貨幣或% wa_condx-cond_unit = cns_yes. "條件單位 wa_condx-cond_p_unt = cns_yes. "條件定價單位 APPEND wa_condx TO lt_condx. ELSEIF ls_cond-updateflag = cns_update. "更新價格條件記錄 CLEAR: wa_cond,wa_condx. "需要讀取已經存在行的Key PERFORM frm_get_cond_key USING up_head-vbeln ls_cond-posnr ls_cond-kschl CHANGING wa_cond-cond_st_no wa_cond-cond_count. wa_cond-itm_number = ls_cond-posnr. * wa_cond-cond_st_no = 040. * wa_cond-cond_count = 01. wa_cond-cond_type = ls_cond-kschl. "定價條件 wa_cond-cond_value = ls_cond-kbetr. "價格 wa_cond-currency = ls_cond-koein. "貨幣或% wa_cond-cond_unit = ls_cond-kmein. "條件單位 wa_cond-cond_p_unt = ls_cond-kpein. "條件定價單位 APPEND wa_cond TO lt_cond. wa_condx-itm_number = ls_cond-posnr. wa_condx-cond_st_no = wa_cond-cond_st_no. wa_condx-cond_count = wa_cond-cond_count. wa_condx-cond_type = ls_cond-kschl. wa_condx-updateflag = cns_update. wa_condx-cond_value = cns_yes. wa_condx-currency = cns_yes. wa_condx-cond_unit = cns_yes. wa_condx-cond_p_unt = cns_yes. APPEND wa_condx TO lt_condx. ELSE. "報錯 ENDIF. ENDLOOP. * Call BAPI CALL FUNCTION 'BAPI_SALESORDER_CHANGE' EXPORTING salesdocument = up_head-vbeln order_header_in = wa_header order_header_inx = wa_headerx * SIMULATION = * BEHAVE_WHEN_ERROR = ' ' * INT_NUMBER_ASSIGNMENT = ' ' logic_switch = wa_sdls * NO_STATUS_BUF_INIT = ' ' TABLES return = lt_return order_item_in = lt_item order_item_inx = lt_itemx * partners = lt_partner partnerchanges = lt_partnerc * PARTNERADDRESSES = * ORDER_CFGS_REF = * ORDER_CFGS_INST = * ORDER_CFGS_PART_OF = * ORDER_CFGS_VALUE = * ORDER_CFGS_BLOB = * ORDER_CFGS_VK = * ORDER_CFGS_REFINST = schedule_lines = lt_schdl schedule_linesx = lt_schdlx order_text = lt_text * ORDER_KEYS = conditions_in = lt_cond conditions_inx = lt_condx * EXTENSIONIN = . * 處理錯誤消息:通過判斷消息的類型,來判斷BAPI是否成功 LOOP AT lt_return INTO wa_return. CLEAR ls_msg. ls_msg-class = 'BUS'. ls_msg-msgtyp = wa_return-type. ls_msg-msgno = wa_return-number. ls_msg-msgtxt = wa_return-message. APPEND ls_msg TO tp_message. IF wa_return-type EQ 'E' OR wa_return-type = 'A' OR wa_return = 'X'. cp_eind = 'X'. "失敗 ENDIF. ENDLOOP. IF cp_eind NE 'X'. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' . ENDIF. CHECK cp_eind NE 'X' AND lt_sokey[] IS NOT INITIAL. * 銷售訂單自動產生生產訂單,對生產訂單進行下達 CALL FUNCTION 'Z_RMXPP_PRDORD_RELEASE' * EXPORTING * I_WAIT = 3 TABLES t_sokey = lt_sokey EXCEPTIONS no_saleorders = 1 no_valid_saleorders = 2 cannot_find_product_orders = 3 OTHERS = 4 . 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_create_salesorder *&---------------------------------------------------------------------* *& Form FRM_GET_COND_KEY *&---------------------------------------------------------------------* * 讀取價格條件記錄的Key *----------------------------------------------------------------------* * -->P_UP_HEAD_VBELN text * -->P_LS_COND_POSNR text * -->P_LS_COND_KSCHL text * <--P_WA_COND_COND_ST_NO text * <--P_WA_COND_COND_COUNT text *----------------------------------------------------------------------* FORM frm_get_cond_key USING up_vbeln LIKE vbap-vbeln up_posnr LIKE vbap-posnr up_kschl LIKE konv-kschl CHANGING cp_st_no LIKE konv-stunr cp_count LIKE konv-zaehk. DATA: lv_knumv LIKE vbak-knumv. " 由於需要多次判斷,預先讀取聚集表,將訂單的所有行讀取出來 IF gt_konv[] IS INITIAL. SELECT SINGLE knumv INTO lv_knumv FROM vbak WHERE vbeln = up_vbeln. SELECT knumv kposn kschl stunr zaehk INTO CORRESPONDING FIELDS OF TABLE gt_konv FROM konv WHERE knumv = lv_knumv. * AND kposn = up_posnr. SORT gt_konv BY kposn kschl. ENDIF. CLEAR gwa_konv. READ TABLE gt_konv INTO gwa_konv WITH KEY kposn = up_posnr kschl = up_kschl BINARY SEARCH. IF sy-subrc EQ 0. cp_st_no = gwa_konv-stunr. cp_count = gwa_konv-zaehk. ENDIF. ENDFORM. " FRM_GET_COND_KEY

 PP模塊

 

生產計划的BAPI列表::

Routing(工藝路線)

BAPI_ROUTING_CREATE                                                                  創建工藝路線BAPI - ca03

BAPI_ROUTING_EXISTENCE_CHECK                                             檢查工藝路線是否存在 

Reference operation set:參考操作集

BAPI_REFSETOFOPERATIONS_CREATE                                       創建參考參考工序集

BAPI_REFSETOFOPR_EXISTENCE_CHK                                       檢查參考參考工序集

Planned order:(計划訂單)

BAPI_PLANNEDORDER_CHANGE                                                   更改計划訂單  -md04

BAPI_PLANNEDORDER_CREATE                                                    創建計划訂單

BAPI_PLANNEDORDER_DELETE                                                     刪除計划訂單

BAPI_PLANNEDORDER_EXIST_CHECK                                          檢查計划訂單是否存在

BAPI_PLANNEDORDER_GET_DETAIL                                             獲取計划訂單詳細信息(計划訂單) 

BAPI_PLANNEDORDER_GET_DET_LIST                                         獲得計划訂單信息

Planned Independent Requirement:(計划獨立需求)

BAPI_REQUIREMENTS_CHANGE                                                      更改計划獨立需求 -md61

BAPI_REQUIREMENTS_CREATE                                                       創建計划獨立需求

BAPI_REQUIREMENTS_GETDETAIL                                                  顯示計划獨立需求

Production order:(生產訂單)

BAPI_PRODORD_WM_MAT_STAGING                                             WM材料分期

BAPI_PRODORD_SETUSERSTATUS                                                設置用戶狀態

BAPI_PRODORD_SET_DEL_INDICATOR                                         設置刪除標識

BAPI_PRODORD_SET_DELETION_FLAG                                         設置刪除標識

BAPI_PRODORD_SCHEDULE                                                            進行調整

BAPI_PRODORD_REVOKEUSERSTATUS                                        取消用戶狀態

BAPI_PRODORD_RELEASE                                                               發布

BAPI_PRODORD_GET_LIST                                                               列表抬頭訂單

BAPI_PRODORD_GET_DETAIL                                                          抬頭訂單明細

BAPI_PRODORD_EXIST_CHECK                                                       確認檢查性

BAPI_PRODORD_CREATE_FROM_REF                                           創建模板

BAPI_PRODORD_CREATE_FROM_PLORD                                     創建帶有計划訂單

BAPI_PRODORD_CREATE_CAP_REQ                                             產生能力需求

BAPI_PRODORD_CREATE                                                                 創建生產訂單

BAPI_PRODORD_COSTING                                                               創建成本估計

BAPI_PRODORD_COMPLETE_TECH                                               完整的技術

BAPI_PRODORD_CLOSE                                                                   關閉訂單

BAPI_PRODORD_CHECK_MAT_AVAIL                                             檢查物料可用性

BAPI_PRODORD_CHANGE                                                                更改生產訂單 

Production order confirmation:(生產訂單確認)

BAPI_PRODORDCONF_GET_TT_PROP                                           確認計工單

BAPI_PRODORDCONF_GET_TE_PROP                                           確認計工單

BAPI_PRODORDCONF_GETLIST                                                      生產訂單確認

BAPI_PRODORDCONF_GETDETAIL                                                 生產訂單確認詳細信息

BAPI_PRODORDCONF_GET_HDR_PROP                                       確認計划訂單

BAPI_PRODORDCONF_EXIST_CHK                                                 檢查工單是否存在

BAPI_PRODORDCONF_CREATE_TT                                                確認計划工單

BAPI_PRODORDCONF_CREATE_TE                                                確認計划工單

BAPI_PRODORDCONF_PDC_UPLOAD_TT                                      PP 確認計工單

BAPI_PRODORDCONF_PDC_UPLOAD_TE                                      PP 確認計工單

BAPI_PRODORDCONF_CREATE_HDR                                            輸入訂單確認

BAPI_PRODORDCONF_CREATE_ACT                                             輸入訂單激活確認

BAPI_PRODORDCONF_CANCEL                                                      取消生產訂單 

BDC Download & Upload for production order: 下載和上傳的BDC的生產訂單

BAPI_RCVPRORDCF_RECEIVEPRODORD                                   PP-PDC: 下載生產訂單

BAPI_RCVPRORDCF_RECEIVEWORKC                                        PP-PDC: 下載工作中心

BAPI_RCVPRODCF_REQUEST_CONF                                           PP-PDC: 上傳請求

KANBAN: (看板)

BAPI_KANBAN_CHANGE                                                                  更改kanban數據

BAPI_KANBAN_CHANGESTATUS                                                    更改kanban狀態

BAPI_KANBAN_CHANGESTATUS1                                                  更改kanban狀態1

BAPI_KANBAN_GETLIST                                                                  匹配選擇標准KANBAN的測定BAPI_KANBAN_GETLIST_ALL                                                         匹配選擇標准KANBAN的測定

BAPI_KANBAN_GETLISTFORSUPPLIE1                                        匹配選擇標准KANBAN的測定

BAPI_KANBAN_GETLISTFORSUPPLIER                                        為供應商提供kanban數據

BAPI_KANBAN_SETINPROCESS                                                    為供應商提供kanban數據 

KANBAN CONTROL CYCLE: (看板)

BAPI_KANBANCC_ADDEVENTDRKANBAN                                     Create Event-Driven KANBAN for Control Cycle    

BAPI_KANBANCC_CHANGE                                                            Change Control Cycle

BAPI_KANBANCC_CREATE                                                             Create Control Cycle

BAPI_KANBANCC_DELETE                                                             Delete Control Cycles

BAPI_KANBANCC_EXISTCHECK                                                    Check Existence of Control Cycle

BAPI_KANBANCC_GETLIST                                                             Determine Kanban Control Cycles with Selection Criteria

BAPI_KANBANCC_GETLIST_ALL                                                     Determine Kanban Control Cycles with Selection Criteria

BAPI_KANBANCC_WITHDRAWQUANTITY                                     Quantity Signal for Kanban Control Cycle

REM Confirmation: ( REM確認)

BAPI_REPMANCONF_CANCEL                                                       處理的重復制造取消

BAPI_REPMANCONF_CREATE_MTO                                             銷售訂單執行重復制造情況

BAPI_REPMANCONF_CREATE_PLOT                                           執行生產成本

BAPI_REPMANCONF_CREATE_MTS                                            在很多情況下,執行生產成本

BAPI_REPMANCONF_EXIST_CHK                                                檢查對象存在

REM Confirmation1:

BAPI_REPMANCONF1_CANCEL                                                    處理的重復制造取消

BAPI_REPMANCONF1_CREATE_MTO                                          銷售訂單執行重復制造情況

BAPI_REPMANCONF1_CREATE_MTP                                           在很多情況下,執行生產成本

BAPI_REPMANCONF1_CREATE_MTS                                           在很多情況下,執行生產成本

BAPI_REPMANCONF1_EXIST_CHK                                               檢查對象存在 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM