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