BAPI_GOODSMVT_CREATE And BAPI_GOODSMVT_Cancel
Error rendering macro 'code': Invalid value specified for parameter 'lang'TABLES: ZTPP0371. " インターフェース指図ヘッダ
* データ
TYPES: BEGIN OF TYP_DATA ,
AUFNR_N TYPE ZTPP0371-AUFNR_N, "指図番号
BUDAT TYPE ZTPP0372-BUDAT, "伝票の転記日付
SEQ TYPE ZTPP0371-SEQ, "カウンタ
ZDELKB TYPE ZTPP0371-ZDELKB, "取消区分
AUFNR_W TYPE ZTPP0371-AUFNR_W, "指図番号
ZSTATUS TYPE ZTPP0371-ZSTATUS, "処理ステータス
WERKS TYPE ZTPP0371-WERKS, "プラント
MATNR TYPE ZTPP0371-MATNR, "品目コード
MAKTX TYPE ZTPP0371-MAKTX, "品目テキスト
BMENGE TYPE ZTPP0371-BMENGE, "基本数量
BMEINS TYPE ZTPP0371-BMEINS, "基本数量単位
GSTRP TYPE ZTPP0371-GSTRP, "基準開始日
ERTXT TYPE ZTPP0371-ERTXT, "エラーテキスト
ZNETQTY1 TYPE ZTPP0372-ZNETQTY1, "ネット数量
MEINS TYPE ZTPP0372-MEINS, "基本数量単位
LGORT TYPE ZTPP0372-LGORT, "保管場所
MBLNR1 TYPE MBLNR, "入出庫伝票番号
MJAHR1 TYPE MJAHR, "入出庫伝票年
ZSECNO TYPE CONSECNO, "連続番号
ERROR TYPE CHAR100, "ERROR
BLOCK TYPE ZTPP0003-ZZCHARG, "ロット
ZZBWTAR TYPE ZTPP0003-ZZBWTAR, "評価タイプ
END OF TYP_DATA.
* BDCDATA作成用内部テーブル
DATA: BEGIN OF T_BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF T_BDCDATA.
* BAPI実行後結果格納内部テーブル
DATA: BEGIN OF T_RET OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF T_RET.
*--- 内部テーブル定義 ---*
*CCNBC指図ヘッダテーブル
DATA: T_ZTPP0371 TYPE STANDARD TABLE OF ZTPP0371,
W_ZTPP0371 TYPE ZTPP0371,
*共通PF生産実績テーブル
T_ZTPP0372 TYPE STANDARD TABLE OF ZTPP0372,
W_ZTPP0372 TYPE ZTPP0372,
*RESULT TABLE 共通PF生産実績テーブル & 共通PF生産実績テーブル
T_DATA TYPE STANDARD TABLE OF TYP_DATA,
W_DATA TYPE TYP_DATA,
*BAPI 通信構造: 入出庫伝票明細登録
T_ITEM TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
W_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
*リターンパラメータ
T_RETURN TYPE TABLE OF BAPIRET2,
W_RETURN TYPE BAPIRET2,
*BAPI コミュニケーションストラクチャ: 入出庫伝票ヘッダデータ
W_HEADER TYPE BAPI2017_GM_HEAD_01,
* MMIM: 在庫管理トランザクションへの GM_CODE 新規キー割当
W_CODE TYPE BAPI2017_GM_CODE,
*--- 変数定義 ---*
W_COUNT TYPE I, "COUNT
W_ELIKZ TYPE MSEG-ELIKZ, "納入完了" 区分
W_UPDATE TYPE CHAR1 VALUE 'S', "UPDATE
W_ZSTATUS TYPE CHAR1, "納入完了" 区分
W_MODE TYPE CHAR1 VALUE 'A', "納入完了" 区分n
W_MBLNR TYPE MSEG-MBLNR, "入出庫伝票番号
W_GJAHR TYPE MKPF-MJAHR. "年度 ADD 2001.09.18
CONSTANTS:
CNS_ZSTATUS_OK_BF TYPE ZTPP0371-ZSTATUS VALUE '1', "納入完了" 区分
CNS_ZSTATUS_ER TYPE ZTPP0371-ZSTATUS VALUE '4', "納入完了" 区分
CNS_ZSTATUS_OK TYPE ZTPP0371-ZSTATUS VALUE '5', "納入完了" 区分
CNS_0001 TYPE CHAR4 VALUE '0001', "明細番号 (販売管理伝票)
CNS_BWART TYPE CHAR5 VALUE 'BWART',"移動タイプ (在庫管理)
CNS_02 TYPE CHAR2 VALUE '02', "BAPI 在庫移動トランザクションのコード割当
CNS_X TYPE CHAR1 VALUE 'X',
CNS_0 TYPE CHAR1 VALUE '0',
CNS_1 TYPE CHAR1 VALUE '1',
CNS_2 TYPE CHAR1 VALUE '2',
CNS_4 TYPE CHAR1 VALUE '4',
CNS_5 TYPE CHAR1 VALUE '5',
CNS_S TYPE CHAR1 VALUE 'S'.
*=======================================================================
* 選択画面用パラメータ定義
*=======================================================================
** 選択項目 ------------------------------------------------
**-デイフォルトはテスト実行OFF-スレッシュ-2004/10/21*
PARAMETERS: P_TEST AS CHECKBOX DEFAULT ''.
SELECTION-SCREEN BEGIN OF BLOCK SENTAKU WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_AUFNR FOR ZTPP0371-AUFNR_N.
**-製造日付の追加-2004/11/01-スレッシュ*
SELECT-OPTIONS:
S_BUDAT FOR ZTPP0371-BUDAT.
* 処理ステータス
SELECT-OPTIONS:
S_STATUS FOR ZTPP0371-ZSTATUS OBLIGATORY .
SELECTION-SCREEN END OF BLOCK SENTAKU.
PARAMETERS: P_CHARG TYPE AFPO-CHARG DEFAULT '受託生産品' NO-DISPLAY.
*=======================================================================
*** INITIALIZATION
*=======================================================================
*-<<< 初期処理(選択画面初期処理) >>>-------------------------------*
INITIALIZATION.
* SET TITLEBAR 'T01' WITH TEXT-023. "タイトルバーの設定
* P_STATUS 初期値を設定
S_STATUS-SIGN = 'I'.
S_STATUS-OPTION = 'EQ'.
S_STATUS-LOW = CNS_ZSTATUS_OK_BF.
APPEND S_STATUS.
S_STATUS-SIGN = 'I'.
S_STATUS-OPTION = 'EQ'.
S_STATUS-LOW = CNS_ZSTATUS_ER.
APPEND S_STATUS.
*=======================================================================
*** START OF SELECTION
*=======================================================================
START-OF-SELECTION.
* ZTPP0271からデータ取得
PERFORM FRM_GET_DATA_ZTPP0371.
* 総有効期間、転記日付の設定、T_DATAデータ移動
PERFORM FRM_DATA_FIX.
CHECK P_TEST = SPACE.
* Post goods movements with MB_CREATE_GOODS_MOVEMENT
PERFORM F_BAPI_GOODSMOVEMENT.
WRITE:/01 TEXT-003.
*=======================================================================
*** END OF SELECTION
*=======================================================================
END-OF-SELECTION.
DATA: L_CNT TYPE I, "データカウンタ用ローカル変数
L_OKCODDE_CNT TYPE I,
L_ERCODE_CNT TYPE I.
WRITE:
/110 TEXT-004.
*データ件数カウント
CLEAR: W_COUNT.
DESCRIBE TABLE T_DATA LINES W_COUNT.
WRITE: /1(18) TEXT-005,
20(8) W_COUNT.
WRITE: 228(05) TEXT-006,
234(010) SY-DATUM.
**実行日追加-スレッシュ-2005/02/15-end*
DESCRIBE TABLE T_DATA LINES L_CNT.
*実行データ一覧表示
LOOP AT T_DATA INTO W_DATA.
IF W_DATA-ZSTATUS = CNS_ZSTATUS_OK.
L_OKCODDE_CNT = L_OKCODDE_CNT + 1.
ELSEIF W_DATA-ZSTATUS = CNS_ZSTATUS_ER.
L_ERCODE_CNT = L_ERCODE_CNT + 1.
ENDIF.
ENDLOOP.
WRITE: /1(18) TEXT-007,
20(8) L_OKCODDE_CNT.
WRITE: /1(18) TEXT-008,
20(8) L_ERCODE_CNT.
ULINE /1(245).
WRITE: /1 SY-VLINE,
2(14) TEXT-009,
16(1) SY-VLINE,
17(10) TEXT-010,
27(1) SY-VLINE,
28(4) TEXT-011,
32(1) SY-VLINE,
33(4) TEXT-012,
37(1) SY-VLINE,
38(18) TEXT-013,
56(1) SY-VLINE,
57(7) TEXT-014,
64(1) SY-VLINE,
65(8) TEXT-015,
73(1) SY-VLINE,
74(12) TEXT-016,
86(1) SY-VLINE,
87(40) TEXT-017,
127(1) SY-VLINE,
128(15) TEXT-018,
143(1) SY-VLINE,
144(12) TEXT-019,
156(1) SY-VLINE,
157(10) TEXT-020,
167(1) SY-VLINE,
168(80) TEXT-021,
248(1) SY-VLINE.
ULINE /1(247).
DATA: LW_FLAG TYPE CHAR1,
LW_ZSTATUS TYPE CHAR1 VALUE '4'.
LOOP AT T_DATA INTO W_DATA.
AT NEW AUFNR_N .
LW_FLAG = CNS_X.
ENDAT.
IF LW_FLAG = CNS_X.
PERFORM WRITE_OUTPUT_DATA.
ELSE.
IF W_DATA-ZSTATUS = LW_ZSTATUS .
CLEAR:W_DATA-ZSTATUS,
W_DATA-ERROR.
PERFORM WRITE_OUTPUT_DATA.
ELSE.
PERFORM WRITE_OUTPUT_DATA.
ENDIF.
ENDIF.
ENDLOOP.
*&---------------------------------------------------------------------*
*& FORM FRM_GET_DATA_ZTPP0271
*&---------------------------------------------------------------------*
* ZTPP0271 指図ヘッダデータ取得
*----------------------------------------------------------------------*
FORM FRM_GET_DATA_ZTPP0371.
SELECT * INTO TABLE T_ZTPP0371 FROM ZTPP0371
WHERE AUFNR_N IN S_AUFNR "指図番号
AND BUDAT IN S_BUDAT "伝票の転記日付
AND ZSTATUS IN S_STATUS. "処理ステータス
**-対象レコードの抽出-スレッシュ-2004/10/14-START*
SORT T_ZTPP0371 BY AUFNR_N "指図番号
BUDAT "伝票の転記日付
SEQ "カウンタ
DESCENDING.
**削除フラグあれば対象外にする
DELETE T_ZTPP0371 WHERE DELFLG = CNS_X.
CLEAR W_ZTPP0371.
**内部テーブルにデータがない場合
IF T_ZTPP0371 IS INITIAL.
MESSAGE I143(ZREP01) WITH
TEXT-022.
ENDIF.
**-対象レコードの抽出-スレッシュ-2004/10/14-END*
ENDFORM. " FRM_GET_DATA_ZTPP0271
*&---------------------------------------------------------------------*
*& FORM FRM_DATA_FIX
*&---------------------------------------------------------------------*
* 総有効期間、転記日付の設定、T_DATAデータ移動
*----------------------------------------------------------------------*
FORM FRM_DATA_FIX.
SORT T_ZTPP0371 BY AUFNR_N "指図番号
BUDAT "伝票の転記日付
SEQ "カウンタ
ZSECNO "連続番号
ZDELKB. "取消区分
IF T_ZTPP0371 IS NOT INITIAL.
* GET DB FROM T_ZTPP0372 FOR ALL ENTRIES T_ZTPP0371
SELECT * INTO TABLE T_ZTPP0372 FROM ZTPP0372
FOR ALL ENTRIES IN T_ZTPP0371
WHERE AUFNR_N = T_ZTPP0371-AUFNR_N "指図番号
AND BUDAT = T_ZTPP0371-BUDAT "伝票の転記日付
AND SEQ = T_ZTPP0371-SEQ "カウンタ
AND ZSECNO = T_ZTPP0371-ZSECNO "連続番号
AND ZDELKB = T_ZTPP0371-ZDELKB. "取消区分
LOOP AT T_ZTPP0371 INTO W_ZTPP0371.
* GET DB FROM T_ZTPP0372
DATA: ZZCHARG TYPE ZTPP0003-ZZCHARG,
ZZBWTAR TYPE ZTPP0003-ZZBWTAR.
CLEAR: ZZCHARG, ZZBWTAR.
SELECT SINGLE ZZCHARG ZZBWTAR FROM ZTPP0003 INTO (ZZCHARG,ZZBWTAR)
WHERE ZZBCAUART = W_ZTPP0371-AUART "指図番号
AND ZZBCAUART < SY-DATUM "DATE
AND ZZDATBI > SY-DATUM. "DATE
LOOP AT T_ZTPP0372 INTO W_ZTPP0372
WHERE AUFNR_N = W_ZTPP0371-AUFNR_N "指図番号
AND BUDAT = W_ZTPP0371-BUDAT "伝票の転記日付
AND SEQ = W_ZTPP0371-SEQ "カウンタ
AND ZSECNO = W_ZTPP0371-ZSECNO "連続番号
AND ZDELKB = W_ZTPP0371-ZDELKB. "取消区分
W_DATA-AUFNR_N = W_ZTPP0371-AUFNR_N. "指図番号
W_DATA-BUDAT = W_ZTPP0371-BUDAT. "伝票の転記日付
W_DATA-SEQ = W_ZTPP0371-SEQ. "カウンタ
W_DATA-ZDELKB = W_ZTPP0371-ZDELKB. "取消区分
W_DATA-AUFNR_W = W_ZTPP0371-AUFNR_W. "指図番号
W_DATA-ZSTATUS = W_ZTPP0371-ZSTATUS. "処理ステータス
W_DATA-WERKS = W_ZTPP0371-WERKS. "プラント
W_DATA-MATNR = W_ZTPP0371-MATNR. "品目コード
W_DATA-MAKTX = W_ZTPP0371-MAKTX. "品目テキスト
W_DATA-BMENGE = W_ZTPP0371-BMENGE. "基本数量
W_DATA-BMEINS = W_ZTPP0371-BMEINS. "基本数量単位
W_DATA-GSTRP = W_ZTPP0371-GSTRP. "基準開始日
W_DATA-ERTXT = W_ZTPP0371-ERTXT. "エラーテキスト
W_DATA-ZNETQTY1 = W_ZTPP0372-ZNETQTY1. "ネット数量
W_DATA-MEINS = W_ZTPP0372-MEINS. "基本数量単位
W_DATA-MBLNR1 = W_ZTPP0372-MBLNR1. "基本数量単位
W_DATA-MJAHR1 = W_ZTPP0372-MJAHR1. "入出庫伝票年
W_DATA-ZSECNO = W_ZTPP0371-ZSECNO. "連続番号
W_DATA-LGORT = W_ZTPP0372-LGORT. "保管場所
W_DATA-BLOCK = ZZCHARG. "ロット
W_DATA-ZZBWTAR = ZZBWTAR.
APPEND W_DATA TO T_DATA.
CLEAR: W_DATA,W_ZTPP0372.
ENDLOOP.
CLEAR W_ZTPP0371.
ENDLOOP.
ENDIF.
ENDFORM. " FRM_DATA_FIX
*&---------------------------------------------------------------------*
*& Form F_OUTPUT_WRITE
*&---------------------------------------------------------------------*
* OUTPUT_WRITE ERROR AND SUCCESS COUNT
*----------------------------------------------------------------------*
FORM F_BAPI_GOODSMOVEMENT .
LOOP AT T_DATA INTO W_DATA.
IF W_DATA-ZNETQTY1 <> CNS_0.
IF W_DATA-ZDELKB = CNS_0.
** 製造指図登録
PERFORM BDC_CO02_CHANGE_FLAG.
ELSE.
* CANCEL BAPI_GOODSMVT_CANCEL
PERFORM CANCEL_GOODSMOVEMENT.
ENDIF.
ELSE.
W_ZSTATUS = CNS_5.
PERFORM F_UPDATE_ZTPP0371 USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "連続番号
W_DATA-ZDELKB "取消区分
CHANGING W_ZSTATUS . "処理ステータス
W_ZSTATUS = CNS_5.
PERFORM F_UPDATE_ZTPP0372 USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "連続番号
W_DATA-ZDELKB "取消区分
CHANGING W_ZSTATUS . "処理ステータス
ENDIF.
ENDLOOP.
CLEAR W_DATA.
ENDFORM. " F_BAPI_GOODSMOVEMENT
*&---------------------------------------------------------------------*
*& Form BDC_CO02_CHANGE_FLAG
*&---------------------------------------------------------------------*
* Get DB from 指図明細
*----------------------------------------------------------------------*
FORM BDC_CO02_CHANGE_FLAG .
**指図明細
CLEAR W_ELIKZ.
SELECT SINGLE ELIKZ INTO W_ELIKZ FROM AFPO
WHERE AUFNR = W_DATA-AUFNR_N "指図番号
AND POSNR = CNS_0001 "明細番号 (販売管理伝票)
AND ELIKZ = SPACE. "納入完了" 区分
IF SY-SUBRC <> 0.
* RUN BDC C002
* --- (変更 第一画面) ---*
PERFORM BDC_DYNPRO USING 'SAPLCOKO1' '0110'.
* 指図番号
PERFORM BDC_FIELD USING 'CAUFVD-AUFNR' W_DATA-AUFNR_N. "指図番号
* ボタン:エンタ
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
* --- (指図変更 ヘッダ) ---*
PERFORM BDC_DYNPRO USING 'SAPLCOKO1' '0115'.
* タグ:入庫
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=KOWE'.
* --- (指図登録 ヘッダ(入庫タグ)) ---*
PERFORM BDC_DYNPRO USING 'SAPLCOKO1' '0115'.
* 納入完了区分
PERFORM BDC_FIELD USING 'AFPOD-ELIKZ' ' '.
* ボタン:保存
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
* トランザクションコール(CO02)
CALL TRANSACTION 'CO02' USING T_BDCDATA
MODE W_MODE
UPDATE W_UPDATE.
IF SY-SUBRC = 0.
* Post goods movements with MB_CREATE_GOODS_MOVEMENT
PERFORM BAPI_GOODSMVT_CREATE.
ENDIF.
ELSE.
* Post goods movements with MB_CREATE_GOODS_MOVEMENT
PERFORM BAPI_GOODSMVT_CREATE.
ENDIF.
CLEAR: T_BDCDATA.
REFRESH T_BDCDATA.
ENDFORM. " BDC_CO02_CHANGE_FLAG
*&---------------------------------------------------------------------*
*& Form BAPI_GOODSMVT_CREATE
*&---------------------------------------------------------------------*
* 共通テーブル
*----------------------------------------------------------------------*
FORM BAPI_GOODSMVT_CREATE .
*共通テーブル
DATA: W_ZZDATA1 TYPE ZNN0001-ZZDATA1, "文字項目長 = 10
WL_DATSTR TYPE CHAR10. " 日付入力用テキスト項目
** GET DB 共通テーブル
SELECT SINGLE ZZDATA1 INTO W_ZZDATA1 FROM ZNN0001
WHERE ZZKEY1 = SY-REPID "長さ 16 の項目
AND ZZKEY2 = CNS_BWART "移動タイプ (在庫管理)
AND ZZKEY3 = CNS_1. "文字項目長 = 10
WRITE: W_DATA-BUDAT TO WL_DATSTR. "伝票の転記日付
W_HEADER-PSTNG_DATE = WL_DATSTR. "伝票の転記日付
W_HEADER-DOC_DATE = WL_DATSTR. "伝票の伝票日
* GOODSMVT_HEADER
W_CODE-GM_CODE = CNS_02. "BAPI 在庫移動トランザクションのコード割当
*** T_ITEM
CONSTANTS: LCNS_0004 TYPE CHAR4 VALUE '0004', "移動理由
LCNS_F TYPE CHAR1 VALUE 'F'. "移動区分
W_ITEM-MOVE_TYPE = W_ZZDATA1. "転送ロットの評価タイプ
W_ITEM-MOVE_REAS = LCNS_0004. "移動理由
W_ITEM-MVT_IND = LCNS_F. "移動区分
W_ITEM-ORDERID = W_DATA-AUFNR_W. "指図番号
W_ITEM-STGE_LOC = W_DATA-LGORT. "保管場所
W_ITEM-BATCH = W_DATA-BLOCK. "ロット番号
W_ITEM-ENTRY_QNT = W_DATA-ZNETQTY1. "入力単位での数量
W_ITEM-ENTRY_UOM = W_DATA-MEINS. "入力単位
W_ITEM-VAL_TYPE = W_DATA-ZZBWTAR. " 評価タイプ
APPEND W_ITEM TO T_ITEM.
CLEAR:W_ITEM.
* Post goods movements with MB_CREATE_GOODS_MOVEMENT
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = W_HEADER "入出庫伝票ヘッダデータ
GOODSMVT_CODE = W_CODE "在庫移動に対するコードのトランザクションへの割当
TESTRUN = SPACE "在庫移動シミュレーション
* GOODSMVT_REF_EWM =
IMPORTING
* GOODSMVT_HEADRET =
MATERIALDOCUMENT = W_MBLNR "出庫伝票番号
MATDOCUMENTYEAR = W_GJAHR
TABLES
GOODSMVT_ITEM = T_ITEM "通信構造: 入出庫伝票明細登録
* GOODSMVT_SERIALNUMBER =
RETURN = T_RETURN "リターンメッセージ
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
.
READ TABLE T_RETURN INTO W_RETURN INDEX 1.
IF W_RETURN-TYPE = CNS_S.
*BAPI で外部 COMMIT 実行
PERFORM BAPI_TRANSACTION_COMMIT.
W_ZSTATUS = CNS_5.
PERFORM F_UPDATE_ZTPP0371 USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "カウンタ
W_DATA-ZDELKB "連続番号
CHANGING W_ZSTATUS. "処理ステータス
W_ZSTATUS = CNS_5.
UPDATE ZTPP0372 SET ZSTATUS = W_ZSTATUS "処理ステータス
MBLNR1 = W_MBLNR "入出庫伝票年
MJAHR1 = W_GJAHR "入出庫伝票年
ZEILE1 = CNS_0001 "入出庫伝票の明細
WHERE AUFNR_N = W_DATA-AUFNR_N "指図番号
AND BUDAT = W_DATA-BUDAT "伝票の転記日付
AND SEQ = W_DATA-SEQ "カウンタ
AND ZSECNO = W_DATA-ZSECNO "カウンタ
AND ZDELKB = W_DATA-ZDELKB. "連続番号
COMMIT WORK.
W_DATA-ZSTATUS = CNS_5.
W_DATA-ERROR = W_RETURN-MESSAGE. "処理ステータス
MODIFY T_DATA FROM W_DATA TRANSPORTING ZSTATUS ERROR .
CLEAR T_RETURN.
ELSE.
* ****BAPI ERROR LOG
W_ZSTATUS = CNS_4.
PERFORM F_BAPIERROR_LOG_ZTPP0371
USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "カウンタ
W_DATA-ZDELKB "連続番号
W_RETURN-MESSAGE "メッセージ変数
CHANGING W_ZSTATUS. "処理ステータス
W_ZSTATUS = CNS_2.
PERFORM F_BAPIERROR_LOG_ZTPP0372
USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "カウンタ
W_DATA-ZDELKB "連続番号
W_RETURN-MESSAGE "メッセージ変数
CHANGING W_ZSTATUS. "処理ステータス
W_DATA-ZSTATUS = CNS_4.
W_DATA-ERROR = W_RETURN-MESSAGE. "処理ステータス
MODIFY T_DATA FROM W_DATA TRANSPORTING ZSTATUS ERROR .
CLEAR T_RETURN.
ENDIF.
ENDFORM. " BAPI_GOODSMVT_CREATE
* &---------------------------------------------------------------------*
* & Form BDC_DYNPRO
* &---------------------------------------------------------------------*
* プログラム名&画面番号セット
* ----------------------------------------------------------------------*
* --> PROGRAM プログラム名
* --> DYNPRO 画面番号
* ----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM TYPE ANY " プログラム名
DYNPRO TYPE ANY. " 画面番号
CLEAR T_BDCDATA.
T_BDCDATA-PROGRAM = PROGRAM. "BDC モジュールプール
T_BDCDATA-DYNPRO = DYNPRO. "BDC Dynpro 番号
T_BDCDATA-DYNBEGIN = CNS_X. "BDC Dynpro 開始
APPEND T_BDCDATA.
ENDFORM. " BDC_DYNPRO
* &---------------------------------------------------------------------*
* & Form BDC_FIELD
* &---------------------------------------------------------------------*
* 項目値セット
* ----------------------------------------------------------------------*
* --> FNAM Dynpro 項目
* --> FVAL 登録値
* ----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM TYPE ANY " Dynpro 項目
FVAL TYPE ANY. " 登録値
CLEAR T_BDCDATA.
T_BDCDATA-FNAM = FNAM. "項目名
T_BDCDATA-FVAL = FVAL. "BDC 項目値
APPEND T_BDCDATA.
ENDFORM. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form CANCEL_GOODSMOVEMENT
*&---------------------------------------------------------------------*
* CANCEL_GOODSMOVEMENT
*----------------------------------------------------------------------*
FORM CANCEL_GOODSMOVEMENT .
DATA: LW_MBLNR TYPE BAPI2017_GM_HEAD_02-MAT_DOC, "入出庫伝票番号
LW_MJAHR TYPE BAPI2017_GM_HEAD_02-DOC_YEAR, "入出庫伝票年
LW_DATE TYPE BAPI2017_GM_HEAD_02-PSTNG_DATE, "伝票の転記日付
*MMIM: 入出庫転記用の一般 FM 出力構造
LW_EXPORT TYPE BAPI2017_GM_HEAD_RET.
LW_MBLNR = W_DATA-MBLNR1. "入出庫伝票番号
LW_MJAHR = W_DATA-MJAHR1. "入出庫伝票年
LW_DATE = W_DATA-BUDAT. "伝票の転記日付
*Reverse Goods Movements with MB_CANCEL_GOODS_MOVEMENT
CALL FUNCTION 'BAPI_GOODSMVT_CANCEL'
EXPORTING
MATERIALDOCUMENT = LW_MBLNR "入出庫伝票番号
MATDOCUMENTYEAR = LW_MJAHR "入出庫伝票年
GOODSMVT_PSTNG_DATE = LW_DATE "伝票の転記日付
* GOODSMVT_PR_UNAME =
IMPORTING
GOODSMVT_HEADRET = LW_EXPORT " 入出庫転記用の一般 FM 出力構造
TABLES
RETURN = T_RETURN "リターンメッセージ
* GOODSMVT_MATDOCITEM =
.
* Read リターンメッセージ
READ TABLE T_RETURN INTO W_RETURN INDEX 1.
IF W_RETURN-TYPE = CNS_S.
*BAPI で外部 COMMIT 実行
PERFORM BAPI_TRANSACTION_COMMIT.
W_ZSTATUS = CNS_5.
PERFORM F_UPDATE_ZTPP0371 USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "カウンタ
W_DATA-ZDELKB "連続番号
CHANGING W_ZSTATUS. "処理ステータス
W_ZSTATUS = CNS_5.
UPDATE ZTPP0372 SET ZSTATUS = W_ZSTATUS "処理ステータス
MBLNR2 = LW_EXPORT-MAT_DOC "入出庫伝票番号
MJAHR2 = LW_EXPORT-DOC_YEAR "入出庫伝票年
ZEILE2 = CNS_0001
WHERE AUFNR_N = W_DATA-AUFNR_N "指図番号
AND BUDAT = W_DATA-BUDAT "伝票の転記日付
AND SEQ = W_DATA-SEQ "カウンタ
AND ZSECNO = W_DATA-ZSECNO "カウンタ
AND ZDELKB = W_DATA-ZDELKB. "連続番号
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
W_DATA-ZSTATUS = CNS_5.
W_DATA-ERROR = W_RETURN-MESSAGE. "メッセージ変数
MODIFY T_DATA FROM W_DATA TRANSPORTING ZSTATUS ERROR .
ELSE.
*** ERROR LOG
W_ZSTATUS = CNS_2.
PERFORM F_BAPIERROR_LOG_ZTPP0371
USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "カウンタ
W_DATA-ZDELKB "連続番号
W_RETURN-MESSAGE "メッセージ変数
CHANGING W_ZSTATUS . "処理ステータス
W_ZSTATUS = CNS_2.
PERFORM F_BAPIERROR_LOG_ZTPP0372
USING W_DATA-AUFNR_N "指図番号
W_DATA-BUDAT "伝票の転記日付
W_DATA-SEQ "カウンタ
W_DATA-ZSECNO "カウンタ
W_DATA-ZDELKB "処理ステータス
W_RETURN-MESSAGE "メッセージ変数
CHANGING W_ZSTATUS . "処理ステータス
W_DATA-ZSTATUS = CNS_4.
W_DATA-ERROR = W_RETURN-MESSAGE. "メッセージ変数
MODIFY T_DATA FROM W_DATA TRANSPORTING ZSTATUS ERROR .
ENDIF.
ENDFORM. " CANCEL_GOODSMOVEMENT
*&---------------------------------------------------------------------*
*& Form F_UPDATE_ZTPP0371
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_W_DATA_AUFNR_N "指図番号
* -->P_W_DATA_BUDAT "伝票の転記日付
* -->P_W_DATA_SEQ "カウンタ
* -->P_W_DATA_ZSECNO "カウンタ
* -->P_W_DATA_ZDELKB "処理ステータス
*----------------------------------------------------------------------*
FORM F_UPDATE_ZTPP0371 USING P_AUFNR_N TYPE ANY "指図番号
P_BUDAT TYPE ANY "伝票の転記日付
P_SEQ TYPE ANY "カウンタ
P_ZSECNO TYPE ANY "カウンタ
P_ZDELKB TYPE ANY "処理ステータス
CHANGING P_ZSTATUS TYPE ANY. "処理ステータス
UPDATE ZTPP0371 SET ZSTATUS = P_ZSTATUS "処理ステータス
WHERE AUFNR_N = P_AUFNR_N "指図番号
AND BUDAT = P_BUDAT "伝票の転記日付
AND SEQ = P_SEQ "カウンタ
AND ZSECNO = P_ZSECNO "カウンタ
AND ZDELKB = P_ZDELKB. "処理ステータス
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDFORM. " F_UPDATE_ZTPP0371
*&---------------------------------------------------------------------*
*& Form F_UPDATE_ZTPP0372
*----------------------------------------------------------------------*
* -->P_W_DATA_AUFNR_N "指図番号
* -->P_W_DATA_BUDAT "伝票の転記日付
* -->P_W_DATA_SEQ "カウンタ
* -->P_W_DATA_ZSECNO "カウンタ
* -->P_W_DATA_ZDELKB "処理ステータス
*----------------------------------------------------------------------*
FORM F_UPDATE_ZTPP0372 USING P_AUFNR_N TYPE ANY "指図番号
P_BUDAT TYPE ANY "伝票の転記日付
P_SEQ TYPE ANY "カウンタ
P_ZSECNO TYPE ANY "カウンタ
P_ZDELKB TYPE ANY "処理ステータス
CHANGING P_ZSTATUS TYPE ANY. "処理ステータス
UPDATE ZTPP0372 SET ZSTATUS = P_ZSTATUS "処理ステータス
WHERE AUFNR_N = P_AUFNR_N "指図番号
AND BUDAT = P_BUDAT "伝票の転記日付
AND SEQ = P_SEQ "カウンタ
AND ZSECNO = P_ZSECNO "カウンタ
AND ZDELKB = P_ZDELKB. "処理ステータス
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDFORM. " F_UPDATE_ZTPP0372
*&---------------------------------------------------------------------*
*& Form F_BAPIERROR_LOG_ZTPP0371
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_W_DATA_AUFNR_N "指図番号
* -->P_W_DATA_BUDAT "伝票の転記日付
* -->P_W_DATA_SEQ "カウンタ
* -->P_W_DATA_ZSECNO "カウンタ
* -->P_W_DATA_ZDELKB "処理ステータス
* -->P_W_RETURN_MESSAGE "メッセージ変数
* <--P_W_ZSTATUS "処理ステータス
*----------------------------------------------------------------------*
FORM F_BAPIERROR_LOG_ZTPP0371 USING P_AUFNR_N TYPE ANY "指図番号
P_BUDAT TYPE ANY "伝票の転記日付
P_SEQ TYPE ANY "カウンタ
P_ZSECNO TYPE ANY "カウンタ
P_ZDELKB TYPE ANY "処理ステータス
P_MESSAGE TYPE ANY "メッセージ変数
CHANGING P_ZSTATUS TYPE ANY. "処理ステータス
UPDATE ZTPP0371 SET ZSTATUS = P_ZSTATUS "処理ステータス
ERTXT = P_MESSAGE "メッセージ変数
WHERE AUFNR_N = P_AUFNR_N "指図番号
AND BUDAT = P_BUDAT "伝票の転記日付
AND SEQ = P_SEQ "カウンタ
AND ZSECNO = P_ZSECNO "処理ステータス
AND ZDELKB = P_ZDELKB. "処理ステータス
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDFORM. " F_BAPIERROR_LOG_ZTPP0371
*&---------------------------------------------------------------------*
*& Form F_BAPIERROR_LOG_ZTPP0372
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_W_DATA_AUFNR_N text "指図番号
* -->P_W_DATA_BUDAT text "伝票の転記日付
* -->P_W_DATA_SEQ text "カウンタ
* -->P_W_DATA_ZSECNO text "カウンタ
* -->P_W_DATA_ZDELKB text "処理ステータス
* -->P_W_RETURN_MESSAGE text "メッセージ変数
* <--P_W_ZSTATUS text "処理ステータス
*----------------------------------------------------------------------*
FORM F_BAPIERROR_LOG_ZTPP0372 USING P_AUFNR_N TYPE ANY "指図番号
P_BUDAT TYPE ANY "伝票の転記日付
P_SEQ TYPE ANY "カウンタ
P_ZSECNO TYPE ANY "カウンタ
P_ZDELKB TYPE ANY "処理ステータス
P_MESSAGE TYPE ANY "メッセージ変数
CHANGING P_ZSTATUS TYPE ANY. "処理ステータ
UPDATE ZTPP0372 SET ZSTATUS = P_ZSTATUS "処理ステータ
ERTXT = P_MESSAGE "メッセージ変数
WHERE AUFNR_N = P_AUFNR_N "指図番号
AND BUDAT = P_BUDAT "伝票の転記日付
AND SEQ = P_SEQ "カウンタ
AND ZSECNO = P_ZSECNO "カウンタ
AND ZDELKB = P_ZDELKB. "処理ステータス
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDFORM. " F_BAPIERROR_LOG_ZTPP0372
*&---------------------------------------------------------------------*
*& Form WRITE_OUTPUT_DATA
*&---------------------------------------------------------------------*
* WRITE_OUTPUT_DATA
*----------------------------------------------------------------------*
FORM WRITE_OUTPUT_DATA .
WRITE: /1 SY-VLINE,
2(14) W_DATA-AUFNR_N, "指図番号(CCNBC)
16(1) SY-VLINE,
17(10) W_DATA-BUDAT, "製造日付(CCWJ)
27(1) SY-VLINE,
28(4) W_DATA-AUFNR_W, "指図番号(CCWJ)
32(1) SY-VLINE,
33(4) W_DATA-ZSECNO, "カウンタ
37(1) SY-VLINE,
38(18) W_DATA-AUFNR_W, "指図番号
56(1) SY-VLINE,
57(7) W_DATA-ZSTATUS, "処理STS
64(1) SY-VLINE,
65(8) W_DATA-WERKS, "プラント
73(1) SY-VLINE,
74(12) W_DATA-MATNR, "品目コード
86(1) SY-VLINE,
87(40) W_DATA-MAKTX, "品目テキスト
127(1) SY-VLINE,
128(15) W_DATA-BMENGE UNIT W_DATA-BMEINS, "基本数量
143(1) SY-VLINE,
144(12) W_DATA-BMEINS, "基本数量単位
156(1) SY-VLINE,
157(10) W_DATA-GSTRP, "指図開始日
167(1) SY-VLINE,
168(80) W_DATA-ERROR, "ERROR RECORD
248(1) SY-VLINE.
ULINE /1(247).
CLEAR LW_FLAG.
ENDFORM. " WRITE_OUTPUT_DATA
*&---------------------------------------------------------------------*
*& Form BAPI_TRANSACTION_COMMIT
*&---------------------------------------------------------------------*
* TRANSACTION_COMMIT
*----------------------------------------------------------------------*
FORM BAPI_TRANSACTION_COMMIT .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = CNS_X
* IMPORTING
* RETURN =
.
ENDFORM. " BAPI_TRANSACTION_COMMIT

浙公网安备 33010602011771号