1つのオブジェクトに関する2つの情報(数量(PLAF-gsmng))を更新し、モジュール機能 'MD_SET_ACTION_PLAF'を使用して計画手配を更新する必要があります。 各データを個別に更新する方法を見つけることに成功しました。しかし、両方のソリューションを実行すると、第2の変更はデータベースに保存されません。計画手配の更新 - 2回のコミット済み変更の保存
数量を変更する方法を知っていますか& PLAF(計画済み)テーブルのアクションを設定しますか?
数量のみを更新する他のモジュールの機能をご存知ですか?
おそらくパラメータがありませんか?
2番目のオブジェクトがロックされている(sm12が空で、sy-subrc =ロックされていない)ようなものです。変更はコミットされていません。
私がしようとした:アルゴリズムの順序(リフレッシュ以降、PLAFを変更)
- 変更
- は、追加、削除、WORK &がCOMMIT WORKをコミットしDEQUEUE_ALLを追加
- をWAIT移動するかをDEQUEUE_EMPLAFE
これは、現在のコードです:
1)リードデータ
lv_plannedorder = '00000000001'
"Read PLAF data
SELECT SINGLE * FROM PLAF INTO ls_plaf WHERE plnum = lv_plannedorder.
2)を更新数量データ私はPLAFテーブルの上に行けば
" Standard configuration for FM MD_PLANNED_ORDER_CHANGE
CLEAR ls_610.
ls_610-nodia = 'X'. " No dialog display
ls_610-bapco = space. " BAPI type. Do not use mode 2 -> Action PLAF-MDACC will be autmatically set up to APCH by the FM
ls_610-bapix = 'X'. " Run BAPI
ls_610-unlox = 'X'. " Update PLAF
" Customize values
MOVE p_gsmng TO ls_plaf-gsmng. " Change quantity value
MOVE sy-datlo TO ls_plaf-mdacd. " Change by/datetime, because ls_610-bapco <> 2.
MOVE sy-uzeit TO ls_plaf-mdact.
CALL FUNCTION 'MD_PLANNED_ORDER_CHANGE'
EXPORTING
ecm61o = ls_610
eplaf = ls_plaf
EXCEPTIONS
locked = 1
locking_error = 2
OTHERS = 3.
" Already committed on the module function
" sy-subrc = 0
は、私は量が編集されていることがわかります。それは:)
3)リフレッシュBOM &変更アクション(MDACC)などのフィールドを働いて私はテーブル、修正なし(のみMODIFに行けば
CLEAR ls_imdcd.
ls_imdcd-pafxl = 'X'.
CALL FUNCTION 'MD_SET_ACTION_PLAF'
EXPORTING
iplnum = lv_plannedorder
iaccto = 'BOME'
iaenkz = 'X'
imdcd = ls_imdcd
EXCEPTIONS
illegal_interface = 1
system_failure = 2
error_message = 3
OTHERS = 4.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
。一部の2することができますそれに見つけることができます)。
おそらくls_610-bapco =スペースなのでしょうか?
関数プール内に「init」モジュールがいくつか見つかりましたか?それらを使用する必要があります... – icbytes
コミットの前後に、デバッグ中にSM13をチェックしましたか? – futu