MRP清單的動態和靜態ABAP的取法
無意中發現有個程式用IMPORT mdtbx FROM DATABASE mdtc(ar) ID mdkp-dtnum取MRP清單的時候,發現如果一個工廠對應多種MRP區域的時候,取不到另外MRP區域的資料,
但是用函式MD_STOCK_REQUIREMENTS_LIST_API可以取到,經深入分析得知這兩種取法的區別:
用語句IMPORT mdtbx FROM DATABASE mdtc(ar) ID mdkp-dtnum取的是上一次MRP執行過後的結果,這個是靜態的結果(也就是事物碼MD05的結果)。
用函式MD_STOCK_REQUIREMENTS_LIST_API取得是實時的MRP的結果,這個是動態的結果(也就是事物碼MD04的結果),此種方法可以區別MRP區域,如果不輸入MRP區域
的話,就是預設為一個工廠所有MRP區域所有的結果,如果想取靜態的其他MRP區域的結果的話,可以使用下面的程式碼:
REPORT ZMRPTABLE.
TABLES: MDKP, "Header Data for MRP Document
MDTB, "MRP table
MDTC, "Aggregated MRP table items
T457T. "Description of MRP elements
DATA: BEGIN OF MDTBX OCCURS 0.
INCLUDE STRUCTURE MDTB.
DATA: END OF MDTBX.
SELECT-OPTIONS: PLANT FOR MDKP-PLWRK OBLIGATORY,
MATNR FOR MDKP-MATNR OBLIGATORY.
* 預設工廠和MRP區域一樣的情況
CLEAR: MDKP, MDTB.
SELECT * FROM MDKP WHERE DTART EQ 'MD'
AND MATNR IN MATNR
AND PLWRK IN PLANT.
WRITE:/ MDKP-MATNR, MDKP-PLWRK.
IF MDKP-CFLAG EQ 'X'.
CLEAR MDTBX. REFRESH MDTBX.
IMPORT MDTBX FROM DATABASE MDTC(AR) ID MDKP-DTNUM.
LOOP AT MDTBX.
MOVE MDTBX TO MDTB.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDLOOP.
ELSE.
SELECT * FROM MDTB
WHERE DTNUM EQ MDKP-DTNUM
ORDER BY PRIMARY KEY.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDSELECT.
ENDIF.
ENDSELECT.
* 預設工廠和MRP區域不一樣的情況
CLEAR: MDKPDB, MDTB.
SELECT * FROM MDKPDB WHERE DTART EQ 'MD'
AND MATNR IN MATNR
AND PLWRK IN PLANT.
WRITE:/ MDKPDB-MATNR, MDKPDB-PLWRK.
IF MDKP-CFLAG EQ 'X'.
CLEAR MDTBX. REFRESH MDTBX.
IMPORT MDTBX FROM DATABASE MDTC(AR) ID MDKPDB-DTNUM.
LOOP AT MDTBX.
MOVE MDTBX TO MDTB.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDLOOP.
ELSE.
SELECT * FROM MDTB
WHERE DTNUM EQ MDKPDB-DTNUM
ORDER BY PRIMARY KEY.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDSELECT.
ENDIF.
ENDSELECT.
相關文章
- 偽靜態、靜態和動態的區別
- 淺談Java和SAP ABAP的靜態代理和動態代理,以及ABAP面向切面程式設計的嘗試Java程式設計
- 動態繫結和靜態繫結的簡單理解
- 機器學習的靜態特徵和動態特徵機器學習特徵
- 靜態SDRAM和動態SDRAM的區別
- Java中的靜態代理和動態代理Java
- 靜態路由和動態路由的比較路由
- 動態庫和靜態庫的區別
- 英語的靜態句和動態句
- 靜態代理和動態代理
- 靜態路由和動態路由路由
- Windows靜態庫和動態庫的建立和使用Windows
- Linux 依賴動態庫 / 靜態庫的動態態庫 / 靜態庫Linux
- iOS動態庫和靜態庫的運用iOS
- oracle的靜態註冊和動態註冊Oracle
- ios靜態庫和動態庫iOS
- java靜態代理和動態代理Java
- Linux下的靜態庫、動態庫和動態載入庫Linux
- C++的動態繫結和靜態繫結C++
- 動態圖和靜態圖的程式碼區別
- android下java的靜態庫和動態庫AndroidJava
- 靜態網頁和動態網頁的區別網頁
- oracle監聽器的靜態和動態註冊Oracle
- SAP ABAP和Java的動態代理實現Java
- 如何設定Ansible AWS的動態清單
- 徹底搞懂訪問者模式的靜態、動態和偽動態分派模式
- cmake:生成靜態庫和動態庫
- 動態註冊和靜態註冊
- 靜態註冊和動態註冊
- 動態監聽和靜態監聽
- oracle listener 靜態和動態註冊Oracle
- oracle動態和靜態監聽listenerOracle
- 靜態合批和動態合批
- ABAP 動態 SQLSQL
- iOS中的動態庫,靜態庫和framework介紹iOSFramework
- 【知識分享】動態ip和靜態ip的區別
- 簡述Linux下的靜態庫和動態庫Linux
- Oracle監聽的靜態註冊和動態註冊Oracle