無意中發現有個程式用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
.
MRP清單的動態和靜態ABAP的取法
無意中發現有個程式用import mdtbx from database mdtc ar id mdkp dtnum取mrp清單的時候,發現如果乙個工廠對應多種mrp區域的時候,取不到另外mrp區域的資料,但是用函式md stock requirements list api可以取到,經深入分析得知...
陣列的動態和靜態定義
public static void main string args 2 指的是下標位第2 位,值是7,下標從0 開始 system.out.println arr3 2 system.out.println arr3.length 4 陣列的靜態定義 intarr4 new int 這種方式 不...
動態include和靜態include的區別
動態include和靜態include的區別 1 動態include 它總是會檢查所含檔案中的變化 適合用於包含動態頁面 並且可以帶引數。各個檔案分別先編譯,然後組合成乙個檔案。2 靜態include include file included.htm 不會檢查所含檔案的變化,適用於包含靜態頁面。先...