09-08-2008 9:58 AM
Hi Gurus....
I am creating customer master upload report program,
using BDC session.I can able to create a BDC Session thru the report program and excute it in background from the program.But the problem is after the execution of the session I don`t know how to access the log from the program.
Could any one give me a solution please?
Note : want to access the log not using the SM35 ,but thru the report program.
Thanks in advance,
Guna.
09-08-2008 10:01 AM
09-08-2008 10:13 AM
Hi Chandra sekhar,
Thanks for your quick response.But i already tried the function module
call function 'BDC_PROTOCOL_SELECT'
from this how can i get the successfull or error message?
please explain me....
Thanks and regards,
Rajesh
10-16-2008 6:27 AM
10-20-2008 8:00 AM
*======================================================================
プログラム・ヘッダー
*======================================================================
*
プログラム 名称 : リース契約・リース物件情報Upload
プログラム : ZFIR0160
作成日 : 2008/09/24
作成者 : M.GUNASEELAN(INFOVIEW)
タイプ : REPORT
備考 :
*======================================================================
NO 日付 名称 内容
*
*======================================================================
REPORT ZFIR0160
NO STANDARD PAGE HEADING
LINE-COUNT 43
LINE-SIZE 200
MESSAGE-ID ZNN01.
*======================================================================
テーブル、構造定義 ---*
*======================================================================
TABLES : EKKO. "購買伝票ヘッダ
*======================================================================
内部テーブルの構造
*======================================================================
ファイル定義(入力ファイル.リース契約・物件登録ファイル)
TYPES : BEGIN OF TYP_INPUT_FILE,
ZBUKRS(10) TYPE C, "会社コード'
ZLEAFI(16) TYPE C, "リース会社コード',
ZLVTNR1(15) TYPE C, "契約番号',
ZLVTNR2(8) TYPE C, "契約枝番',
ZTXA50_ANLT(50) TYPE C, "契約名称',
ZINVNR_ANLA(25) TYPE C, "棚卸番号',
ZEBELN(16) TYPE C, "購買発注伝票番号',
ZACCT(12) TYPE C, "経理処理区分',
ZINTEREST(12) TYPE C, "利息処理区分',
ZLEGEB_SOUGAKU(13) TYPE C, "リース料総額',
ZLBARW_ALL(14) TYPE C, "全リース資産額',
ZCONTAX(13) TYPE C, "消費税',
ZKZINW(13) TYPE C, "支払利息額',
ZQUAN(13) TYPE C, "全物件数', 230
ZKOSTL(10) TYPE C, "原価センタ',
ZKOSTLV(14) TYPE C, "責任原価センタ',
ZWERKS_D(8) TYPE C, "プラント',
ZSTORT(10) TYPE C, "場所',
ZRAUMNR(8) TYPE C, "部屋',
ZAM_KFZKZ(18) TYPE C, "ナンバープレート',
ZORD41(14) TYPE C, "評価グループ1',
ZORD42(14) TYPE C, "評価グループ 2',
ZORD43(14) TYPE C, "評価グループ 3',
ZORD44(14) TYPE C, "評価グループ 4',
ZIZWEK(12) TYPE C, "設備投資理由',
ZAM_UMWKZ(12) TYPE C, "環境投資理由',
ZANLUE(18) TYPE C, "資産グループコード',
ZLVDAT(8) TYPE C, "契約日',
ZLKDAT(8) TYPE C, "通知日付',
ZLEABG(8) TYPE C, "開始日付',
ZLBASW(13) TYPE C, "基準価額',
ZLKAUF(13) TYPE C, "買取価額',
ZLETXT(50) TYPE C, "追加テキスト',
ZLEANZ(8) TYPE C, "支払回数',
ZLRYTH(8) TYPE C, "支払周期',
ZLVORS(4) TYPE C, "前払',
ZLEGEB(13) TYPE C, "リース料',
ZLZINS(7) TYPE C, "年利', 306
ZINVNR_ANLAB(25) TYPE C, "物件番号',
ZANLKL(16) TYPE C, "資産クラス',
ZTXA50_ANLTB(50) TYPE C, "物件名称',
ZQUAN_B(13) TYPE C, "物件数',
ZLBARW_B(13) TYPE C, "リース資産額',
ZMAINTE(13) TYPE C, "維持費用額',
ZLGADV(13) TYPE C, "長期前受収益',
ZKOSTL_B(18) TYPE C, "(物件)原価センタ',
ZKOSTLV_B(22) TYPE C, "(物件)責任原価センタ',
ZWERKS_DB(16) TYPE C, "(物件)プラント',
ZSTORT_B(12) TYPE C, "(物件)場所',
ZRAUMNR_B(12) TYPE C, "(物件)部屋',
ZAM_KFZKZB(24) TYPE C, "(物件)ナンバープレート',
ZORD41_B(22) TYPE C, "(物件)評価グループ1',
ZORD42_B(22) TYPE C, "(物件)評価グループ 2',
ZORD43_B(22) TYPE C, "(物件)評価グループ 3',
ZORD44_B(22) TYPE C, "(物件)評価グループ 4', 335
ZIZWEK_B(20) TYPE C, "(物件)設備投資理由',
ZAM_UMWKZB(20) TYPE C, "(物件)環境投資理由',
ZANLUE_B(26) TYPE C, "(物件)資産グループコード',
ZAFASL01(16) TYPE C, "帳簿(償却キー)
ZNDJAR01(16) TYPE C, "帳簿(耐用年数)
ZNDPER01(16) TYPE C, "帳簿(耐用期間) 114
END OF TYP_INPUT_FILE.
ファイル定義(入力ファイル.リース契約・物件登録ファイル)
TYPES : BEGIN OF TYP_UPLD_FILE,
ZBUKRS(10) TYPE C, "会社コード'
ZLEAFI(16) TYPE C, "リース会社コード',
ZLVTNR1(15) TYPE C, "契約番号',
ZLVTNR2(8) TYPE C, "契約枝番',
ZTXA50_ANLT(50) TYPE C, "契約名称',
ZINVNR_ANLA(25) TYPE C, "棚卸番号',
ZEBELN(16) TYPE C, "購買発注伝票番号',
ZACCT(12) TYPE C, "経理処理区分',
ZINTEREST(12) TYPE C, "利息処理区分',
ZLEGEB_SOUGAKU(13) TYPE C, "リース料総額',
ZLBARW_ALL(14) TYPE C, "全リース資産額',
ZCONTAX(13) TYPE C, "消費税',
ZKZINW(13) TYPE C, "支払利息額',
ZQUAN(13) TYPE C, "全物件数',
ZKOSTL(10) TYPE C, "原価センタ',
ZKOSTLV(14) TYPE C, "責任原価センタ',
ZWERKS_D(8) TYPE C, "プラント',
ZSTORT(10) TYPE C, "場所',
ZRAUMNR(8) TYPE C, "部屋',
ZAM_KFZKZ(18) TYPE C, "ナンバープレート',
ZORD41(14) TYPE C, "評価グループ1',
ZORD42(14) TYPE C, "評価グループ 2',
ZORD43(14) TYPE C, "評価グループ 3',
ZORD44(14) TYPE C, "評価グループ 4',
ZIZWEK(12) TYPE C, "設備投資理由',
ZAM_UMWKZ(12) TYPE C, "環境投資理由',
ZANLUE(18) TYPE C, "資産グループコード',
ZLVDAT(8) TYPE C, "契約日',
ZLKDAT(8) TYPE C, "通知日付',
ZLEABG(8) TYPE C, "開始日付',
ZLBASW(13) TYPE C, "基準価額',
ZLKAUF(13) TYPE C, "買取価額',
ZLETXT(50) TYPE C, "追加テキスト',
ZLEANZ(8) TYPE C, "支払回数',
ZLRYTH(8) TYPE C, "支払周期',
ZLVORS(4) TYPE C, "前払',
ZLEGEB(13) TYPE C, "リース料',
ZLZINS(7) TYPE C, "年利',
ZLBARW(13) TYPE C, "現在価値',
ZINVNR_ANLAB(25) TYPE C, "物件番号',
ZANLKL(16) TYPE C, "資産クラス',
ZTXA50_ANLTB(50) TYPE C, "物件名称',
ZQUAN_B(13) TYPE C, "物件数',
ZLBARW_B(13) TYPE C, "リース資産額',
ZMAINTE(13) TYPE C, "維持費用額',
ZLGADV(13) TYPE C, "長期前受収益',
ZKOSTL_B(18) TYPE C, "(物件)原価センタ',
ZKOSTLV_B(22) TYPE C, "(物件)責任原価センタ',
ZWERKS_DB(16) TYPE C, "(物件)プラント',
ZSTORT_B(12) TYPE C, "(物件)場所',
ZRAUMNR_B(12) TYPE C, "(物件)部屋',
ZAM_KFZKZB(24) TYPE C, "(物件)ナンバープレート',
ZORD41_B(22) TYPE C, "(物件)評価グループ1',
ZORD42_B(22) TYPE C, "(物件)評価グループ 2',
ZORD43_B(22) TYPE C, "(物件)評価グループ 3',
ZORD44_B(22) TYPE C, "(物件)評価グループ 4',
ZIZWEK_B(20) TYPE C, "(物件)設備投資理由',
ZAM_UMWKZB(20) TYPE C, "(物件)環境投資理由',
ZANLUE_B(26) TYPE C, "(物件)資産グループコード',
ZAFASL01(16) TYPE C, "帳簿(償却キー)
ZNDJAR01(16) TYPE C, "帳簿(耐用年数)
ZNDPER01(16) TYPE C, "帳簿(耐用期間)
END OF TYP_UPLD_FILE.
*--ダウンロードファイルヘッダ(エラーデータ)
DATA : BEGIN OF TYP_HEADER,
CNS_ZZBUKRS(10) TYPE C VALUE '会社コード',
CNS_ZZLEAFI(16) TYPE C VALUE 'リース会社コード',
CNS_ZZLVTNR1(15) TYPE C VALUE '契約番号',
CNS_ZZLVTNR2(8) TYPE C VALUE '契約枝番',
CNS_ZZINVNR_ANLA_24(25) TYPE C VALUE '物件番号',
CNS_ZFLDTEXT(25) TYPE C VALUE '項目名称',
CNS_ZERRMSG(100) TYPE C VALUE 'メッセージ',
END OF TYP_HEADER.
購買伝票ヘッダ ,購買伝票明細 テーブル
TYPES : BEGIN OF TYP_KOUBAI_DATA,
BUKRS TYPE EKKO-BUKRS, "会社コード
EBELN TYPE EKKO-EBELN, "購買伝票番号
EBELP TYPE EKPO-EBELP, "購買伝票の明細番号
LIFNR TYPE EKKO-LIFNR, "仕入先勘定コード
BEDNR TYPE EKPO-BEDNR, "購買依頼追跡番号
MENGE TYPE EKPO-MENGE, "購買発注量
NETPR TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
FPLNR TYPE FPLA-FPLNR, "支払計画番号
END OF TYP_KOUBAI_DATA.
購買伝票勘定設定内部テーブルの構造
TYPES : BEGIN OF TYP_EKKN,
EBELN TYPE EKKN-EBELN, "購買伝票番号
EBELP TYPE EKKN-EBELP, "購買伝票の明細番号
KOSTL TYPE EKKN-KOSTL, "原価センタ
SAKTO TYPE EKKN-SAKTO, "G/L 勘定コード
END OF TYP_EKKN.
請求計画データ取得用内部テーブルの構造
TYPES : BEGIN OF TYP_FPLA,
FPLNR TYPE FPLA-FPLNR, "請求計画番号
BEDAT TYPE FPLA-BEDAT, "請求/支払計画開始日付
ENDAT TYPE FPLA-ENDAT, "請求/支払計画終了日付
HORIZ TYPE FPLA-HORIZ, "請求/支払計画における期間決定の規則
PERIO TYPE FPLA-PERIO, "次回請求/請求書日付コピー元の規則
END OF TYP_FPLA.
購買伝票明細 テーブル[TEMP]
TYPES : BEGIN OF TYP_KOUBAI_SUCCESS,
EBELN TYPE EKKN-EBELN, "購買伝票番号
BUKRS TYPE EKKO-BUKRS, "会社コード
LIFNR TYPE EKKO-LIFNR, "仕入先勘定コード
BEDNR TYPE EKPO-BEDNR, "購買依頼追跡番号
BEDAT TYPE FPLA-BEDAT, "請求/支払計画開始日付
ENDAT TYPE FPLA-ENDAT, "請求/支払計画終了日付
HORIZ TYPE FPLA-HORIZ, "支払回数
PERIO TYPE FPLA-PERIO, "支払周期
MENGE TYPE EKPO-MENGE, "購買発注量
NETPR TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
NETPR_3 TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
KOSTL TYPE EKKN-KOSTL, "原価センタ
ZZACCT(12) TYPE C,
PATTERN(1) TYPE C,
END OF TYP_KOUBAI_SUCCESS.
年金現値係数表[TEMP]
TYPES : BEGIN OF TYP_ZTFI0028,
ZNENRI TYPE I,
ZPERCT TYPE ZTFI0028-ZZPERCT_01,
END OF TYP_ZTFI0028.
年利計算する為[TEMP]
TYPES : BEGIN OF TYP_NENRI_STR,
LZINS TYPE ANLA-LZINS,
LBARW TYPE ZTFI0023-ZZLBARW,
END OF TYP_NENRI_STR.
*--パターン内部テーブルの構造
TYPES : BEGIN OF TYP_PATTERN,
BUKRS TYPE EKKO-BUKRS, "会社コード
EBELN TYPE EKKO-EBELN, "購買伝票番号
ZSHURUI TYPE ZTFI0025-ZSHURUI,
EBELP TYPE EKPO-EBELP, "購買伝票の明細番号
SAKTO TYPE EKKN-SAKTO,
PATRN(1) TYPE C,
END OF TYP_PATTERN.
TYPES : BEGIN OF TYP_ERR_FILE,
ZBUKRS(10) TYPE C, "会社コード'
ZLEAFI(16) TYPE C, "リース会社コード',
ZLVTNR1(15) TYPE C, "契約番号',
ZLVTNR2(8) TYPE C, "契約枝番',
ZINVNR_ANLAB(25) TYPE C, "物件番号',
ZFLDTEXT(25) TYPE C, "エラー項目名
ZERRMSG(100) TYPE C, "エラーメッセージ
END OF TYP_ERR_FILE.
*======================================================================
内部テーブル定義
*======================================================================
*
(入力ファイル)リース契約.物件アップロードファイル
DATA : IT_INPUT TYPE STANDARD TABLE OF TYP_INPUT_FILE,
WA_INPUT TYPE TYP_INPUT_FILE.
(入力ファイル)リース契約.物件アップロードファイル
DATA : IT_UPLD_FILE TYPE STANDARD TABLE OF TYP_UPLD_FILE,
IT_UPLD_TEMP TYPE STANDARD TABLE OF TYP_UPLD_FILE,
WA_UPLD_FILE TYPE TYP_UPLD_FILE,
WA_UPLD_TEMP TYPE TYP_UPLD_FILE.
DATA : IT_UPLOAD_T TYPE STANDARD TABLE OF TYP_UPLD_FILE,
WA_UPLOAD_T TYPE TYP_UPLD_FILE.
リース契約テーブル登録
DATA : IT_ZTFI0023 TYPE STANDARD TABLE OF ZTFI0023,
WA_ZTFI0023 TYPE ZTFI0023,
WA_FI23_TEMP TYPE ZTFI0023.
リース物件テーブル登録
DATA : IT_ZTFI0024 TYPE STANDARD TABLE OF ZTFI0024,
WA_ZTFI0024 TYPE ZTFI0024,
WA_FI24_TEMP TYPE ZTFI0024.
*---明細種類用内部テーブル
DATA : IT_ZTFI0025 TYPE STANDARD TABLE OF ZTFI0025,
WA_ZTFI0025 TYPE ZTFI0025.
*---年金現値係数表(月)
DATA : IT_ZTFI0028 TYPE STANDARD TABLE OF ZTFI0028,
WA_ZTFI0028 TYPE ZTFI0028.
*---年金現値係数表[TEMP]
DATA : IT_28_TEMP TYPE STANDARD TABLE OF TYP_ZTFI0028,
WA_28_TEMP TYPE TYP_ZTFI0028.
*---年利計算する為[TEMP]
DATA : IT_NENRI TYPE STANDARD TABLE OF TYP_NENRI_STR,
WA_NENRI TYPE TYP_NENRI_STR.
購買伝票ヘッダ ,購買伝票明細 テーブル
DATA : IT_KOUBAI_DATA TYPE STANDARD TABLE OF TYP_KOUBAI_DATA,
WA_KOUBAI_DATA TYPE TYP_KOUBAI_DATA.
購買伝票データの内部テーブル[TEMP]
DATA : IT_KOUBAI_SUCCESS TYPE STANDARD TABLE OF TYP_KOUBAI_SUCCESS,
WA_KOUBAI_SUCCESS TYPE TYP_KOUBAI_SUCCESS,
WA_KOUBAI_TEMP TYPE TYP_KOUBAI_SUCCESS.
*--購買伝票勘定設定内部テーブル
DATA : IT_EKKN TYPE STANDARD TABLE OF TYP_EKKN,
WA_EKKN TYPE TYP_EKKN.
*--請求計画データ取得用内部テーブル
DATA : IT_FPLA TYPE STANDARD TABLE OF TYP_FPLA,
WA_FPLA TYPE TYP_FPLA.
会社コードテーブル定義
DATA : IT_T001 TYPE STANDARD TABLE OF T001-BUKRS,
WA_T001 TYPE T001-BUKRS.
会社コードテーブル定義
DATA : R_BUKRS TYPE RANGE OF T001-BUKRS,
R_BUKRS_LINE LIKE LINE OF R_BUKRS.
*--パターン内部テーブル
DATA : IT_PATTERN TYPE STANDARD TABLE OF TYP_PATTERN,
WA_PATTERN TYPE TYP_PATTERN.
*--パターン内部テーブル[TEMP]
DATA : IT_PATTERN_T TYPE STANDARD TABLE OF TYP_PATTERN,
WA_PATTERN_T TYPE TYP_PATTERN.
(出力ファイル)リース契約.物件エラーファイル
DATA : IT_ERR_FILE TYPE STANDARD TABLE OF TYP_ERR_FILE,
WA_ERR_FILE TYPE TYP_ERR_FILE.
*======================================================================
*---変数定義
*======================================================================
DATA : G_FILE TYPE RLGRAP-FILENAME, "ファイル名
G_FNAME TYPE STRING, "ファイルパス
G_NO_DAYS TYPE I,
G_NO_MONTHS TYPE I,
G_NO_YEARS TYPE I,
G_RKIKAN TYPE I, "リース期間
G_RKIKAN_SIHARAI TYPE I, "リース期間
G_TABIX TYPE SY-TABIX,
G_NETPR TYPE EKPO-NETPR, "購買伝票の正味価格
G_NETPR_3 TYPE EKPO-NETPR, "購買伝票の正味価格
G_MENGE TYPE EKPO-MENGE, "購買発注量
G_NENRI TYPE ANLA-LZINS, "年利
G_NENRI_TEMP TYPE ANLA-LZINS, "年利
G_DIFF1 TYPE ZTFI0028-ZZPERCT_01,
G_DIFF2 TYPE ZTFI0028-ZZPERCT_01,
G_ZEITR_ZLRYTH TYPE TVRG-ZEITR. "間接日付決定用期間
*======================================================================
*---フラグ定義
*======================================================================
DATA : FLG_X TYPE C,
FLG_MANDT TYPE C,
FLG_TGR TYPE C,
FLG_CHECK TYPE C,
FLG_KIKAN TYPE C,
FLG_DATE TYPE C.
DATA : W_HTYPE TYPE DD01V-DATATYPE.
*--S
DATA : FLG_DIFF TYPE C.
*--E
*======================================================================
定数定義
*======================================================================
CONSTANTS:
COS_X TYPE C VALUE 'X',
COS_SID TYPE C VALUE '&', " システムID
COS_CLNT TYPE C VALUE '$', " クライアント
COS_JPY(3) TYPE C VALUE 'JPY',
COS_Z1(2) TYPE C VALUE 'Z1',
COS_1 TYPE C VALUE '1',
COS_2 TYPE C VALUE '2',
COS_3 TYPE C VALUE '3',
COS_4 TYPE C VALUE '4',
COS_6 TYPE C VALUE '6',
COS_12(2) TYPE C VALUE '12',
COS_012(3) TYPE N VALUE '012',
COS_31(2) TYPE C VALUE '31',
COS_E1 TYPE ANLA-LZINS VALUE '0.1000',
COS_E10 TYPE ANLA-LZINS VALUE '0.0100',
COS_E100 TYPE ANLA-LZINS VALUE '0.0010',
COS_E1000 TYPE ANLA-LZINS VALUE '0.0001',
COS_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
*======================================================================
*---選択画面
*======================================================================
SELECTION-SCREEN BEGIN OF LINE.
*会社コード
SELECTION-SCREEN COMMENT 5(10) TEXT-000.
SELECTION-SCREEN POSITION 18.
SELECT-OPTIONS : S_BUKRS FOR EKKO-BUKRS OBLIGATORY MEMORY ID ZFI01. "会社コード
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK BL1
WITH FRAME TITLE TEXT-001.
*実行オプション
PARAMETERS : RB_SINKI RADIOBUTTON GROUP R1, "新規登録
RB_SAITO RADIOBUTTON GROUP R1, "再登録
RB_TEST RADIOBUTTON GROUP R1. "テスト実行
SELECTION-SCREEN END OF BLOCK BL1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK BL2
WITH FRAME TITLE TEXT-002.
*アップロードファイル
PARAMETERS : P_UNIXUP TYPE RLGRAP-FILENAME, "アップロード(UNIX)
P_PCUP TYPE RLGRAP-FILENAME. "アップロード(PC)
SELECTION-SCREEN SKIP 1.
*エラーファイル
PARAMETERS : P_UNIXER TYPE RLGRAP-FILENAME, "エラー(UNIX)
P_PCER TYPE RLGRAP-FILENAME. "エラー(PC)
SELECTION-SCREEN END OF BLOCK BL2.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
*リース終了の過去データ削除
SELECTION-SCREEN POSITION 3.
PARAMETERS : P_SAKUJO AS CHECKBOX. "リース終了の過去データ削除
SELECTION-SCREEN COMMENT 5(30) TEXT-003 FOR FIELD P_SAKUJO.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*会計年度
SELECTION-SCREEN COMMENT 6(8) TEXT-005.
SELECTION-SCREEN POSITION 21.
PARAMETERS : P_GJAHR TYPE BSEG-GJAHR. "会計年度
SELECTION-SCREEN COMMENT 30(4) TEXT-006.
SELECTION-SCREEN POSITION 36.
PARAMETERS : P_NENMAE(2) TYPE N DEFAULT ' 7'.
*年前
SELECTION-SCREEN COMMENT 45(5) TEXT-004.
SELECTION-SCREEN END OF LINE.
*======================================================================
INITIALIZATION
*======================================================================
INITIALIZATION.
*--会社コードの初期値設定
GET PARAMETER ID 'ZFI01' FIELD S_BUKRS-LOW. " 会社コード
*--会計年度、会計期間の初期値設定
CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'
EXPORTING
COMPANYCODEID = S_BUKRS-LOW
POSTING_DATE = SY-DATUM
IMPORTING
FISCAL_YEAR = P_GJAHR. "会計年度
*=======================================================================
AT SELECTION-SCREEN OUTPUT
*=======================================================================
AT SELECTION-SCREEN OUTPUT.
*======================================================================
AT SELECTION-SCREEN
*======================================================================
AT SELECTION-SCREEN.
会社コードの存在チェック
PERFORM SBUKRS_CHECK.
入力ファイルのチェック
PERFORM F_INPUT_PARAMETER_CHECK.
UNIXファイルパスのチェック
IF NOT P_UNIXUP IS INITIAL.
PERFORM F_CHECK_UNIX_PATH USING P_UNIXUP COS_2
CHANGING G_FILE.
ENDIF.
UNIXエラーファイルパスのチェック
IF NOT P_UNIXER IS INITIAL.
PERFORM F_CHECK_UNIX_PATH USING P_UNIXER COS_1
CHANGING G_FILE.
ENDIF.
会計年度のチェック
PERFORM F_PAST_DATE_CHECK.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCUP.
アップロードファイル名を選択するポップアップ画面
PERFORM F_FILEOPEN_DIALOG CHANGING P_PCUP.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCER.
エラーファイル名を選択するポップアップ画面
PERFORM F_FILEOPEN_DIALOG CHANGING P_PCER.
*=======================================================================
START-OF-SELECTION
*=======================================================================
START-OF-SELECTION.
アップロードファイルの存在チェック
PERFORM F_FILE_EXIST_CHECK.
アップロードファイルの読込む
IF P_PCUP IS NOT INITIAL.
PERFORM F_GUI_UPLOAD USING P_PCUP.
ELSEIF P_UNIXUP IS NOT INITIAL.
PERFORM F_READ_UNIX_FILE USING P_UNIXUP.
ENDIF.
過去データの削除
PERFORM F_DELETE_PAST_DATA.
アップロードファイルのデータをCONDENSEする
PERFORM F_CONDENSE.
アップロードファイルのチェック要領
PERFORM F_UPLOAD_CHECK.
関連チェック
PERFORM F_KANREN_CHECK.
IF RB_TEST <> COS_X.
リース契約.リース物件データの登録
PERFORM F_KEIYAKU_BUKKEN_INSERT.
ENDIF.
*--ダウンロード内部テーブルをソートする
SORT IT_ERR_FILE BY ZBUKRS ZLEAFI
ZLVTNR1 ZLVTNR2
ZINVNR_ANLAB.
IF NOT P_PCER IS INITIAL AND
NOT IT_ERR_FILE IS INITIAL.
*エラーファイル(PC)をダウンロードする
PERFORM F_ERR_FILE_DOWNLOAD USING P_PCER.
ELSEIF NOT P_UNIXER IS INITIAL AND
NOT IT_ERR_FILE IS INITIAL.
*エラーファイル(UNIX)をダウンロードする
PERFORM F_ERR_UNIX_DOWNLOAD TABLES IT_ERR_FILE
USING WA_ERR_FILE P_UNIXER .
ENDIF.
IF SY-SUBRC = 0.
MESSAGE S000 WITH TEXT-013.
ENDIF.
*&----
*
*& Form SBUKRS_CHECK
*&----
*
会社コードの存在チェック
*----
*
FORM SBUKRS_CHECK .
会社コードの取得
SELECT BUKRS FROM T001 INTO TABLE IT_T001
WHERE BUKRS IN S_BUKRS.
IF SY-SUBRC <> 0.
MESSAGE E014 WITH '会社コード'.
ENDIF.
R_BUKRS_LINE-SIGN = 'I'.
R_BUKRS_LINE-OPTION = 'EQ'.
LOOP AT IT_T001 INTO WA_T001.
R_BUKRS_LINE-LOW = WA_T001.
APPEND R_BUKRS_LINE TO R_BUKRS.
ENDLOOP.
ENDFORM. " SBUKRS_CHECK
*&----
*
*& Form F_INPUT_PARAMETER_CHECK
*&----
*
入力パラメータのチェック
*----
*
FORM F_INPUT_PARAMETER_CHECK .
IF ( ( P_UNIXUP IS NOT INITIAL AND
P_PCUP IS INITIAL AND
P_UNIXER IS INITIAL AND
P_PCER IS INITIAL ) OR
( P_UNIXUP IS INITIAL AND
P_PCUP IS INITIAL AND
P_UNIXER IS NOT INITIAL AND
P_PCER IS INITIAL ) ).
SET CURSOR FIELD 'P_UNIXUP'.
アップロード(UNIX)ファイルとエラー(UNIX)ファイル両方とも入力してください。
MESSAGE E000(ZNN01) WITH TEXT-011.
ELSEIF ( ( P_UNIXUP IS INITIAL AND
P_PCUP IS NOT INITIAL AND
P_UNIXER IS INITIAL AND
P_PCER IS INITIAL ) OR
( P_UNIXUP IS INITIAL AND
P_PCUP IS INITIAL AND
P_UNIXER IS INITIAL AND
P_PCER IS NOT INITIAL ) ).
SET CURSOR FIELD 'P_PCUP'.
アップロード(PC)ファイルとエラー(PC)ファイル両方とも入力してください。
MESSAGE E000(ZNN01) WITH TEXT-009.
ELSEIF P_UNIXUP IS NOT INITIAL AND
P_PCUP IS NOT INITIAL.
SET CURSOR FIELD 'P_UNIXUP'.
UNIXファイルとローカルPCファイル両方とも入力する事が出来ません
MESSAGE E000(ZNN01) WITH TEXT-007.
ELSEIF P_UNIXER IS NOT INITIAL AND
P_PCER IS NOT INITIAL.
SET CURSOR FIELD 'P_UNIXER'.
エラー(UNIX)ファイルとエラー(PC)ファイル両方とも入力する事が出来ません。
MESSAGE E000(ZNN01) WITH TEXT-008.
ELSEIF ( P_UNIXUP IS NOT INITIAL AND
P_UNIXER IS INITIAL ) OR
( P_UNIXUP IS INITIAL AND
P_UNIXER IS NOT INITIAL ).
SET CURSOR FIELD 'P_UNIXUP'.
ファイルの指定場所の組合せが不適切です
MESSAGE E000(ZNN01) WITH TEXT-035.
ELSEIF ( P_PCUP IS NOT INITIAL AND
P_PCER IS INITIAL ) OR
( P_PCUP IS INITIAL AND
P_PCER IS NOT INITIAL ) .
SET CURSOR FIELD 'P_PCUP'.
ファイルの指定場所の組合せが不適切です
MESSAGE E000(ZNN01) WITH TEXT-035.
ELSEIF P_PCUP IS INITIAL AND
P_UNIXUP IS INITIAL AND
P_PCER IS INITIAL AND
P_UNIXER IS INITIAL .
SET CURSOR FIELD 'P_UNIXUP'.
ファイル名は未入力です。。
MESSAGE E000(ZNN01) WITH TEXT-010.
ENDIF.
サーバファイルは同じ場所である場合
IF P_UNIXUP IS NOT INITIAL AND
P_UNIXER IS NOT INITIAL.
IF P_UNIXUP = P_UNIXER.
SET CURSOR FIELD 'P_UNIXUP'.
アップロードファイルとエラーファイルの場所は同じです。
MESSAGE E000(ZNN01) WITH TEXT-012.
ENDIF.
ENDIF.
ローカルファイルは同じ場所である場合
IF P_PCUP IS NOT INITIAL AND
P_PCER IS NOT INITIAL.
IF P_PCUP = P_PCER .
SET CURSOR FIELD 'P_PCUP'.
アップロードファイルとエラーファイルの場所は同じです。
MESSAGE E000(ZNN01) WITH TEXT-012.
ENDIF.
ENDIF.
ENDFORM. " F_INPUT_FILE_CHECK
*&----
*
*& Form F_CHECK_UNIX_PATH
*&----
*
UNIXファイルパスのチェック
*----
*
FORM F_CHECK_UNIX_PATH USING L_UNIX_PATH TYPE RLGRAP-FILENAME
L_COS TYPE C
CHANGING L_FNAME TYPE RLGRAP-FILENAME.
UNIXファイルパスの変換
CLEAR : L_FNAME,G_FNAME.
G_FNAME = L_UNIX_PATH.
REPLACE: COS_SID IN G_FNAME WITH SY-SYSID,
COS_CLNT IN G_FNAME WITH SY-MANDT.
CONDENSE G_FNAME NO-GAPS.
UNIXディレクトリアクセス制御
CALL FUNCTION 'Z_ZMA1_UNIX_DIR_CHECK'
EXPORTING
I_FILEPATH = G_FNAME "ファイルパス
I_S_KBN = L_COS "処理区分 1:アウトバウンド 2:インバウンド 3:一時ワーク使用 4:ユーザワーク領域
EXCEPTIONS
H_MODULE_ERROR = 1
MASTER_ERROR = 2
UNIX_PATH_ERROR = 3
PARAMETER_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
L_FNAME = G_FNAME.
ENDFORM. " F_CHECK_UNIX_PATH
*&----
*
*& Form F_PAST_DATE_CHECK
*&----
*
会計年度のチェック
*----
*
FORM F_PAST_DATE_CHECK .
DATA : L_HON_NENDO TYPE NUMC4,
L_GJAHR LIKE P_GJAHR.
*---過去データ削除の時
IF P_SAKUJO = COS_X.
CLEAR : L_HON_NENDO, L_GJAHR.
L_HON_NENDO = SY-DATUM+0(4).
L_GJAHR = P_GJAHR - P_NENMAE.
*-----入力会計年度 - 入力年数 > システム日付の年
IF L_GJAHR > L_HON_NENDO.
*-----会計年度が本年度でより大きくなっています
MESSAGE E999 WITH TEXT-032.
ENDIF.
ENDIF.
ENDFORM. " F_PAST_DATE_CHECK
*&----
*
*& Form F_FILEOPEN_DIALOG
*&----
*
ファイル名を選択するコンボボックス表示
*----
*
FORM F_FILEOPEN_DIALOG CHANGING I_FILE TYPE RLGRAP-FILENAME.
DATA : LT_FILETABLE TYPE TABLE OF FILE_TABLE,
LV_RC TYPE I,
LV_USER_ACTION TYPE I.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'アップロードファイル'
DEFAULT_EXTENSION =
DEFAULT_FILENAME =
FILE_FILTER = '.TXT|.TXT'
WITH_ENCODING =
INITIAL_DIRECTORY =
MULTISELECTION =
CHANGING
FILE_TABLE = LT_FILETABLE
RC = LV_RC
USER_ACTION = LV_USER_ACTION
FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC = 0 AND LV_RC > 0 AND
LV_USER_ACTION <> 9.
READ TABLE LT_FILETABLE INTO I_FILE INDEX 1.
ELSE.
*--処理を中止しました
MESSAGE ID 'ZREP01' TYPE 'S'
NUMBER '069'
WITH '処理'
DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " F_FILEOPEN_DIALOG
*&----
*
*& Form F_FILE_EXIST_CHECK
*&----
*
アップロードファイルの存在チェック
*----
*
FORM F_FILE_EXIST_CHECK .
CLEAR FLG_X.
UNIXファイルの存在チェック
IF NOT P_UNIXUP IS INITIAL AND
NOT P_UNIXER IS INITIAL.
PERFORM F_UNIXFILE_EXIST_CHECK.
ENDIF.
IF SY-BATCH <> COS_X.
アップロードファイル(PC)の存在チェック
IF NOT P_PCUP IS INITIAL AND
NOT P_PCER IS INITIAL.
PERFORM F_PCFILE_EXIST_CHECK USING P_PCUP
'アップロードファイル(PC)'.
FLG_X = COS_X.
PERFORM F_PCFILE_EXIST_CHECK USING P_PCER
'エラーファイル(PC)'.
CLEAR FLG_X.
ENDIF.
ENDIF.
ENDFORM. " F_FILE_EXIST_CHECK
*&----
*
*& Form F_UNIXFILE_EXIST_CHECK
*&----
*
UNIXファイルの存在チェック
*----
*
FORM F_UNIXFILE_EXIST_CHECK .
サーバーアップロードファイルの存在チェック
OPEN DATASET P_UNIXUP FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC <> 0.
IF SY-BATCH <> COS_X.
MESSAGE S014 DISPLAY LIKE 'E'
WITH 'アップロードファイル(UNIX)' P_UNIXUP.
LEAVE LIST-PROCESSING.
ELSE.
MESSAGE E014 WITH 'アップロードファイル(UNIX)' P_UNIXUP.
ENDIF.
ELSE.
CLOSE DATASET P_UNIXUP.
ENDIF.
サーバーエラーファイルの存在チェック
OPEN DATASET P_UNIXER FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC = 0.
IF SY-BATCH <> COS_X.
MESSAGE S020 DISPLAY LIKE 'E'
WITH 'エラーファイル(UNIX)' P_UNIXER.
LEAVE LIST-PROCESSING.
ELSE.
MESSAGE E020 WITH 'エラーファイル(UNIX)' P_UNIXER.
ENDIF.
ELSE.
CLOSE DATASET P_UNIXER.
ENDIF.
ENDFORM. " F_UNIXFILE_EXIST_CHECK
*&----
*
*& Form F_PCFILE_EXIST_CHECK
*&----
*
アップロードファイル(PC)の存在チェック
*----
*
FORM F_PCFILE_EXIST_CHECK USING I_PCFILE TYPE RLGRAP-FILENAME
I_TEXT TYPE ANY.
DATA: L_RESULT TYPE C LENGTH 1,
L_FILEPATH TYPE STRING.
CLEAR: L_RESULT.
L_FILEPATH = I_PCFILE.
正常結果ファイルダウンロード存在チェック
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = L_FILEPATH "ファイルパス
RECEIVING
RESULT = L_RESULT
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
ファイルが存在する場合
IF FLG_X = ' '.
IF L_RESULT = COS_X.
EXIT.
ELSE.
MESSAGE S014 DISPLAY LIKE 'E' WITH I_TEXT I_PCFILE.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF FLG_X = COS_X.
IF L_RESULT = COS_X.
MESSAGE S020 DISPLAY LIKE 'E' WITH I_TEXT I_PCFILE.
LEAVE LIST-PROCESSING.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDIF.
CLEAR FLG_X.
ENDFORM. " F_PCFILE_EXIST_CHECK
*&----
*
*& Form F_GUI_UPLOAD
*&----
*
アップロードファイルの読込む
*----
*
FORM F_GUI_UPLOAD USING I_FILENAME
TYPE RLGRAP-FILENAME.
DATA : L_FNAME TYPE STRING.
L_FNAME = I_FILENAME.
IF SY-BATCH = COS_X .
MESSAGE E999(ZLIS1) WITH TEXT-033
TEXT-034.
EXIT .
ENDIF .
*PCファイルのアップロード
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_FNAME "ファイル名
FILETYPE = 'DAT' "ファイルタイプ
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_INPUT "アップロードファイル
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
MESSAGE S000 DISPLAY LIKE 'E'
WITH 'ファイルアップロード(PC)に失敗しました'.
LEAVE LIST-PROCESSING.
ENDIF.
LOOP AT IT_INPUT INTO WA_INPUT.
MOVE-CORRESPONDING WA_INPUT TO WA_UPLD_FILE.
APPEND WA_UPLD_FILE TO IT_UPLD_FILE.
CLEAR : WA_INPUT , WA_UPLD_FILE.
ENDLOOP.
ヘッダを削除する
DELETE IT_UPLD_FILE INDEX 1.
ENDFORM. " F_GUI_UPLOAD
*&----
*
*& Form F_READ_UNIX_FILE
*&----
*
UNIXファイルを読込む
*----
*
FORM F_READ_UNIX_FILE USING I_UNIXUP TYPE RLGRAP-FILENAME.
データ宣言
DATA : L_LINE TYPE STRING,
L_LINE1 TYPE STRING,
L_STR TYPE I,
L_LAST TYPE I.
CLEAR: WA_UPLD_FILE,
L_LINE,
IT_UPLD_FILE.
OPEN DATASET I_UNIXUP FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC <> 0.
MESSAGE S001(ZNN01) DISPLAY LIKE 'E'
WITH I_UNIXUP 'オープン' SY-SUBRC .
LEAVE LIST-PROCESSING.
ENDIF.
DO.
READ DATASET I_UNIXUP INTO L_LINE. "WA_UPLD_FILE.
IF SY-SUBRC <> 0.
EXIT.
ELSE .
CALL METHOD CL_ABAP_LIST_UTILITIES=>DISPLAY_TO_STRUCTURE
EXPORTING
DISPLAY_DATA = L_LINE
IMPORTING
MEMORY_DATA = L_LINE1.
SPLIT L_LINE1 AT COS_TAB INTO WA_INPUT-ZBUKRS WA_INPUT-ZLEAFI
WA_INPUT-ZLVTNR1 WA_INPUT-ZLVTNR2
WA_INPUT-ZTXA50_ANLT WA_INPUT-ZINVNR_ANLA
WA_INPUT-ZEBELN WA_INPUT-ZACCT
WA_INPUT-ZINTEREST WA_INPUT-ZLEGEB_SOUGAKU
WA_INPUT-ZLBARW_ALL WA_INPUT-ZCONTAX
WA_INPUT-ZKZINW WA_INPUT-ZQUAN
WA_INPUT-ZKOSTL WA_INPUT-ZKOSTLV
WA_INPUT-ZWERKS_D WA_INPUT-ZSTORT
WA_INPUT-ZRAUMNR WA_INPUT-ZAM_KFZKZ
WA_INPUT-ZORD41 WA_INPUT-ZORD42
WA_INPUT-ZORD43 WA_INPUT-ZORD44
WA_INPUT-ZIZWEK WA_INPUT-ZAM_UMWKZ
WA_INPUT-ZANLUE WA_INPUT-ZLVDAT
WA_INPUT-ZLKDAT WA_INPUT-ZLEABG
WA_INPUT-ZLBASW WA_INPUT-ZLKAUF
WA_INPUT-ZLETXT WA_INPUT-ZLEANZ
WA_INPUT-ZLRYTH WA_INPUT-ZLVORS
WA_INPUT-ZLEGEB WA_INPUT-ZLZINS
WA_INPUT-ZINVNR_ANLAB WA_INPUT-ZANLKL
WA_INPUT-ZTXA50_ANLTB WA_INPUT-ZQUAN_B
WA_INPUT-ZLBARW_B WA_INPUT-ZMAINTE
WA_INPUT-ZLGADV WA_INPUT-ZKOSTL_B
WA_INPUT-ZKOSTLV_B WA_INPUT-ZWERKS_DB
WA_INPUT-ZSTORT_B WA_INPUT-ZRAUMNR_B
WA_INPUT-ZAM_KFZKZB WA_INPUT-ZORD41_B
WA_INPUT-ZORD42_B WA_INPUT-ZORD43_B
WA_INPUT-ZORD44_B WA_INPUT-ZIZWEK_B
WA_INPUT-ZAM_UMWKZB WA_INPUT-ZANLUE_B
WA_INPUT-ZAFASL01 WA_INPUT-ZNDJAR01
WA_INPUT-ZNDPER01.
L_STR = STRLEN( WA_INPUT-ZNDPER01 ).
L_LAST = L_STR - 1.
WA_INPUT-ZNDPER01+L_LAST(1) = ''.
MOVE-CORRESPONDING WA_INPUT TO WA_UPLD_TEMP.
APPEND WA_UPLD_TEMP TO IT_UPLD_FILE.
CLEAR : WA_UPLD_TEMP , WA_INPUT.
ENDIF.
ENDDO.
CLOSE DATASET I_UNIXUP .
ENDFORM. " F_READ_UNIX_FILE
*&----
*
*& Form F_CONDENSE
*&----
*
アップロードファイルのデータをCONDENSEする
*----
*
FORM F_CONDENSE .
IF IT_UPLD_FILE IS INITIAL.
MESSAGE I000 WITH TEXT-041.
EXIT.
ENDIF.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
CONDENSE WA_UPLD_FILE-ZBUKRS.
CONDENSE WA_UPLD_FILE-ZLEAFI.
CONDENSE WA_UPLD_FILE-ZLVTNR1.
CONDENSE WA_UPLD_FILE-ZLVTNR2.
CONDENSE WA_UPLD_FILE-ZTXA50_ANLT.
CONDENSE WA_UPLD_FILE-ZINVNR_ANLA.
CONDENSE WA_UPLD_FILE-ZEBELN.
CONDENSE WA_UPLD_FILE-ZACCT.
CONDENSE WA_UPLD_FILE-ZINTEREST.
CONDENSE WA_UPLD_FILE-ZLEGEB_SOUGAKU.
CONDENSE WA_UPLD_FILE-ZLBARW_ALL.
CONDENSE WA_UPLD_FILE-ZCONTAX.
CONDENSE WA_UPLD_FILE-ZKZINW.
CONDENSE WA_UPLD_FILE-ZQUAN.
CONDENSE WA_UPLD_FILE-ZKOSTL.
CONDENSE WA_UPLD_FILE-ZKOSTLV.
CONDENSE WA_UPLD_FILE-ZWERKS_D.
CONDENSE WA_UPLD_FILE-ZSTORT.
CONDENSE WA_UPLD_FILE-ZRAUMNR.
CONDENSE WA_UPLD_FILE-ZAM_KFZKZ.
CONDENSE WA_UPLD_FILE-ZORD41.
CONDENSE WA_UPLD_FILE-ZORD42.
CONDENSE WA_UPLD_FILE-ZORD43.
CONDENSE WA_UPLD_FILE-ZORD44.
CONDENSE WA_UPLD_FILE-ZIZWEK.
CONDENSE WA_UPLD_FILE-ZAM_UMWKZ.
CONDENSE WA_UPLD_FILE-ZANLUE.
CONDENSE WA_UPLD_FILE-ZLVDAT.
CONDENSE WA_UPLD_FILE-ZLKDAT.
CONDENSE WA_UPLD_FILE-ZLEABG.
CONDENSE WA_UPLD_FILE-ZLBASW.
CONDENSE WA_UPLD_FILE-ZLKAUF.
CONDENSE WA_UPLD_FILE-ZLETXT.
CONDENSE WA_UPLD_FILE-ZLEANZ.
CONDENSE WA_UPLD_FILE-ZLRYTH.
CONDENSE WA_UPLD_FILE-ZLVORS.
CONDENSE WA_UPLD_FILE-ZLEGEB.
CONDENSE WA_UPLD_FILE-ZLZINS.
CONDENSE WA_UPLD_FILE-ZLBARW.
CONDENSE WA_UPLD_FILE-ZINVNR_ANLAB.
CONDENSE WA_UPLD_FILE-ZANLKL.
CONDENSE WA_UPLD_FILE-ZTXA50_ANLTB.
CONDENSE WA_UPLD_FILE-ZQUAN_B.
CONDENSE WA_UPLD_FILE-ZLBARW_B.
CONDENSE WA_UPLD_FILE-ZMAINTE.
CONDENSE WA_UPLD_FILE-ZLGADV.
CONDENSE WA_UPLD_FILE-ZKOSTL_B.
CONDENSE WA_UPLD_FILE-ZKOSTLV_B.
CONDENSE WA_UPLD_FILE-ZWERKS_DB.
CONDENSE WA_UPLD_FILE-ZSTORT_B.
CONDENSE WA_UPLD_FILE-ZRAUMNR_B.
CONDENSE WA_UPLD_FILE-ZAM_KFZKZB.
CONDENSE WA_UPLD_FILE-ZORD41_B.
CONDENSE WA_UPLD_FILE-ZORD42_B.
CONDENSE WA_UPLD_FILE-ZORD43_B.
CONDENSE WA_UPLD_FILE-ZORD44_B.
CONDENSE WA_UPLD_FILE-ZIZWEK_B.
CONDENSE WA_UPLD_FILE-ZAM_UMWKZB.
CONDENSE WA_UPLD_FILE-ZANLUE_B.
CONDENSE WA_UPLD_FILE-ZAFASL01.
CONDENSE WA_UPLD_FILE-ZNDJAR01.
CONDENSE WA_UPLD_FILE-ZNDPER01.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE.
ENDLOOP.
ENDFORM. " F_CONDENSE
*&----
*
*& Form F_UPLOAD_CHECK
*&----
*
アップロードファイルのチェック要領
*----
*
FORM F_UPLOAD_CHECK.
データ宣言
DATA : L_LIFNR TYPE LFA1-LIFNR, "仕入先または債権者の勘定コード
L_LVTNR TYPE ANLA-LVTNR, "リース契約番号
L_EBELN TYPE EKKO-EBELN, "購買伝票番号
L_AFASL TYPE T090NA-AFASL, "償却キー
L_ANLKL TYPE ANKA-ANLKL, "資産クラス
L_ANLKL_ZERO TYPE CHAR8,
WA_ANLA TYPE ANLA,
L_ZLEAFI TYPE ZTFI0023-ZZLEAFI.
DATA : L_ZERO TYPE STRING.
CLEAR : G_TABIX.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ENDIF.
ソート処理
SORT IT_UPLD_FILE BY ZBUKRS ZLEAFI ZLVTNR1 ZLVTNR2.
*--2008/12/04.
*--契約日が'00000000'の場合、スペースに変更するため
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
CLEAR : L_ZERO.
L_ZERO = WA_UPLD_FILE-ZLVDAT.
IF L_ZERO CO '0' .
CLEAR : WA_UPLD_FILE-ZLVDAT.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLVDAT.
ENDIF.
CLEAR : WA_UPLD_FILE.
ENDLOOP.
*--2008/12/04.
*--経理処理区分 = 2 の時、下記の項目に空白を設定する
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
IF WA_UPLD_FILE-ZACCT = COS_2.
WA_UPLD_FILE-ZINVNR_ANLAB = ' '. "物件番号',
WA_UPLD_FILE-ZANLKL = ' '. "資産クラス',
WA_UPLD_FILE-ZTXA50_ANLTB = ' '. "物件名称',
WA_UPLD_FILE-ZQUAN_B = ' '. "物件数',
WA_UPLD_FILE-ZLBARW_B = ' '. "リース資産額',
WA_UPLD_FILE-ZMAINTE = ' '. "維持費用額',
WA_UPLD_FILE-ZLGADV = ' '. "長期前受収益',
WA_UPLD_FILE-ZKOSTL_B = ' '. "(物件)原価センタ',
WA_UPLD_FILE-ZKOSTLV_B = ' '. "(物件)責任原価センタ',
WA_UPLD_FILE-ZWERKS_DB = ' '. "(物件)プラント',
WA_UPLD_FILE-ZSTORT_B = ' '. "(物件)場所',
WA_UPLD_FILE-ZRAUMNR_B = ' '. "(物件)部屋',
WA_UPLD_FILE-ZAM_KFZKZB = ' '. "(物件)ナンバープレート',
WA_UPLD_FILE-ZORD41_B = ' '. "(物件)評価グループ1',
WA_UPLD_FILE-ZORD42_B = ' '. "(物件)評価グループ 2',
WA_UPLD_FILE-ZORD43_B = ' '. "(物件)評価グループ 3',
WA_UPLD_FILE-ZORD44_B = ' '. "(物件)評価グループ 4',
WA_UPLD_FILE-ZIZWEK_B = ' '. "(物件)設備投資理由',
WA_UPLD_FILE-ZAM_UMWKZB = ' '. "(物件)環境投資理由',
WA_UPLD_FILE-ZANLUE_B = ' '. "(物件)資産グループコード',
WA_UPLD_FILE-ZAFASL01 = ' '. "帳簿(償却キー)
WA_UPLD_FILE-ZNDJAR01 = ' '. "帳簿(耐用年数)
WA_UPLD_FILE-ZNDPER01 = ' '. "帳簿(耐用期間)
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZINVNR_ANLAB ZANLKL
ZTXA50_ANLTB ZQUAN_B ZLBARW_B ZMAINTE ZLGADV
ZKOSTL_B ZKOSTLV_B ZWERKS_DB ZSTORT_B ZRAUMNR_B
ZAM_KFZKZB ZORD41_B ZORD42_B ZORD43_B ZORD44_B
ZIZWEK_B ZANLUE_B ZAFASL01 ZNDJAR01 ZAM_UMWKZB
ZNDPER01.
ENDIF.
CLEAR : WA_UPLD_FILE.
ENDLOOP.
*--アップロードファイル項目のチェック
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
単体テストと関連項目設定
CLEAR : FLG_MANDT , FLG_CHECK , FLG_DATE , FLG_KIKAN.
IF WA_UPLD_FILE-ZBUKRS IS INITIAL. "会社コード
WA_ERR_FILE-ZFLDTEXT = '会社コード'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLEAFI IS INITIAL. "リース会社コード
WA_ERR_FILE-ZFLDTEXT = 'リース会社コード'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLVTNR1 IS INITIAL. "契約番号
WA_ERR_FILE-ZFLDTEXT = '契約番号'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLVTNR2 IS INITIAL. "契約枝番
WA_ERR_FILE-ZFLDTEXT = '契約枝番'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZTXA50_ANLT IS INITIAL. "契約名称
WA_ERR_FILE-ZFLDTEXT = '契約名称'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZACCT IS INITIAL. "経理処理区分
WA_ERR_FILE-ZFLDTEXT = '経理処理区分'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZACCT = COS_1.
IF WA_UPLD_FILE-ZINTEREST IS INITIAL. "利息処理区分
WA_ERR_FILE-ZFLDTEXT = '利息処理区分'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
ENDIF.
IF WA_UPLD_FILE-ZLEGEB_SOUGAKU IS INITIAL. "リース料総額
WA_ERR_FILE-ZFLDTEXT = 'リース料総額'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZCONTAX IS INITIAL. "消費税額
WA_ERR_FILE-ZFLDTEXT = '消費税額'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZQUAN IS INITIAL. "全物件数
WA_ERR_FILE-ZFLDTEXT = '全物件数'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZKOSTL IS INITIAL. "原価センタ
WA_ERR_FILE-ZFLDTEXT = '原価センタ'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLKDAT IS INITIAL. "通知日付
WA_ERR_FILE-ZFLDTEXT = '通知日付'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLEABG IS INITIAL. "開始日付
WA_ERR_FILE-ZFLDTEXT = '開始日付'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLEANZ IS INITIAL. "支払回数
WA_ERR_FILE-ZFLDTEXT = '支払回数'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLRYTH IS INITIAL. "支払周期
WA_ERR_FILE-ZFLDTEXT = '支払周期'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLEGEB IS INITIAL. "リース料
WA_ERR_FILE-ZFLDTEXT = 'リース料'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
*---全リース資産額と年利のチェック
IF WA_UPLD_FILE-ZACCT = 1 AND
( WA_UPLD_FILE-ZINTEREST = 1 OR "全リース資産額と年利
WA_UPLD_FILE-ZINTEREST = 3 ) .
IF WA_UPLD_FILE-ZLBARW_ALL IS INITIAL AND
WA_UPLD_FILE-ZLZINS IS INITIAL.
WA_ERR_FILE-ZFLDTEXT = '全リース資産額'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
WA_ERR_FILE-ZFLDTEXT = '年利'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
ENDIF.
経理処理区分が賃貸借処理の時下記の項目の必須チェック
IF WA_UPLD_FILE-ZACCT <> COS_2.
IF WA_UPLD_FILE-ZINVNR_ANLAB IS INITIAL. "物件番号
WA_ERR_FILE-ZFLDTEXT = '物件番号'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZTXA50_ANLTB IS INITIAL. "物件名称
WA_ERR_FILE-ZFLDTEXT = '物件名称'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZQUAN_B IS INITIAL. "物件数
WA_ERR_FILE-ZFLDTEXT = '物件数'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZLBARW_B IS INITIAL. "リース資産額
WA_ERR_FILE-ZFLDTEXT = 'リース資産額'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZKOSTL_B IS INITIAL . "(物件)原価センタ
WA_ERR_FILE-ZFLDTEXT = '(物件)原価センタ'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
ENDIF.
*---資産クラスが入力ありの時下記の項目の必須チェック
IF WA_UPLD_FILE-ZANLKL IS NOT INITIAL.
IF WA_UPLD_FILE-ZAFASL01 IS INITIAL . "帳簿(償却キー)
WA_ERR_FILE-ZFLDTEXT = '帳簿(償却キー)'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZNDJAR01 IS INITIAL . "帳簿(耐用年数)
WA_ERR_FILE-ZFLDTEXT = '帳簿(耐用年数)'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
IF WA_UPLD_FILE-ZNDPER01 IS INITIAL . "帳簿(耐用期間)
WA_ERR_FILE-ZFLDTEXT = '帳簿(耐用期間)'.
WA_ERR_FILE-ZERRMSG = TEXT-016.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_MANDT = COS_X.
ENDIF.
ENDIF.
IF FLG_MANDT = COS_X.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
IF FLG_MANDT <> COS_X.
*---会社コードのチェック
IF NOT WA_UPLD_FILE-ZBUKRS IN R_BUKRS.
WA_ERR_FILE-ZFLDTEXT = '会社コード'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
*---リース会社コードのチェックと設定
IF NOT WA_UPLD_FILE-ZLEAFI IS INITIAL.
ALPHA 変換 Exit: 外部->内部
L_ZLEAFI = WA_UPLD_FILE-ZLEAFI.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_ZLEAFI
IMPORTING
OUTPUT = L_ZLEAFI.
WA_UPLD_FILE-ZLEAFI = L_ZLEAFI.
SELECT SINGLE LIFNR FROM LFB1 INTO L_LIFNR
WHERE LIFNR = WA_UPLD_FILE-ZLEAFI
AND BUKRS = WA_UPLD_FILE-ZBUKRS.
IF SY-SUBRC <> 0.
WA_ERR_FILE-ZFLDTEXT = 'リース会社コード'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---契約番号のチェック
IF NOT WA_UPLD_FILE-ZLVTNR1 IS INITIAL.
L_LVTNR = WA_UPLD_FILE-ZLVTNR1.
CONDENSE L_LVTNR.
IF STRLEN( L_LVTNR ) <= 10.
ALPHA 変換 Exit: 外部->内部
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_LVTNR
IMPORTING
OUTPUT = L_LVTNR.
10桁に変換する
IF STRLEN( L_LVTNR ) > 10.
L_LVTNR = L_LVTNR+5(10).
ENDIF.
WA_UPLD_FILE-ZLVTNR1 = L_LVTNR.
CLEAR L_LVTNR.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLVTNR1.
ELSEIF STRLEN( L_LVTNR ) > 10.
WA_ERR_FILE-ZFLDTEXT = '契約番号'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---契約枝番のチェックと設定
IF WA_UPLD_FILE-ZLVTNR2 IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLVTNR2
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '契約枝番'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---購買発注伝票番号のチェック
IF NOT WA_UPLD_FILE-ZEBELN IS INITIAL.
SELECT SINGLE EBELN FROM EKKO INTO L_EBELN WHERE EBELN = WA_UPLD_FILE-ZEBELN
AND BSART = 'ZFO'.
IF SY-SUBRC <> 0.
WA_ERR_FILE-ZFLDTEXT = '購買発注伝票番号'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---経理処理区分のチェックと設定
IF NOT ( WA_UPLD_FILE-ZACCT = COS_1 OR
WA_UPLD_FILE-ZACCT = COS_2 ) .
WA_ERR_FILE-ZFLDTEXT = '経理処理区分'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
*---利息処理区分のチェックと設定
IF WA_UPLD_FILE-ZACCT = COS_2.
WA_UPLD_FILE-ZINTEREST = ' '.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZINTEREST.
ELSE.
IF NOT ( WA_UPLD_FILE-ZINTEREST = COS_1 OR
WA_UPLD_FILE-ZINTEREST = COS_2 OR
WA_UPLD_FILE-ZINTEREST = COS_3 ).
WA_ERR_FILE-ZFLDTEXT = '利息処理区分'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---リース料総額のチェック
IF WA_UPLD_FILE-ZLEGEB_SOUGAKU IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLEGEB_SOUGAKU
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = 'リース料総額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---全リース資産額と年利のチェック
IF NOT ( WA_UPLD_FILE-ZACCT = 1 AND
( WA_UPLD_FILE-ZINTEREST = 1 OR
WA_UPLD_FILE-ZINTEREST = 3 ) ) .
IF WA_UPLD_FILE-ZLZINS IS NOT INITIAL.
WA_ERR_FILE-ZFLDTEXT = '年利'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ELSE.
IF WA_UPLD_FILE-ZLZINS IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLZINS
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '年利'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
ENDIF.
IF WA_UPLD_FILE-ZLBARW_ALL IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLBARW_ALL
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '全リース資産額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---消費税額のチェック
IF WA_UPLD_FILE-ZCONTAX IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZCONTAX
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '消費税額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
DATA : L_ZKZINW TYPE ZTFI0023-ZZKZINW.
CLEAR : L_ZKZINW.
*---支払利息額のチェックと設定
IF WA_UPLD_FILE-ZINTEREST <> COS_3.
IF NOT WA_UPLD_FILE-ZKZINW CO '0. ' .
WA_ERR_FILE-ZFLDTEXT = '支払利息額'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ELSE.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZKZINW
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '支払利息額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
ELSE.
IF WA_UPLD_FILE-ZKZINW IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZKZINW
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '支払利息額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
ENDIF.
*---全物件数のチェック
IF WA_UPLD_FILE-ZQUAN IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZQUAN
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '全物件数'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTL IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE
WA_UPLD_FILE-ZKOSTL.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '原価センタ'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---責任原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTLV IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE
WA_UPLD_FILE-ZKOSTLV.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '責任原価センタ'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---プラントのチェックと設定
IF NOT WA_UPLD_FILE-ZWERKS_D IS INITIAL.
PERFORM F_PLANT_CHECK USING WA_UPLD_FILE-ZWERKS_D.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = 'プラント'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---場所のチェックと設定
IF NOT WA_UPLD_FILE-ZSTORT IS INITIAL.
PERFORM F_BASHO_CHECK USING WA_UPLD_FILE-ZSTORT WA_UPLD_FILE-ZWERKS_D.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '場所'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---評価グループ1のチェックと設定
IF NOT WA_UPLD_FILE-ZORD41 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD41 COS_1.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '評価グループ1'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---評価グループ2のチェックと設定
IF NOT WA_UPLD_FILE-ZORD42 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD42 COS_2.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '評価グループ2'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---評価グループ3のチェックと設定
IF NOT WA_UPLD_FILE-ZORD43 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD43 COS_3.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '評価グループ3'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---評価グループ4のチェックと設定
IF NOT WA_UPLD_FILE-ZORD44 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD44 COS_4.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '評価グループ4'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---設備投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZIZWEK IS INITIAL.
PERFORM F_SETSUBI_CHECK USING WA_UPLD_FILE-ZIZWEK.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '設備投資理由'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---環境投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZAM_UMWKZ IS INITIAL.
PERFORM F_KANKYOU_CHECK USING WA_UPLD_FILE-ZAM_UMWKZ.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '環境投資理由'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---資産グループコードのチェックと設定
IF NOT WA_UPLD_FILE-ZANLUE IS INITIAL.
PERFORM F_SHISAN_GROUP_CHECK USING WA_UPLD_FILE-ZANLUE.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '資産グループコード'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---契約日のチェックと設定
IF NOT WA_UPLD_FILE-ZLVDAT IS INITIAL.
*-- 2008/12/14
WA_UPLD_FILE-ZLVDAT = '00000000' ).
CLEAR : L_ZERO.
L_ZERO = WA_UPLD_FILE-ZLVDAT.
IF L_ZERO CO '0' .
CLEAR : WA_UPLD_FILE-ZLVDAT.
ENDIF.
*-- 2008/12/14
PERFORM F_DATE_CHECK USING WA_UPLD_FILE-ZLVDAT.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '契約日'.
WA_ERR_FILE-ZERRMSG = TEXT-019.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
*-- 2008/12/14
ELSE.
CLEAR : WA_UPLD_FILE-ZLVDAT.
ENDIF.
*-- 2008/12/14
ENDIF.
*---通知日付のチェックと設定
IF NOT WA_UPLD_FILE-ZLKDAT IS INITIAL.
PERFORM F_DATE_CHECK USING WA_UPLD_FILE-ZLKDAT.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '通知日付'.
WA_ERR_FILE-ZERRMSG = TEXT-019.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
FLG_DATE = COS_X.
ENDIF.
ENDIF.
*---開始日付のチェックと設定
IF NOT WA_UPLD_FILE-ZLEABG IS INITIAL.
PERFORM F_DATE_CHECK USING WA_UPLD_FILE-ZLEABG.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '開始日付'.
WA_ERR_FILE-ZERRMSG = TEXT-019.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
FLG_DATE = COS_X.
ENDIF.
ENDIF.
*---基準価額のチェック
IF WA_UPLD_FILE-ZLBASW IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLBASW
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '基準価額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---買取価額のチェック
IF WA_UPLD_FILE-ZLKAUF IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLKAUF
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '買取価額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---支払回数のチェック
IF WA_UPLD_FILE-ZLEANZ IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLEANZ
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '支払回数'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
FLG_KIKAN = COS_X.
ENDIF.
ENDIF.
*---支払周期のチェック
IF WA_UPLD_FILE-ZLRYTH IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLRYTH
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '支払周期'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
FLG_KIKAN = COS_X.
ELSE.
IF NOT ( WA_UPLD_FILE-ZLRYTH = COS_1 OR
WA_UPLD_FILE-ZLRYTH = COS_2 OR
WA_UPLD_FILE-ZLRYTH = COS_3 OR
WA_UPLD_FILE-ZLRYTH = COS_4 OR
WA_UPLD_FILE-ZLRYTH = COS_6 OR
WA_UPLD_FILE-ZLRYTH = COS_12 ).
WA_ERR_FILE-ZFLDTEXT = '支払周期'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
FLG_KIKAN = COS_X.
ENDIF.
ENDIF.
ENDIF.
*---支払回数と支払周期のチェックと設定
リース期間の計算(開始日と通知日付から)
*--リース期間 と 支払周期 × 支払回数 が不一致です
IF FLG_KIKAN <> COS_X.
PERFORM F_RKIKAN_CHECK USING WA_UPLD_FILE.
IF FLG_X = 'X'.
WA_ERR_FILE-ZERRMSG = TEXT-039.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---前払のチェックと設定
IF NOT ( WA_UPLD_FILE-ZLVORS = ' ' OR
WA_UPLD_FILE-ZLVORS = COS_X ) .
WA_ERR_FILE-ZFLDTEXT = '前払'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
*---リース料のチェック
IF WA_UPLD_FILE-ZLEGEB IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLEGEB
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = 'リース料'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
IF RB_SAITO <> COS_X.
IF WA_UPLD_FILE-ZACCT <> 2.
*---物件番号のチェックと設定
リース物件テーブルに同じリース物件番号がないことのチェック
IF NOT WA_UPLD_FILE-ZINVNR_ANLAB IS INITIAL.
SELECT SINGLE ZZINVNR_ANLA FROM ZTFI0024
INTO WA_ZTFI0024-ZZINVNR_ANLA
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS
AND ZZINVNR_ANLA = WA_UPLD_FILE-ZINVNR_ANLAB.
IF SY-SUBRC = 0.
WA_ERR_FILE-ZFLDTEXT = '物件番号'.
WA_ERR_FILE-ZERRMSG = TEXT-038.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
CLEAR : WA_ZTFI0024-ZZINVNR_ANLA.
ELSE.
資産マスタの棚卸番号で同じ番号がないことのチェック
PERFORM F_TANAOROSHI_NO_CHECK USING WA_UPLD_FILE.
IF FLG_X = 'X'.
WA_ERR_FILE-ZFLDTEXT = '物件番号'.
WA_ERR_FILE-ZERRMSG = TEXT-038.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*---資産クラスのチェックと設定
IF WA_UPLD_FILE-ZANLKL IS NOT INITIAL.
IF WA_UPLD_FILE-ZACCT = COS_2.
WA_ERR_FILE-ZFLDTEXT = '資産クラス'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ELSE.
IF NOT ( WA_UPLD_FILE-ZANLKL = 2700 OR
WA_UPLD_FILE-ZANLKL BETWEEN 1000 AND 1600 ).
WA_ERR_FILE-ZFLDTEXT = '資産クラス'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
ENDIF.
*---物件数のチェック
IF WA_UPLD_FILE-ZQUAN_B IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZQUAN_B
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '物件数'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---リース資産額のチェック
IF WA_UPLD_FILE-ZLBARW_B IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLBARW_B
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = 'リース資産額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---維持費用額のチェック
IF WA_UPLD_FILE-ZMAINTE IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZMAINTE
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '維持費用額'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---長期前受収益のチェック
IF WA_UPLD_FILE-ZLGADV IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZLGADV
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '長期前受収益'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTL_B IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE
WA_UPLD_FILE-ZKOSTL_B.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)原価センタ'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)責任原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTLV_B IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE
WA_UPLD_FILE-ZKOSTLV_B.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)責任原価センタ'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)プラントのチェックと設定
IF NOT WA_UPLD_FILE-ZWERKS_DB IS INITIAL.
PERFORM F_PLANT_CHECK USING WA_UPLD_FILE-ZWERKS_DB.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)プラント'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)場所のチェックと設定
IF NOT WA_UPLD_FILE-ZSTORT_B IS INITIAL.
PERFORM F_BASHO_CHECK USING WA_UPLD_FILE-ZSTORT_B WA_UPLD_FILE-ZWERKS_DB.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)場所'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)評価グループ1のチェックと設定
IF NOT WA_UPLD_FILE-ZORD41_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD41_B COS_1.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)評価グループ1'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)評価グループ2のチェックと設定
IF NOT WA_UPLD_FILE-ZORD42_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD42_B COS_2.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)評価グループ2'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---評価グループ3のチェックと設定
IF NOT WA_UPLD_FILE-ZORD43_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD43_B COS_3.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)評価グループ3'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)評価グループ4のチェックと設定
IF NOT WA_UPLD_FILE-ZORD44_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD44_B COS_4.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)評価グループ4'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)設備投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZIZWEK_B IS INITIAL.
PERFORM F_SETSUBI_CHECK USING WA_UPLD_FILE-ZIZWEK_B.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)設備投資理由'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)環境投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZAM_UMWKZB IS INITIAL.
PERFORM F_KANKYOU_CHECK USING WA_UPLD_FILE-ZAM_UMWKZB.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)環境投資理由'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---(物件)資産グループコードのチェックと設定
IF NOT WA_UPLD_FILE-ZANLUE_B IS INITIAL.
PERFORM F_SHISAN_GROUP_CHECK USING WA_UPLD_FILE-ZANLUE_B.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '(物件)資産グループコード'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---償却キーのチェックと設定
IF WA_UPLD_FILE-ZAFASL01 IS NOT INITIAL.
PERFORM F_AFASL_CHECK USING WA_UPLD_FILE.
IF FLG_X = COS_X.
WA_ERR_FILE-ZFLDTEXT = '償却キー'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---帳簿(耐用年数)のチェック
IF WA_UPLD_FILE-ZNDJAR01 IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZNDJAR01
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '帳簿(耐用年数)'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---帳簿(耐用期間)のチェック
IF WA_UPLD_FILE-ZNDPER01 IS NOT INITIAL.
PERFORM F_SUUJI_CHECK USING WA_UPLD_FILE-ZNDPER01
W_HTYPE.
IF W_HTYPE <> 'NUMC'.
WA_ERR_FILE-ZFLDTEXT = '帳簿(耐用期間)'.
WA_ERR_FILE-ZERRMSG = TEXT-018.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
*---耐用年数と耐用期間のチェックと設定
IF FLG_DATE <> COS_X.
PERFORM F_CAL_RKIKAN USING WA_UPLD_FILE-ZLEABG
WA_UPLD_FILE-ZLKDAT.
IF WA_UPLD_FILE-ZNDJAR01 IS NOT INITIAL AND
WA_UPLD_FILE-ZNDJAR01 <> G_NO_YEARS.
WA_ERR_FILE-ZFLDTEXT = '帳簿(耐用年数)'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
ENDIF.
IF WA_UPLD_FILE-ZNDPER01 IS NOT INITIAL AND
WA_UPLD_FILE-ZNDPER01 <> G_NO_MONTHS.
WA_ERR_FILE-ZFLDTEXT = '帳簿(耐用期間)'.
WA_ERR_FILE-ZERRMSG = TEXT-017.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
FLG_CHECK = COS_X.
ENDIF.
ENDIF.
ENDIF.
IF FLG_CHECK = COS_X.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDLOOP.
**--2008/12/04.
**--契約日が'00000000'の場合、スペースに変更するため
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
CLEAR : L_ZERO.
L_ZERO = WA_UPLD_FILE-ZLVDAT.
IF L_ZERO CO '0' .
CLEAR : WA_UPLD_FILE-ZLVDAT.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLVDAT.
ENDIF.
CLEAR : WA_UPLD_FILE.
ENDLOOP.
**--2008/12/04.
ENDFORM. " F_UPLOAD_CHECK
*&----
*
*& Form F_TANAOROSHI_NO_CHECK
*&----
*
棚卸番号のチェック
*----
*
FORM F_TANAOROSHI_NO_CHECK USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
データ宣言
DATA : L_INVNR TYPE ANLA-INVNR. "棚卸番号
CLEAR : FLG_X , L_INVNR.
資産マスタレコードセグメントから棚卸番号を抽出する
SELECT SINGLE INVNR FROM ANLA INTO L_INVNR
WHERE BUKRS = I_WA_UPLD_FILE-ZBUKRS
AND INVNR = I_WA_UPLD_FILE-ZINVNR_ANLAB.
IF SY-SUBRC = 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_TANAOROSHI_NO_CHECK
*&----
*
*& Form F_GENKA_CHECK CHANGING
*&----
*
原価センタのチェック
*----
*
FORM F_GENKA_CHECK USING I_UPLD_FILE TYPE TYP_UPLD_FILE
I_KOSTL.
データ宣言
DATA : L_KOSTL TYPE CSKS-KOSTL, "原価センタ
L_KOKRS TYPE KOKRS. "管理領域
CLEAR : FLG_X.
*--管理領域割当より取得
SELECT KOKRS FROM TKA02 UP TO 1 ROWS
INTO L_KOKRS
WHERE BUKRS = I_UPLD_FILE-ZBUKRS.
ENDSELECT.
IF SY-SUBRC = 0.
原価センタマスタから原価センタを抽出する
SELECT SINGLE KOSTL FROM CSKS INTO L_KOSTL
WHERE KOKRS = L_KOKRS
AND KOSTL = I_KOSTL
AND DATBI >= I_UPLD_FILE-ZLEABG
AND DATAB <= I_UPLD_FILE-ZLEABG.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ELSE.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_GENKA_CHECK CHANGING
*&----
*
*& Form F_PLANT_CHECK
*&----
*
プラントのチェックと設定
*----
*
FORM F_PLANT_CHECK USING I_WA_UPLD_FILE_WERKS TYPE ANY.
データ宣言
DATA : L_WERKS TYPE T001W-WERKS. "プラント
CLEAR FLG_X.
プラント/支店テーブルからプラントを抽出する
SELECT SINGLE WERKS FROM T001W INTO L_WERKS
WHERE WERKS = I_WA_UPLD_FILE_WERKS.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_PLANT_CHECK
*&----
*
*& Form F_BASHO_CHECK
*&----
*
場所のチェックと設定
*----
*
FORM F_BASHO_CHECK USING I_WA_UPLD_FILE_STORT TYPE ANY
I_WA_UPLD_FILE_WERKS TYPE ANY.
データ宣言
DATA : L_STAND TYPE T499S-STAND, "場所
L_STORT TYPE T499S-STAND.
CLEAR FLG_X.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = I_WA_UPLD_FILE_STORT
IMPORTING
OUTPUT = L_STORT.
L_STORT = I_WA_UPLD_FILE_STORT.
場所テーブルから場所を抽出する
SELECT SINGLE STAND FROM T499S INTO L_STAND
WHERE STAND = L_STORT AND
WERKS = I_WA_UPLD_FILE_WERKS.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_BASHO_CHECK
*&----
*
*& Form F_HYOUKA_GROUP_CHECK
*&----
*
評価グループのチェックと設定
*----
*
FORM F_HYOUKA_GROUP_CHECK USING I_WA_UPLD_FILE_ORD4X TYPE ANY
I_COS TYPE C.
データ宣言
DATA : L_ORD4X TYPE T087-ORD4X. "評価グループ
CLEAR FLG_X.
評価グループテーブルから評価グループを抽出する
SELECT SINGLE ORD4X FROM T087 INTO L_ORD4X WHERE ORDNR = I_COS
AND ORD4X = I_WA_UPLD_FILE_ORD4X.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_HYOUKA_GROUP_CHECK
*&----
*
*& Form F_SETSUBI_CHECK
*&----
*
設備投資理由のチェックと設定
*----
*
FORM F_SETSUBI_CHECK USING I_WA_UPLD_FILE_IZWEK TYPE ANY.
データ宣言
DATA : L_IZWEK TYPE T087I-IZWEK. "設備投資理由
CLEAR FLG_X.
投資理由テーブルから設備投資理由を抽出する
SELECT SINGLE IZWEK FROM T087I INTO L_IZWEK
WHERE IZWEK = I_WA_UPLD_FILE_IZWEK.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_SETSUBI_CHECK
*&----
*
*& Form F_KANKYOU_CHECK
*&----
*
環境投資理由のチェックと設定
*----
*
FORM F_KANKYOU_CHECK USING I_WA_UPLD_FILE_UMWKZ TYPE ANY.
データ宣言
DATA : L_UMWKZ TYPE T087K-UMWKZ. "環境投資理由
CLEAR : FLG_X , L_UMWKZ.
環境保護のための投資理由テーブルから環境投資理由を抽出する
SELECT SINGLE UMWKZ FROM T087K INTO L_UMWKZ
WHERE UMWKZ = I_WA_UPLD_FILE_UMWKZ.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_KANKYOU_CHECK
*&----
*
*& Form F_SHISAN_GROUP_CHECK
*&----
*
資産グループコードのチェックと設定
*----
*
FORM F_SHISAN_GROUP_CHECK USING I_WA_UPLD_FILE_ANLUE TYPE ANY.
データ宣言
DATA : L_ANLUE TYPE T087U-ANLUE. "資産グループコード
CLEAR FLG_X.
資産グループから資産グループコードを抽出する
SELECT SINGLE ANLUE FROM T087U INTO L_ANLUE
WHERE ANLUE = I_WA_UPLD_FILE_ANLUE.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_SHISAN_GROUP_CHECK
*&----
*
*& Form F_DATE_CHECK
*&----
*
日付妥当性チェック
*----
*
FORM F_DATE_CHECK USING I_WA_UPLD_FILE_DATE TYPE ANY.
CLEAR FLG_X.
データ宣言
DATA L_DATE TYPE SY-DATUM.
L_DATE = I_WA_UPLD_FILE_DATE.
PERFORM F_SUUJI_CHECK USING L_DATE
W_HTYPE.
IF W_HTYPE = 'NUMC'.
日付妥当性チェック
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = L_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ELSE.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_DATE_CHECK
*&----
*
*& Form F_RKIKAN_CHECK
*&----
*
リース期間のチェック
*----
*
FORM F_RKIKAN_CHECK USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
データ宣言
DATA : L_LEANZ TYPE TVRG-ZEITR, "支払回数
L_ZLEANZ TYPE I, "間接日付決定用期間
L_ZLRYTH TYPE I.
CLEAR : FLG_X.
IF NOT I_WA_UPLD_FILE-ZLEANZ IS INITIAL AND
NOT I_WA_UPLD_FILE-ZLRYTH IS INITIAL.
リース期間を計算する
PERFORM F_CAL_RKIKAN USING I_WA_UPLD_FILE-ZLEABG
I_WA_UPLD_FILE-ZLKDAT.
L_LEANZ = ( L_ZEITR_ZLEANZ * 12 ) / G_ZEITR_ZLRYTH.
L_ZLEANZ = I_WA_UPLD_FILE-ZLEANZ.
L_ZLRYTH = I_WA_UPLD_FILE-ZLRYTH.
G_RKIKAN_SIHARAI = L_ZLEANZ * L_ZLRYTH .
IF G_RKIKAN <> G_RKIKAN_SIHARAI.
FLG_X = COS_X.
ENDIF.
ENDIF.
ENDFORM. " F_RKIKAN_CHECK
*&----
*
*& Form F_CAL_RKIKAN
*&----
*
開始日と通知日付からリース期間の計算
*----
*
FORM F_CAL_RKIKAN USING I_WA_UPLD_FILE_ZLEABG TYPE ANY
I_WA_UPLD_FILE_ZLKDAT TYPE ANY.
変数をクリアする
DATA : L_BEGDA TYPE SY-DATUM,
L_ENDDA TYPE SY-DATUM,
L_NO_MONTHS TYPE I,
L_TYPE1(4) TYPE C,
L_TYPE2(4) TYPE C.
CLEAR : G_NO_DAYS, G_NO_MONTHS, G_NO_YEARS,
G_RKIKAN , L_TYPE1 , L_TYPE2.
L_BEGDA = I_WA_UPLD_FILE_ZLEABG. " 開始日付
L_ENDDA = I_WA_UPLD_FILE_ZLKDAT. " 通知日付
2つの日付の間で何年、何か月、何日を計算する
CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
EXPORTING
BEG_DA = L_BEGDA " 開始日付
END_DA = L_ENDDA " 通知日付
IMPORTING
NO_DAY = G_NO_DAYS " 日数
NO_MONTH = G_NO_MONTHS " 月数
NO_YEAR = G_NO_YEARS " 年数
NO_CAL_DAY =
.
IF G_NO_DAYS >= 1.
ADD 1 TO G_NO_MONTHS.
ENDIF.
L_NO_MONTHS = G_NO_YEARS * 12.
G_RKIKAN = L_NO_MONTHS + G_NO_MONTHS. " 総月数
ENDFORM. " F_CAL_RKIKAN
*&----
*
*& Form F_KANREN_CHECK
*&----
*
関連チェック
*----
*
FORM F_KANREN_CHECK .
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約情報部分は同一リース会社.契約番号.契約枝番で同じことのチェック
PERFORM F_KEIYAKU_DATA_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約.物件資産額のチェック
PERFORM F_SHISANGAKU_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約.物件数のチェック
PERFORM F_BUKKENSUU_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約.物件総額のチェック
PERFORM F_SOUGAKU_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
購買発注伝票番号のチェック
購買発注伝票の明細のチェック FROM DOWNLOAD PGM
PERFORM F_KOUBAI_MEISAI_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
購買発注伝票とアップロードファイルの項目の存在チェック
PERFORM F_FIELDS_EXIST.
ENDIF.
IF RB_TEST = COS_X.
MESSAGE S999 WITH '処理が終了しました。'.
ENDIF.
ENDFORM. " F_KANREN_CHECK
*&----
*
*& Form F_KEIYAKU_DATA_CHECK
*&----
*
リース契約情報部分は同一リース会社.契約番号.契約枝番で同じことのチェック
*----
*
FORM F_KEIYAKU_DATA_CHECK .
FIELD-SYMBOLS : TYPE ANY.
データ宣言
DATA : L_TABIX TYPE SY-TABIX,
L_SYINDEX TYPE SY-INDEX.
SORT IT_UPLD_FILE BY ZLEAFI ZLVTNR1 ZLVTNR2.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
AT LAST.
CONTINUE.
ENDAT.
L_TABIX = SY-TABIX + 1.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_TEMP INDEX L_TABIX.
リース契約情報部分は同一リース会社.契約番号.契約枝番で同じことのチェック
IF WA_UPLD_FILE-ZLEAFI = WA_UPLD_TEMP-ZLEAFI AND
WA_UPLD_FILE-ZLVTNR1 = WA_UPLD_TEMP-ZLVTNR1 AND
WA_UPLD_FILE-ZLVTNR2 = WA_UPLD_TEMP-ZLVTNR2.
DO 35 TIMES.
IF SY-INDEX = 1.
L_SYINDEX = SY-INDEX.
ELSE.
L_SYINDEX = SY-INDEX + 4.
ENDIF.
ASSIGN COMPONENT L_SYINDEX OF STRUCTURE WA_UPLD_FILE TO .
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE
WITH KEY ZLEAFI = WA_UPLD_TEMP-ZLEAFI
ZLVTNR1 = WA_UPLD_TEMP-ZLVTNR1
ZLVTNR2 = WA_UPLD_TEMP-ZLVTNR2.
IF SY-SUBRC = 0.
WA_ERR_FILE-ZERRMSG = TEXT-020.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.
ENDFORM. " F_KEIYAKU_DATA_CHECK
*&----
*
*& Form F_SHISANGAKU_CHECK
*&----
*
リース契約の全リース資産額
*----
*
FORM F_SHISANGAKU_CHECK .
データ宣言
DATA : L_TOTAL TYPE ZTFI0024-ZZLBARW, "取得価額累計額
L_LBARW TYPE ZTFI0024-ZZLBARW,
L_LBARW_ALL TYPE ZTFI0023-ZZLBARW_ALL.
CLEAR: L_TOTAL.
SORT IT_UPLD_FILE BY ZBUKRS ZLEAFI ZLVTNR1 ZLVTNR2.
IT_UPLOAD_T[] = IT_UPLD_FILE[].
リース物件のリース資産額を計算する
LOOP AT IT_UPLOAD_T INTO WA_UPLOAD_T WHERE ZACCT = COS_1.
L_LBARW = WA_UPLOAD_T-ZLBARW_B.
L_TOTAL = L_TOTAL + L_LBARW.
CLEAR L_LBARW.
AT END OF ZLVTNR2.
FLG_TGR = COS_X.
ENDAT.
IF FLG_TGR = COS_X.
L_LBARW_ALL = WA_UPLOAD_T-ZLBARW_ALL.
IF L_LBARW_ALL <> L_TOTAL.
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE WITH KEY
ZBUKRS = WA_UPLOAD_T-ZBUKRS
ZLEAFI = WA_UPLOAD_T-ZLEAFI
ZLVTNR1 = WA_UPLOAD_T-ZLVTNR1
ZLVTNR2 = WA_UPLOAD_T-ZLVTNR2
ZACCT = COS_1.
IF SY-SUBRC = 0.
WA_ERR_FILE-ZERRMSG = TEXT-021.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
DELETE IT_UPLOAD_T WHERE ZBUKRS = WA_UPLOAD_T-ZBUKRS
AND ZLEAFI = WA_UPLOAD_T-ZLEAFI
AND ZLVTNR1 = WA_UPLOAD_T-ZLVTNR1
AND ZLVTNR2 = WA_UPLOAD_T-ZLVTNR2
AND ZACCT = COS_1.
ENDIF.
CLEAR : L_LBARW_ALL , WA_UPLD_FILE , FLG_TGR , L_LBARW , L_TOTAL.
ENDIF.
CLEAR : WA_UPLOAD_T.
ENDLOOP.
ENDFORM. " F_SHISANGAKU_CHECK
*&----
*
*& Form F_BUKKENSUU_CHECK
*&----
*
リース契約.物件数のチェック
*----
*
FORM F_BUKKENSUU_CHECK .
データ宣言
DATA : L_TOTAL TYPE ZTFI0024-ZZQUAN,
L_QUANB TYPE ZTFI0024-ZZQUAN,
L_QUAN TYPE ZTFI0023-ZZQUAN.
CLEAR: L_TOTAL , IT_UPLOAD_T , FLG_TGR.
SORT IT_UPLD_FILE BY ZBUKRS ZLEAFI ZLVTNR1 ZLVTNR2.
IT_UPLOAD_T[] = IT_UPLD_FILE[].
リース物件の物件数を計算する
LOOP AT IT_UPLOAD_T INTO WA_UPLOAD_T WHERE ZACCT = COS_1.
L_QUANB = WA_UPLOAD_T-ZQUAN_B.
L_TOTAL = L_TOTAL + L_QUANB.
CLEAR : L_QUANB.
AT END OF ZLVTNR2.
FLG_TGR = COS_X.
ENDAT.
IF FLG_TGR = COS_X.
L_QUAN = WA_UPLOAD_T-ZQUAN.
IF L_QUAN < L_TOTAL.
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE WITH KEY
ZBUKRS = WA_UPLOAD_T-ZBUKRS
ZLEAFI = WA_UPLOAD_T-ZLEAFI
ZLVTNR1 = WA_UPLOAD_T-ZLVTNR1
ZLVTNR2 = WA_UPLOAD_T-ZLVTNR2
ZACCT = COS_1.
IF SY-SUBRC = 0.
WA_ERR_FILE-ZERRMSG = TEXT-022.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
DELETE IT_UPLOAD_T WHERE ZBUKRS = WA_UPLOAD_T-ZBUKRS
AND ZLEAFI = WA_UPLOAD_T-ZLEAFI
AND ZLVTNR1 = WA_UPLOAD_T-ZLVTNR1
AND ZLVTNR2 = WA_UPLOAD_T-ZLVTNR2
AND ZACCT = COS_1.
ENDIF.
CLEAR : L_QUAN , WA_UPLD_FILE , FLG_TGR , L_QUANB , L_TOTAL.
ENDIF.
CLEAR : WA_UPLOAD_T.
ENDLOOP.
ENDFORM. " F_BUKKENSUU_CHECK
*&----
*
*& Form F_SOUGAKU_CHECK
*&----
*
リース契約.物件総額のチェック
*----
*
FORM F_SOUGAKU_CHECK .
データ宣言
DATA : L_TOT_SOUGAKU TYPE ZTFI0023-ZZLEGEB_SOUGAKU,
L_TOT_IJIHYOU TYPE ZTFI0024-ZZMAINTE,
L_ZLEGEB_SOUGAKU TYPE ZTFI0023-ZZLEGEB_SOUGAKU,
L_ZLEGEB TYPE ZTFI0023-ZZLEGEB,
L_ZEITR_ZLEANZ TYPE TVRG-ZEITR,
L_MAINTE TYPE ZTFI0024-ZZMAINTE.
CLEAR: L_TOT_SOUGAKU , L_TOT_IJIHYOU ,
IT_UPLOAD_T , FLG_TGR .
SORT IT_UPLD_FILE BY ZBUKRS ZLEAFI ZLVTNR1 ZLVTNR2.
IT_UPLOAD_T[] = IT_UPLD_FILE[].
リース契約.物件総額のチェック
LOOP AT IT_UPLOAD_T INTO WA_UPLOAD_T WHERE ZACCT = COS_1.
L_MAINTE = WA_UPLOAD_T-ZMAINTE.
L_TOT_IJIHYOU = L_TOT_IJIHYOU + L_MAINTE.
CLEAR L_MAINTE.
AT END OF ZLVTNR2.
FLG_TGR = COS_X.
ENDAT.
IF FLG_TGR = COS_X.
L_ZEITR_ZLEANZ = WA_UPLOAD_T-ZLEANZ.
L_ZLEGEB = WA_UPLOAD_T-ZLEGEB.
L_TOT_SOUGAKU = ( L_ZLEGEB * L_ZEITR_ZLEANZ ) + L_TOT_IJIHYOU.
L_ZLEGEB_SOUGAKU = WA_UPLOAD_T-ZLEGEB_SOUGAKU.
IF L_ZLEGEB_SOUGAKU < L_TOT_SOUGAKU.
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE WITH KEY
ZBUKRS = WA_UPLOAD_T-ZBUKRS
ZLEAFI = WA_UPLOAD_T-ZLEAFI
ZLVTNR1 = WA_UPLOAD_T-ZLVTNR1
ZLVTNR2 = WA_UPLOAD_T-ZLVTNR2
ZACCT = COS_1.
IF SY-SUBRC = 0.
WA_ERR_FILE-ZERRMSG = TEXT-023.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
DELETE IT_UPLOAD_T WHERE ZBUKRS = WA_UPLOAD_T-ZBUKRS
AND ZLEAFI = WA_UPLOAD_T-ZLEAFI
AND ZLVTNR1 = WA_UPLOAD_T-ZLVTNR1
AND ZLVTNR2 = WA_UPLOAD_T-ZLVTNR2
AND ZACCT = COS_1.
ENDIF.
CLEAR : L_MAINTE , WA_UPLD_FILE , L_ZLEGEB_SOUGAKU ,
FLG_TGR , L_TOT_SOUGAKU ,L_ZLEGEB ,
L_ZEITR_ZLEANZ , L_TOT_IJIHYOU.
ENDIF.
CLEAR : WA_UPLOAD_T.
ENDLOOP.
ENDFORM. " F_SOUGAKU_CHECK
*&----
*
*& Form F_KOUBAI_MEISAI_CHECK
*&----
*
購買発注伝票の明細のチェック
*----
*
FORM F_KOUBAI_MEISAI_CHECK .
DATA : LW_ZLEANZ TYPE TVRG-ZEITR,
LW_ZLRYTH TYPE TVRG-ZEITR,
LW_KAISUU TYPE I.
購買伝票ヘッダ ,購買伝票明細 テーブルの取得
PERFORM F_GET_KOUBAI_DATA.
購買伝票勘定設定テーブルの取得
PERFORM F_GET_KANJO_DATA.
請求計画テーブルの取得
PERFORM F_GET_SEIKYUU_DATA.
明細種類用アドオンテーブル
PERFORM F_GET_MEISAI_DATA.
SORT IT_KOUBAI_DATA BY BUKRS EBELN EBELP.
SORT IT_EKKN BY EBELN EBELP.
パターンチェック用サブルーチン
PERFORM PATTERN_CHECK.
LOOP AT IT_KOUBAI_DATA INTO WA_KOUBAI_DATA.
CLEAR : WA_KOUBAI_SUCCESS, WA_EKKN.
WA_KOUBAI_SUCCESS-BUKRS = WA_KOUBAI_DATA-BUKRS.
WA_KOUBAI_SUCCESS-LIFNR = WA_KOUBAI_DATA-LIFNR.
WA_KOUBAI_SUCCESS-BEDNR = WA_KOUBAI_DATA-BEDNR.
WA_KOUBAI_SUCCESS-EBELN = WA_KOUBAI_DATA-EBELN.
READ TABLE IT_EKKN INTO WA_EKKN
WITH KEY EBELN = WA_KOUBAI_DATA-EBELN
EBELP = WA_KOUBAI_DATA-EBELP.
IF SY-SUBRC = 0.
WA_KOUBAI_SUCCESS-KOSTL = WA_EKKN-KOSTL.
ENDIF.
READ TABLE IT_FPLA INTO WA_FPLA
WITH KEY FPLNR = WA_KOUBAI_DATA-FPLNR.
IF SY-SUBRC = 0.
WA_KOUBAI_SUCCESS-BEDAT = WA_FPLA-BEDAT.
WA_KOUBAI_SUCCESS-ENDAT = WA_FPLA-ENDAT.
WA_KOUBAI_SUCCESS-HORIZ = WA_FPLA-HORIZ.
WA_KOUBAI_SUCCESS-PERIO = WA_FPLA-PERIO.
ENDIF.
SELECT SINGLE ZEITR FROM TVRG INTO LW_ZLEANZ
WHERE REGEL = WA_FPLA-HORIZ.
SELECT SINGLE ZEITR FROM TVRG INTO LW_ZLRYTH
WHERE REGEL = WA_FPLA-PERIO.
LW_KAISUU = LW_ZLEANZ * 12 / LW_ZLRYTH.
WA_KOUBAI_SUCCESS-HORIZ = LW_KAISUU.
WA_KOUBAI_SUCCESS-PERIO = LW_ZLRYTH.
READ TABLE IT_ZTFI0025 INTO WA_ZTFI0025
WITH KEY ZBUKRS = WA_KOUBAI_DATA-BUKRS
ZSAKTO = WA_EKKN-SAKTO.
IF SY-SUBRC = 0.
IF WA_ZTFI0025-ZSHURUI <> COS_3.
G_MENGE = G_MENGE + WA_KOUBAI_DATA-MENGE.
ELSEIF WA_ZTFI0025-ZSHURUI = COS_3.
G_NETPR_3 = G_NETPR_3 + ( WA_KOUBAI_DATA-NETPR * LW_KAISUU ).
ENDIF.
IF WA_ZTFI0025-ZSHURUI = COS_1.
G_NETPR = G_NETPR + ( WA_KOUBAI_DATA-NETPR * WA_KOUBAI_DATA-MENGE ).
ENDIF.
ENDIF.
WA_KOUBAI_SUCCESS-NETPR = G_NETPR.
WA_KOUBAI_SUCCESS-NETPR_3 = G_NETPR_3.
WA_KOUBAI_SUCCESS-MENGE = G_MENGE.
AT END OF EBELN.
CLEAR: G_NETPR, G_NETPR_3, G_MENGE.
MODIFY IT_KOUBAI_SUCCESS FROM WA_KOUBAI_SUCCESS
TRANSPORTING NETPR MENGE NETPR_3
WHERE EBELN = WA_KOUBAI_DATA-EBELN.
ENDAT.
APPEND WA_KOUBAI_SUCCESS TO IT_KOUBAI_SUCCESS.
READ TABLE IT_PATTERN INTO WA_PATTERN
WITH KEY EBELN = WA_KOUBAI_DATA-EBELN.
IF SY-SUBRC = 0.
IF WA_PATTERN-PATRN = 'D'.
DELETE IT_KOUBAI_SUCCESS WHERE EBELN = WA_KOUBAI_DATA-EBELN.
ENDIF.
ENDIF.
CLEAR : LW_KAISUU , LW_ZLEANZ , LW_ZLRYTH.
ENDLOOP.
明細チェック
PERFORM F_MEISAI_CHECK.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE
WHERE ZEBELN IS NOT INITIAL.
G_TABIX = SY-TABIX.
リース期間のチェック
PERFORM F_RKIKAN_CHECK USING WA_UPLD_FILE.
IF FLG_X = 'X'.
*--支払計画でリース期間が違います
WA_ERR_FILE-ZERRMSG = TEXT-025.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM. " F_KOUBAI_MEISAI_CHECK
*&----
*
*& Form F_GET_KOUBAI_DATA
*&----
*
購買伝票ヘッダ ,購買伝票明細 テーブルの取得
*----
*
FORM F_GET_KOUBAI_DATA .
*--購買伝票ヘッダ ,購買伝票明細 テーブルの取得
SELECT A~BUKRS
A~EBELN
A~LIFNR
B~EBELP
B~BEDNR
B~FPLNR
B~NETPR
B~MENGE
FROM EKKO AS A INNER JOIN EKPO AS B
ON AEBELN = BEBELN
INTO CORRESPONDING FIELDS OF TABLE IT_KOUBAI_DATA
WHERE A~BUKRS IN R_BUKRS .
IF SY-SUBRC <> 0.
*--購買伝票ヘッダ/明細からの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-012.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " F_GET_KOUBAI_DATA
*&----
*
*& Form F_GET_KANJO_DATA
*&----
*
購買伝票勘定設定テーブルの取得
*----
*
FORM F_GET_KANJO_DATA .
*--購買伝票勘定設定テーブルの取得
IF IT_KOUBAI_DATA IS NOT INITIAL.
SELECT EBELN
EBELP
KOSTL
SAKTO
FROM EKKN INTO TABLE IT_EKKN
FOR ALL ENTRIES IN IT_KOUBAI_DATA
WHERE EBELN = IT_KOUBAI_DATA-EBELN
AND EBELP = IT_KOUBAI_DATA-EBELP.
IF SY-SUBRC <> 0.
*--購買伝票勘定設定テーブルからの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-014.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " F_GET_KANJO_DATA
*&----
*
*& Form F_GET_SEIKYUU_DATA
*&----
*
請求計画テーブルの取得
*----
*
FORM F_GET_SEIKYUU_DATA .
*--請求計画テーブルの取得
IF IT_KOUBAI_DATA IS NOT INITIAL.
SELECT FPLNR
BEDAT
ENDAT
HORIZ
PERIO
FROM FPLA INTO TABLE IT_FPLA
FOR ALL ENTRIES IN IT_KOUBAI_DATA
WHERE FPLNR = IT_KOUBAI_DATA-FPLNR.
IF SY-SUBRC <> 0.
*--請求計画テーブルからの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-013.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " F_GET_SEIKYUU_DATA
*&----
*
*& Form F_GET_MEISAI_DATA
*&----
*
明細種類用アドオンテーブル
*----
*
FORM F_GET_MEISAI_DATA .
明細種類用アドオンテーブル
IF IT_EKKN IS NOT INITIAL.
SELECT * FROM ZTFI0025 INTO
TABLE IT_ZTFI0025
FOR ALL ENTRIES IN IT_EKKN
WHERE ZBUKRS IN R_BUKRS
AND ZSAKTO = IT_EKKN-SAKTO.
IF SY-SUBRC <> 0.
*--明細種類用アドオンテーブルからの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-015.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " F_GET_MEISAI_DATA
*&----
*
*& Form F_MEISAI_CHECK
*&----
*
明細チェック
*----
*
FORM F_MEISAI_CHECK .
FIELD-SYMBOLS : .
DELETE IT_KOUBAI_SUCCESS WHERE EBELN = WA_KOUBAI_SUCCESS-EBELN.
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE
WITH KEY ZEBELN = WA_KOUBAI_SUCCESS-EBELN.
IF SY-SUBRC = 0.
*--リース情報が明細行で一致していません
WA_ERR_FILE-ZERRMSG = TEXT-024.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.
ENDFORM. " F_MEISAI_CHECK
*&----
*
*& Form PATTERN_CHECK
*&----
*
パターンチェック用サブルーチン
*----
*
FORM PATTERN_CHECK .
DATA : FLG_1(1) TYPE C,
FLG_2(1) TYPE C,
FLG_3(1) TYPE C,
FLG_4(1) TYPE C,
FLG_TGR_KBN(1) TYPE C,
FLG_TGR_PO(1) TYPE C,
L_INDEX TYPE SY-TABIX.
*--パターン内部テーブル作成
LOOP AT IT_KOUBAI_DATA INTO WA_KOUBAI_DATA.
WA_PATTERN-BUKRS = WA_KOUBAI_DATA-BUKRS.
WA_PATTERN-EBELN = WA_KOUBAI_DATA-EBELN. "購買伝票番号
WA_PATTERN-EBELP = WA_KOUBAI_DATA-EBELP.
READ TABLE IT_EKKN INTO WA_EKKN WITH KEY
EBELN = WA_KOUBAI_DATA-EBELN
EBELP = WA_KOUBAI_DATA-EBELP.
IF SY-SUBRC = 0.
WA_PATTERN-SAKTO = WA_EKKN-SAKTO.
ENDIF.
READ TABLE IT_ZTFI0025 INTO WA_ZTFI0025 WITH KEY
ZBUKRS = WA_KOUBAI_DATA-BUKRS
ZSAKTO = WA_EKKN-SAKTO.
IF SY-SUBRC = 0.
WA_PATTERN-ZSHURUI = WA_ZTFI0025-ZSHURUI.
ENDIF.
APPEND WA_PATTERN TO IT_PATTERN.
CLEAR : WA_KOUBAI_DATA , WA_PATTERN , WA_EKKN.
ENDLOOP.
*--パターンチェック用処理
SORT IT_PATTERN BY BUKRS EBELN EBELP.
IT_PATTERN_T[] = IT_PATTERN[].
LOOP AT IT_PATTERN INTO WA_PATTERN.
CLEAR : FLG_TGR_PO.
AT NEW EBELN.
FLG_TGR_PO = 'X'.
LOOP AT IT_PATTERN_T INTO WA_PATTERN_T
WHERE EBELN = WA_PATTERN-EBELN.
CLEAR : FLG_TGR_KBN.
AT NEW ZSHURUI.
FLG_TGR_KBN = 'X'.
ENDAT.
IF FLG_TGR_KBN = 'X'.
IF WA_PATTERN_T-ZSHURUI = '1' AND FLG_1 <> 'X'.
FLG_1 = 'X'.
ELSEIF WA_PATTERN_T-ZSHURUI = '2' AND FLG_2 <> 'X'.
FLG_2 = 'X'.
ELSEIF WA_PATTERN_T-ZSHURUI = '3' AND FLG_3 <> 'X'.
FLG_3 = 'X'.
ELSEIF WA_PATTERN_T-ZSHURUI = '0' AND FLG_4 <> 'X'.
FLG_4 = 'X'.
ELSE.
EXIT.
ENDIF.
ENDIF.
CLEAR : WA_PATTERN_T.
ENDLOOP.
ENDAT.
IF FLG_TGR_PO = 'X'.
IF FLG_1 = 'X' AND FLG_2 = 'X' AND
FLG_3 = 'X' AND FLG_4 <> 'X'.
WA_PATTERN-PATRN = 'A'.
WA_KOUBAI_SUCCESS-PATTERN = 'A'.
WA_KOUBAI_SUCCESS-ZZACCT = '1'. "1:売買処理[パターンがA.またはB.の時]
ELSEIF FLG_1 = 'X' AND FLG_3 = 'X' AND FLG_4 <> 'X'.
WA_PATTERN-PATRN = 'B'.
WA_KOUBAI_SUCCESS-PATTERN = 'B'.
WA_KOUBAI_SUCCESS-ZZACCT = '1'. "1:売買処理[パターンがA.またはB.の時]
ELSEIF FLG_2 = 'X' AND FLG_3 = 'X' AND FLG_4 <> 'X'.
WA_PATTERN-PATRN = 'C'.
WA_KOUBAI_SUCCESS-PATTERN = 'C'.
WA_KOUBAI_SUCCESS-ZZACCT = '2'. "2:賃貸借処理[パターンがC.の時]
ELSEIF FLG_2 = 'X' AND FLG_1 <> 'X' AND FLG_4 <> 'X'.
WA_PATTERN-PATRN = 'D'.
WA_KOUBAI_SUCCESS-PATTERN = 'D'.
ELSEIF FLG_4 = 'X'.
WA_PATTERN-PATRN = 'E'.
ELSE.
WA_PATTERN-PATRN = 'E'.
ENDIF.
CLEAR : FLG_1 , FLG_2 , FLG_3 , FLG_4.
MODIFY IT_PATTERN FROM WA_PATTERN TRANSPORTING PATRN
WHERE EBELN = WA_PATTERN-EBELN.
ENDIF.
CLEAR : WA_PATTERN.
ENDLOOP.
LOOP AT IT_KOUBAI_DATA INTO WA_KOUBAI_DATA.
READ TABLE IT_PATTERN INTO WA_PATTERN
WITH KEY EBELN = WA_KOUBAI_DATA-EBELN.
IF SY-SUBRC = 0.
IF WA_PATTERN-PATRN = 'D'.
DELETE IT_KOUBAI_DATA WHERE EBELN = WA_KOUBAI_DATA-EBELN.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE WHERE ZEBELN IS NOT INITIAL.
CLEAR : WA_PATTERN.
READ TABLE IT_PATTERN INTO WA_PATTERN
WITH KEY EBELN = WA_UPLD_FILE-ZEBELN.
IF SY-SUBRC = 0.
IF WA_PATTERN-PATRN = 'D'.
DELETE IT_UPLD_FILE WHERE ZEBELN = WA_UPLD_FILE-ZEBELN.
ELSEIF WA_PATTERN-PATRN = 'E'.
WA_ERR_FILE-ZERRMSG = TEXT-026.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ENDIF.
ENDIF.
CLEAR : WA_UPLD_FILE.
ENDLOOP.
ENDFORM. " PATTERN_CHECK
*&----
*
*& Form F_FIELDS_EXIST
*&----
*
購買発注伝票とアップロードファイルの項目の存在チェック
*----
*
FORM F_FIELDS_EXIST .
DATA : L_EBELN TYPE CHAR10,
L_BUKRS TYPE CHAR4,
L_LEAFI TYPE CHAR10,
L_BEDNR TYPE EKPO-BEDNR,
L_HORIZ TYPE CHAR2,
L_PERIO TYPE CHAR2,
L_MENGE TYPE EKPO-MENGE,
L_NETPR LIKE WA_ZTFI0023-ZZLEGEB,
L_NETPR_3 LIKE WA_ZTFI0023-ZZCONTAX,
L_ZEITR_ZLEANZ TYPE TVRG-ZEITR,
L_ZEITR_ZLRYTH TYPE TVRG-ZEITR.
購買発注伝票とアップロードファイルの項目の存在チェック
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE WHERE ZEBELN IS NOT INITIAL.
G_TABIX = SY-TABIX.
*--通貨額の内部データ書式への変換
PERFORM F_CONV_AMOUNT_INTERNAL USING WA_UPLD_FILE-ZLEGEB
CHANGING L_NETPR.
*--通貨額の内部データ書式への変換
PERFORM F_CONV_AMOUNT_INTERNAL USING WA_UPLD_FILE-ZCONTAX
CHANGING L_NETPR_3.
L_EBELN = WA_UPLD_FILE-ZEBELN.
L_BUKRS = WA_UPLD_FILE-ZBUKRS.
L_LEAFI = WA_UPLD_FILE-ZLEAFI.
L_BEDNR = WA_UPLD_FILE-ZLVTNR1.
L_HORIZ = WA_UPLD_FILE-ZLEANZ.
L_PERIO = WA_UPLD_FILE-ZLRYTH.
L_MENGE = WA_UPLD_FILE-ZQUAN.
IF WA_UPLD_FILE-ZACCT = COS_1.
READ TABLE IT_KOUBAI_SUCCESS INTO WA_KOUBAI_SUCCESS
WITH KEY EBELN = L_EBELN
BUKRS = L_BUKRS
LIFNR = L_LEAFI
BEDNR = L_BEDNR
BEDAT = WA_UPLD_FILE-ZLEABG
ENDAT = WA_UPLD_FILE-ZLKDAT
HORIZ = L_HORIZ
PERIO = L_PERIO.
*--2008/12/14 S
MENGE = L_MENGE
NETPR = L_NETPR
NETPR_3 = L_NETPR_3.
*--2008/12/14 E
ELSE.
READ TABLE IT_KOUBAI_SUCCESS INTO WA_KOUBAI_SUCCESS
WITH KEY EBELN = L_EBELN
BUKRS = L_BUKRS
LIFNR = L_LEAFI
BEDNR = L_BEDNR
BEDAT = WA_UPLD_FILE-ZLEABG
ENDAT = WA_UPLD_FILE-ZLKDAT
HORIZ = L_HORIZ
PERIO = L_PERIO.
*--2008/12/14 S
MENGE = L_MENGE
NETPR_3 = L_NETPR_3.
*--2008/12/14 E
ENDIF.
IF SY-SUBRC <> 0.
*--購買発注伝票とUploadファイルで項目が不一致です
WA_ERR_FILE-ZERRMSG = TEXT-027.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
CLEAR : WA_UPLD_FILE , WA_KOUBAI_SUCCESS.
ENDLOOP.
ENDFORM. " F_FIELDS_EXIST
*&----
*
*& Form F_KEIYAKU_BUKKEN_INSERT
*&----
*
リース契約.リース物件データの登録
*----
*
FORM F_KEIYAKU_BUKKEN_INSERT .
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
年利から現在価値を計算する
PERFORM F_GET_GENZAIKACHI.
ENDIF.
新規登録の時
IF RB_SINKI = COS_X.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
アップロードファイルの内部テーブルからテーブルの内部テーブルを引越する
PERFORM F_UPLD_EXIST_CHECK.
PERFORM F_INSERT_KEIYAKU_BUKKEN.
ENDIF.
ENDIF.
再登録の時
IF RB_SAITO = COS_X.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
PERFORM F_SAITOUROKU.
ENDIF.
ENDIF.
ENDFORM. " F_KEIYAKU_BUKKEN_INSERT
*&----
*
*& Form F_GET_GENZAIKACHI
*&----
*
年利と全リース資産額から現在価値を計算する
*----
*
FORM F_GET_GENZAIKACHI .
*--2008/12/14 S
*--リース契約毎に処理する
ソート処理
*----- 会社コード,リース会社,リース契約番号,資産補助番号
SORT IT_UPLD_FILE BY ZBUKRS "会社コード
ZLEAFI "リース会社コード
ZLEABG+0(6) "開始年月
ZLVTNR1 "契約番号
ZLVTNR2 "契約枝番
ZINVNR_ANLAB. "物件番号
*--2008/12/14 E
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
経理処理区分が1利息区分が1の時 1:売買処理 1:利息法
IF WA_UPLD_FILE-ZACCT = COS_1 AND
WA_UPLD_FILE-ZINTEREST = COS_1.
*--2008/12/14 S
CLEAR : FLG_DIFF.
AT NEW ZLVTNR2.
FLG_DIFF = COS_X.
ENDAT.
*--2008/12/14 E
PERFORM F_KEIRI_RISOKU_KBN1 USING WA_UPLD_FILE.
IF FLG_X = COS_X.
*--年金現価係数テーブルより取得出来ませんでした
WA_ERR_FILE-ZERRMSG = TEXT-028.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
経理処理区分が1利息区分が2の時 1:売買処理 2:利子込み法
ELSEIF WA_UPLD_FILE-ZACCT = COS_1 AND
WA_UPLD_FILE-ZINTEREST = COS_2.
WA_UPLD_FILE-ZLBARW = WA_UPLD_FILE-ZLBARW_ALL.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLBARW.
経理処理区分が1利息区分が3の時 1:売買処理 3:利息分離定額法
ELSEIF WA_UPLD_FILE-ZACCT = COS_1 AND
WA_UPLD_FILE-ZINTEREST = COS_3.
IF NOT WA_UPLD_FILE-ZKZINW IS INITIAL AND WA_UPLD_FILE-ZKZINW <> 0.
WA_UPLD_FILE-ZLBARW = WA_UPLD_FILE-ZLEGEB_SOUGAKU - WA_UPLD_FILE-ZKZINW.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLBARW.
ELSE.
*--2008/12/14 S
CLEAR : FLG_DIFF.
AT NEW ZLVTNR2.
FLG_DIFF = COS_X.
ENDAT.
*--2008/12/14 E
PERFORM F_KEIRI_RISOKU_KBN1 USING WA_UPLD_FILE.
IF FLG_X = COS_X.
*--年金現価係数テーブルより取得出来ませんでした
WA_ERR_FILE-ZERRMSG = TEXT-028.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
WA_UPLD_FILE-ZKZINW = WA_UPLD_FILE-ZLEGEB_SOUGAKU - WA_UPLD_FILE-ZLBARW.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZKZINW.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_GET_GENZAIKACHI
*&----
*
*& Form F_KEIRI_RISOKU_KBN1
*&----
*
経理処理区分と利息処理区分が'1'の場合
*----
*
FORM F_KEIRI_RISOKU_KBN1 USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
データ宣言
DATA : L_KEISUU TYPE ZTFI0028-ZZPERCT_01,
L_LBARW TYPE ZTFI0023-ZZLBARW,
L_LBARW_ALL TYPE ZTFI0023-ZZLBARW,
L_LEGEB TYPE ZTFI0023-ZZLEGEB,
L_DIFF LIKE L_LBARW.
CLEAR : FLG_X, G_NENRI_TEMP , L_DIFF.
L_LBARW_ALL = I_WA_UPLD_FILE-ZLBARW_ALL. " 全リース資産額
L_LEGEB = I_WA_UPLD_FILE-ZLEGEB. " リース料
全リース資産額が指定されて、年利が指定されていない場合
IF NOT I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL AND
I_WA_UPLD_FILE-ZLZINS IS INITIAL.
*--前払が指定した場合、
IF I_WA_UPLD_FILE-ZLVORS IS NOT INITIAL.
G_RKIKAN = G_RKIKAN - 1.
ENDIF.
*--前払が指定しない場合、
*-- 年金現価係数 = 全リース資産額 / リース料
L_KEISUU = L_LBARW_ALL / L_LEGEB.
SELECT * FROM ZTFI0028 INTO TABLE IT_ZTFI0028
WHERE ZZLRYTH = I_WA_UPLD_FILE-ZLRYTH AND " 支払周期
ZZPERIOD = G_RKIKAN. " リース期間
IF SY-SUBRC <> 0.
FLG_X = COS_X.
EXIT.
ENDIF.
*---年利を計算する
PERFORM F_GET_NENKIN_KEISUU USING L_KEISUU
I_WA_UPLD_FILE
CHANGING G_NENRI.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E1.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E10.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E100.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E1000.
I_WA_UPLD_FILE-ZLZINS = G_NENRI_TEMP.
PERFORM F_FIND_GENZAIKACHI USING I_WA_UPLD_FILE
CHANGING L_LBARW.
L_DIFF = I_WA_UPLD_FILE-ZLBARW_ALL - L_LBARW.
I_WA_UPLD_FILE-ZLBARW = L_LBARW.
*--2008/12/14 S
IF FLG_DIFF = COS_X.
*--2008/12/14 E
IF L_DIFF < 0.
I_WA_UPLD_FILE-ZLBARW_B = I_WA_UPLD_FILE-ZLBARW_B - L_DIFF.
ELSEIF L_DIFF > 0.
I_WA_UPLD_FILE-ZLBARW_B = I_WA_UPLD_FILE-ZLBARW_B + L_DIFF.
ENDIF.
*--2008/12/14 S
ENDIF.
*--2008/12/14 E
MODIFY IT_UPLD_FILE FROM I_WA_UPLD_FILE INDEX G_TABIX
TRANSPORTING ZLZINS ZLBARW ZLBARW_B.
年利が指定が指定されて、全リース資産額が指定されていない場合
ELSEIF NOT I_WA_UPLD_FILE-ZLZINS IS INITIAL AND
I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL.
PERFORM F_FIND_GENZAIKACHI USING I_WA_UPLD_FILE
CHANGING L_LBARW.
L_DIFF = I_WA_UPLD_FILE-ZLBARW_ALL - L_LBARW.
I_WA_UPLD_FILE-ZLBARW = L_LBARW.
*--2008/12/14 S
IF FLG_DIFF = COS_X.
*--2008/12/14 E
IF L_DIFF < 0.
I_WA_UPLD_FILE-ZLBARW_B = I_WA_UPLD_FILE-ZLBARW_B - L_DIFF.
ELSEIF L_DIFF > 0.
I_WA_UPLD_FILE-ZLBARW_B = I_WA_UPLD_FILE-ZLBARW_B + L_DIFF.
ENDIF.
*--2008/12/14 S
ENDIF.
*--2008/12/14 E
MODIFY IT_UPLD_FILE FROM I_WA_UPLD_FILE INDEX G_TABIX
TRANSPORTING ZLBARW ZLBARW_B.
年利と全リース資産額が指定されている場合
ELSEIF NOT I_WA_UPLD_FILE-ZLZINS IS INITIAL AND
NOT I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL.
PERFORM F_FIND_GENZAIKACHI USING I_WA_UPLD_FILE
CHANGING L_LBARW .
L_DIFF = I_WA_UPLD_FILE-ZLBARW_ALL - L_LBARW.
I_WA_UPLD_FILE-ZLBARW = L_LBARW.
*--2008/12/14 S
IF FLG_DIFF = COS_X.
*--2008/12/14 E
IF L_DIFF < 0.
I_WA_UPLD_FILE-ZLBARW_B = I_WA_UPLD_FILE-ZLBARW_B - L_DIFF.
ELSEIF L_DIFF > 0.
I_WA_UPLD_FILE-ZLBARW_B = I_WA_UPLD_FILE-ZLBARW_B + L_DIFF.
ENDIF.
*--2008/12/14 S
ENDIF.
*--2008/12/14 E
I_WA_UPLD_FILE-ZLBARW_ALL = I_WA_UPLD_FILE-ZLBARW = L_LBARW.
MODIFY IT_UPLD_FILE FROM I_WA_UPLD_FILE INDEX G_TABIX
TRANSPORTING ZLBARW ZLBARW_B. " ZLBARW_ALL.
ELSEIF I_WA_UPLD_FILE-ZLZINS IS INITIAL AND
I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_KEIRI_RISOKU_KBN1
*&----
*
*& Form F_GET_NENKIN_KEISUU
*&----
*
年利を計算する
*----
*
FORM F_GET_NENKIN_KEISUU USING I_L_KEISUU TYPE ZTFI0028-ZZPERCT_01
I_WA_UPLD_FILE TYPE TYP_UPLD_FILE
CHANGING I_G_NENRI TYPE ANLA-LZINS.
DATA : L_NENRI1 TYPE ZTFI0028-ZZPERCT_01,
L_NENRI2 TYPE ZTFI0028-ZZPERCT_01.
CLEAR : IT_28_TEMP, L_NENRI1, L_NENRI2.
LOOP AT IT_ZTFI0028 INTO WA_ZTFI0028.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_01.
WA_28_TEMP-ZNENRI = '1'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_02.
WA_28_TEMP-ZNENRI = '2'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_03.
WA_28_TEMP-ZNENRI = '3'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_04.
WA_28_TEMP-ZNENRI = '4'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_05.
WA_28_TEMP-ZNENRI = '5'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_06.
WA_28_TEMP-ZNENRI = '6'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_07.
WA_28_TEMP-ZNENRI = '7'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_08.
WA_28_TEMP-ZNENRI = '8'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_09.
WA_28_TEMP-ZNENRI = '9'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_10.
WA_28_TEMP-ZNENRI = '10'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_11.
WA_28_TEMP-ZNENRI = '11'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_12.
WA_28_TEMP-ZNENRI = '12'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_13.
WA_28_TEMP-ZNENRI = '13'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_14.
WA_28_TEMP-ZNENRI = '14'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_15.
WA_28_TEMP-ZNENRI = '15'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_16.
WA_28_TEMP-ZNENRI = '16'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_17.
WA_28_TEMP-ZNENRI = '17'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_18.
WA_28_TEMP-ZNENRI = '18'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_19.
WA_28_TEMP-ZNENRI = '19'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_20.
WA_28_TEMP-ZNENRI = '20'.
APPEND WA_28_TEMP TO IT_28_TEMP.
ENDLOOP.
SORT IT_28_TEMP BY ZPERCT ASCENDING.
LOOP AT IT_28_TEMP INTO WA_28_TEMP WHERE ZPERCT >= I_L_KEISUU .
L_NENRI1 = WA_28_TEMP-ZPERCT.
EXIT.
ENDLOOP.
SORT IT_28_TEMP BY ZPERCT DESCENDING.
LOOP AT IT_28_TEMP INTO WA_28_TEMP WHERE ZPERCT < I_L_KEISUU .
L_NENRI2 = WA_28_TEMP-ZPERCT.
EXIT.
ENDLOOP.
IF L_NENRI1 IS INITIAL.
I_G_NENRI = 1.
ELSEIF L_NENRI2 IS INITIAL.
I_G_NENRI = 20.
ELSEIF L_NENRI1 >= I_L_KEISUU AND I_L_KEISUU > L_NENRI2.
G_DIFF1 = L_NENRI1 - I_L_KEISUU.
G_DIFF2 = I_L_KEISUU - L_NENRI2.
IF G_DIFF1 > G_DIFF2.
READ TABLE IT_28_TEMP INTO WA_28_TEMP WITH KEY ZPERCT = L_NENRI2.
IF SY-SUBRC = 0.
I_G_NENRI = WA_28_TEMP-ZNENRI.
ENDIF.
ELSE.
READ TABLE IT_28_TEMP INTO WA_28_TEMP WITH KEY ZPERCT = L_NENRI1.
IF SY-SUBRC = 0.
I_G_NENRI = WA_28_TEMP-ZNENRI.
ENDIF.
ENDIF.
ENDIF.
*--前払が指定した場合、
IF I_WA_UPLD_FILE-ZLVORS IS NOT INITIAL.
I_G_NENRI = I_G_NENRI + 1.
ENDIF.
ENDFORM. " F_GET_NENKIN_KEISUU
*&----
*
*& Form F_FIND_NENRI
*&----
*
年利を計算する
*----
*
FORM F_FIND_NENRI USING I2_WA_UPLD_FILE TYPE TYP_UPLD_FILE
I_COS_E TYPE ANLA-LZINS.
DATA : L_UP_ZEN TYPE ZTFI0023-ZZLBARW_ALL,
L_LBARW TYPE ZTFI0023-ZZLBARW_ALL,
L_AMT_DIFF TYPE ZTFI0023-ZZLBARW_ALL,
L_AMT_DIFF1 TYPE ZTFI0023-ZZLBARW_ALL,
L_AMT_DIFF2 TYPE ZTFI0023-ZZLBARW_ALL.
CLEAR : IT_NENRI, WA_NENRI.
L_UP_ZEN = I2_WA_UPLD_FILE-ZLBARW_ALL.
IF NOT G_NENRI_TEMP IS INITIAL.
G_NENRI = G_NENRI_TEMP.
CLEAR G_NENRI_TEMP.
ENDIF.
DO 10 TIMES.
I2_WA_UPLD_FILE-ZLZINS = G_NENRI.
PERFORM F_FIND_GENZAIKACHI USING I2_WA_UPLD_FILE
CHANGING L_LBARW.
WA_NENRI-LZINS = I2_WA_UPLD_FILE-ZLZINS.
WA_NENRI-LBARW = L_LBARW.
APPEND WA_NENRI TO IT_NENRI.
G_NENRI = G_NENRI + I_COS_E.
ENDDO.
CLEAR L_LBARW.
SORT IT_NENRI BY LBARW DESCENDING.
LOOP AT IT_NENRI INTO WA_NENRI WHERE LBARW >= L_UP_ZEN.
IF WA_NENRI-LBARW > L_UP_ZEN.
L_AMT_DIFF1 = WA_NENRI-LBARW - L_UP_ZEN.
ELSE.
L_AMT_DIFF1 = L_UP_ZEN - WA_NENRI-LBARW.
ENDIF.
IF L_AMT_DIFF1 > L_AMT_DIFF2.
L_AMT_DIFF = L_AMT_DIFF2.
ELSE.
L_AMT_DIFF = L_AMT_DIFF1.
ENDIF.
IF SY-TABIX = 1.
L_AMT_DIFF2 = L_AMT_DIFF1.
ELSE.
L_AMT_DIFF2 = L_AMT_DIFF.
ENDIF.
ENDLOOP.
L_LBARW = L_UP_ZEN + L_AMT_DIFF.
READ TABLE IT_NENRI INTO WA_NENRI WITH KEY LBARW = L_LBARW.
IF SY-SUBRC <> 0.
L_LBARW = L_UP_ZEN - L_AMT_DIFF.
READ TABLE IT_NENRI INTO WA_NENRI WITH KEY LBARW = L_LBARW.
G_NENRI_TEMP = WA_NENRI-LZINS.
ELSE.
G_NENRI_TEMP = WA_NENRI-LZINS.
ENDIF.
ENDFORM. " F_FIND_NENRI
*&----
*
*& Form F_UPLD_EXIST_CHECK
*&----
*
アップロードファイルの内部テーブルからテーブルの内部テーブル
*----
*
FORM F_UPLD_EXIST_CHECK.
DATA : L_TABIX TYPE SY-TABIX,
L_SYINDEX TYPE SY-INDEX.
FIELD-SYMBOLS : .
EXIT.
ELSEIF SY-INDEX = 6.
DELETE IT_UPLD_FILE WHERE ZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZLEABG0(6) = WA_UPLD_FILE-ZLEABG0(6) AND
ZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZLVTNR2 = WA_UPLD_FILE-ZLVTNR2 AND
ZINVNR_ANLAB = WA_UPLD_FILE-ZINVNR_ANLAB.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
LOOP AT IT_UPLD_TEMP INTO WA_UPLD_TEMP.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE
WITH KEY ZBUKRS = WA_UPLD_TEMP-ZBUKRS
ZLEAFI = WA_UPLD_TEMP-ZLEAFI
ZLEABG0(6) = WA_UPLD_TEMP-ZLEABG0(6)
ZLVTNR1 = WA_UPLD_TEMP-ZLVTNR1
ZLVTNR2 = WA_UPLD_TEMP-ZLVTNR2
ZINVNR_ANLAB = WA_UPLD_TEMP-ZINVNR_ANLAB.
IF SY-SUBRC <> 0.
*--リース契約又は物件のキー項目が同じです
WA_ERR_FILE-ZERRMSG = TEXT-030.
PERFORM F_ERR_FILE USING WA_UPLD_TEMP.
DELETE TABLE IT_UPLD_TEMP FROM WA_UPLD_TEMP.
ENDIF.
ENDLOOP.
ENDIF.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
CLEAR G_TABIX.
G_TABIX = SY-TABIX.
リース契約テーブルのデータの存在チェック
SELECT SINGLE ZZLEAFI FROM ZTFI0023 INTO WA_FI23_TEMP
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_UPLD_FILE-ZLEABG+0(6) AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC = 0.
*--リース契約テーブルにデータが既に存在します
WA_ERR_FILE-ZERRMSG = TEXT-029.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ELSE.
PERFORM F_MOVE_UPLD_FILE USING WA_UPLD_FILE.
APPEND WA_ZTFI0023 TO IT_ZTFI0023.
IF WA_ZTFI0024-ZZLBARW <> 0.
APPEND WA_ZTFI0024 TO IT_ZTFI0024.
ENDIF.
ENDIF.
ENDLOOP.
IF IT_ZTFI0023 IS NOT INITIAL.
SORT IT_ZTFI0023 BY ZZBUKRS ZZLEAFI ZZLEYM ZZLVTNR1 ZZLVTNR2.
DELETE ADJACENT DUPLICATES FROM IT_ZTFI0023.
ENDIF.
ENDFORM. " F_UPLD_EXIST_CHECK
*&----
*
*& Form F_MOVE_UPLD_FILE
*&----
*
アップロードファイルの内部テーブルからテーブルの内部テーブルを引越する
*----
*
FORM F_MOVE_UPLD_FILE USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
*--ALPHA 変換 Exit: 外部->内部の処理(2008/12/14) START SATHEESH
DATA : L_LVTNR2 TYPE ZTFI0023-ZZLVTNR2,
L_EBELN TYPE ZTFI0023-ZZEBELN,
L_ANLKL TYPE ZTFI0024-ZZANLKL.
CLEAR : L_LVTNR2 , L_EBELN.
L_LVTNR2 = I_WA_UPLD_FILE-ZLVTNR2.
L_EBELN = I_WA_UPLD_FILE-ZEBELN.
L_ANLKL = I_WA_UPLD_FILE-ZANLKL.
PERFORM F_INSERT_ZERO USING L_LVTNR2. "資産補助番号
PERFORM F_INSERT_ZERO USING L_EBELN. "購買伝票番号
PERFORM F_INSERT_ZERO USING L_ANLKL. "資産クラス
*--(2008/12/14) END SATHEESH
*--契約テーブル情報
WA_ZTFI0023-ZZBUKRS = I_WA_UPLD_FILE-ZBUKRS. "会社コード
WA_ZTFI0023-ZZLEAFI = I_WA_UPLD_FILE-ZLEAFI. "リース会社
WA_ZTFI0023-ZZLEYM = I_WA_UPLD_FILE-ZLEABG+0(6). "開始年月
WA_ZTFI0023-ZZLVTNR1 = I_WA_UPLD_FILE-ZLVTNR1. "リース契約番号
WA_ZTFI0023-ZZLVTNR2 = L_LVTNR2. "資産補助番号
WA_ZTFI0023-ZZTXA50_ANLT = I_WA_UPLD_FILE-ZTXA50_ANLT. "資産テキスト
WA_ZTFI0023-ZZINVNR_ANLA = I_WA_UPLD_FILE-ZINVNR_ANLA. "棚卸番号
WA_ZTFI0023-ZZEBELN = L_EBELN. "購買伝票番号
WA_ZTFI0023-ZZACCT = I_WA_UPLD_FILE-ZACCT. "経理処理区分
WA_ZTFI0023-ZZINTEREST = I_WA_UPLD_FILE-ZINTEREST. "利息処理区分
*--リース会社に支払われる定期リース支払(リース料総額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLEGEB_SOUGAKU
CHANGING WA_ZTFI0023-ZZLEGEB_SOUGAKU.
WA_ZTFI0023-ZZWAERS = 'JPY'. "通貨コード
*--取得価額累計額(全リース資産額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLBARW_ALL
CHANGING WA_ZTFI0023-ZZLBARW_ALL.
*--取得価額累計額(消費税額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZCONTAX
CHANGING WA_ZTFI0023-ZZCONTAX.
*--利息累計額(支払利息額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZKZINW
CHANGING WA_ZTFI0023-ZZKZINW.
WA_ZTFI0023-ZZQUAN = I_WA_UPLD_FILE-ZQUAN. "数量
WA_ZTFI0023-ZZKOSTL = I_WA_UPLD_FILE-ZKOSTL. "原価センタ
WA_ZTFI0023-ZZKOSTLV = I_WA_UPLD_FILE-ZKOSTLV. "資産の責任原価センタ
WA_ZTFI0023-ZZWERKS_D = I_WA_UPLD_FILE-ZWERKS_D. "プラント
WA_ZTFI0023-ZZSTORT = I_WA_UPLD_FILE-ZSTORT. "資産場所
WA_ZTFI0023-ZZRAUMNR = I_WA_UPLD_FILE-ZRAUMNR. "部屋
WA_ZTFI0023-ZZAM_KFZKZ = I_WA_UPLD_FILE-ZAM_KFZKZ. "車両のナンバープレート
WA_ZTFI0023-ZZORD41 = I_WA_UPLD_FILE-ZORD41. "評価グループ 1
WA_ZTFI0023-ZZORD42 = I_WA_UPLD_FILE-ZORD42. "評価グループ 2
WA_ZTFI0023-ZZORD43 = I_WA_UPLD_FILE-ZORD43. "評価グループ 3
WA_ZTFI0023-ZZORD44 = I_WA_UPLD_FILE-ZORD44. "評価グループ 4
WA_ZTFI0023-ZZIZWEK = I_WA_UPLD_FILE-ZIZWEK. "設備投資理由
WA_ZTFI0023-ZZAM_UMWKZ = I_WA_UPLD_FILE-ZAM_UMWKZ. "環境投資理由
WA_ZTFI0023-ZZANLUE = I_WA_UPLD_FILE-ZANLUE. "資産グループコード
WA_ZTFI0023-ZZLVDAT = I_WA_UPLD_FILE-ZLVDAT. "リース契約日
WA_ZTFI0023-ZZLKDAT = I_WA_UPLD_FILE-ZLKDAT. "リース契約通知日付
WA_ZTFI0023-ZZLEABG = I_WA_UPLD_FILE-ZLEABG. "リース開始日付
リース期間を計算する
PERFORM F_CAL_RKIKAN USING I_WA_UPLD_FILE-ZLEABG "リース開始日付
I_WA_UPLD_FILE-ZLKDAT. "リース契約通知日付
WA_ZTFI0023-ZZLEJAR = G_NO_YEARS. "リース期間 (年)
WA_ZTFI0023-ZZLEPER = G_NO_MONTHS. "リース期間 (期間数)
WA_ZTFI0023-ZZLEART = 'Z1'. "リースタイプ
*--リース基準価額 (新規)(基準価額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLBASW
CHANGING WA_ZTFI0023-ZZLBASW.
*--リース資産買取価格(買取価額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLKAUF
CHANGING WA_ZTFI0023-ZZLKAUF.
WA_ZTFI0023-ZZLETXT = I_WA_UPLD_FILE-ZLETXT. "リース追加データ
WA_ZTFI0023-ZZLEANZ = I_WA_UPLD_FILE-ZLEANZ. "リース支払回数
WA_ZTFI0023-ZZLRYTH = I_WA_UPLD_FILE-ZLRYTH. "リース支払周期
WA_ZTFI0023-ZZLVORS = I_WA_UPLD_FILE-ZLVORS. "前払
*--リース会社に支払われる定期リース支払(リース料)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLEGEB
CHANGING WA_ZTFI0023-ZZLEGEB.
WA_ZTFI0023-ZZLZINS = I_WA_UPLD_FILE-ZLZINS. "リース利息率 (キャピタルリース)
*--リース現在価値(現在価値)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLBARW
CHANGING WA_ZTFI0023-ZZLBARW.
*--物件テーブル情報
WA_ZTFI0024-ZZBUKRS = I_WA_UPLD_FILE-ZBUKRS. "会社コード
WA_ZTFI0024-ZZLEAFI = I_WA_UPLD_FILE-ZLEAFI. "リース会社
WA_ZTFI0024-ZZLEYM = I_WA_UPLD_FILE-ZLEABG+0(6). "開始年月
WA_ZTFI0024-ZZLVTNR1 = I_WA_UPLD_FILE-ZLVTNR1. "リース契約番号
WA_ZTFI0024-ZZLVTNR2 = L_LVTNR2. "資産補助番号
WA_ZTFI0024-ZZINVNR_ANLA = I_WA_UPLD_FILE-ZINVNR_ANLAB. "棚卸番号
WA_ZTFI0024-ZZANLKL = L_ANLKL. "資産クラス
WA_ZTFI0024-ZZTXA50_ANLT = I_WA_UPLD_FILE-ZTXA50_ANLTB. "資産テキスト
WA_ZTFI0024-ZZQUAN = I_WA_UPLD_FILE-ZQUAN_B. "数量
*--取得価額累計額(リース資産額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLBARW_B
CHANGING WA_ZTFI0024-ZZLBARW.
WA_ZTFI0024-ZZWAERS = 'JPY'. "通貨コード
*--取得価額累計額(維持費用額)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZMAINTE
CHANGING WA_ZTFI0024-ZZMAINTE.
*--取得価額累計額(長期前受収益)
PERFORM F_CONV_AMOUNT_INTERNAL USING I_WA_UPLD_FILE-ZLGADV
CHANGING WA_ZTFI0024-ZZLGADV.
WA_ZTFI0024-ZZKOSTL = I_WA_UPLD_FILE-ZKOSTL_B. "原価センタ
WA_ZTFI0024-ZZKOSTLV = I_WA_UPLD_FILE-ZKOSTLV_B. "資産の責任原価センタ
WA_ZTFI0024-ZZWERKS_D = I_WA_UPLD_FILE-ZWERKS_DB. "プラント
WA_ZTFI0024-ZZSTORT = I_WA_UPLD_FILE-ZSTORT_B. "資産場所
WA_ZTFI0024-ZZRAUMNR = I_WA_UPLD_FILE-ZRAUMNR_B. "部屋
WA_ZTFI0024-ZZAM_KFZKZ = I_WA_UPLD_FILE-ZAM_KFZKZB. "車両のナンバープレート
WA_ZTFI0024-ZZORD41 = I_WA_UPLD_FILE-ZORD41_B. "評価グループ 1
WA_ZTFI0024-ZZORD42 = I_WA_UPLD_FILE-ZORD42_B. "評価グループ 2
WA_ZTFI0024-ZZORD43 = I_WA_UPLD_FILE-ZORD43_B. "評価グループ 3
WA_ZTFI0024-ZZORD44 = I_WA_UPLD_FILE-ZORD44_B. "評価グループ 4
WA_ZTFI0024-ZZIZWEK = I_WA_UPLD_FILE-ZIZWEK_B. "設備投資理由
WA_ZTFI0024-ZZAM_UMWKZ = I_WA_UPLD_FILE-ZAM_UMWKZB. "環境投資理由
WA_ZTFI0024-ZZANLUE = I_WA_UPLD_FILE-ZANLUE_B. "資産グループコード
WA_ZTFI0024-ZZAFASL01 = I_WA_UPLD_FILE-ZAFASL01. "帳簿(償却キー)
WA_ZTFI0024-ZZNDJAR01 = I_WA_UPLD_FILE-ZNDJAR01. "帳簿(耐用年数)
WA_ZTFI0024-ZZNDPER01 = I_WA_UPLD_FILE-ZNDPER01. "帳簿(耐用期間)
WA_ZTFI0024-ZZAFASL15 = 'ZZ00'. "税法(償却キー)
WA_ZTFI0024-ZZNDJAR15 = I_WA_UPLD_FILE-ZNDJAR01. "税法(耐用年数)
WA_ZTFI0024-ZZNDPER15 = I_WA_UPLD_FILE-ZNDPER01. "税法(耐用期間)
ENDFORM. " F_MOVE_UPLD_FILE
*&----
*
*& Form F_INSERT_KEIYAKU_BUKKEN
*&----
*
新規登録の時
*----
*
FORM F_INSERT_KEIYAKU_BUKKEN .
データ宣言
DATA : L_CNT TYPE I,
L_CNT1 TYPE I.
CLEAR: L_CNT, L_CNT1.
L_CNT = LINES( IT_ZTFI0023 ).
L_CNT1 = LINES( IT_ZTFI0024 ).
IF L_CNT > 0.
INSERT ZTFI0023 FROM TABLE IT_ZTFI0023.
IF SY-SUBRC = 0.
IF L_CNT1 > 0.
INSERT ZTFI0024 FROM TABLE IT_ZTFI0024.
IF SY-SUBRC = 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
MESSAGE S999 DISPLAY LIKE 'E' WITH 'リース契約.物件データ'
'登録でエラーが発生しました'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " F_INSERT_KEIYAKU_BUKKEN
*&----
*
*& Form F_SAITOUROKU
*&----
*
再登録の時
*----
*
FORM F_SAITOUROKU .
データ宣言
DATA WA_ANLA TYPE ANLA.
CLEAR : WA_FI23_TEMP, FLG_X, IT_UPLD_TEMP, WA_UPLD_TEMP.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
PERFORM F_MOVE_UPLD_FILE USING WA_UPLD_FILE.
「リース契約テーブル」既に存在するチェック
SELECT SINGLE * FROM ZTFI0023 INTO WA_FI23_TEMP
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM ZTFI0024 INTO WA_FI24_TEMP
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0024-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2 AND
ZZINVNR_ANLA = WA_UPLD_FILE-ZINVNR_ANLA.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM ANLA INTO WA_ANLA
WHERE BUKRS = WA_UPLD_FILE-ZBUKRS AND
ANLN1 = WA_FI23_TEMP-ZZANLN1 AND
ANLN2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC <> 0.
DELETE FROM ZTFI0023 WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
DELETE FROM ZTFI0024 WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0024-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2 AND
ZZINVNR_ANLA = WA_UPLD_FILE-ZINVNR_ANLA.
COMMIT WORK.
CLEAR: WA_UPLD_TEMP, FLG_X.
WA_UPLD_TEMP = WA_UPLD_FILE.
APPEND WA_UPLD_TEMP TO IT_UPLD_TEMP.
FLG_X = COS_X.
ELSE.
**--対象リース契約・リース物件が資産マスタに既に存在しています
WA_ERR_FILE-ZERRMSG = TEXT-031.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
ELSE.
**--新規登録として処理します
WA_ERR_FILE-ZERRMSG = TEXT-036.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
WA_UPLD_TEMP = WA_UPLD_FILE.
APPEND WA_UPLD_TEMP TO IT_UPLD_TEMP.
FLG_X = COS_X.
ENDIF.
「リース契約テーブル」既に存在するチェック
SELECT SINGLE * FROM ZTFI0023 INTO WA_FI23_TEMP
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC = 0.
IF WA_FI23_TEMP-ZZANLN1 IS NOT INITIAL.
*--対象リース契約・リース物件が資産マスタに既に存在しています
WA_ERR_FILE-ZERRMSG = TEXT-031.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ELSE.
DELETE FROM ZTFI0023 WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
COMMIT WORK.
DELETE FROM ZTFI0024 WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0024-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2. "AND
ZZINVNR_ANLA = WA_UPLD_FILE-ZINVNR_ANLA.
COMMIT WORK.
CLEAR: WA_UPLD_TEMP.
WA_UPLD_TEMP = WA_UPLD_FILE.
APPEND WA_UPLD_TEMP TO IT_UPLD_TEMP.
ENDIF.
ELSE.
*--新規登録として処理します
WA_ERR_FILE-ZERRMSG = TEXT-036.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
WA_UPLD_TEMP = WA_UPLD_FILE.
APPEND WA_UPLD_TEMP TO IT_UPLD_TEMP.
ENDIF.
ENDLOOP.
IF FLG_X <> COS_X.
LOOP AT IT_UPLD_TEMP INTO WA_UPLD_TEMP.
WA_UPLD_FILE = WA_UPLD_TEMP.
PERFORM F_MOVE_UPLD_FILE USING WA_UPLD_FILE.
APPEND WA_ZTFI0023 TO IT_ZTFI0023.
IF WA_ZTFI0024-ZZLBARW <> 0.
APPEND WA_ZTFI0024 TO IT_ZTFI0024.
ENDIF.
ENDLOOP.
PERFORM F_INSERT_KEIYAKU_BUKKEN.
ENDIF.
ENDFORM. " F_SAITOUROKU
*&----
*
*& Form F_DELETE_PAST_DATA
*&----
*
過去データの削除
*----
*
FORM F_DELETE_PAST_DATA .
DATA : L_GJAHR TYPE BSEG-GJAHR.
IF P_SAKUJO = COS_X.
L_GJAHR = P_GJAHR - P_NENMAE.
リース契約.物件テーブルで過去データの削除
PERFORM F_KEIYAKU_BUKKEN_DELETE USING L_GJAHR.
*--過去データ削除処理が正常に終了しました
MESSAGE S000 WITH TEXT-040.
ENDIF.
ENDFORM. " F_DELETE_PAST_DATA
*&----
*
*& Form F_KEIYAKU_BUKKEN_DELETE
*&----
*
リース契約.物件データの削除
*----
*
FORM F_KEIYAKU_BUKKEN_DELETE USING I_GJAHR TYPE BSEG-GJAHR. "会計年度
データ宣言
DATA : L_DATE TYPE SY-DATUM,
L_DEAKT TYPE ANLA-DEAKT.
*-削除用基準日 = (入力会計年度 - 入力年数 - 1) 年の 12/31
SUBTRACT 1 FROM I_GJAHR.
L_DATE+0(4) = I_GJAHR.
L_DATE+4(2) = COS_12.
L_DATE+6(2) = COS_31.
SELECT * FROM ZTFI0023 INTO TABLE IT_ZTFI0023 WHERE ZZLKDAT <= L_DATE.
*-リース契約通知日付が削除用基準日以前を抽出
IF SY-SUBRC = 0.
LOOP AT IT_ZTFI0023 INTO WA_ZTFI0023.
IF WA_ZTFI0023-ZZANLN1 IS NOT INITIAL.
SELECT SINGLE DEAKT FROM ANLA INTO L_DEAKT " 無効化日付
WHERE BUKRS = WA_ZTFI0023-ZZBUKRS AND " 会社コード
ANLN1 = WA_ZTFI0023-ZZANLN1 AND " 資産番号
ANLN2 = WA_ZTFI0023-ZZANLN2. " 資産補助番号
IF SY-SUBRC = 0.
IF L_DEAKT IS NOT INITIAL.
*- 除却されている場合
DELETE FROM ZTFI0023 WHERE ZZBUKRS = WA_ZTFI0023-ZZBUKRS AND
ZZLEAFI = WA_ZTFI0023-ZZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_ZTFI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_ZTFI0023-ZZLVTNR2.
IF SY-SUBRC = 0.
COMMIT WORK.
DELETE FROM ZTFI0024 WHERE ZZBUKRS = WA_ZTFI0023-ZZBUKRS AND
ZZLEAFI = WA_ZTFI0023-ZZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_ZTFI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_ZTFI0023-ZZLVTNR2.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ELSE.
DELETE FROM ZTFI0023 WHERE ZZBUKRS = WA_ZTFI0023-ZZBUKRS AND
ZZLEAFI = WA_ZTFI0023-ZZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_ZTFI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_ZTFI0023-ZZLVTNR2.
IF SY-SUBRC = 0.
COMMIT WORK.
DELETE FROM ZTFI0024 WHERE ZZBUKRS = WA_ZTFI0023-ZZBUKRS AND
ZZLEAFI = WA_ZTFI0023-ZZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_ZTFI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_ZTFI0023-ZZLVTNR2.
COMMIT WORK.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR: IT_ZTFI0023, WA_ZTFI0023.
ENDIF.
ENDFORM. " F_KEIYAKU_BUKKEN_DELETE
*&----
*
*& Form F_ERR_FILE
*&----
*
エラーファイルに設定
*----
*
FORM F_ERR_FILE USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
WA_ERR_FILE-ZBUKRS = I_WA_UPLD_FILE-ZBUKRS.
WA_ERR_FILE-ZLEAFI = I_WA_UPLD_FILE-ZLEAFI.
WA_ERR_FILE-ZLVTNR1 = I_WA_UPLD_FILE-ZLVTNR1.
WA_ERR_FILE-ZLVTNR2 = I_WA_UPLD_FILE-ZLVTNR2.
WA_ERR_FILE-ZINVNR_ANLAB = I_WA_UPLD_FILE-ZINVNR_ANLAB.
APPEND WA_ERR_FILE TO IT_ERR_FILE.
CLEAR : WA_ERR_FILE.
ENDFORM. " F_ERR_FILE
*&----
*
*& Form F_ERR_FILE_DOWNLOAD
*&----
*
エラーファイルをダウンロードする
*----
*
FORM F_ERR_FILE_DOWNLOAD USING I_FNAME TYPE RLGRAP-FILENAME.
DATA L_FNAME TYPE STRING.
L_FNAME = I_FNAME.
*--- ダウンロードファイルヘッダ(正常データ)
INSERT TYP_HEADER INTO IT_ERR_FILE INDEX 1.
*--- GUIダウンロード
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = L_FNAME
FILETYPE = 'DAT'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
SHOW_TRANSFER_STATUS = ABAP_TRUE
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = IT_ERR_FILE
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " F_ERR_FILE_DOWNLOAD
*&----
*
*& Form F_ERR_UNIX_DOWNLOAD
*&----
*
エラーファイル(UNIX)をダウンロードする
*----
*
FORM F_ERR_UNIX_DOWNLOAD TABLES I_IT_ERR_FILE LIKE IT_ERR_FILE
USING I_WA_ERR_FILE TYPE TYP_ERR_FILE
I_P_UNIXER TYPE RLGRAP-FILENAME.
データ宣言
DATA : L_LINE TYPE STRING,
W_LINE(150) TYPE C.
*--- ダウンロードファイルヘッダ(正常データ)
INSERT TYP_HEADER INTO I_IT_ERR_FILE INDEX 1.
OPEN DATASET I_P_UNIXER FOR OUTPUT IN TEXT MODE
ENCODING NON-UNICODE.
IF SY-SUBRC <> 0 .
MESSAGE S001(ZNN01) WITH I_P_UNIXER
'OPEN'
SY-SUBRC
DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF .
LOOP AT I_IT_ERR_FILE INTO I_WA_ERR_FILE.
CLEAR : L_LINE , W_LINE.
*--タブ区切りでダウンロードする為
CONCATENATE I_WA_ERR_FILE-ZBUKRS
I_WA_ERR_FILE-ZLEAFI
I_WA_ERR_FILE-ZLVTNR1
I_WA_ERR_FILE-ZLVTNR2
I_WA_ERR_FILE-ZINVNR_ANLAB
I_WA_ERR_FILE-ZFLDTEXT
I_WA_ERR_FILE-ZERRMSG
INTO W_LINE SEPARATED BY COS_TAB.
CALL METHOD CL_ABAP_LIST_UTILITIES=>STRUCTURE_TO_DISPLAY
EXPORTING
MEMORY_DATA = W_LINE
IMPORTING
DISPLAY_DATA = L_LINE.
TRANSFER L_LINE TO I_P_UNIXER.
ENDLOOP.
CLOSE DATASET I_P_UNIXER.
ENDFORM. " F_ERR_UNIX_DOWNLOAD
*&----
*
*& Form F_FIND_GENZAIKACHI
*&----
*
text
*----
*
FORM F_FIND_GENZAIKACHI USING I2_WA_UPLD_FILE TYPE TYP_UPLD_FILE
CHANGING I_LBARW TYPE ZTFI0023-ZZLBARW.
DATA : L_LEANZ TYPE ANLA-LEANZ, "ZTFI0023-ZZLEANZ,
L_LRYTH TYPE ANLA-LRYTH, "ZTFI0023-ZZLRYTH,
L_LEGEB TYPE ANLA-LEGEB,
L_LVORS TYPE ANLA-LVORS,
L_LZINS TYPE ANLA-LZINS.
L_LEANZ = I2_WA_UPLD_FILE-ZLEANZ.
L_LRYTH = I2_WA_UPLD_FILE-ZLRYTH.
L_LEGEB = I2_WA_UPLD_FILE-ZLEGEB.
L_LVORS = I2_WA_UPLD_FILE-ZLVORS.
L_LZINS = I2_WA_UPLD_FILE-ZLZINS.
現在値設定
CALL FUNCTION 'AM_BARWERT_ERMITTELN'
EXPORTING
I_ANZBP = COS_012 "通常会計期間数
I_LEANZ = L_LEANZ "リース支払回数
I_LEGEB = L_LEGEB "リース料
I_LRYTH = L_LRYTH "リース支払周期
I_LVORS = L_LVORS "前払
I_LZINS = L_LZINS "リース利息率 (キャピタルリース)
IMPORTING
E_BARWERT = I_LBARW
EXCEPTIONS
BLART_NOT_FOUND = 1
BSCHL_NOT_FOUND = 2
FEHLER_IN_LEASINGDATEN = 3
KTOGR_NOT_FOUND = 4
NICHT_BEBUCHBAR = 5
T009B_NOT_FOUND = 6
T009_NOT_FOUND = 7
T083_NOT_FOUND = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " F_FIND_GENZAIKACHI
*&----
*
*& Form F_SUUJI_CHECK
*&----
*
text
*----
*
FORM F_SUUJI_CHECK USING P_NUMBER
P_TYPE.
DATA L_NUMBER(13) TYPE C.
CLEAR : P_TYPE.
L_NUMBER = P_NUMBER.
REPLACE '.' IN L_NUMBER WITH SPACE.
CONDENSE L_NUMBER NO-GAPS.
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
STRING_IN = L_NUMBER
IMPORTING
HTYPE = P_TYPE.
ENDFORM. " F_SUUJI_CHECK
*&----
*
*& Form F_AFASL_CHECK
*&----
*
償却キーの存在チェック
*----
*
FORM F_AFASL_CHECK USING I_UPLD_FILE TYPE TYP_UPLD_FILE.
DATA : L_AFASL TYPE AFASL,
L_AFAPL TYPE AFAPL.
CLEAR : L_AFASL , L_AFAPL , FLG_X.
*--資産管理システムの会社コード定義より取得
SELECT SINGLE AFAPL FROM T093C INTO L_AFAPL
WHERE BUKRS = I_UPLD_FILE-ZBUKRS.
IF SY-SUBRC = 0.
*--償却キーの取得
SELECT SINGLE AFASL FROM T090NA INTO L_AFASL
WHERE AFAPL = L_AFAPL
AND AFASL = I_UPLD_FILE-ZAFASL01.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ELSE.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_AFASL_CHECK
*&----
*
*& Form F_CONV_AMOUNT_INTERNAL
*&----
*
通貨額の内部データ書式への変換
*----
*
FORM F_CONV_AMOUNT_INTERNAL USING P_I_AMT
CHANGING P_O_AMT.
DATA : L_AMOUNT TYPE BAPICURR-BAPICURR.
CLEAR : L_AMOUNT.
L_AMOUNT = P_I_AMT.
CLEAR : P_O_AMT.
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
EXPORTING
CURRENCY = 'JPY'
AMOUNT_EXTERNAL = L_AMOUNT
MAX_NUMBER_OF_DIGITS = '13'
IMPORTING
AMOUNT_INTERNAL = P_O_AMT.
ENDFORM. " F_CONV_AMOUNT_INTERNAL
*--2008/12/14 SATHEESH
*&----
*
*& Form F_INSERT_ZERO
*&----
*
頭にゼロを入れる為
*----
*
FORM F_INSERT_ZERO USING P_NUMBER.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_NUMBER
IMPORTING
OUTPUT = P_NUMBER.
ENDFORM. " F_INSERT_ZERO
*--2008/12/14 SATHEESH
Edited by: MKM on Dec 15, 2008 11:11 AM
10-24-2008 6:27 AM
*======================================================================
プログラム・ヘッダー
*======================================================================
*
プログラム 名称 : リース契約・リース物件情報アップロード
プログラム : ZFIR0160
作成日 : 2008/09/24
作成者 : M.GUNASEELAN(INFOVIEW)
タイプ : REPORT
備考 :
*======================================================================
NO 日付 名称 内容
*
*======================================================================
REPORT ZFIR0160
NO STANDARD PAGE HEADING
LINE-COUNT 43
LINE-SIZE 200
MESSAGE-ID ZNN01.
*======================================================================
テーブル、構造定義 ---*
*======================================================================
TABLES : EKKO. "購買伝票ヘッダ
BSEG. "会計伝票明細
*======================================================================
内部テーブルの構造
*======================================================================
ファイル定義(入力ファイル.リース契約・物件登録ファイル)
TYPES : BEGIN OF TYP_UPLD_FILE,
ZBUKRS(10) TYPE C, "会社コード'
ZLEAFI(16) TYPE C, "リース会社コード',
ZLVTNR1(15) TYPE C, "契約番号',
ZLVTNR2(8) TYPE C, "契約枝番',
ZTXA50_ANLT(50) TYPE C, "契約名称',
ZINVNR_ANLA(25) TYPE C, "棚卸番号',
ZEBELN(16) TYPE C, "購買発注伝票番号',
ZACCT(12) TYPE C, "経理処理区分',
ZINTEREST(12) TYPE C, "利息処理区分',
ZLEGEB_SOUGAKU(13) TYPE C, "リース料総額',
ZLBARW_ALL(14) TYPE C, "全リース資産額',
ZCONTAX(13) TYPE C, "消費税',
ZKZINW(13) TYPE C, "支払利息額',
ZQUAN(13) TYPE C, "全物件数',
ZKOSTL(10) TYPE C, "原価センタ',
ZKOSTLV(14) TYPE C, "責任原価センタ',
ZWERKS_D(8) TYPE C, "プラント',
ZSTORT(10) TYPE C, "場所',
ZRAUMNR(8) TYPE C, "部屋',
ZAM_KFZKZ(18) TYPE C, "ナンバープレート',
ZORD41(14) TYPE C, "評価グループ1',
ZORD42(14) TYPE C, "評価グループ 2',
ZORD43(14) TYPE C, "評価グループ 3',
ZORD44(14) TYPE C, "評価グループ 4',
ZIZWEK(12) TYPE C, "設備投資理由',
ZAM_UMWKZ(12) TYPE C, "環境投資理由',
ZANLUE(18) TYPE C, "資産グループコード',
ZLVDAT(8) TYPE C, "契約日',
ZLKDAT(8) TYPE C, "通知日付',
ZLEABG(8) TYPE C, "開始日付',
ZLBASW(13) TYPE C, "基準価額',
ZLKAUF(13) TYPE C, "買取価額',
ZLETXT(50) TYPE C, "追加テキスト',
ZLEANZ(15) TYPE C, "支払回数',
ZLRYTH(8) TYPE C, "支払周期',
ZLVORS(4) TYPE C, "前払',
ZLEGEB(13) TYPE C, "リース料',
ZLZINS(7) TYPE C, "年利',
ZLBARW(13) TYPE C, "現在価値',
ZINVNR_ANLAB(25) TYPE C, "物件番号',
ZANLKL(16) TYPE C, "資産クラス',
ZTXA50_ANLTB(50) TYPE C, "物件名称',
ZQUAN_B(13) TYPE C, "物件数',
ZLBARW_B(13) TYPE C, "リース資産額',
ZMAINTE(13) TYPE C, "維持費用額',
ZLGADV(13) TYPE C, "長期前受収益',
ZKOSTL_B(18) TYPE C, "(物件)原価センタ',
ZKOSTLV_B(22) TYPE C, "(物件)責任原価センタ',
ZWERKS_DB(16) TYPE C, "(物件)プラント',
ZSTORT_B(12) TYPE C, "(物件)場所',
ZRAUMNR_B(12) TYPE C, "(物件)部屋',
ZAM_KFZKZB(24) TYPE C, "(物件)ナンバープレート',
ZORD41_B(22) TYPE C, "(物件)評価グループ1',
ZORD42_B(22) TYPE C, "(物件)評価グループ 2',
ZORD43_B(22) TYPE C, "(物件)評価グループ 3',
ZORD44_B(22) TYPE C, "(物件)評価グループ 4',
ZIZWEK_B(20) TYPE C, "(物件)設備投資理由',
ZAM_UMWKZB(20) TYPE C, "(物件)環境投資理由',
ZANLUE_B(26) TYPE C, "(物件)資産グループコード',
ZAFASL01(16) TYPE C, "帳簿(償却キー)
ZNDJAR01(16) TYPE C, "帳簿(耐用年数)
ZNDPER01(16) TYPE C, "帳簿(耐用期間)
END OF TYP_UPLD_FILE.
*--ダウンロードファイルヘッダ(エラーデータ)
DATA : BEGIN OF TYP_HEADER,
CNS_ZZBUKRS(10) TYPE C VALUE '会社コード',
CNS_ZZLEAFI(16) TYPE C VALUE 'リース会社コード',
CNS_ZZLVTNR1(15) TYPE C VALUE '契約番号',
CNS_ZZLVTNR2(8) TYPE C VALUE '契約枝番',
CNS_ZZTXA50_ANLT(50) TYPE C VALUE '契約名称',
CNS_ZZINVNR_ANLA(25) TYPE C VALUE '棚卸番号',
CNS_ZZEBELN(16) TYPE C VALUE '購買発注伝票番号',
CNS_ZZACCT(12) TYPE C VALUE '経理処理区分',
CNS_ZZINTEREST(12) TYPE C VALUE '利息処理区分',
CNS_ZZLEGEB_SOUGAKU(13) TYPE C VALUE 'リース料総額',
CNS_ZZLBARW_ALL(14) TYPE C VALUE '全リース資産額',
CNS_ZZCONTAX(13) TYPE C VALUE '消費税',
CNS_ZZKZINW(13) TYPE C VALUE '支払利息額',
CNS_ZZQUAN(13) TYPE C VALUE '全物件数',
CNS_ZZKOSTL(10) TYPE C VALUE '原価センタ',
CNS_ZZKOSTLV(14) TYPE C VALUE '責任原価センタ',
CNS_ZZWERKS_D(8) TYPE C VALUE 'プラント',
CNS_ZZSTORT(10) TYPE C VALUE '場所',
CNS_ZZRAUMNR(8) TYPE C VALUE '部屋',
CNS_ZZAM_KFZKZ(18) TYPE C VALUE 'ナンバープレート',
CNS_ZZORD41(14) TYPE C VALUE '評価グループ1',
CNS_ZZORD42(14) TYPE C VALUE '評価グループ 2',
CNS_ZZORD43(14) TYPE C VALUE '評価グループ 3',
CNS_ZZORD44(14) TYPE C VALUE '評価グループ 4',
CNS_ZZIZWEK(12) TYPE C VALUE '設備投資理由',
CNS_ZZAM_UMWKZ(12) TYPE C VALUE '環境投資理由',
CNS_ZZANLUE(18) TYPE C VALUE '資産グループコード',
CNS_ZZLVDAT(8) TYPE C VALUE '契約日',
CNS_ZZLKDAT(8) TYPE C VALUE '通知日付',
CNS_ZZLEABG(8) TYPE C VALUE '開始日付',
CNS_ZZLBASW(13) TYPE C VALUE '基準価額',
CNS_ZZLKAUF(13) TYPE C VALUE '買取価額',
CNS_ZZLETXT(50) TYPE C VALUE '追加テキスト',
CNS_ZZLEANZ(15) TYPE C VALUE '支払回数',
CNS_ZZLRYTH(8) TYPE C VALUE '支払周期',
CNS_ZZLVORS(4) TYPE C VALUE '前払',
CNS_ZZLEGEB(13) TYPE C VALUE 'リース料',
CNS_ZZLZINS(7) TYPE C VALUE '年利',
CNS_ZZLBARW(13) TYPE C VALUE '現在価値',
CNS_ZZINVNR_ANLA_24(25) TYPE C VALUE '物件番号',
CNS_ZZANLKL(16) TYPE C VALUE '資産クラス',
CNS_ZZTXA50_ANLT_24(50) TYPE C VALUE '物件名称',
CNS_ZZQUAN4(13) TYPE C VALUE '物件数',
CNS_ZZLBARW4(13) TYPE C VALUE 'リース資産額',
CNS_ZZMAINTE(13) TYPE C VALUE '維持費用額',
CNS_ZZLGADV(13) TYPE C VALUE '長期前受収益',
CNS_ZZKOSTL1(18) TYPE C VALUE '(物件)原価センタ',
CNS_ZZKOSTLV_24(22) TYPE C VALUE '(物件)責任原価センタ',
CNS_ZZWERKS_D_24(16) TYPE C VALUE '(物件)プラント',
CNS_ZZSTORT_24(12) TYPE C VALUE '(物件)場所',
CNS_ZZRAUMNR_24(12) TYPE C VALUE '(物件)部屋',
CNS_ZZAM_KFZKZ_24(24) TYPE C VALUE '(物件)ナンバープレート',
CNS_ZZORD41_24(22) TYPE C VALUE '(物件)評価グループ1',
CNS_ZZORD42_24(22) TYPE C VALUE '(物件)評価グループ 2',
CNS_ZZORD43_24(22) TYPE C VALUE '(物件)評価グループ 3',
CNS_ZZORD44_24(22) TYPE C VALUE '(物件)評価グループ 4',
CNS_ZZIZWEK_24(20) TYPE C VALUE '(物件)設備投資理由',
CNS_ZZAM_UMWKZ_24(20) TYPE C VALUE '(物件)環境投資理由',
CNS_ZZANLUE_24(26) TYPE C VALUE '(物件)資産グループコード',
CNS_ZZAFASL01(16) TYPE C VALUE '帳簿(償却キー)',
CNS_ZZNDJAR01(16) TYPE C VALUE '帳簿(耐用年数)',
CNS_ZZNDPER01(16) TYPE C VALUE '帳簿(耐用期間)',
END OF TYP_HEADER.
購買伝票ヘッダ ,購買伝票明細 テーブル
TYPES : BEGIN OF TYP_KOUBAI_DATA,
BUKRS TYPE EKKO-BUKRS, "会社コード
EBELN TYPE EKKO-EBELN, "購買伝票番号
EBELP TYPE EKPO-EBELP, "購買伝票の明細番号
LIFNR TYPE EKKO-LIFNR, "仕入先勘定コード
BEDNR TYPE EKPO-BEDNR, "購買依頼追跡番号
MENGE TYPE EKPO-MENGE, "購買発注量
NETPR TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
FPLNR TYPE FPLA-FPLNR, "支払計画番号
PATTERN(1) TYPE C,
END OF TYP_KOUBAI_DATA.
購買伝票勘定設定内部テーブルの構造
TYPES : BEGIN OF TYP_EKKN,
EBELN TYPE EKKN-EBELN, "購買伝票番号
EBELP TYPE EKKN-EBELP, "購買伝票の明細番号
KOSTL TYPE EKKN-KOSTL, "原価センタ
END OF TYP_EKKN.
請求計画データ取得用内部テーブルの構造
TYPES : BEGIN OF TYP_FPLA,
FPLNR TYPE FPLA-FPLNR, "請求計画番号
BEDAT TYPE FPLA-BEDAT, "請求/支払計画開始日付
ENDAT TYPE FPLA-ENDAT, "請求/支払計画終了日付
HORIZ TYPE FPLA-HORIZ, "請求/支払計画における期間決定の規則
PERIO TYPE FPLA-PERIO, "次回請求/請求書日付コピー元の規則
END OF TYP_FPLA.
購買伝票明細 テーブル[TEMP]
TYPES : BEGIN OF TYP_KOUBAI_SUCCESS,
EBELN TYPE EKKN-EBELN, "購買伝票番号
BUKRS TYPE EKKO-BUKRS, "会社コード
LIFNR TYPE EKKO-LIFNR, "仕入先勘定コード
BEDNR TYPE EKPO-BEDNR, "購買依頼追跡番号
BEDAT TYPE FPLA-BEDAT, "請求/支払計画開始日付
ENDAT TYPE FPLA-ENDAT, "請求/支払計画終了日付
HORIZ TYPE FPLA-HORIZ, "請求/支払計画における期間決定の規則
PERIO TYPE FPLA-PERIO, "次回請求/請求書日付コピー元の規則
MENGE TYPE EKPO-MENGE, "購買発注量
NETPR TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
NETPR_3 TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
KOSTL TYPE EKKN-KOSTL, "原価センタ
END OF TYP_KOUBAI_SUCCESS.
年金現値係数表[TEMP]
TYPES : BEGIN OF TYP_ZTFI0028,
ZNENRI TYPE I,
ZPERCT TYPE ZTFI0028-ZZPERCT_01,
END OF TYP_ZTFI0028.
年利計算する為[TEMP]
TYPES : BEGIN OF TYP_NENRI_STR,
LZINS TYPE ANLA-LZINS,
LBARW TYPE ZTFI0023-ZZLBARW,
END OF TYP_NENRI_STR.
*======================================================================
内部テーブル定義
*======================================================================
(入力ファイル)リース契約.物件アップロードファイル
DATA : IT_UPLD_FILE TYPE STANDARD TABLE OF TYP_UPLD_FILE,
IT_UPLD_TEMP TYPE STANDARD TABLE OF TYP_UPLD_FILE,
WA_UPLD_FILE TYPE TYP_UPLD_FILE,
WA_UPLD_TEMP TYPE TYP_UPLD_FILE.
(入力ファイル)リース契約.物件エラーファイル
DATA : IT_ERR_FILE TYPE STANDARD TABLE OF TYP_UPLD_FILE,
WA_ERR_FILE TYPE TYP_UPLD_FILE.
リース契約テーブル登録
DATA : IT_ZTFI0023 TYPE STANDARD TABLE OF ZTFI0023,
WA_ZTFI0023 TYPE ZTFI0023,
IT_FI23_TEMP TYPE STANDARD TABLE OF ZTFI0023,
WA_FI23_TEMP TYPE ZTFI0023.
リース物件テーブル登録
DATA : IT_ZTFI0024 TYPE STANDARD TABLE OF ZTFI0024,
WA_ZTFI0024 TYPE ZTFI0024,
IT_FI24_TEMP TYPE STANDARD TABLE OF ZTFI0024,
WA_FI24_TEMP TYPE ZTFI0024.
*---明細種類用内部テーブル
DATA : IT_ZTFI0025 TYPE STANDARD TABLE OF ZTFI0025,
WA_ZTFI0025 TYPE ZTFI0025.
*---年金現値係数表(月)
DATA : IT_ZTFI0028 TYPE STANDARD TABLE OF ZTFI0028,
WA_ZTFI0028 TYPE ZTFI0028.
*---年金現値係数表[TEMP]
DATA : IT_28_TEMP TYPE STANDARD TABLE OF TYP_ZTFI0028,
WA_28_TEMP TYPE TYP_ZTFI0028.
*---年利計算する為[TEMP]
DATA : IT_NENRI TYPE STANDARD TABLE OF TYP_NENRI_STR,
WA_NENRI TYPE TYP_NENRI_STR.
購買伝票ヘッダ ,購買伝票明細 テーブル
DATA : IT_KOUBAI_DATA TYPE STANDARD TABLE OF TYP_KOUBAI_DATA,
WA_KOUBAI_DATA TYPE TYP_KOUBAI_DATA.
購買伝票データの内部テーブル[TEMP]
DATA : IT_KOUBAI_SUCCESS TYPE STANDARD TABLE OF TYP_KOUBAI_SUCCESS,
WA_KOUBAI_SUCCESS TYPE TYP_KOUBAI_SUCCESS.
*--購買伝票勘定設定内部テーブル
DATA : IT_EKKN TYPE STANDARD TABLE OF TYP_EKKN,
WA_EKKN TYPE TYP_EKKN.
*--請求計画データ取得用内部テーブル
DATA : IT_FPLA TYPE STANDARD TABLE OF TYP_FPLA,
WA_FPLA TYPE TYP_FPLA.
会社コードテーブル定義
DATA : IT_T001 TYPE STANDARD TABLE OF T001-BUKRS,
WA_T001 TYPE T001-BUKRS.
会社コードテーブル定義
DATA : R_BUKRS TYPE RANGE OF T001-BUKRS,
R_BUKRS_LINE LIKE LINE OF R_BUKRS.
*======================================================================
*---変数定義
*======================================================================
DATA : G_FILE TYPE RLGRAP-FILENAME, "ファイル名
G_FNAME TYPE STRING, "ファイルパス
G_NO_DAYS TYPE I,
G_NO_MONTHS TYPE I,
G_NO_YEARS TYPE I,
G_RKIKAN TYPE I, "リース期間
G_RKIKAN_SIHARAI TYPE I, "リース期間
G_TABIX TYPE SY-TABIX,
G_NETPR TYPE EKPO-NETPR, "購買伝票の正味価格
G_NETPR_3 TYPE EKPO-NETPR, "購買伝票の正味価格
G_MENGE TYPE EKPO-MENGE, "購買発注量
G_NENRI TYPE ANLA-LZINS, "年利
G_NENRI_TEMP TYPE ANLA-LZINS, "年利
G_DIFF1 TYPE ZTFI0028-ZZPERCT_01,
G_DIFF2 TYPE ZTFI0028-ZZPERCT_01,
G_ZEITR_ZLRYTH TYPE TVRG-ZEITR. "間接日付決定用期間
*======================================================================
*---フラグ定義
*======================================================================
DATA : FLG_X TYPE C.
*======================================================================
定数定義
*======================================================================
CONSTANTS:
COS_X TYPE C VALUE 'X',
COS_SID TYPE C VALUE '&', " システムID
COS_CLNT TYPE C VALUE '$', " クライアント
COS_JPY(3) TYPE C VALUE 'JPY',
COS_Z1(2) TYPE C VALUE 'Z1',
COS_1 TYPE C VALUE '1',
COS_2 TYPE C VALUE '2',
COS_3 TYPE C VALUE '3',
COS_4 TYPE C VALUE '4',
COS_6 TYPE C VALUE '6',
COS_12(2) TYPE C VALUE '12',
COS_012(3) TYPE N VALUE '012',
COS_31(2) TYPE C VALUE '31',
COS_E1 TYPE ANLA-LZINS VALUE '0.1000',
COS_E10 TYPE ANLA-LZINS VALUE '0.0100',
COS_E100 TYPE ANLA-LZINS VALUE '0.0010',
COS_E1000 TYPE ANLA-LZINS VALUE '0.0001'.
*======================================================================
*---選択画面
*======================================================================
SELECTION-SCREEN BEGIN OF LINE.
*会社コード
SELECTION-SCREEN COMMENT 5(10) TEXT-000.
SELECTION-SCREEN POSITION 18.
SELECT-OPTIONS : S_BUKRS FOR EKKO-BUKRS OBLIGATORY. "会社コード
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK BL1
WITH FRAME TITLE TEXT-001.
*実行オプション
PARAMETERS : RB_SINKI RADIOBUTTON GROUP R1, "新規登録
RB_SAITO RADIOBUTTON GROUP R1, "再登録
RB_TEST RADIOBUTTON GROUP R1. "テスト実行
SELECTION-SCREEN END OF BLOCK BL1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK BL2
WITH FRAME TITLE TEXT-002.
*アップロードファイル
PARAMETERS : P_UNIXUP TYPE RLGRAP-FILENAME, "アップロード(UNIX)
P_PCUP TYPE RLGRAP-FILENAME. "アップロード(PC)
SELECTION-SCREEN SKIP 1.
*エラーファイル
PARAMETERS : P_UNIXER TYPE RLGRAP-FILENAME, "エラー(UNIX)
P_PCER TYPE RLGRAP-FILENAME. "エラー(PC)
SELECTION-SCREEN END OF BLOCK BL2.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
*リース終了の過去データ削除
SELECTION-SCREEN POSITION 3.
PARAMETERS : P_SAKUJO AS CHECKBOX. "リース終了の過去データ削除
SELECTION-SCREEN COMMENT 5(30) TEXT-003 FOR FIELD P_SAKUJO.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*会計年度
SELECTION-SCREEN COMMENT 6(8) TEXT-005.
SELECTION-SCREEN POSITION 21.
PARAMETERS : P_GJAHR TYPE BSEG-GJAHR. "会計年度
SELECTION-SCREEN COMMENT 30(4) TEXT-006.
SELECTION-SCREEN POSITION 36.
PARAMETERS : P_NENMAE TYPE BSEG-GJAHR MODIF ID P.
*年前
SELECTION-SCREEN COMMENT 45(5) TEXT-004.
SELECTION-SCREEN END OF LINE.
*======================================================================
INITIALIZATION
*======================================================================
INITIALIZATION.
* プログラム実行制御
CALL FUNCTION 'Z_ZMA1_PGM_CTRL'
EXPORTING
I_UNAME = SY-UNAME "ユーザ名
I_PROGRAM = SY-CPROG "プログラムID
I_DATE = SY-DATUM. "日付
*=======================================================================
AT SELECTION-SCREEN OUTPUT
*=======================================================================
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'P'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
*======================================================================
AT SELECTION-SCREEN
*======================================================================
AT SELECTION-SCREEN.
会社コードの存在チェック
PERFORM SBUKRS_CHECK.
入力ファイルのチェック
PERFORM F_INPUT_PARAMETER_CHECK.
UNIXファイルパスのチェック
IF NOT P_UNIXUP IS INITIAL.
PERFORM F_CHECK_UNIX_PATH USING P_UNIXUP COS_2
CHANGING G_FILE.
ENDIF.
UNIXエラーファイルパスのチェック
IF NOT P_UNIXER IS INITIAL.
PERFORM F_CHECK_UNIX_PATH USING P_UNIXER COS_1
CHANGING G_FILE.
ENDIF.
会計年度のチェック
PERFORM F_PAST_DATE_CHECK.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCUP.
アップロードファイル名を選択するポップアップ画面
PERFORM F_FILEOPEN_DIALOG CHANGING P_PCUP.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCER.
エラーファイル名を選択するポップアップ画面
PERFORM F_FILEOPEN_DIALOG CHANGING P_PCER.
*=======================================================================
START-OF-SELECTION
*=======================================================================
START-OF-SELECTION.
アップロードファイルの存在チェック
PERFORM F_FILE_EXIST_CHECK.
アップロードファイルの読込む
IF P_PCUP IS NOT INITIAL.
PERFORM F_GUI_UPLOAD USING P_PCUP.
ELSEIF P_UNIXUP IS NOT INITIAL.
PERFORM F_READ_UNIX_FILE USING P_UNIXUP.
ENDIF.
アップロードファイルのデータをCONDENSEする
PERFORM F_CONDENSE.
アップロードファイルのデータの必須チェック
PERFORM F_MANDATORY_CHECK.
アップロードファイルのチェック要領
PERFORM F_UPLOAD_CHECK.
関連チェック
PERFORM F_KANREN_CHECK.
IF RB_TEST <> COS_X.
リース契約.リース物件データの登録
PERFORM F_KEIYAKU_BUKKEN_INSERT.
過去データの削除
PERFORM F_DELETE_PAST_DATA.
ENDIF.
IF NOT P_PCER IS INITIAL AND
NOT IT_ERR_FILE IS INITIAL.
*エラーファイル(PC)をダウンロードする
PERFORM F_ERR_FILE_DOWNLOAD USING P_PCER.
ELSEIF NOT P_UNIXER IS INITIAL AND
NOT IT_ERR_FILE IS INITIAL.
*エラーファイル(UNIX)をダウンロードする
PERFORM F_ERR_UNIX_DOWNLOAD TABLES IT_ERR_FILE
USING WA_ERR_FILE P_UNIXER .
ENDIF.
IF SY-SUBRC = 0.
MESSAGE S000 WITH TEXT-013.
ENDIF.
*&----
*
*& Form SBUKRS_CHECK
*&----
*
会社コードの存在チェック
*----
*
FORM SBUKRS_CHECK .
会社コードの取得
SELECT BUKRS FROM T001 INTO TABLE IT_T001
WHERE BUKRS IN S_BUKRS.
IF SY-SUBRC <> 0.
MESSAGE E014 WITH '会社コード'.
ENDIF.
R_BUKRS_LINE-SIGN = 'I'.
R_BUKRS_LINE-OPTION = 'EQ'.
LOOP AT IT_T001 INTO WA_T001.
R_BUKRS_LINE-LOW = WA_T001.
APPEND R_BUKRS_LINE TO R_BUKRS.
ENDLOOP.
ENDFORM. " SBUKRS_CHECK
*&----
*
*& Form F_INPUT_PARAMETER_CHECK
*&----
*
入力パラメータのチェック
*----
*
FORM F_INPUT_PARAMETER_CHECK .
バックグラウンド実行の時
IF SY-BATCH = 'X'.
IF P_PCUP IS NOT INITIAL OR
P_PCER IS NOT INITIAL.
アップロード(UNIX)ファイルとエラー(UNIX)ファイル両方とも入力してください。
MESSAGE E000(ZNN01) WITH TEXT-011.
ENDIF.
ENDIF.
IF P_UNIXUP IS NOT INITIAL AND
P_PCUP IS NOT INITIAL.
UNIXファイルとローカルPCファイル両方とも入力する事が出来ません
MESSAGE E000(ZNN01) WITH TEXT-007.
ELSEIF P_UNIXER IS NOT INITIAL AND
P_PCER IS NOT INITIAL.
エラー(UNIX)ファイルとエラー(PC)ファイル両方とも入力する事が出来ません。
MESSAGE E000(ZNN01) WITH TEXT-008.
ELSEIF ( P_UNIXUP IS NOT INITIAL AND
P_UNIXER IS INITIAL ) OR
( P_UNIXUP IS INITIAL AND
P_UNIXER IS NOT INITIAL ).
(UNIX)ファイルとエラー(UNIX)ファイル両方とも入力してください。
MESSAGE E000(ZNN01) WITH TEXT-007.
ELSEIF ( P_PCUP IS NOT INITIAL AND
P_PCER IS INITIAL ) OR
( P_PCUP IS INITIAL AND
P_PCER IS NOT INITIAL ) .
アップロード(PC)ファイルとエラー(PC)ファイル両方とも入力してください。
MESSAGE E000(ZNN01) WITH TEXT-009.
ELSEIF P_PCUP IS INITIAL AND
P_UNIXUP IS INITIAL AND
P_PCER IS INITIAL AND
P_UNIXER IS INITIAL .
ファイル名は未入力です。。
MESSAGE E000(ZNN01) WITH TEXT-010.
ENDIF.
サーバファイルは同じ場所である場合
IF P_UNIXUP IS NOT INITIAL AND
P_UNIXER IS NOT INITIAL.
IF P_UNIXUP = P_UNIXER.
アップロード(UNIX)とエラー(UNIX)同じパスで入力できません'
MESSAGE E000(ZNN01) WITH TEXT-012.
ENDIF.
ENDIF.
ローカルファイルは同じ場所である場合
IF P_PCUP IS NOT INITIAL AND
P_PCER IS NOT INITIAL.
IF P_PCUP = P_PCER .
アップロードファイルとエラーファイルの場所は同じです。
MESSAGE E000(ZNN01) WITH TEXT-012.
ENDIF.
ENDIF.
ENDFORM. " F_INPUT_FILE_CHECK
*&----
*
*& Form F_CHECK_UNIX_PATH
*&----
*
UNIXファイルパスのチェック
*----
*
FORM F_CHECK_UNIX_PATH USING L_UNIX_PATH TYPE RLGRAP-FILENAME
L_COS TYPE C
CHANGING L_FNAME TYPE RLGRAP-FILENAME.
UNIXファイルパスの変換
CLEAR : L_FNAME,G_FNAME.
G_FNAME = L_UNIX_PATH.
REPLACE: COS_SID IN G_FNAME WITH SY-SYSID,
COS_CLNT IN G_FNAME WITH SY-MANDT.
CONDENSE G_FNAME NO-GAPS.
UNIXディレクトリアクセス制御
CALL FUNCTION 'Z_ZMA1_UNIX_DIR_CHECK'
EXPORTING
I_FILEPATH = G_FNAME "ファイルパス
I_S_KBN = L_COS "処理区分 1:アウトバウンド 2:インバウンド 3:一時ワーク使用 4:ユーザワーク領域
EXCEPTIONS
H_MODULE_ERROR = 1
MASTER_ERROR = 2
UNIX_PATH_ERROR = 3
PARAMETER_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
L_FNAME = G_FNAME.
ENDFORM. " F_CHECK_UNIX_PATH
*&----
*
*& Form F_PAST_DATE_CHECK
*&----
*
会計年度のチェック
*----
*
FORM F_PAST_DATE_CHECK .
DATA : L_HON_NENDO TYPE NUMC4.
IF SY-TCODE = 'XXXX' AND P_SAKUJO = COS_X.
L_HON_NENDO = SY-DATUM+0(4).
IF P_GJAHR > L_HON_NENDO.
MESSAGE E999 WITH '会計年度が本年度で削除できません'.
ENDIF.
ENDIF.
ENDFORM. " F_PAST_DATE_CHECK
*&----
*
*& Form F_FILEOPEN_DIALOG
*&----
*
ファイル名を選択するコンボボックス表示
*----
*
FORM F_FILEOPEN_DIALOG CHANGING I_FILE TYPE RLGRAP-FILENAME.
DATA : LT_FILETABLE TYPE TABLE OF FILE_TABLE,
LV_RC TYPE I,
LV_USER_ACTION TYPE I.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'アップロードファイル'
DEFAULT_EXTENSION =
DEFAULT_FILENAME =
FILE_FILTER = '.TXT|.TXT'
WITH_ENCODING =
INITIAL_DIRECTORY =
MULTISELECTION =
CHANGING
FILE_TABLE = LT_FILETABLE
RC = LV_RC
USER_ACTION = LV_USER_ACTION
FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC = 0 AND LV_RC > 0 AND
LV_USER_ACTION <> 9.
READ TABLE LT_FILETABLE INTO I_FILE INDEX 1.
ELSE.
*--処理を中止しました
MESSAGE ID 'ZREP01' TYPE 'S'
NUMBER '069'
WITH '処理'
DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " F_FILEOPEN_DIALOG
*&----
*
*& Form F_FILE_EXIST_CHECK
*&----
*
アップロードファイルの存在チェック
*----
*
FORM F_FILE_EXIST_CHECK .
CLEAR FLG_X.
UNIXファイルの存在チェック
IF NOT P_UNIXUP IS INITIAL AND
NOT P_UNIXER IS INITIAL.
PERFORM F_UNIXFILE_EXIST_CHECK.
ENDIF.
アップロードファイル(PC)の存在チェック
IF NOT P_PCUP IS INITIAL AND
NOT P_PCER IS INITIAL.
PERFORM F_PCFILE_EXIST_CHECK USING P_PCUP
'アップロードファイル(PC)'.
FLG_X = COS_X.
PERFORM F_PCFILE_EXIST_CHECK USING P_PCER
'エラーファイル(PC)'.
CLEAR FLG_X.
ENDIF.
ENDFORM. " F_FILE_EXIST_CHECK
*&----
*
*& Form F_UNIXFILE_EXIST_CHECK
*&----
*
UNIXファイルの存在チェック
*----
*
FORM F_UNIXFILE_EXIST_CHECK .
サーバーアップロードファイルの存在チェック
OPEN DATASET P_UNIXUP FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC <> 0.
MESSAGE S014 DISPLAY LIKE 'E'
WITH 'アップロードファイル(UNIX)' P_UNIXUP.
LEAVE LIST-PROCESSING.
ELSE.
CLOSE DATASET P_UNIXUP.
ENDIF.
サーバーエラーファイルの存在チェック
OPEN DATASET P_UNIXER FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC = 0.
MESSAGE S020 DISPLAY LIKE 'E'
WITH 'エラーファイル(UNIX)' P_UNIXER.
LEAVE LIST-PROCESSING.
ELSE.
CLOSE DATASET P_UNIXER.
ENDIF.
ENDFORM. " F_UNIXFILE_EXIST_CHECK
*&----
*
*& Form F_PCFILE_EXIST_CHECK
*&----
*
アップロードファイル(PC)の存在チェック
*----
*
FORM F_PCFILE_EXIST_CHECK USING I_PCFILE TYPE RLGRAP-FILENAME
I_TEXT TYPE ANY.
DATA: L_RESULT TYPE C LENGTH 1,
L_FILEPATH TYPE STRING.
CLEAR: L_RESULT.
L_FILEPATH = I_PCFILE.
正常結果ファイルダウンロード存在チェック
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = L_FILEPATH "ファイルパス
RECEIVING
RESULT = L_RESULT
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ファイルが存在する場合
IF FLG_X = ' '.
IF L_RESULT = COS_X.
EXIT.
ELSE.
MESSAGE S014 DISPLAY LIKE 'E' WITH I_TEXT I_PCFILE.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF FLG_X = COS_X.
IF L_RESULT = COS_X.
MESSAGE S020 DISPLAY LIKE 'E' WITH I_TEXT I_PCFILE.
LEAVE LIST-PROCESSING.
ELSE.
EXIT.
ENDIF.
ENDIF.
CLEAR FLG_X.
ENDFORM. " F_PCFILE_EXIST_CHECK
*&----
*
*& Form F_GUI_UPLOAD
*&----
*
アップロードファイルの読込む
*----
*
FORM F_GUI_UPLOAD USING I_FILENAME
TYPE RLGRAP-FILENAME.
DATA : L_FNAME TYPE STRING.
L_FNAME = I_FILENAME.
IF SY-BATCH = COS_X .
MESSAGE S999(ZLIS1) WITH 'パックグラウンド実行の時に'
'アップロードファイル(PC)は指定できません' .
EXIT .
ENDIF .
*PCファイルのアップロード
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_FNAME "ファイル名
FILETYPE = 'DAT' "ファイルタイプ
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_UPLD_FILE "アップロードファイル
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
MESSAGE S000 DISPLAY LIKE 'E'
WITH 'ファイルアップロード(PC)に失敗しました'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " F_GUI_UPLOAD
*&----
*
*& Form F_READ_UNIX_FILE
*&----
*
UNIXファイルを読込む
*----
*
FORM F_READ_UNIX_FILE USING I_UNIXUP TYPE RLGRAP-FILENAME.
データ宣言
DATA : L_LINE TYPE STRING,
L_LINE1 TYPE STRING,
L_STR TYPE I,
L_LAST TYPE I.
CONSTANTS:CON_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
CLEAR: WA_UPLD_FILE,
L_LINE,
IT_UPLD_FILE.
OPEN DATASET I_UNIXUP FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC <> 0.
MESSAGE S001(ZNN01) DISPLAY LIKE 'E'
WITH I_UNIXUP 'オープン' SY-SUBRC .
LEAVE LIST-PROCESSING.
ENDIF.
DO.
READ DATASET I_UNIXUP INTO L_LINE. "WA_UPLD_FILE.
IF SY-SUBRC <> 0.
EXIT.
ELSE .
CALL METHOD CL_ABAP_LIST_UTILITIES=>DISPLAY_TO_STRUCTURE
EXPORTING
DISPLAY_DATA = L_LINE
IMPORTING
MEMORY_DATA = L_LINE1.
SPLIT L_LINE1 AT CON_TAB INTO WA_UPLD_FILE-ZBUKRS WA_UPLD_FILE-ZLEAFI
WA_UPLD_FILE-ZLVTNR1 WA_UPLD_FILE-ZLVTNR2
WA_UPLD_FILE-ZTXA50_ANLT WA_UPLD_FILE-ZINVNR_ANLA
WA_UPLD_FILE-ZEBELN WA_UPLD_FILE-ZACCT
WA_UPLD_FILE-ZINTEREST WA_UPLD_FILE-ZLEGEB_SOUGAKU
WA_UPLD_FILE-ZLBARW_ALL WA_UPLD_FILE-ZCONTAX
WA_UPLD_FILE-ZKZINW WA_UPLD_FILE-ZQUAN
WA_UPLD_FILE-ZKOSTL WA_UPLD_FILE-ZKOSTLV
WA_UPLD_FILE-ZWERKS_D WA_UPLD_FILE-ZSTORT
WA_UPLD_FILE-ZRAUMNR WA_UPLD_FILE-ZAM_KFZKZ
WA_UPLD_FILE-ZORD41 WA_UPLD_FILE-ZORD42
WA_UPLD_FILE-ZORD43 WA_UPLD_FILE-ZORD44
WA_UPLD_FILE-ZIZWEK WA_UPLD_FILE-ZAM_UMWKZ
WA_UPLD_FILE-ZANLUE WA_UPLD_FILE-ZLVDAT
WA_UPLD_FILE-ZLKDAT WA_UPLD_FILE-ZLEABG
WA_UPLD_FILE-ZLBASW WA_UPLD_FILE-ZLKAUF
WA_UPLD_FILE-ZLETXT WA_UPLD_FILE-ZLEANZ
WA_UPLD_FILE-ZLRYTH WA_UPLD_FILE-ZLVORS
WA_UPLD_FILE-ZLEGEB WA_UPLD_FILE-ZLZINS
WA_UPLD_FILE-ZLBARW WA_UPLD_FILE-ZINVNR_ANLAB
WA_UPLD_FILE-ZANLKL WA_UPLD_FILE-ZTXA50_ANLTB
WA_UPLD_FILE-ZQUAN_B WA_UPLD_FILE-ZLBARW_B
WA_UPLD_FILE-ZMAINTE WA_UPLD_FILE-ZLGADV
WA_UPLD_FILE-ZKOSTL_B WA_UPLD_FILE-ZKOSTLV_B
WA_UPLD_FILE-ZWERKS_DB WA_UPLD_FILE-ZSTORT_B
WA_UPLD_FILE-ZRAUMNR_B WA_UPLD_FILE-ZAM_KFZKZB
WA_UPLD_FILE-ZORD41_B WA_UPLD_FILE-ZORD42_B
WA_UPLD_FILE-ZORD43_B WA_UPLD_FILE-ZORD44_B
WA_UPLD_FILE-ZIZWEK_B WA_UPLD_FILE-ZAM_UMWKZB
WA_UPLD_FILE-ZANLUE_B WA_UPLD_FILE-ZAFASL01
WA_UPLD_FILE-ZNDJAR01 WA_UPLD_FILE-ZNDPER01.
L_STR = STRLEN( WA_UPLD_FILE-ZNDPER01 ).
L_LAST = L_STR - 1.
WA_UPLD_FILE-ZNDPER01+L_LAST(1) = ''.
MOVE-CORRESPONDING WA_UPLD_FILE TO WA_UPLD_TEMP.
APPEND WA_UPLD_TEMP TO IT_UPLD_FILE.
ENDIF.
ENDDO.
CLOSE DATASET I_UNIXUP .
ENDFORM. " F_READ_UNIX_FILE
*&----
*
*& Form F_CONDENSE
*&----
*
アップロードファイルのデータをCONDENSEする
*----
*
FORM F_CONDENSE .
ヘッダを削除する
DELETE IT_UPLD_FILE INDEX 1.
IF IT_UPLD_FILE IS INITIAL.
MESSAGE S000 DISPLAY LIKE 'E'
WITH 'アップロードファイル(PC)にデータが存在ません'.
LEAVE LIST-PROCESSING.
ENDIF.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
CONDENSE WA_UPLD_FILE-ZBUKRS.
CONDENSE WA_UPLD_FILE-ZLEAFI.
CONDENSE WA_UPLD_FILE-ZLVTNR1.
CONDENSE WA_UPLD_FILE-ZLVTNR2.
CONDENSE WA_UPLD_FILE-ZTXA50_ANLT.
CONDENSE WA_UPLD_FILE-ZINVNR_ANLA.
CONDENSE WA_UPLD_FILE-ZEBELN.
CONDENSE WA_UPLD_FILE-ZACCT.
CONDENSE WA_UPLD_FILE-ZINTEREST.
CONDENSE WA_UPLD_FILE-ZLEGEB_SOUGAKU.
CONDENSE WA_UPLD_FILE-ZLBARW_ALL.
CONDENSE WA_UPLD_FILE-ZCONTAX.
CONDENSE WA_UPLD_FILE-ZKZINW.
CONDENSE WA_UPLD_FILE-ZQUAN.
CONDENSE WA_UPLD_FILE-ZKOSTL.
CONDENSE WA_UPLD_FILE-ZKOSTLV.
CONDENSE WA_UPLD_FILE-ZWERKS_D.
CONDENSE WA_UPLD_FILE-ZSTORT.
CONDENSE WA_UPLD_FILE-ZRAUMNR.
CONDENSE WA_UPLD_FILE-ZAM_KFZKZ.
CONDENSE WA_UPLD_FILE-ZORD41.
CONDENSE WA_UPLD_FILE-ZORD42.
CONDENSE WA_UPLD_FILE-ZORD43.
CONDENSE WA_UPLD_FILE-ZORD44.
CONDENSE WA_UPLD_FILE-ZIZWEK.
CONDENSE WA_UPLD_FILE-ZAM_UMWKZ.
CONDENSE WA_UPLD_FILE-ZANLUE.
CONDENSE WA_UPLD_FILE-ZLVDAT.
CONDENSE WA_UPLD_FILE-ZLKDAT.
CONDENSE WA_UPLD_FILE-ZLEABG.
CONDENSE WA_UPLD_FILE-ZLBASW.
CONDENSE WA_UPLD_FILE-ZLKAUF.
CONDENSE WA_UPLD_FILE-ZLETXT.
CONDENSE WA_UPLD_FILE-ZLEANZ.
CONDENSE WA_UPLD_FILE-ZLRYTH.
CONDENSE WA_UPLD_FILE-ZLVORS.
CONDENSE WA_UPLD_FILE-ZLEGEB.
CONDENSE WA_UPLD_FILE-ZLZINS.
CONDENSE WA_UPLD_FILE-ZLBARW.
CONDENSE WA_UPLD_FILE-ZINVNR_ANLAB.
CONDENSE WA_UPLD_FILE-ZANLKL.
CONDENSE WA_UPLD_FILE-ZTXA50_ANLTB.
CONDENSE WA_UPLD_FILE-ZQUAN_B.
CONDENSE WA_UPLD_FILE-ZLBARW_B.
CONDENSE WA_UPLD_FILE-ZMAINTE.
CONDENSE WA_UPLD_FILE-ZLGADV.
CONDENSE WA_UPLD_FILE-ZKOSTL_B.
CONDENSE WA_UPLD_FILE-ZKOSTLV_B.
CONDENSE WA_UPLD_FILE-ZWERKS_DB.
CONDENSE WA_UPLD_FILE-ZSTORT_B.
CONDENSE WA_UPLD_FILE-ZRAUMNR_B.
CONDENSE WA_UPLD_FILE-ZAM_KFZKZB.
CONDENSE WA_UPLD_FILE-ZORD41_B.
CONDENSE WA_UPLD_FILE-ZORD42_B.
CONDENSE WA_UPLD_FILE-ZORD43_B.
CONDENSE WA_UPLD_FILE-ZORD44_B.
CONDENSE WA_UPLD_FILE-ZIZWEK_B.
CONDENSE WA_UPLD_FILE-ZAM_UMWKZB.
CONDENSE WA_UPLD_FILE-ZANLUE_B.
CONDENSE WA_UPLD_FILE-ZAFASL01.
CONDENSE WA_UPLD_FILE-ZNDJAR01.
CONDENSE WA_UPLD_FILE-ZNDPER01.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE.
ENDLOOP.
ENDFORM. " F_CONDENSE
*&----
*
*& Form F_MANDATORY_CHECK
*&----
*
アップロードファイルのデータの必須チェック
*----
*
FORM F_MANDATORY_CHECK .
CLEAR : G_TABIX.
アップロードファイルのデータの必須チェック
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
IF WA_UPLD_FILE-ZBUKRS IS INITIAL OR "会社コード
WA_UPLD_FILE-ZLEAFI IS INITIAL OR "リース会社コード
WA_UPLD_FILE-ZLVTNR1 IS INITIAL OR "契約番号
WA_UPLD_FILE-ZTXA50_ANLT IS INITIAL OR "契約名称
WA_UPLD_FILE-ZINVNR_ANLA IS INITIAL OR "棚卸番号
WA_UPLD_FILE-ZACCT IS INITIAL OR "経理処理区分
WA_UPLD_FILE-ZINTEREST IS INITIAL OR "利息処理区分
WA_UPLD_FILE-ZLEGEB_SOUGAKU IS INITIAL OR "リース料総額
WA_UPLD_FILE-ZCONTAX IS INITIAL OR "消費税額
WA_UPLD_FILE-ZQUAN IS INITIAL OR "全物件数
WA_UPLD_FILE-ZKOSTL IS INITIAL OR "原価センタ
WA_UPLD_FILE-ZLKDAT IS INITIAL OR "通知日付
WA_UPLD_FILE-ZLEABG IS INITIAL OR "開始日付
WA_UPLD_FILE-ZLEANZ IS INITIAL OR "支払回数
WA_UPLD_FILE-ZLRYTH IS INITIAL OR "支払周期
WA_UPLD_FILE-ZLEGEB IS INITIAL. "リース料
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
経理処理区分が賃貸借処理の時下記の項目の存在チェック
IF WA_UPLD_FILE-ZACCT <> COS_2 AND
( WA_UPLD_FILE-ZINVNR_ANLAB IS INITIAL OR "物件番号
WA_UPLD_FILE-ZTXA50_ANLTB IS INITIAL OR "物件名称
WA_UPLD_FILE-ZQUAN_B IS INITIAL OR "物件数
WA_UPLD_FILE-ZLBARW_B IS INITIAL OR "リース資産額
WA_UPLD_FILE-ZKOSTL_B IS INITIAL ). "(物件)原価センタ
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
ENDIF.
ENDLOOP.
ENDFORM. " F_MANDATORY_CHECK
*&----
*
*& Form F_UPLOAD_CHECK
*&----
*
アップロードファイルのチェック要領
*----
*
FORM F_UPLOAD_CHECK.
データ宣言
DATA : L_LIFNR TYPE LFA1-LIFNR, "仕入先または債権者の勘定コード
L_LVTNR TYPE ANLA-LVTNR, "リース契約番号
L_EBELN TYPE EKKO-EBELN, "購買伝票番号
L_AFASL TYPE T090NA-AFASL, "償却キー
L_ANLKL TYPE ANKA-ANLKL, "資産クラス
L_ANLKL_ZERO TYPE CHAR8,
WA_ANLA TYPE ANLA.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ENDIF.
ソート処理
SORT IT_UPLD_FILE BY ZBUKRS ZLEAFI ZLVTNR1 ZLVTNR2.
単体テストと関連項目設定
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE WHERE ZBUKRS IN R_BUKRS.
G_TABIX = SY-TABIX.
*---リース会社コードのチェックと設定
IF NOT WA_UPLD_FILE-ZLEAFI IS INITIAL.
SELECT SINGLE LIFNR FROM LFA1 INTO L_LIFNR WHERE LIFNR = WA_UPLD_FILE-ZLEAFI.
IF SY-SUBRC <> 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---契約番号のチェック
IF NOT WA_UPLD_FILE-ZLVTNR1 IS INITIAL.
L_LVTNR = WA_UPLD_FILE-ZLVTNR1.
CONDENSE L_LVTNR.
IF STRLEN( L_LVTNR ) <= 10.
ALPHA 変換 Exit: 外部->内部
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_LVTNR
IMPORTING
OUTPUT = L_LVTNR.
10桁に変換する
IF STRLEN( L_LVTNR ) > 10.
L_LVTNR = L_LVTNR+5(10).
ENDIF.
WA_UPLD_FILE-ZLVTNR1 = L_LVTNR.
CLEAR L_LVTNR.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLVTNR1.
ELSEIF STRLEN( L_LVTNR ) > 10.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---契約枝番のチェックと設定
IF WA_UPLD_FILE-ZLVTNR2 IS INITIAL.
WA_UPLD_FILE-ZLVTNR2 = 0.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLVTNR2.
ENDIF.
*---棚卸番号のチェック
IF NOT WA_UPLD_FILE-ZINVNR_ANLA IS INITIAL.
CLEAR WA_ANLA.
資産マスタレコードセグメントから棚卸番号を抽出する
SELECT SINGLE * FROM ANLA INTO WA_ANLA
WHERE INVNR = WA_UPLD_FILE-ZINVNR_ANLA.
IF SY-SUBRC = 0 AND WA_ANLA-DEAKT IS INITIAL.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---購買発注伝票番号のチェック
IF NOT WA_UPLD_FILE-ZEBELN IS INITIAL.
SELECT SINGLE EBELN FROM EKKO INTO L_EBELN WHERE EBELN = WA_UPLD_FILE-ZEBELN
AND BSART = 'ZFO'.
IF SY-SUBRC <> 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---経理処理区分のチェックと設定
IF WA_UPLD_FILE-ZACCT <> COS_1 AND
WA_UPLD_FILE-ZACCT <> COS_2.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
*---利息処理区分のチェックと設定
IF WA_UPLD_FILE-ZINTEREST <> COS_1 AND WA_UPLD_FILE-ZINTEREST <> COS_2
AND WA_UPLD_FILE-ZINTEREST <> COS_3.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ELSEIF WA_UPLD_FILE-ZACCT = COS_2.
WA_UPLD_FILE-ZINTEREST = ' '.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZINTEREST.
ENDIF.
*---全リース資産額と年利のチェック
IF WA_UPLD_FILE-ZACCT = 1 AND
( WA_UPLD_FILE-ZINTEREST = 1 OR
WA_UPLD_FILE-ZINTEREST = 3 ) AND
WA_UPLD_FILE-ZLBARW_ALL IS INITIAL AND
WA_UPLD_FILE-ZLZINS IS INITIAL.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
*---支払利息額のチェックと設定
IF WA_UPLD_FILE-ZINTEREST <> COS_3 AND
NOT WA_UPLD_FILE-ZKZINW IS INITIAL.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTL IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE-ZKOSTL.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---責任原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTLV IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE-ZKOSTLV.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---プラントのチェックと設定
IF NOT WA_UPLD_FILE-ZWERKS_D IS INITIAL.
PERFORM F_PLANT_CHECK USING WA_UPLD_FILE-ZWERKS_D.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---場所のチェックと設定
IF NOT WA_UPLD_FILE-ZSTORT IS INITIAL.
PERFORM F_BASHO_CHECK USING WA_UPLD_FILE-ZSTORT WA_UPLD_FILE-ZWERKS_D.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---評価グループ1のチェックと設定
IF NOT WA_UPLD_FILE-ZORD41 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD41 COS_1.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---評価グループ2のチェックと設定
IF NOT WA_UPLD_FILE-ZORD42 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD42 COS_2.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---評価グループ3のチェックと設定
IF NOT WA_UPLD_FILE-ZORD43 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD43 COS_3.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---評価グループ4のチェックと設定
IF NOT WA_UPLD_FILE-ZORD44 IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD44 COS_4.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---設備投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZIZWEK IS INITIAL.
PERFORM F_SETSUBI_CHECK USING WA_UPLD_FILE-ZIZWEK.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---環境投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZAM_UMWKZ IS INITIAL.
PERFORM F_KANKYOU_CHECK USING WA_UPLD_FILE-ZAM_UMWKZ.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---資産グループコードのチェックと設定
IF NOT WA_UPLD_FILE-ZANLUE IS INITIAL.
PERFORM F_SHISAN_GROUP_CHECK USING WA_UPLD_FILE-ZANLUE.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---契約日のチェックと設定
IF NOT WA_UPLD_FILE-ZLVDAT IS INITIAL.
PERFORM F_DATE_CHECK USING WA_UPLD_FILE-ZLVDAT.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---通知日付のチェックと設定
IF NOT WA_UPLD_FILE-ZLKDAT IS INITIAL.
PERFORM F_DATE_CHECK USING WA_UPLD_FILE-ZLKDAT.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---開始日付のチェックと設定
IF NOT WA_UPLD_FILE-ZLEABG IS INITIAL.
PERFORM F_DATE_CHECK USING WA_UPLD_FILE-ZLEABG.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
WA_ZTFI0024-ZZLEYM = WA_UPLD_FILE-ZLEABG+0(6).
ENDIF.
*---支払回数と支払周期のチェックと設定
リース期間の計算(開始日と通知日付から)
PERFORM F_RKIKAN_CHECK USING WA_UPLD_FILE.
IF FLG_X = 'X'.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
*---前払のチェックと設定
IF WA_UPLD_FILE-ZLVORS <> ' ' AND
WA_UPLD_FILE-ZLVORS <> COS_1.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
CHECK WA_UPLD_FILE-ZACCT <> 2.
*---物件番号のチェックと設定
リース物件テーブルに同じリース物件番号がないことのチェック
IF NOT WA_UPLD_FILE-ZINVNR_ANLA IS INITIAL.
SELECT SINGLE ZZINVNR_ANLA FROM ZTFI0024 INTO WA_ZTFI0024-ZZINVNR_ANLA
WHERE ZZINVNR_ANLA = WA_UPLD_FILE-ZINVNR_ANLA AND
ZZBUKRS = WA_UPLD_FILE-ZBUKRS. "AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_UPLD_FILE-ZLEABG+0(6) AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC = 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ELSE.
資産マスタの棚卸番号で同じ番号がないことのチェック
PERFORM F_TANAOROSHI_NO_CHECK USING WA_UPLD_FILE-ZINVNR_ANLA.
IF FLG_X = 'X'.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
*---資産クラスのチェックと設定
IF WA_UPLD_FILE-ZACCT <> COS_2 AND
NOT WA_UPLD_FILE-ZANLKL IS INITIAL.
IF NOT WA_UPLD_FILE-ZANLKL IS INITIAL.
L_ANLKL_ZERO = WA_UPLD_FILE-ZANLKL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = L_ANLKL_ZERO
IMPORTING
OUTPUT = L_ANLKL_ZERO.
WA_UPLD_FILE-ZANLKL = L_ANLKL_ZERO.
SELECT SINGLE ANLKL FROM ANKA INTO L_ANLKL
WHERE ANLKL = WA_UPLD_FILE-ZANLKL.
IF SY-SUBRC <> 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ELSE.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
*---(物件)原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTL_B IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE-ZKOSTL_B.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)責任原価センタのチェックと設定
IF NOT WA_UPLD_FILE-ZKOSTLV_B IS INITIAL.
PERFORM F_GENKA_CHECK USING WA_UPLD_FILE-ZKOSTLV_B.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)プラントのチェックと設定
IF NOT WA_UPLD_FILE-ZWERKS_DB IS INITIAL.
PERFORM F_PLANT_CHECK USING WA_UPLD_FILE-ZWERKS_DB.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)場所のチェックと設定
IF NOT WA_UPLD_FILE-ZSTORT_B IS INITIAL.
PERFORM F_BASHO_CHECK USING WA_UPLD_FILE-ZSTORT_B WA_UPLD_FILE-ZWERKS_DB.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)評価グループ1のチェックと設定
IF NOT WA_UPLD_FILE-ZORD41_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD41_B COS_1.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)評価グループ2のチェックと設定
IF NOT WA_UPLD_FILE-ZORD42_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD42_B COS_2.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---評価グループ3のチェックと設定
IF NOT WA_UPLD_FILE-ZORD43_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD43_B COS_3.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)評価グループ4のチェックと設定
IF NOT WA_UPLD_FILE-ZORD44_B IS INITIAL.
PERFORM F_HYOUKA_GROUP_CHECK USING WA_UPLD_FILE-ZORD44_B COS_4.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)設備投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZIZWEK_B IS INITIAL.
PERFORM F_SETSUBI_CHECK USING WA_UPLD_FILE-ZIZWEK_B.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)環境投資理由のチェックと設定
IF NOT WA_UPLD_FILE-ZAM_UMWKZB IS INITIAL.
PERFORM F_KANKYOU_CHECK USING WA_UPLD_FILE-ZAM_UMWKZB.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---(物件)資産グループコードのチェックと設定
IF NOT WA_UPLD_FILE-ZANLUE_B IS INITIAL.
PERFORM F_SHISAN_GROUP_CHECK USING WA_UPLD_FILE-ZANLUE_B.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---償却キーのチェックと設定
IF NOT WA_UPLD_FILE-ZANLKL IS INITIAL.
SELECT SINGLE AFASL FROM T090NA INTO L_AFASL
WHERE AFASL = WA_UPLD_FILE-ZAFASL01.
IF SY-SUBRC <> 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
*---耐用年数と耐用期間のチェックと設定
IF WA_UPLD_FILE-ZNDJAR01 IS INITIAL AND
WA_UPLD_FILE-ZNDPER01 IS INITIAL.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ELSE.
PERFORM F_CAL_RKIKAN USING WA_UPLD_FILE-ZLEABG
WA_UPLD_FILE-ZLKDAT.
IF WA_UPLD_FILE-ZNDJAR01 <> G_NO_YEARS AND
WA_UPLD_FILE-ZNDPER01 <> G_NO_MONTHS.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
選択画面の同名項目と一致していないレコードをエラーファイルにアップロードする
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE WHERE ZBUKRS NOT IN R_BUKRS.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
ENDLOOP.
DELETE IT_UPLD_FILE WHERE ZBUKRS NOT IN R_BUKRS.
ENDFORM. " F_UPLOAD_CHECK
*&----
*
*& Form F_TANAOROSHI_NO_CHECK
*&----
*
棚卸番号のチェック
*----
*
FORM F_TANAOROSHI_NO_CHECK USING I_WA_UPLD_FILE_INVNR TYPE CHAR25.
データ宣言
DATA : L_INVNR TYPE ANLA-INVNR. "棚卸番号
CLEAR FLG_X.
資産マスタレコードセグメントから棚卸番号を抽出する
SELECT SINGLE INVNR FROM ANLA INTO L_INVNR
WHERE INVNR = I_WA_UPLD_FILE_INVNR.
IF SY-SUBRC = 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_TANAOROSHI_NO_CHECK
*&----
*
*& Form F_GENKA_CHECK CHANGING
*&----
*
原価センタのチェック
*----
*
FORM F_GENKA_CHECK USING I_UPLD_FILE_GENKA TYPE ANY.
データ宣言
DATA : L_KOSTL TYPE CSKS-KOSTL. "原価センタ
CLEAR : FLG_X.
原価センタマスタから原価センタを抽出する
SELECT SINGLE KOSTL FROM CSKS INTO L_KOSTL WHERE KOSTL = I_UPLD_FILE_GENKA.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_GENKA_CHECK CHANGING
*&----
*
*& Form F_PLANT_CHECK
*&----
*
プラントのチェックと設定
*----
*
FORM F_PLANT_CHECK USING I_WA_UPLD_FILE_WERKS TYPE ANY.
データ宣言
DATA : L_WERKS TYPE T001W-WERKS. "プラント
CLEAR FLG_X.
プラント/支店テーブルからプラントを抽出する
SELECT SINGLE WERKS FROM T001W INTO L_WERKS
WHERE WERKS = I_WA_UPLD_FILE_WERKS.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_PLANT_CHECK
*&----
*
*& Form F_BASHO_CHECK
*&----
*
場所のチェックと設定
*----
*
FORM F_BASHO_CHECK USING I_WA_UPLD_FILE_STORT TYPE ANY
I_WA_UPLD_FILE_WERKS TYPE ANY.
データ宣言
DATA : L_STAND TYPE T499S-STAND. "場所
CLEAR FLG_X.
場所テーブルから場所を抽出する
SELECT SINGLE STAND FROM T499S INTO L_STAND
WHERE STAND = I_WA_UPLD_FILE_STORT AND
WERKS = I_WA_UPLD_FILE_WERKS.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_BASHO_CHECK
*&----
*
*& Form F_HYOUKA_GROUP_CHECK
*&----
*
評価グループのチェックと設定
*----
*
FORM F_HYOUKA_GROUP_CHECK USING I_WA_UPLD_FILE_ORD4X TYPE ANY
I_COS TYPE C.
データ宣言
DATA : L_ORD4X TYPE T087-ORD4X. "評価グループ
CLEAR FLG_X.
評価グループテーブルから評価グループを抽出する
SELECT SINGLE ORD4X FROM T087 INTO L_ORD4X WHERE ORDNR = I_COS
AND ORD4X = I_WA_UPLD_FILE_ORD4X.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_HYOUKA_GROUP_CHECK
*&----
*
*& Form F_SETSUBI_CHECK
*&----
*
設備投資理由のチェックと設定
*----
*
FORM F_SETSUBI_CHECK USING I_WA_UPLD_FILE_IZWEK TYPE ANY.
データ宣言
DATA : L_IZWEK TYPE T087I-IZWEK. "設備投資理由
CLEAR FLG_X.
投資理由テーブルから設備投資理由を抽出する
SELECT SINGLE IZWEK FROM T087I INTO L_IZWEK
WHERE IZWEK = I_WA_UPLD_FILE_IZWEK.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_SETSUBI_CHECK
*&----
*
*& Form F_KANKYOU_CHECK
*&----
*
環境投資理由のチェックと設定
*----
*
FORM F_KANKYOU_CHECK USING I_WA_UPLD_FILE_UMWKZ TYPE ANY.
データ宣言
DATA : L_UMWKZ TYPE T087K-UMWKZ. "環境投資理由
CLEAR FLG_X.
環境保護のための投資理由テーブルから環境投資理由を抽出する
SELECT SINGLE UMWKZ FROM T087K INTO L_UMWKZ
WHERE UMWKZ = I_WA_UPLD_FILE_UMWKZ.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_KANKYOU_CHECK
*&----
*
*& Form F_SHISAN_GROUP_CHECK
*&----
*
資産グループコードのチェックと設定
*----
*
FORM F_SHISAN_GROUP_CHECK USING I_WA_UPLD_FILE_ANLUE TYPE ANY.
データ宣言
DATA : L_ANLUE TYPE T087U-ANLUE. "資産グループコード
CLEAR FLG_X.
資産グループから資産グループコードを抽出する
SELECT SINGLE ANLUE FROM T087U INTO L_ANLUE
WHERE ANLUE = I_WA_UPLD_FILE_ANLUE.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_SHISAN_GROUP_CHECK
*&----
*
*& Form F_DATE_CHECK
*&----
*
日付妥当性チェック
*----
*
FORM F_DATE_CHECK USING I_WA_UPLD_FILE_DATE TYPE ANY.
CLEAR FLG_X.
データ宣言
DATA L_DATE TYPE SY-DATUM.
L_DATE = I_WA_UPLD_FILE_DATE.
日付妥当性チェック
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = L_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_DATE_CHECK
*&----
*
*& Form F_RKIKAN_CHECK
*&----
*
リース期間のチェック
*----
*
FORM F_RKIKAN_CHECK USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
データ宣言
DATA : L_LEANZ TYPE TVRG-ZEITR, "支払回数
L_ZEITR_ZLEANZ TYPE TVRG-ZEITR. "間接日付決定用期間
L_ZEITR_ZLRYTH TYPE TVRG-ZEITR. "間接日付決定用期間
CLEAR : FLG_X.
IF NOT I_WA_UPLD_FILE-ZLEANZ IS INITIAL AND
NOT I_WA_UPLD_FILE-ZLRYTH IS INITIAL.
支払回数と支払周期のチェック
SELECT SINGLE ZEITR FROM TVRG INTO L_ZEITR_ZLEANZ
WHERE REGEL = I_WA_UPLD_FILE-ZLEANZ.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
EXIT.
ELSE.
SELECT SINGLE ZEITR FROM TVRG INTO G_ZEITR_ZLRYTH
WHERE REGEL = I_WA_UPLD_FILE-ZLRYTH.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
EXIT.
ENDIF.
ENDIF.
IF G_ZEITR_ZLRYTH = COS_1 OR
G_ZEITR_ZLRYTH = COS_2 OR
G_ZEITR_ZLRYTH = COS_3 OR
G_ZEITR_ZLRYTH = COS_4 OR
G_ZEITR_ZLRYTH = COS_6 OR
G_ZEITR_ZLRYTH = COS_12.
リース期間を計算する
PERFORM F_CAL_RKIKAN USING I_WA_UPLD_FILE-ZLEABG
I_WA_UPLD_FILE-ZLKDAT.
L_LEANZ = ( L_ZEITR_ZLEANZ * 12 ) / G_ZEITR_ZLRYTH.
G_RKIKAN_SIHARAI = G_ZEITR_ZLRYTH * L_LEANZ.
IF G_RKIKAN <> G_RKIKAN_SIHARAI.
FLG_X = COS_X.
ENDIF.
ELSE.
FLG_X = COS_X.
ENDIF.
CLEAR : L_ZEITR_ZLEANZ.
ENDIF.
ENDFORM. " F_RKIKAN_CHECK
*&----
*
*& Form F_CAL_RKIKAN
*&----
*
開始日と通知日付からリース期間の計算
*----
*
FORM F_CAL_RKIKAN USING I_WA_UPLD_FILE_ZLEABG TYPE ANY
I_WA_UPLD_FILE_ZLKDAT TYPE ANY.
変数をクリアする
CLEAR : G_NO_DAYS, G_NO_MONTHS, G_NO_YEARS, G_RKIKAN.
DATA : L_BEGDA TYPE SY-DATUM,
L_ENDDA TYPE SY-DATUM,
L_NO_MONTHS TYPE I.
L_BEGDA = I_WA_UPLD_FILE_ZLEABG.
L_ENDDA = I_WA_UPLD_FILE_ZLKDAT.
2つの日付の間で何年、何か月、何日を計算する
CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
EXPORTING
BEG_DA = L_BEGDA
END_DA = L_ENDDA
IMPORTING
NO_DAY = G_NO_DAYS
NO_MONTH = G_NO_MONTHS
NO_YEAR = G_NO_YEARS
NO_CAL_DAY =
.
IF G_NO_DAYS >= 1.
ADD 1 TO G_NO_MONTHS.
ENDIF.
L_NO_MONTHS = G_NO_YEARS * 12.
G_RKIKAN = L_NO_MONTHS + G_NO_MONTHS.
ENDFORM. " F_CAL_RKIKAN
*&----
*
*& Form F_KANREN_CHECK
*&----
*
関連チェック
*----
*
FORM F_KANREN_CHECK .
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約情報部分は同一リース会社.契約番号.契約枝番で同じことのチェック
PERFORM F_KEIYAKU_DATA_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約.物件資産額のチェック
PERFORM F_SHISANGAKU_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約.物件数のチェック
PERFORM F_BUKKENSUU_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
リース契約.物件総額のチェック
PERFORM F_SOUGAKU_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
購買発注伝票番号のチェック
購買発注伝票の明細のチェック FROM DOWNLOAD PGM
PERFORM F_KOUBAI_MEISAI_CHECK.
ENDIF.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
購買発注伝票とアップロードファイルの項目の存在チェック
PERFORM F_FIELDS_EXIST.
ENDIF.
IF RB_TEST = COS_X.
MESSAGE S999 WITH '処理が終了しました。'.
ENDIF.
ENDFORM. " F_KANREN_CHECK
*&----
*
*& Form F_KEIYAKU_DATA_CHECK
*&----
*
リース契約情報部分は同一リース会社.契約番号.契約枝番で同じことのチェック
*----
*
FORM F_KEIYAKU_DATA_CHECK .
FIELD-SYMBOLS : TYPE ANY.
データ宣言
DATA : L_TABIX TYPE SY-TABIX,
L_SYINDEX TYPE SY-INDEX.
SORT IT_UPLD_FILE BY ZLEAFI ZLVTNR1 ZLVTNR2.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
AT LAST.
CONTINUE.
ENDAT.
L_TABIX = SY-TABIX + 1.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_TEMP INDEX L_TABIX.
リース契約情報部分は同一リース会社.契約番号.契約枝番で同じことのチェック
IF WA_UPLD_FILE-ZLEAFI = WA_UPLD_TEMP-ZLEAFI AND
WA_UPLD_FILE-ZLVTNR1 = WA_UPLD_TEMP-ZLVTNR1 AND
WA_UPLD_FILE-ZLVTNR2 = WA_UPLD_TEMP-ZLVTNR2.
DO 35 TIMES.
IF SY-INDEX = 1.
L_SYINDEX = SY-INDEX.
ELSE.
L_SYINDEX = SY-INDEX + 4.
ENDIF.
ASSIGN COMPONENT L_SYINDEX OF STRUCTURE WA_UPLD_FILE TO .
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE
WITH KEY ZLEAFI = WA_UPLD_TEMP-ZLEAFI
ZLVTNR1 = WA_UPLD_TEMP-ZLVTNR1
ZLVTNR2 = WA_UPLD_TEMP-ZLVTNR2.
IF SY-SUBRC = 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.
ENDFORM. " F_KEIYAKU_DATA_CHECK
*&----
*
*& Form F_SHISANGAKU_CHECK
*&----
*
リース契約の全リース資産額
*----
*
FORM F_SHISANGAKU_CHECK .
データ宣言
DATA : L_TOTAL TYPE ZTFI0024-ZZLBARW, "取得価額累計額
L_LBARW TYPE ZTFI0024-ZZLBARW,
L_LBARW_ALL TYPE ZTFI0023-ZZLBARW_ALL.
CLEAR: L_TOTAL.
リース物件のリース資産額を計算する
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
L_LBARW = WA_UPLD_FILE-ZLBARW_B.
L_TOTAL = L_TOTAL + L_LBARW.
CLEAR L_LBARW.
ENDLOOP.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
L_LBARW_ALL = WA_UPLD_FILE-ZLBARW_ALL.
IF L_LBARW_ALL <> L_TOTAL.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ENDIF.
CLEAR L_LBARW_ALL.
ENDLOOP.
DELETE IT_UPLD_FILE WHERE ZLBARW_ALL <> L_TOTAL.
ENDFORM. " F_SHISANGAKU_CHECK
*&----
*
*& Form F_BUKKENSUU_CHECK
*&----
*
リース契約.物件数のチェック
*----
*
FORM F_BUKKENSUU_CHECK .
データ宣言
DATA : L_TOTAL TYPE ZTFI0024-ZZQUAN,
L_QUANB TYPE ZTFI0024-ZZQUAN,
L_QUAN TYPE ZTFI0023-ZZQUAN.
CLEAR: L_TOTAL.
リース物件の物件数を計算する
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
L_QUANB = WA_UPLD_FILE-ZQUAN_B.
L_TOTAL = L_TOTAL + L_QUANB.
CLEAR : L_QUANB.
ENDLOOP.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE. " WHERE ZQUAN < L_TOTAL.
L_QUAN = WA_UPLD_FILE-ZQUAN.
IF L_QUAN < L_TOTAL.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ENDIF.
CLEAR L_QUAN.
ENDLOOP.
DELETE IT_UPLD_FILE WHERE ZQUAN < L_TOTAL.
ENDFORM. " F_BUKKENSUU_CHECK
*&----
*
*& Form F_SOUGAKU_CHECK
*&----
*
リース契約.物件総額のチェック
*----
*
FORM F_SOUGAKU_CHECK .
データ宣言
DATA : L_TOT_SOUGAKU TYPE ZTFI0023-ZZLEGEB_SOUGAKU,
L_TOT_IJIHYOU TYPE ZTFI0024-ZZMAINTE,
L_ZLEGEB_SOUGAKU TYPE ZTFI0023-ZZLEGEB_SOUGAKU,
L_ZLEGEB TYPE ZTFI0023-ZZLEGEB,
L_ZEITR_ZLEANZ TYPE TVRG-ZEITR,
L_MAINTE TYPE ZTFI0024-ZZMAINTE.
CLEAR: L_TOT_SOUGAKU,
L_TOT_IJIHYOU.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
L_MAINTE = WA_UPLD_FILE-ZMAINTE.
L_TOT_IJIHYOU = L_TOT_IJIHYOU + L_MAINTE.
CLEAR L_MAINTE.
ENDLOOP.
リース契約.物件総額のチェック
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
SELECT SINGLE ZEITR FROM TVRG INTO L_ZEITR_ZLEANZ
WHERE REGEL = WA_UPLD_FILE-ZLEANZ.
IF SY-SUBRC <> 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
L_ZLEGEB = WA_UPLD_FILE-ZLEGEB.
L_TOT_SOUGAKU = ( L_ZLEGEB * L_ZEITR_ZLEANZ ) + L_TOT_IJIHYOU.
L_ZLEGEB_SOUGAKU = WA_UPLD_FILE-ZLEGEB_SOUGAKU.
IF L_ZLEGEB_SOUGAKU <> L_TOT_SOUGAKU.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM. " F_SOUGAKU_CHECK
*&----
*
*& Form F_KOUBAI_MEISAI_CHECK
*&----
*
購買発注伝票の明細のチェック
*----
*
FORM F_KOUBAI_MEISAI_CHECK .
購買伝票ヘッダ ,購買伝票明細 テーブルの取得
PERFORM F_GET_KOUBAI_DATA.
購買伝票勘定設定テーブルの取得
PERFORM F_GET_KANJO_DATA.
請求計画テーブルの取得
PERFORM F_GET_SEIKYUU_DATA.
明細種類用アドオンテーブル
PERFORM F_GET_MEISAI_DATA.
LOOP AT IT_KOUBAI_DATA INTO WA_KOUBAI_DATA.
CLEAR : WA_KOUBAI_SUCCESS, WA_EKKN.
WA_KOUBAI_SUCCESS-BUKRS = WA_KOUBAI_DATA-BUKRS.
WA_KOUBAI_SUCCESS-LIFNR = WA_KOUBAI_DATA-LIFNR.
WA_KOUBAI_SUCCESS-BEDNR = WA_KOUBAI_DATA-BEDNR.
READ TABLE IT_EKKN INTO WA_EKKN
WITH KEY EBELN = WA_KOUBAI_DATA-EBELN
EBELP = WA_KOUBAI_DATA-EBELP .
IF SY-SUBRC = 0.
WA_KOUBAI_SUCCESS-EBELN = WA_EKKN-EBELN.
WA_KOUBAI_SUCCESS-KOSTL = WA_EKKN-KOSTL.
ENDIF.
パターンチェック用サブルーチン
PERFORM PATTERN_CHECK.
IF FLG_X = COS_X.
DELETE IT_KOUBAI_DATA WHERE EBELN = WA_KOUBAI_DATA-EBELN.
DELETE IT_KOUBAI_SUCCESS WHERE EBELN = WA_KOUBAI_DATA-EBELN.
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE
WITH KEY ZEBELN = WA_KOUBAI_DATA-EBELN.
IF SY-SUBRC = 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
CONTINUE.
ENDIF.
READ TABLE IT_ZTFI0025 INTO WA_ZTFI0025
WITH KEY ZBUKRS = WA_KOUBAI_DATA-BUKRS
ZKOSTL = WA_EKKN-KOSTL.
IF SY-SUBRC = 0.
IF WA_ZTFI0025-ZSHURUI <> COS_3.
G_NETPR = G_NETPR + WA_KOUBAI_DATA-NETPR.
ELSEIF WA_ZTFI0025-ZSHURUI = COS_3.
G_NETPR_3 = G_NETPR_3 + WA_KOUBAI_DATA-NETPR.
G_MENGE = G_MENGE + WA_KOUBAI_DATA-MENGE.
ENDIF.
WA_KOUBAI_SUCCESS-NETPR = G_NETPR.
WA_KOUBAI_SUCCESS-NETPR_3 = G_NETPR_3.
WA_KOUBAI_SUCCESS-MENGE = G_MENGE.
ENDIF.
READ TABLE IT_FPLA INTO WA_FPLA
WITH KEY FPLNR = WA_KOUBAI_DATA-FPLNR.
IF SY-SUBRC = 0.
WA_KOUBAI_SUCCESS-BEDAT = WA_FPLA-BEDAT.
WA_KOUBAI_SUCCESS-ENDAT = WA_FPLA-ENDAT.
WA_KOUBAI_SUCCESS-HORIZ = WA_FPLA-HORIZ.
WA_KOUBAI_SUCCESS-PERIO = WA_FPLA-PERIO.
ENDIF.
APPEND WA_KOUBAI_SUCCESS TO IT_KOUBAI_SUCCESS.
ENDLOOP.
明細チェック
PERFORM F_MEISAI_CHECK.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
リース期間のチェック
PERFORM F_RKIKAN_CHECK USING WA_UPLD_FILE.
IF FLG_X = 'X'.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM. " F_KOUBAI_MEISAI_CHECK
*&----
*
*& Form F_GET_KOUBAI_DATA
*&----
*
購買伝票ヘッダ ,購買伝票明細 テーブルの取得
*----
*
FORM F_GET_KOUBAI_DATA .
*--購買伝票ヘッダ ,購買伝票明細 テーブルの取得
SELECT A~BUKRS
A~EBELN
A~LIFNR
B~EBELP
B~BEDNR
B~FPLNR
B~NETPR
B~MENGE
FROM EKKO AS A INNER JOIN EKPO AS B
ON AEBELN = BEBELN
INTO CORRESPONDING FIELDS OF TABLE IT_KOUBAI_DATA
WHERE A~BUKRS IN R_BUKRS .
IF SY-SUBRC <> 0.
*--購買伝票ヘッダ/明細からの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-012.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " F_GET_KOUBAI_DATA
*&----
*
*& Form F_GET_KANJO_DATA
*&----
*
購買伝票勘定設定テーブルの取得
*----
*
FORM F_GET_KANJO_DATA .
*--購買伝票勘定設定テーブルの取得
IF IT_KOUBAI_DATA IS NOT INITIAL.
SELECT EBELN
EBELP
KOSTL
FROM EKKN INTO TABLE IT_EKKN
FOR ALL ENTRIES IN IT_KOUBAI_DATA
WHERE EBELN = IT_KOUBAI_DATA-EBELN
AND EBELP = IT_KOUBAI_DATA-EBELP.
IF SY-SUBRC <> 0.
*--購買伝票勘定設定テーブルからの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-014.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " F_GET_KANJO_DATA
*&----
*
*& Form F_GET_SEIKYUU_DATA
*&----
*
請求計画テーブルの取得
*----
*
FORM F_GET_SEIKYUU_DATA .
*--請求計画テーブルの取得
IF IT_KOUBAI_DATA IS NOT INITIAL.
SELECT FPLNR
BEDAT
ENDAT
HORIZ
PERIO
FROM FPLA INTO TABLE IT_FPLA
FOR ALL ENTRIES IN IT_KOUBAI_DATA
WHERE FPLNR = IT_KOUBAI_DATA-FPLNR.
IF SY-SUBRC <> 0.
*--請求計画テーブルからの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-013.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " F_GET_SEIKYUU_DATA
*&----
*
*& Form F_GET_MEISAI_DATA
*&----
*
明細種類用アドオンテーブル
*----
*
FORM F_GET_MEISAI_DATA .
明細種類用アドオンテーブル
IF IT_EKKN IS NOT INITIAL.
SELECT * FROM ZTFI0025 INTO
TABLE IT_ZTFI0025
FOR ALL ENTRIES IN IT_EKKN
WHERE ZKOSTL = IT_EKKN-KOSTL
AND ZBUKRS IN R_BUKRS.
IF SY-SUBRC <> 0.
*--明細種類用アドオンテーブルからの取得に失敗しました。
MESSAGE S945(ZREP01) DISPLAY LIKE 'E'
WITH TEXT-015.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " F_GET_MEISAI_DATA
*&----
*
*& Form F_MEISAI_CHECK
*&----
*
明細チェック
*----
*
FORM F_MEISAI_CHECK .
FIELD-SYMBOLS : .
DO.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE
WITH KEY ZEBELN = WA_UPLD_FILE-ZEBELN.
IF SY-SUBRC = 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE TABLE IT_UPLD_FILE FROM WA_UPLD_FILE.
ELSE.
EXIT.
ENDIF.
ENDDO.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.
ENDFORM. " F_MEISAI_CHECK
*&----
*
*& Form PATTERN_CHECK
*&----
*
パターンチェック用サブルーチン
*----
*
FORM PATTERN_CHECK .
CLEAR FLG_X.
データ宣言
DATA: L_KBN TYPE I,
L_KBN2 TYPE I.
LOOP AT IT_ZTFI0025 INTO WA_ZTFI0025
WHERE ZKOSTL = WA_EKKN-KOSTL
AND ZBUKRS = WA_KOUBAI_DATA-BUKRS.
L_KBN = WA_ZTFI0025-ZSHURUI.
EXIT.
ENDLOOP.
IF L_KBN IS NOT INITIAL.
LOOP AT IT_ZTFI0025 INTO WA_ZTFI0025
WHERE ZKOSTL = WA_EKKN-KOSTL
AND ZBUKRS = WA_KOUBAI_DATA-BUKRS
AND ZSHURUI <> L_KBN.
L_KBN2 = WA_ZTFI0025-ZSHURUI.
EXIT.
ENDLOOP.
ENDIF.
IF L_KBN2 IS NOT INITIAL.
LOOP AT IT_ZTFI0025 INTO WA_ZTFI0025
WHERE ZKOSTL = WA_EKKN-KOSTL
AND ZBUKRS = WA_KOUBAI_DATA-BUKRS
AND ZSHURUI <> L_KBN
AND ZSHURUI <> L_KBN2.
WA_KOUBAI_DATA-PATTERN = 'A'.
明細行組合せパターンがA.またはB.の時
WA_KOUBAI_TEMP-ZZACCT = '1'. " 1:売買処理
ENDLOOP.
ENDIF.
IF WA_KOUBAI_DATA-PATTERN IS INITIAL.
IF ( L_KBN = 1 AND L_KBN2 = 3 ) OR
( L_KBN = 3 AND L_KBN2 = 1 ).
WA_KOUBAI_DATA-PATTERN = 'B'.
WA_KOUBAI_TEMP-ZZACCT = '1'. "1:売買処理
ELSEIF ( L_KBN = 2 AND L_KBN2 = 3 ) OR
( L_KBN = 3 AND L_KBN2 = 2 ).
WA_KOUBAI_DATA-PATTERN = 'C'.
明細行組合せパターンがC の時
WA_KOUBAI_TEMP-ZZACCT = '2'. " 2:賃貸借処理
ELSE.
WA_KOUBAI_DATA-PATTERN = 'D'. "エラー
FLG_X = 'X'.
ENDIF.
ENDIF.
ENDFORM. " PATTERN_CHECK
*&----
*
*& Form F_FIELDS_EXIST
*&----
*
購買発注伝票とアップロードファイルの項目の存在チェック
*----
*
FORM F_FIELDS_EXIST .
DATA : L_EBELN TYPE CHAR10,
L_BUKRS TYPE CHAR4,
L_LEAFI TYPE CHAR10,
L_BEDNR TYPE EKPO-BEDNR,
L_HORIZ TYPE CHAR2,
L_PERIO TYPE CHAR2,
L_MENGE TYPE EKPO-MENGE,
L_NETPR TYPE EKPO-NETPR,
L_NETPR_3 TYPE EKPO-NETPR,
L_KOSTL TYPE CHAR10.
購買発注伝票とアップロードファイルの項目の存在チェック
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
L_EBELN = WA_UPLD_FILE-ZEBELN.
L_BUKRS = WA_UPLD_FILE-ZBUKRS.
L_LEAFI = WA_UPLD_FILE-ZLEAFI.
L_BEDNR = WA_UPLD_FILE-ZLVTNR1.
L_HORIZ = WA_UPLD_FILE-ZLEANZ.
L_PERIO = WA_UPLD_FILE-ZLRYTH.
L_MENGE = WA_UPLD_FILE-ZQUAN.
L_NETPR = WA_UPLD_FILE-ZLEGEB.
L_NETPR_3 = WA_UPLD_FILE-ZCONTAX.
L_KOSTL = WA_UPLD_FILE-ZKOSTL.
READ TABLE IT_KOUBAI_SUCCESS INTO WA_KOUBAI_SUCCESS
WITH KEY EBELN = L_EBELN
BUKRS = L_BUKRS
LIFNR = L_LEAFI
BEDNR = L_BEDNR
BEDAT = WA_UPLD_FILE-ZLEABG
ENDAT = WA_UPLD_FILE-ZLKDAT
HORIZ = L_HORIZ
PERIO = L_PERIO
MENGE = L_MENGE
NETPR = L_NETPR
NETPR_3 = L_NETPR_3
KOSTL = L_KOSTL.
IF SY-SUBRC <> 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM. " F_FIELDS_EXIST
*&----
*
*& Form F_KEIYAKU_BUKKEN_INSERT
*&----
*
リース契約.リース物件データの登録
*----
*
FORM F_KEIYAKU_BUKKEN_INSERT .
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
年利から現在価値を計算する
PERFORM F_GET_GENZAIKACHI.
ENDIF.
新規登録の時
IF RB_SINKI = COS_X.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
アップロードファイルの内部テーブルからテーブルの内部テーブルを引越する
PERFORM F_UPLD_EXIST_CHECK.
PERFORM F_INSERT_KEIYAKU_BUKKEN.
ENDIF.
ENDIF.
再登録の時
IF RB_SAITO = COS_X.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
PERFORM F_SAITOUROKU.
ENDIF.
ENDIF.
ENDFORM. " F_KEIYAKU_BUKKEN_INSERT
*&----
*
*& Form F_GET_GENZAIKACHI
*&----
*
年利と全リース資産額から現在価値を計算する
*----
*
FORM F_GET_GENZAIKACHI .
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
経理処理区分が1利息区分が1の時 1:売買処理 1:利息法
IF WA_UPLD_FILE-ZACCT = COS_1 AND
WA_UPLD_FILE-ZINTEREST = COS_1.
PERFORM F_KEIRI_RISOKU_KBN1 USING WA_UPLD_FILE.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
経理処理区分が1利息区分が2の時 1:売買処理 2:利子込み法
ELSEIF WA_UPLD_FILE-ZACCT = COS_1 AND
WA_UPLD_FILE-ZINTEREST = COS_2.
WA_UPLD_FILE-ZLBARW = WA_UPLD_FILE-ZLEGEB_SOUGAKU.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLBARW.
経理処理区分が1利息区分が3の時 1:売買処理 3:利息分離定額法
ELSEIF WA_UPLD_FILE-ZACCT = COS_1 AND
WA_UPLD_FILE-ZINTEREST = COS_3.
IF NOT WA_UPLD_FILE-ZKZINW IS INITIAL.
WA_UPLD_FILE-ZLBARW = WA_UPLD_FILE-ZLEGEB_SOUGAKU - WA_UPLD_FILE-ZKZINW.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZLBARW.
ELSE.
PERFORM F_KEIRI_RISOKU_KBN1 USING WA_UPLD_FILE.
IF FLG_X = COS_X.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
WA_UPLD_FILE-ZKZINW = WA_UPLD_FILE-ZLEGEB_SOUGAKU - WA_ZTFI0023-ZZLBARW.
MODIFY IT_UPLD_FILE FROM WA_UPLD_FILE TRANSPORTING ZKZINW.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_GET_GENZAIKACHI
*&----
*
*& Form F_KEIRI_RISOKU_KBN1
*&----
*
経理処理区分と利息処理区分が'1'の場合
*----
*
FORM F_KEIRI_RISOKU_KBN1 USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
CHANGING I_WA_UPLOAD_ZLBARW TYPE ZTFI0023-ZZLBARW.
データ宣言
DATA : L_KEISUU TYPE ZTFI0028-ZZPERCT_01,
L_LBARW TYPE ZTFI0023-ZZLBARW,
L_LBARW_ALL TYPE ZTFI0023-ZZLBARW,
L_LEGEB TYPE ZTFI0023-ZZLEGEB.
CLEAR : FLG_X, G_NENRI_TEMP.
L_LBARW_ALL = I_WA_UPLD_FILE-ZLBARW_ALL.
L_LEGEB = I_WA_UPLD_FILE-ZLEGEB.
IF NOT I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL AND
I_WA_UPLD_FILE-ZLZINS IS INITIAL.
L_KEISUU = L_LBARW_ALL / L_LEGEB.
SELECT * FROM ZTFI0028 INTO TABLE IT_ZTFI0028
WHERE ZZPERIOD = G_RKIKAN AND
ZZLRYTH = G_ZEITR_ZLRYTH.
IF SY-SUBRC <> 0.
FLG_X = COS_X.
EXIT.
ENDIF.
PERFORM F_GET_NENKIN_KEISUU USING L_KEISUU
CHANGING G_NENRI.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E1.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E10.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E100.
PERFORM F_FIND_NENRI USING I_WA_UPLD_FILE
COS_E1000.
I_WA_UPLD_FILE-ZLZINS = G_NENRI_TEMP.
PERFORM F_FIND_GENZAIKACHI USING I_WA_UPLD_FILE
CHANGING L_LBARW.
I_WA_UPLD_FILE-ZLBARW = L_LBARW.
MODIFY IT_UPLD_FILE FROM I_WA_UPLD_FILE INDEX G_TABIX
TRANSPORTING ZLZINS ZLBARW.
ELSEIF NOT I_WA_UPLD_FILE-ZLZINS IS INITIAL AND
I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL.
PERFORM F_FIND_GENZAIKACHI USING I_WA_UPLD_FILE
CHANGING L_LBARW.
I_WA_UPLD_FILE-ZLBARW = L_LBARW.
MODIFY IT_UPLD_FILE FROM I_WA_UPLD_FILE INDEX G_TABIX
TRANSPORTING ZLBARW.
ELSEIF NOT I_WA_UPLD_FILE-ZLZINS IS INITIAL AND
NOT I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL.
PERFORM F_FIND_GENZAIKACHI USING I_WA_UPLD_FILE
CHANGING L_LBARW.
I_WA_UPLD_FILE-ZLBARW_ALL = I_WA_UPLD_FILE-ZLBARW = L_LBARW.
MODIFY IT_UPLD_FILE FROM I_WA_UPLD_FILE INDEX G_TABIX
TRANSPORTING ZLBARW ZLBARW_ALL.
ELSEIF I_WA_UPLD_FILE-ZLZINS IS INITIAL AND
I_WA_UPLD_FILE-ZLBARW_ALL IS INITIAL.
FLG_X = COS_X.
ENDIF.
ENDFORM. " F_KEIRI_RISOKU_KBN1
*&----
*
*& Form F_GET_NENKIN_KEISUU
*&----
*
text
*----
*
FORM F_GET_NENKIN_KEISUU USING I_L_KEISUU TYPE ZTFI0028-ZZPERCT_01
CHANGING I_G_NENRI TYPE ANLA-LZINS.
DATA : L_NENRI1 TYPE ZTFI0028-ZZPERCT_01,
L_NENRI2 TYPE ZTFI0028-ZZPERCT_01.
CLEAR : IT_28_TEMP, L_NENRI1, L_NENRI2.
LOOP AT IT_ZTFI0028 INTO WA_ZTFI0028.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_01.
WA_28_TEMP-ZNENRI = '1'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_02.
WA_28_TEMP-ZNENRI = '2'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_03.
WA_28_TEMP-ZNENRI = '3'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_04.
WA_28_TEMP-ZNENRI = '4'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_05.
WA_28_TEMP-ZNENRI = '5'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_06.
WA_28_TEMP-ZNENRI = '6'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_07.
WA_28_TEMP-ZNENRI = '7'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_08.
WA_28_TEMP-ZNENRI = '8'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_09.
WA_28_TEMP-ZNENRI = '9'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_10.
WA_28_TEMP-ZNENRI = '10'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_11.
WA_28_TEMP-ZNENRI = '11'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_12.
WA_28_TEMP-ZNENRI = '12'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_13.
WA_28_TEMP-ZNENRI = '13'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_14.
WA_28_TEMP-ZNENRI = '14'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_15.
WA_28_TEMP-ZNENRI = '15'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_16.
WA_28_TEMP-ZNENRI = '16'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_17.
WA_28_TEMP-ZNENRI = '17'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_18.
WA_28_TEMP-ZNENRI = '18'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_19.
WA_28_TEMP-ZNENRI = '19'.
APPEND WA_28_TEMP TO IT_28_TEMP.
WA_28_TEMP-ZPERCT = WA_ZTFI0028-ZZPERCT_20.
WA_28_TEMP-ZNENRI = '20'.
APPEND WA_28_TEMP TO IT_28_TEMP.
ENDLOOP.
SORT IT_28_TEMP BY ZPERCT ASCENDING.
LOOP AT IT_28_TEMP INTO WA_28_TEMP WHERE ZPERCT >= I_L_KEISUU .
L_NENRI1 = WA_28_TEMP-ZPERCT.
EXIT.
ENDLOOP.
SORT IT_28_TEMP BY ZPERCT DESCENDING.
LOOP AT IT_28_TEMP INTO WA_28_TEMP WHERE ZPERCT < I_L_KEISUU .
L_NENRI2 = WA_28_TEMP-ZPERCT.
EXIT.
ENDLOOP.
IF L_NENRI1 IS INITIAL.
I_G_NENRI = 1.
ELSEIF L_NENRI2 IS INITIAL.
I_G_NENRI = 20.
ELSEIF L_NENRI1 >= I_L_KEISUU AND I_L_KEISUU > L_NENRI2.
G_DIFF1 = L_NENRI1 - I_L_KEISUU.
G_DIFF2 = I_L_KEISUU - L_NENRI2.
IF G_DIFF1 > G_DIFF2.
READ TABLE IT_28_TEMP INTO WA_28_TEMP WITH KEY ZPERCT = L_NENRI2.
IF SY-SUBRC = 0.
I_G_NENRI = WA_28_TEMP-ZNENRI.
ENDIF.
ELSE.
READ TABLE IT_28_TEMP INTO WA_28_TEMP WITH KEY ZPERCT = L_NENRI1.
IF SY-SUBRC = 0.
I_G_NENRI = WA_28_TEMP-ZNENRI.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " F_GET_NENKIN_KEISUU
*&----
*
*& Form F_FIND_NENRI
*&----
*
年利の計算
*----
*
FORM F_FIND_NENRI USING I2_WA_UPLD_FILE TYPE TYP_UPLD_FILE
I_COS_E TYPE ANLA-LZINS.
DATA : L_UP_ZEN TYPE ZTFI0023-ZZLBARW_ALL,
L_LBARW TYPE ZTFI0023-ZZLBARW_ALL,
L_AMT_DIFF TYPE ZTFI0023-ZZLBARW_ALL,
L_AMT_DIFF1 TYPE ZTFI0023-ZZLBARW_ALL,
L_AMT_DIFF2 TYPE ZTFI0023-ZZLBARW_ALL.
CLEAR : IT_NENRI, WA_NENRI.
L_UP_ZEN = I2_WA_UPLD_FILE-ZLBARW_ALL.
IF NOT G_NENRI_TEMP IS INITIAL.
G_NENRI = G_NENRI_TEMP.
CLEAR G_NENRI_TEMP.
ENDIF.
DO 10 TIMES.
I2_WA_UPLD_FILE-ZLZINS = G_NENRI.
PERFORM F_FIND_GENZAIKACHI USING I2_WA_UPLD_FILE
CHANGING L_LBARW.
WA_NENRI-LZINS = I2_WA_UPLD_FILE-ZLZINS.
WA_NENRI-LBARW = L_LBARW.
APPEND WA_NENRI TO IT_NENRI.
G_NENRI = G_NENRI + I_COS_E.
ENDDO.
CLEAR L_LBARW.
SORT IT_NENRI BY LBARW DESCENDING.
LOOP AT IT_NENRI INTO WA_NENRI WHERE LBARW >= L_UP_ZEN.
IF WA_NENRI-LBARW > L_UP_ZEN.
L_AMT_DIFF1 = WA_NENRI-LBARW - L_UP_ZEN.
ELSE.
L_AMT_DIFF1 = L_UP_ZEN - WA_NENRI-LBARW.
ENDIF.
IF L_AMT_DIFF1 > L_AMT_DIFF2.
L_AMT_DIFF = L_AMT_DIFF2.
ELSE.
L_AMT_DIFF = L_AMT_DIFF1.
ENDIF.
IF SY-TABIX = 1.
L_AMT_DIFF2 = L_AMT_DIFF1.
ELSE.
L_AMT_DIFF2 = L_AMT_DIFF.
ENDIF.
ENDLOOP.
L_LBARW = L_UP_ZEN + L_AMT_DIFF.
READ TABLE IT_NENRI INTO WA_NENRI WITH KEY LBARW = L_LBARW.
IF SY-SUBRC <> 0.
L_LBARW = L_UP_ZEN - L_AMT_DIFF.
READ TABLE IT_NENRI INTO WA_NENRI WITH KEY LBARW = L_LBARW.
G_NENRI_TEMP = WA_NENRI-LZINS.
ELSE.
G_NENRI_TEMP = WA_NENRI-LZINS.
ENDIF.
ENDFORM. " F_FIND_NENRI
*&----
*
*& Form F_UPLD_EXIST_CHECK
*&----
*
アップロードファイルの内部テーブルからテーブルの内部テーブル
*----
*
FORM F_UPLD_EXIST_CHECK.
DATA : L_TABIX TYPE SY-TABIX,
L_SYINDEX TYPE SY-INDEX.
FIELD-SYMBOLS : .
EXIT.
ELSEIF SY-INDEX = 6.
DELETE IT_UPLD_FILE WHERE ZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZLEABG0(6) = WA_UPLD_FILE-ZLEABG0(6) AND
ZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZLVTNR2 = WA_UPLD_FILE-ZLVTNR2 AND
ZINVNR_ANLAB = WA_UPLD_FILE-ZINVNR_ANLAB.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
IF IT_UPLD_FILE IS INITIAL.
EXIT.
ELSE.
LOOP AT IT_UPLD_TEMP INTO WA_UPLD_TEMP.
READ TABLE IT_UPLD_FILE INTO WA_UPLD_FILE WITH KEY ZBUKRS = WA_UPLD_TEMP-ZBUKRS
ZLEAFI = WA_UPLD_TEMP-ZLEAFI
ZLEABG0(6) = WA_UPLD_TEMP-ZLEABG0(6)
ZLVTNR1 = WA_UPLD_TEMP-ZLVTNR1
ZLVTNR2 = WA_UPLD_TEMP-ZLVTNR2
ZINVNR_ANLAB = WA_UPLD_TEMP-ZINVNR_ANLAB.
IF SY-SUBRC <> 0.
PERFORM F_ERR_FILE USING WA_UPLD_TEMP.
DELETE TABLE IT_UPLD_TEMP FROM WA_UPLD_TEMP.
ENDIF.
ENDLOOP.
ENDIF.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
CLEAR G_TABIX.
G_TABIX = SY-TABIX.
リース契約テーブルのデータの存在チェック
SELECT SINGLE ZZLEAFI FROM ZTFI0023 INTO WA_FI23_TEMP
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_UPLD_FILE-ZLEABG+0(6) AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC = 0.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ELSE.
PERFORM F_MOVE_UPLD_FILE USING WA_UPLD_FILE.
APPEND WA_ZTFI0023 TO IT_ZTFI0023.
APPEND WA_ZTFI0024 TO IT_ZTFI0024.
ENDIF.
ENDLOOP.
IF IT_ZTFI0023 IS NOT INITIAL.
SORT IT_ZTFI0023 BY ZZBUKRS ZZLEAFI ZZLEYM ZZLVTNR1 ZZLVTNR2.
DELETE ADJACENT DUPLICATES FROM IT_ZTFI0023.
ENDIF.
ENDFORM. " F_UPLD_EXIST_CHECK
*&----
*
*& Form F_MOVE_UPLD_FILE
*&----
*
アップロードファイルの内部テーブルからテーブルの内部テーブルを引越する
*----
*
FORM F_MOVE_UPLD_FILE USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
WA_ZTFI0023-ZZBUKRS = I_WA_UPLD_FILE-ZBUKRS.
WA_ZTFI0023-ZZLEAFI = I_WA_UPLD_FILE-ZLEAFI.
WA_ZTFI0023-ZZLVTNR1 = I_WA_UPLD_FILE-ZLVTNR1.
WA_ZTFI0023-ZZLVTNR2 = I_WA_UPLD_FILE-ZLVTNR2.
WA_ZTFI0023-ZZTXA50_ANLT = I_WA_UPLD_FILE-ZTXA50_ANLT.
WA_ZTFI0023-ZZINVNR_ANLA = I_WA_UPLD_FILE-ZINVNR_ANLA.
WA_ZTFI0023-ZZEBELN = I_WA_UPLD_FILE-ZEBELN.
WA_ZTFI0023-ZZACCT = I_WA_UPLD_FILE-ZACCT.
WA_ZTFI0023-ZZINTEREST = I_WA_UPLD_FILE-ZINTEREST.
WA_ZTFI0023-ZZLEGEB_SOUGAKU = I_WA_UPLD_FILE-ZLEGEB_SOUGAKU.
WA_ZTFI0023-ZZLBARW_ALL = I_WA_UPLD_FILE-ZLBARW_ALL.
WA_ZTFI0023-ZZCONTAX = I_WA_UPLD_FILE-ZCONTAX.
WA_ZTFI0023-ZZKZINW = I_WA_UPLD_FILE-ZKZINW.
WA_ZTFI0023-ZZQUAN = I_WA_UPLD_FILE-ZQUAN.
WA_ZTFI0023-ZZKOSTL = I_WA_UPLD_FILE-ZKOSTL.
WA_ZTFI0023-ZZKOSTLV = I_WA_UPLD_FILE-ZKOSTLV.
WA_ZTFI0023-ZZWERKS_D = I_WA_UPLD_FILE-ZWERKS_D.
WA_ZTFI0023-ZZSTORT = I_WA_UPLD_FILE-ZSTORT.
WA_ZTFI0023-ZZRAUMNR = I_WA_UPLD_FILE-ZRAUMNR.
WA_ZTFI0023-ZZAM_KFZKZ = I_WA_UPLD_FILE-ZAM_KFZKZ.
WA_ZTFI0023-ZZORD41 = I_WA_UPLD_FILE-ZORD41.
WA_ZTFI0023-ZZORD42 = I_WA_UPLD_FILE-ZORD42.
WA_ZTFI0023-ZZORD43 = I_WA_UPLD_FILE-ZORD43.
WA_ZTFI0023-ZZORD44 = I_WA_UPLD_FILE-ZORD44.
WA_ZTFI0023-ZZIZWEK = I_WA_UPLD_FILE-ZIZWEK.
WA_ZTFI0023-ZZAM_UMWKZ = I_WA_UPLD_FILE-ZAM_UMWKZ.
WA_ZTFI0023-ZZANLUE = I_WA_UPLD_FILE-ZANLUE.
WA_ZTFI0023-ZZLVDAT = I_WA_UPLD_FILE-ZLVDAT.
WA_ZTFI0023-ZZLKDAT = I_WA_UPLD_FILE-ZLKDAT.
WA_ZTFI0023-ZZLEABG = I_WA_UPLD_FILE-ZLEABG.
WA_ZTFI0023-ZZLEYM = I_WA_UPLD_FILE-ZLEABG+0(6).
WA_ZTFI0023-ZZLBASW = I_WA_UPLD_FILE-ZLBASW.
WA_ZTFI0023-ZZLKAUF = I_WA_UPLD_FILE-ZLKAUF.
WA_ZTFI0023-ZZLETXT = I_WA_UPLD_FILE-ZLETXT.
WA_ZTFI0023-ZZLEANZ = I_WA_UPLD_FILE-ZLEANZ.
WA_ZTFI0023-ZZLRYTH = I_WA_UPLD_FILE-ZLRYTH.
WA_ZTFI0023-ZZLVORS = I_WA_UPLD_FILE-ZLVORS.
WA_ZTFI0023-ZZLEGEB = I_WA_UPLD_FILE-ZLEGEB.
WA_ZTFI0023-ZZLZINS = I_WA_UPLD_FILE-ZLZINS.
WA_ZTFI0023-ZZLBARW = I_WA_UPLD_FILE-ZLBARW.
WA_ZTFI0024-ZZBUKRS = I_WA_UPLD_FILE-ZBUKRS.
WA_ZTFI0024-ZZLEAFI = I_WA_UPLD_FILE-ZLEAFI.
WA_ZTFI0024-ZZLEYM = I_WA_UPLD_FILE-ZLEABG+0(6).
WA_ZTFI0024-ZZLVTNR1 = I_WA_UPLD_FILE-ZLVTNR1.
WA_ZTFI0024-ZZLVTNR2 = I_WA_UPLD_FILE-ZLVTNR2.
WA_ZTFI0024-ZZINVNR_ANLA = I_WA_UPLD_FILE-ZINVNR_ANLAB.
WA_ZTFI0024-ZZANLKL = I_WA_UPLD_FILE-ZANLKL.
WA_ZTFI0024-ZZTXA50_ANLT = I_WA_UPLD_FILE-ZTXA50_ANLT.
WA_ZTFI0024-ZZQUAN = I_WA_UPLD_FILE-ZQUAN_B.
WA_ZTFI0024-ZZLBARW = I_WA_UPLD_FILE-ZLBARW_B.
WA_ZTFI0024-ZZMAINTE = I_WA_UPLD_FILE-ZMAINTE.
WA_ZTFI0024-ZZLGADV = I_WA_UPLD_FILE-ZLGADV.
WA_ZTFI0024-ZZKOSTL = I_WA_UPLD_FILE-ZKOSTL_B.
WA_ZTFI0024-ZZKOSTLV = I_WA_UPLD_FILE-ZKOSTLV_B.
WA_ZTFI0024-ZZWERKS_D = I_WA_UPLD_FILE-ZWERKS_DB.
WA_ZTFI0024-ZZSTORT = I_WA_UPLD_FILE-ZSTORT_B.
WA_ZTFI0024-ZZRAUMNR = I_WA_UPLD_FILE-ZRAUMNR_B.
WA_ZTFI0024-ZZAM_KFZKZ = I_WA_UPLD_FILE-ZAM_KFZKZ.
WA_ZTFI0024-ZZORD41 = I_WA_UPLD_FILE-ZORD41_B.
WA_ZTFI0024-ZZORD42 = I_WA_UPLD_FILE-ZORD42_B.
WA_ZTFI0024-ZZORD43 = I_WA_UPLD_FILE-ZORD43_B.
WA_ZTFI0024-ZZORD44 = I_WA_UPLD_FILE-ZORD44_B.
WA_ZTFI0024-ZZIZWEK = I_WA_UPLD_FILE-ZIZWEK_B.
WA_ZTFI0024-ZZAM_UMWKZ = I_WA_UPLD_FILE-ZAM_UMWKZB.
WA_ZTFI0024-ZZANLUE = I_WA_UPLD_FILE-ZANLUE_B.
ENDFORM. " F_MOVE_UPLD_FILE
*&----
*
*& Form F_INSERT_KEIYAKU_BUKKEN
*&----
*
新規登録の時
*----
*
FORM F_INSERT_KEIYAKU_BUKKEN .
データ宣言
DATA : L_CNT TYPE I,
L_CNT1 TYPE I.
CLEAR: L_CNT, L_CNT1.
L_CNT = LINES( IT_ZTFI0023 ).
L_CNT1 = LINES( IT_ZTFI0024 ).
IF L_CNT > 0.
INSERT ZTFI0023 FROM TABLE IT_ZTFI0023.
IF SY-SUBRC = 0.
IF L_CNT1 > 0.
INSERT ZTFI0024 FROM TABLE IT_ZTFI0024.
IF SY-SUBRC = 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
MESSAGE S999 DISPLAY LIKE 'E' WITH 'リース契約.物件データ'
'登録でエラーが発生しました'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " F_INSERT_KEIYAKU_BUKKEN
*&----
*
*& Form F_SAITOUROKU
*&----
*
再登録の時
*----
*
FORM F_SAITOUROKU .
データ宣言
DATA WA_ANLA TYPE ANLA.
CLEAR : WA_FI23_TEMP, FLG_X, IT_UPLD_TEMP, WA_UPLD_TEMP.
LOOP AT IT_UPLD_FILE INTO WA_UPLD_FILE.
G_TABIX = SY-TABIX.
PERFORM F_MOVE_UPLD_FILE USING WA_UPLD_FILE.
「リース契約テーブル」既に存在するチェック
SELECT SINGLE * FROM ZTFI0023 INTO WA_FI23_TEMP
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM ZTFI0024 INTO WA_FI24_TEMP
WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0024-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2 AND
ZZINVNR_ANLA = WA_UPLD_FILE-ZINVNR_ANLA.
IF SY-SUBRC = 0.
SELECT SINGLE * FROM ANLA INTO WA_ANLA
WHERE BUKRS = WA_UPLD_FILE-ZBUKRS AND
ANLN1 = WA_FI23_TEMP-ZZANLN1 AND
ANLN2 = WA_UPLD_FILE-ZLVTNR2.
IF SY-SUBRC <> 0.
DELETE FROM ZTFI0023 WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2.
DELETE FROM ZTFI0024 WHERE ZZBUKRS = WA_UPLD_FILE-ZBUKRS AND
ZZLEAFI = WA_UPLD_FILE-ZLEAFI AND
ZZLEYM = WA_ZTFI0024-ZZLEYM AND
ZZLVTNR1 = WA_UPLD_FILE-ZLVTNR1 AND
ZZLVTNR2 = WA_UPLD_FILE-ZLVTNR2 AND
ZZINVNR_ANLA = WA_UPLD_FILE-ZINVNR_ANLA.
COMMIT WORK.
CLEAR: WA_UPLD_TEMP, FLG_X.
WA_UPLD_TEMP = WA_UPLD_FILE.
APPEND WA_UPLD_TEMP TO IT_UPLD_TEMP.
FLG_X = COS_X.
ELSE.
PERFORM F_ERR_FILE USING WA_UPLD_FILE.
DELETE IT_UPLD_FILE INDEX G_TABIX.
CONTINUE.
ENDIF.
ENDIF.
ELSE.
WA_UPLD_TEMP = WA_UPLD_FILE.
APPEND WA_UPLD_TEMP TO IT_UPLD_TEMP.
FLG_X = COS_X.
ENDIF.
ENDLOOP.
IF FLG_X <> COS_X.
LOOP AT IT_UPLD_TEMP INTO WA_UPLD_TEMP.
WA_UPLD_FILE = WA_UPLD_TEMP.
PERFORM F_MOVE_UPLD_FILE USING WA_UPLD_FILE.
APPEND WA_ZTFI0023 TO IT_ZTFI0023.
APPEND WA_ZTFI0024 TO IT_ZTFI0024.
ENDLOOP.
PERFORM F_INSERT_KEIYAKU_BUKKEN.
ENDIF.
ENDFORM. " F_SAITOUROKU
*&----
*
*& Form F_DELETE_PAST_DATA
*&----
*
過去データの削除
*----
*
FORM F_DELETE_PAST_DATA .
DATA : L_GJAHR TYPE BSEG-GJAHR.
IF SY-TCODE = 'XXXX' AND P_SAKUJO = COS_X.
L_GJAHR = P_GJAHR - P_NENMAE.
リース契約.物件テーブルで過去データの削除
PERFORM F_KEIYAKU_BUKKEN_DELETE USING L_GJAHR.
ENDIF.
ENDFORM. " F_DELETE_PAST_DATA
*&----
*
*& Form F_KEIYAKU_BUKKEN_DELETE
*&----
*
リース契約.物件データの削除
*----
*
FORM F_KEIYAKU_BUKKEN_DELETE USING I_GJAHR TYPE BSEG-GJAHR. "会計年度
データ宣言
DATA : L_DATE TYPE SY-DATUM,
L_DEAKT TYPE ANLA-DEAKT.
SUBTRACT 1 FROM I_GJAHR.
L_DATE+0(4) = I_GJAHR.
L_DATE+4(2) = COS_12.
L_DATE+6(2) = COS_31.
CLEAR IT_ZTFI0023.
SELECT * FROM ZTFI0023 INTO TABLE IT_ZTFI0023 WHERE ZZLKDAT >= L_DATE.
IF SY-SUBRC = 0.
LOOP AT IT_ZTFI0023 INTO WA_ZTFI0023.
SELECT SINGLE DEAKT FROM ANLA INTO L_DEAKT
WHERE ANLN1 = WA_ZTFI0023-ZZANLN1 AND
BUKRS = WA_ZTFI0023-ZZBUKRS AND
ANLN2 = WA_ZTFI0023-ZZANLN2.
IF SY-SUBRC = 0 AND
NOT L_DEAKT IS INITIAL.
IF L_DEAKT <= L_DATE.
DELETE FROM ZTFI0023 WHERE ZZBUKRS = WA_ZTFI0023-ZZBUKRS AND
ZZLEAFI = WA_ZTFI0023-ZZLEAFI AND
ZZLEYM = WA_ZTFI0023-ZZLEYM AND
ZZLVTNR1 = WA_ZTFI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_ZTFI0023-ZZLVTNR2 AND
ZZLKDAT = WA_ZTFI0023-ZZLKDAT.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " F_KEIYAKU_BUKKEN_DELETE
*&----
*
*& Form F_ERR_FILE
*&----
*
エラーファイルに設定
*----
*
FORM F_ERR_FILE USING I_WA_UPLD_FILE TYPE TYP_UPLD_FILE.
WA_ERR_FILE = I_WA_UPLD_FILE.
APPEND WA_ERR_FILE TO IT_ERR_FILE.
ENDFORM. " F_ERR_FILE
*&----
*
*& Form F_ERR_FILE_DOWNLOAD
*&----
*
エラーファイルをダウンロードする
*----
*
FORM F_ERR_FILE_DOWNLOAD USING I_FNAME TYPE RLGRAP-FILENAME.
DATA L_FNAME TYPE STRING.
L_FNAME = I_FNAME.
*--- ダウンロードファイルヘッダ(正常データ)
INSERT TYP_HEADER INTO IT_ERR_FILE INDEX 1.
*--- GUIダウンロード
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = L_FNAME
FILETYPE = 'DAT'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
SHOW_TRANSFER_STATUS = ABAP_TRUE
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = IT_ERR_FILE
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " F_ERR_FILE_DOWNLOAD
*&----
*
*& Form F_ERR_UNIX_DOWNLOAD
*&----
*
エラーファイル(UNIX)をダウンロードする
*----
*
FORM F_ERR_UNIX_DOWNLOAD TABLES I_IT_ERR_FILE LIKE IT_ERR_FILE
USING I_WA_ERR_FILE TYPE TYP_UPLD_FILE
I_P_UNIXER TYPE RLGRAP-FILENAME.
データ宣言
DATA : L_LINE TYPE STRING.
*--- ダウンロードファイルヘッダ(正常データ)
INSERT TYP_HEADER INTO I_IT_ERR_FILE INDEX 1.
OPEN DATASET I_P_UNIXER FOR OUTPUT IN TEXT MODE
ENCODING NON-UNICODE.
IF SY-SUBRC <> 0 .
MESSAGE S001(ZNN01) WITH I_P_UNIXER
'OPEN'
SY-SUBRC
DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF .
LOOP AT I_IT_ERR_FILE INTO I_WA_ERR_FILE.
CLEAR L_LINE .
CALL METHOD CL_ABAP_LIST_UTILITIES=>STRUCTURE_TO_DISPLAY
EXPORTING
MEMORY_DATA = I_WA_ERR_FILE
IMPORTING
DISPLAY_DATA = L_LINE.
TRANSFER L_LINE TO I_P_UNIXER.
ENDLOOP.
CLOSE DATASET I_P_UNIXER.
ENDFORM. " F_ERR_UNIX_DOWNLOAD
*&----
*
*& Form F_FIND_GENZAIKACHI
*&----
*
text
*----
*
FORM F_FIND_GENZAIKACHI USING I2_WA_UPLD_FILE TYPE TYP_UPLD_FILE
CHANGING I_LBARW TYPE ZTFI0023-ZZLBARW.
DATA : L_LEANZ TYPE ANLA-LEANZ, "ZTFI0023-ZZLEANZ,
L_LRYTH TYPE ANLA-LRYTH, "ZTFI0023-ZZLRYTH,
L_LEGEB TYPE ANLA-LEGEB,
L_LVORS TYPE ANLA-LVORS,
L_LZINS TYPE ANLA-LZINS,
L_ZEITR_ZLEANZ TYPE TVRG-ZEITR, "間接日付決定用期間
L_ZEITR_ZLRYTH TYPE TVRG-ZEITR. "間接日付決定用期間
SELECT SINGLE ZEITR FROM TVRG INTO L_ZEITR_ZLEANZ
WHERE REGEL = I2_WA_UPLD_FILE-ZLEANZ.
IF SY-SUBRC <> 0.
FLG_X = 'X'.
EXIT.
ELSE.
SELECT SINGLE ZEITR FROM TVRG INTO L_ZEITR_ZLRYTH
WHERE REGEL = I2_WA_UPLD_FILE-ZLRYTH.
IF SY-SUBRC <> 0.
FLG_X = 'X'.
EXIT.
ENDIF.
ENDIF.
L_LEANZ = G_RKIKAN.
L_LRYTH = L_ZEITR_ZLRYTH.
L_LEGEB = I2_WA_UPLD_FILE-ZLEGEB.
L_LVORS = I2_WA_UPLD_FILE-ZLVORS.
L_LZINS = I2_WA_UPLD_FILE-ZLZINS.
現在値設定
CALL FUNCTION 'AM_BARWERT_ERMITTELN'
EXPORTING
I_ANZBP = COS_012 "通常会計期間数
I_LEANZ = L_LEANZ "リース支払回数
I_LEGEB = L_LEGEB "リース料
I_LRYTH = L_LRYTH "リース支払周期
I_LVORS = L_LVORS "前払
I_LZINS = L_LZINS "リース利息率 (キャピタルリース)
IMPORTING
E_BARWERT = I_LBARW
EXCEPTIONS
BLART_NOT_FOUND = 1
BSCHL_NOT_FOUND = 2
FEHLER_IN_LEASINGDATEN = 3
KTOGR_NOT_FOUND = 4
NICHT_BEBUCHBAR = 5
T009B_NOT_FOUND = 6
T009_NOT_FOUND = 7
T083_NOT_FOUND = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " F_FIND_GENZAIKACHI
10-20-2008 8:05 AM
Hello,
You can try this FM
Take the QUID value from the table APQL. When ever the log is created it is stored in the APQL table by giving inputs created data and other things.
IF QID IS NOT INITIAL.
CALL FUNCTION 'BDC_PROTOCOL_SELECT_QID'
EXPORTING
QUEUE_ID = QID
TABLES
APQLTAB = APQLTAB
EXCEPTIONS
INVALID_DATA = 1
OTHERS = 2
Endif.
11-04-2008 7:59 AM
*======================================================================
*
プログラム・ヘッダー
*======================================================================
*
プログラム 名称 : リース契約・物件資産レポート
プログラム : ZFIR0170
作成日 : 2008/10/06
作成者 : C.SATHEESH(INFOVIEW)
タイプ : REPORT
備考 :
*======================================================================
*
NO 日付 名称 内容
*
*======================================================================
REPORT ZFIR0170
NO STANDARD PAGE HEADING
LINE-COUNT 43
LINE-SIZE 200
MESSAGE-ID ZNN01.
*======================================================================
*---テーブル、構造定義
*======================================================================
TABLES : ZTFI0024, "リース物件テーブル
LFA1, "仕入先マスタ(一般セクション)
ANLZ, "時間依存資産配分
ANLCV, "資産レポート: ANLC 項目プラス各合計
ANLAV, "資産レポート: ANLA 項目プラス原価センタ
ANLB. "償却条件
*======================================================================
*---データ型グループ
*======================================================================
TYPE-POOLS : SLIS.
*======================================================================
*---内部テーブルの構造
*======================================================================
*--会社コードテーブルの構造
TYPES : BEGIN OF TYP_T001,
LAND1 TYPE T001-LAND1, "国コード
KTOPL TYPE T001-KTOPL, "勘定コード表
END OF TYP_T001.
*======================================================================
内部テーブルの構造
*======================================================================
ファイル定義(ダウンロードファイル.リース契約・物件登録ファイル)
TYPES : BEGIN OF TYP_ERR_FILE,
ZBUKRS(10) TYPE C, "会社コード
ZLEAFI(16) TYPE C, "リース会社コード
LEAFI_TXT(35) TYPE C, "リース会社コード名称
ZLEYM(8) TYPE C, "開始年月
ZLVTNR1(15) TYPE C, "契約番号
ZLVTNR2(8) TYPE C, "契約枝番
TXA50_ANLT(50) TYPE C, "契約名称
INVNR(25) TYPE C, "棚卸番号
ZZEBELN(16) TYPE C, "購買発注伝票番号
ZZACCT(12) TYPE C, "経理処理区分
ACCT_TXT(16) TYPE C, "経理処理区分名称
ZZINTEREST(12) TYPE C, "利息処理区分
INTEREST_TXT(16) TYPE C, "利息処理区分名称
ZZLEGEB_SOUGAKU(13) TYPE C, "リース料総額
ZWAERS(10) TYPE C, "通貨コード
ZZLBARW_ALL(14) TYPE C, "全リース資産額
ZZCONTAX(13) TYPE C, "消費税額
ZZKZINW(13) TYPE C, "支払利息額
ZANLN1(18) TYPE C, "リース契約資産番号
ZZANLN2(22) TYPE C, "リース契約資産補助番号
ZZBELNR92_AA(22) TYPE C, "リース債務登録伝票番号
ZZBELNR96_FI(18) TYPE C, "消費税計上伝票番号
ZZBELNR96_AA(18) TYPE C, "消費税登録伝票番号
ZZBELNR97_AA(20) TYPE C, "利息定額登録伝票番号
MENGE_ALL(13) TYPE C, "全物件数
AKTIV(10) TYPE C, "資本化日付
DEAKT(10) TYPE C, "無効化日付
KOSTL(10) TYPE C, "原価センタ
KTEXT(20) TYPE C, "原価センタ名称
KOSTLV(14) TYPE C, "責任原価センタ
KTEXTV(20) TYPE C, "責任原価センタ名称
WERKS(8) TYPE C, "プラント
WERKS_TXT(30) TYPE C, "プラント名称
STORT(10) TYPE C, "場所
STORT_TXT(40) TYPE C, "場所名称
RAUMNR(8) TYPE C, "部屋
KFZKZ(18) TYPE C, "ナンバープレート
XSTIL(8) TYPE C, "資産休止
ORD41(14) TYPE C, "評価グループ 1
ORDTX_1(30) TYPE C, "評価グループ 1名称
ORD42(14) TYPE C, "評価グループ 2
ORDTX_2(30) TYPE C, "評価グループ 2名称
ORD43(14) TYPE C, "評価グループ 3
ORDTX_3(30) TYPE C, "評価グループ 3名称
ORD44(14) TYPE C, "評価グループ 4
ORDTX_4(30) TYPE C, "評価グループ 4名称
IZWEK(12) TYPE C, "設備投資理由
IZWEK_TXT(50) TYPE C, "設備投資理由名称
UMWKZ(12) TYPE C, "環境投資理由
UMWKZ_TXT(50) TYPE C, "環境投資理由名称
ANLUE(18) TYPE C, "資産グループコード
ANLUE_TXT(50) TYPE C, "資産グループコード名称
LVDAT(8) TYPE C, "契約日
LKDAT(8) TYPE C, "通知日付
LEABG(8) TYPE C, "開始日付
LEJAR(18) TYPE C, "リース期間 (年数)
LEPER(18) TYPE C, "リース期間 (期間数)
LEART(12) TYPE C, "リースタイプ
LBASW(13) TYPE C, "基準価額
LKAUF(13) TYPE C, "買取価額
LETXT(50) TYPE C, "追加テキスト
LEANZ(15) TYPE C, "支払回数
LRYTH(8) TYPE C, "支払周期
LVORS(4) TYPE C, "前払
LEGEB(13) TYPE C, "リース料
LZINS(7) TYPE C, "年利
LBARW(13) TYPE C, "現在価値
AFASL_TX(24) TYPE C, "消費税(償却キー)
NDJAR_TX(18) TYPE C, "消費税(耐用年数)
NDPER_TX(18) TYPE C, "消費税(耐用期間)
AFABG_TX(20) TYPE C, "消費税(償却開始日)
GJE_KANSWTX(18) TYPE C, "消費税(取得価額)
NAFA_GJETX(20) TYPE C, "消費税(償却累計額)
AFASL_FR(26) TYPE C, "リース負債利息(償却キー)
NDJAR_FR(26) TYPE C, "リース負債利息(耐用年数)
NDPER_FR(26) TYPE C, "リース負債利息(耐用期間)
AFABG_FR(28) TYPE C, "リース負債利息(償却開始日)
GJE_KANSWFR(26) TYPE C, "リース負債利息(取得価額)
NAFA_GJEFR(28) TYPE C, "リース負債利息(償却累計額)
SZINS_GJE(24) TYPE C, "リース負債利息(利息額)
AFASL_RT(26) TYPE C, "リース利息定額(償却キー)
NDJAR_RT(26) TYPE C, "リース利息定額(耐用年数)
NDPER_RT(26) TYPE C, "リース利息定額(耐用期間)
AFABG_RT(28) TYPE C, "リース利息定額(償却開始日)
GJE_KANSWRT(26) TYPE C, "リース利息定額(取得価額)
NAFA_GJERT(28) TYPE C, "リース利息定額(償却累計額)
ZZANLKL(16) TYPE C, "資産クラス
ANLKL_TXT(50) TYPE C, "資産クラス名称
INVNR4(25) TYPE C, "物件番号
ANLN1(12) TYPE C, "資産番号
LVTNR(12) TYPE C, "資産補助番号
TXT50_ANLT(50) TYPE C, "物件名称
MENGE(13) TYPE C, "物件数
ZLBARW4(13) TYPE C, "リース資産額
ZWAERS4(10) TYPE C, "通貨コード
ZZMAINTE(13) TYPE C, "維持費用額
ZZLGADV(13) TYPE C, "長期前受収益
ZZBELNR01_FI(22) TYPE C, "リース資産登録伝票番号
ZZBELNR98_AA(20) TYPE C, "維持費用登録伝票番号
ZZBELNR99_AA(24) TYPE C, "長期前受収益登録伝票番号
KOSTL4(18) TYPE C, "(物件)原価センタ
KTEXT4(22) TYPE C, "(物件)原価センタ名称
KOSTLV4(22) TYPE C, "(物件)責任原価センタ
KTEXTV4(26) TYPE C, "(物件)責任原価センタ名称
WERKS4(16) TYPE C, "(物件)プラント
WERKS_TXT4(30) TYPE C, "(物件)プラント名称
STORT4(12) TYPE C, "(物件)場所
STORT_TXT4(40) TYPE C, "(物件)場所名称
RAUMNR4(12) TYPE C, "(物件)部屋
KFZKZ4(24) TYPE C, "(物件)ナンバープレート
XSTIL4(16) TYPE C, "(物件)資産休止
ORD414(22) TYPE C, "(物件)評価グループ1
ORDTX_14(30) TYPE C, "(物件)評価グループ 1名称
ORD424(22) TYPE C, "(物件)評価グループ 2
ORDTX_24(30) TYPE C, "(物件)評価グループ 2名称
ORD434(22) TYPE C, "(物件)評価グループ 3
ORDTX_34(30) TYPE C, "(物件)評価グループ 3名称
ORD444(22) TYPE C, "(物件)評価グループ 4
ORDTX_44(30) TYPE C, "(物件)評価グループ 4名称
IZWEK4(20) TYPE C, "(物件)設備投資理由
IZWEK_TXT4(50) TYPE C, "(物件)設備投資理由名称
UMWKZ4(20) TYPE C, "(物件)環境投資理由
UMWKZ_TXT4(50) TYPE C, "(物件)環境投資理由名称
ANLUE4(26) TYPE C, "(物件)資産グループコード
ANLUE_TXT4(50) TYPE C, "(物件)資産グループコード名称
LEAFI(18) TYPE C, "(物件)リース会社
LEAFI_TXT4(22) TYPE C, "(物件)リース会社名称
LVTNR4(16) TYPE C, "(物件)契約番号
AFASL_B(16) TYPE C, "帳簿(償却キー)
NDJAR_B(16) TYPE C, "帳簿(耐用年数)
NDPER_B(16) TYPE C, "帳簿(耐用期間)
AFABG_B(18) TYPE C, "帳簿(償却開始日)
GJE_KANSWB(16) TYPE C, "帳簿(取得価額)
NAFA_GJEB(18) TYPE C, "帳簿(償却累計額)
AFASL_TCD(16) TYPE C, "税法(償却キー)
NDJAR_TCD(16) TYPE C, "税法(耐用年数)
NDPER_TCD(16) TYPE C, "税法(耐用期間)
AFABG_TCD(18) TYPE C, "税法(償却開始日)
GJE_KANSWTCD(16) TYPE C, "税法(取得価額)
NAFA_GJETCD(18) TYPE C, "税法(償却累計額)
AFASL_MC(20) TYPE C, "維持費用(償却キー)
NDJAR_MC(20) TYPE C, "維持費用(耐用年数)
NDPER_MC(20) TYPE C, "維持費用(耐用期間)
AFABG_MC(22) TYPE C, "維持費用(償却開始日)
GJE_KANSWMC(20) TYPE C, "維持費用(取得価額)
NAFA_GJEMC(22) TYPE C, "維持費用(償却累計額)
AFASL_IN(24) TYPE C, "長期前受収益(償却キー)
NDJAR_IN(24) TYPE C, "長期前受収益(耐用年数)
NDPER_IN(24) TYPE C, "長期前受収益(耐用期間)
AFABG_IN(26) TYPE C, "長期前受収益(償却開始日)
GJE_KANSWIN(24) TYPE C, "長期前受収益(取得価額)
NAFA_GJEIN(26) TYPE C, "長期前受収益(償却累計額)
ZERRMSG(100) TYPE C, "エラーメッセージ
END OF TYP_ERR_FILE.
ファイル定義(ダウンロードファイル:エラーメッセージ以外)
TYPES : BEGIN OF TYP_ERR_FILE1,
ZBUKRS(10) TYPE C, "会社コード
ZLEAFI(16) TYPE C, "リース会社コード
LEAFI_TXT(35) TYPE C, "リース会社コード名称
ZLEYM(8) TYPE C, "開始年月
ZLVTNR1(15) TYPE C, "契約番号
ZLVTNR2(8) TYPE C, "契約枝番
TXA50_ANLT(50) TYPE C, "契約名称
INVNR(25) TYPE C, "棚卸番号
ZZEBELN(16) TYPE C, "購買発注伝票番号
ZZACCT(12) TYPE C, "経理処理区分
ACCT_TXT(16) TYPE C, "経理処理区分名称
ZZINTEREST(12) TYPE C, "利息処理区分
INTEREST_TXT(16) TYPE C, "利息処理区分名称
ZZLEGEB_SOUGAKU(13) TYPE C, "リース料総額
ZWAERS(10) TYPE C, "通貨コード
ZZLBARW_ALL(14) TYPE C, "全リース資産額
ZZCONTAX(13) TYPE C, "消費税額
ZZKZINW(13) TYPE C, "支払利息額
ZANLN1(18) TYPE C, "リース契約資産番号
ZZANLN2(22) TYPE C, "リース契約資産補助番号
ZZBELNR92_AA(22) TYPE C, "リース債務登録伝票番号
ZZBELNR96_FI(18) TYPE C, "消費税計上伝票番号
ZZBELNR96_AA(18) TYPE C, "消費税登録伝票番号
ZZBELNR97_AA(20) TYPE C, "利息定額登録伝票番号
MENGE_ALL(13) TYPE C, "全物件数
AKTIV(10) TYPE C, "資本化日付
DEAKT(10) TYPE C, "無効化日付
KOSTL(10) TYPE C, "原価センタ
KTEXT(20) TYPE C, "原価センタ名称
KOSTLV(14) TYPE C, "責任原価センタ
KTEXTV(20) TYPE C, "責任原価センタ名称
WERKS(8) TYPE C, "プラント
WERKS_TXT(30) TYPE C, "プラント名称
STORT(10) TYPE C, "場所
STORT_TXT(40) TYPE C, "場所名称
RAUMNR(8) TYPE C, "部屋
KFZKZ(18) TYPE C, "ナンバープレート
XSTIL(8) TYPE C, "資産休止
ORD41(14) TYPE C, "評価グループ 1
ORDTX_1(30) TYPE C, "評価グループ 1名称
ORD42(14) TYPE C, "評価グループ 2
ORDTX_2(30) TYPE C, "評価グループ 2名称
ORD43(14) TYPE C, "評価グループ 3
ORDTX_3(30) TYPE C, "評価グループ 3名称
ORD44(14) TYPE C, "評価グループ 4
ORDTX_4(30) TYPE C, "評価グループ 4名称
IZWEK(12) TYPE C, "設備投資理由
IZWEK_TXT(50) TYPE C, "設備投資理由名称
UMWKZ(12) TYPE C, "環境投資理由
UMWKZ_TXT(50) TYPE C, "環境投資理由名称
ANLUE(18) TYPE C, "資産グループコード
ANLUE_TXT(50) TYPE C, "資産グループコード名称
LVDAT(8) TYPE C, "契約日
LKDAT(8) TYPE C, "通知日付
LEABG(8) TYPE C, "開始日付
LEJAR(18) TYPE C, "リース期間 (年数)
LEPER(18) TYPE C, "リース期間 (期間数)
LEART(12) TYPE C, "リースタイプ
LBASW(13) TYPE C, "基準価額
LKAUF(13) TYPE C, "買取価額
LETXT(50) TYPE C, "追加テキスト
LEANZ(15) TYPE C, "支払回数
LRYTH(8) TYPE C, "支払周期
LVORS(4) TYPE C, "前払
LEGEB(13) TYPE C, "リース料
LZINS(7) TYPE C, "年利
LBARW(13) TYPE C, "現在価値
AFASL_TX(24) TYPE C, "消費税(償却キー)
NDJAR_TX(18) TYPE C, "消費税(耐用年数)
NDPER_TX(18) TYPE C, "消費税(耐用期間)
AFABG_TX(20) TYPE C, "消費税(償却開始日)
GJE_KANSWTX(18) TYPE C, "消費税(取得価額)
NAFA_GJETX(20) TYPE C, "消費税(償却累計額)
AFASL_FR(26) TYPE C, "リース負債利息(償却キー)
NDJAR_FR(26) TYPE C, "リース負債利息(耐用年数)
NDPER_FR(26) TYPE C, "リース負債利息(耐用期間)
AFABG_FR(28) TYPE C, "リース負債利息(償却開始日)
GJE_KANSWFR(26) TYPE C, "リース負債利息(取得価額)
NAFA_GJEFR(28) TYPE C, "リース負債利息(償却累計額)
SZINS_GJE(24) TYPE C, "リース負債利息(利息額)
AFASL_RT(26) TYPE C, "リース利息定額(償却キー)
NDJAR_RT(26) TYPE C, "リース利息定額(耐用年数)
NDPER_RT(26) TYPE C, "リース利息定額(耐用期間)
AFABG_RT(28) TYPE C, "リース利息定額(償却開始日)
GJE_KANSWRT(26) TYPE C, "リース利息定額(取得価額)
NAFA_GJERT(28) TYPE C, "リース利息定額(償却累計額)
ZZANLKL(16) TYPE C, "資産クラス
ANLKL_TXT(50) TYPE C, "資産クラス名称
INVNR4(25) TYPE C, "物件番号
ANLN1(12) TYPE C, "資産番号
LVTNR(12) TYPE C, "資産補助番号
TXT50_ANLT(50) TYPE C, "物件名称
MENGE(13) TYPE C, "物件数
ZLBARW4(13) TYPE C, "リース資産額
ZWAERS4(10) TYPE C, "通貨コード
ZZMAINTE(13) TYPE C, "維持費用額
ZZLGADV(13) TYPE C, "長期前受収益
ZZBELNR01_FI(22) TYPE C, "リース資産登録伝票番号
ZZBELNR98_AA(20) TYPE C, "維持費用登録伝票番号
ZZBELNR99_AA(24) TYPE C, "長期前受収益登録伝票番号
KOSTL4(18) TYPE C, "(物件)原価センタ
KTEXT4(22) TYPE C, "(物件)原価センタ名称
KOSTLV4(22) TYPE C, "(物件)責任原価センタ
KTEXTV4(26) TYPE C, "(物件)責任原価センタ名称
WERKS4(16) TYPE C, "(物件)プラント
WERKS_TXT4(30) TYPE C, "(物件)プラント名称
STORT4(12) TYPE C, "(物件)場所
STORT_TXT4(40) TYPE C, "(物件)場所名称
RAUMNR4(12) TYPE C, "(物件)部屋
KFZKZ4(24) TYPE C, "(物件)ナンバープレート
XSTIL4(16) TYPE C, "(物件)資産休止
ORD414(22) TYPE C, "(物件)評価グループ1
ORDTX_14(30) TYPE C, "(物件)評価グループ 1名称
ORD424(22) TYPE C, "(物件)評価グループ 2
ORDTX_24(30) TYPE C, "(物件)評価グループ 2名称
ORD434(22) TYPE C, "(物件)評価グループ 3
ORDTX_34(30) TYPE C, "(物件)評価グループ 3名称
ORD444(22) TYPE C, "(物件)評価グループ 4
ORDTX_44(30) TYPE C, "(物件)評価グループ 4名称
IZWEK4(20) TYPE C, "(物件)設備投資理由
IZWEK_TXT4(50) TYPE C, "(物件)設備投資理由名称
UMWKZ4(20) TYPE C, "(物件)環境投資理由
UMWKZ_TXT4(50) TYPE C, "(物件)環境投資理由名称
ANLUE4(26) TYPE C, "(物件)資産グループコード
ANLUE_TXT4(50) TYPE C, "(物件)資産グループコード名称
LEAFI(18) TYPE C, "(物件)リース会社
LEAFI_TXT4(22) TYPE C, "(物件)リース会社名称
LVTNR4(16) TYPE C, "(物件)契約番号
AFASL_B(16) TYPE C, "帳簿(償却キー)
NDJAR_B(16) TYPE C, "帳簿(耐用年数)
NDPER_B(16) TYPE C, "帳簿(耐用期間)
AFABG_B(18) TYPE C, "帳簿(償却開始日)
GJE_KANSWB(16) TYPE C, "帳簿(取得価額)
NAFA_GJEB(18) TYPE C, "帳簿(償却累計額)
AFASL_TCD(16) TYPE C, "税法(償却キー)
NDJAR_TCD(16) TYPE C, "税法(耐用年数)
NDPER_TCD(16) TYPE C, "税法(耐用期間)
AFABG_TCD(18) TYPE C, "税法(償却開始日)
GJE_KANSWTCD(16) TYPE C, "税法(取得価額)
NAFA_GJETCD(18) TYPE C, "税法(償却累計額)
AFASL_MC(20) TYPE C, "維持費用(償却キー)
NDJAR_MC(20) TYPE C, "維持費用(耐用年数)
NDPER_MC(20) TYPE C, "維持費用(耐用期間)
AFABG_MC(22) TYPE C, "維持費用(償却開始日)
GJE_KANSWMC(20) TYPE C, "維持費用(取得価額)
NAFA_GJEMC(22) TYPE C, "維持費用(償却累計額)
AFASL_IN(24) TYPE C, "長期前受収益(償却キー)
NDJAR_IN(24) TYPE C, "長期前受収益(耐用年数)
NDPER_IN(24) TYPE C, "長期前受収益(耐用期間)
AFABG_IN(26) TYPE C, "長期前受収益(償却開始日)
GJE_KANSWIN(24) TYPE C, "長期前受収益(取得価額)
NAFA_GJEIN(26) TYPE C, "長期前受収益(償却累計額)
END OF TYP_ERR_FILE1.
ダウンロードファイルヘッダ
DATA : BEGIN OF TYP_ERR_HEADER,
ZBUKRS(10) TYPE C VALUE '会社コード',
ZLEAFI(16) TYPE C VALUE 'リース会社コード',
LEAFI_TXT(35) TYPE C VALUE 'リース会社コード名称',
ZLEYM(8) TYPE C VALUE '開始年月',
ZLVTNR1(15) TYPE C VALUE '契約番号',
ZLVTNR2(8) TYPE C VALUE '契約枝番',
ZZTXA50_ANLT(50) TYPE C VALUE '契約名称',
INVNR(25) TYPE C VALUE '棚卸番号',
ZZEBELN(16) TYPE C VALUE '購買発注伝票番号',
ZZACCT(12) TYPE C VALUE '経理処理区分',
ACCT_TXT(16) TYPE C VALUE '経理処理区分名称',
ZZINTEREST(12) TYPE C VALUE '利息処理区分',
INTEREST_TXT(16) TYPE C VALUE '利息処理区分名称',
ZZLEGEB_SOUGAKU(13) TYPE C VALUE 'リース料総額',
ZWAERS(10) TYPE C VALUE '通貨コード',
ZZLBARW_ALL(14) TYPE C VALUE '全リース資産額',
ZZCONTAX(13) TYPE C VALUE '消費税額',
ZZKZINW(13) TYPE C VALUE '支払利息額',
ZANLN1(18) TYPE C VALUE 'リース契約資産番号',
ZZANLN2(22) TYPE C VALUE 'リース契約資産補助番号',
ZZBELNR92_AA(22) TYPE C VALUE 'リース債務登録伝票番号',
ZZBELNR96_FI(18) TYPE C VALUE '消費税計上伝票番号',
ZZBELNR96_AA(18) TYPE C VALUE '消費税登録伝票番号',
ZZBELNR97_AA(20) TYPE C VALUE '利息定額登録伝票番号',
MENGE_ALL(13) TYPE C VALUE '全物件数',
AKTIV(10) TYPE C VALUE '資本化日付',
DEAKT(10) TYPE C VALUE '無効化日付',
KOSTL(10) TYPE C VALUE '原価センタ',
KTEXT(20) TYPE C VALUE '原価センタ名称',
KOSTLV(14) TYPE C VALUE '責任原価センタ',
KTEXTV(20) TYPE C VALUE '責任原価センタ名称',
WERKS(8) TYPE C VALUE 'プラント',
WERKS_TXT(30) TYPE C VALUE 'プラント名称',
STORT(10) TYPE C VALUE '場所',
STORT_TXT(40) TYPE C VALUE '場所名称',
RAUMNR(8) TYPE C VALUE '部屋',
KFZKZ(18) TYPE C VALUE 'ナンバープレート',
XSTIL(8) TYPE C VALUE '資産休止',
ORD41(14) TYPE C VALUE '評価グループ1',
ORDTX_1(30) TYPE C VALUE '評価グループ1名称',
ORD42(14) TYPE C VALUE '評価グループ2',
ORDTX_2(30) TYPE C VALUE '評価グループ2名称',
ORD43(14) TYPE C VALUE '評価グループ3',
ORDTX_3(30) TYPE C VALUE '評価グループ3名称',
ORD44(14) TYPE C VALUE '評価グループ4',
ORDTX_4(30) TYPE C VALUE '評価グループ4名称',
IZWEK(12) TYPE C VALUE '設備投資理由',
IZWEK_TXT(50) TYPE C VALUE '設備投資理由名称',
UMWKZ(12) TYPE C VALUE '環境投資理由',
UMWKZ_TXT(50) TYPE C VALUE '環境投資理由名称',
ANLUE(18) TYPE C VALUE '資産グループコード',
ANLUE_TXT(50) TYPE C VALUE '資産グループコード名称',
LVDAT(8) TYPE C VALUE '契約日',
LKDAT(8) TYPE C VALUE '通知日付',
LEABG(8) TYPE C VALUE '開始日付',
LEJAR(18) TYPE C VALUE 'リース期間(年数)',
LEPER(18) TYPE C VALUE 'リース期間(月数)',
LEART(12) TYPE C VALUE 'リースタイプ',
LBASW(13) TYPE C VALUE '基準価額',
LKAUF(13) TYPE C VALUE '買取価額',
LETXT(50) TYPE C VALUE '追加テキスト',
LEANZ(15) TYPE C VALUE '支払回数',
LRYTH(8) TYPE C VALUE '支払周期',
LVORS(4) TYPE C VALUE '前払',
LEGEB(13) TYPE C VALUE 'リース料',
LZINS(7) TYPE C VALUE '年利',
LBARW(13) TYPE C VALUE '現在価値',
AFASL_TX(24) TYPE C VALUE '消費税(償却キー)',
NDJAR_TX(18) TYPE C VALUE '消費税(耐用年数)',
NDPER_TX(18) TYPE C VALUE '消費税(耐用期間)',
AFABG_TX(20) TYPE C VALUE '消費税(償却開始日)',
GJE_KANSWTX(18) TYPE C VALUE '消費税(取得価額)',
NAFA_GJETX(20) TYPE C VALUE '消費税(償却累計額)',
AFASL_FR(26) TYPE C VALUE 'リース負債利息(償却キー)',
NDJAR_FR(26) TYPE C VALUE 'リース負債利息(耐用年数)',
NDPER_FR(26) TYPE C VALUE 'リース負債利息(耐用期間)',
AFABG_FR(28) TYPE C VALUE 'リース負債利息(償却開始日)',
GJE_KANSWFR(26) TYPE C VALUE 'リース負債利息(取得価額)',
NAFA_GJEFR(28) TYPE C VALUE 'リース負債利息(償却累計額)',
SZINS_GJE(24) TYPE C VALUE 'リース負債利息(利息額)',
AFASL_RT(26) TYPE C VALUE 'リース利息定額(償却キー)',
NDJAR_RT(26) TYPE C VALUE 'リース利息定額(耐用年数)',
NDPER_RT(26) TYPE C VALUE 'リース利息定額(耐用期間)',
AFABG_RT(28) TYPE C VALUE 'リース利息定額(償却開始日)',
GJE_KANSWRT(26) TYPE C VALUE 'リース利息定額(取得価額)',
NAFA_GJERT(28) TYPE C VALUE 'リース利息定額(償却累計額)',
ZZANLKL(16) TYPE C VALUE '資産クラス',
ANLKL_TXT(50) TYPE C VALUE '資産クラス名称',
INVNR4(25) TYPE C VALUE '物件番号(棚卸番号)',
ANLN1(12) TYPE C VALUE '資産番号',
LVTNR(12) TYPE C VALUE '補助番号',
TXT50_ANLT(50) TYPE C VALUE '物件名称',
MENGE(13) TYPE C VALUE '物件数',
ZLBARW4(13) TYPE C VALUE 'リース資産額',
ZWAERS4(10) TYPE C VALUE '通貨コード',
ZZMAINTE(13) TYPE C VALUE '維持費用額',
ZZLGADV(13) TYPE C VALUE '長期前受収益',
ZZBELNR01_FI(22) TYPE C VALUE 'リース資産登録伝票番号',
ZZBELNR98_AA(20) TYPE C VALUE '維持費用登録伝票番号',
ZZBELNR99_AA(24) TYPE C VALUE '長期前受収益登録伝票番号',
KOSTL4(18) TYPE C VALUE '(物件)原価センタ',
KTEXT4(22) TYPE C VALUE '(物件)原価センタ名称',
KOSTLV4(22) TYPE C VALUE '(物件)責任原価センタ',
KTEXTV4(26) TYPE C VALUE '(物件)責任原価センタ名称',
WERKS4(16) TYPE C VALUE '(物件)プラント',
WERKS_TXT4(30) TYPE C VALUE '(物件)プラント名称',
STORT4(12) TYPE C VALUE '(物件)場所',
STORT_TXT4(40) TYPE C VALUE '(物件)場所名称',
RAUMNR4(12) TYPE C VALUE '(物件)部屋',
KFZKZ4(26) TYPE C VALUE '(物件)ナンバープレート',
XSTIL4(16) TYPE C VALUE '(物件)資産休止',
ORD414(22) TYPE C VALUE '(物件)評価グループ1',
ORDTX_14(30) TYPE C VALUE '(物件)評価グループ1名称',
ORD424(22) TYPE C VALUE '(物件)評価グループ2',
ORDTX_24(30) TYPE C VALUE '(物件)評価グループ2名称',
ORD434(22) TYPE C VALUE '(物件)評価グループ3',
ORDTX_34(30) TYPE C VALUE '(物件)評価グループ3名称',
ORD444(22) TYPE C VALUE '(物件)評価グループ4',
ORDTX_44(30) TYPE C VALUE '(物件)評価グループ4名称',
IZWEK4(20) TYPE C VALUE '(物件)設備投資理由',
IZWEK_TXT4(50) TYPE C VALUE '(物件)設備投資理由名称',
UMWKZ4(20) TYPE C VALUE '(物件)環境投資理由',
UMWKZ_TXT4(50) TYPE C VALUE '(物件)環境投資理由名称',
ANLUE4(26) TYPE C VALUE '(物件)資産グループコード',
ANLUE_TXT4(50) TYPE C VALUE '(物件)資産グループコード名称',
LEAFI(18) TYPE C VALUE '(物件)リース会社',
LEAFI_TXT4(22) TYPE C VALUE '(物件)リース会社名称',
LVTNR4(16) TYPE C VALUE '(物件)契約番号',
AFASL_B(16) TYPE C VALUE '帳簿(償却キー)',
NDJAR_B(16) TYPE C VALUE '帳簿(耐用年数)',
NDPER_B(16) TYPE C VALUE '帳簿(耐用期間)',
AFABG_B(18) TYPE C VALUE '帳簿(償却開始日)',
GJE_KANSWB(16) TYPE C VALUE '帳簿(取得価額)',
NAFA_GJEB(18) TYPE C VALUE '帳簿(償却累計額)',
AFASL_TCD(16) TYPE C VALUE '税法(償却キー)',
NDJAR_TCD(16) TYPE C VALUE '税法(耐用年数)',
NDPER_TCD(16) TYPE C VALUE '税法(耐用期間)',
AFABG_TCD(18) TYPE C VALUE '税法(償却開始日)',
GJE_KANSWTCD(16) TYPE C VALUE '税法(取得価額)',
NAFA_GJETCD(18) TYPE C VALUE '税法(償却累計額)',
AFASL_MC(20) TYPE C VALUE '維持費用(償却キー)',
NDJAR_MC(20) TYPE C VALUE '維持費用(耐用年数)',
NDPER_MC(20) TYPE C VALUE '維持費用(耐用期間)',
AFABG_MC(22) TYPE C VALUE '維持費用(償却開始日)',
GJE_KANSWMC(20) TYPE C VALUE '維持費用(取得価額)',
NAFA_GJEMC(22) TYPE C VALUE '維持費用(償却累計額)',
AFASL_IN(24) TYPE C VALUE '長期前受収益(償却キー)',
NDJAR_IN(24) TYPE C VALUE '長期前受収益(耐用年数)',
NDPER_IN(24) TYPE C VALUE '長期前受収益(耐用期間)',
AFABG_IN(26) TYPE C VALUE '長期前受収益(償却開始日)',
GJE_KANSWIN(24) TYPE C VALUE '長期前受収益(取得価額)',
NAFA_GJEIN(26) TYPE C VALUE '長期前受収益(償却累計額)',
ZERRMSG(100) TYPE C VALUE 'メッセージ',
END OF TYP_ERR_HEADER.
ダウンロードファイルヘッダ[エラーメッセージ以外]
DATA : BEGIN OF TYP_ERR_HEADER1,
ZBUKRS(10) TYPE C VALUE '会社コード',
ZLEAFI(16) TYPE C VALUE 'リース会社コード',
LEAFI_TXT(35) TYPE C VALUE 'リース会社コード名称',
ZLEYM(8) TYPE C VALUE '開始年月',
ZLVTNR1(15) TYPE C VALUE '契約番号',
ZLVTNR2(8) TYPE C VALUE '契約枝番',
ZZTXA50_ANLT(50) TYPE C VALUE '契約名称',
INVNR(25) TYPE C VALUE '棚卸番号',
ZZEBELN(16) TYPE C VALUE '購買発注伝票番号',
ZZACCT(12) TYPE C VALUE '経理処理区分',
ACCT_TXT(16) TYPE C VALUE '経理処理区分名称',
ZZINTEREST(12) TYPE C VALUE '利息処理区分',
INTEREST_TXT(16) TYPE C VALUE '利息処理区分名称',
ZZLEGEB_SOUGAKU(13) TYPE C VALUE 'リース料総額',
ZWAERS(10) TYPE C VALUE '通貨コード',
ZZLBARW_ALL(14) TYPE C VALUE '全リース資産額',
ZZCONTAX(13) TYPE C VALUE '消費税額',
ZZKZINW(13) TYPE C VALUE '支払利息額',
ZANLN1(18) TYPE C VALUE 'リース契約資産番号',
ZZANLN2(22) TYPE C VALUE 'リース契約資産補助番号',
ZZBELNR92_AA(22) TYPE C VALUE 'リース債務登録伝票番号',
ZZBELNR96_FI(18) TYPE C VALUE '消費税計上伝票番号',
ZZBELNR96_AA(18) TYPE C VALUE '消費税登録伝票番号',
ZZBELNR97_AA(20) TYPE C VALUE '利息定額登録伝票番号',
MENGE_ALL(13) TYPE C VALUE '全物件数',
AKTIV(10) TYPE C VALUE '資本化日付',
DEAKT(10) TYPE C VALUE '無効化日付',
KOSTL(10) TYPE C VALUE '原価センタ',
KTEXT(20) TYPE C VALUE '原価センタ名称',
KOSTLV(14) TYPE C VALUE '責任原価センタ',
KTEXTV(20) TYPE C VALUE '責任原価センタ名称',
WERKS(8) TYPE C VALUE 'プラント',
WERKS_TXT(30) TYPE C VALUE 'プラント名称',
STORT(10) TYPE C VALUE '場所',
STORT_TXT(40) TYPE C VALUE '場所名称',
RAUMNR(8) TYPE C VALUE '部屋',
KFZKZ(18) TYPE C VALUE 'ナンバープレート',
XSTIL(8) TYPE C VALUE '資産休止',
ORD41(14) TYPE C VALUE '評価グループ1',
ORDTX_1(30) TYPE C VALUE '評価グループ1名称',
ORD42(14) TYPE C VALUE '評価グループ2',
ORDTX_2(30) TYPE C VALUE '評価グループ2名称',
ORD43(14) TYPE C VALUE '評価グループ3',
ORDTX_3(30) TYPE C VALUE '評価グループ3名称',
ORD44(14) TYPE C VALUE '評価グループ4',
ORDTX_4(30) TYPE C VALUE '評価グループ4名称',
IZWEK(12) TYPE C VALUE '設備投資理由',
IZWEK_TXT(50) TYPE C VALUE '設備投資理由名称',
UMWKZ(12) TYPE C VALUE '環境投資理由',
UMWKZ_TXT(50) TYPE C VALUE '環境投資理由名称',
ANLUE(18) TYPE C VALUE '資産グループコード',
ANLUE_TXT(50) TYPE C VALUE '資産グループコード名称',
LVDAT(8) TYPE C VALUE '契約日',
LKDAT(8) TYPE C VALUE '通知日付',
LEABG(8) TYPE C VALUE '開始日付',
LEJAR(18) TYPE C VALUE 'リース期間(年数)',
LEPER(18) TYPE C VALUE 'リース期間(月数)',
LEART(12) TYPE C VALUE 'リースタイプ',
LBASW(13) TYPE C VALUE '基準価額',
LKAUF(13) TYPE C VALUE '買取価額',
LETXT(50) TYPE C VALUE '追加テキスト',
LEANZ(15) TYPE C VALUE '支払回数',
LRYTH(8) TYPE C VALUE '支払周期',
LVORS(4) TYPE C VALUE '前払',
LEGEB(13) TYPE C VALUE 'リース料',
LZINS(7) TYPE C VALUE '年利',
LBARW(13) TYPE C VALUE '現在価値',
AFASL_TX(24) TYPE C VALUE '消費税(償却キー)',
NDJAR_TX(18) TYPE C VALUE '消費税(耐用年数)',
NDPER_TX(18) TYPE C VALUE '消費税(耐用期間)',
AFABG_TX(20) TYPE C VALUE '消費税(償却開始日)',
GJE_KANSWTX(18) TYPE C VALUE '消費税(取得価額)',
NAFA_GJETX(20) TYPE C VALUE '消費税(償却累計額)',
AFASL_FR(26) TYPE C VALUE 'リース負債利息(償却キー)',
NDJAR_FR(26) TYPE C VALUE 'リース負債利息(耐用年数)',
NDPER_FR(26) TYPE C VALUE 'リース負債利息(耐用期間)',
AFABG_FR(28) TYPE C VALUE 'リース負債利息(償却開始日)',
GJE_KANSWFR(26) TYPE C VALUE 'リース負債利息(取得価額)',
NAFA_GJEFR(28) TYPE C VALUE 'リース負債利息(償却累計額)',
SZINS_GJE(24) TYPE C VALUE 'リース負債利息(利息額)',
AFASL_RT(26) TYPE C VALUE 'リース利息定額(償却キー)',
NDJAR_RT(26) TYPE C VALUE 'リース利息定額(耐用年数)',
NDPER_RT(26) TYPE C VALUE 'リース利息定額(耐用期間)',
AFABG_RT(28) TYPE C VALUE 'リース利息定額(償却開始日)',
GJE_KANSWRT(26) TYPE C VALUE 'リース利息定額(取得価額)',
NAFA_GJERT(28) TYPE C VALUE 'リース利息定額(償却累計額)',
ZZANLKL(16) TYPE C VALUE '資産クラス',
ANLKL_TXT(50) TYPE C VALUE '資産クラス名称',
INVNR4(25) TYPE C VALUE '物件番号(棚卸番号)',
ANLN1(12) TYPE C VALUE '資産番号',
LVTNR(12) TYPE C VALUE '補助番号',
TXT50_ANLT(50) TYPE C VALUE '物件名称',
MENGE(13) TYPE C VALUE '物件数',
ZLBARW4(13) TYPE C VALUE 'リース資産額',
ZWAERS4(10) TYPE C VALUE '通貨コード',
ZZMAINTE(13) TYPE C VALUE '維持費用額',
ZZLGADV(13) TYPE C VALUE '長期前受収益',
ZZBELNR01_FI(22) TYPE C VALUE 'リース資産登録伝票番号',
ZZBELNR98_AA(20) TYPE C VALUE '維持費用登録伝票番号',
ZZBELNR99_AA(24) TYPE C VALUE '長期前受収益登録伝票番号',
KOSTL4(18) TYPE C VALUE '(物件)原価センタ',
KTEXT4(22) TYPE C VALUE '(物件)原価センタ名称',
KOSTLV4(22) TYPE C VALUE '(物件)責任原価センタ',
KTEXTV4(26) TYPE C VALUE '(物件)責任原価センタ名称',
WERKS4(16) TYPE C VALUE '(物件)プラント',
WERKS_TXT4(30) TYPE C VALUE '(物件)プラント名称',
STORT4(12) TYPE C VALUE '(物件)場所',
STORT_TXT4(40) TYPE C VALUE '(物件)場所名称',
RAUMNR4(12) TYPE C VALUE '(物件)部屋',
KFZKZ4(26) TYPE C VALUE '(物件)ナンバープレート',
XSTIL4(16) TYPE C VALUE '(物件)資産休止',
ORD414(22) TYPE C VALUE '(物件)評価グループ1',
ORDTX_14(30) TYPE C VALUE '(物件)評価グループ1名称',
ORD424(22) TYPE C VALUE '(物件)評価グループ 2',
ORDTX_24(30) TYPE C VALUE '(物件)評価グループ1名称',
ORD434(22) TYPE C VALUE '(物件)評価グループ 3',
ORDTX_34(30) TYPE C VALUE '(物件)評価グループ1名称',
ORD444(22) TYPE C VALUE '(物件)評価グループ 4',
ORDTX_44(30) TYPE C VALUE '(物件)評価グループ1名称',
IZWEK4(20) TYPE C VALUE '(物件)設備投資理由',
IZWEK_TXT4(50) TYPE C VALUE '(物件)設備投資理由名称',
UMWKZ4(20) TYPE C VALUE '(物件)環境投資理由',
UMWKZ_TXT4(50) TYPE C VALUE '(物件)環境投資理由名称',
ANLUE4(26) TYPE C VALUE '(物件)資産グループコード',
ANLUE_TXT4(50) TYPE C VALUE '(物件)資産グループコード名称',
LEAFI(18) TYPE C VALUE '(物件)リース会社',
LEAFI_TXT4(22) TYPE C VALUE '(物件)リース会社名称',
LVTNR4(16) TYPE C VALUE '(物件)契約番号',
AFASL_B(16) TYPE C VALUE '帳簿(償却キー)',
NDJAR_B(16) TYPE C VALUE '帳簿(耐用年数)',
NDPER_B(16) TYPE C VALUE '帳簿(耐用期間)',
AFABG_B(18) TYPE C VALUE '帳簿(償却開始日)',
GJE_KANSWB(16) TYPE C VALUE '帳簿(取得価額)',
NAFA_GJEB(18) TYPE C VALUE '帳簿(償却累計額)',
AFASL_TCD(16) TYPE C VALUE '税法(償却キー)',
NDJAR_TCD(16) TYPE C VALUE '税法(耐用年数)',
NDPER_TCD(16) TYPE C VALUE '税法(耐用期間)',
AFABG_TCD(18) TYPE C VALUE '税法(償却開始日)',
GJE_KANSWTCD(16) TYPE C VALUE '税法(取得価額)',
NAFA_GJETCD(18) TYPE C VALUE '税法(償却累計額)',
AFASL_MC(20) TYPE C VALUE '維持費用(償却キー)',
NDJAR_MC(20) TYPE C VALUE '維持費用(耐用年数)',
NDPER_MC(20) TYPE C VALUE '維持費用(耐用期間)',
AFABG_MC(22) TYPE C VALUE '維持費用(償却開始日)',
GJE_KANSWMC(20) TYPE C VALUE '維持費用(取得価額)',
NAFA_GJEMC(22) TYPE C VALUE '維持費用(償却累計額)',
AFASL_IN(24) TYPE C VALUE '長期前受収益(償却キー)',
NDJAR_IN(24) TYPE C VALUE '長期前受収益(耐用年数)',
NDPER_IN(24) TYPE C VALUE '長期前受収益(耐用期間)',
AFABG_IN(26) TYPE C VALUE '長期前受収益(償却開始日)',
GJE_KANSWIN(24) TYPE C VALUE '長期前受収益(取得価額)',
NAFA_GJEIN(26) TYPE C VALUE '長期前受収益(償却累計額)',
END OF TYP_ERR_HEADER1.
*--購買伝票ヘッダ ,購買伝票明細 テーブル
TYPES : BEGIN OF TYP_KOUBAI_DATA,
BUKRS TYPE EKKO-BUKRS, "会社コード
EBELN TYPE EKKO-EBELN, "購買伝票番号
EBELP TYPE EKPO-EBELP, "購買伝票の明細番号
KDATB TYPE EKKO-KDATB, "有効期間開始日
KDATE TYPE EKKO-KDATE, "有効期間終了日
LIFNR TYPE EKKO-LIFNR, "仕入先勘定コード
BEDNR TYPE EKPO-BEDNR, "購買依頼追跡番号
MENGE TYPE EKPO-MENGE, "購買発注量
NETPR TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
FPLNR TYPE FPLA-FPLNR, "支払計画番号
PATTERN TYPE CHAR1,
END OF TYP_KOUBAI_DATA.
*--購買伝票勘定設定内部テーブルの構造
TYPES : BEGIN OF TYP_EKKN,
ZZEBELN TYPE EKKN-EBELN, "購買伝票番号
EBELP TYPE EKKN-EBELP, "購買伝票の明細番号
ZZKOSTL TYPE EKKN-KOSTL, "原価センタ
SAKTO TYPE EKKN-SAKTO, "G/L 勘定コード
END OF TYP_EKKN.
*--請求計画データ取得用内部テーブルの構造
TYPES : BEGIN OF TYP_FPLA,
FPLNR TYPE FPLA-FPLNR, "請求計画番号
BEDAT TYPE FPLA-BEDAT, "請求/支払計画開始日付
ENDAT TYPE FPLA-ENDAT, "請求/支払計画終了日付
HORIZ TYPE FPLA-HORIZ, "請求/支払計画における期間決定の規則
PERIO TYPE FPLA-PERIO, "次回請求/請求書日付コピー元の規則
END OF TYP_FPLA.
*--購買伝票明細テーブル[TEMP]
TYPES : BEGIN OF TYP_KOUBAI_SUCCESS,
ZZEBELN TYPE EKKN-EBELN, "購買伝票番号
ZZBUKRS TYPE EKKO-BUKRS, "会社コード
ZZLEAFI TYPE EKKO-LIFNR, "仕入先勘定コード
BEDNR TYPE EKPO-BEDNR, "購買依頼追跡番号
ZZLEABG TYPE FPLA-BEDAT, "請求/支払計画開始日付
ZZLKDAT TYPE FPLA-ENDAT, "請求/支払計画終了日付
ZZLEANZ TYPE FPLA-HORIZ, "請求/支払計画における期間決定の規則
ZZLRYTH TYPE C LENGTH 3, "次回請求/請求書日付コピー元の規則
PERIO_FPLA TYPE FPLA-PERIO, "次回請求/請求書日付コピー元の規則
MENGE TYPE EKPO-MENGE, "購買発注量
NETPR TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
NETPR_3 TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
ZZKOSTL TYPE EKKN-KOSTL, "原価センタ
ZZACCT(12) TYPE C,
PATTERN(1) TYPE C,
END OF TYP_KOUBAI_SUCCESS.
*--マスタデータ[論理データベース]
TYPES : BEGIN OF TYP_SISAN,
BUKRS TYPE ANLB-BUKRS, "会社コード
ANLN1 TYPE ANLB-ANLN1, "資産番号
ANLN2 TYPE ANLB-ANLN2, "資産補助番号
AFABE TYPE ANLB-AFABE, "実償却領域
BDATU TYPE ANLZ-BDATU, "有効終了日付
XSTIL TYPE ANLZ-XSTIL, "資産休止
KOSTL TYPE ANLZ-KOSTL, "原価センタ
KOSTLV TYPE ANLZ-KOSTLV, "責任原価センタ
WERKS TYPE ANLZ-WERKS, "プラント
STORT TYPE ANLZ-STORT, "場所
RAUMNR TYPE ANLZ-RAUMN, "部屋
KFZKZ TYPE ANLZ-KFZKZ, "ナンバープレート
GJAHR TYPE ANLCV-GJAHR, "会計年度
GJE_KANSW TYPE ANLCV-GJE_KANSW, "期末資産取得価額
NAFA_GJE TYPE ANLCV-NAFA_GJE, "会計年度終了時の通常償却
SZINS_GJE TYPE ANLCV-SZINS_GJE, "会計年度終了時の利息
AFASL TYPE ANLB-AFASL, "償却キー
NDJAR TYPE ANLB-NDJAR, "予定耐用年
NDPER TYPE ANLB-NDPER, "計画耐用期間
AFABG TYPE ANLB-AFABG, "償却計算開始日
MENGE TYPE ANLAV-MENGE, "数量
MENGE_TXT TYPE ANLAV-TXT50, "資産テキスト
ANLKL TYPE ANLAV-ANLKL, "資産クラス
END OF TYP_SISAN.
*--パターン内部テーブルの構造
TYPES : BEGIN OF TYP_PATTERN,
BUKRS TYPE EKKO-BUKRS, "会社コード
EBELN TYPE EKKO-EBELN, "購買伝票番号
ZSHURUI TYPE ZTFI0025-ZSHURUI, "明細種類
EBELP TYPE EKPO-EBELP, "購買伝票の明細番号
SAKTO TYPE EKKN-SAKTO, "G/L 勘定コード
PATRN(1) TYPE C,
END OF TYP_PATTERN.
*--請求計画番号[償却記帳のチェック]
TYPES : BEGIN OF TYP_FPLNR,
BUKRS TYPE EKKO-BUKRS, "会社コード
EBELN TYPE EKKO-EBELN, "購買伝票番号
FPLNR TYPE EKPO-FPLNR, "請求計画番号
END OF TYP_FPLNR.
*======================================================================
*---内部テーブル定義
*======================================================================
*--会社コードテーブル定義
DATA : IT_T001 TYPE STANDARD TABLE OF TYP_T001.
*--リース契約内部テーブル
DATA : IT_ZTFI0023 TYPE STANDARD TABLE OF ZTFI0023,
IT_FI23_TEMP TYPE STANDARD TABLE OF ZTFI0023,
W_ZTFI0023 TYPE ZTFI0023.
*--リース物件内部テーブル
DATA : IT_ZTFI0024 TYPE STANDARD TABLE OF ZTFI0024,
W_ZTFI0024 TYPE ZTFI0024.
*--資産マスタレコードセグメント
DATA : IT_ANLA TYPE STANDARD TABLE OF ANLA,
W_ANLA TYPE ANLA.
*--資産マスタレコードセグメント[TEMP]
DATA : IT_ANLA_TEMP TYPE STANDARD TABLE OF ANLA,
IT_ANLA_TEMP1 TYPE STANDARD TABLE OF ANLA,
W_ANLA_TEMP TYPE ANLA.
*--マスタデータ[論理データベース]
DATA : IT_SISAN TYPE STANDARD TABLE OF TYP_SISAN,
W_SISAN TYPE TYP_SISAN.
*--リース物件資産
DATA : IT_SISAN_BUKKEN TYPE STANDARD TABLE OF TYP_SISAN,
W_SISAN_BUKKEN TYPE TYP_SISAN.
*--資産マスタレコードセグメント[TEMP]
DATA : IT_ANLA_BUKKEN TYPE STANDARD TABLE OF ANLA,
W_ANLA_BUKKEN TYPE ANLA.
*--購買伝票ヘッダ ,購買伝票明細 テーブル
DATA : IT_KOUBAI_DATA TYPE STANDARD TABLE OF TYP_KOUBAI_DATA,
IT_KOUBAI_TEMP TYPE STANDARD TABLE OF TYP_KOUBAI_DATA,
W_KOUBAI_DATA TYPE TYP_KOUBAI_DATA.
*--購買伝票データの内部テーブル[TEMP]
DATA : IT_KOUBAI_SUCCESS TYPE STANDARD TABLE OF TYP_KOUBAI_SUCCESS,
W_KOUBAI_SUCCESS TYPE TYP_KOUBAI_SUCCESS,
W_KOUBAI_TEMP TYPE TYP_KOUBAI_SUCCESS.
*--購買伝票勘定設定内部テーブル
DATA : IT_EKKN TYPE STANDARD TABLE OF TYP_EKKN,
W_EKKN TYPE TYP_EKKN.
*--請求計画データ取得用内部テーブル
DATA : IT_FPLA TYPE STANDARD TABLE OF TYP_FPLA,
W_FPLA TYPE TYP_FPLA.
*---明細種類用内部テーブル
DATA : IT_ZTFI0025 TYPE STANDARD TABLE OF ZTFI0025,
W_ZTFI0025 TYPE ZTFI0025.
*--UNIXファイルパス変更用
DATA : W_P_FNAME TYPE RLGRAP-FILENAME.
*--エラーファイル[チェックの場合]
DATA : IT_ERR_FILE TYPE STANDARD TABLE OF TYP_ERR_FILE,
W_ERR_FILE TYPE TYP_ERR_FILE.
*--エラーファイル[一覧の場合]
DATA : IT_ERR_FILE1 TYPE STANDARD TABLE OF TYP_ERR_FILE1,
W_ERR_FILE1 TYPE TYP_ERR_FILE1.
*--リース契約の出力項目
DATA : IT_KEIYAKU TYPE STANDARD TABLE OF TYP_ERR_FILE,
W_KEIYAKU TYPE TYP_ERR_FILE.
*--リース契約資産の出力項目
DATA : IT_KEIYAKU_SHISAN TYPE STANDARD TABLE OF TYP_ERR_FILE,
W_KEIYAKU_SHISAN TYPE TYP_ERR_FILE.
*--リース物件の出力項目
DATA : IT_BUKKEN TYPE STANDARD TABLE OF TYP_ERR_FILE,
W_BUKKEN TYPE TYP_ERR_FILE.
*--リース物件資産の出力項目
DATA : IT_BUKKEN_SHISAN TYPE STANDARD TABLE OF TYP_ERR_FILE,
W_BUKKEN_SHISAN TYPE TYP_ERR_FILE.
*--ALV表示[表示する項目]
DATA : IT_FIELDCAT TYPE STANDARD TABLE OF SLIS_FIELDCAT_ALV,
W_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
*--パターン内部テーブル
DATA : IT_PATTERN TYPE STANDARD TABLE OF TYP_PATTERN,
W_PATTERN TYPE TYP_PATTERN.
*--パターン内部テーブル[TEMP]
DATA : IT_PATTERN_T TYPE STANDARD TABLE OF TYP_PATTERN,
W_PATTERN_T TYPE TYP_PATTERN.
*--請求計画番号[償却記帳のチェック]
DATA : IT_FPLNR TYPE STANDARD TABLE OF TYP_FPLNR,
W_FPLNR TYPE TYP_FPLNR.
*======================================================================
*---変数定義
*======================================================================
DATA : G_NETPR TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
G_NETPR_3 TYPE EKPO-NETPR, "購買伝票の正味価格 (伝票通貨)
G_MENGE TYPE EKPO-MENGE, "購買発注量
G_TABIX TYPE SY-TABIX,
G_RKIKAN TYPE I, "リース期間
G_RKIKAN_SIHARAI TYPE I,
G_NO_DAYS TYPE I,
G_NO_MONTHS TYPE I,
G_NO_YEARS TYPE I,
G_KIKAN TYPE MONAT, "会計期間
G_DATE TYPE SY-DATUM, "システム日付
G_TITLE TYPE LVC_TITLE VALUE 'リース契約・物件資産レポート',
G_VARIANT TYPE DISVARIANT.
*======================================================================
*---固定値
*======================================================================
CONSTANTS : CNS_F TYPE C VALUE 'F', "伝票カテゴリ[購買発注]
CNS_ZFO TYPE CHAR3 VALUE 'ZFO', "伝票タイプ[リース用購買発注]
CNS_01 TYPE CHAR2 VALUE '01',
CNS_31 TYPE CHAR2 VALUE '31',
CNS_0 TYPE C VALUE '0',
CNS_1 TYPE C VALUE '1',
CNS_2 TYPE C VALUE '2',
CNS_3 TYPE C VALUE '3',
CNS_4 TYPE C VALUE '4',
CNS_012(3) TYPE N VALUE '012',
CNS_12 TYPE CHAR2 VALUE '12',
CNS_15 TYPE CHAR2 VALUE '15', "税法領域
CNS_73 TYPE CHAR2 VALUE '73',
CNS_92 TYPE CHAR2 VALUE '92', "リース負債利息領域
CNS_96 TYPE CHAR2 VALUE '96', "消費税領域
CNS_97 TYPE CHAR2 VALUE '97', "リース利息定額領域
CNS_98 TYPE CHAR2 VALUE '98', "維持費用
CNS_99 TYPE CHAR2 VALUE '99', "長期前受収益
CNS_ZZ00 TYPE CHAR4 VALUE 'ZZ00',
CNS_ZLS2 TYPE CHAR4 VALUE 'ZLS2',
CNS_0000 TYPE CHAR4 VALUE '0000',
CNS_2800 TYPE ANLA-ANLKL VALUE '00002800', "資産クラス[リース契約]
CNS_2700 TYPE ANLA-ANLKL VALUE '00002700', "資産クラス[リース物件]
CNS_1000 TYPE ANLA-ANLKL VALUE '00001000', "資産クラス[リース物件]
CNS_1600 TYPE ANLA-ANLKL VALUE '00001600', "資産クラス[リース物件]
CNS_X TYPE C VALUE 'X',
CNS_AS TYPE C VALUE '*',
CNS_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
CNS_C TYPE C VALUE 'C'.
*======================================================================
*---フラグ定義
*======================================================================
DATA : FLG_X TYPE C,
FLG1_X TYPE C,
FLG2_X TYPE C,
FLG3_X TYPE C.
*======================================================================
*---選択画面
*======================================================================
*SELECT-OPTIONS:
S_BUKRS FOR T001-BUKRS OBLIGATORY. "会社コード
PARAMETERS :
P_GJAHR TYPE GJAHR OBLIGATORY, "会計年度
P_MONAT TYPE MONAT OBLIGATORY. "会計期間
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS:
S_LEAFI FOR LFA1-LIFNR, "リース会社
S_LEYM FOR ZTFI0024-ZZLEYM, "開始年月
S_LVTNR1 FOR ZTFI0024-ZZLVTNR1, "契約番号
S_LVTNR2 FOR ZTFI0024-ZZLVTNR2. "契約枝番
SELECTION-SCREEN SKIP 1.
*--実行オプション
SELECTION-SCREEN BEGIN OF BLOCK BL1
WITH FRAME TITLE TEXT-B01.
SELECTION-SCREEN BEGIN OF LINE.
*--一覧表示[ラジオバターン]
PARAMETERS : R_ICHIRN RADIOBUTTON GROUP PGID.
SELECTION-SCREEN COMMENT 2(35) TEXT-001 FOR FIELD R_ICHIRN.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*--チェック(バックグランドを推奨)[ラジオボタン]
PARAMETERS : R_CHECK RADIOBUTTON GROUP PGID.
SELECTION-SCREEN COMMENT 2(35) TEXT-002 FOR FIELD R_CHECK.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*--購買発注伝票とリース契約の単体/関連チェック
SELECTION-SCREEN POSITION 4.
PARAMETERS :
P_KOUBAI AS CHECKBOX TYPE C DEFAULT ' '.
SELECTION-SCREEN COMMENT 5(44) TEXT-003 FOR FIELD P_KOUBAI.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*--リース契約テーブルとリース契約資産の単体/関連チェック
SELECTION-SCREEN POSITION 4.
PARAMETERS :
P_KEYAKU AS CHECKBOX TYPE C DEFAULT ' '.
SELECTION-SCREEN COMMENT 5(54) TEXT-004 FOR FIELD P_KEYAKU.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*--リース物件テーブルとリース物件資産の単体/関連チェック
SELECTION-SCREEN POSITION 4.
PARAMETERS :
P_BUKKEN AS CHECKBOX TYPE C DEFAULT ' '.
SELECTION-SCREEN COMMENT 5(54) TEXT-005 FOR FIELD P_BUKKEN.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*--棚卸番号の重複チェック
SELECTION-SCREEN POSITION 4.
PARAMETERS :
P_REPEAT AS CHECKBOX TYPE C DEFAULT ' '.
SELECTION-SCREEN COMMENT 5(22) TEXT-006 FOR FIELD P_REPEAT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
*--会計伝票の転記チェック
SELECTION-SCREEN POSITION 4.
PARAMETERS :
P_TENKI AS CHECKBOX TYPE C DEFAULT ' '.
SELECTION-SCREEN COMMENT 5(22) TEXT-007 FOR FIELD P_TENKI.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BL1.
*--実行オプション
SELECTION-SCREEN BEGIN OF BLOCK BL2
WITH FRAME TITLE TEXT-B02.
*SELECTION-SCREEN BEGIN OF LINE.
**--(バックグランド時のみ、一覧表示項目をダウンロード)
*SELECTION-SCREEN COMMENT 1(52) TEXT-008.
*SELECTION-SCREEN END OF LINE.
PARAMETERS : P_DOWN TYPE RLGRAP-FILENAME. "ダウンロードファイル名
SELECTION-SCREEN END OF BLOCK BL2.
*--レイアウト
PARAMETERS : P_LAYOUT TYPE DISVARIANT-VARIANT. "レイアウト
*======================================================================
*---INITIALIZATION
*======================================================================
INITIALIZATION.
*--会社コードの初期値設定
REFRESH BUKRS.
GET PARAMETER ID 'ZFI01' FIELD BUKRS-LOW. " 会社コード
BUKRS-SIGN = 'I'.
BUKRS-OPTION = 'EQ'.
APPEND BUKRS.
*======================================================================
*---AT SELECTION-SCREEN
*======================================================================
AT SELECTION-SCREEN.
*--ラジオボタン「チェック」が初期の場合
IF R_CHECK = CNS_X AND
P_KOUBAI = ' ' AND
P_KEYAKU = ' ' AND
P_BUKKEN = ' ' AND
P_REPEAT = ' ' AND
P_TENKI = ' ' .
MESSAGE E011(ZNN01) WITH '最低1つチェックボックス'.
ENDIF.
IF R_ICHIRN IS NOT INITIAL AND
P_DOWN IS NOT INITIAL.
MESSAGE E022 WITH '一覧表示の時、ダウンロード(UNIX)'.
ENDIF.
*--会社コード存在チェック
PERFORM F_BUKRS_EXIST.
*--ファイル名変換処理
IF P_DOWN IS NOT INITIAL.
PERFORM CHECK_PARAMETERS USING P_DOWN
CHANGING W_P_FNAME. "ファイル名称取得
ENDIF.
*-- レポート日付の設定
PERFORM SET_REPORT_DATE.
*======================================================================
*---AT SELECTION-SCREEN ON VALUE-REQUEST
*======================================================================
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LAYOUT.
*---レイアウト
PERFORM F_VALUE_REQUEST.
*======================================================================
*---AT SELECTION-SCREEN OUTPUT
*======================================================================
AT SELECTION-SCREEN OUTPUT.
*--選択項目[論理DB]を非表示にする
PERFORM F_HIDE_SCREEN.
*======================================================================
*---START-OF-SELECTION
*======================================================================
START-OF-SELECTION.
*--ファイルの存在チェック
PERFORM F_FILE_EXIST_CHECK.
*--リース契約テーブルデータの取得
PERFORM F_SELECT_ZTFI0023.
*--リース物件テーブルデータの取得
PERFORM F_SELECT_ZTFI0024.
*--リース契約資産.物件資産データの取得
PERFORM F_SELECT_ANLA.
*--購買発注伝票とリース資産の単体/関連チェック
PERFORM F_KEYAKU_CHECK.
*======================================================================
*---GET(論理データベース)
*======================================================================
*--資産レポート: ANLC 項目プラス各合計
GET ANLAV.
W_SISAN-BUKRS = ANLAV-BUKRS.
W_SISAN-ANLN1 = ANLAV-ANLN1.
W_SISAN-ANLN2 = ANLAV-ANLN2.
W_SISAN-ANLKL = ANLAV-ANLKL.
W_SISAN-MENGE = ANLAV-MENGE.
W_SISAN-MENGE_TXT = ANLAV-TXT50.
GET ANLZ.
W_SISAN-BDATU = ANLZ-BDATU.
W_SISAN-XSTIL = ANLZ-XSTIL.
W_SISAN-KOSTL = ANLZ-KOSTL.
W_SISAN-KOSTLV = ANLZ-KOSTLV.
W_SISAN-WERKS = ANLZ-WERKS.
W_SISAN-STORT = ANLZ-STORT.
W_SISAN-RAUMNR = ANLZ-RAUMN.
W_SISAN-KFZKZ = ANLZ-KFZKZ.
GET ANLB.
W_SISAN-BUKRS = ANLB-BUKRS.
W_SISAN-ANLN1 = ANLB-ANLN1.
W_SISAN-ANLN2 = ANLB-ANLN2.
W_SISAN-AFABE = ANLB-AFABE.
W_SISAN-AFASL = ANLB-AFASL.
W_SISAN-NDJAR = ANLB-NDJAR.
W_SISAN-NDPER = ANLB-NDPER.
W_SISAN-AFABG = ANLB-AFABG.
GET ANLCV.
W_SISAN-GJAHR = ANLCV-GJAHR.
W_SISAN-GJE_KANSW = ANLCV-GJE_KANSW.
W_SISAN-NAFA_GJE = ANLCV-NAFA_GJE.
W_SISAN-SZINS_GJE = ANLCV-SZINS_GJE.
APPEND W_SISAN TO IT_SISAN.
*======================================================================
*---END-OF-SELECTION
*======================================================================
END-OF-SELECTION.
*--一覧表示の場合[リース契約.物件データの取得]
PERFORM F_MOVE_ERR_FILE.
*--リース契約.資産の単体/関連チェック
PERFORM F_KEIYAKU_SHISAN_CHECK.
*--リース物件.資産の単体/関連チェック
PERFORM F_BUKKEN_KANREN_CHECK.
*--棚卸番号の重複チェック
PERFORM F_TANAOROSHI_CHECK.
*--会計伝票の転記チェック
PERFORM F_KAIKEI_TENKI_CHECK.
*--チェックの場合
IF R_CHECK = CNS_X.
*--リース契約情報をエラーファイルにアッペンドする
PERFORM F_MOVE_CHECK_FILE.
*--リース契約資産情報をエラーファイルにアッペンドする
PERFORM F_MOVE_CHECK_FILE1.
*--リース物件情報をエラーファイルにアッペンドする
PERFORM F_MOVE_CHECK_FILE2.
*--リース物件資産情報をエラーファイルにアッペンドする
PERFORM F_MOVE_CHECK_FILE3.
ENDIF.
*--名称を取得する
PERFORM F_SELECT_MEISHOU.
*--エラーファイル(UNIX)をダウンロードする
PERFORM F_ERR_DOWNLOAD USING P_DOWN.
*-- 一覧表示(エラーレコードを表示する)
PERFORM F_ERR_DISPLAY.
&----
*& Form F_BUKRS_EXIST
&----
会社コード存在チェック
----
FORM F_BUKRS_EXIST .
*--会社コードの存在チェック
SELECT BUKRS FROM T001 INTO TABLE IT_T001
WHERE BUKRS IN BUKRS.
IF SY-SUBRC <> 0.
MESSAGE E014 WITH '会社コード'.
ENDIF.
ENDFORM. " F_BUKRS_EXIST
&----
*& Form CHECK_PARAMETERS
&----
ファイル名変換処理
----
FORM CHECK_PARAMETERS USING P_DOWN TYPE RLGRAP-FILENAME
CHANGING W_P_FNAME TYPE RLGRAP-FILENAME.
DATA: L_CHK_PATH TYPE STRING.
入力ファイル名の編集,チェック
CLEAR: L_CHK_PATH.
L_CHK_PATH = P_DOWN.
REPLACE '&' WITH SY-SYSID INTO L_CHK_PATH.
REPLACE '$' WITH SY-MANDT INTO L_CHK_PATH.
CONDENSE L_CHK_PATH NO-GAPS.
*--UNIXディレクトリアクセス制御
CALL FUNCTION 'Z_ZMA1_UNIX_DIR_CHECK'
EXPORTING
I_FILEPATH = L_CHK_PATH
I_S_KBN = '1' " 処理区分 1:アウトバウンド 2:インバウンド 3:一時ワーク使用 4:ユーザワーク領域
EXCEPTIONS
H_MODULE_ERROR = 1
MASTER_ERROR = 2
UNIX_PATH_ERROR = 3
PARAMETER_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
W_P_FNAME = L_CHK_PATH.
ENDFORM. " CHECK_PARAMETERS
&----
*& Form SET_REPORT_DATE
&----
レポート日付の設定
----
FORM SET_REPORT_DATE .
*--会計期間
G_KIKAN = P_MONAT.
CONCATENATE P_GJAHR G_KIKAN CNS_01 INTO G_DATE.
*--月末日の取得
PERFORM F_GET_LAST_DAY USING G_DATE.
*--月末の設定
IF FLG_DATE = 'X'.
BERDATUM = G_DATE .
ENDIF.
ENDFORM. " SET_REPORT_DATE
&----
*& Form F_GET_LAST_DAY
&----
月末日の取得
----
FORM F_GET_LAST_DAY USING P_G_DATE TYPE ANY.
DATA L_DATE1 TYPE SY-DATUM.
CLEAR : L_DATE1. "FLG_DATE.
*--月の最後の日
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
DAY_IN = P_G_DATE
IMPORTING
LAST_DAY_OF_MONTH = L_DATE1
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
SET CURSOR FIELD 'P_MONAT'.
*--有効な日付を入力してください
MESSAGE E143(ZREP01) WITH TEXT-059.
ELSE.
P_G_DATE = L_DATE1.
ENDIF.
ENDFORM. " F_GET_LAST_DAY
&----
*& Form F_VALUE_REQUEST
&----
ALV画面バリアントの選択ダイアログボックス
----
FORM F_VALUE_REQUEST .
DATA: LV_EXIT TYPE C,
LW_VARIANT TYPE DISVARIANT,
W_VARIANT TYPE DISVARIANT.
LW_VARIANT-REPORT = SY-REPID. "プログラムID
LW_VARIANT-USERNAME = SY-UNAME. "ユーザ名[システムユーザ]
*--バリアントの選択ダイアログボックスの表示
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = LW_VARIANT
I_TABNAME_HEADER =
I_TABNAME_ITEM =
IT_DEFAULT_FIELDCAT =
I_SAVE = 'A'
I_DISPLAY_VIA_GRID = ' '
IMPORTING
E_EXIT = LV_EXIT
ES_VARIANT = W_VARIANT
EXCEPTIONS
NOT_FOUND = 1
PROGRAM_ERROR = 2
OTHERS = 3 .
IF SY-SUBRC IS INITIAL.
IF LV_EXIT IS INITIAL.
P_LAYOUT = W_VARIANT-VARIANT.
ENDIF.
ELSE.
MESSAGE E000 WITH TEXT-060.
ENDIF.
ENDFORM. " F_VALUE_REQUEST
&----
*& Form F_HIDE_SCREEN
&----
選択項目を非表示にする
----
FORM F_HIDE_SCREEN .
LOOP AT SCREEN.
IF SCREEN-NAME = 'ANLAGE-LOW'
OR SCREEN-NAME = 'ANLAGE-HIGH'
OR SCREEN-NAME = '%_ANLAGE_%_APP_%-TEXT'
OR SCREEN-NAME = '%_ANLAGE_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = 'UNTNR-LOW'
OR SCREEN-NAME = 'UNTNR-HIGH'
OR SCREEN-NAME = '%_UNTNR_%_APP_%-TEXT'
OR SCREEN-NAME = '%_UNTNR_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = 'SO_ANLKL-LOW'
OR SCREEN-NAME = 'SO_ANLKL-HIGH'
OR SCREEN-NAME = '%_SO_ANLKL_%_APP_%-TEXT'
OR SCREEN-NAME = '%_SO_ANLKL_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = 'SO_GSBER-LOW'
OR SCREEN-NAME = 'SO_GSBER-HIGH'
OR SCREEN-NAME = '%_SO_GSBER_%_APP_%-TEXT'
OR SCREEN-NAME = '%_SO_GSBER_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = 'SO_KOSTL-LOW'
OR SCREEN-NAME = 'SO_KOSTL-HIGH'
OR SCREEN-NAME = '%_SO_KOSTL_%_APP_%-TEXT'
OR SCREEN-NAME = '%_SO_KOSTL_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = 'SO_STORT-LOW'
OR SCREEN-NAME = 'SO_STORT-HIGH'
OR SCREEN-NAME = '%_SO_STORT_%_APP_%-TEXT'
OR SCREEN-NAME = '%_SO_STORT_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = 'SO_ANLUE-LOW'
OR SCREEN-NAME = 'SO_ANLUE-HIGH'
OR SCREEN-NAME = '%_SO_ANLUE_%_APP_%-TEXT'
OR SCREEN-NAME = '%_SO_ANLUE_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = 'SO_WERKS-LOW'
OR SCREEN-NAME = 'SO_WERKS-HIGH'
OR SCREEN-NAME = '%_SO_WERKS_%_APP_%-TEXT'
OR SCREEN-NAME = '%_SO_WERKS_%_APP_%-VALU_PUSH'
OR SCREEN-NAME = '%_PA_AI_ID_%_APP_%-TEXT'
OR SCREEN-NAME = 'PA_AI_ID'
OR SCREEN-NAME = '%F303079_1000'
OR SCREEN-NAME = 'SRTVR'
OR SCREEN-NAME = 'SRT_TXT'
OR SCREEN-NAME = '%F304084_1000'
OR SCREEN-NAME = 'UMVAR'
OR SCREEN-NAME = 'UMV_TXT'
OR SCREEN-NAME = 'XEINZEL'
OR SCREEN-NAME = '%_XEINZEL_%_APP_%-TEXT'
OR SCREEN-NAME = 'XUNTNR'
OR SCREEN-NAME = '%_XUNTNR_%_APP_%-TEXT'
OR SCREEN-NAME = 'SUMMB'
OR SCREEN-NAME = '%_SUMMB_%_APP_%-TEXT'.
SCREEN-ACTIVE = 0.
ELSEIF SCREEN-NAME = 'BUKRS-LOW'.
*--会社コードを必須入力にする。
SCREEN-REQUIRED = '1'.
ELSEIF
SCREEN-NAME = 'BERDATUM'
OR SCREEN-NAME = 'BEREICH1'.
BEREICH1 = CNS_AS.
SCREEN-INPUT = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. " F_HIDE_SCREEN
&----
*& Form F_FILE_EXIST_CHECK
&----
ファイルの存在チェック
----
FORM F_FILE_EXIST_CHECK .
DATA: L_ANS TYPE C. "リターンコード
*--オンライン実行の時、ダウンロード(UNIXファイル)は指定できません
IF SY-BATCH IS INITIAL AND
P_DOWN IS NOT INITIAL.
SET CURSOR FIELD 'P_DOWN'.
MESSAGE S022 DISPLAY LIKE 'E'
WITH 'オンライン実行の時、ダウンロード(UNIX)'.
LEAVE LIST-PROCESSING.
ENDIF.
*--バックグラウンド実行の時
IF SY-BATCH = CNS_X .
IF P_DOWN IS INITIAL.
MESSAGE E011(ZNN01) WITH 'ダウンロード(UNIX)ファイル名'.
ELSE.
*--ファイルの存在チェック
OPEN DATASET W_P_FNAME FOR INPUT
IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC = 0.
MESSAGE E020 WITH 'ダウンロード(UNIX)'
W_P_FNAME.
ENDIF.
ENDIF.
ELSEIF R_CHECK = CNS_X.
*--標準ダイアログポップアップ
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = TEXT-065
START_COLUMN = 25
START_ROW = 6
IMPORTING
ANSWER = L_ANS
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF L_ANS = CNS_2 OR "ポッパアップ結果が「いいえ」の場合
L_ANS = 'A'. "ポッパアップ結果が「中止」の場合
MESSAGE S000(ZNN01) DISPLAY LIKE 'E' WITH '処理が中止しました'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
CLOSE DATASET W_P_FNAME.
ENDFORM. " F_FILE_EXIST_CHECK
&----
*& Form F_SELECT_ZTFI0023
&----
リース契約の存在チェック
----
FORM F_SELECT_ZTFI0023 .
DATA : L_DATE TYPE C LENGTH 6,
L_TABIX TYPE SY-TABIX,
L_DEAKT TYPE ANLA-DEAKT. "無効化日付
SELECT * FROM ZTFI0023 INTO TABLE IT_ZTFI0023
WHERE ZZBUKRS IN BUKRS "会社コード
AND ZZLEAFI IN S_LEAFI "リース会社コード
AND ZZLEYM IN S_LEYM "開始年月
AND ZZLVTNR1 IN S_LVTNR1 "契約番号
AND ZZLVTNR2 IN S_LVTNR2. "契約枝番
リース契約テーブルにデータが存在しません。
IF SY-SUBRC <> 0.
MESSAGE S000(ZNN01) DISPLAY LIKE 'E' WITH TEXT-049.
LEAVE LIST-PROCESSING.
ENDIF.
対象データの取得[リース期間が有効である事]
IF IT_ZTFI0023 IS NOT INITIAL.
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023.
CLEAR: L_DEAKT, L_TABIX.
L_TABIX = SY-TABIX.
L_DATE+0(4) = P_GJAHR.
L_DATE+4(2) = P_MONAT.
IF W_ZTFI0023-ZZLEABG(6) > L_DATE OR
W_ZTFI0023-ZZLKDAT(6) < L_DATE.
DELETE IT_ZTFI0023 INDEX L_TABIX.
CONTINUE.
ENDIF.
ゼロを入れる用汎用モジュール
PERFORM F_INSERT_ZERO USING W_ZTFI0023-ZZANLN1. "資産番号
PERFORM F_INSERT_ZERO USING W_ZTFI0023-ZZANLN2. "資産補助番号
PERFORM F_INSERT_ZERO USING W_ZTFI0023-ZZLVTNR2. "契約枝番
MODIFY IT_ZTFI0023 FROM W_ZTFI0023 INDEX L_TABIX.
IF W_ZTFI0023-ZZANLN1 IS NOT INITIAL.
資産マスタレコードセグメントの取得
SELECT DEAKT "無効化日付
FROM ANLA "資産マスタレコードセグメント
INTO L_DEAKT
UP TO 1 ROWS
WHERE BUKRS = W_ZTFI0023-ZZBUKRS "会社コード
AND ANLN1 = W_ZTFI0023-ZZANLN1. "資産番号
ENDSELECT.
IF SY-SUBRC = 0.
IF L_DEAKT IS NOT INITIAL AND
L_DEAKT+6 <= L_DATE.
DELETE IT_ZTFI0023 INDEX L_TABIX.
ENDIF.
ELSE.
DELETE IT_ZTFI0023 INDEX L_TABIX.
ENDIF.
ENDIF.
ENDLOOP.
ソート処理
SORT IT_ZTFI0023 BY ZZBUKRS ZZLEAFI ZZLEYM ZZLVTNR1 ZZLVTNR2 ZZINVNR_ANLA.
ENDIF.
会計期間が有効でない場合
IF IT_ZTFI0023 IS INITIAL.
MESSAGE S000(ZNN01) DISPLAY LIKE 'E' WITH TEXT-049.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " F_SELECT_ZTFI0023
&----
*& Form F_SELECT_ZTFI0024
&----
リース物件テーブルデータの取得
----
FORM F_SELECT_ZTFI0024 .
DATA : L_DATE TYPE C LENGTH 6,
L_TABIX TYPE SY-TABIX,
L_DEAKT TYPE ANLA-DEAKT.
*--リース物件テーブルデータの取得
SELECT * FROM ZTFI0024 INTO TABLE IT_ZTFI0024
FOR ALL ENTRIES IN IT_ZTFI0023
WHERE ZZBUKRS = IT_ZTFI0023-ZZBUKRS "会社コード
AND ZZLEAFI = IT_ZTFI0023-ZZLEAFI "リース会社コード
AND ZZLVTNR1 = IT_ZTFI0023-ZZLVTNR1 "契約番号
AND ZZLVTNR2 = IT_ZTFI0023-ZZLVTNR2 "契約枝番
AND ZZLEYM = IT_ZTFI0023-ZZLEYM. "開始年月
*--リース物件テーブルでデータが存在しない場合
IF SY-SUBRC <> 0.
IF P_KOUBAI <> CNS_X.
MESSAGE S000(ZNN01) DISPLAY LIKE 'E' WITH TEXT-054.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
*--対象データの取得[会計期間が有効であること]
IF IT_ZTFI0024 IS NOT INITIAL.
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024.
CLEAR: L_DEAKT, L_TABIX.
L_TABIX = SY-TABIX.
L_DATE+0(4) = P_GJAHR.
L_DATE+4(2) = P_MONAT.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZBUKRS = W_ZTFI0024-ZZBUKRS "会社コード
ZZLEAFI = W_ZTFI0024-ZZLEAFI "リース会社コード
ZZLEYM = W_ZTFI0024-ZZLEYM "開始年月
ZZLVTNR1 = W_ZTFI0024-ZZLVTNR1 "契約番号
ZZLVTNR2 = W_ZTFI0024-ZZLVTNR2. "契約枝番
IF SY-SUBRC = 0.
IF W_ZTFI0023-ZZLEABG(6) > L_DATE OR
W_ZTFI0023-ZZLKDAT(6) < L_DATE.
DELETE IT_ZTFI0024 INDEX L_TABIX.
CONTINUE.
ENDIF.
*--ゼロを入れる用汎用モジュール
PERFORM F_INSERT_ZERO USING W_ZTFI0024-ZZANLN1. "資産番号
PERFORM F_INSERT_ZERO USING W_ZTFI0024-ZZLVTNR2. "契約枝番
MODIFY IT_ZTFI0024 FROM W_ZTFI0024 INDEX L_TABIX.
IF W_ZTFI0024-ZZANLN1 IS NOT INITIAL.
*--資産マスタレコードセグメントの取得
SELECT DEAKT "無効化日付
FROM ANLA "資産マスタレコードセグメント
INTO L_DEAKT
UP TO 1 ROWS
WHERE BUKRS = W_ZTFI0024-ZZBUKRS
AND ANLN1 = W_ZTFI0024-ZZANLN1.
ENDSELECT.
IF SY-SUBRC = 0.
IF L_DEAKT IS NOT INITIAL AND
L_DEAKT+6 <= L_DATE.
DELETE IT_ZTFI0024 INDEX L_TABIX.
ENDIF.
ELSE.
DELETE IT_ZTFI0024 INDEX L_TABIX.
ENDIF.
ENDIF.
ENDIF.
CLEAR : L_DEAKT.
ENDLOOP.
ソート処理
SORT IT_ZTFI0024 BY ZZBUKRS ZZLEAFI ZZLEYM ZZLVTNR1 ZZLVTNR2 ZZINVNR_ANLA.
ENDIF.
会計期間が有効でない場合
IF IT_ZTFI0024 IS INITIAL.
IF P_KOUBAI <> CNS_X.
MESSAGE S000(ZNN01) DISPLAY LIKE 'E' WITH TEXT-054.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " F_SELECT_ZTFI0024
&----
*& Form F_SELECT_ANLA
&----
リース契約資産.物件資産データの取得
----
FORM F_SELECT_ANLA .
IF R_ICHIRN = CNS_X.
資産マスタデータの取得
SELECT * FROM ANLA INTO TABLE IT_ANLA
FOR ALL ENTRIES IN IT_ZTFI0023
WHERE BUKRS = IT_ZTFI0023-ZZBUKRS "会社コード
AND LEAFI = IT_ZTFI0023-ZZLEAFI "リース会社コード
AND LVTNR = IT_ZTFI0023-ZZLVTNR1. "契約枝番
ELSE.
SELECT * FROM ANLA INTO TABLE IT_ANLA
WHERE BUKRS IN BUKRS "会社コード
AND LEAFI IN S_LEAFI "リース会社コード
AND LVTNR IN S_LVTNR1 "契約番号
AND ANLKL = CNS_2800. "資産クラス
ENDIF.
ソート処理
SORT IT_ANLA BY BUKRS LEAFI LVTNR ANLN2 INVNR.
リース物件資産データの取得
SELECT * FROM ANLA INTO TABLE IT_ANLA_BUKKEN
WHERE BUKRS IN BUKRS "会社コード
AND LEAFI IN S_LEAFI "リース会社コード
AND LVTNR IN S_LVTNR1 "契約番号
AND ( ANLKL = CNS_2700 OR
( ANLKL >= CNS_1000 AND
ANLKL <= CNS_1600 ) ). "資産クラス
ソート処理
SORT IT_ANLA_BUKKEN BY BUKRS LEAFI LVTNR ANLN2 INVNR.
ENDFORM. " F_SELECT_ANLA
&----
*& Form F_KEYAKU_CHECK
&----
購買発注伝票とリース資産の単体/関連チェック
----
FORM F_KEYAKU_CHECK .
購買発注伝票とリース資産の単体/関連チェックの場合
IF P_KOUBAI = CNS_X AND
R_CHECK = CNS_X.
購買発注伝票存在チェック
PERFORM F_EKKO_EXIST.
購買発注伝票の明細のチェック[DOWNLOAD]
PERFORM F_KOUBAI_MEISAI_CHECK.
購買発注伝票とリース契約テーブルが互いに存在すること
PERFORM F_KOUBAI_EXIST_CHECK.
購買発注伝票とリース契約テーブルの項目の存在チェック[UPLOAD]
PERFORM F_FIELDS_EXIST.
ENDIF.
ENDFORM. " F_KEYAKU_CHECK
&----
*& Form F_SELECT_EKKO
&----
購買発注伝票存在チェック
----
FORM F_EKKO_EXIST.
DATA : L_DATE TYPE CHAR6.
*--購買伝票ヘッダ ,購買伝票明細 テーブルの取得
SELECT ABUKRS AEBELN A~LIFNR
AKDATB AKDATE
BEBELP BBEDNR B~FPLNR
BNETPR BMENGE
FROM EKKO AS A INNER
JOIN EKPO AS B
ON AEBELN = BEBELN
INTO CORRESPONDING FIELDS OF
TABLE IT_KOUBAI_DATA
WHERE A~BUKRS IN BUKRS
AND A~BSTYP = CNS_F
AND A~BSART = CNS_ZFO.
IF SY-SUBRC <> 0.
*--購買伝票ヘッダデータは存在しません。
W_ERR_FILE-ZERRMSG = TEXT-009.
APPEND W_ERR_FILE TO IT_KEIYAKU.
ENDIF.
CLEAR : L_DATE.
L_DATE+0(4) = P_GJAHR.
L_DATE+4(2) = P_MONAT.
購買発注伝票の存在チェック
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023 WHERE ZZEBELN IS NOT INITIAL.
APPEND W_ZTFI0023 TO IT_FI23_TEMP.
CLEAR W_ZTFI0023.
ENDLOOP.
対象データの取得[会計期間がリース期間内であること]
CLEAR G_TABIX.
LOOP AT IT_KOUBAI_DATA INTO W_KOUBAI_DATA.
G_TABIX = SY-TABIX.
READ TABLE IT_FI23_TEMP INTO W_ZTFI0023 WITH KEY
ZZEBELN = W_KOUBAI_DATA-EBELN
ZZBUKRS = W_KOUBAI_DATA-BUKRS.
IF SY-SUBRC <> 0.
DELETE IT_KOUBAI_DATA INDEX G_TABIX.
CONTINUE.
ENDIF.
IF W_KOUBAI_DATA-KDATB+0(6) > L_DATE OR
W_KOUBAI_DATA-KDATE+0(6) < L_DATE.
DELETE IT_KOUBAI_DATA INDEX G_TABIX.
ENDIF.
CLEAR : W_ZTFI0023 , W_KOUBAI_DATA.
ENDLOOP.
ENDFORM. " F_EKKO_EXIST.
&----
*& Form F_KOUBAI_MEISAI_CHECK
&----
購買発注伝票の明細のチェック
----
FORM F_KOUBAI_MEISAI_CHECK .
DATA : LW_ZLEANZ TYPE TVRG-ZEITR,
LW_ZLRYTH TYPE TVRG-ZEITR,
LW_KAISUU TYPE I.
*--購買伝票勘定設定データの取得
PERFORM F_SELECT_EKKN.
*--請求計画データの取得
PERFORM F_SELECT_FPLA.
*--明細種類用アドオンテーブルデータの取得
PERFORM F_SELECT_ZTFI0025.
*--パターンチェック
PERFORM F_PATTERN_CHECK.
IF IT_KOUBAI_DATA IS NOT INITIAL.
CLEAR: G_RKIKAN, G_RKIKAN_SIHARAI, W_KOUBAI_DATA.
LOOP AT IT_KOUBAI_DATA INTO W_KOUBAI_DATA.
CLEAR W_EKKN.
W_KOUBAI_SUCCESS-ZZBUKRS = W_KOUBAI_DATA-BUKRS. "会社コード
W_KOUBAI_SUCCESS-ZZLEAFI = W_KOUBAI_DATA-LIFNR. "仕入先勘定コード
W_KOUBAI_SUCCESS-BEDNR = W_KOUBAI_DATA-BEDNR. "購買依頼追跡番号
READ TABLE IT_EKKN INTO W_EKKN
WITH KEY ZZEBELN = W_KOUBAI_DATA-EBELN
EBELP = W_KOUBAI_DATA-EBELP .
IF SY-SUBRC = 0.
W_KOUBAI_SUCCESS-ZZEBELN = W_EKKN-ZZEBELN. "購買伝票番号
W_KOUBAI_SUCCESS-ZZKOSTL = W_EKKN-ZZKOSTL. "原価センタ
ENDIF.
*--請求計画データの取得
READ TABLE IT_FPLA INTO W_FPLA
WITH KEY FPLNR = W_KOUBAI_DATA-FPLNR.
IF SY-SUBRC = 0.
W_KOUBAI_SUCCESS-ZZLEABG = W_FPLA-BEDAT. "請求/支払計画開始日付
W_KOUBAI_SUCCESS-ZZLKDAT = W_FPLA-ENDAT. "請求/支払計画終了日付
W_KOUBAI_SUCCESS-PERIO_FPLA = W_FPLA-PERIO. "次回請求/請求書日付コピー元の規則
ENDIF.
SELECT SINGLE ZEITR FROM TVRG INTO LW_ZLEANZ
WHERE REGEL = W_FPLA-HORIZ.
SELECT SINGLE ZEITR FROM TVRG INTO LW_ZLRYTH
WHERE REGEL = W_FPLA-PERIO.
G_RKIKAN_SIHARAI = LW_ZLEANZ * 12 / LW_ZLRYTH.
リース期間のチェック
PERFORM F_CAL_RKIKAN USING W_KOUBAI_SUCCESS-ZZLEABG
W_KOUBAI_SUCCESS-ZZLKDAT.
IF G_RKIKAN <> G_RKIKAN_SIHARAI.
PERFORM F_GET_KEY USING W_KOUBAI_DATA-BUKRS
W_KOUBAI_DATA-LIFNR
W_KOUBAI_DATA-EBELN
CHANGING W_ERR_FILE-ZBUKRS
W_ERR_FILE-ZLEAFI
W_ERR_FILE-ZLEYM
W_ERR_FILE-ZLVTNR1
W_ERR_FILE-ZLVTNR2
W_ERR_FILE-ZZEBELN.
W_ERR_FILE-ZERRMSG = TEXT-040.
APPEND W_ERR_FILE TO IT_KEIYAKU.
DELETE IT_KOUBAI_DATA WHERE EBELN = W_KOUBAI_DATA-EBELN.
ENDIF.
LW_KAISUU = G_RKIKAN / LW_ZLRYTH.
W_KOUBAI_SUCCESS-ZZLEANZ = LW_KAISUU.
W_KOUBAI_SUCCESS-ZZLRYTH = LW_ZLRYTH.
*--明細種類用アドオンテーブルデータの取得
READ TABLE IT_ZTFI0025 INTO W_ZTFI0025
WITH KEY ZBUKRS = W_KOUBAI_DATA-BUKRS
ZSAKTO = W_EKKN-SAKTO.
IF SY-SUBRC = 0.
IF W_ZTFI0025-ZSHURUI <> CNS_3.
G_MENGE = G_MENGE + W_KOUBAI_DATA-MENGE.
ELSEIF W_ZTFI0025-ZSHURUI = CNS_3.
G_NETPR_3 = G_NETPR_3 + ( W_KOUBAI_DATA-NETPR * LW_KAISUU ).
ENDIF.
IF W_ZTFI0025-ZSHURUI = CNS_1.
G_NETPR = G_NETPR + ( W_KOUBAI_DATA-NETPR * W_KOUBAI_DATA-MENGE ).
ENDIF.
ENDIF.
W_KOUBAI_SUCCESS-NETPR = G_NETPR. "購買伝票の正味価格 (伝票通貨)
W_KOUBAI_SUCCESS-NETPR_3 = G_NETPR_3. "購買伝票の正味価格 (伝票通貨)
W_KOUBAI_SUCCESS-MENGE = G_MENGE. "購買発注量
AT END OF EBELN.
CLEAR: G_NETPR, G_NETPR_3, G_MENGE.
MODIFY IT_KOUBAI_SUCCESS FROM W_KOUBAI_SUCCESS
TRANSPORTING NETPR MENGE NETPR_3
WHERE ZZEBELN = W_KOUBAI_DATA-EBELN.
ENDAT.
*--ゼロを入れる用汎用モジュール
PERFORM F_INSERT_ZERO USING W_KOUBAI_SUCCESS-ZZLRYTH.
APPEND W_KOUBAI_SUCCESS TO IT_KOUBAI_SUCCESS.
READ TABLE IT_PATTERN INTO W_PATTERN
WITH KEY EBELN = W_KOUBAI_DATA-EBELN.
IF SY-SUBRC = 0.
IF W_PATTERN-PATRN = 'D'.
DELETE IT_KOUBAI_SUCCESS WHERE ZZEBELN = W_KOUBAI_DATA-EBELN.
ENDIF.
ENDIF.
CLEAR : W_KOUBAI_SUCCESS , W_KOUBAI_DATA,
LW_KAISUU , LW_ZLEANZ , LW_ZLRYTH.
ENDLOOP.
ENDIF.
明細チェック
PERFORM F_MEISAI_CHECK.
リース期間のチェック
LOOP AT IT_KOUBAI_SUCCESS INTO W_KOUBAI_SUCCESS.
CLEAR: W_FPLA.
READ TABLE IT_FPLA INTO W_FPLA
WITH KEY FPLNR = W_KOUBAI_SUCCESS-FPLNR.
IF SY-SUBRC = 0.
**--開始日と通知日付からリース期間の計算
PERFORM F_CAL_RKIKAN USING W_KOUBAI_SUCCESS-ZZLEABG
W_KOUBAI_SUCCESS-ZZLKDAT.
SELECT SINGLE ZEITR FROM TVRG INTO LW_ZLEANZ
WHERE REGEL = W_FPLA-HORIZ.
SELECT SINGLE ZEITR FROM TVRG INTO LW_ZLRYTH
WHERE REGEL = W_FPLA-PERIO.
G_RKIKAN_SIHARAI = LW_ZLEANZ * 12 / LW_ZLRYTH.
ENDIF.
IF G_RKIKAN <> G_RKIKAN_SIHARAI.
W_ERR_FILE-ZBUKRS = W_KOUBAI_SUCCESS-ZZBUKRS.
W_ERR_FILE-ZLEAFI = W_KOUBAI_SUCCESS-ZZLEAFI.
W_ERR_FILE-ZZEBELN = W_KOUBAI_SUCCESS-ZZEBELN.
W_ERR_FILE-ZERRMSG = TEXT-040.
APPEND W_ERR_FILE TO IT_KEIYAKU.
ENDIF.
CLEAR : W_KOUBAI_SUCCESS.
ENDLOOP.
ENDFORM. " F_KOUBAI_MEISAI_CHECK
&----
*& Form F_SELECT_EKKN
&----
購買伝票勘定設定データの取得
----
FORM F_SELECT_EKKN .
*--購買伝票勘定設定テーブルの取得
IF IT_KOUBAI_DATA IS NOT INITIAL.
SELECT EBELN "購買伝票番号
EBELP "購買伝票の明細番号
KOSTL "原価センタ
SAKTO "G/L 勘定コード
FROM EKKN INTO TABLE IT_EKKN
FOR ALL ENTRIES IN IT_KOUBAI_DATA
WHERE EBELN = IT_KOUBAI_DATA-EBELN
AND EBELP = IT_KOUBAI_DATA-EBELP.
*--購買伝票勘定設定テーブルからの取得できない場合
IF SY-SUBRC <> 0.
W_ERR_FILE-ZERRMSG = TEXT-051.
APPEND W_ERR_FILE TO IT_KEIYAKU.
CLEAR : W_ERR_FILE.
ENDIF.
ENDIF.
ENDFORM. " F_SELECT_EKKN
&----
*& Form F_SELECT_FPLA
&----
請求計画データの取得
----
FORM F_SELECT_FPLA .
*--請求計画テーブルの取得
IF IT_KOUBAI_DATA IS NOT INITIAL.
SELECT FPLNR "請求計画番号
BEDAT "請求/支払計画開始日付
ENDAT "請求/支払計画終了日付
HORIZ "支払回数
PERIO "支払周期
FROM FPLA INTO CORRESPONDING FIELDS OF TABLE IT_FPLA
FOR ALL ENTRIES IN IT_KOUBAI_DATA
WHERE FPLNR = IT_KOUBAI_DATA-FPLNR.
*--請求計画テーブルからの取得できない場合
IF SY-SUBRC <> 0.
W_ERR_FILE-ZERRMSG = TEXT-052.
APPEND W_ERR_FILE TO IT_KEIYAKU.
CLEAR : W_ERR_FILE.
ENDIF.
ENDIF.
ENDFORM. " F_SELECT_FPLA
&----
*& Form F_SELECT_ZTFI0025
&----
明細種類用アドオンテーブルデータの取得
----
FORM F_SELECT_ZTFI0025 .
明細種類用アドオンテーブルデータの取得
IF IT_EKKN IS NOT INITIAL.
SELECT * FROM ZTFI0025 INTO
TABLE IT_ZTFI0025
FOR ALL ENTRIES IN IT_EKKN
WHERE ZBUKRS IN BUKRS
AND ZSAKTO = IT_EKKN-SAKTO.
*--明細種類用アドオンテーブルからの取得できない場合
IF SY-SUBRC <> 0.
W_ERR_FILE-ZERRMSG = TEXT-053.
APPEND W_ERR_FILE TO IT_KEIYAKU.
CLEAR : W_ERR_FILE.
ENDIF.
ENDIF.
ENDFORM. " F_SELECT_ZTFI0025
&----
*& Form F_MEISAI_CHECK
&----
明細チェック
----
FORM F_MEISAI_CHECK .
FIELD-SYMBOLS : <FS_1> TYPE ANY,
<FS_2> TYPE ANY.
DATA : L_TABIX TYPE SY-TABIX,
LW_FI23 TYPE ZTFI0023.
SORT IT_KOUBAI_SUCCESS BY ZZEBELN ZZBUKRS ZZLEAFI BEDNR.
LOOP AT IT_KOUBAI_SUCCESS INTO W_KOUBAI_SUCCESS.
G_TABIX = SY-TABIX.
AT LAST.
CONTINUE.
ENDAT.
L_TABIX = SY-TABIX + 1.
CLEAR W_KOUBAI_TEMP.
READ TABLE IT_KOUBAI_SUCCESS INTO W_KOUBAI_TEMP INDEX L_TABIX.
IF W_KOUBAI_SUCCESS-ZZEBELN = W_KOUBAI_TEMP-ZZEBELN AND
SY-SUBRC = 0.
DO 6 TIMES.
SY-INDEX = SY-INDEX + 3.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE W_KOUBAI_SUCCESS TO <FS_1>.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE W_KOUBAI_TEMP TO <FS_2>.
IF <FS_1> <> <FS_2>.
PERFORM F_GET_KEY USING W_KOUBAI_SUCCESS-ZZBUKRS
W_KOUBAI_SUCCESS-ZZLEAFI
W_KOUBAI_SUCCESS-ZZEBELN
CHANGING W_ERR_FILE-ZBUKRS
W_ERR_FILE-ZLEAFI
W_ERR_FILE-ZLEYM
W_ERR_FILE-ZLVTNR1
W_ERR_FILE-ZLVTNR2
W_ERR_FILE-ZZEBELN.
W_ERR_FILE-ZERRMSG = TEXT-011.
APPEND W_ERR_FILE TO IT_KEIYAKU.
CLEAR W_ERR_FILE.
DELETE IT_KOUBAI_SUCCESS WHERE ZZEBELN = W_KOUBAI_SUCCESS-ZZEBELN.
EXIT.
ENDIF.
ENDDO.
ENDIF.
CLEAR W_KOUBAI_SUCCESS.
ENDLOOP.
ENDFORM. " F_MEISAI_CHECK
&----
*& Form F_RKIKAN_CHECK
&----
リース期間のチェック
----
*FORM F_RKIKAN_CHECK USING I_W_ZTFI0023 TYPE ZTFI0023.
*
DATA : L_LEANZ TYPE ZTFI0023-ZZLEANZ,
L_ZEITR_ZLEANZ TYPE TVRG-ZEITR,
L_ZEITR_ZLRYTH TYPE TVRG-ZEITR,
L_KAISUU TYPE C LENGTH 2.
*
CLEAR : FLG_X.
*
IF NOT I_W_ZTFI0023-ZZLEANZ IS INITIAL AND
NOT I_W_ZTFI0023-ZZLRYTH IS INITIAL.
**--開始日と通知日付からリース期間の計算
PERFORM F_CAL_RKIKAN USING I_W_ZTFI0023-ZZLEABG
I_W_ZTFI0023-ZZLKDAT.
*
**--ゼロを入れる用汎用モジュール
L_KAISUU = I_W_ZTFI0023-ZZLEANZ.
PERFORM F_INSERT_ZERO USING L_KAISUU.
I_W_ZTFI0023-ZZLEANZ = L_KAISUU.
*
支払回数と支払周期のチェック
SELECT SINGLE ZEITR FROM TVRG
INTO L_ZEITR_ZLEANZ
WHERE REGEL = I_W_ZTFI0023-ZZLEANZ.
IF SY-SUBRC <> 0.
FLG_X = CNS_X.
EXIT.
ELSE.
SELECT SINGLE ZEITR FROM TVRG
INTO L_ZEITR_ZLRYTH
WHERE REGEL = I_W_ZTFI0023-ZZLRYTH.
IF SY-SUBRC <> 0.
FLG_X = CNS_X.
EXIT.
ENDIF.
ENDIF.
L_LEANZ = ( L_ZEITR_ZLEANZ * 12 ) / L_ZEITR_ZLRYTH.
G_RKIKAN_SIHARAI = L_ZEITR_ZLRYTH * L_LEANZ.
IF G_RKIKAN <> G_RKIKAN_SIHARAI.
FLG_X = CNS_X.
ENDIF.
ENDIF.
*
*ENDFORM. " F_RKIKAN_CHECK
&----
*& Form F_CAL_RKIKAN
&----
開始日と通知日付からリース期間の計算
----
FORM F_CAL_RKIKAN USING I_W_ZTFI0023_ZLEABG TYPE ANY
I_W_ZTFI0023_ZLKDAT TYPE ANY.
変数をクリアする
CLEAR : G_NO_DAYS, G_NO_MONTHS, G_NO_YEARS, G_RKIKAN.
DATA : L_BEGDA TYPE SY-DATUM,
L_ENDDA TYPE SY-DATUM,
L_NO_MONTHS TYPE I.
L_BEGDA = I_W_ZTFI0023_ZLEABG.
L_ENDDA = I_W_ZTFI0023_ZLKDAT.
2つの日付の間で何年、何か月、何日を計算する
CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
EXPORTING
BEG_DA = L_BEGDA
END_DA = L_ENDDA
IMPORTING
NO_DAY = G_NO_DAYS
NO_MONTH = G_NO_MONTHS
NO_YEAR = G_NO_YEARS
NO_CAL_DAY =
.
IF G_NO_DAYS >= 1.
ADD 1 TO G_NO_MONTHS.
ENDIF.
L_NO_MONTHS = G_NO_YEARS * 12.
G_RKIKAN = L_NO_MONTHS + G_NO_MONTHS.
ENDFORM. " F_CAL_RKIKAN
&----
*& Form F_KOUBAI_EXIST_CHECK
&----
購買発注伝票とリース契約テーブルが互いに存在するチェック
----
FORM F_KOUBAI_EXIST_CHECK .
購買発注伝票とリース契約テーブルが互いに存在すること
CLEAR W_ZTFI0023.
*--リース契約テーブルに購買発注ヘッダデータが存在しない場合
LOOP AT IT_FI23_TEMP INTO W_ZTFI0023.
G_TABIX = SY-TABIX.
READ TABLE IT_KOUBAI_DATA INTO W_KOUBAI_DATA WITH KEY
EBELN = W_ZTFI0023-ZZEBELN "購買伝票番号
BUKRS = W_ZTFI0023-ZZBUKRS. "会社コード
IF SY-SUBRC <> 0.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-042.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
CLEAR : W_ZTFI0023 , W_KOUBAI_DATA.
ENDLOOP.
IT_KOUBAI_TEMP[] = IT_KOUBAI_DATA[].
CLEAR W_KOUBAI_DATA.
*--購買発注ヘッダデータにリース契約データが存在しない場合
LOOP AT IT_KOUBAI_TEMP INTO W_KOUBAI_DATA.
READ TABLE IT_FI23_TEMP INTO W_ZTFI0023
WITH KEY ZZEBELN = W_KOUBAI_DATA-EBELN
ZZBUKRS = W_KOUBAI_DATA-BUKRS.
IF SY-SUBRC <> 0.
PERFORM F_GET_KEY USING W_KOUBAI_DATA-BUKRS
W_KOUBAI_DATA-LIFNR
W_KOUBAI_DATA-EBELN
CHANGING W_ERR_FILE-ZBUKRS
W_ERR_FILE-ZLEAFI
W_ERR_FILE-ZLEYM
W_ERR_FILE-ZLVTNR1
W_ERR_FILE-ZLVTNR2
W_ERR_FILE-ZZEBELN.
W_ERR_FILE-ZERRMSG = TEXT-041.
APPEND W_ERR_FILE TO IT_KEIYAKU.
ELSE.
*--指定された購買発注伝票番号が期間外の場合
IF NOT ( W_ZTFI0023-ZZLEABG = W_KOUBAI_DATA-KDATB AND
W_ZTFI0023-ZZLKDAT = W_KOUBAI_DATA-KDATE ).
PERFORM F_GET_KEY USING W_KOUBAI_DATA-BUKRS
W_KOUBAI_DATA-LIFNR
W_KOUBAI_DATA-EBELN
CHANGING W_ERR_FILE-ZBUKRS
W_ERR_FILE-ZLEAFI
W_ERR_FILE-ZLEYM
W_ERR_FILE-ZLVTNR1
W_ERR_FILE-ZLVTNR2
W_ERR_FILE-ZZEBELN.
W_ERR_FILE-ZERRMSG = TEXT-066.
APPEND W_ERR_FILE TO IT_KEIYAKU.
DELETE IT_KOUBAI_TEMP WHERE EBELN = W_KOUBAI_DATA-EBELN.
ELSE.
PERFORM F_GET_KEY USING W_KOUBAI_DATA-BUKRS
W_KOUBAI_DATA-LIFNR
W_KOUBAI_DATA-EBELN
CHANGING W_ERR_FILE-ZBUKRS
W_ERR_FILE-ZLEAFI
W_ERR_FILE-ZLEYM
W_ERR_FILE-ZLVTNR1
W_ERR_FILE-ZLVTNR2
W_ERR_FILE-ZZEBELN.
APPEND W_ERR_FILE TO IT_KEIYAKU.
ENDIF.
ENDIF.
CLEAR : W_KOUBAI_DATA , W_ZTFI0023, W_ERR_FILE.
ENDLOOP.
ENDFORM. " F_KOUBAI_EXIST_CHECK
&----
*& Form F_FIELDS_EXIST
&----
購買発注伝票とリース契約テーブルの項目の存在チェック
----
FORM F_FIELDS_EXIST.
DATA : L_LEANZ TYPE ZTFI0023-ZZLEANZ,
L_LRYTH TYPE ZTFI0023-ZZLRYTH.
CLEAR W_ZTFI0023.
LOOP AT IT_FI23_TEMP INTO W_ZTFI0023 WHERE ZZEBELN IS NOT INITIAL.
IF W_ZTFI0023-ZZACCT = CNS_1.
CLEAR W_KOUBAI_SUCCESS.
READ TABLE IT_KOUBAI_SUCCESS INTO W_KOUBAI_SUCCESS
WITH KEY ZZEBELN = W_ZTFI0023-ZZEBELN "購買発注伝票番号
ZZBUKRS = W_ZTFI0023-ZZBUKRS "会社コード
ZZLEAFI = W_ZTFI0023-ZZLEAFI "リース会社コード
BEDNR = W_ZTFI0023-ZZLVTNR1 "契約番号
ZZLEABG = W_ZTFI0023-ZZLEABG "開始日付
ZZLKDAT = W_ZTFI0023-ZZLKDAT "通知日付
ZZLEANZ = W_ZTFI0023-ZZLEANZ "支払回数
ZZLRYTH = W_ZTFI0023-ZZLRYTH. "支払周期
MENGE = W_ZTFI0023-ZZQUAN
NETPR = W_ZTFI0023-ZZLEGEB
NETPR_3 = W_ZTFI0023-ZZCONTAX.
ELSE.
CLEAR W_KOUBAI_SUCCESS.
READ TABLE IT_KOUBAI_SUCCESS INTO W_KOUBAI_SUCCESS
WITH KEY ZZEBELN = W_ZTFI0023-ZZEBELN "購買発注伝票番号
ZZBUKRS = W_ZTFI0023-ZZBUKRS "会社コード
ZZLEAFI = W_ZTFI0023-ZZLEAFI "リース会社コード
BEDNR = W_ZTFI0023-ZZLVTNR1 "契約番号
ZZLEABG = W_ZTFI0023-ZZLEABG "開始日付
ZZLKDAT = W_ZTFI0023-ZZLKDAT "通知日付
ZZLEANZ = W_ZTFI0023-ZZLEANZ "支払回数
ZZLRYTH = W_ZTFI0023-ZZLRYTH. "支払周期
MENGE = W_ZTFI0023-ZZQUAN
NETPR_3 = W_ZTFI0023-ZZCONTAX.
ENDIF.
IF SY-SUBRC <> 0.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-012.
CLEAR : W_KOUBAI_SUCCESS , W_ZTFI0023.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ENDLOOP.
ENDFORM. " F_FIELDS_EXIST
&----
*& Form F_PATTERN_CHECK
&----
パターンチェック
----
FORM F_PATTERN_CHECK .
DATA : FLG_1(1) TYPE C,
FLG_2(1) TYPE C,
FLG_3(1) TYPE C,
FLG_4(1) TYPE C,
FLG_TGR_KBN(1) TYPE C,
FLG_TGR_PO(1) TYPE C.
*--パターン内部テーブル作成
LOOP AT IT_KOUBAI_DATA INTO W_KOUBAI_DATA.
W_PATTERN-BUKRS = W_KOUBAI_DATA-BUKRS. "会社コード
W_PATTERN-EBELN = W_KOUBAI_DATA-EBELN. "購買伝票番号
W_PATTERN-EBELP = W_KOUBAI_DATA-EBELP. "購買伝票の明細番号
READ TABLE IT_EKKN INTO W_EKKN WITH KEY
ZZEBELN = W_KOUBAI_DATA-EBELN "購買伝票番号
EBELP = W_KOUBAI_DATA-EBELP. "購買伝票の明細番号
IF SY-SUBRC = 0.
W_PATTERN-SAKTO = W_EKKN-SAKTO.
ENDIF.
READ TABLE IT_ZTFI0025 INTO W_ZTFI0025 WITH KEY
ZBUKRS = W_KOUBAI_DATA-BUKRS "会社コード
ZSAKTO = W_EKKN-SAKTO. "G/L 勘定コード
IF SY-SUBRC = 0.
W_PATTERN-ZSHURUI = W_ZTFI0025-ZSHURUI. "明細種類
ENDIF.
APPEND W_PATTERN TO IT_PATTERN.
CLEAR : W_KOUBAI_DATA , W_PATTERN , W_EKKN.
ENDLOOP.
*--パターンチェック用処理
SORT IT_PATTERN BY BUKRS EBELN EBELP.
IT_PATTERN_T[] = IT_PATTERN[].
LOOP AT IT_PATTERN INTO W_PATTERN.
CLEAR : FLG_TGR_PO.
AT NEW EBELN.
FLG_TGR_PO = 'X'.
LOOP AT IT_PATTERN_T INTO W_PATTERN_T
WHERE EBELN = W_PATTERN-EBELN.
CLEAR : FLG_TGR_KBN.
AT NEW ZSHURUI.
FLG_TGR_KBN = 'X'.
ENDAT.
IF FLG_TGR_KBN = 'X'.
IF W_PATTERN_T-ZSHURUI = '1' AND FLG_1 <> 'X'.
FLG_1 = 'X'.
ELSEIF W_PATTERN_T-ZSHURUI = '2' AND FLG_2 <> 'X'.
FLG_2 = 'X'.
ELSEIF W_PATTERN_T-ZSHURUI = '3' AND FLG_3 <> 'X'.
FLG_3 = 'X'.
ELSEIF W_PATTERN_T-ZSHURUI = '0' AND FLG_4 <> 'X'.
FLG_4 = 'X'.
ELSE.
EXIT.
ENDIF.
ENDIF.
CLEAR : W_PATTERN_T.
ENDLOOP.
ENDAT.
IF FLG_TGR_PO = 'X'.
IF FLG_1 = 'X' AND FLG_2 = 'X' AND
FLG_3 = 'X' AND FLG_4 <> 'X'.
W_PATTERN-PATRN = 'A'.
W_KOUBAI_SUCCESS-PATTERN = 'A'.
W_KOUBAI_SUCCESS-ZZACCT = '1'. "1:売買処理[パターンがA.またはB.の時]
ELSEIF FLG_1 = 'X' AND FLG_3 = 'X' AND FLG_4 <> 'X'.
W_PATTERN-PATRN = 'B'.
W_KOUBAI_SUCCESS-PATTERN = 'B'.
W_KOUBAI_SUCCESS-ZZACCT = '1'. "1:売買処理[パターンがA.またはB.の時]
ELSEIF FLG_2 = 'X' AND FLG_3 = 'X' AND FLG_4 <> 'X'.
W_PATTERN-PATRN = 'C'.
W_KOUBAI_SUCCESS-PATTERN = 'C'.
W_KOUBAI_SUCCESS-ZZACCT = '2'. "2:賃貸借処理[パターンがC.の時]
ELSEIF FLG_2 = 'X' AND FLG_1 <> 'X' AND FLG_4 <> 'X'.
W_PATTERN-PATRN = 'D'.
W_KOUBAI_SUCCESS-PATTERN = 'D'.
ELSEIF FLG_4 = 'X'.
W_PATTERN-PATRN = 'E'.
ELSE.
W_PATTERN-PATRN = 'E'.
ENDIF.
CLEAR : FLG_1 , FLG_2 , FLG_3 , FLG_4.
MODIFY IT_PATTERN FROM W_PATTERN TRANSPORTING PATRN
WHERE EBELN = W_PATTERN-EBELN.
ENDIF.
CLEAR : W_PATTERN.
ENDLOOP.
LOOP AT IT_KOUBAI_DATA INTO W_KOUBAI_DATA
WHERE EBELN IS NOT INITIAL.
CLEAR : W_PATTERN.
READ TABLE IT_PATTERN INTO W_PATTERN
WITH KEY EBELN = W_KOUBAI_DATA-EBELN.
IF SY-SUBRC = 0.
IF W_PATTERN-PATRN = 'D'.
DELETE IT_KOUBAI_DATA WHERE EBELN = W_KOUBAI_DATA-EBELN.
ELSEIF W_PATTERN-PATRN = 'E'.
PERFORM F_GET_KEY USING W_KOUBAI_DATA-BUKRS
W_KOUBAI_DATA-LIFNR
W_KOUBAI_DATA-EBELN
CHANGING W_ERR_FILE-ZBUKRS
W_ERR_FILE-ZLEAFI
W_ERR_FILE-ZLEYM
W_ERR_FILE-ZLVTNR1
W_ERR_FILE-ZLVTNR2
W_ERR_FILE-ZZEBELN.
W_ERR_FILE-ZERRMSG = TEXT-010.
APPEND W_ERR_FILE TO IT_KEIYAKU.
DELETE IT_KOUBAI_DATA WHERE EBELN = W_KOUBAI_DATA-EBELN.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_PATTERN_CHECK
&----
*& Form F_MOVE_ERR_FILE
&----
一覧表示の場合[エラーメッセージ項目以外]
----
FORM F_MOVE_ERR_FILE .
DATA: L_TABIX TYPE SY-TABIX.
REFRESH : IT_SISAN_BUKKEN.
IT_SISAN_BUKKEN[] = IT_SISAN[].
*--リース契約資産データの取得
LOOP AT IT_SISAN INTO W_SISAN.
CLEAR: W_ZTFI0023, L_TABIX.
L_TABIX = SY-TABIX.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZBUKRS = W_SISAN-BUKRS
ZZANLN1 = W_SISAN-ANLN1
ZZANLN2 = W_SISAN-ANLN2.
IF SY-SUBRC <> 0.
DELETE IT_SISAN INDEX L_TABIX.
CONTINUE.
ENDIF.
ENDLOOP.
*--リース物件資産データの取得
LOOP AT IT_SISAN_BUKKEN INTO W_SISAN_BUKKEN.
CLEAR L_TABIX.
L_TABIX = SY-TABIX.
READ TABLE IT_ZTFI0024 INTO W_ZTFI0024
WITH KEY ZZBUKRS = W_SISAN_BUKKEN-BUKRS
ZZANLN1 = W_SISAN_BUKKEN-ANLN1.
IF SY-SUBRC <> 0.
DELETE IT_SISAN_BUKKEN INDEX L_TABIX.
CONTINUE.
ENDIF.
ENDLOOP.
*-- 一覧表示の場合リース契約.物件データの取得
CLEAR L_TABIX.
IF R_ICHIRN = CNS_X.
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023.
*--リース契約データの取得
MOVE-CORRESPONDING W_ZTFI0023 TO W_ERR_FILE1.
PERFORM F_MOVE_23_ERROR USING W_ZTFI0023
CHANGING W_ERR_FILE1.
*--リース契約資産データの取得
CLEAR W_ANLA.
READ TABLE IT_ANLA INTO W_ANLA
WITH KEY BUKRS = W_ZTFI0023-ZZBUKRS
ANLN1 = W_ZTFI0023-ZZANLN1
ANLN2 = W_ZTFI0023-ZZANLN2.
IF SY-SUBRC = 0.
START 11/12/08
PERFORM F_OWRITE_KEIYAKU USING W_ANLA
CHANGING W_ERR_FILE1.
END 11/12/08
W_ERR_FILE1-AKTIV = W_ANLA-AKTIV.
W_ERR_FILE1-DEAKT = W_ANLA-DEAKT.
ENDIF.
*--リース契約資産データの取得
CLEAR W_SISAN.
LOOP AT IT_SISAN INTO W_SISAN
WHERE BUKRS = W_ZTFI0023-ZZBUKRS
AND ANLN1 = W_ZTFI0023-ZZANLN1
AND ANLN2 = W_ZTFI0023-ZZANLN2.
PERFORM F_MOVE_SISAN USING W_SISAN.
ENDLOOP.
PERFORM F_OVER_WRITE USING W_SISAN
CHANGING W_ERR_FILE1.
*--リース物件データの取得
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024
WHERE ZZBUKRS = W_ZTFI0023-ZZBUKRS
AND ZZLEAFI = W_ZTFI0023-ZZLEAFI
AND ZZLEYM = W_ZTFI0023-ZZLEYM
AND ZZLVTNR1 = W_ZTFI0023-ZZLVTNR1
AND ZZLVTNR2 = W_ZTFI0023-ZZLVTNR2.
L_TABIX = SY-TABIX.
MOVE-CORRESPONDING W_ZTFI0024 TO W_ERR_FILE1.
PERFORM F_MOVE_24_ERROR USING W_ZTFI0024
CHANGING W_ERR_FILE1.
WRITE W_ZTFI0024-ZZLBARW TO W_ERR_FILE1-ZLBARW4 CURRENCY 'JPY'.
WRITE W_ZTFI0024-ZZMAINTE TO W_ERR_FILE1-ZZMAINTE CURRENCY 'JPY'.
WRITE W_ZTFI0024-ZZLGADV TO W_ERR_FILE1-ZZLGADV CURRENCY 'JPY'.
*--リース物件資産データの取得
CLEAR W_ANLA.
LOOP AT IT_ANLA INTO W_ANLA
WHERE BUKRS = W_ZTFI0024-ZZBUKRS
AND ANLN1 = W_ZTFI0024-ZZANLN1.
W_ERR_FILE1-ANLN1 = W_ANLA-ANLN1.
W_ERR_FILE1-LVTNR = W_ANLA-ANLN2.
PERFORM F_OWRITE_BUKKEN USING W_ANLA
CHANGING W_ERR_FILE1.
ENDLOOP.
ENDIF.
*--リース物件資産データの取得
CLEAR W_SISAN_BUKKEN.
LOOP AT IT_SISAN_BUKKEN INTO W_SISAN_BUKKEN
WHERE BUKRS = W_ZTFI0024-ZZBUKRS
AND ANLN1 = W_ZTFI0024-ZZANLN1
AND ANLN2 = W_ANLA-ANLN2.
PERFORM F_MOVE_SISAN USING W_SISAN_BUKKEN.
ENDLOOP.
PERFORM F_OVER_WRITE_24 USING W_SISAN_BUKKEN
CHANGING W_ERR_FILE1.
APPEND W_ERR_FILE1 TO IT_ERR_FILE1.
ENDLOOP.
IF SY-SUBRC <> 0.
APPEND W_ERR_FILE1 TO IT_ERR_FILE1.
ENDIF.
ENDIF.
CLEAR W_ZTFI0024.
ENDLOOP.
IF SY-SUBRC <> 0.
APPEND W_ERR_FILE1 TO IT_ERR_FILE1.
ENDIF.
ENDIF.
CLEAR: W_ZTFI0023, W_ERR_FILE1.
ENDLOOP.
ENDIF.
*--ソート処理
SORT IT_ERR_FILE1 BY ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4 ANLN1 LVTNR.
ENDFORM. " F_MOVE_ERR_FILE
&----
*& Form F_KEIYAKU_SHISAN_CHECK
&----
リース契約.資産の単体/関連チェック
----
FORM F_KEIYAKU_SHISAN_CHECK .
IF P_KEYAKU = CNS_X AND
R_CHECK = CNS_X.
*--リース契約テーブルの項目チェック
PERFORM F_KEIYAKU_EXIST_CHECK.
**--リース契約資産の償却条件のチェック
PERFORM F_SHOKYAKU_JOKEN_CHECK.
*--リース契約.資産の互いに存在する事のチェック
PERFORM F_ANLA_EXIST_CHECK.
*--リース契約.資産の項目チェック
PERFORM F_KEIYAKU_FLD_EXIST.
ENDIF.
ENDFORM. " F_KEIYAKU_SHISAN_CHECK
&----
*& Form F_KEIYAKU_EXIST_CHECK
&----
リース契約テーブルの項目チェック
----
FORM F_KEIYAKU_EXIST_CHECK .
IF IT_ZTFI0023 IS NOT INITIAL.
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023.
リース契約資産番号のチェック
IF W_ZTFI0023-ZZANLN1 IS INITIAL.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-013.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
リース契約資産補助番号のチェック
IF W_ZTFI0023-ZZANLN2 IS INITIAL.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-014.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
リース債務登録伝票番号のチェック
IF W_ZTFI0023-ZZBELNR92_AA IS INITIAL.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-015.
ENDIF.
消費税計上伝票番号のチェック
IF W_ZTFI0023-ZZBELNR96_FI IS INITIAL.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-016.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
消費税登録伝票番号のチェック
IF W_ZTFI0023-ZZBELNR96_AA IS INITIAL.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-017.
ENDIF.
利息定額登録伝票番号のチェック
IF W_ZTFI0023-ZZBELNR97_AA IS INITIAL.
IF W_ZTFI0023-ZZACCT = 1 AND
W_ZTFI0023-ZZINTEREST = 3.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-018.
ENDIF.
ENDIF.
*--リース契約資産の償却条件のチェック
PERFORM F_SHOKYAKU_JOKEN_CHECK.
CLEAR : W_ZTFI0023.
ENDLOOP.
ENDIF.
ENDFORM. " F_KEIYAKU_EXIST_CHECK
&----
*& Form F_SHOKYAKU_JOKEN_CHECK
&----
リース契約資産の償却条件のチェック
----
FORM F_SHOKYAKU_JOKEN_CHECK .
IF IT_ZTFI0023 IS NOT INITIAL.
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023.
G_TABIX = SY-TABIX.
READ TABLE IT_SISAN INTO W_SISAN
WITH KEY BUKRS = W_ZTFI0023-ZZBUKRS
ANLN1 = W_ZTFI0023-ZZANLN1
ANLN2 = W_ZTFI0023-ZZANLN2.
IF SY-SUBRC = 0.
IF W_SISAN-NDJAR <> W_ZTFI0023-ZZLEJAR OR
W_SISAN-NDPER <> W_ZTFI0023-ZZLEPER.
**--リース期間の計算
PERFORM F_CAL_RKIKAN USING W_ZTFI0023-ZZLEABG
W_ZTFI0023-ZZLKDAT.
IF W_SISAN-NDJAR <> G_NO_YEARS OR
W_SISAN-NDPER <> G_NO_MONTHS.
*--LDB[論理データベース]からエラーファイルにアッペンドする
CLEAR W_SISAN.
LOOP AT IT_SISAN INTO W_SISAN
WHERE BUKRS = W_ZTFI0023-ZZBUKRS
AND ANLN1 = W_ZTFI0023-ZZANLN1
AND ANLN2 = W_ZTFI0023-ZZANLN2.
PERFORM F_MOVE_SISAN USING W_SISAN.
ENDLOOP.
PERFORM F_OVER_WRITE USING W_SISAN
CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
*--リース契約テーブル「ZTFI0023」からエラーファイルにアッペンドする
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-025.
ELSE.
*--LDB[論理データベース]からエラーファイルにアッペンドする
CLEAR W_SISAN.
LOOP AT IT_SISAN INTO W_SISAN
WHERE BUKRS = W_ZTFI0023-ZZBUKRS
AND ANLN1 = W_ZTFI0023-ZZANLN1
AND ANLN2 = W_ZTFI0023-ZZANLN2.
PERFORM F_MOVE_SISAN USING W_SISAN.
ENDLOOP.
PERFORM F_OVER_WRITE USING W_SISAN
CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
*--リース契約テーブル「ZTFI0023」からエラーファイルにアッペンドする
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-062.
ENDIF.
ENDIF.
IF W_ZTFI0023-ZZACCT = CNS_1 AND
W_ZTFI0023-ZZINTEREST = CNS_1.
PERFORM F_SOKYAKU_CHECK USING CNS_96 "消費税領域
CNS_ZZ00
CNS_92 "リース負債利息領域
CNS_ZLS2
CNS_97 "リース利息定額領域
CNS_0000.
IF FLG1_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-019.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG2_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-020.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG3_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-021.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ELSEIF W_ZTFI0023-ZZACCT = CNS_1 AND
W_ZTFI0023-ZZINTEREST = CNS_2.
PERFORM F_SOKYAKU_CHECK USING CNS_96 "消費税領域
CNS_ZZ00
CNS_92 "リース負債利息領域
CNS_ZZ00
CNS_97 "リース利息定額領域
CNS_0000.
IF FLG1_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-019.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG2_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-022.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG3_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-021.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ELSEIF W_ZTFI0023-ZZACCT = CNS_1 AND
W_ZTFI0023-ZZINTEREST = CNS_3.
PERFORM F_SOKYAKU_CHECK USING CNS_96 "消費税領域
CNS_ZZ00
CNS_92 "リース負債利息領域
CNS_ZZ00
CNS_97 "リース利息定額領域
CNS_ZZ00.
IF FLG1_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-019.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG2_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-022.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG3_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-023.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ELSEIF W_ZTFI0023-ZZACCT = CNS_2.
PERFORM F_SOKYAKU_CHECK USING CNS_96 "消費税領域
CNS_ZZ00
CNS_92 "リース負債利息領域
CNS_0000
CNS_97 "リース利息定額領域
CNS_0000.
IF FLG1_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-019.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG2_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-024.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
IF FLG3_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-021.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ENDIF.
CLEAR : W_ZTFI0023.
ENDLOOP.
ENDIF.
ENDFORM. " F_SHOKYAKU_JOKEN_CHECK
&----
*& Form F_SOKYAKU_CHECK
&----
償却チェック
----
FORM F_SOKYAKU_CHECK USING I_CNS_SHOHIZEI TYPE C
I_CNS_ZZ00 TYPE C
I_CNS_RISOKU92 TYPE C
I_CNS_RISOKU TYPE C
I_CNS_RISOKUTEI97 TYPE C
I_CNS_RISOKUTEI TYPE C.
READ TABLE IT_SISAN INTO W_SISAN
WITH KEY AFABE = I_CNS_SHOHIZEI
AFASL = I_CNS_ZZ00
BUKRS = W_ZTFI0023-ZZBUKRS
ANLN1 = W_ZTFI0023-ZZANLN1
ANLN2 = W_ZTFI0023-ZZANLN2.
IF SY-SUBRC <> 0.
PERFORM F_MOVE_FROM_SISAN USING W_SISAN.
FLG1_X = CNS_X.
ENDIF.
READ TABLE IT_SISAN INTO W_SISAN
WITH KEY AFABE = I_CNS_RISOKU92
AFASL = I_CNS_RISOKU
BUKRS = W_ZTFI0023-ZZBUKRS
ANLN1 = W_ZTFI0023-ZZANLN1
ANLN2 = W_ZTFI0023-ZZANLN2.
IF SY-SUBRC <> 0.
PERFORM F_MOVE_FROM_SISAN USING W_SISAN.
FLG2_X = CNS_X.
ENDIF.
READ TABLE IT_SISAN INTO W_SISAN
WITH KEY AFABE = I_CNS_RISOKUTEI97
AFASL = I_CNS_RISOKUTEI
BUKRS = W_ZTFI0023-ZZBUKRS
ANLN1 = W_ZTFI0023-ZZANLN1
ANLN2 = W_ZTFI0023-ZZANLN2.
IF SY-SUBRC <> 0.
PERFORM F_MOVE_FROM_SISAN USING W_SISAN.
FLG3_X = CNS_X.
ENDIF.
ENDFORM. " F_SOKYAKU_CHECK
&----
*& Form F_ANLA_EXIST_CHECK
&----
リース契約.資産の互いに存在する事のチェック
----
FORM F_ANLA_EXIST_CHECK .
*--リース契約テーブルにリース契約資産データが存在しない場合
CLEAR : W_ZTFI0023.
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023
WHERE ZZANLN1 IS NOT INITIAL.
CLEAR : W_ANLA.
READ TABLE IT_ANLA INTO W_ANLA
WITH KEY BUKRS = W_ZTFI0023-ZZBUKRS
ANLN1 = W_ZTFI0023-ZZANLN1
ANLN2 = W_ZTFI0023-ZZANLN2.
IF SY-SUBRC <> 0.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-043.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ENDLOOP.
*--リース契約資産テーブルにリース契約テータが存在しない場合
CLEAR : W_ANLA.
LOOP AT IT_ANLA INTO W_ANLA.
CLEAR : W_ZTFI0023.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZBUKRS = W_ANLA-BUKRS
ZZANLN1 = W_ANLA-ANLN1
ZZANLN2 = W_ANLA-ANLN2.
IF SY-SUBRC <> 0.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
W_ERR_FILE-ZERRMSG = TEXT-044.
W_ERR_FILE-ZBUKRS = W_ANLA-BUKRS.
W_ERR_FILE-ZANLN1 = W_ANLA-ANLN1.
W_ERR_FILE-ZZANLN2 = W_ANLA-ANLN2.
W_ERR_FILE-ZLEAFI = W_ANLA-LEAFI.
APPEND W_ERR_FILE TO IT_KEIYAKU_SHISAN.
ELSE.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
W_ERR_FILE-ZBUKRS = W_ANLA-BUKRS.
W_ERR_FILE-ZANLN1 = W_ANLA-ANLN1.
W_ERR_FILE-ZZANLN2 = W_ANLA-ANLN2.
W_ERR_FILE-ZLEAFI = W_ANLA-LEAFI.
APPEND W_ERR_FILE TO IT_KEIYAKU_SHISAN.
ENDIF.
CLEAR : W_ZTFI0023 , W_ANLA.
ENDLOOP.
ENDFORM. " F_ANLA_EXIST_CHECK
&----
*& Form F_KEIYAKU_FLD_EXIST
&----
リース契約.資産の項目チェック
----
FORM F_KEIYAKU_FLD_EXIST .
LOOP AT IT_ANLA INTO W_ANLA.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZBUKRS = W_ANLA-BUKRS
ZZANLN1 = W_ANLA-ANLN1
ZZANLN2 = W_ANLA-ANLN2.
IF SY-SUBRC = 0.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZLEAFI = W_ANLA-LIFNR "リース会社
ZZINVNR_ANLA = W_ANLA-INVNR "棚卸番号
ZZLVTNR1 = W_ANLA-LVTNR. "契約番号
IF SY-SUBRC = 0 AND
W_ZTFI0023-ZZACCT = CNS_1.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZLVDAT = W_ANLA-LVDAT "契約日
ZZLKDAT = W_ANLA-LKDAT "通知日付
ZZLEABG = W_ANLA-LEABG "開始日付
ZZLEJAR = W_ANLA-LEJAR "リース期間(年数)
ZZLEPER = W_ANLA-LEPER "リース期間(月数)
ZZLEART = W_ANLA-LEART "リースタイプ
ZZLBASW = W_ANLA-LBASW "基準価額
ZZLKAUF = W_ANLA-LKAUF "買取価額
ZZLETXT = W_ANLA-LETXT "追加テキスト
ZZLEANZ = W_ANLA-LEANZ "支払回数
ZZLRYTH = W_ANLA-LRYTH "支払周期
ZZLEGEB = W_ANLA-LEGEB. "リース料
ZZACCT = CNS_1. "経理処理区分
IF SY-SUBRC = 0.
IF W_ZTFI0023-ZZACCT = CNS_1 AND
W_ZTFI0023-ZZINTEREST = CNS_1.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZLVORS = W_ANLA-LVORS "前払
ZZLZINS = W_ANLA-LZINS. "年利
ZZACCT = CNS_1 "経理処理区分
ZZINTEREST = CNS_1. "利息処理区分
IF SY-SUBRC <> 0.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
PERFORM F_MOVE_ANLA_ERROR USING W_ANLA TEXT-026.
ELSE.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
PERFORM F_MOVE_ANLA_ERROR USING W_ANLA SPACE.
ENDIF.
ENDIF.
ELSE.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
PERFORM F_MOVE_ANLA_ERROR USING W_ANLA TEXT-026.
ENDIF.
ELSE.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
PERFORM F_MOVE_ANLA_ERROR USING W_ANLA TEXT-026.
ENDIF.
ENDIF.
CLEAR : W_ZTFI0023 , W_ANLA.
ENDLOOP.
ENDFORM. " F_KEIYAKU_FLD_EXIST
&----
*& Form F_BUKKEN_KANREN_CHECK
&----
リース物件.資産の単体/関連チェック
----
FORM F_BUKKEN_KANREN_CHECK .
IF P_BUKKEN = CNS_X AND
R_CHECK = CNS_X.
*--リース物件データの存在チェック
PERFORM F_BUKKEN_EXIST_CHECK.
*--物件.償却のチェック
PERFORM F_BUKKEN_SOKYAKU_CHECK.
*--リース物件.資産が互いに存在する事のチェック
PERFORM F_BUKKEN_ANLA_CHECK.
*--リース物件項目の存在チェック
PERFORM F_BUKKEN_FLD_EXIST.
ENDIF.
ENDFORM. " F_BUKKEN_KANREN_CHECK
&----
*& Form F_BUKKEN_EXIST_CHECK
&----
リース物件データの存在チェック
----
FORM F_BUKKEN_EXIST_CHECK .
CLEAR : W_ZTFI0024.
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024.
リース資産登録伝票番号のチェック
IF W_ZTFI0024-ZZBELNR01_FI IS INITIAL.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-027.
ELSE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 SPACE.
ENDIF.
READ TABLE IT_ZTFI0023 INTO W_ZTFI0023
WITH KEY ZZBUKRS = W_ZTFI0024-ZZBUKRS
ZZLEAFI = W_ZTFI0024-ZZLEAFI
ZZLEYM = W_ZTFI0024-ZZLEYM
ZZLVTNR1 = W_ZTFI0024-ZZLVTNR1
ZZLVTNR2 = W_ZTFI0024-ZZLVTNR2.
IF SY-SUBRC = 0.
経理処理が賃貸借処理は除くの場合
IF W_ZTFI0023-ZZACCT <> CNS_2.
維持費用登録伝票番号のチェック
IF W_ZTFI0024-ZZMAINTE IS NOT INITIAL AND
W_ZTFI0024-ZZBELNR98_AA IS INITIAL.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-028.
DELETE IT_ZTFI0024 INDEX G_TABIX.
ENDIF.
長期前受収益登録伝票番号のチェック
IF W_ZTFI0024-ZZLGADV IS NOT INITIAL AND
W_ZTFI0024-ZZBELNR99_AA IS INITIAL.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-029.
DELETE IT_ZTFI0024 INDEX G_TABIX.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_BUKKEN_EXIST_CHECK
&----
*& Form F_BUKKEN_JOKYAKU_CHECK
&----
物件.償却のチェック
----
FORM F_BUKKEN_SOKYAKU_CHECK .
*耐用年数、耐用月数はリース期間と同じに設定されている事のチェック
CLEAR: W_ZTFI0023,W_ZTFI0024.
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024.
CLEAR W_SISAN_BUKKEN.
READ TABLE IT_SISAN_BUKKEN INTO W_SISAN_BUKKEN
WITH KEY BUKRS = W_ZTFI0024-ZZBUKRS
ANLN1 = W_ZTFI0024-ZZANLN1
ANLN2 = CNS_0000
AFABE = CNS_15.
IF SY-SUBRC = 0.
IF W_SISAN-NDJAR <> W_ZTFI0024-ZZNDJAR15 OR
W_SISAN-NDPER <> W_ZTFI0024-ZZNDPER15.
CLEAR W_SISAN.
LOOP AT IT_SISAN INTO W_SISAN
WHERE BUKRS = W_ZTFI0024-ZZBUKRS
AND ANLN1 = W_ZTFI0024-ZZANLN1
AND ANLN2 = W_ZTFI0024-ZZLVTNR2.
PERFORM F_MOVE_SISAN USING W_SISAN.
ENDLOOP.
PERFORM F_OVER_WRITE_24 USING W_SISAN
CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-025.
ELSE.
CLEAR W_SISAN.
LOOP AT IT_SISAN INTO W_SISAN
WHERE BUKRS = W_ZTFI0024-ZZBUKRS
AND ANLN1 = W_ZTFI0024-ZZANLN1
AND ANLN2 = W_ZTFI0024-ZZLVTNR2.
PERFORM F_MOVE_SISAN USING W_SISAN.
ENDLOOP.
PERFORM F_OVER_WRITE_24 USING W_SISAN
CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 SPACE.
ENDIF.
税法領域は補助番号がゼロの場合、リース物件資産の償却条件
IF W_ZTFI0024-ZZAFASL15 <> CNS_ZZ00.
CLEAR W_SISAN.
LOOP AT IT_SISAN INTO W_SISAN
WHERE BUKRS = W_ZTFI0024-ZZBUKRS
AND ANLN1 = W_ZTFI0024-ZZANLN1
AND ANLN2 = W_ZTFI0024-ZZLVTNR2.
PERFORM F_MOVE_SISAN USING W_SISAN.
ENDLOOP.
PERFORM F_OVER_WRITE_24 USING W_SISAN
CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-030.
ELSE.
CLEAR W_SISAN.
LOOP AT IT_SISAN INTO W_SISAN
WHERE BUKRS = W_ZTFI0024-ZZBUKRS
AND ANLN1 = W_ZTFI0024-ZZANLN1
AND ANLN2 = W_ZTFI0024-ZZLVTNR2.
PERFORM F_MOVE_SISAN USING W_SISAN.
ENDLOOP.
PERFORM F_OVER_WRITE_24 USING W_SISAN
CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 SPACE.
ENDIF.
ENDIF.
CLEAR : W_ZTFI0023 , W_ZTFI0024.
ENDLOOP.
ENDFORM. " F_BUKKEN_JOKYAKU_CHECK
&----
*& Form F_BUKKEN_ANLA_CHECK
&----
リース物件.資産が互いに存在する事のチェック
----
FORM F_BUKKEN_ANLA_CHECK .
*--リース物件テーブルにリース物件資産データが存在しない場合
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024
WHERE ZZANLN1 IS NOT INITIAL.
READ TABLE IT_ANLA_BUKKEN INTO W_ANLA_BUKKEN
WITH KEY BUKRS = W_ZTFI0024-ZZBUKRS
ANLN1 = W_ZTFI0024-ZZANLN1.
IF SY-SUBRC <> 0.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-045.
ELSE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 SPACE.
ENDIF.
CLEAR : W_ANLA_BUKKEN , W_ZTFI0024.
ENDLOOP.
*--リース物件資産テーブルにリース物件テータが存在しない場合
LOOP AT IT_ANLA_BUKKEN INTO W_ANLA_BUKKEN.
READ TABLE IT_ZTFI0024 INTO W_ZTFI0024
WITH KEY ZZBUKRS = W_ANLA_BUKKEN-BUKRS
ZZANLN1 = W_ANLA_BUKKEN-ANLN1.
IF SY-SUBRC <> 0.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA_BUKKEN TO W_ERR_FILE.
PERFORM F_MOVE_ANLA_BUKKEN USING W_ANLA_BUKKEN TEXT-046.
ELSE.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA_BUKKEN TO W_ERR_FILE.
PERFORM F_MOVE_ANLA_BUKKEN USING W_ANLA_BUKKEN SPACE.
ENDIF.
CLEAR : W_ANLA_BUKKEN , W_ZTFI0024.
ENDLOOP.
ENDFORM. " F_BUKKEN_ANLA_CHECK
&----
*& Form F_BUKKEN_FLD_EXIST
&----
リース物件項目の存在チェック
----
FORM F_BUKKEN_FLD_EXIST .
LOOP AT IT_ANLA_BUKKEN INTO W_ANLA_BUKKEN.
READ TABLE IT_ZTFI0024 INTO W_ZTFI0024
WITH KEY ZZBUKRS = W_ANLA_BUKKEN-BUKRS
ZZANLN1 = W_ANLA_BUKKEN-ANLN1.
IF SY-SUBRC = 0.
*--リース物件項目[棚卸番号,リース会社,リース契約番号]の存在チェック
READ TABLE IT_ZTFI0024 INTO W_ZTFI0024
WITH KEY ZZINVNR_ANLA = W_ANLA_BUKKEN-INVNR "棚卸番号
ZZLEAFI = W_ANLA_BUKKEN-LEAFI "リース会社
ZZLVTNR1 = W_ANLA_BUKKEN-LVTNR. "リース契約番号
IF SY-SUBRC <> 0.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
PERFORM F_MOVE_ANLA_BUKKEN USING W_ANLA_BUKKEN TEXT-033.
ELSE.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
PERFORM F_MOVE_ANLA_BUKKEN USING W_ANLA_BUKKEN SPACE.
ENDIF.
ENDIF.
CLEAR : W_ANLA_BUKKEN , W_ZTFI0024.
ENDLOOP.
ENDFORM. " F_BUKKEN_FLD_EXIST
&----
*& Form F_TANAOROSHI_CHECK
&----
棚卸番号の重複チェック
----
FORM F_TANAOROSHI_CHECK .
棚卸番号の重複チェック
IF P_REPEAT = CNS_X AND
R_CHECK = CNS_X.
R_ICHIRN <> CNS_X.
リース契約資産の棚卸番号の重複チェック
IF IT_ZTFI0023 IS NOT INITIAL.
SELECT * FROM ANLA INTO TABLE IT_ANLA
FOR ALL ENTRIES IN IT_ZTFI0023
WHERE ANLN1 = IT_ZTFI0023-ZZANLN1 AND
ANLN2 = CNS_0.
ENDIF.
*
IF IT_ANLA IS NOT INITIAL.
PERFORM F_DELETE_INVNR TABLES IT_ANLA.
ELSE.
W_ERR_FILE-ZERRMSG = TEXT-063.
APPEND W_ERR_FILE TO IT_ERR_FILE.
ENDIF.
REFRESH IT_ANLA_TEMP.
CLEAR IT_ANLA_TEMP.
リース物件資産の棚卸番号の重複チェック
IF IT_ZTFI0024 IS NOT INITIAL.
SELECT * FROM ANLA INTO TABLE IT_ANLA_TEMP
FOR ALL ENTRIES IN IT_ZTFI0024
WHERE ANLN1 = IT_ZTFI0024-ZZANLN1 AND
ANLN2 = CNS_0000.
ENDIF.
IF IT_ANLA_TEMP IS NOT INITIAL.
PERFORM F_DELETE_INVNR TABLES IT_ANLA_TEMP.
ELSE.
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024.
W_ERR_FILE-ZBUKRS = W_ZTFI0024-ZZBUKRS. "会社コード
W_ERR_FILE-ZLEYM = W_ZTFI0024-ZZLEYM. "開始年月
*--141208
W_ERR_FILE-ZLVTNR1 = W_ZTFI0024-ZZLVTNR1. "リース契約番号
W_ERR_FILE-ZLVTNR2 = W_ZTFI0024-ZZLVTNR2. "リース契約枝番
*--141208
W_ERR_FILE-ZLEAFI = W_ZTFI0024-ZZLEAFI. "リース会社
W_ERR_FILE-ANLN1 = W_ZTFI0024-ZZANLN1. "資産番号
W_ERR_FILE-LEAFI = W_ZTFI0024-ZZLEAFI. "リース会社
W_ERR_FILE-INVNR4 = W_ZTFI0024-ZZINVNR_ANLA. "物件番号
W_ERR_FILE-LVTNR4 = W_ZTFI0024-ZZLVTNR1. "(物件)契約番号
W_ERR_FILE-ZERRMSG = TEXT-064. "エラーメッセージ
APPEND W_ERR_FILE TO IT_BUKKEN.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " F_TANAOROSHI_CHECK
&----
*& Form F_KAIKEI_TENKI_CHECK
&----
会計伝票の転記チェック
----
FORM F_KAIKEI_TENKI_CHECK .
DATA : L_DAT TYPE CHAR6, "日付
L_MONTH TYPE MONAT, "会計期間
L_GJAHR TYPE GJAHR, "会計年度
L_BUKRS TYPE ANLA-BUKRS, "会社コード
L_FPLNR TYPE EKPO-FPLNR, "支払計画番号
LW_AFDAT TYPE FPLT-AFDAT, "請求索引および印刷に対する請求日
W_SUBRC TYPE SY-SUBRC. "リターンコード
CLEAR: L_MONTH.
IF P_TENKI = CNS_X AND
R_CHECK = CNS_X.
IF P_MONAT = CNS_1.
L_MONTH = CNS_12.
L_GJAHR = P_GJAHR - 1.
ELSE.
L_GJAHR = P_GJAHR.
L_MONTH = P_MONAT - 1.
ENDIF.
CONCATENATE L_GJAHR L_MONTH INTO L_DAT.
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023.
*--購買発注伝票がある場合,選択画面の会計期間の前月まで会計伝票の存在チェック
IF W_ZTFI0023-ZZEBELN IS NOT INITIAL.
SELECT ABUKRS AEBELN B~FPLNR
FROM EKKO AS A INNER
JOIN EKPO AS B
ON AEBELN = BEBELN
INTO CORRESPONDING FIELDS OF
TABLE IT_FPLNR
WHERE A~EBELN = W_ZTFI0023-ZZEBELN
AND A~BUKRS = W_ZTFI0023-ZZBUKRS
AND A~BSTYP = CNS_F
AND A~BSART = CNS_ZFO.
CLEAR: W_FPLNR, W_SUBRC.
LOOP AT IT_FPLNR INTO W_FPLNR.
*--請求計画:日付から「請求索引および印刷に対する請求日」の取得
SELECT AFDAT
FROM FPLT
INTO LW_AFDAT
UP TO 1 ROWS
WHERE FPLNR = W_FPLNR-FPLNR "明細: 請求計画/支払計画/支払カード
AND FKSAF = CNS_C. "処理完了
ENDSELECT.
W_SUBRC = SY-SUBRC.
IF SY-SUBRC = 0.
EXIT.
ENDIF.
ENDLOOP.
IF W_SUBRC <> 0 OR
LW_AFDAT+0(6) >= L_DAT.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-047.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ENDIF.
*--消費税計上伝票番号の存在チェック
IF W_ZTFI0023-ZZBELNR96_FI IS NOT INITIAL.
PERFORM F_KAIKEI_DENPYOU_CHECK USING W_ZTFI0023-ZZBUKRS
W_ZTFI0023-ZZBELNR96_FI.
IF FLG_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-034.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ENDIF.
*--リース債務登録伝票番号の存在チェック
IF W_ZTFI0023-ZZBELNR92_AA IS NOT INITIAL.
PERFORM F_DENPYOU_CHECK USING W_ZTFI0023-ZZBUKRS
W_ZTFI0023-ZZANLN1
W_ZTFI0023-ZZANLN2
W_ZTFI0023-ZZBELNR92_AA.
IF FLG_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-035.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ENDIF.
*--利息定額登録伝票番号の存在チェック
IF W_ZTFI0023-ZZBELNR97_AA IS NOT INITIAL.
PERFORM F_DENPYOU_CHECK USING W_ZTFI0023-ZZBUKRS
W_ZTFI0023-ZZANLN1
W_ZTFI0023-ZZANLN2
W_ZTFI0023-ZZBELNR97_AA.
IF FLG_X = CNS_X.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 TEXT-036.
ELSE.
PERFORM F_MOVE_TO_ERR_FILE USING W_ZTFI0023 SPACE.
ENDIF.
ENDIF.
CLEAR : W_ZTFI0023.
ENDLOOP.
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024.
*--リース資産登録伝票番号の存在チェック
IF W_ZTFI0024-ZZBELNR01_FI IS NOT INITIAL.
PERFORM F_KAIKEI_DENPYOU_CHECK USING W_ZTFI0024-ZZBUKRS
W_ZTFI0024-ZZBELNR01_FI.
IF FLG_X = CNS_X.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-037.
ELSE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 SPACE.
ENDIF.
ENDIF.
*--維持費用登録伝票番号の存在チェック
IF W_ZTFI0024-ZZBELNR98_AA IS NOT INITIAL.
PERFORM F_DENPYOU_CHECK_24 USING W_ZTFI0024-ZZBUKRS
W_ZTFI0024-ZZANLN1
W_ZTFI0024-ZZBELNR98_AA.
IF FLG_X = CNS_X.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-038.
ELSE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 SPACE.
ENDIF.
ENDIF.
*--長期前受収益登録伝票番号の存在チェック
IF W_ZTFI0024-ZZBELNR99_AA IS NOT INITIAL.
PERFORM F_DENPYOU_CHECK_24 USING W_ZTFI0024-ZZBUKRS
W_ZTFI0024-ZZANLN1
W_ZTFI0024-ZZBELNR99_AA.
IF FLG_X = CNS_X.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 TEXT-039.
ELSE.
PERFORM F_MOVE_FROM_24 USING W_ZTFI0024 SPACE.
ENDIF.
ENDIF.
CLEAR : W_ZTFI0024.
ENDLOOP.
*--償却記帳のチェック
READ TABLE IT_ANLA INTO W_ANLA INDEX 1.
IF W_ANLA-AKTIV+0(6) >= L_DAT.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
PERFORM F_MOVE_ANLA_ERROR USING W_ANLA TEXT-048.
ELSE.
CLEAR : L_BUKRS.
SELECT BUKRS
FROM ANLP
INTO L_BUKRS
UP TO 1 ROWS
WHERE BUKRS = W_ANLA-BUKRS
AND GJAHR = L_GJAHR
AND PERAF = L_MONTH.
ENDSELECT.
IF SY-SUBRC <> 0.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
PERFORM F_MOVE_ANLA_ERROR USING W_ANLA TEXT-048.
ELSE.
PERFORM F_SET_GENZAIKACHI USING W_ANLA.
MOVE-CORRESPONDING W_ANLA TO W_ERR_FILE.
CLEAR:W_ERR_FILE-LVTNR,W_ERR_FILE-MENGE,
W_ERR_FILE-LEAFI,W_ERR_FILE-ANLN1.
PERFORM F_MOVE_ANLA_ERROR USING W_ANLA SPACE.
ENDIF.
ENDIF.
*ENDIF.
ENDFORM. " F_KAIKEI_TENKI_CHECK
&----
*& Form F_KAIKEI_DENPYOU_CHECK
&----
伝票番号のチェック
----
FORM F_KAIKEI_DENPYOU_CHECK USING I_BUKRS TYPE BKPF-BUKRS
I_BELNR TYPE BKPF-BELNR.
DATA : L_BELNR TYPE BKPF-BELNR.
CLEAR : FLG_X , L_BELNR.
SELECT SINGLE BELNR FROM BKPF INTO L_BELNR
WHERE BUKRS = I_BUKRS AND
BELNR = I_BELNR AND
GJAHR = P_GJAHR.
IF SY-SUBRC <> 0.
FLG_X = CNS_X.
ENDIF.
ENDFORM. " F_KAIKEI_DENPYOU_CHECK
&----
*& Form F_DENPYOU_CHECK
&----
伝票番号の存在チェック
----
FORM F_DENPYOU_CHECK USING I_BUKRS TYPE ZTFI0023-ZZBUKRS
I_ANLN1 TYPE ZTFI0023-ZZANLN1
I_ANLN2 TYPE ZTFI0023-ZZANLN2
I_BELNR TYPE ANEP-BELNR.
DATA : L_BUKRS TYPE ANEP-BUKRS.
CLEAR : FLG_X , L_BUKRS.
SELECT BUKRS
FROM ANEP
INTO L_BUKRS
UP TO 1 ROWS
WHERE BUKRS = I_BUKRS AND
ANLN1 = I_ANLN1 AND
ANLN2 = I_ANLN2 AND
BELNR = I_BELNR AND
GJAHR = P_GJAHR.
ENDSELECT.
IF L_BUKRS IS NOT INITIAL.
FLG_X = CNS_X.
ENDIF.
ENDFORM. " F_DENPYOU_CHECK
&----
*& Form F_DENPYOU_CHECK_24
&----
text
----
FORM F_DENPYOU_CHECK_24 USING I_BUKRS TYPE ZTFI0024-ZZBUKRS
I_ANLN1 TYPE ZTFI0024-ZZANLN1
I_BELNR TYPE ANEP-BELNR.
DATA : L_BUKRS TYPE ANEP-BUKRS.
CLEAR : FLG_X , L_BUKRS.
SELECT BUKRS
FROM ANEP
INTO L_BUKRS
UP TO 1 ROWS
WHERE BUKRS = I_BUKRS AND
ANLN1 = I_ANLN1 AND
BELNR = I_BELNR AND
GJAHR = P_GJAHR.
ENDSELECT.
IF SY-SUBRC <> 0.
FLG_X = CNS_X.
ENDIF.
ENDFORM. " F_DENPYOU_CHECK_24
&----
*& Form F_SELECT_MEISHOU
&----
名称を取得する
----
FORM F_SELECT_MEISHOU .
DATA : L_ANLKL_TXT TYPE ANKT-TXK50,
L_TXT50_ANLT TYPE ANLT-TXT50,
L_ANLUE_TXT TYPE T087V-ANLUE_TXT,
L_TABIX TYPE SY-TABIX,
L_KOKRS TYPE KOKRS.
IF R_CHECK = CNS_X.
LOOP AT IT_ERR_FILE INTO W_ERR_FILE.
L_TABIX = SY-TABIX.
*--管理領域の取得
SELECT KOKRS FROM TKA02
INTO L_KOKRS UP TO 1 ROWS
WHERE BUKRS = W_ERR_FILE-ZBUKRS.
ENDSELECT.
*--仕入先マスタ (一般セクション)からリース会社名称の取得
PERFORM F_GET_LIFNR_TXT USING W_ERR_FILE-ZLEAFI
CHANGING W_ERR_FILE-LEAFI_TXT.
*--経理処理区分名称の設定
IF W_ERR_FILE-ZZACCT = 1.
W_ERR_FILE-ACCT_TXT = '売買処理'.
ELSEIF W_ERR_FILE-ZZACCT = 2.
W_ERR_FILE-ACCT_TXT = '賃貸借処理'.
ENDIF.
*--利息処理区分名称の設定
IF W_ERR_FILE-ZZINTEREST = 1.
W_ERR_FILE-INTEREST_TXT = '利息法'.
ELSEIF W_ERR_FILE-ZZINTEREST = 2.
W_ERR_FILE-INTEREST_TXT = '利子込み法'.
ELSEIF W_ERR_FILE-ZZINTEREST = 3.
W_ERR_FILE-INTEREST_TXT = '利息分離定額法'.
ENDIF.
*--原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE-KOSTL
L_KOKRS
W_ERR_FILE-DEAKT
CHANGING W_ERR_FILE-KTEXT.
*--責任原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE-KOSTLV
L_KOKRS
W_ERR_FILE-DEAKT
CHANGING W_ERR_FILE-KTEXTV.
*--プラント/支店「T001W」からプラント名称の取得
PERFORM F_GET_PLANT_TXT USING W_ERR_FILE-WERKS
CHANGING W_ERR_FILE-WERKS_TXT.
*--場所「T499S」から場所名称の取得
PERFORM F_GET_STORT_TXT USING W_ERR_FILE-STORT
W_ERR_FILE-WERKS
CHANGING W_ERR_FILE-STORT_TXT.
*--評価グループテキスト「T087T」から評価グループ1の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD41 CNS_1
CHANGING W_ERR_FILE-ORDTX_1.
*--評価グループテキスト「T087T」から評価グループ2の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD42 CNS_2
CHANGING W_ERR_FILE-ORDTX_2.
*--評価グループテキスト「T087T」から評価グループ3の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD43 CNS_3
CHANGING W_ERR_FILE-ORDTX_3.
*--評価グループテキスト「T087T」から評価グループ4の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD44 CNS_4
CHANGING W_ERR_FILE-ORDTX_4.
*--設備投資理由テキスト「T087J」から設備投資理由の取得
PERFORM F_GET_SETSUBI_TXT USING W_ERR_FILE-IZWEK
CHANGING W_ERR_FILE-IZWEK_TXT.
*--環境投資理由テキスト「T087L」から環境投資理由の取得
PERFORM F_GET_KANKYOU_TXT USING W_ERR_FILE-UMWKZ
CHANGING W_ERR_FILE-UMWKZ_TXT.
*--資産グループコードのためのテキストテーブル「T087V」から資産グループコード名称の取得
CLEAR : L_ANLUE_TXT.
SELECT SINGLE ANLUE_TXT FROM T087V INTO L_ANLUE_TXT
WHERE SPRAS = SY-LANGU
AND ANLUE = W_ERR_FILE-ANLUE.
IF SY-SUBRC = 0.
W_ERR_FILE-ANLUE_TXT = L_ANLUE_TXT.
ENDIF.
*--資産クラス: テキスト「ANKT」から資産クラスの取得
CLEAR : L_ANLKL_TXT.
SELECT SINGLE TXK50 FROM ANKT
INTO L_ANLKL_TXT
WHERE SPRAS = SY-LANGU
AND ANLKL = W_ERR_FILE-ZZANLKL.
IF SY-SUBRC = 0.
W_ERR_FILE-ANLKL_TXT = L_ANLKL_TXT.
ENDIF.
*--物件名称「ANLT」から物件名称の取得
CLEAR : L_TXT50_ANLT.
SELECT SINGLE TXT50 FROM ANLT
INTO L_TXT50_ANLT
WHERE BUKRS = W_ERR_FILE-ZBUKRS
AND SPRAS = SY-LANGU
AND ANLN1 = W_ERR_FILE-ANLN1
AND ANLN2 = W_ERR_FILE-LVTNR.
IF SY-SUBRC = 0.
W_ERR_FILE-TXT50_ANLT = L_TXT50_ANLT.
ENDIF.
*--(物件)原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE-KOSTL4
L_KOKRS
W_ERR_FILE-DEAKT
CHANGING W_ERR_FILE-KTEXT4.
*--(物件)責任原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE-KOSTLV4
L_KOKRS
W_ERR_FILE-DEAKT
CHANGING W_ERR_FILE-KTEXTV4.
*--(物件)プラント/支店「T001W」からプラント名称の取得
PERFORM F_GET_PLANT_TXT USING W_ERR_FILE-WERKS4
CHANGING W_ERR_FILE-WERKS_TXT4.
*--(物件)場所「T499S」から場所名称の取得
PERFORM F_GET_STORT_TXT USING W_ERR_FILE-STORT4
W_ERR_FILE-WERKS4
CHANGING W_ERR_FILE-STORT_TXT4.
*--(物件)評価グループテキスト「T087T」から評価グループ1の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD414 CNS_1
CHANGING W_ERR_FILE-ORDTX_14.
*--(物件)評価グループテキスト「T087T」から評価グループ2の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD424 CNS_2
CHANGING W_ERR_FILE-ORDTX_24.
*--(物件)評価グループテキスト「T087T」から評価グループ3の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD434 CNS_3
CHANGING W_ERR_FILE-ORDTX_34.
*--(物件)評価グループテキスト「T087T」から評価グループ4の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE-ORD444 CNS_4
CHANGING W_ERR_FILE-ORDTX_44.
*--(物件)設備投資理由テキスト「T087J」から設備投資理由の取得
PERFORM F_GET_SETSUBI_TXT USING W_ERR_FILE-IZWEK4
CHANGING W_ERR_FILE-IZWEK_TXT4.
*--(物件)環境投資理由テキスト「T087L」から環境投資理由の取得
PERFORM F_GET_KANKYOU_TXT USING W_ERR_FILE-UMWKZ4
CHANGING W_ERR_FILE-UMWKZ_TXT4.
*--(物件)資産グループコードのためのテキストテーブル「T087V」から資産グループコード名称の取得
CLEAR : L_ANLUE_TXT.
SELECT SINGLE ANLUE_TXT FROM T087V INTO L_ANLUE_TXT
WHERE SPRAS = SY-LANGU
AND ANLUE = W_ERR_FILE-ANLUE4.
IF SY-SUBRC = 0.
W_ERR_FILE-ANLUE_TXT4 = L_ANLUE_TXT.
ENDIF.
*--(物件)リース会社名称の取得
PERFORM F_GET_LIFNR_TXT USING W_ERR_FILE-LEAFI
CHANGING W_ERR_FILE-LEAFI_TXT4.
MODIFY IT_ERR_FILE FROM W_ERR_FILE INDEX L_TABIX.
CLEAR : W_ERR_FILE, L_TABIX, L_KOKRS.
ENDLOOP.
ELSE.
*START SUREN
LOOP AT IT_ERR_FILE1 INTO W_ERR_FILE1.
L_TABIX = SY-TABIX.
*--管理領域の取得
SELECT KOKRS FROM TKA02
INTO L_KOKRS UP TO 1 ROWS
WHERE BUKRS = W_ERR_FILE1-ZBUKRS.
ENDSELECT.
*--仕入先マスタ (一般セクション)からリース会社名称の取得
PERFORM F_GET_LIFNR_TXT USING W_ERR_FILE1-ZLEAFI
CHANGING W_ERR_FILE1-LEAFI_TXT.
*--経理処理区分名称の設定
IF W_ERR_FILE1-ZZACCT = 1.
W_ERR_FILE1-ACCT_TXT = '売買処理'.
ELSEIF W_ERR_FILE1-ZZACCT = 2.
W_ERR_FILE1-ACCT_TXT = '賃貸借処理'.
ENDIF.
*--利息処理区分名称の設定
IF W_ERR_FILE1-ZZINTEREST = 1.
W_ERR_FILE1-INTEREST_TXT = '利息法'.
ELSEIF W_ERR_FILE1-ZZINTEREST = 2.
W_ERR_FILE1-INTEREST_TXT = '利子込み法'.
ELSEIF W_ERR_FILE1-ZZINTEREST = 3.
W_ERR_FILE1-INTEREST_TXT = '利息分離定額法'.
ENDIF.
*--原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE1-KOSTL
L_KOKRS
W_ERR_FILE1-DEAKT
CHANGING W_ERR_FILE1-KTEXT.
*--責任原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE1-KOSTLV
L_KOKRS
W_ERR_FILE1-DEAKT
CHANGING W_ERR_FILE1-KTEXTV.
*--プラント/支店「T001W」からプラント名称の取得
PERFORM F_GET_PLANT_TXT USING W_ERR_FILE1-WERKS
CHANGING W_ERR_FILE1-WERKS_TXT.
*--場所「T499S」から場所名称の取得
PERFORM F_GET_STORT_TXT USING W_ERR_FILE1-STORT
W_ERR_FILE1-WERKS
CHANGING W_ERR_FILE1-STORT_TXT.
*--評価グループテキスト「T087T」から評価グループ1の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD41 CNS_1
CHANGING W_ERR_FILE1-ORDTX_1.
*--評価グループテキスト「T087T」から評価グループ2の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD42 CNS_2
CHANGING W_ERR_FILE1-ORDTX_2.
*--評価グループテキスト「T087T」から評価グループ3の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD43 CNS_3
CHANGING W_ERR_FILE1-ORDTX_3.
*--評価グループテキスト「T087T」から評価グループ4の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD44 CNS_4
CHANGING W_ERR_FILE1-ORDTX_4.
*--設備投資理由テキスト「T087J」から設備投資理由の取得
PERFORM F_GET_SETSUBI_TXT USING W_ERR_FILE1-IZWEK
CHANGING W_ERR_FILE1-IZWEK_TXT.
*--環境投資理由テキスト「T087L」から環境投資理由の取得
PERFORM F_GET_KANKYOU_TXT USING W_ERR_FILE1-UMWKZ
CHANGING W_ERR_FILE1-UMWKZ_TXT.
*--資産グループコードのためのテキストテーブル「T087V」から資産グループコード名称の取得
CLEAR : L_ANLUE_TXT.
SELECT SINGLE ANLUE_TXT FROM T087V INTO L_ANLUE_TXT
WHERE SPRAS = SY-LANGU
AND ANLUE = W_ERR_FILE1-ANLUE.
IF SY-SUBRC = 0.
W_ERR_FILE1-ANLUE_TXT = L_ANLUE_TXT.
ENDIF.
*--資産クラス: テキスト「ANKT」から資産クラスの取得
CLEAR : L_ANLKL_TXT.
SELECT SINGLE TXK50 FROM ANKT
INTO L_ANLKL_TXT
WHERE SPRAS = SY-LANGU
AND ANLKL = W_ERR_FILE1-ZZANLKL.
IF SY-SUBRC = 0.
W_ERR_FILE1-ANLKL_TXT = L_ANLKL_TXT.
ENDIF.
*--物件名称「ANLT」から物件名称の取得
CLEAR : L_TXT50_ANLT.
SELECT SINGLE TXT50 FROM ANLT
INTO L_TXT50_ANLT
WHERE BUKRS = W_ERR_FILE1-ZBUKRS
AND SPRAS = SY-LANGU
AND ANLN1 = W_ERR_FILE1-ANLN1
AND ANLN2 = W_ERR_FILE1-LVTNR.
IF SY-SUBRC = 0.
W_ERR_FILE1-TXT50_ANLT = L_TXT50_ANLT.
ENDIF.
*--(物件)原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE1-KOSTL4
L_KOKRS
W_ERR_FILE1-DEAKT
CHANGING W_ERR_FILE1-KTEXT4.
*--(物件)責任原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE1-KOSTLV4
L_KOKRS
W_ERR_FILE1-DEAKT
CHANGING W_ERR_FILE1-KTEXTV4.
*--(物件)プラント/支店「T001W」からプラント名称の取得
PERFORM F_GET_PLANT_TXT USING W_ERR_FILE1-WERKS4
CHANGING W_ERR_FILE1-WERKS_TXT4.
*--(物件)場所「T499S」から場所名称の取得
PERFORM F_GET_STORT_TXT USING W_ERR_FILE1-STORT4
W_ERR_FILE1-WERKS4
CHANGING W_ERR_FILE1-STORT_TXT4.
*--(物件)評価グループテキスト「T087T」から評価グループ1の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD414 CNS_1
CHANGING W_ERR_FILE1-ORDTX_14.
*--(物件)評価グループテキスト「T087T」から評価グループ2の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD424 CNS_2
CHANGING W_ERR_FILE1-ORDTX_24.
*--(物件)評価グループテキスト「T087T」から評価グループ3の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD434 CNS_3
CHANGING W_ERR_FILE1-ORDTX_34.
*--(物件)評価グループテキスト「T087T」から評価グループ4の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE1-ORD444 CNS_4
CHANGING W_ERR_FILE1-ORDTX_44.
*--(物件)設備投資理由テキスト「T087J」から設備投資理由の取得
PERFORM F_GET_SETSUBI_TXT USING W_ERR_FILE1-IZWEK4
CHANGING W_ERR_FILE1-IZWEK_TXT4.
*--(物件)環境投資理由テキスト「T087L」から環境投資理由の取得
PERFORM F_GET_KANKYOU_TXT USING W_ERR_FILE1-UMWKZ4
CHANGING W_ERR_FILE1-UMWKZ_TXT4.
*--(物件)資産グループコードのためのテキストテーブル「T087V」から資産グループコード名称の取得
CLEAR : L_ANLUE_TXT.
SELECT SINGLE ANLUE_TXT FROM T087V INTO L_ANLUE_TXT
WHERE SPRAS = SY-LANGU
AND ANLUE = W_ERR_FILE1-ANLUE4.
IF SY-SUBRC = 0.
W_ERR_FILE1-ANLUE_TXT4 = L_ANLUE_TXT.
ENDIF.
*--(物件)リース会社名称の取得
PERFORM F_GET_LIFNR_TXT USING W_ERR_FILE1-LEAFI
CHANGING W_ERR_FILE1-LEAFI_TXT4.
MODIFY IT_ERR_FILE1 FROM W_ERR_FILE1 INDEX L_TABIX.
CLEAR : W_ERR_FILE1, L_TABIX, L_KOKRS.
ENDLOOP.
LOOP AT IT_ERR_FILE2 INTO W_ERR_FILE2.
L_TABIX = SY-TABIX.
*
**--管理領域の取得
SELECT KOKRS FROM TKA02
INTO L_KOKRS UP TO 1 ROWS
WHERE BUKRS = W_ERR_FILE2-ZBUKRS.
ENDSELECT.
*
**--仕入先マスタ (一般セクション)からリース会社名称の取得
PERFORM F_GET_LIFNR_TXT USING W_ERR_FILE2-ZLEAFI
CHANGING W_ERR_FILE2-LEAFI_TXT.
*
**--経理処理区分名称の設定
IF W_ERR_FILE2-ZZACCT = 1.
W_ERR_FILE2-ACCT_TXT = '売買処理'.
ELSEIF W_ERR_FILE2-ZZACCT = 2.
W_ERR_FILE2-ACCT_TXT = '賃貸借処理'.
ENDIF.
*
**--利息処理区分名称の設定
IF W_ERR_FILE2-ZZINTEREST = 1.
W_ERR_FILE2-INTEREST_TXT = '利息法'.
ELSEIF W_ERR_FILE2-ZZINTEREST = 2.
W_ERR_FILE2-INTEREST_TXT = '利子込み法'.
ELSEIF W_ERR_FILE2-ZZINTEREST = 3.
W_ERR_FILE2-INTEREST_TXT = '利息分離定額法'.
ENDIF.
*
**--原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE2-KOSTL
L_KOKRS
W_ERR_FILE2-DEAKT
CHANGING W_ERR_FILE2-KTEXT.
*
**--責任原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE2-KOSTLV
L_KOKRS
W_ERR_FILE2-DEAKT
CHANGING W_ERR_FILE2-KTEXTV.
*
**--プラント/支店「T001W」からプラント名称の取得
PERFORM F_GET_PLANT_TXT USING W_ERR_FILE2-WERKS
CHANGING W_ERR_FILE2-WERKS_TXT.
*
**--場所「T499S」から場所名称の取得
PERFORM F_GET_STORT_TXT USING W_ERR_FILE2-STORT
W_ERR_FILE2-WERKS
CHANGING W_ERR_FILE2-STORT_TXT.
*
**--評価グループテキスト「T087T」から評価グループ1の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD41 CNS_1
CHANGING W_ERR_FILE2-ORDTX_1.
*
**--評価グループテキスト「T087T」から評価グループ2の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD42 CNS_2
CHANGING W_ERR_FILE2-ORDTX_2.
*
**--評価グループテキスト「T087T」から評価グループ3の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD43 CNS_3
CHANGING W_ERR_FILE2-ORDTX_3.
*
**--評価グループテキスト「T087T」から評価グループ4の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD44 CNS_4
CHANGING W_ERR_FILE2-ORDTX_4.
*
**--設備投資理由テキスト「T087J」から設備投資理由の取得
PERFORM F_GET_SETSUBI_TXT USING W_ERR_FILE2-IZWEK
CHANGING W_ERR_FILE2-IZWEK_TXT.
*
**--環境投資理由テキスト「T087L」から環境投資理由の取得
PERFORM F_GET_KANKYOU_TXT USING W_ERR_FILE2-UMWKZ
CHANGING W_ERR_FILE2-UMWKZ_TXT.
*
**--資産グループコードのためのテキストテーブル「T087V」から資産グループコード名称の取得
CLEAR : L_ANLUE_TXT.
SELECT SINGLE ANLUE_TXT FROM T087V INTO L_ANLUE_TXT
WHERE SPRAS = SY-LANGU
AND ANLUE = W_ERR_FILE2-ANLUE.
IF SY-SUBRC = 0.
W_ERR_FILE2-ANLUE_TXT = L_ANLUE_TXT.
ENDIF.
*
**--資産クラス: テキスト「ANKT」から資産クラスの取得
CLEAR : L_ANLKL_TXT.
SELECT SINGLE TXK50 FROM ANKT
INTO L_ANLKL_TXT
WHERE SPRAS = SY-LANGU
AND ANLKL = W_ERR_FILE2-ZZANLKL.
IF SY-SUBRC = 0.
W_ERR_FILE2-ANLKL_TXT = L_ANLKL_TXT.
ENDIF.
*
**--物件名称「ANLT」から物件名称の取得
CLEAR : L_TXT50_ANLT.
SELECT SINGLE TXT50 FROM ANLT
INTO L_TXT50_ANLT
WHERE BUKRS = W_ERR_FILE2-ZBUKRS
AND SPRAS = SY-LANGU
AND ANLN1 = W_ERR_FILE2-ANLN1
AND ANLN2 = W_ERR_FILE2-LVTNR.
IF SY-SUBRC = 0.
W_ERR_FILE2-TXT50_ANLT = L_TXT50_ANLT.
ENDIF.
*
**--(物件)原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE2-KOSTL4
L_KOKRS
W_ERR_FILE2-DEAKT
CHANGING W_ERR_FILE2-KTEXT4.
*
**--(物件)責任原価センタテキスト「CSKT」から原価センタ名称の取得
PERFORM F_GET_KOSTL_TXT USING W_ERR_FILE2-KOSTLV4
L_KOKRS
W_ERR_FILE2-DEAKT
CHANGING W_ERR_FILE2-KTEXTV4.
*
**--(物件)プラント/支店「T001W」からプラント名称の取得
PERFORM F_GET_PLANT_TXT USING W_ERR_FILE2-WERKS4
CHANGING W_ERR_FILE2-WERKS_TXT4.
*
**--(物件)場所「T499S」から場所名称の取得
PERFORM F_GET_STORT_TXT USING W_ERR_FILE2-STORT4
W_ERR_FILE2-WERKS4
CHANGING W_ERR_FILE2-STORT_TXT4.
*
**--(物件)評価グループテキスト「T087T」から評価グループ1の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD414 CNS_1
CHANGING W_ERR_FILE2-ORDTX_14.
*
**--(物件)評価グループテキスト「T087T」から評価グループ2の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD424 CNS_2
CHANGING W_ERR_FILE2-ORDTX_24.
*
**--(物件)評価グループテキスト「T087T」から評価グループ3の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD434 CNS_3
CHANGING W_ERR_FILE2-ORDTX_34.
*
**--(物件)評価グループテキスト「T087T」から評価グループ4の取得
PERFORM F_GET_GROUP_TXT USING W_ERR_FILE2-ORD444 CNS_4
CHANGING W_ERR_FILE2-ORDTX_44.
*
**--(物件)設備投資理由テキスト「T087J」から設備投資理由の取得
PERFORM F_GET_SETSUBI_TXT USING W_ERR_FILE2-IZWEK4
CHANGING W_ERR_FILE2-IZWEK_TXT4.
*
**--(物件)環境投資理由テキスト「T087L」から環境投資理由の取得
PERFORM F_GET_KANKYOU_TXT USING W_ERR_FILE2-UMWKZ4
CHANGING W_ERR_FILE2-UMWKZ_TXT4.
*
**--(物件)資産グループコードのためのテキストテーブル「T087V」から資産グループコード名称の取得
CLEAR : L_ANLUE_TXT.
SELECT SINGLE ANLUE_TXT FROM T087V INTO L_ANLUE_TXT
WHERE SPRAS = SY-LANGU
AND ANLUE = W_ERR_FILE2-ANLUE4.
IF SY-SUBRC = 0.
W_ERR_FILE2-ANLUE_TXT4 = L_ANLUE_TXT.
ENDIF.
*
**--(物件)リース会社名称の取得
PERFORM F_GET_LIFNR_TXT USING W_ERR_FILE2-LEAFI
CHANGING W_ERR_FILE2-LEAFI_TXT4.
*
MODIFY IT_ERR_FILE2 FROM W_ERR_FILE2 INDEX L_TABIX.
CLEAR : W_ERR_FILE2, L_TABIX, L_KOKRS.
ENDLOOP.
*end suren
ENDIF.
ENDFORM. " F_SELECT_MEISHOU
&----
*& Form F_GET_LIFNR_TXT
&----
仕入先マスタ (一般セクション)からリース会社名称の取得
----
FORM F_GET_LIFNR_TXT USING I_LIFNR TYPE ANY
CHANGING I_W_ERR_FILE_LEAFI_TXT TYPE ANY.
DATA : L_LIFNR_TXT TYPE LFA1-NAME1.
IF I_LIFNR IS NOT INITIAL.
SELECT SINGLE NAME1 FROM LFA1 INTO L_LIFNR_TXT
WHERE LIFNR = I_LIFNR.
IF SY-SUBRC = 0.
I_W_ERR_FILE_LEAFI_TXT = L_LIFNR_TXT.
ENDIF.
ENDIF.
ENDFORM. " F_GET_LIFNR_TXT
&----
*& Form F_GET_KOSTL_TXT
&----
原価センタテキストから原価センタ名称の取得
----
FORM F_GET_KOSTL_TXT USING I_KOSTL TYPE ANY
I_KOKRS TYPE ANY
I_DEAKT TYPE ANY
CHANGING I_W_ERR_FILE_KTEXT TYPE ANY.
DATA : L_KOSTL_TXT TYPE CSKT-KOSTL.
IF I_KOSTL IS NOT INITIAL.
CLEAR : L_KOSTL_TXT.
*--原価センタテキストの取得
SELECT SINGLE KTEXT FROM CSKT
INTO L_KOSTL_TXT
WHERE SPRAS = SY-LANGU
AND KOKRS = I_KOKRS
AND KOSTL = I_KOSTL
AND DATBI >= I_DEAKT.
SELECT KTEXT
FROM CSKT
INTO L_KOSTL_TXT
UP TO 1 ROWS
WHERE SPRAS = SY-LANGU
AND KOKRS = I_KOKRS
AND KOSTL = I_KOSTL
AND DATBI >= I_DEAKT.
ENDSELECT.
IF SY-SUBRC = 0.
I_W_ERR_FILE_KTEXT = L_KOSTL_TXT.
ENDIF.
ENDIF.
ENDFORM. " F_GET_KOSTL_TXT
&----
*& Form F_GET_PLANT_TXT
&----
プラント/支店からプラント名称の取得
----
FORM F_GET_PLANT_TXT USING I_WERKS TYPE ANY
CHANGING I_WERKS_TXT TYPE ANY.
DATA : L_WERKS_TXT TYPE T001W-WERKS.
IF I_WERKS IS NOT INITIAL.
CLEAR : L_WERKS_TXT.
SELECT SINGLE NAME1 FROM T001W
INTO L_WERKS_TXT
WHERE WERKS = I_WERKS.
IF SY-SUBRC = 0.
I_WERKS_TXT = L_WERKS_TXT.
ENDIF.
ENDIF.
ENDFORM. " F_GET_PLANT_TXT
&----
*& Form F_GET_STORT_TXT
&----
場所「T499S」から場所名称の取得
----
FORM F_GET_STORT_TXT USING I_STORT TYPE ANY
I_WERKS TYPE ANY
CHANGING I_STORT_TXT TYPE ANY.
DATA : L_STORT_TXT TYPE T499S-STAND.
IF I_STORT IS NOT INITIAL.
CLEAR : L_STORT_TXT.
SELECT SINGLE KTEXT FROM T499S INTO L_STORT_TXT
WHERE STAND = I_STORT
AND WERKS = I_WERKS.
IF SY-SUBRC = 0.
I_STORT_TXT = L_STORT_TXT.
ENDIF.
ENDIF.
ENDFORM. " F_GET_STORT_TXT
&----
*& Form F_GET_GROUP_TXT
&----
評価グループテキスト「T087T」評価グループの取得
----
FORM F_GET_GROUP_TXT USING I_ORD4X TYPE ANY
I_CNS_NR TYPE C
CHANGING I_ORDTX TYPE T087T-ORDTX.
DATA : L_GROUP_TXT TYPE T087T-ORDTX.
IF I_ORD4X IS NOT INITIAL.
CLEAR : L_GROUP_TXT.
SELECT SINGLE ORDTX FROM T087T INTO L_GROUP_TXT
WHERE SPRAS = SY-LANGU
AND ORDNR = I_CNS_NR
AND ORD4X = I_ORD4X.
IF SY-SUBRC = 0.
I_ORDTX = L_GROUP_TXT.
ENDIF.
ENDIF.
ENDFORM. " F_GET_GROUP_TXT
&----
*& Form F_GET_SETSUBI_TXT
&----
設備投資理由テキスト「T087J」設備投資理由の取得
----
FORM F_GET_SETSUBI_TXT USING I_IZWEK TYPE ANY
CHANGING I_IZWEK_TXT TYPE T087J-TXT50.
DATA : L_IZWEK_TXT TYPE T087J-TXT50.
IF I_IZWEK IS NOT INITIAL.
CLEAR : L_IZWEK_TXT.
SELECT SINGLE TXT50 FROM T087J INTO L_IZWEK_TXT
WHERE SPRAS = SY-LANGU
AND IZWEK = I_IZWEK.
IF SY-SUBRC = 0.
I_IZWEK_TXT = L_IZWEK_TXT.
ENDIF.
ENDIF.
ENDFORM. " F_GET_SETSUBI_TXT
&----
*& Form F_GET_KANKYOU_TXT
&----
環境投資理由テキスト「T087L」から環境投資理由の取得
----
FORM F_GET_KANKYOU_TXT USING I_UMWKZ TYPE ANY
CHANGING I_UMWKZ_TXT TYPE T087L-TXT50.
DATA : L_UMWKZ_TXT TYPE T087L-TXT50.
IF I_UMWKZ IS NOT INITIAL.
CLEAR : L_UMWKZ_TXT.
SELECT SINGLE TXT50 FROM T087L INTO L_UMWKZ_TXT
WHERE SPRAS = SY-LANGU
AND UMWKZ = I_UMWKZ.
IF SY-SUBRC = 0.
I_UMWKZ_TXT = L_UMWKZ_TXT.
ENDIF.
ENDIF.
ENDFORM. " F_GET_KANKYOU_TXT
&----
*& Form F_MOVE_TO_ERR_FILE
&----
リース契約テーブル「ZTFI0023」からエラーファイルにアッペンドする
----
FORM F_MOVE_TO_ERR_FILE USING I_W_ZTFI0023 TYPE ZTFI0023
I_TEXT TYPE ANY.
CLEAR W_ERR_FILE.
MOVE-CORRESPONDING I_W_ZTFI0023 TO W_ERR_FILE.
W_ERR_FILE-ZBUKRS = I_W_ZTFI0023-ZZBUKRS. "会社コード
W_ERR_FILE-ZLEAFI = I_W_ZTFI0023-ZZLEAFI. "リース会社
W_ERR_FILE-ZLEYM = I_W_ZTFI0023-ZZLEYM. "開始年月
W_ERR_FILE-ZLVTNR1 = I_W_ZTFI0023-ZZLVTNR1. "リース契約番号
W_ERR_FILE-ZLVTNR2 = I_W_ZTFI0023-ZZLVTNR2. "リース契約枝番
W_ERR_FILE-ZWAERS = I_W_ZTFI0023-ZZWAERS. "通貨コード
W_ERR_FILE-TXA50_ANLT = I_W_ZTFI0023-ZZTXA50_ANLT. "資産テキスト
W_ERR_FILE-ZANLN1 = I_W_ZTFI0023-ZZANLN1. "資産番号
W_ERR_FILE-ZERRMSG = I_TEXT.
WRITE I_W_ZTFI0023-ZZLEGEB_SOUGAKU TO W_ERR_FILE-ZZLEGEB_SOUGAKU CURRENCY 'JPY'. "リース料総額
WRITE I_W_ZTFI0023-ZZLBARW_ALL TO W_ERR_FILE-ZZLBARW_ALL CURRENCY 'JPY'. "全リース資産額
WRITE I_W_ZTFI0023-ZZCONTAX TO W_ERR_FILE-ZZCONTAX CURRENCY 'JPY'. "消費税額
WRITE I_W_ZTFI0023-ZZKZINW TO W_ERR_FILE-ZZKZINW CURRENCY 'JPY'. "支払利息額
WRITE I_W_ZTFI0023-ZZLBASW TO W_ERR_FILE-LBASW CURRENCY 'JPY'. "基準価額
WRITE I_W_ZTFI0023-ZZLKAUF TO W_ERR_FILE-LKAUF CURRENCY 'JPY'. "買取価額
WRITE I_W_ZTFI0023-ZZLEGEB TO W_ERR_FILE-LEGEB CURRENCY 'JPY'. "リース料
WRITE I_W_ZTFI0023-ZZLBARW TO W_ERR_FILE-LBARW CURRENCY 'JPY'. "現在価値
*START SUREN
W_ERR_FILE-INVNR = I_W_ZTFI0023-ZZINVNR_ANLA.
W_ERR_FILE-ZZEBELN = I_W_ZTFI0023-ZZEBELN.
W_ERR_FILE-ZZACCT = I_W_ZTFI0023-ZZACCT.
W_ERR_FILE-ZZINTEREST = I_W_ZTFI0023-ZZINTEREST.
W_ERR_FILE-MENGE_ALL = I_W_ZTFI0023-ZZQUAN.
W_ERR_FILE-KOSTL = I_W_ZTFI0023-ZZKOSTL.
W_ERR_FILE-KOSTLV = I_W_ZTFI0023-ZZKOSTLV.
W_ERR_FILE-WERKS = I_W_ZTFI0023-ZZWERKS_D.
W_ERR_FILE-STORT = I_W_ZTFI0023-ZZSTORT.
W_ERR_FILE-RAUMNR = I_W_ZTFI0023-ZZRAUMNR.
W_ERR_FILE-KFZKZ = I_W_ZTFI0023-ZZAM_KFZKZ.
W_ERR_FILE-ORD41 = I_W_ZTFI0023-ZZORD41.
W_ERR_FILE-ORD42 = I_W_ZTFI0023-ZZORD42.
W_ERR_FILE-ORD43 = I_W_ZTFI0023-ZZORD43.
W_ERR_FILE-ORD44 = I_W_ZTFI0023-ZZORD44.
W_ERR_FILE-IZWEK = I_W_ZTFI0023-ZZIZWEK.
W_ERR_FILE-UMWKZ = I_W_ZTFI0023-ZZAM_UMWKZ.
W_ERR_FILE-ANLUE = I_W_ZTFI0023-ZZANLUE.
W_ERR_FILE-LVDAT = I_W_ZTFI0023-ZZLVDAT.
W_ERR_FILE-LKDAT = I_W_ZTFI0023-ZZLKDAT.
W_ERR_FILE-LEABG = I_W_ZTFI0023-ZZLEABG.
W_ERR_FILE-LEJAR = I_W_ZTFI0023-ZZLEJAR.
W_ERR_FILE-LEPER = I_W_ZTFI0023-ZZLEPER.
W_ERR_FILE-LEART = I_W_ZTFI0023-ZZLEART.
W_ERR_FILE-LETXT = I_W_ZTFI0023-ZZLETXT.
W_ERR_FILE-LEANZ = I_W_ZTFI0023-ZZLEANZ.
W_ERR_FILE-LRYTH = I_W_ZTFI0023-ZZLRYTH.
W_ERR_FILE-LVORS = I_W_ZTFI0023-ZZLVORS.
W_ERR_FILE-LZINS = I_W_ZTFI0023-ZZLZINS.
W_ERR_FILE-ZZANLN2 = I_W_ZTFI0023-ZZANLN2.
W_ERR_FILE-ZZBELNR92_AA = I_W_ZTFI0023-ZZBELNR92_AA.
W_ERR_FILE-ZZBELNR96_FI = I_W_ZTFI0023-ZZBELNR96_FI.
W_ERR_FILE-ZZBELNR96_AA = I_W_ZTFI0023-ZZBELNR96_AA.
W_ERR_FILE-ZZBELNR97_AA = I_W_ZTFI0023-ZZBELNR97_AA.
W_ERR_FILE-ZZBELNR92_AA = I_W_ZTFI0023-ZZBELNR92_AA.
*END SUREN
APPEND W_ERR_FILE TO IT_ERR_FILE.
APPEND W_ERR_FILE TO IT_KEIYAKU.
CLEAR : W_ERR_FILE.
ENDFORM. " F_MOVE_TO_ERR_FILE
&----
*& Form F_MOVE_FROM_24
&----
text
----
FORM F_MOVE_FROM_24 USING I_W_ZTFI0024 TYPE ZTFI0024
I_TEXT TYPE ANY.
CLEAR W_ERR_FILE.
MOVE-CORRESPONDING I_W_ZTFI0024 TO W_ERR_FILE.
*SUREN START
W_ERR_FILE-ZBUKRS = I_W_ZTFI0024-ZZBUKRS.
W_ERR_FILE-ZLEAFI = I_W_ZTFI0024-ZZLEAFI.
W_ERR_FILE-ZLEYM = I_W_ZTFI0024-ZZLEYM.
W_ERR_FILE-ZLVTNR1 = I_W_ZTFI0024-ZZLVTNR1.
W_ERR_FILE-ZLVTNR2 = I_W_ZTFI0024-ZZLVTNR2.
*SUREN END
W_ERR_FILE-ANLN1 = I_W_ZTFI0024-ZZANLN1.
W_ERR_FILE-ZERRMSG = I_TEXT.
WRITE W_ZTFI0024-ZZLBARW TO W_ERR_FILE-ZLBARW4 CURRENCY 'JPY'.
WRITE W_ZTFI0024-ZZMAINTE TO W_ERR_FILE-ZZMAINTE CURRENCY 'JPY'.
WRITE W_ZTFI0024-ZZLGADV TO W_ERR_FILE-ZZLGADV CURRENCY 'JPY'.
W_ERR_FILE-INVNR4 = I_W_ZTFI0024-ZZINVNR_ANLA.
W_ERR_FILE-TXT50_ANLT = I_W_ZTFI0024-ZZTXA50_ANLT.
W_ERR_FILE-MENGE = I_W_ZTFI0024-ZZQUAN.
W_ERR_FILE-KOSTL4 = I_W_ZTFI0024-ZZKOSTL.
W_ERR_FILE-KOSTLV4 = I_W_ZTFI0024-ZZKOSTLV.
W_ERR_FILE-WERKS4 = I_W_ZTFI0024-ZZWERKS_D.
W_ERR_FILE-STORT4 = I_W_ZTFI0024-ZZSTORT.
W_ERR_FILE-RAUMNR4 = I_W_ZTFI0024-ZZRAUMNR.
W_ERR_FILE-KFZKZ4 = I_W_ZTFI0024-ZZAM_KFZKZ.
W_ERR_FILE-ORD414 = I_W_ZTFI0024-ZZORD41.
W_ERR_FILE-ORD424 = I_W_ZTFI0024-ZZORD42.
W_ERR_FILE-ORD434 = I_W_ZTFI0024-ZZORD43.
W_ERR_FILE-ORD444 = I_W_ZTFI0024-ZZORD44.
W_ERR_FILE-IZWEK4 = I_W_ZTFI0024-ZZIZWEK.
W_ERR_FILE-UMWKZ4 = I_W_ZTFI0024-ZZAM_UMWKZ.
W_ERR_FILE-ANLUE4 = I_W_ZTFI0024-ZZANLUE.
W_ERR_FILE-LEAFI = I_W_ZTFI0024-ZZLEAFI.
W_ERR_FILE-LVTNR4 = I_W_ZTFI0024-ZZLVTNR1.
W_ERR_FILE-ANLN1 = I_W_ZTFI0024-ZZANLN1.
W_ERR_FILE-AFASL_B = I_W_ZTFI0024-ZZAFASL01.
W_ERR_FILE-NDJAR_B = I_W_ZTFI0024-ZZNDJAR01.
W_ERR_FILE-NDPER_B = I_W_ZTFI0024-ZZNDPER01.
W_ERR_FILE-ZWAERS4 = I_W_ZTFI0024-ZZWAERS.
APPEND W_ERR_FILE TO IT_ERR_FILE.
APPEND W_ERR_FILE TO IT_BUKKEN.
ENDFORM. " F_MOVE_FROM_24
&----
*& Form F_MOVE_ANLA_ERROR
&----
資産マスタデータがエラーファイルにアップロードする
----
FORM F_MOVE_ANLA_ERROR USING I_W_ANLA TYPE ANLA
I_TEXT TYPE ANY.
*START
W_ERR_FILE-ZBUKRS = I_W_ANLA-BUKRS.
W_ERR_FILE-ZANLN1 = I_W_ANLA-ANLN1.
W_ERR_FILE-ZZANLN2 = I_W_ANLA-ANLN2.
*END
W_ERR_FILE-INVNR4 = I_W_ANLA-INVNR.
W_ERR_FILE-ORD414 = I_W_ANLA-ORD41.
W_ERR_FILE-ORD424 = I_W_ANLA-ORD42.
W_ERR_FILE-ORD434 = I_W_ANLA-ORD43.
W_ERR_FILE-ORD444 = I_W_ANLA-ORD44.
W_ERR_FILE-IZWEK4 = I_W_ANLA-IZWEK.
W_ERR_FILE-UMWKZ4 = I_W_ANLA-UMWKZ.
W_ERR_FILE-ANLUE4 = I_W_ANLA-ANLUE.
W_ERR_FILE-LVTNR4 = I_W_ANLA-LVTNR.
W_ERR_FILE-ZERRMSG = I_TEXT.
APPEND W_ERR_FILE TO IT_ERR_FILE.
APPEND W_ERR_FILE TO IT_KEIYAKU_SHISAN.
ENDFORM. " F_MOVE_ANLA_ERROR
&----
*& Form F_ERR_DOWNLOAD
&----
エラーファイル(UNIX)をダウンロードする
----
FORM F_ERR_DOWNLOAD USING I_P_DOWN TYPE RLGRAP-FILENAME.
データ宣言
DATA : L_LINE TYPE STRING,
L_STR TYPE C LENGTH 2650. "STRING.
*START SUREN
IT_ERR_FILE1[] = IT_ERR_FILE2[].
*END SUREN
バックグランド処理の場合
IF SY-BATCH = CNS_X.
一覧表示がチェックしている場合
IF R_ICHIRN = CNS_X.
*--ファイルオープン処理
OPEN DATASET I_P_DOWN FOR OUTPUT IN TEXT MODE
ENCODING NON-UNICODE.
IF SY-SUBRC <> 0 .
MESSAGE S001(ZNN01) WITH I_P_DOWN
'OPEN'
SY-SUBRC
DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF .
IF IT_ERR_FILE1 IS NOT INITIAL.
-- ダウンロードファイルヘッダ(正常データ)
INSERT TYP_ERR_HEADER1 INTO IT_ERR_FILE1 INDEX 1.
LOOP AT IT_ERR_FILE1 INTO W_ERR_FILE1.
CLEAR L_LINE .
タブファイル処理
PERFORM F_TAB1_SEP USING W_ERR_FILE1
CHANGING L_STR.
CALL METHOD CL_ABAP_LIST_UTILITIES=>STRUCTURE_TO_DISPLAY
EXPORTING
MEMORY_DATA = L_STR
IMPORTING
DISPLAY_DATA = L_LINE.
TRANSFER L_LINE TO I_P_DOWN.
CLEAR : L_LINE , W_ERR_FILE1.
ENDLOOP.
ENDIF.
CLOSE DATASET I_P_DOWN.
チェックラジオボタンがチェックしている場合
ELSE.
*--ファイルオープン処理
OPEN DATASET I_P_DOWN FOR OUTPUT IN TEXT MODE
ENCODING NON-UNICODE.
IF SY-SUBRC <> 0 .
MESSAGE S001(ZNN01) WITH I_P_DOWN
'OPEN'
SY-SUBRC
DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF .
IF IT_ERR_FILE IS NOT INITIAL.
-- ダウンロードファイルヘッダ(正常データ)
INSERT TYP_ERR_HEADER INTO IT_ERR_FILE INDEX 1.
LOOP AT IT_ERR_FILE INTO W_ERR_FILE.
CLEAR : L_LINE, L_STR.
タブファイル処理
PERFORM F_TAB_SEP USING W_ERR_FILE
CHANGING L_STR.
CALL METHOD CL_ABAP_LIST_UTILITIES=>STRUCTURE_TO_DISPLAY
EXPORTING
MEMORY_DATA = L_STR
IMPORTING
DISPLAY_DATA = L_LINE.
TRANSFER L_LINE TO I_P_DOWN.
CLEAR : L_LINE , W_ERR_FILE.
ENDLOOP.
ENDIF.
CLOSE DATASET I_P_DOWN.
ENDIF.
ENDIF.
ENDFORM. " F_ERR_DOWNLOAD
&----
*& Form F_ERR_DISPLAY
&----
一覧表示(エラーレコードを表示する)
----
FORM F_ERR_DISPLAY .
CLEAR: SY-MSGID, SY-MSGTY, SY-MSGNO.
*--オンライン処理の場合
IF SY-BATCH <> CNS_X.
*--一覧表示の場合
IF R_ICHIRN = CNS_X.
*--表示する項目の設定
PERFORM F_SET_FIELDCAT.
*--ALV表示[一覧表示の場合]
PERFORM F_ALV_DISPLAY1.
*--チェックの場合
ELSE.
*--表示する項目の設定
PERFORM F_SET_FIELDCAT.
*--ALV表示[チェックの場合]
PERFORM F_ALV_DISPLAY.
ENDIF.
ENDIF.
ENDFORM. " F_ERR_DISPLAY
&----
*& Form F_SET_FIELDCAT
&----
表示する項目の設定
----
FORM F_SET_FIELDCAT .
DATA : L_POS TYPE I.
L_POS = 1.
DEFINE FIELD_CAT.
W_FIELDCAT-COL_POS = L_POS.
W_FIELDCAT-FIELDNAME = &1.
W_FIELDCAT-REF_FIELDNAME = &2.
W_FIELDCAT-REF_TABNAME = &3.
W_FIELDCAT-SELTEXT_L = &2. "4.
W_FIELDCAT-REPTEXT_DDIC = &2.
W_FIELDCAT-OUTPUTLEN = &3.
W_FIELDCAT-JUST = &4.
APPEND W_FIELDCAT TO IT_FIELDCAT.
ADD 1 TO L_POS.
END-OF-DEFINITION.
FIELD_CAT:
'ZBUKRS' TYP_ERR_HEADER-ZBUKRS '10' 'L', "会社コード
'ZLEAFI' TYP_ERR_HEADER-ZLEAFI '16' 'L', "リース会社コード
'LEAFI_TXT' TYP_ERR_HEADER-LEAFI_TXT '35' 'L', "リース会社コード名称
'ZLEYM' TYP_ERR_HEADER-ZLEYM '8' 'L', "開始年月
'ZLVTNR1' TYP_ERR_HEADER-ZLVTNR1 '15' 'L', "契約番号
'ZLVTNR2' TYP_ERR_HEADER-ZLVTNR2 '8' 'L', "契約枝番
'TXA50_ANLT' TYP_ERR_HEADER-ZZTXA50_ANLT '50' 'L',"契約名称
'INVNR' TYP_ERR_HEADER-INVNR '25' 'L', "棚卸番号
'ZZEBELN' TYP_ERR_HEADER-ZZEBELN '16' 'L', "購買発注伝票番号
'ZZACCT' TYP_ERR_HEADER-ZZACCT '12' 'L', "経理処理区分
'ACCT_TXT' TYP_ERR_HEADER-ACCT_TXT '16' 'L', "経理処理区分名称
'ZZINTEREST' TYP_ERR_HEADER-ZZINTEREST '12' 'L', "利息処理区分
'INTEREST_TXT' TYP_ERR_HEADER-INTEREST_TXT '16' 'L',"利息処理区分名称
'ZZLEGEB_SOUGAKU' TYP_ERR_HEADER-ZZLEGEB_SOUGAKU '13' 'R', "リース料総額
'ZWAERS' TYP_ERR_HEADER-ZWAERS '10' 'L', "通貨コード
'ZZLBARW_ALL' TYP_ERR_HEADER-ZZLBARW_ALL '14' 'R', "全リース資産額
'ZZCONTAX' TYP_ERR_HEADER-ZZCONTAX '13' 'R', "消費税額
'ZZKZINW' TYP_ERR_HEADER-ZZKZINW '13' 'R', "支払利息額
'ZANLN1' TYP_ERR_HEADER-ZANLN1 '18' 'L', "リース契約資産番号
'ZZANLN2' TYP_ERR_HEADER-ZZANLN2 '22' 'L', "リース契約資産補助番号
'ZZBELNR92_AA' TYP_ERR_HEADER-ZZBELNR92_AA '22' 'L',"リース債務登録伝票番号
'ZZBELNR96_FI' TYP_ERR_HEADER-ZZBELNR96_FI '18' 'L',"消費税計上伝票番号
'ZZBELNR96_AA' TYP_ERR_HEADER-ZZBELNR96_AA '18' 'L',"消費税登録伝票番号
'ZZBELNR97_AA' TYP_ERR_HEADER-ZZBELNR97_AA '20' 'L',"利息定額登録伝票番号
'MENGE_ALL' TYP_ERR_HEADER-MENGE_ALL '13' 'L', "全物件数
'AKTIV' TYP_ERR_HEADER-AKTIV '10' 'L', "資本化日付
'DEAKT' TYP_ERR_HEADER-DEAKT '10' 'L', "無効化日付
'KOSTL' TYP_ERR_HEADER-KOSTL '10' 'L', "原価センタ
'KTEXT' TYP_ERR_HEADER-KTEXT '20' 'L', "原価センタ名称
'KOSTLV' TYP_ERR_HEADER-KOSTLV '14' 'L', "責任原価センタ
'KTEXTV' TYP_ERR_HEADER-KTEXTV '20' 'L', "責任原価センタ名称
'WERKS' TYP_ERR_HEADER-WERKS '8' 'L', "プラント
'WERKS_TXT' TYP_ERR_HEADER-WERKS_TXT '30' 'L', "プラント名称
'STORT' TYP_ERR_HEADER-STORT '10' 'L', "場所
'STORT_TXT' TYP_ERR_HEADER-STORT_TXT '40' 'L', "場所名称
'RAUMNR' TYP_ERR_HEADER-RAUMNR '8' 'L', "部屋
'KFZKZ' TYP_ERR_HEADER-KFZKZ '18' 'L', "ナンバープレート
'XSTIL' TYP_ERR_HEADER-XSTIL '8' 'L', "資産休止
'ORD41' TYP_ERR_HEADER-ORD41 '14' 'L', "評価グループ 1
'ORDTX_1' TYP_ERR_HEADER-ORDTX_1 '30' 'L', "評価グループ 1名称
'ORD42' TYP_ERR_HEADER-ORD42 '14' 'L', "評価グループ 2
'ORDTX_2' TYP_ERR_HEADER-ORDTX_2 '30' 'L', "評価グループ 2名称
'ORD43' TYP_ERR_HEADER-ORD43 '14' 'L', "評価グループ 3
'ORDTX_3' TYP_ERR_HEADER-ORDTX_3 '30' 'L', "評価グループ 3名称
'ORD44' TYP_ERR_HEADER-ORD44 '14' 'L', "評価グループ 4
'ORDTX_4' TYP_ERR_HEADER-ORDTX_4 '30' 'L', "評価グループ 4名称
'IZWEK' TYP_ERR_HEADER-IZWEK '12' 'L', "設備投資理由
'IZWEK_TXT' TYP_ERR_HEADER-IZWEK_TXT '50' 'L', "設備投資理由名称
'UMWKZ' TYP_ERR_HEADER-UMWKZ '12' 'L', "環境投資理由
'UMWKZ_TXT' TYP_ERR_HEADER-UMWKZ_TXT '50' 'L', "環境投資理由名称
'ANLUE' TYP_ERR_HEADER-ANLUE '18' 'L', "資産グループコード
'ANLUE_TXT' TYP_ERR_HEADER-ANLUE_TXT '50' 'L', "資産グループコード名称
'LVDAT' TYP_ERR_HEADER-LVDAT '8' 'L', "契約日
'LKDAT' TYP_ERR_HEADER-LKDAT '8' 'L', "通知日付
'LEABG' TYP_ERR_HEADER-LEABG '8' 'L', "開始日付
'LEJAR' TYP_ERR_HEADER-LEJAR '18' 'L', "リース期間 (年数)
'LEPER' TYP_ERR_HEADER-LEPER '18' 'L', "リース期間 (期間数)
'LEART' TYP_ERR_HEADER-LEART '12' 'L', "リースタイプ
'LBASW' TYP_ERR_HEADER-LBASW '13' 'R', "基準価額
'LKAUF' TYP_ERR_HEADER-LKAUF '13' 'R', "買取価額
'LETXT' TYP_ERR_HEADER-LETXT '50' 'L', "追加テキスト
'LEANZ' TYP_ERR_HEADER-LEANZ '15' 'L', "支払回数
'LRYTH' TYP_ERR_HEADER-LRYTH '8' 'L', "支払周期
'LVORS' TYP_ERR_HEADER-LVORS '4' 'L', "前払
'LEGEB' TYP_ERR_HEADER-LEGEB '13' 'R', "リース料
'LZINS' TYP_ERR_HEADER-LZINS '7' 'L', "年利
'LBARW' TYP_ERR_HEADER-LBARW '13' 'R', "現在価値
'AFASL_TX' TYP_ERR_HEADER-AFASL_TX '24' 'L', "消費税(償却キー)
'NDJAR_TX' TYP_ERR_HEADER-NDJAR_TX '18' 'L', "消費税(耐用年数)
'NDPER_TX' TYP_ERR_HEADER-NDPER_TX '18' 'L', "消費税(耐用期間)
'AFABG_TX' TYP_ERR_HEADER-AFABG_TX '20' 'L', "消費税(償却開始日)
'GJE_KANSWTX' TYP_ERR_HEADER-GJE_KANSWTX '18' 'R', "消費税(取得価額)
'NAFA_GJETX' TYP_ERR_HEADER-NAFA_GJETX '20' 'R', "消費税(償却累計額)
'AFASL_FR' TYP_ERR_HEADER-AFASL_FR '26' 'L', "リース負債利息(償却キー)
'NDJAR_FR' TYP_ERR_HEADER-NDJAR_FR '26' 'L', "リース負債利息(耐用年数)
'NDPER_FR' TYP_ERR_HEADER-NDPER_FR '26' 'L', "リース負債利息(耐用期間)
'AFABG_FR' TYP_ERR_HEADER-AFABG_FR '40' 'L', "リース負債利息(償却開始日)
'GJE_KANSWFR' TYP_ERR_HEADER-GJE_KANSWFR '26' 'R', "リース負債利息(取得価額)
'NAFA_GJEFR' TYP_ERR_HEADER-NAFA_GJEFR '40' 'R', "リース負債利息(償却累計額)
'SZINS_GJE' TYP_ERR_HEADER-SZINS_GJE '24' 'R', "リース負債利息(利息額)
'AFASL_RT' TYP_ERR_HEADER-AFASL_RT '26' 'L', "リース利息定額(償却キー)
'NDJAR_RT' TYP_ERR_HEADER-NDJAR_RT '26' 'L', "リース利息定額(耐用年数)
'NDPER_RT' TYP_ERR_HEADER-NDPER_RT '26' 'L', "リース利息定額(耐用期間)
'AFABG_RT' TYP_ERR_HEADER-AFABG_RT '28' 'L', "リース利息定額(償却開始日)
'GJE_KANSWRT' TYP_ERR_HEADER-GJE_KANSWRT '26' 'R', "リース利息定額(取得価額)
'NAFA_GJERT' TYP_ERR_HEADER-NAFA_GJERT '28' 'R', "リース利息定額(償却累計額)
'ZZANLKL' TYP_ERR_HEADER-ZZANLKL '16' 'L', "資産クラス
'ANLKL_TXT' TYP_ERR_HEADER-ANLKL_TXT '50' 'L', "資産クラス名称
'INVNR4' TYP_ERR_HEADER-INVNR4 '25' 'L', "物件番号(棚卸番号)
'ANLN1' TYP_ERR_HEADER-ANLN1 '12' 'L', "資産番号
'LVTNR' TYP_ERR_HEADER-LVTNR '12' 'L', "補助番号
'TXT50_ANLT' TYP_ERR_HEADER-TXT50_ANLT '50' 'L', "物件名称
'MENGE' TYP_ERR_HEADER-MENGE '13' 'L', "物件数
'ZLBARW4' TYP_ERR_HEADER-ZLBARW4 '13' 'R', "リース資産額
'ZWAERS4' TYP_ERR_HEADER-ZWAERS4 '10' 'L', "通貨コード
'ZZMAINTE' TYP_ERR_HEADER-ZZMAINTE '13' 'R', "維持費用額
'ZZLGADV' TYP_ERR_HEADER-ZZLGADV '13' 'R', "長期前受収益
'ZZBELNR01_FI' TYP_ERR_HEADER-ZZBELNR01_FI '22' 'L',"リース資産登録伝票番号
'ZZBELNR98_AA' TYP_ERR_HEADER-ZZBELNR98_AA '20' 'L',"維持費用登録伝票番号
'ZZBELNR99_AA' TYP_ERR_HEADER-ZZBELNR99_AA '24' 'L',"長期前受収益登録伝票番号
'KOSTL4' TYP_ERR_HEADER-KOSTL4 '18' 'L', "(物件)原価センタ
'KTEXT4' TYP_ERR_HEADER-KTEXT4 '22' 'L', "(物件)原価センタ名称
'KOSTLV4' TYP_ERR_HEADER-KOSTLV4 '22' 'L', "(物件)責任原価センタ
'KTEXTV4' TYP_ERR_HEADER-KTEXTV4 '26' 'L', "(物件)責任原価センタ名称
'WERKS4' TYP_ERR_HEADER-WERKS4 '16' 'L', "(物件)プラント
'WERKS_TXT4' TYP_ERR_HEADER-WERKS_TXT4 '30' 'L', "(物件)プラント名称
'STORT4' TYP_ERR_HEADER-STORT4 '12' 'L', "(物件)場所
'STORT_TXT4' TYP_ERR_HEADER-STORT_TXT4 '40' 'L', "(物件)場所名称
'RAUMNR4' TYP_ERR_HEADER-RAUMNR4 '12' 'L', "(物件)部屋
'KFZKZ4' TYP_ERR_HEADER-KFZKZ4 '24' 'L', "(物件)ナンバープレート
'XSTIL4' TYP_ERR_HEADER-XSTIL4 '16' 'L', "資産休止
'ORD414' TYP_ERR_HEADER-ORD414 '22' 'L', "(物件)評価グループ1
'ORDTX_14' TYP_ERR_HEADER-ORDTX_14 '30' 'L', "(物件)評価グループ1名称
'ORD424' TYP_ERR_HEADER-ORD424 '22' 'L', "(物件)評価グループ2
'ORDTX_24' TYP_ERR_HEADER-ORDTX_24 '30' 'L', "(物件)評価グループ2名称
'ORD434' TYP_ERR_HEADER-ORD434 '22' 'L', "(物件)評価グループ3
'ORDTX_34' TYP_ERR_HEADER-ORDTX_34 '30' 'L', "(物件)評価グループ3名称
'ORD444' TYP_ERR_HEADER-ORD444 '22' 'L', "(物件)評価グループ4
'ORDTX_44' TYP_ERR_HEADER-ORDTX_44 '30' 'L', "(物件)評価グループ4名称
'IZWEK4' TYP_ERR_HEADER-IZWEK4 '20' 'L', "(物件)設備投資理由
'IZWEK_TXT4' TYP_ERR_HEADER-IZWEK_TXT4 '50' 'L', "(物件)設備投資理由名称
'UMWKZ4' TYP_ERR_HEADER-UMWKZ4 '20' 'L', "(物件)環境投資理由
'UMWKZ_TXT4' TYP_ERR_HEADER-UMWKZ_TXT4 '50' 'L', "(物件)環境投資理由名称
'ANLUE4' TYP_ERR_HEADER-ANLUE4 '26' 'L', "(物件)資産グループコード
'ANLUE_TXT4' TYP_ERR_HEADER-ANLUE_TXT4 '50' 'L', "(物件)資産グループコード名称
'LEAFI' TYP_ERR_HEADER-LEAFI '18' 'L', "(物件)リース会社
'LEAFI_TXT4' TYP_ERR_HEADER-LEAFI_TXT4 '22' 'L', "(物件)リース会社名称
'LVTNR4' TYP_ERR_HEADER-LVTNR4 '16' 'L', "(物件)契約番号',
'AFASL_B' TYP_ERR_HEADER-AFASL_B '16' 'L', "帳簿(償却キー)
'NDJAR_B' TYP_ERR_HEADER-NDJAR_B '16' 'L', "帳簿(耐用年数)
'NDPER_B' TYP_ERR_HEADER-NDPER_B '16' 'L', "帳簿(耐用期間)
'AFABG_B' TYP_ERR_HEADER-AFABG_B '18' 'L', "帳簿(償却開始日)
'GJE_KANSWB' TYP_ERR_HEADER-GJE_KANSWB '16' 'R', "帳簿(取得価額)
'NAFA_GJEB' TYP_ERR_HEADER-NAFA_GJEB '18' 'R', "帳簿(償却累計額)
'AFASL_TCD' TYP_ERR_HEADER-AFASL_TCD '16' 'L', "税法(償却キー)
'NDJAR_TCD' TYP_ERR_HEADER-NDJAR_TCD '16' 'L', "税法(耐用年数)
'NDPER_TCD' TYP_ERR_HEADER-NDPER_TCD '16' 'L', "税法(耐用期間)
'AFABG_TCD' TYP_ERR_HEADER-AFABG_TCD '18' 'L', "税法(償却開始日)
'GJE_KANSWTCD' TYP_ERR_HEADER-GJE_KANSWTCD '16' 'R',"税法(取得価額)
'NAFA_GJETCD' TYP_ERR_HEADER-NAFA_GJETCD '18' 'R', "税法(償却累計額)
'AFASL_MC' TYP_ERR_HEADER-AFASL_MC '20' 'L', "維持費用(償却キー)
'NDJAR_MC' TYP_ERR_HEADER-NDJAR_MC '20' 'L', "維持費用(耐用年数)
'NDPER_MC' TYP_ERR_HEADER-NDPER_MC '20' 'L', "維持費用(耐用期間)
'AFABG_MC' TYP_ERR_HEADER-AFABG_MC '22' 'L', "維持費用(償却開始日)
'GJE_KANSWMC' TYP_ERR_HEADER-GJE_KANSWMC '20' 'R', "維持費用(取得価額)
'NAFA_GJEMC' TYP_ERR_HEADER-NAFA_GJEMC '22' 'R', "維持費用(償却累計額)
'AFASL_IN' TYP_ERR_HEADER-AFASL_IN '24' 'L', "長期前受収益(償却キー)
'NDJAR_IN' TYP_ERR_HEADER-NDJAR_IN '24' 'L', "長期前受収益(耐用年数)
'NDPER_IN' TYP_ERR_HEADER-NDPER_IN '24' 'L', "長期前受収益(耐用期間)
'AFABG_IN' TYP_ERR_HEADER-AFABG_IN '26' 'L', "長期前受収益(償却開始日)
'GJE_KANSWIN' TYP_ERR_HEADER-GJE_KANSWIN '24' 'R', "長期前受収益(取得価額)
'NAFA_GJEIN' TYP_ERR_HEADER-NAFA_GJEIN '26' 'R'. "長期前受収益(償却累計額)
IF R_ICHIRN <> CNS_X.
W_FIELDCAT-FIELDNAME = 'ZERRMSG'.
W_FIELDCAT-REF_FIELDNAME = 'BU_TEXT100'.
W_FIELDCAT-REF_TABNAME = 'TB038B'.
W_FIELDCAT-SELTEXT_L = TYP_ERR_HEADER-ZERRMSG. "エラーメッセージ
W_FIELDCAT-REPTEXT_DDIC = TYP_ERR_HEADER-ZERRMSG.
W_FIELDCAT-OUTPUTLEN = '50'.
W_FIELDCAT-JUST = 'L'.
APPEND W_FIELDCAT TO IT_FIELDCAT.
'ZERRMSG' 'BU_TEXT100' 'TB038B' TYP_ERR_HEADER-ZERRMSG. "エラーメッセージ
ENDIF.
GW_LAYOUT-COLWIDTH_OPTIMIZE = CNS_X.
ENDFORM. " F_SET_FIELDCAT
&----
*& Form F_ALV_DISPLAY
&----
ALV表示[チェックの場合]
----
FORM F_ALV_DISPLAY .
DELETE IT_ERR_FILE INDEX 1.
G_VARIANT-REPORT = SY-REPID.
G_VARIANT-VARIANT = P_LAYOUT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = ' '
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = G_TITLE
I_GRID_SETTINGS =
IS_LAYOUT = GW_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = G_VARIANT
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_ERR_FILE
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " F_ALV_DISPLAY
&----
*& Form F_MOVE_FROM_SISAN
&----
LDB[論理データベース]からエラーファイルにアッペンドする
----
FORM F_MOVE_FROM_SISAN USING I_W_SISAN TYPE TYP_SISAN.
IF W_SISAN-AFABE = CNS_96. "消費税領域
W_ERR_FILE-AFASL_TX = I_W_SISAN-AFASL.
W_ERR_FILE-NDJAR_TX = I_W_SISAN-NDJAR.
W_ERR_FILE-NDPER_TX = I_W_SISAN-NDPER.
W_ERR_FILE-AFABG_TX = I_W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE-GJE_KANSWTX CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE-NAFA_GJETX CURRENCY 'JPY'.
ELSEIF W_SISAN-AFABE = CNS_92. "リース負債利息領域
W_ERR_FILE-AFASL_FR = I_W_SISAN-AFASL.
W_ERR_FILE-NDJAR_FR = I_W_SISAN-NDJAR.
W_ERR_FILE-NDPER_FR = I_W_SISAN-NDPER.
W_ERR_FILE-AFABG_FR = I_W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE-GJE_KANSWTX CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE-NAFA_GJETX CURRENCY 'JPY'.
WRITE W_SISAN-SZINS_GJE TO W_ERR_FILE-SZINS_GJE CURRENCY 'JPY'.
ELSEIF W_SISAN-AFABE = CNS_97. "リース利息定額領域
W_ERR_FILE-AFASL_RT = I_W_SISAN-AFASL.
W_ERR_FILE-NDJAR_RT = I_W_SISAN-NDJAR.
W_ERR_FILE-NDPER_RT = I_W_SISAN-NDPER.
W_ERR_FILE-AFABG_RT = I_W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE-GJE_KANSWRT CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE-NAFA_GJERT CURRENCY 'JPY'.
ELSEIF W_SISAN-AFABE = CNS_1. "帳簿領域
W_ERR_FILE-AFASL_B = I_W_SISAN-AFASL.
W_ERR_FILE-NDJAR_B = I_W_SISAN-NDJAR.
W_ERR_FILE-NDPER_B = I_W_SISAN-NDPER.
W_ERR_FILE-AFABG_B = I_W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE-GJE_KANSWB CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE-NAFA_GJEB CURRENCY 'JPY'.
ELSEIF W_SISAN-AFABE = CNS_15. "税法領域
W_ERR_FILE-AFASL_TCD = I_W_SISAN-AFASL.
W_ERR_FILE-NDJAR_TCD = I_W_SISAN-NDJAR.
W_ERR_FILE-NDPER_TCD = I_W_SISAN-NDPER.
W_ERR_FILE-AFABG_TCD = I_W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE-GJE_KANSWTCD CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE-NAFA_GJETCD CURRENCY 'JPY'.
ELSEIF W_SISAN-AFABE = CNS_98. "維持費用
W_ERR_FILE-AFASL_MC = I_W_SISAN-AFASL.
W_ERR_FILE-NDJAR_MC = I_W_SISAN-NDJAR.
W_ERR_FILE-NDPER_MC = I_W_SISAN-NDPER.
W_ERR_FILE-AFABG_MC = I_W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE-GJE_KANSWMC CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE-NAFA_GJEMC CURRENCY 'JPY'.
ELSEIF W_SISAN-AFABE = CNS_99. "長期前受収益
W_ERR_FILE-AFASL_IN = I_W_SISAN-AFASL.
W_ERR_FILE-NDJAR_IN = I_W_SISAN-NDJAR.
W_ERR_FILE-NDPER_IN = I_W_SISAN-NDPER.
W_ERR_FILE-AFABG_IN = I_W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE-GJE_KANSWIN CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE-NAFA_GJEIN CURRENCY 'JPY'.
ENDIF.
*全物件数と物件数の設定
IF W_SISAN-AFABE = CNS_92 OR "リース負債利息領域
W_SISAN-AFABE = CNS_96 OR "消費税領域
W_SISAN-AFABE = CNS_97. "リース利息定額領域
W_ERR_FILE-MENGE_ALL = I_W_SISAN-MENGE.
W_ERR_FILE-XSTIL = I_W_SISAN-XSTIL.
W_ERR_FILE-KOSTL = I_W_SISAN-KOSTL.
W_ERR_FILE-KOSTLV = I_W_SISAN-KOSTLV.
W_ERR_FILE-WERKS = I_W_SISAN-WERKS.
W_ERR_FILE-STORT = I_W_SISAN-STORT.
W_ERR_FILE-RAUMNR = I_W_SISAN-RAUMNR.
W_ERR_FILE-KFZKZ = I_W_SISAN-KFZKZ.
ELSEIF W_SISAN-AFABE = CNS_1 OR "帳簿領域
W_SISAN-AFABE = CNS_15 OR "税法領域
W_SISAN-AFABE = CNS_98 OR "維持費用
W_SISAN-AFABE = CNS_99 OR "長期前受収益
W_ERR_FILE-MENGE = I_W_SISAN-MENGE.
W_ERR_FILE-XSTIL4 = I_W_SISAN-XSTIL.
W_ERR_FILE-KOSTL4 = I_W_SISAN-KOSTL.
W_ERR_FILE-KOSTLV4 = I_W_SISAN-KOSTLV.
W_ERR_FILE-WERKS4 = I_W_SISAN-WERKS.
W_ERR_FILE-STORT4 = I_W_SISAN-STORT.
W_ERR_FILE-RAUMNR4 = I_W_SISAN-RAUMNR.
W_ERR_FILE-KFZKZ4 = I_W_SISAN-KFZKZ.
ENDIF.
ENDFORM. " F_MOVE_FROM_SISAN
&----
*& Form F_SET_GENZAIKACHI
&----
現在価値の計算
----
FORM F_SET_GENZAIKACHI USING W_ANLA TYPE ANLA.
DATA L_LBARW TYPE RA02S-LBARW.
CLEAR : L_LBARW.
CALL FUNCTION 'AM_BARWERT_ERMITTELN'
EXPORTING
I_ANZBP = CNS_012
I_LEANZ = W_ANLA-LEANZ
I_LEGEB = W_ANLA-LEGEB
I_LRYTH = W_ANLA-LRYTH
I_LVORS = W_ANLA-LVORS
I_LZINS = W_ANLA-LZINS
IMPORTING
E_BARWERT = L_LBARW
EXCEPTIONS
BLART_NOT_FOUND = 1
BSCHL_NOT_FOUND = 2
FEHLER_IN_LEASINGDATEN = 3
KTOGR_NOT_FOUND = 4
NICHT_BEBUCHBAR = 5
T009B_NOT_FOUND = 6
T009_NOT_FOUND = 7
T083_NOT_FOUND = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
W_ERR_FILE-LBARW = L_LBARW.
WRITE L_LBARW TO W_ERR_FILE-LBARW CURRENCY 'JPY'.
ENDFORM. " F_SET_GENZAIKACHI
&----
*& Form F_DELETE_INVNR
&----
棚卸番号の重複チェック
----
FORM F_DELETE_INVNR TABLES IT_ANLA_TEMP LIKE IT_ANLA_TEMP.
DATA : LW_FI24 TYPE ZTFI0024,
L_TABIX TYPE SY-TABIX,
L_SYINDEX TYPE SY-INDEX.
FIELD-SYMBOLS : <FS_1> TYPE ANY,
<FS_2> TYPE ANY.
CLEAR : W_ANLA. "G_TABIX,
SORT IT_ANLA_TEMP BY INVNR.
IT_ANLA_TEMP1[] = IT_ANLA_TEMP[].
LOOP AT IT_ANLA_TEMP INTO W_ANLA.
AT LAST.
CONTINUE.
ENDAT.
L_TABIX = SY-TABIX + 1.
READ TABLE IT_ANLA_TEMP INTO W_ANLA_TEMP INDEX L_TABIX.
L_SYINDEX = CNS_73.
ASSIGN COMPONENT L_SYINDEX OF STRUCTURE W_ANLA TO <FS_1>.
ASSIGN COMPONENT L_SYINDEX OF STRUCTURE W_ANLA_TEMP TO <FS_2>.
IF <FS_1> = <FS_2>.
READ TABLE IT_ANLA_TEMP INTO W_ANLA_TEMP
WITH KEY INVNR = W_ANLA-INVNR.
IF SY-SUBRC = 0.
DELETE IT_ANLA_TEMP WHERE INVNR = W_ANLA-INVNR.
ELSE.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR : W_ANLA, W_ANLA_TEMP.
LOOP AT IT_ANLA_TEMP1 INTO W_ANLA_TEMP.
READ TABLE IT_ANLA_TEMP INTO W_ANLA
WITH KEY INVNR = W_ANLA_TEMP-INVNR.
IF SY-SUBRC <> 0.
CLEAR : LW_FI24.
SELECT * FROM ZTFI0024 INTO LW_FI24
UP TO 1 ROWS WHERE ZZBUKRS = W_ANLA_TEMP-BUKRS
AND ZZANLN1 = W_ANLA_TEMP-ANLN1.
ENDSELECT.
PERFORM F_MOVE_24_ERROR USING LW_FI24 CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
W_ERR_FILE-LEAFI = LW_FI24-ZZLEAFI.
W_ERR_FILE-ZLEAFI = LW_FI24-ZZLEAFI. "1412
W_ERR_FILE-ZLEYM = LW_FI24-ZZLEYM. "1412
W_ERR_FILE-LVTNR4 = LW_FI24-ZZLVTNR1.
W_ERR_FILE-ZLVTNR1 = LW_FI24-ZZLVTNR1. "1412
W_ERR_FILE-ZLVTNR2 = LW_FI24-ZZLVTNR2. "1412
MOVE-CORRESPONDING LW_FI24 TO W_ERR_FILE.
PERFORM F_MOVE_ANLA_BUKKEN USING W_ANLA_TEMP TEXT-061.
ELSE.
CLEAR : LW_FI24.
SELECT * FROM ZTFI0024 INTO LW_FI24
UP TO 1 ROWS WHERE ZZBUKRS = W_ANLA_TEMP-BUKRS
AND ZZANLN1 = W_ANLA_TEMP-ANLN1.
ENDSELECT.
PERFORM F_MOVE_24_ERROR USING LW_FI24 CHANGING W_ERR_FILE1.
MOVE-CORRESPONDING W_ERR_FILE1 TO W_ERR_FILE.
W_ERR_FILE-LEAFI = LW_FI24-ZZLEAFI.
W_ERR_FILE-ZLEAFI = LW_FI24-ZZLEAFI. "1412
W_ERR_FILE-ZLEYM = LW_FI24-ZZLEYM. "1412
W_ERR_FILE-LVTNR4 = LW_FI24-ZZLVTNR1.
W_ERR_FILE-ZLVTNR1 = LW_FI24-ZZLVTNR1. "1412
W_ERR_FILE-ZLVTNR2 = LW_FI24-ZZLVTNR2. "1412
MOVE-CORRESPONDING LW_FI24 TO W_ERR_FILE.
PERFORM F_MOVE_ANLA_BUKKEN USING W_ANLA SPACE.
ENDIF.
CLEAR : W_ANLA_TEMP , W_ANLA.
ENDLOOP.
ENDFORM. " F_DELETE_INVNR
&----
*& Form F_INSERT_ZERO
&----
ゼロを入れる用汎用モジュール
----
FORM F_INSERT_ZERO USING I_INPUT TYPE ANY.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = I_INPUT
IMPORTING
OUTPUT = I_INPUT.
ENDFORM. " F_INSERT_ZERO
&----
*& Form F_ALV_DISPLAY1
&----
ALV表示[一覧表示の場合]
----
FORM F_ALV_DISPLAY1 .
DELETE IT_ERR_FILE1 INDEX 1.
G_VARIANT-REPORT = SY-REPID.
G_VARIANT-VARIANT = P_LAYOUT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = ' '
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = G_TITLE
I_GRID_SETTINGS =
IS_LAYOUT = GW_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = G_VARIANT
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
*start suren
T_OUTTAB = IT_ERR_FILE1
T_OUTTAB = IT_ERR_FILE2
*end suren
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " F_ALV_DISPLAY1
&----
*& Form F_MOVE_23_ERROR
&----
リース契約からエラーファイルにアッペンド
----
FORM F_MOVE_23_ERROR USING LW_FI0023 TYPE ZTFI0023
*START SUREN
CHANGING W_ERR_FILE1 TYPE TYP_ERR_FILE1.
*END SUREN
W_ERR_FILE1-ZBUKRS = LW_FI0023-ZZBUKRS.
W_ERR_FILE1-ZLEAFI = LW_FI0023-ZZLEAFI.
W_ERR_FILE1-ZLEYM = LW_FI0023-ZZLEYM.
W_ERR_FILE1-ZLVTNR1 = LW_FI0023-ZZLVTNR1.
W_ERR_FILE1-ZLVTNR2 = LW_FI0023-ZZLVTNR2.
W_ERR_FILE1-INVNR = LW_FI0023-ZZINVNR_ANLA.
W_ERR_FILE1-ZANLN1 = LW_FI0023-ZZANLN1.
W_ERR_FILE1-ZWAERS = LW_FI0023-ZZWAERS.
W_ERR_FILE1-TXA50_ANLT = LW_FI0023-ZZTXA50_ANLT.
W_ERR_FILE1-MENGE_ALL = LW_FI0023-ZZQUAN.
W_ERR_FILE1-KOSTL = LW_FI0023-ZZKOSTL.
W_ERR_FILE1-KOSTLV = LW_FI0023-ZZKOSTLV.
W_ERR_FILE1-WERKS = LW_FI0023-ZZWERKS_D.
W_ERR_FILE1-STORT = LW_FI0023-ZZSTORT.
W_ERR_FILE1-RAUMNR = LW_FI0023-ZZRAUMNR.
W_ERR_FILE1-KFZKZ = LW_FI0023-ZZAM_KFZKZ.
W_ERR_FILE1-ORD41 = LW_FI0023-ZZORD41.
W_ERR_FILE1-ORD42 = LW_FI0023-ZZORD42.
W_ERR_FILE1-ORD43 = LW_FI0023-ZZORD43.
W_ERR_FILE1-ORD44 = LW_FI0023-ZZORD44.
W_ERR_FILE1-IZWEK = LW_FI0023-ZZIZWEK.
W_ERR_FILE1-UMWKZ = LW_FI0023-ZZAM_UMWKZ.
W_ERR_FILE1-ANLUE = LW_FI0023-ZZANLUE.
W_ERR_FILE1-LVDAT = LW_FI0023-ZZLVDAT.
W_ERR_FILE1-LKDAT = LW_FI0023-ZZLKDAT.
W_ERR_FILE1-LEABG = LW_FI0023-ZZLEABG.
W_ERR_FILE1-LEJAR = LW_FI0023-ZZLEJAR.
W_ERR_FILE1-LEPER = LW_FI0023-ZZLEPER.
W_ERR_FILE1-LEART = LW_FI0023-ZZLEART.
W_ERR_FILE1-LETXT = LW_FI0023-ZZLETXT.
W_ERR_FILE1-LEANZ = LW_FI0023-ZZLEANZ.
W_ERR_FILE1-LRYTH = LW_FI0023-ZZLRYTH.
W_ERR_FILE1-LVORS = LW_FI0023-ZZLVORS.
W_ERR_FILE1-LZINS = LW_FI0023-ZZLZINS.
通貨額の内部データ書式への変換
WRITE LW_FI0023-ZZLEGEB_SOUGAKU TO W_ERR_FILE1-ZZLEGEB_SOUGAKU CURRENCY 'JPY'.
WRITE LW_FI0023-ZZLBARW_ALL TO W_ERR_FILE1-ZZLBARW_ALL CURRENCY 'JPY'.
WRITE LW_FI0023-ZZCONTAX TO W_ERR_FILE1-ZZCONTAX CURRENCY 'JPY'.
WRITE LW_FI0023-ZZKZINW TO W_ERR_FILE1-ZZKZINW CURRENCY 'JPY'.
WRITE LW_FI0023-ZZLBASW TO W_ERR_FILE1-LBASW CURRENCY 'JPY'.
WRITE LW_FI0023-ZZLKAUF TO W_ERR_FILE1-LKAUF CURRENCY 'JPY'.
WRITE LW_FI0023-ZZLEGEB TO W_ERR_FILE1-LEGEB CURRENCY 'JPY'.
WRITE LW_FI0023-ZZLBARW TO W_ERR_FILE1-LBARW CURRENCY 'JPY'.
ENDFORM. " F_MOVE_23_ERROR
&----
*& Form F_MOVE_24_ERROR
&----
text
----
FORM F_MOVE_24_ERROR USING LW_FI0024 TYPE ZTFI0024
*SUREN START
CHANGING W_ERR_FILE1 TYPE TYP_ERR_FILE1.
*SUREN END
W_ERR_FILE1-INVNR4 = LW_FI0024-ZZINVNR_ANLA.
W_ERR_FILE1-TXT50_ANLT = LW_FI0024-ZZTXA50_ANLT.
W_ERR_FILE1-MENGE = LW_FI0024-ZZQUAN.
W_ERR_FILE1-KOSTL4 = LW_FI0024-ZZKOSTL.
W_ERR_FILE1-KOSTLV4 = LW_FI0024-ZZKOSTLV.
W_ERR_FILE1-WERKS4 = LW_FI0024-ZZWERKS_D.
W_ERR_FILE1-STORT4 = LW_FI0024-ZZSTORT.
W_ERR_FILE1-RAUMNR4 = LW_FI0024-ZZRAUMNR.
W_ERR_FILE1-KFZKZ4 = LW_FI0024-ZZAM_KFZKZ.
W_ERR_FILE1-ORD414 = LW_FI0024-ZZORD41.
W_ERR_FILE1-ORD424 = LW_FI0024-ZZORD42.
W_ERR_FILE1-ORD434 = LW_FI0024-ZZORD43.
W_ERR_FILE1-ORD444 = LW_FI0024-ZZORD44.
W_ERR_FILE1-IZWEK4 = LW_FI0024-ZZIZWEK.
W_ERR_FILE1-UMWKZ4 = LW_FI0024-ZZAM_UMWKZ.
W_ERR_FILE1-ANLUE4 = LW_FI0024-ZZANLUE.
W_ERR_FILE1-LEAFI = LW_FI0024-ZZLEAFI.
W_ERR_FILE1-LVTNR4 = LW_FI0024-ZZLVTNR1.
W_ERR_FILE1-ANLN1 = LW_FI0024-ZZANLN1.
W_ERR_FILE1-AFASL_B = LW_FI0024-ZZAFASL01.
W_ERR_FILE1-NDJAR_B = LW_FI0024-ZZNDJAR01.
W_ERR_FILE1-NDPER_B = LW_FI0024-ZZNDPER01.
W_ERR_FILE1-ZWAERS4 = LW_FI0024-ZZWAERS.
ENDFORM. " F_MOVE_24_ERROR
&----
*& Form F_TAB_SEP
&----
タブファイル処理
----
FORM F_TAB1_SEP USING LW_ERR_FILE1 TYPE TYP_ERR_FILE1
CHANGING LW_STR TYPE C.
CONCATENATE LW_ERR_FILE1-ZBUKRS "会社コード
LW_ERR_FILE1-ZLEAFI "リース会社コード
LW_ERR_FILE1-LEAFI_TXT "リース会社コード名称
LW_ERR_FILE1-ZLEYM "開始年月
LW_ERR_FILE1-ZLVTNR1 "契約番号
LW_ERR_FILE1-ZLVTNR2 "契約枝番
LW_ERR_FILE1-TXA50_ANLT "契約名称
LW_ERR_FILE1-INVNR "棚卸番号
LW_ERR_FILE1-ZZEBELN "購買発注伝票番号
LW_ERR_FILE1-ZZACCT "経理処理区分
LW_ERR_FILE1-ACCT_TXT "経理処理区分名称
LW_ERR_FILE1-ZZINTEREST "利息処理区分
LW_ERR_FILE1-INTEREST_TXT "利息処理区分名称
LW_ERR_FILE1-ZZLEGEB_SOUGAKU "リース料総額
LW_ERR_FILE1-ZWAERS "通貨コード
LW_ERR_FILE1-ZZLBARW_ALL "全リース資産額
LW_ERR_FILE1-ZZCONTAX "消費税額
LW_ERR_FILE1-ZZKZINW "支払利息額
LW_ERR_FILE1-ZANLN1 "リース契約資産番号
LW_ERR_FILE1-ZZANLN2 "リース契約資産補助番号
LW_ERR_FILE1-ZZBELNR92_AA "リース債務登録伝票番号
LW_ERR_FILE1-ZZBELNR96_FI "消費税計上伝票番号
LW_ERR_FILE1-ZZBELNR96_AA "消費税登録伝票番号
LW_ERR_FILE1-ZZBELNR97_AA "利息定額登録伝票番号
LW_ERR_FILE1-MENGE_ALL "全物件数
LW_ERR_FILE1-AKTIV "資本化日付
LW_ERR_FILE1-DEAKT "無効化日付
LW_ERR_FILE1-KOSTL "原価センタ
LW_ERR_FILE1-KTEXT "原価センタ名称
LW_ERR_FILE1-KOSTLV "責任原価センタ
LW_ERR_FILE1-KTEXTV "責任原価センタ名称
LW_ERR_FILE1-WERKS "プラント
LW_ERR_FILE1-WERKS_TXT "プラント名称
LW_ERR_FILE1-STORT "場所
LW_ERR_FILE1-STORT_TXT "場所名称
LW_ERR_FILE1-RAUMNR "部屋
LW_ERR_FILE1-KFZKZ "ナンバープレート
LW_ERR_FILE1-XSTIL "資産休止
LW_ERR_FILE1-ORD41 "評価グループ 1
LW_ERR_FILE1-ORDTX_1 "評価グループ 1名称
LW_ERR_FILE1-ORD42 "評価グループ 2
LW_ERR_FILE1-ORDTX_2 "評価グループ 2名称
LW_ERR_FILE1-ORD43 "評価グループ 3
LW_ERR_FILE1-ORDTX_3 "評価グループ 3名称
LW_ERR_FILE1-ORD44 "評価グループ 4
LW_ERR_FILE1-ORDTX_4 "評価グループ 4名称
LW_ERR_FILE1-IZWEK "設備投資理由
LW_ERR_FILE1-IZWEK_TXT "設備投資理由名称
LW_ERR_FILE1-UMWKZ "環境投資理由
LW_ERR_FILE1-UMWKZ_TXT "環境投資理由名称
LW_ERR_FILE1-ANLUE "資産グループコード
LW_ERR_FILE1-ANLUE_TXT "資産グループコード名称
LW_ERR_FILE1-LVDAT "契約日
LW_ERR_FILE1-LKDAT "通知日付
LW_ERR_FILE1-LEABG "開始日付
LW_ERR_FILE1-LEJAR "リース期間 (年数)
LW_ERR_FILE1-LEPER "リース期間 (期間数)
LW_ERR_FILE1-LEART "リースタイプ
LW_ERR_FILE1-LBASW "基準価額
LW_ERR_FILE1-LKAUF "買取価額
LW_ERR_FILE1-LETXT "追加テキスト
LW_ERR_FILE1-LEANZ "支払回数
LW_ERR_FILE1-LRYTH "支払周期
LW_ERR_FILE1-LVORS "前払
LW_ERR_FILE1-LEGEB "リース料
LW_ERR_FILE1-LZINS "年利
LW_ERR_FILE1-LBARW "現在価値
LW_ERR_FILE1-AFASL_TX "消費税(償却キー)
LW_ERR_FILE1-NDJAR_TX "消費税(耐用年数)
LW_ERR_FILE1-NDPER_TX "消費税(耐用期間)
LW_ERR_FILE1-AFABG_TX "消費税(償却開始日)
LW_ERR_FILE1-GJE_KANSWTX "消費税(取得価額)
LW_ERR_FILE1-NAFA_GJETX "消費税(償却累計額)
LW_ERR_FILE1-AFASL_FR "リース負債利息(償却キー)
LW_ERR_FILE1-NDJAR_FR "リース負債利息(耐用年数)
LW_ERR_FILE1-NDPER_FR "リース負債利息(耐用期間)
LW_ERR_FILE1-AFABG_FR "リース負債利息(償却開始日)
LW_ERR_FILE1-GJE_KANSWFR "リース負債利息(取得価額)
LW_ERR_FILE1-NAFA_GJEFR "リース負債利息(償却累計額)
LW_ERR_FILE1-SZINS_GJE "リース負債利息(利息額)
LW_ERR_FILE1-AFASL_RT "リース利息定額(償却キー)
LW_ERR_FILE1-NDJAR_RT "リース利息定額(耐用年数)
LW_ERR_FILE1-NDPER_RT "リース利息定額(耐用期間)
LW_ERR_FILE1-AFABG_RT "リース利息定額(償却開始日)
LW_ERR_FILE1-GJE_KANSWRT "リース利息定額(取得価額)
LW_ERR_FILE1-NAFA_GJERT "リース利息定額(償却累計額)
LW_ERR_FILE1-ZZANLKL "資産クラス
LW_ERR_FILE1-ANLKL_TXT "資産クラス名称
LW_ERR_FILE1-INVNR4 "物件番号
LW_ERR_FILE1-ANLN1 "資産番号
LW_ERR_FILE1-LVTNR "資産補助番号
LW_ERR_FILE1-TXT50_ANLT "物件名称
LW_ERR_FILE1-MENGE "物件数
LW_ERR_FILE1-ZLBARW4 "リース資産額
LW_ERR_FILE1-ZWAERS4 "通貨コード
LW_ERR_FILE1-ZZMAINTE "維持費用額
LW_ERR_FILE1-ZZLGADV "長期前受収益
LW_ERR_FILE1-ZZBELNR01_FI "リース資産登録伝票番号
LW_ERR_FILE1-ZZBELNR98_AA "維持費用登録伝票番号
LW_ERR_FILE1-ZZBELNR99_AA "長期前受収益登録伝票番号
LW_ERR_FILE1-KOSTL4 "(物件)原価センタ
LW_ERR_FILE1-KTEXT4 "(物件)原価センタ名称
LW_ERR_FILE1-KOSTLV4 "(物件)責任原価センタ
LW_ERR_FILE1-KTEXTV4 "(物件)責任原価センタ名称
LW_ERR_FILE1-WERKS4 "(物件)プラント
LW_ERR_FILE1-WERKS_TXT4 "(物件)プラント名称
LW_ERR_FILE1-STORT4 "(物件)場所
LW_ERR_FILE1-STORT_TXT4 "(物件)場所名称
LW_ERR_FILE1-RAUMNR4 "(物件)部屋
LW_ERR_FILE1-KFZKZ4 "(物件)ナンバープレート
LW_ERR_FILE1-XSTIL4 "(物件)資産休止
LW_ERR_FILE1-ORD414 "(物件)評価グループ 1
LW_ERR_FILE1-ORDTX_14 "(物件)評価グループ 1名称
LW_ERR_FILE1-ORD424 "(物件)評価グループ 2
LW_ERR_FILE1-ORDTX_24 "(物件)評価グループ 2名称
LW_ERR_FILE1-ORD434 "(物件)評価グループ 3
LW_ERR_FILE1-ORDTX_34 "(物件)評価グループ 3名称
LW_ERR_FILE1-ORD444 "(物件)評価グループ 4
LW_ERR_FILE1-ORDTX_44 "(物件)評価グループ 4名称
LW_ERR_FILE1-IZWEK4 "(物件)設備投資理由
LW_ERR_FILE1-IZWEK_TXT4 "(物件)設備投資理由名称
LW_ERR_FILE1-UMWKZ4 "(物件)環境投資理由
LW_ERR_FILE1-UMWKZ_TXT4 "(物件)環境投資理由名称
LW_ERR_FILE1-ANLUE4 "(物件)資産グループコード
LW_ERR_FILE1-ANLUE_TXT4 "(物件)資産グループコード名称
LW_ERR_FILE1-LEAFI "(物件)リース会社
LW_ERR_FILE1-LEAFI_TXT4 "(物件)リース会社名称
LW_ERR_FILE1-LVTNR4 "(物件)契約番号
LW_ERR_FILE1-AFASL_B "帳簿(償却キー)
LW_ERR_FILE1-NDJAR_B "帳簿(耐用年数)
LW_ERR_FILE1-NDPER_B "帳簿(耐用期間)
LW_ERR_FILE1-AFABG_B "帳簿(償却開始日)
LW_ERR_FILE1-GJE_KANSWB "帳簿(取得価額)
LW_ERR_FILE1-NAFA_GJEB "帳簿(償却累計額)
LW_ERR_FILE1-AFASL_TCD "税法(償却キー)
LW_ERR_FILE1-NDJAR_TCD "税法(耐用年数)
LW_ERR_FILE1-NDPER_TCD "税法(耐用期間)
LW_ERR_FILE1-AFABG_TCD "税法(償却開始日)
LW_ERR_FILE1-GJE_KANSWTCD "税法(取得価額)
LW_ERR_FILE1-NAFA_GJETCD "税法(償却累計額)
LW_ERR_FILE1-AFASL_MC "維持費用(償却キー)
LW_ERR_FILE1-NDJAR_MC "維持費用(耐用年数)
LW_ERR_FILE1-NDPER_MC "維持費用(耐用期間)
LW_ERR_FILE1-AFABG_MC "維持費用(償却開始日)
LW_ERR_FILE1-GJE_KANSWMC "維持費用(取得価額)
LW_ERR_FILE1-NAFA_GJEMC "維持費用(償却累計額)
LW_ERR_FILE1-AFASL_IN "長期前受収益(償却キー)
LW_ERR_FILE1-NDJAR_IN "長期前受収益(耐用年数)
LW_ERR_FILE1-NDPER_IN "長期前受収益(耐用期間)
LW_ERR_FILE1-AFABG_IN "長期前受収益(償却開始日)
LW_ERR_FILE1-GJE_KANSWIN "長期前受収益(取得価額)
LW_ERR_FILE1-NAFA_GJEIN "長期前受収益(償却累計額)
INTO LW_STR
SEPARATED BY CNS_TAB.
ENDFORM. " F_TAB1_SEP
&----
*& Form F_TAB_SEP
&----
タブファイル処理
----
FORM F_TAB_SEP USING LW_ERR_FILE1 TYPE TYP_ERR_FILE
CHANGING LW_STR TYPE C.
CONCATENATE LW_ERR_FILE1-ZBUKRS "会社コード
LW_ERR_FILE1-ZLEAFI "リース会社コード
LW_ERR_FILE1-LEAFI_TXT "リース会社コード名称
LW_ERR_FILE1-ZLEYM "開始年月
LW_ERR_FILE1-ZLVTNR1 "契約番号
LW_ERR_FILE1-ZLVTNR2 "契約枝番
LW_ERR_FILE1-TXA50_ANLT "契約名称
LW_ERR_FILE1-INVNR "棚卸番号
LW_ERR_FILE1-ZZEBELN "購買発注伝票番号
LW_ERR_FILE1-ZZACCT "経理処理区分
LW_ERR_FILE1-ACCT_TXT "経理処理区分名称
LW_ERR_FILE1-ZZINTEREST "利息処理区分
LW_ERR_FILE1-INTEREST_TXT "利息処理区分名称
LW_ERR_FILE1-ZZLEGEB_SOUGAKU "リース料総額
LW_ERR_FILE1-ZWAERS "通貨コード
LW_ERR_FILE1-ZZLBARW_ALL "全リース資産額
LW_ERR_FILE1-ZZCONTAX "消費税額
LW_ERR_FILE1-ZZKZINW "支払利息額
LW_ERR_FILE1-ZANLN1 "リース契約資産番号
LW_ERR_FILE1-ZZANLN2 "リース契約資産補助番号
LW_ERR_FILE1-ZZBELNR92_AA "リース債務登録伝票番号
LW_ERR_FILE1-ZZBELNR96_FI "消費税計上伝票番号
LW_ERR_FILE1-ZZBELNR96_AA "消費税登録伝票番号
LW_ERR_FILE1-ZZBELNR97_AA "利息定額登録伝票番号
LW_ERR_FILE1-MENGE_ALL "全物件数
LW_ERR_FILE1-AKTIV "資本化日付
LW_ERR_FILE1-DEAKT "無効化日付
LW_ERR_FILE1-KOSTL "原価センタ
LW_ERR_FILE1-KTEXT "原価センタ名称
LW_ERR_FILE1-KOSTLV "責任原価センタ
LW_ERR_FILE1-KTEXTV "責任原価センタ名称
LW_ERR_FILE1-WERKS "プラント
LW_ERR_FILE1-WERKS_TXT "プラント名称
LW_ERR_FILE1-STORT "場所
LW_ERR_FILE1-STORT_TXT "場所名称
LW_ERR_FILE1-RAUMNR "部屋
LW_ERR_FILE1-KFZKZ "ナンバープレート
LW_ERR_FILE1-XSTIL "資産休止
LW_ERR_FILE1-ORD41 "評価グループ 1
LW_ERR_FILE1-ORDTX_1 "評価グループ 1名称
LW_ERR_FILE1-ORD42 "評価グループ 2
LW_ERR_FILE1-ORDTX_2 "評価グループ 2名称
LW_ERR_FILE1-ORD43 "評価グループ 3
LW_ERR_FILE1-ORDTX_3 "評価グループ 3名称
LW_ERR_FILE1-ORD44 "評価グループ 4
LW_ERR_FILE1-ORDTX_4 "評価グループ 4名称
LW_ERR_FILE1-IZWEK "設備投資理由
LW_ERR_FILE1-IZWEK_TXT "設備投資理由名称
LW_ERR_FILE1-UMWKZ "環境投資理由
LW_ERR_FILE1-UMWKZ_TXT "環境投資理由名称
LW_ERR_FILE1-ANLUE "資産グループコード
LW_ERR_FILE1-ANLUE_TXT "資産グループコード名称
LW_ERR_FILE1-LVDAT "契約日
LW_ERR_FILE1-LKDAT "通知日付
LW_ERR_FILE1-LEABG "開始日付
LW_ERR_FILE1-LEJAR "リース期間 (年数)
LW_ERR_FILE1-LEPER "リース期間 (期間数)
LW_ERR_FILE1-LEART "リースタイプ
LW_ERR_FILE1-LBASW "基準価額
LW_ERR_FILE1-LKAUF "買取価額
LW_ERR_FILE1-LETXT "追加テキスト
LW_ERR_FILE1-LEANZ "支払回数
LW_ERR_FILE1-LRYTH "支払周期
LW_ERR_FILE1-LVORS "前払
LW_ERR_FILE1-LEGEB "リース料
LW_ERR_FILE1-LZINS "年利
LW_ERR_FILE1-LBARW "現在価値
LW_ERR_FILE1-AFASL_TX "消費税(償却キー)
LW_ERR_FILE1-NDJAR_TX "消費税(耐用年数)
LW_ERR_FILE1-NDPER_TX "消費税(耐用期間)
LW_ERR_FILE1-AFABG_TX "消費税(償却開始日)
LW_ERR_FILE1-GJE_KANSWTX "消費税(取得価額)
LW_ERR_FILE1-NAFA_GJETX "消費税(償却累計額)
LW_ERR_FILE1-AFASL_FR "リース負債利息(償却キー)
LW_ERR_FILE1-NDJAR_FR "リース負債利息(耐用年数)
LW_ERR_FILE1-NDPER_FR "リース負債利息(耐用期間)
LW_ERR_FILE1-AFABG_FR "リース負債利息(償却開始日)
LW_ERR_FILE1-GJE_KANSWFR "リース負債利息(取得価額)
LW_ERR_FILE1-NAFA_GJEFR "リース負債利息(償却累計額)
LW_ERR_FILE1-SZINS_GJE "リース負債利息(利息額)
LW_ERR_FILE1-AFASL_RT "リース利息定額(償却キー)
LW_ERR_FILE1-NDJAR_RT "リース利息定額(耐用年数)
LW_ERR_FILE1-NDPER_RT "リース利息定額(耐用期間)
LW_ERR_FILE1-AFABG_RT "リース利息定額(償却開始日)
LW_ERR_FILE1-GJE_KANSWRT "リース利息定額(取得価額)
LW_ERR_FILE1-NAFA_GJERT "リース利息定額(償却累計額)
LW_ERR_FILE1-ZZANLKL "資産クラス
LW_ERR_FILE1-ANLKL_TXT "資産クラス名称
LW_ERR_FILE1-INVNR4 "物件番号
LW_ERR_FILE1-ANLN1 "資産番号
LW_ERR_FILE1-LVTNR "資産補助番号
LW_ERR_FILE1-TXT50_ANLT "物件名称
LW_ERR_FILE1-MENGE "物件数
LW_ERR_FILE1-ZLBARW4 "リース資産額
LW_ERR_FILE1-ZWAERS4 "通貨コード
LW_ERR_FILE1-ZZMAINTE "維持費用額
LW_ERR_FILE1-ZZLGADV "長期前受収益
LW_ERR_FILE1-ZZBELNR01_FI "リース資産登録伝票番号
LW_ERR_FILE1-ZZBELNR98_AA "維持費用登録伝票番号
LW_ERR_FILE1-ZZBELNR99_AA "長期前受収益登録伝票番号
LW_ERR_FILE1-KOSTL4 "(物件)原価センタ
LW_ERR_FILE1-KTEXT4 "(物件)原価センタ名称
LW_ERR_FILE1-KOSTLV4 "(物件)責任原価センタ
LW_ERR_FILE1-KTEXTV4 "(物件)責任原価センタ名称
LW_ERR_FILE1-WERKS4 "(物件)プラント
LW_ERR_FILE1-WERKS_TXT4 "(物件)プラント名称
LW_ERR_FILE1-STORT4 "(物件)場所
LW_ERR_FILE1-STORT_TXT4 "(物件)場所名称
LW_ERR_FILE1-RAUMNR4 "(物件)部屋
LW_ERR_FILE1-KFZKZ4 "(物件)ナンバープレート
LW_ERR_FILE1-XSTIL4 "(物件)資産休止
LW_ERR_FILE1-ORD414 "(物件)評価グループ 1
LW_ERR_FILE1-ORDTX_14 "(物件)評価グループ 1名称
LW_ERR_FILE1-ORD424 "(物件)評価グループ 2
LW_ERR_FILE1-ORDTX_24 "(物件)評価グループ 2名称
LW_ERR_FILE1-ORD434 "(物件)評価グループ 3
LW_ERR_FILE1-ORDTX_34 "(物件)評価グループ 3名称
LW_ERR_FILE1-ORD444 "(物件)評価グループ 4
LW_ERR_FILE1-ORDTX_44 "(物件)評価グループ 4名称
LW_ERR_FILE1-IZWEK4 "(物件)設備投資理由
LW_ERR_FILE1-IZWEK_TXT4 "(物件)設備投資理由名称
LW_ERR_FILE1-UMWKZ4 "(物件)環境投資理由
LW_ERR_FILE1-UMWKZ_TXT4 "(物件)環境投資理由名称
LW_ERR_FILE1-ANLUE4 "(物件)資産グループコード
LW_ERR_FILE1-ANLUE_TXT4 "(物件)資産グループコード名称
LW_ERR_FILE1-LEAFI "(物件)リース会社
LW_ERR_FILE1-LEAFI_TXT4 "(物件)リース会社名称
LW_ERR_FILE1-LVTNR4 "(物件)契約番号
LW_ERR_FILE1-AFASL_B "帳簿(償却キー)
LW_ERR_FILE1-NDJAR_B "帳簿(耐用年数)
LW_ERR_FILE1-NDPER_B "帳簿(耐用期間)
LW_ERR_FILE1-AFABG_B "帳簿(償却開始日)
LW_ERR_FILE1-GJE_KANSWB "帳簿(取得価額)
LW_ERR_FILE1-NAFA_GJEB "帳簿(償却累計額)
LW_ERR_FILE1-AFASL_TCD "税法(償却キー)
LW_ERR_FILE1-NDJAR_TCD "税法(耐用年数)
LW_ERR_FILE1-NDPER_TCD "税法(耐用期間)
LW_ERR_FILE1-AFABG_TCD "税法(償却開始日)
LW_ERR_FILE1-GJE_KANSWTCD "税法(取得価額)
LW_ERR_FILE1-NAFA_GJETCD "税法(償却累計額)
LW_ERR_FILE1-AFASL_MC "維持費用(償却キー)
LW_ERR_FILE1-NDJAR_MC "維持費用(耐用年数)
LW_ERR_FILE1-NDPER_MC "維持費用(耐用期間)
LW_ERR_FILE1-AFABG_MC "維持費用(償却開始日)
LW_ERR_FILE1-GJE_KANSWMC "維持費用(取得価額)
LW_ERR_FILE1-NAFA_GJEMC "維持費用(償却累計額)
LW_ERR_FILE1-AFASL_IN "長期前受収益(償却キー)
LW_ERR_FILE1-NDJAR_IN "長期前受収益(耐用年数)
LW_ERR_FILE1-NDPER_IN "長期前受収益(耐用期間)
LW_ERR_FILE1-AFABG_IN "長期前受収益(償却開始日)
LW_ERR_FILE1-GJE_KANSWIN "長期前受収益(取得価額)
LW_ERR_FILE1-NAFA_GJEIN "長期前受収益(償却累計額)
LW_ERR_FILE1-ZERRMSG "エラーメッセージ
INTO LW_STR
SEPARATED BY CNS_TAB.
ENDFORM. " F_TAB_SEP
&----
*& Form F_MOVE_SISAN
&----
text
----
-->P_W_SISAN text
----
FORM F_MOVE_SISAN USING W_SISAN TYPE TYP_SISAN.
消費税の場合
IF W_SISAN-AFABE = CNS_96.
W_ERR_FILE1-AFASL_TX = W_SISAN-AFASL.
W_ERR_FILE1-NDJAR_TX = W_SISAN-NDJAR.
W_ERR_FILE1-NDPER_TX = W_SISAN-NDPER.
W_ERR_FILE1-AFABG_TX = W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE1-GJE_KANSWTX CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE1-NAFA_GJETX CURRENCY 'JPY'.
リース負債利息の場合
ELSEIF W_SISAN-AFABE = CNS_92.
W_ERR_FILE1-AFASL_FR = W_SISAN-AFASL.
W_ERR_FILE1-NDJAR_FR = W_SISAN-NDJAR.
W_ERR_FILE1-NDPER_FR = W_SISAN-NDPER.
W_ERR_FILE1-AFABG_FR = W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE1-GJE_KANSWFR CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE1-NAFA_GJEFR CURRENCY 'JPY'.
WRITE W_SISAN-SZINS_GJE TO W_ERR_FILE1-SZINS_GJE CURRENCY 'JPY'.
リース利息定額の場合
ELSEIF W_SISAN-AFABE = CNS_97.
W_ERR_FILE1-AFASL_RT = W_SISAN-AFASL.
W_ERR_FILE1-NDJAR_RT = W_SISAN-NDJAR.
W_ERR_FILE1-NDPER_RT = W_SISAN-NDPER.
W_ERR_FILE1-AFABG_RT = W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE1-GJE_KANSWRT CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE1-NAFA_GJERT CURRENCY 'JPY'.
帳簿の場合
ELSEIF W_SISAN-AFABE = CNS_1.
W_ERR_FILE1-AFASL_B = W_SISAN-AFASL.
W_ERR_FILE1-NDJAR_B = W_SISAN-NDJAR.
W_ERR_FILE1-NDPER_B = W_SISAN-NDPER.
W_ERR_FILE1-AFABG_B = W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE1-GJE_KANSWB CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE1-NAFA_GJEB CURRENCY 'JPY'.
税法の場合
ELSEIF W_SISAN-AFABE = CNS_15.
W_ERR_FILE1-AFASL_TCD = W_SISAN-AFASL.
W_ERR_FILE1-NDJAR_TCD = W_SISAN-NDJAR.
W_ERR_FILE1-NDPER_TCD = W_SISAN-NDPER.
W_ERR_FILE1-AFABG_TCD = W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE1-GJE_KANSWTCD CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE1-NAFA_GJETCD CURRENCY 'JPY'.
維持費用の場合
ELSEIF W_SISAN-AFABE = CNS_98.
W_ERR_FILE1-AFASL_MC = W_SISAN-AFASL.
W_ERR_FILE1-NDJAR_MC = W_SISAN-NDJAR.
W_ERR_FILE1-NDPER_MC = W_SISAN-NDPER.
W_ERR_FILE1-AFABG_MC = W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE1-GJE_KANSWMC CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE1-NAFA_GJEMC CURRENCY 'JPY'.
長期前受収益の場合
ELSEIF W_SISAN-AFABE = CNS_99.
W_ERR_FILE1-AFASL_IN = W_SISAN-AFASL.
W_ERR_FILE1-NDJAR_IN = W_SISAN-NDJAR.
W_ERR_FILE1-NDPER_IN = W_SISAN-NDPER.
W_ERR_FILE1-AFABG_IN = W_SISAN-AFABG.
WRITE W_SISAN-GJE_KANSW TO W_ERR_FILE1-GJE_KANSWIN CURRENCY 'JPY'.
WRITE W_SISAN-NAFA_GJE TO W_ERR_FILE1-NAFA_GJEIN CURRENCY 'JPY'.
ENDIF.
W_ERR_FILE1-XSTIL = W_SISAN-XSTIL. "資産休止
ENDFORM. " F_MOVE_SISAN
&----
*& Form F_MOVE_CHECK_FILE
&----
リース契約情報をエラーファイルにアッペンドする
----
FORM F_MOVE_CHECK_FILE .
DATA : LT_KEISISAN_TEMP TYPE STANDARD TABLE OF TYP_ERR_FILE,
LT_BUKKEN_TEMP TYPE STANDARD TABLE OF TYP_ERR_FILE,
LT_BUKSISAN_TEMP TYPE STANDARD TABLE OF TYP_ERR_FILE.
CLEAR: LT_KEISISAN_TEMP, LT_BUKKEN_TEMP, LT_BUKSISAN_TEMP.
LT_KEISISAN_TEMP[] = IT_KEIYAKU_SHISAN[].
LT_BUKKEN_TEMP[] = IT_BUKKEN[].
LT_BUKSISAN_TEMP[] = IT_BUKKEN_SHISAN[].
*--ソート処理[リース契約資産情報]
SORT IT_KEIYAKU_SHISAN BY ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2.
DELETE ADJACENT DUPLICATES FROM IT_KEIYAKU_SHISAN
COMPARING ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 .
*--ソート処理[リース物件情報]
SORT IT_BUKKEN BY ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
DELETE ADJACENT DUPLICATES FROM IT_BUKKEN
COMPARING ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
*--ソート処理[リース物件資産情報]
SORT IT_BUKKEN_SHISAN BY ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
DELETE ADJACENT DUPLICATES FROM IT_BUKKEN_SHISAN
COMPARING ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
LOOP AT IT_KEIYAKU INTO W_KEIYAKU WHERE ZERRMSG IS NOT INITIAL.
CLEAR: W_ERR_FILE, W_KEIYAKU_SHISAN.
READ TABLE IT_KEIYAKU_SHISAN INTO W_KEIYAKU_SHISAN
WITH KEY ZBUKRS = W_KEIYAKU-ZBUKRS "会社コード
ZANLN1 = W_KEIYAKU-ZANLN1 "資産番号
ZZANLN2 = W_KEIYAKU-ZZANLN2. "資産補助番号
CLEAR: W_BUKKEN.
LOOP AT IT_BUKKEN INTO W_BUKKEN WHERE ZBUKRS = W_KEIYAKU-ZBUKRS "会社コード
AND ZLEAFI = W_KEIYAKU-ZLEAFI "リース会社
AND ZLEYM = W_KEIYAKU-ZLEYM "開始年月
AND ZLVTNR1 = W_KEIYAKU-ZLVTNR1 "リース契約番号
AND ZLVTNR2 = W_KEIYAKU-ZLVTNR2. "リース契約枝番
CLEAR: W_BUKKEN_SHISAN.
READ TABLE IT_BUKKEN_SHISAN INTO W_BUKKEN_SHISAN
WITH KEY ZBUKRS = W_BUKKEN-ZBUKRS "会社コード
ANLN1 = W_BUKKEN-ANLN1 "(物件)資産番号
ZZANLN2 = CNS_0000.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN_SHISAN
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
W_ERR_FILE-ZERRMSG = W_KEIYAKU-ZERRMSG.
APPEND W_ERR_FILE TO IT_ERR_FILE.
ENDLOOP.
IF SY-SUBRC <> 0.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
W_ERR_FILE-ZERRMSG = W_KEIYAKU-ZERRMSG.
APPEND W_ERR_FILE TO IT_ERR_FILE.
ENDIF.
ENDLOOP.
IT_KEIYAKU_SHISAN[] = LT_KEISISAN_TEMP[].
IT_BUKKEN[] = LT_BUKKEN_TEMP[] .
IT_BUKKEN_SHISAN[] = LT_BUKSISAN_TEMP[].
ENDFORM. " F_MOVE_CHECK_FILE
&----
*& Form F_MOVE_ANLA_BUKKEN
&----
text
----
-->P_W_ANLA_BUKKEN text
-->P_TEXT_046 text
----
FORM F_MOVE_ANLA_BUKKEN USING I_W_ANLA TYPE ANLA
I_TEXT TYPE ANY.
W_ERR_FILE-ZBUKRS = I_W_ANLA-BUKRS.
W_ERR_FILE-ANLN1 = I_W_ANLA-ANLN1.
W_ERR_FILE-LVTNR = I_W_ANLA-ANLN2.
W_ERR_FILE-INVNR4 = I_W_ANLA-INVNR.
W_ERR_FILE-ORD414 = I_W_ANLA-ORD41.
W_ERR_FILE-ORD424 = I_W_ANLA-ORD42.
W_ERR_FILE-ORD434 = I_W_ANLA-ORD43.
W_ERR_FILE-ORD444 = I_W_ANLA-ORD44.
W_ERR_FILE-IZWEK4 = I_W_ANLA-IZWEK.
W_ERR_FILE-UMWKZ4 = I_W_ANLA-UMWKZ.
W_ERR_FILE-ANLUE4 = I_W_ANLA-ANLUE.
W_ERR_FILE-LVTNR4 = I_W_ANLA-LVTNR.
W_ERR_FILE-ZERRMSG = I_TEXT.
APPEND W_ERR_FILE TO IT_ERR_FILE.
APPEND W_ERR_FILE TO IT_BUKKEN_SHISAN.
ENDFORM. " F_MOVE_ANLA_BUKKEN
&----
*& Form MOVE_KEIYAKU_SHISAN
&----
text
----
-->P_W_KEIYAKU_SHISAN text
----
FORM MOVE_KEIYAKU_SHISAN USING P_W_KEIYAKU_SHISAN TYPE TYP_ERR_FILE.
W_ERR_FILE-INVNR4 = P_W_KEIYAKU_SHISAN-INVNR4.
W_ERR_FILE-ORD414 = P_W_KEIYAKU_SHISAN-ORD414.
W_ERR_FILE-ORD424 = P_W_KEIYAKU_SHISAN-ORD424.
W_ERR_FILE-ORD434 = P_W_KEIYAKU_SHISAN-ORD434.
W_ERR_FILE-ORD444 = P_W_KEIYAKU_SHISAN-ORD444.
W_ERR_FILE-IZWEK4 = P_W_KEIYAKU_SHISAN-IZWEK4.
W_ERR_FILE-UMWKZ4 = P_W_KEIYAKU_SHISAN-UMWKZ4.
W_ERR_FILE-ANLUE4 = P_W_KEIYAKU_SHISAN-ANLUE4.
W_ERR_FILE-LVTNR4 = P_W_KEIYAKU_SHISAN-LVTNR4.
W_ERR_FILE-ZERRMSG = P_W_KEIYAKU_SHISAN-ZERRMSG.
ENDFORM. " MOVE_KEIYAKU_SHISAN
&----
*& Form MOVE_BUKKEN
&----
text
----
FORM MOVE_BUKKEN USING P_W_BUKKEN TYPE TYP_ERR_FILE.
W_ERR_FILE-ZZANLKL = P_W_BUKKEN-ZWAERS.
W_ERR_FILE-ZZMAINTE = P_W_BUKKEN-ZZMAINTE.
W_ERR_FILE-ZZLGADV = P_W_BUKKEN-ZZLGADV.
W_ERR_FILE-ZZBELNR01_FI = P_W_BUKKEN-ZZBELNR01_FI.
W_ERR_FILE-ZZBELNR98_AA = P_W_BUKKEN-ZZBELNR98_AA.
W_ERR_FILE-ZZBELNR99_AA = P_W_BUKKEN-ZZBELNR99_AA.
W_ERR_FILE-ZWAERS4 = P_W_BUKKEN-ZWAERS.
W_ERR_FILE-ANLN1 = P_W_BUKKEN-ANLN1.
W_ERR_FILE-ZERRMSG = P_W_BUKKEN-ZERRMSG.
WRITE P_W_BUKKEN-ZLBARW4 TO W_ERR_FILE-ZLBARW4 CURRENCY 'JPY'.
WRITE P_W_BUKKEN-ZZMAINTE TO W_ERR_FILE-ZZMAINTE CURRENCY 'JPY'.
WRITE P_W_BUKKEN-ZZLGADV TO W_ERR_FILE-ZZLGADV CURRENCY 'JPY'.
ENDFORM. " MOVE_BUKKEN
&----
*& Form MOVE_BUKKEN_SHISAN
&----
text
----
FORM MOVE_BUKKEN_SHISAN USING P_W_BUKKEN_SHISAN TYPE TYP_ERR_FILE.
W_ERR_FILE-INVNR4 = P_W_BUKKEN_SHISAN-INVNR4.
W_ERR_FILE-ORD414 = P_W_BUKKEN_SHISAN-ORD414.
W_ERR_FILE-ORD424 = P_W_BUKKEN_SHISAN-ORD424.
W_ERR_FILE-ORD434 = P_W_BUKKEN_SHISAN-ORD434.
W_ERR_FILE-ORD444 = P_W_BUKKEN_SHISAN-ORD444.
W_ERR_FILE-IZWEK4 = P_W_BUKKEN_SHISAN-IZWEK4.
W_ERR_FILE-UMWKZ4 = P_W_BUKKEN_SHISAN-UMWKZ4.
W_ERR_FILE-ANLUE4 = P_W_BUKKEN_SHISAN-ANLUE4.
W_ERR_FILE-LVTNR4 = P_W_BUKKEN_SHISAN-LVTNR4.
W_ERR_FILE-ZERRMSG = P_W_BUKKEN_SHISAN-ZERRMSG .
ENDFORM. " MOVE_BUKKEN_SHISAN
&----
*& Form F_MOVE_CHECK_FILE1
&----
リース契約資産情報をエラーファイルにアッペンドする
----
FORM F_MOVE_CHECK_FILE1 .
DATA: LT_KEIYAKU_TEMP TYPE STANDARD TABLE OF TYP_ERR_FILE,
LT_BUKKEN_TEMP TYPE STANDARD TABLE OF TYP_ERR_FILE,
LT_BUKSISAN_TEMP TYPE STANDARD TABLE OF TYP_ERR_FILE.
CLEAR: LT_KEIYAKU_TEMP, LT_BUKKEN_TEMP, LT_BUKSISAN_TEMP.
LT_KEIYAKU_TEMP[] = IT_KEIYAKU[].
LT_BUKKEN_TEMP[] = IT_BUKKEN[].
LT_BUKSISAN_TEMP[] = IT_BUKKEN_SHISAN[].
*--ソート処理[リース契約情報]
SORT IT_KEIYAKU BY ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2.
DELETE ADJACENT DUPLICATES FROM IT_KEIYAKU
COMPARING ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2.
*--ソート処理[リース物件情報]
SORT IT_BUKKEN BY ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
DELETE ADJACENT DUPLICATES FROM IT_BUKKEN
COMPARING ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
*--ソート処理[リース物件資産情報]
SORT IT_BUKKEN_SHISAN BY ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
DELETE ADJACENT DUPLICATES FROM IT_BUKKEN_SHISAN
COMPARING ZBUKRS ZLEAFI ZLEYM ZLVTNR1 ZLVTNR2 INVNR4.
LOOP AT IT_KEIYAKU_SHISAN INTO W_KEIYAKU_SHISAN
WHERE ZERRMSG IS NOT INITIAL.
CLEAR: W_ERR_FILE, W_KEIYAKU.
READ TABLE IT_KEIYAKU INTO W_KEIYAKU
WITH KEY ZBUKRS = W_KEIYAKU_SHISAN-ZBUKRS
ZANLN1 = W_KEIYAKU_SHISAN-ZANLN1
ZZANLN2 = W_KEIYAKU_SHISAN-ZZANLN2.
CLEAR: W_BUKKEN.
LOOP AT IT_BUKKEN INTO W_BUKKEN
WHERE ZBUKRS = W_KEIYAKU-ZBUKRS
AND ZLEAFI = W_KEIYAKU-ZLEAFI
AND ZLEYM = W_KEIYAKU-ZLEYM
AND ZLVTNR1 = W_KEIYAKU-ZLVTNR1
AND ZLVTNR2 = W_KEIYAKU-ZLVTNR2.
CLEAR: W_BUKKEN_SHISAN.
READ TABLE IT_BUKKEN_SHISAN INTO W_BUKKEN_SHISAN
WITH KEY ZBUKRS = W_BUKKEN-ZBUKRS
ANLN1 = W_BUKKEN-ANLN1
ZZANLN2 = CNS_0000.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN_SHISAN
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
W_ERR_FILE-ZERRMSG = W_KEIYAKU_SHISAN-ZERRMSG.
APPEND W_ERR_FILE TO IT_ERR_FILE.
ENDLOOP.
*--リース物件に該当データが存在しない場合
IF SY-SUBRC <> 0.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
W_ERR_FILE-ZERRMSG = W_KEIYAKU_SHISAN-ZERRMSG.
APPEND W_ERR_FILE TO IT_ERR_FILE.
ENDIF.
ENDLOOP.
IT_KEIYAKU[] = LT_KEIYAKU_TEMP[].
IT_BUKKEN[] = LT_BUKKEN_TEMP[] .
IT_BUKKEN_SHISAN[] = LT_BUKSISAN_TEMP[].
ENDFORM. " F_MOVE_CHECK_FILE1
&----
*& Form F_MOVE_CHECK_FILE2
&----
リース物件情報をエラーファイルにアッペンドする
----
FORM F_MOVE_CHECK_FILE2 .
LOOP AT IT_BUKKEN INTO W_BUKKEN
WHERE ZERRMSG IS NOT INITIAL.
CLEAR: W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN
CHANGING W_ERR_FILE.
CLEAR : W_KEIYAKU.
READ TABLE IT_KEIYAKU INTO W_KEIYAKU
WITH KEY ZBUKRS = W_BUKKEN-ZBUKRS
ZLEAFI = W_BUKKEN-ZLEAFI
ZLEYM = W_BUKKEN-ZLEYM
ZLVTNR1 = W_BUKKEN-ZLVTNR1
ZLVTNR2 = W_BUKKEN-ZLVTNR2.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
CLEAR : W_KEIYAKU_SHISAN.
READ TABLE IT_KEIYAKU_SHISAN INTO W_KEIYAKU_SHISAN
WITH KEY ZBUKRS = W_KEIYAKU-ZBUKRS
ZANLN1 = W_KEIYAKU-ZANLN1
ZZANLN2 = W_KEIYAKU-ZZANLN2.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
CLEAR : W_BUKKEN_SHISAN.
READ TABLE IT_BUKKEN_SHISAN INTO W_BUKKEN_SHISAN
WITH KEY ZBUKRS = W_BUKKEN-ZBUKRS
ANLN1 = W_BUKKEN-ANLN1
ZZANLN2 = CNS_0000.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN_SHISAN
CHANGING W_ERR_FILE.
W_ERR_FILE-ZERRMSG = W_BUKKEN-ZERRMSG.
APPEND W_ERR_FILE TO IT_ERR_FILE.
ENDLOOP.
ENDFORM. " F_MOVE_CHECK_FILE2
&----
*& Form MOVE_KEIYAKU
&----
text
----
FORM MOVE_KEIYAKU USING P_W_KEIYAKU TYPE TYP_ERR_FILE .
W_ERR_FILE-ZBUKRS = P_W_KEIYAKU-ZBUKRS.
W_ERR_FILE-ZLEAFI = P_W_KEIYAKU-ZLEAFI.
W_ERR_FILE-ZLEYM = P_W_KEIYAKU-ZLEYM.
W_ERR_FILE-ZLVTNR1 = P_W_KEIYAKU-ZLVTNR1.
W_ERR_FILE-ZLVTNR2 = P_W_KEIYAKU-ZLVTNR2.
W_ERR_FILE-ZWAERS = P_W_KEIYAKU-ZWAERS.
W_ERR_FILE-TXA50_ANLT = P_W_KEIYAKU-TXA50_ANLT.
W_ERR_FILE-ZANLN1 = P_W_KEIYAKU-ZANLN1.
W_ERR_FILE-ZERRMSG = P_W_KEIYAKU-ZERRMSG.
WRITE P_W_KEIYAKU-ZZLEGEB_SOUGAKU TO W_ERR_FILE-ZZLEGEB_SOUGAKU CURRENCY 'JPY'.
WRITE P_W_KEIYAKU-ZZLBARW_ALL TO W_ERR_FILE-ZZLBARW_ALL CURRENCY 'JPY'.
WRITE P_W_KEIYAKU-ZZCONTAX TO W_ERR_FILE-ZZCONTAX CURRENCY 'JPY'.
WRITE P_W_KEIYAKU-ZZKZINW TO W_ERR_FILE-ZZKZINW CURRENCY 'JPY'.
WRITE P_W_KEIYAKU-LBASW TO W_ERR_FILE-LBASW CURRENCY 'JPY'.
WRITE P_W_KEIYAKU-LKAUF TO W_ERR_FILE-LKAUF CURRENCY 'JPY'.
WRITE P_W_KEIYAKU-LEGEB TO W_ERR_FILE-LEGEB CURRENCY 'JPY'.
WRITE P_W_KEIYAKU-LBARW TO W_ERR_FILE-LBARW CURRENCY 'JPY'.
ENDFORM. " MOVE_KEIYAKU
&----
*& Form F_MOVE_CHECK_FILE3
&----
リース物件資産情報をエラーファイルにアッペンドする
----
FORM F_MOVE_CHECK_FILE3 .
LOOP AT IT_BUKKEN_SHISAN INTO W_BUKKEN_SHISAN WHERE ZERRMSG IS NOT INITIAL.
CLEAR: W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN_SHISAN
CHANGING W_ERR_FILE.
CLEAR : W_BUKKEN.
READ TABLE IT_BUKKEN INTO W_BUKKEN
WITH KEY ZBUKRS = W_BUKKEN_SHISAN-ZBUKRS
ANLN1 = W_BUKKEN_SHISAN-ANLN1
ZZANLN2 = CNS_0000.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN
CHANGING W_ERR_FILE.
CLEAR : W_KEIYAKU.
READ TABLE IT_KEIYAKU INTO W_KEIYAKU
WITH KEY ZBUKRS = W_BUKKEN-ZBUKRS
ZLEAFI = W_BUKKEN-ZLEAFI
ZLEYM = W_BUKKEN-ZLEYM
ZLVTNR1 = W_BUKKEN-ZLVTNR1
ZLVTNR2 = W_BUKKEN-ZLVTNR2.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
CLEAR : W_KEIYAKU_SHISAN.
READ TABLE IT_KEIYAKU_SHISAN INTO W_KEIYAKU_SHISAN
WITH KEY ZBUKRS = W_KEIYAKU-ZBUKRS
ZANLN1 = W_KEIYAKU-ZANLN1
ZZANLN2 = W_KEIYAKU-ZZANLN2.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
W_ERR_FILE-ZERRMSG = W_BUKKEN_SHISAN-ZERRMSG.
APPEND W_ERR_FILE TO IT_ERR_FILE.
ENDLOOP.
ENDFORM. " F_MOVE_CHECK_FILE3
&----
*& Form F_MOVE_ICHIRN_FILE
&----
text
----
FORM F_MOVE_ICHIRN_FILE .
LOOP AT IT_ZTFI0023 INTO W_ZTFI0023.
PERFORM F_GET_23 USING W_ZTFI0023 CHANGING W_ERR_FILE1.
ENDLOOP.
LOOP AT IT_ZTFI0024 INTO W_ZTFI0024.
PERFORM F_GET_24 USING W_ZTFI0024 CHANGING W_ERR_FILE1.
ENDLOOP.
LOOP AT IT_ANLA_TEMP INTO W_ANLA_TEMP.
PERFORM F_GET_23 USING W_ZTFI0023 CHANGING W_ERR_FILE1.
ENDLOOP.
LOOP AT IT_SISAN INTO W_SISAN.
PERFORM F_GET_23 USING W_ZTFI0023 CHANGING W_ERR_FILE1.
ENDLOOP.
DELETE IT_KEIYAKU WHERE ZERRMSG IS NOT INITIAL.
*
DELETE IT_KEIYAKU_SHISAN WHERE ZERRMSG IS NOT INITIAL.
*
DELETE IT_BUKKEN_SHISAN WHERE ZERRMSG IS NOT INITIAL.
*
LOOP AT IT_KEIYAKU INTO W_KEIYAKU.
READ TABLE IT_KEIYAKU_SHISAN INTO W_KEIYAKU_SHISAN
WITH KEY ZBUKRS = W_KEIYAKU-ZBUKRS
ANLN1 = W_KEIYAKU-ANLN1
ZZANLN2 = W_KEIYAKU-ZZANLN2.
IF SY-SUBRC = 0.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU
CHANGING W_ERR_FILE.
PERFORM F_MOVE_KEIAYKU USING W_KEIYAKU_SHISAN
CHANGING W_ERR_FILE.
LOOP AT IT_BUKKEN INTO W_BUKKEN WHERE ZBUKRS = W_KEIYAKU-ZBUKRS
AND ZLEAFI = W_KEIYAKU-ZLEAFI
AND ZLEYM = W_KEIYAKU-ZLEYM
AND ZLVTNR1 = W_KEIYAKU-ZLVTNR1
AND ZLVTNR2 = W_KEIYAKU-ZLVTNR2
AND ZERRMSG IS INITIAL.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN
CHANGING W_ERR_FILE.
READ TABLE IT_BUKKEN_SHISAN INTO W_BUKKEN_SHISAN
WITH KEY ZBUKRS = W_BUKKEN-ZBUKRS
ANLN1 = W_BUKKEN-ANLN1
ZZANLN2 = W_BUKKEN-ZZANLN2.
IF SY-SUBRC = 0.
PERFORM F_MOVE_KEIAYKU USING W_BUKKEN_SHISAN
CHANGING W_ERR_FILE.
MOVE-CORRESPONDING W_ERR_FILE TO W_ERR_FILE1.
APPEND W_ERR_FILE1 TO IT_ERR_FILE1.
ENDIF.
ENDLOOP.
IF SY-SUBRC <> 0.
READ TABLE IT_BUKKEN INTO W_BUKKEN
WITH KEY ZBUKRS = W_KEIYAKU-ZBUKRS
ZLEAFI = W_KEIYAKU-ZLEAFI
ZLEYM = W_KEIYAKU-ZLEYM
ZLVTNR1 = W_KEIYAKU-ZLVTNR1
ZLVTNR2 = W_KEIYAKU-ZLVTNR2.
IF SY-SUBRC <> 0.
MOVE-CORRESPONDING W_ERR_FILE TO W_ERR_FILE1.
APPEND W_ERR_FILE1 TO IT_ERR_FILE1.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " F_MOVE_ICHIRN_FILE
&----
*& Form F_MOVE_KEIAYKU
&----
text
----
FORM F_MOVE_KEIAYKU USING W_ITAB TYPE TYP_ERR_FILE
CHANGING W_OUTPUT TYPE TYP_ERR_FILE.
IF W_ITAB-ZBUKRS IS NOT INITIAL.
W_OUTPUT-ZBUKRS = W_ITAB-ZBUKRS .
ENDIF.
IF W_ITAB-ZLEAFI IS NOT INITIAL.
W_OUTPUT-ZLEAFI = W_ITAB-ZLEAFI .
ENDIF.
IF W_ITAB-LEAFI_TXT IS NOT INITIAL.
W_OUTPUT-LEAFI_TXT = W_ITAB-LEAFI_TXT .
ENDIF.
IF W_ITAB-ZLEYM IS NOT INITIAL.
W_OUTPUT-ZLEYM = W_ITAB-ZLEYM .
ENDIF.
IF W_ITAB-ZLVTNR1 IS NOT INITIAL.
W_OUTPUT-ZLVTNR1 = W_ITAB-ZLVTNR1 .
ENDIF.
IF W_ITAB-ZLVTNR2 IS NOT INITIAL.
W_OUTPUT-ZLVTNR2 = W_ITAB-ZLVTNR2 .
ENDIF.
IF W_ITAB-TXA50_ANLT IS NOT INITIAL.
W_OUTPUT-TXA50_ANLT = W_ITAB-TXA50_ANLT .
ENDIF.
IF W_ITAB-INVNR IS NOT INITIAL.
W_OUTPUT-INVNR = W_ITAB-INVNR .
ENDIF.
IF W_ITAB-ZZEBELN IS NOT INITIAL.
W_OUTPUT-ZZEBELN = W_ITAB-ZZEBELN .
ENDIF.
IF W_ITAB-ZZACCT IS NOT INITIAL.
W_OUTPUT-ZZACCT = W_ITAB-ZZACCT .
ENDIF.
IF W_ITAB-ACCT_TXT IS NOT INITIAL.
W_OUTPUT-ACCT_TXT = W_ITAB-ACCT_TXT .
ENDIF.
IF W_ITAB-ZZINTEREST IS NOT INITIAL.
W_OUTPUT-ZZINTEREST = W_ITAB-ZZINTEREST .
ENDIF.
IF W_ITAB-INTEREST_TXT IS NOT INITIAL.
W_OUTPUT-INTEREST_TXT = W_ITAB-INTEREST_TXT .
ENDIF.
IF W_ITAB-ZZLEGEB_SOUGAKU IS NOT INITIAL.
W_OUTPUT-ZZLEGEB_SOUGAKU = W_ITAB-ZZLEGEB_SOUGAKU .
ENDIF.
IF W_ITAB-ZWAERS IS NOT INITIAL.
W_OUTPUT-ZWAERS = W_ITAB-ZWAERS .
ENDIF.
IF W_ITAB-ZZLBARW_ALL IS NOT INITIAL.
W_OUTPUT-ZZLBARW_ALL = W_ITAB-ZZLBARW_ALL .
ENDIF.
IF W_ITAB-ZZCONTAX IS NOT INITIAL.
W_OUTPUT-ZZCONTAX = W_ITAB-ZZCONTAX .
ENDIF.
IF W_ITAB-ZZKZINW IS NOT INITIAL.
W_OUTPUT-ZZKZINW = W_ITAB-ZZKZINW .
ENDIF.
IF W_ITAB-ZANLN1 IS NOT INITIAL.
W_OUTPUT-ZANLN1 = W_ITAB-ZANLN1 .
ENDIF.
IF W_ITAB-ZZANLN2 IS NOT INITIAL.
W_OUTPUT-ZZANLN2 = W_ITAB-ZZANLN2 .
ENDIF.
IF W_ITAB-ZZBELNR92_AA IS NOT INITIAL.
W_OUTPUT-ZZBELNR92_AA = W_ITAB-ZZBELNR92_AA .
ENDIF.
IF W_ITAB-ZZBELNR96_FI IS NOT INITIAL.
W_OUTPUT-ZZBELNR96_FI = W_ITAB-ZZBELNR96_FI .
ENDIF.
IF W_ITAB-ZZBELNR96_AA IS NOT INITIAL.
W_OUTPUT-ZZBELNR96_AA = W_ITAB-ZZBELNR96_AA .
ENDIF.
IF W_ITAB-ZZBELNR97_AA IS NOT INITIAL.
W_OUTPUT-ZZBELNR97_AA = W_ITAB-ZZBELNR97_AA .
ENDIF.
IF W_ITAB-MENGE_ALL IS NOT INITIAL.
W_OUTPUT-MENGE_ALL = W_ITAB-MENGE_ALL .
ENDIF.
IF W_ITAB-AKTIV IS NOT INITIAL.
W_OUTPUT-AKTIV = W_ITAB-AKTIV .
ENDIF.
IF W_ITAB-DEAKT IS NOT INITIAL.
W_OUTPUT-DEAKT = W_ITAB-DEAKT .
ENDIF.
IF W_ITAB-KOSTL IS NOT INITIAL.
W_OUTPUT-KOSTL = W_ITAB-KOSTL .
ENDIF.
IF W_ITAB-KTEXT IS NOT INITIAL.
W_OUTPUT-KTEXT = W_ITAB-KTEXT .
ENDIF.
IF W_ITAB-KOSTLV IS NOT INITIAL.
W_OUTPUT-KOSTLV = W_ITAB-KOSTLV .
ENDIF.
IF W_ITAB-KTEXTV IS NOT INITIAL.
W_OUTPUT-KTEXTV = W_ITAB-KTEXTV .
ENDIF.
IF W_ITAB-WERKS IS NOT INITIAL.
W_OUTPUT-WERKS = W_ITAB-WERKS .
ENDIF.
IF W_ITAB-WERKS_TXT IS NOT INITIAL.
W_OUTPUT-WERKS_TXT = W_ITAB-WERKS_TXT .
ENDIF.
IF W_ITAB-STORT IS NOT INITIAL.
W_OUTPUT-STORT = W_ITAB-STORT .
ENDIF.
IF W_ITAB-STORT_TXT IS NOT INITIAL.
W_OUTPUT-STORT_TXT = W_ITAB-STORT_TXT .
ENDIF.
IF W_ITAB-RAUMNR IS NOT INITIAL.
W_OUTPUT-RAUMNR = W_ITAB-RAUMNR .
ENDIF.
IF W_ITAB-KFZKZ IS NOT INITIAL.
W_OUTPUT-KFZKZ = W_ITAB-KFZKZ .
ENDIF.
IF W_ITAB-XSTIL IS NOT INITIAL.
W_OUTPUT-XSTIL = W_ITAB-XSTIL .
ENDIF.
IF W_ITAB-ORD41 IS NOT INITIAL.
W_OUTPUT-ORD41 = W_ITAB-ORD41 .
ENDIF.
IF W_ITAB-ORDTX_1 IS NOT INITIAL.
W_OUTPUT-ORDTX_1 = W_ITAB-ORDTX_1 .
ENDIF.
IF W_ITAB-ORD42 IS NOT INITIAL.
W_OUTPUT-ORD42 = W_ITAB-ORD42 .
ENDIF.
IF W_ITAB-ORDTX_2 IS NOT INITIAL.
W_OUTPUT-ORDTX_2 = W_ITAB-ORDTX_2 .
ENDIF.
IF W_ITAB-ORD43 IS NOT INITIAL.
W_OUTPUT-ORD43 = W_ITAB-ORD43 .
ENDIF.
IF W_ITAB-ORDTX_3 IS NOT INITIAL.
W_OUTPUT-ORDTX_3 = W_ITAB-ORDTX_3 .
ENDIF.
IF W_ITAB-ORD44 IS NOT INITIAL.
W_OUTPUT-ORD44 = W_ITAB-ORD44 .
ENDIF.
IF W_ITAB-ORDTX_4 IS NOT INITIAL.
W_OUTPUT-ORDTX_4 = W_ITAB-ORDTX_4 .
ENDIF.
IF W_ITAB-IZWEK IS NOT INITIAL.
W_OUTPUT-IZWEK = W_ITAB-IZWEK .
ENDIF.
IF W_ITAB-IZWEK_TXT IS NOT INITIAL.
W_OUTPUT-IZWEK_TXT = W_ITAB-IZWEK_TXT .
ENDIF.
IF W_ITAB-UMWKZ IS NOT INITIAL.
W_OUTPUT-UMWKZ = W_ITAB-UMWKZ .
ENDIF.
IF W_ITAB-UMWKZ_TXT IS NOT INITIAL.
W_OUTPUT-UMWKZ_TXT = W_ITAB-UMWKZ_TXT .
ENDIF.
IF W_ITAB-ANLUE IS NOT INITIAL.
W_OUTPUT-ANLUE = W_ITAB-ANLUE .
ENDIF.
IF W_ITAB-ANLUE_TXT IS NOT INITIAL.
W_OUTPUT-ANLUE_TXT = W_ITAB-ANLUE_TXT .
ENDIF.
IF W_ITAB-LVDAT IS NOT INITIAL.
W_OUTPUT-LVDAT = W_ITAB-LVDAT .
ENDIF.
IF W_ITAB-LKDAT IS NOT INITIAL.
W_OUTPUT-LKDAT = W_ITAB-LKDAT .
ENDIF.
IF W_ITAB-LEABG IS NOT INITIAL.
W_OUTPUT-LEABG = W_ITAB-LEABG .
ENDIF.
IF W_ITAB-LEJAR IS NOT INITIAL.
W_OUTPUT-LEJAR = W_ITAB-LEJAR .
ENDIF.
IF W_ITAB-LEPER IS NOT INITIAL.
W_OUTPUT-LEPER = W_ITAB-LEPER .
ENDIF.
IF W_ITAB-LEART IS NOT INITIAL.
W_OUTPUT-LEART = W_ITAB-LEART .
ENDIF.
IF W_ITAB-LBASW IS NOT INITIAL.
W_OUTPUT-LBASW = W_ITAB-LBASW .
ENDIF.
IF W_ITAB-LKAUF IS NOT INITIAL.
W_OUTPUT-LKAUF = W_ITAB-LKAUF .
ENDIF.
IF W_ITAB-LETXT IS NOT INITIAL.
W_OUTPUT-LETXT = W_ITAB-LETXT .
ENDIF.
IF W_ITAB-LEANZ IS NOT INITIAL.
W_OUTPUT-LEANZ = W_ITAB-LEANZ .
ENDIF.
IF W_ITAB-LRYTH IS NOT INITIAL.
W_OUTPUT-LRYTH = W_ITAB-LRYTH .
ENDIF.
IF W_ITAB-LVORS IS NOT INITIAL.
W_OUTPUT-LVORS = W_ITAB-LVORS .
ENDIF.
IF W_ITAB-LEGEB IS NOT INITIAL.
W_OUTPUT-LEGEB = W_ITAB-LEGEB .
ENDIF.
IF W_ITAB-LZINS IS NOT INITIAL.
W_OUTPUT-LZINS = W_ITAB-LZINS .
ENDIF.
IF W_ITAB-LBARW IS NOT INITIAL.
W_OUTPUT-LBARW = W_ITAB-LBARW .
ENDIF.
IF W_ITAB-AFASL_TX IS NOT INITIAL.
W_OUTPUT-AFASL_TX = W_ITAB-AFASL_TX .
ENDIF.
IF W_ITAB-NDJAR_TX IS NOT INITIAL.
W_OUTPUT-NDJAR_TX = W_ITAB-NDJAR_TX .
ENDIF.
IF W_ITAB-NDPER_TX IS NOT INITIAL.
W_OUTPUT-NDPER_TX = W_ITAB-NDPER_TX .
ENDIF.
IF W_ITAB-AFABG_TX IS NOT INITIAL.
W_OUTPUT-AFABG_TX = W_ITAB-AFABG_TX .
ENDIF.
IF W_ITAB-GJE_KANSWTX IS NOT INITIAL.
W_OUTPUT-GJE_KANSWTX = W_ITAB-GJE_KANSWTX .
ENDIF.
IF W_ITAB-NAFA_GJETX IS NOT INITIAL.
W_OUTPUT-NAFA_GJETX = W_ITAB-NAFA_GJETX .
ENDIF.
IF W_ITAB-AFASL_FR IS NOT INITIAL.
W_OUTPUT-AFASL_FR = W_ITAB-AFASL_FR .
ENDIF.
IF W_ITAB-NDJAR_FR IS NOT INITIAL.
W_OUTPUT-NDJAR_FR = W_ITAB-NDJAR_FR .
ENDIF.
IF W_ITAB-NDPER_FR IS NOT INITIAL.
W_OUTPUT-NDPER_FR = W_ITAB-NDPER_FR .
ENDIF.
IF W_ITAB-AFABG_FR IS NOT INITIAL.
W_OUTPUT-AFABG_FR = W_ITAB-AFABG_FR .
ENDIF.
IF W_ITAB-GJE_KANSWFR IS NOT INITIAL.
W_OUTPUT-GJE_KANSWFR = W_ITAB-GJE_KANSWFR .
ENDIF.
IF W_ITAB-NAFA_GJEFR IS NOT INITIAL.
W_OUTPUT-NAFA_GJEFR = W_ITAB-NAFA_GJEFR .
ENDIF.
IF W_ITAB-SZINS_GJE IS NOT INITIAL.
W_OUTPUT-SZINS_GJE = W_ITAB-SZINS_GJE .
ENDIF.
IF W_ITAB-AFASL_RT IS NOT INITIAL.
W_OUTPUT-AFASL_RT = W_ITAB-AFASL_RT .
ENDIF.
IF W_ITAB-NDJAR_RT IS NOT INITIAL.
W_OUTPUT-NDJAR_RT = W_ITAB-NDJAR_RT .
ENDIF.
IF W_ITAB-NDPER_RT IS NOT INITIAL.
W_OUTPUT-NDPER_RT = W_ITAB-NDPER_RT .
ENDIF.
IF W_ITAB-AFABG_RT IS NOT INITIAL.
W_OUTPUT-AFABG_RT = W_ITAB-AFABG_RT .
ENDIF.
IF W_ITAB-GJE_KANSWRT IS NOT INITIAL.
W_OUTPUT-GJE_KANSWRT = W_ITAB-GJE_KANSWRT .
ENDIF.
IF W_ITAB-NAFA_GJERT IS NOT INITIAL.
W_OUTPUT-NAFA_GJERT = W_ITAB-NAFA_GJERT .
ENDIF.
IF W_ITAB-ZZANLKL IS NOT INITIAL.
W_OUTPUT-ZZANLKL = W_ITAB-ZZANLKL .
ENDIF.
IF W_ITAB-ANLKL_TXT IS NOT INITIAL.
W_OUTPUT-ANLKL_TXT = W_ITAB-ANLKL_TXT .
ENDIF.
IF W_ITAB-INVNR4 IS NOT INITIAL.
W_OUTPUT-INVNR4 = W_ITAB-INVNR4 .
ENDIF.
IF W_ITAB-ANLN1 IS NOT INITIAL.
W_OUTPUT-ANLN1 = W_ITAB-ANLN1 .
ENDIF.
IF W_ITAB-LVTNR IS NOT INITIAL.
W_OUTPUT-LVTNR = W_ITAB-LVTNR .
ENDIF.
IF W_ITAB-TXT50_ANLT IS NOT INITIAL.
W_OUTPUT-TXT50_ANLT = W_ITAB-TXT50_ANLT .
ENDIF.
IF W_ITAB-MENGE IS NOT INITIAL.
W_OUTPUT-MENGE = W_ITAB-MENGE .
ENDIF.
IF W_ITAB-ZLBARW4 IS NOT INITIAL.
W_OUTPUT-ZLBARW4 = W_ITAB-ZLBARW4 .
ENDIF.
IF W_ITAB-ZWAERS4 IS NOT INITIAL.
W_OUTPUT-ZWAERS4 = W_ITAB-ZWAERS4 .
ENDIF.
IF W_ITAB-ZZMAINTE IS NOT INITIAL.
W_OUTPUT-ZZMAINTE = W_ITAB-ZZMAINTE .
ENDIF.
IF W_ITAB-ZZLGADV IS NOT INITIAL.
W_OUTPUT-ZZLGADV = W_ITAB-ZZLGADV .
ENDIF.
IF W_ITAB-ZZBELNR01_FI IS NOT INITIAL.
W_OUTPUT-ZZBELNR01_FI = W_ITAB-ZZBELNR01_FI .
ENDIF.
IF W_ITAB-ZZBELNR98_AA IS NOT INITIAL.
W_OUTPUT-ZZBELNR98_AA = W_ITAB-ZZBELNR98_AA .
ENDIF.
IF W_ITAB-ZZBELNR99_AA IS NOT INITIAL.
W_OUTPUT-ZZBELNR99_AA = W_ITAB-ZZBELNR99_AA .
ENDIF.
IF W_ITAB-KOSTL4 IS NOT INITIAL.
W_OUTPUT-KOSTL4 = W_ITAB-KOSTL4 .
ENDIF.
IF W_ITAB-KTEXT4 IS NOT INITIAL.
W_OUTPUT-KTEXT4 = W_ITAB-KTEXT4 .
ENDIF.
IF W_ITAB-KOSTLV4 IS NOT INITIAL.
W_OUTPUT-KOSTLV4 = W_ITAB-KOSTLV4 .
ENDIF.
IF W_ITAB-KTEXTV4 IS NOT INITIAL.
W_OUTPUT-KTEXTV4 = W_ITAB-KTEXTV4 .
ENDIF.
IF W_ITAB-WERKS4 IS NOT INITIAL.
W_OUTPUT-WERKS4 = W_ITAB-WERKS4 .
ENDIF.
IF W_ITAB-WERKS_TXT4 IS NOT INITIAL.
W_OUTPUT-WERKS_TXT4 = W_ITAB-WERKS_TXT4 .
ENDIF.
IF W_ITAB-STORT4 IS NOT INITIAL.
W_OUTPUT-STORT4 = W_ITAB-STORT4 .
ENDIF.
IF W_ITAB-STORT_TXT4 IS NOT INITIAL.
W_OUTPUT-STORT_TXT4 = W_ITAB-STORT_TXT4 .
ENDIF.
IF W_ITAB-RAUMNR4 IS NOT INITIAL.
W_OUTPUT-RAUMNR4 = W_ITAB-RAUMNR4 .
ENDIF.
IF W_ITAB-KFZKZ4 IS NOT INITIAL.
W_OUTPUT-KFZKZ4 = W_ITAB-KFZKZ4 .
ENDIF.
IF W_ITAB-XSTIL4 IS NOT INITIAL.
W_OUTPUT-XSTIL4 = W_ITAB-XSTIL4 .
ENDIF.
IF W_ITAB-ORD414 IS NOT INITIAL.
W_OUTPUT-ORD414 = W_ITAB-ORD414 .
ENDIF.
IF W_ITAB-ORDTX_14 IS NOT INITIAL.
W_OUTPUT-ORDTX_14 = W_ITAB-ORDTX_14 .
ENDIF.
IF W_ITAB-ORD424 IS NOT INITIAL.
W_OUTPUT-ORD424 = W_ITAB-ORD424 .
ENDIF.
IF W_ITAB-ORDTX_24 IS NOT INITIAL.
W_OUTPUT-ORDTX_24 = W_ITAB-ORDTX_24 .
ENDIF.
IF W_ITAB-ORD434 IS NOT INITIAL.
W_OUTPUT-ORD434 = W_ITAB-ORD434 .
ENDIF.
IF W_ITAB-ORDTX_34 IS NOT INITIAL.
W_OUTPUT-ORDTX_34 = W_ITAB-ORDTX_34 .
ENDIF.
IF W_ITAB-ORD444 IS NOT INITIAL.
W_OUTPUT-ORD444 = W_ITAB-ORD444 .
ENDIF.
IF W_ITAB-ORDTX_44 IS NOT INITIAL.
W_OUTPUT-ORDTX_44 = W_ITAB-ORDTX_44 .
ENDIF.
IF W_ITAB-IZWEK4 IS NOT INITIAL.
W_OUTPUT-IZWEK4 = W_ITAB-IZWEK4 .
ENDIF.
IF W_ITAB-IZWEK_TXT4 IS NOT INITIAL.
W_OUTPUT-IZWEK_TXT4 = W_ITAB-IZWEK_TXT4 .
ENDIF.
IF W_ITAB-UMWKZ4 IS NOT INITIAL.
W_OUTPUT-UMWKZ4 = W_ITAB-UMWKZ4 .
ENDIF.
IF W_ITAB-UMWKZ_TXT4 IS NOT INITIAL.
W_OUTPUT-UMWKZ_TXT4 = W_ITAB-UMWKZ_TXT4 .
ENDIF.
IF W_ITAB-ANLUE4 IS NOT INITIAL.
W_OUTPUT-ANLUE4 = W_ITAB-ANLUE4 .
ENDIF.
IF W_ITAB-ANLUE_TXT4 IS NOT INITIAL.
W_OUTPUT-ANLUE_TXT4 = W_ITAB-ANLUE_TXT4 .
ENDIF.
IF W_ITAB-LEAFI IS NOT INITIAL.
W_OUTPUT-LEAFI = W_ITAB-LEAFI .
ENDIF.
IF W_ITAB-LEAFI_TXT4 IS NOT INITIAL.
W_OUTPUT-LEAFI_TXT4 = W_ITAB-LEAFI_TXT4 .
ENDIF.
IF W_ITAB-LVTNR4 IS NOT INITIAL.
W_OUTPUT-LVTNR4 = W_ITAB-LVTNR4 .
ENDIF.
IF W_ITAB-AFASL_B IS NOT INITIAL.
W_OUTPUT-AFASL_B = W_ITAB-AFASL_B .
ENDIF.
IF W_ITAB-NDJAR_B IS NOT INITIAL.
W_OUTPUT-NDJAR_B = W_ITAB-NDJAR_B .
ENDIF.
IF W_ITAB-NDPER_B IS NOT INITIAL.
W_OUTPUT-NDPER_B = W_ITAB-NDPER_B .
ENDIF.
IF W_ITAB-AFABG_B IS NOT INITIAL.
W_OUTPUT-AFABG_B = W_ITAB-AFABG_B .
ENDIF.
IF W_ITAB-GJE_KANSWB IS NOT INITIAL.
W_OUTPUT-GJE_KANSWB = W_ITAB-GJE_KANSWB .
ENDIF.
IF W_ITAB-NAFA_GJEB IS NOT INITIAL.
W_OUTPUT-NAFA_GJEB = W_ITAB-NAFA_GJEB .
ENDIF.
IF W_ITAB-AFASL_TCD IS NOT INITIAL.
W_OUTPUT-AFASL_TCD = W_ITAB-AFASL_TCD .
ENDIF.
IF W_ITAB-NDJAR_TCD IS NOT INITIAL.
W_OUTPUT-NDJAR_TCD = W_ITAB-NDJAR_TCD .
ENDIF.
IF W_ITAB-NDPER_TCD IS NOT INITIAL.
W_OUTPUT-NDPER_TCD = W_ITAB-NDPER_TCD .
ENDIF.
IF W_ITAB-AFABG_TCD IS NOT INITIAL.
W_OUTPUT-AFABG_TCD = W_ITAB-AFABG_TCD .
ENDIF.
IF W_ITAB-GJE_KANSWTCD IS NOT INITIAL.
W_OUTPUT-GJE_KANSWTCD = W_ITAB-GJE_KANSWTCD .
ENDIF.
IF W_ITAB-NAFA_GJETCD IS NOT INITIAL.
W_OUTPUT-NAFA_GJETCD = W_ITAB-NAFA_GJETCD .
ENDIF.
IF W_ITAB-AFASL_MC IS NOT INITIAL.
W_OUTPUT-AFASL_MC = W_ITAB-AFASL_MC .
ENDIF.
IF W_ITAB-NDJAR_MC IS NOT INITIAL.
W_OUTPUT-NDJAR_MC = W_ITAB-NDJAR_MC .
ENDIF.
IF W_ITAB-NDPER_MC IS NOT INITIAL.
W_OUTPUT-NDPER_MC = W_ITAB-NDPER_MC .
ENDIF.
IF W_ITAB-AFABG_MC IS NOT INITIAL.
W_OUTPUT-AFABG_MC = W_ITAB-AFABG_MC .
ENDIF.
IF W_ITAB-GJE_KANSWMC IS NOT INITIAL.
W_OUTPUT-GJE_KANSWMC = W_ITAB-GJE_KANSWMC .
ENDIF.
IF W_ITAB-NAFA_GJEMC IS NOT INITIAL.
W_OUTPUT-NAFA_GJEMC = W_ITAB-NAFA_GJEMC .
ENDIF.
IF W_ITAB-AFASL_IN IS NOT INITIAL.
W_OUTPUT-AFASL_IN = W_ITAB-AFASL_IN .
ENDIF.
IF W_ITAB-NDJAR_IN IS NOT INITIAL.
W_OUTPUT-NDJAR_IN = W_ITAB-NDJAR_IN .
ENDIF.
IF W_ITAB-NDPER_IN IS NOT INITIAL.
W_OUTPUT-NDPER_IN = W_ITAB-NDPER_IN .
ENDIF.
IF W_ITAB-AFABG_IN IS NOT INITIAL.
W_OUTPUT-AFABG_IN = W_ITAB-AFABG_IN .
ENDIF.
IF W_ITAB-GJE_KANSWIN IS NOT INITIAL.
W_OUTPUT-GJE_KANSWIN = W_ITAB-GJE_KANSWIN .
ENDIF.
IF W_ITAB-NAFA_GJEIN IS NOT INITIAL.
W_OUTPUT-NAFA_GJEIN = W_ITAB-NAFA_GJEIN .
ENDIF.
IF W_ITAB-ZERRMSG IS NOT INITIAL.
W_OUTPUT-ZERRMSG = W_ITAB-ZERRMSG .
ENDIF.
ENDFORM. " F_MOVE_KEIAYKU
&----
*& Form F_OVER_WRITE
&----
text
----
FORM F_OVER_WRITE USING W_ITAB TYPE TYP_SISAN
CHANGING W_OUTPUT TYPE TYP_ERR_FILE1.
IF W_ITAB-MENGE IS NOT INITIAL.
W_OUTPUT-MENGE_ALL = W_ITAB-MENGE.
ENDIF.
IF W_ITAB-KOSTL IS NOT INITIAL.
W_OUTPUT-KOSTL = W_ITAB-KOSTL .
ENDIF.
IF W_ITAB-KOSTLV IS NOT INITIAL.
W_OUTPUT-KOSTLV = W_ITAB-KOSTLV .
ENDIF.
IF W_ITAB-WERKS IS NOT INITIAL.
W_OUTPUT-WERKS = W_ITAB-WERKS .
ENDIF.
IF W_ITAB-STORT IS NOT INITIAL.
W_OUTPUT-STORT = W_ITAB-STORT .
ENDIF.
IF W_ITAB-RAUMNR IS NOT INITIAL.
W_OUTPUT-RAUMNR = W_ITAB-RAUMNR .
ENDIF.
IF W_ITAB-KFZKZ IS NOT INITIAL.
W_OUTPUT-KFZKZ = W_ITAB-KFZKZ .
ENDIF.
IF W_ITAB-XSTIL IS NOT INITIAL.
W_OUTPUT-XSTIL = W_ITAB-XSTIL .
ENDIF.
ENDFORM. " F_OVER_WRITE
&----
*& Form F_OVER_WRITE_24
&----
text
----
FORM F_OVER_WRITE_24 USING W_ITAB TYPE TYP_SISAN
CHANGING W_OUTPUT TYPE TYP_ERR_FILE1.
IF W_ITAB-MENGE_TXT IS NOT INITIAL.
W_OUTPUT-TXT50_ANLT = W_ITAB-MENGE_TXT .
ENDIF.
IF W_ITAB-MENGE IS NOT INITIAL.
W_OUTPUT-MENGE = W_ITAB-MENGE .
ENDIF.
IF W_ITAB-KOSTL IS NOT INITIAL.
W_OUTPUT-KOSTL4 = W_ITAB-KOSTL .
ENDIF.
IF W_ITAB-KOSTLV IS NOT INITIAL.
W_OUTPUT-KOSTLV4 = W_ITAB-KOSTLV.
ENDIF.
IF W_ITAB-WERKS IS NOT INITIAL.
W_OUTPUT-WERKS4 = W_ITAB-WERKS.
ENDIF.
IF W_ITAB-STORT IS NOT INITIAL.
W_OUTPUT-STORT4 = W_ITAB-STORT .
ENDIF.
IF W_ITAB-RAUMNR IS NOT INITIAL.
W_OUTPUT-RAUMNR4 = W_ITAB-RAUMNR .
ENDIF.
IF W_ITAB-KFZKZ IS NOT INITIAL.
W_OUTPUT-KFZKZ4 = W_ITAB-KFZKZ .
ENDIF.
IF W_ITAB-XSTIL IS NOT INITIAL.
W_OUTPUT-XSTIL4 = W_ITAB-XSTIL .
ENDIF.
ENDFORM. " F_OVER_WRITE_24
&----
*& Form F_OWRITE_KEIYAKU
&----
text
----
FORM F_OWRITE_KEIYAKU USING W_ITAB TYPE ANLA
CHANGING W_OUTPUT TYPE TYP_ERR_FILE1.
IF W_ITAB-INVNR IS NOT INITIAL.
W_OUTPUT-INVNR = W_ITAB-INVNR .
ENDIF.
IF W_ITAB-ORD41 IS NOT INITIAL.
W_OUTPUT-ORD41 = W_ITAB-ORD41 .
ENDIF.
IF W_ITAB-ORD42 IS NOT INITIAL.
W_OUTPUT-ORD42 = W_ITAB-ORD42 .
ENDIF.
IF W_ITAB-ORD43 IS NOT INITIAL.
W_OUTPUT-ORD43 = W_ITAB-ORD43 .
ENDIF.
IF W_ITAB-ORD44 IS NOT INITIAL.
W_OUTPUT-ORD44 = W_ITAB-ORD44 .
ENDIF.
IF W_ITAB-IZWEK IS NOT INITIAL.
W_OUTPUT-IZWEK = W_ITAB-IZWEK .
ENDIF.
IF W_ITAB-UMWKZ IS NOT INITIAL.
W_OUTPUT-UMWKZ = W_ITAB-UMWKZ .
ENDIF.
IF W_ITAB-ANLUE IS NOT INITIAL.
W_OUTPUT-ANLUE = W_ITAB-ANLUE .
ENDIF.
IF W_ITAB-LVDAT IS NOT INITIAL.
W_OUTPUT-LVDAT = W_ITAB-LVDAT .
ENDIF.
IF W_ITAB-LKDAT IS NOT INITIAL.
W_OUTPUT-LKDAT = W_ITAB-LKDAT .
ENDIF.
IF W_ITAB-LEABG IS NOT INITIAL.
W_OUTPUT-LEABG = W_ITAB-LEABG .
ENDIF.
IF W_ITAB-LEJAR IS NOT INITIAL.
W_OUTPUT-LEJAR = W_ITAB-LEJAR .
ENDIF.
IF W_ITAB-LEPER IS NOT INITIAL.
W_OUTPUT-LEPER = W_ITAB-LEPER .
ENDIF.
IF W_ITAB-LEART IS NOT INITIAL.
W_OUTPUT-LEART = W_ITAB-LEART .
ENDIF.
IF W_ITAB-LBASW IS NOT INITIAL.
W_OUTPUT-LBASW = W_ITAB-LBASW .
ENDIF.
IF W_ITAB-LKAUF IS NOT INITIAL.
W_OUTPUT-LKAUF = W_ITAB-LKAUF .
ENDIF.
IF W_ITAB-LETXT IS NOT INITIAL.
W_OUTPUT-LETXT = W_ITAB-LETXT .
ENDIF.
IF W_ITAB-LEANZ IS NOT INITIAL.
W_OUTPUT-LEANZ = W_ITAB-LEANZ .
ENDIF.
IF W_ITAB-LRYTH IS NOT INITIAL.
W_OUTPUT-LRYTH = W_ITAB-LRYTH .
ENDIF.
IF W_ITAB-LVORS IS NOT INITIAL.
W_OUTPUT-LVORS = W_ITAB-LVORS .
ENDIF.
IF W_ITAB-LEGEB IS NOT INITIAL.
W_OUTPUT-LEGEB = W_ITAB-LEGEB .
ENDIF.
IF W_ITAB-LZINS IS NOT INITIAL.
W_OUTPUT-LZINS = W_ITAB-LZINS .
ENDIF.
IF W_ITAB-LBARW IS NOT INITIAL.
W_OUTPUT-LBARW = W_ITAB-LBARW .
ENDIF.
ENDFORM. " F_OWRITE_KEIYAKU
&----
*& Form F_OWRITE_BUKKEN
&----
text
----
FORM F_OWRITE_BUKKEN USING W_ITAB TYPE ANLA
CHANGING W_OUTPUT TYPE TYP_ERR_FILE1.
IF W_ITAB-INVNR IS NOT INITIAL.
W_OUTPUT-INVNR4 = W_ITAB-INVNR.
ENDIF.
IF W_ITAB-ORD41 IS NOT INITIAL.
W_OUTPUT-ORD414 = W_ITAB-ORD41 .
ENDIF.
IF W_ITAB-ORD42 IS NOT INITIAL.
W_OUTPUT-ORD424 = W_ITAB-ORD42 .
ENDIF.
IF W_ITAB-ORD43 IS NOT INITIAL.
W_OUTPUT-ORD434 = W_ITAB-ORD43 .
ENDIF.
IF W_ITAB-ORD44 IS NOT INITIAL.
W_OUTPUT-ORD444 = W_ITAB-ORD44 .
ENDIF.
IF W_ITAB-IZWEK IS NOT INITIAL.
W_OUTPUT-IZWEK4 = W_ITAB-IZWEK .
ENDIF.
IF W_ITAB-UMWKZ IS NOT INITIAL.
W_OUTPUT-UMWKZ4 = W_ITAB-UMWKZ .
ENDIF.
IF W_ITAB-ANLUE IS NOT INITIAL.
W_OUTPUT-ANLUE4 = W_ITAB-ANLUE .
ENDIF.
IF W_ITAB-LEAFI IS NOT INITIAL.
W_OUTPUT-LEAFI = W_ITAB-LEAFI .
ENDIF.
IF W_ITAB-LVTNR IS NOT INITIAL.
W_OUTPUT-LVTNR4 = W_ITAB-LVTNR .
ENDIF.
ENDFORM. " F_OWRITE_BUKKEN
&----
*& Form F_GET_KEY
&----
text
----
FORM F_GET_KEY USING LW_KOUABI_BUKRS
LW_KOUABI_LIFNR
LW_KOUABI_EBELN
CHANGING LW_ERR_FILE_ZBUKRS
LW_ERR_FILE_ZLEAFI
LW_ERR_FILE_ZLEYM
LW_ERR_FILE_ZLVTNR1
LW_ERR_FILE_ZLVTNR2
LW_ERR_FILE_ZZEBELN.
DATA: LW_FI23 TYPE ZTFI0023.
CLEAR LW_FI23.
SELECT * FROM ZTFI0023 INTO LW_FI23 UP TO 1 ROWS
WHERE ZZBUKRS = LW_KOUABI_BUKRS "会社コード
AND ZZLEAFI = LW_KOUABI_LIFNR "リース会社
AND ZZEBELN = LW_KOUABI_EBELN. "購買伝票番号
ENDSELECT.
LW_ERR_FILE_ZBUKRS = LW_FI23-ZZBUKRS. "会社コード
LW_ERR_FILE_ZLEAFI = LW_FI23-ZZLEAFI. "リース会社
LW_ERR_FILE_ZLEYM = LW_FI23-ZZLEYM. "開始年月
LW_ERR_FILE_ZLVTNR1 = LW_FI23-ZZLVTNR1. "リース契約番号
LW_ERR_FILE_ZLVTNR2 = LW_FI23-ZZLVTNR2. "リース契約枝番
LW_ERR_FILE_ZZEBELN = LW_FI23-ZZEBELN. "購買伝票番号
ENDFORM. " F_GET_KEY
Edited by: MKM on Dec 15, 2008 11:14 AM
11-04-2008 8:01 AM
&----
プログラム・ヘッダー
&----
プログラム ID : ZFIB0160
スクリーン : 1000
作成者 : R.NAGARAJAN(INFOVIEW)
作成日 : 2008/09/29
ソースコードタイプ : バッチインプット
説明 : リース資産登録と会計伝票転記
備考 : -
&----
変更ログ
&----
番号 日付 プログラマ 説明
00001 XXXX/XX/XX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX
&----
一般情報
&----
アプリケーション : FI-AA
論理 DB : XXXXXXXXXXXXXXXXXXXX
インプット : ZTFI0023 リース契約テーブル
ZTFI0024 リース物件テーブル
バリアント : XXXXXXXXXXXXXX
アウトプット : ZTFI0023 リース契約テーブル
ZTFI0024 リース物件テーブル
CALLS : *
インクルード : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
バッチインプット : AS01 資産マスタ登録
FB01 伝票転記
ABSO 雑取引
AB08 反対仕訳明細
FB08 伝票の反対仕訳
リターンコード : *
アベンド : *
&----
REPORT ZFIB0160 NO STANDARD PAGE HEADING
LINE-COUNT 65
LINE-SIZE 132.
&----
CONSTANTS
&----
CONSTANTS :
CNS_E TYPE C LENGTH 01 VALUE 'E', "Message Type, Range Sign
CNS_S TYPE C LENGTH 01 VALUE 'S', "Message Type
CNS_I TYPE C LENGTH 01 VALUE 'I', "Range Sign
CNS_X TYPE C LENGTH 01 VALUE 'X', "Flag Set
CNS_SEP TYPE C LENGTH 01 VALUE '\', "Directory Separater
CNS_AMP TYPE C LENGTH 01 VALUE '&', "Unix Directory Check
CNS_$ TYPE C LENGTH 01 VALUE '$', "Unix Directory Check
CNS_1 TYPE C LENGTH 01 VALUE '1', "Unix Directory Check
CNS_2 TYPE C LENGTH 01 VALUE '2', "Account proc division
CNS_3 TYPE C LENGTH 01 VALUE '3', "Interest proc division
CNS_CB TYPE C LENGTH 01 VALUE ')', "Screen Field Name
CNS_LT TYPE C LENGTH 01 VALUE '<', "Sales Tax Code
CNS_V1 TYPE C LENGTH 02 VALUE 'V1', "Tax Code
CNS_V0 TYPE C LENGTH 02 VALUE 'V0', "Tax Code
CNS_PLUS TYPE C LENGTH 01 VALUE '+', "Calculation type
CNS_EQ TYPE C LENGTH 02 VALUE 'EQ', "Range Option
CNS_ZL TYPE C LENGTH 02 VALUE 'ZL', "Acc Document Type
CNS_AA TYPE C LENGTH 02 VALUE 'AA', "Acc Document Type
CNS_F5 TYPE C LENGTH 02 VALUE 'F5', "Message ID
CNS_01 TYPE N LENGTH 02 VALUE '01', "Reason for Reversal
CNS_15 TYPE C LENGTH 02 VALUE '15', "Real depreciation area
CNS_40 TYPE C LENGTH 02 VALUE '40', "Posting Key
CNS_50 TYPE C LENGTH 02 VALUE '50', "Posting Key
CNS_70 TYPE C LENGTH 02 VALUE '70', "Posting Key
CNS_FTYPE TYPE C LENGTH 10 VALUE 'DAT', "Download File Type
CNS_Z17 TYPE C LENGTH 03 VALUE 'Z17', "Asset transaction type
CNS_Z22 TYPE C LENGTH 03 VALUE 'Z22', "Asset transaction type
CNS_Z23 TYPE C LENGTH 03 VALUE 'Z23', "Asset transaction type
CNS_Z24 TYPE C LENGTH 03 VALUE 'Z24', "Asset transaction type
CNS_Z25 TYPE C LENGTH 03 VALUE 'Z25', "Asset transaction type
CNS_Z26 TYPE C LENGTH 03 VALUE 'Z26', "Asset transaction type
CNS_0000 TYPE C LENGTH 04 VALUE '0000', "Depreciation key
CNS_ZLS2 TYPE C LENGTH 04 VALUE 'ZLS2', "Depreciation key
CNS_ZZ00 TYPE C LENGTH 04 VALUE 'ZZ00', "Depreciation key
CNS_OPEN TYPE C LENGTH 04 VALUE 'OPEN', "UNIX File Error
CNS_AS01 TYPE C LENGTH 04 VALUE 'AS01', "Create Asset Master
CNS_ABSO TYPE C LENGTH 04 VALUE 'ABSO', "Miscellaneous Transactions
CNS_FB01 TYPE C LENGTH 04 VALUE 'FB01', "Post Document
CNS_AB08 TYPE C LENGTH 04 VALUE 'AB08', "Reverse Line Items
CNS_FB08 TYPE C LENGTH 04 VALUE 'FB08', "Reverse Document
CNS_ONLI TYPE C LENGTH 04 VALUE 'ONLI', "System User Command
CNS_2800 TYPE C LENGTH 04 VALUE '2800', "Asset Class
CNS_MID1 TYPE C LENGTH 05 VALUE 'ZFI01', "Meessage ID
CNS_MID2 TYPE C LENGTH 06 VALUE 'ZREP01', "Meessage ID
CNS_MID3 TYPE C LENGTH 06 VALUE 'ZNN01', "Meessage ID
CNS_MEMID TYPE C LENGTH 10 VALUE 'ZFIB0160', "ABAP Memory ID
CNS_FNAM TYPE C LENGTH 12 VALUE 'RLAB01-MARK(', "Screen Field Name
CNS_000 TYPE N LENGTH 03 VALUE '000', "Message Number
CNS_001 TYPE N LENGTH 03 VALUE '001', "Message Number
CNS_009 TYPE N LENGTH 03 VALUE '009', "Message Number
CNS_011 TYPE N LENGTH 03 VALUE '011', "Message Number
CNS_020 TYPE N LENGTH 03 VALUE '020', "Message Number
CNS_023 TYPE N LENGTH 03 VALUE '023', "Message Number
CNS_033 TYPE N LENGTH 03 VALUE '033', "Message Number
CNS_069 TYPE N LENGTH 03 VALUE '069', "Message Number
CNS_228 TYPE N LENGTH 03 VALUE '228', "Message Number
CNS_312 TYPE N LENGTH 03 VALUE '312', "Message Number
CNS_367 TYPE N LENGTH 03 VALUE '367', "Message Number
CNS_945 TYPE N LENGTH 03 VALUE '945', "Message Number
CNS_FILTER TYPE STRING VALUE ', *.TXT, *.TXT.'. "File Filter
&----
TYPES
&----
Error Record Structure
TYPES : BEGIN OF TYP_ERR_REC,
Application Name
APPL TYPE CHAR20,
Data Area
AREA TYPE CHAR10,
Company Code
ZZBUKRS TYPE ZTFI0023-ZZBUKRS,
Leasing Company
ZZLEAFI TYPE ZTFI0023-ZZLEAFI,
Asset Posting Period
ZZLEYM TYPE CHAR6,
Leasing Agreement Numbers
ZZLVTNR1 TYPE ZTFI0023-ZZLVTNR1,
ZZLVTNR2 TYPE ZTFI0023-ZZLVTNR2,
Inventory number
ZZINVNR_ANLA TYPE ZTFI0024-ZZINVNR_ANLA,
Error Text
MSG TYPE CHAR100,
END OF TYP_ERR_REC,
Company Code Range
TYP_SEL_BUKRS TYPE RANGE OF T001-BUKRS,
Asset Line Item Structure
BEGIN OF TYP_ANEP,
AFABE TYPE ANEP-AFABE,
BWASL TYPE ANEP-BWASL,
END OF TYP_ANEP.
&----
INTERNAL TABLE
&----
DATA :
ZTFI0023 Records
IT_FI0023 TYPE STANDARD TABLE OF ZTFI0023,
ZTFI0024 Records
IT_FI0024 TYPE STANDARD TABLE OF ZTFI0024,
Batch Input Data
IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
Batch Input Result
IT_MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL,
SUBMIT(ZFI00I0010) Input Data
IT_PARAM TYPE STANDARD TABLE OF ZFI0001,
SUBMIT(ZFI00I0010) Result
IT_RETURN TYPE STANDARD TABLE OF ZREPARET01,
Local File for Error Records Download
IT_FILES TYPE FILETABLE,
Company Codes
IT_BUKRS TYPE STANDARD TABLE OF T001-BUKRS,
Company Code Range Records
IT_SEL_BUKRS TYPE TYP_SEL_BUKRS,
Error Records
IT_ERROR TYPE STANDARD TABLE OF TYP_ERR_REC,
Asset Line Items
IT_ANEP TYPE STANDARD TABLE OF TYP_ANEP.
&----
WORKAREA
&----
DATA :
ZTFI0023 Record
WA_FI0023 TYPE ZTFI0023,
ZTFI0024 Record
WA_FI0024 TYPE ZTFI0024,
Batch Input Data
WA_BDCDATA TYPE BDCDATA,
Batch Input Result
WA_MESSTAB TYPE BDCMSGCOLL,
SUBMIT(ZFI00I0010) Input Data
WA_PARAM TYPE ZFI0001,
SUBMIT(ZFI00I0010) Result
WA_RETURN TYPE ZREPARET01,
Company Code
WA_BUKRS TYPE T001-BUKRS,
ZTFI0027 Record
WA_FI0027 TYPE ZTFI0027,
G/L Account Master ( Company Code ) Record
WA_SKB1 TYPE SKB1,
Error Record
WA_ERROR TYPE TYP_ERR_REC,
Error Record Header
WA_COL_TXT TYPE TYP_ERR_REC,
Company Code Range Record
WA_SEL_BUKRS TYPE LINE OF TYP_SEL_BUKRS,
Asset Line Item
WA_ANEP TYPE TYP_ANEP.
&----
VARIABLES
&----
DATA :
Fiscal Period
W_MONAT TYPE T001B-FRPE1,
Number of lease payments
W_LEANZ TYPE ANLA-LEANZ,
G/L Account Number
W_SAKNR TYPE SKB1-SAKNR,
Unix File for Error Records Download
W_UFILE TYPE RLGRAP-FILENAME,
Screen Field Name
W_SFIELD TYPE BDCDATA-FNAM,
Screen Field Value
W_FVAL TYPE BDCDATA-FVAL,
SELECT-OPTION declaration
W_BUKRS TYPE ZFI23-BUKRS,
Item Text
W_SGTXT TYPE ZFI0001-ZZSGTXT,
Leasing Company
W_ZZLEAFI TYPE ZTFI0023-ZZLEAFI,
Leasing Agreement Numbers
W_ZZLVTNR1 TYPE ZTFI0023-ZZLVTNR1,
W_ZZLVTNR2 TYPE ZTFI0023-ZZLVTNR2,
Asset Posting Period
W_ZZLEYM TYPE ZTFI0023-ZZLEYM,
SUBMIT(ZFI00I0010) Result
W_RETURN TYPE I,
User Action during Local File Selection
W_USER_ACTION TYPE I,
Asset Line Item Index
W_AITEM TYPE I,
ZTFI0023 Record Index
W_INDEX_23 TYPE I,
ZTFI0024 Record Index
W_INDEX_24 TYPE I,
Asset Line Item : Record Index
W_INDEX_ANEP TYPE I,
Asset Line Item : Screen Field Index
W_CURRENT TYPE NUMC2,
Local File for Error Records Download
W_LFILE TYPE STRING,
Local File Selection Result
W_RESULT TYPE CHAR01,
BDC Execution Mode
W_BDC_MODE TYPE CHAR01 VALUE 'N',
Error Message
W_MSG TYPE CHAR100,
G/L Account Numbers Input Check
FLG_KCODE TYPE CHAR01,
Asset Miscellaneous Transactions Completion Check
FLG_ABSO TYPE CHAR01,
Error Record Check
FLG_ERROR TYPE CHAR01.
&----
SELECTION SCREEN LAYOUT
&----
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS :
Company Code Input Data
S_BUKRS FOR W_BUKRS OBLIGATORY.
PARAMETERS :
Fiscal Year
P_GJAHR TYPE ZFI23-GJAHR OBLIGATORY,
Fiscal Period
P_MONAT TYPE ZFI23-MONAT OBLIGATORY.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS :
Leasing Company
S_LEAFI FOR W_ZZLEAFI,
Leasing Agreement Numbers
S_LVTNR1 FOR W_ZZLVTNR1,
S_LVTNR2 FOR W_ZZLVTNR2.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN : BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-000.
PARAMETERS :
Asset : Registration Process
RA_REG RADIOBUTTON GROUP G1,
Asset : Cancellation Process
RA_CAN RADIOBUTTON GROUP G1.
SELECTION-SCREEN : END OF BLOCK B2.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN : BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-001.
PARAMETERS :
Local File for Error Records Download
P_UFILE TYPE RLGRAP-FILENAME,
UNIX File for Error Records Download
P_LFILE TYPE RLGRAP-FILENAME.
SELECTION-SCREEN : END OF BLOCK B3.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN : BEGIN OF LINE.
SELECTION-SCREEN : COMMENT 3(29) TEXT-013.
G/L Account Number
PARAMETERS : P_KCODE1 TYPE SKB1-SAKNR.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : BEGIN OF LINE.
SELECTION-SCREEN : COMMENT 26(6) TEXT-012.
G/L Account Number
PARAMETERS : P_KCODE2 TYPE SKB1-SAKNR.
SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN : END OF BLOCK B1.
&----
INITIALIZATION
&----
INITIALIZATION.
PERFORM INIT_FIELDS.
&----
AT SELECTION-SCREEN ON VALUE-REQUEST
&----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LFILE.
PERFORM PROCESS_LFILE.
&----
AT SELECTION-SCREEN
&----
AT SELECTION-SCREEN.
IF SY-UCOMM = CNS_ONLI.
PERFORM CHECK_FIELDS.
ENDIF.
&----
START-OF-SELECTION
&----
START-OF-SELECTION.
PERFORM PROCESS_FIELDS.
&----
SUBROUTINE
&----
&----
*& Form INIT_FIELDS
&----
Initializing the Program Fields
----
FORM INIT_FIELDS .
プログラム実行制御
CALL FUNCTION 'Z_ZMA1_PGM_CTRL'
EXPORTING
I_UNAME = SY-UNAME
I_PROGRAM = SY-CPROG
I_DATE = SY-DATUM.
CLEAR : WA_COL_TXT.
Error Record Header Formation
WA_COL_TXT-APPL = TEXT-016.
WA_COL_TXT-AREA = TEXT-017.
WA_COL_TXT-ZZBUKRS = TEXT-018.
WA_COL_TXT-ZZLEAFI = TEXT-019.
WA_COL_TXT-ZZLEYM = TEXT-020.
WA_COL_TXT-ZZLVTNR1 = TEXT-021.
WA_COL_TXT-ZZLVTNR2 = TEXT-022.
WA_COL_TXT-ZZINVNR_ANLA = TEXT-023.
WA_COL_TXT-MSG = TEXT-024.
ENDFORM. " INIT_FIELDS
&----
*& Form PROCESS_LFILE
&----
Value Request for PC filename
----
FORM PROCESS_LFILE .
Local File Selection
CLEAR IT_FILES .
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
FILE_FILTER = CNS_FILTER
CHANGING
FILE_TABLE = IT_FILES
RC = W_RETURN
USER_ACTION = W_USER_ACTION
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC = 0.
'Local File Selection' done
IF W_USER_ACTION <> 9.
Local File Assignment
READ TABLE IT_FILES INDEX 1 INTO P_LFILE.
ELSE.
Exiting 'Local File Selection'
MESSAGE ID CNS_MID2
TYPE CNS_S
NUMBER CNS_069
WITH TEXT-007
DISPLAY LIKE CNS_E.
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
Other File Access Issues
MESSAGE ID SY-MSGID
TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4.
ENDIF.
ENDFORM. " PROCESS_LFILE
&----
*& Form CHECK_FIELDS
&----
Input Validation Process
----
FORM CHECK_FIELDS .
CLEAR : IT_BUKRS,
WA_BUKRS,
IT_SEL_BUKRS,
WA_SEL_BUKRS.
Company Code Check
SELECT BUKRS FROM T001 INTO TABLE IT_BUKRS
WHERE BUKRS IN S_BUKRS.
*--会社コードテーブルからの取得に失敗しました
IF SY-SUBRC <> 0.
MESSAGE ID CNS_MID2
TYPE CNS_E
NUMBER CNS_945
WITH TEXT-037.
ENDIF.
CLEAR : W_MONAT.
Parameter Data Type Conversion
W_MONAT = P_MONAT.
Company Code Range
WA_SEL_BUKRS-SIGN = CNS_I.
WA_SEL_BUKRS-OPTION = CNS_EQ.
LOOP AT IT_BUKRS INTO WA_BUKRS.
会計期間判定
CALL FUNCTION 'FI_PERIOD_CHECK'
EXPORTING
I_BUKRS = WA_BUKRS " 会社コード
I_OPVAR = SPACE " 会計期間バリアント
I_GJAHR = P_GJAHR " 会計年度
I_KOART = CNS_PLUS " 勘定タイプ
I_KONTO = SPACE " 開始勘定タイプ
I_MONAT = W_MONAT " 会計期間
EXCEPTIONS
ERROR_PERIOD = 1
ERROR_PERIOD_ACC = 2
OTHERS = 3.
Period Check Failure
IF SY-SUBRC <> 0.
MESSAGE ID CNS_MID1
TYPE CNS_E
NUMBER CNS_023
WITH P_GJAHR
P_MONAT
WA_BUKRS.
ENDIF.
Company Code Range Value
WA_SEL_BUKRS-LOW = WA_BUKRS.
APPEND WA_SEL_BUKRS TO IT_SEL_BUKRS.
ENDLOOP.
Asset Cancellation without Lease Details
IF RA_CAN IS NOT INITIAL AND
( S_LEAFI[] IS INITIAL OR
S_LVTNR1[] IS INITIAL OR
S_LVTNR2[] IS INITIAL ).
CLEAR : W_MSG.
IF S_LEAFI[] IS INITIAL.
W_MSG = TEXT-019.
ENDIF.
IF S_LVTNR1[] IS INITIAL.
CONCATENATE TEXT-021
W_MSG
INTO W_MSG
SEPARATED BY SPACE.
ENDIF.
IF S_LVTNR2[] IS INITIAL.
CONCATENATE TEXT-022
W_MSG
INTO W_MSG
SEPARATED BY SPACE.
ENDIF.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_033
WITH W_MSG.
ENDIF.
Both Local & Unix File given
IF P_UFILE IS NOT INITIAL AND
P_LFILE IS NOT INITIAL .
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_000
WITH TEXT-031.
Both Local & Unix File not given
ELSEIF P_UFILE IS INITIAL AND
P_LFILE IS INITIAL .
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_000
WITH TEXT-032.
ENDIF.
Background Execution Without Unix File Input
IF SY-BATCH = CNS_X AND
P_UFILE IS INITIAL.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_011
WITH TEXT-042.
ENDIF.
Unix File Directory Check
IF P_UFILE IS NOT INITIAL.
CLEAR : W_UFILE.
パラメータチェック
PERFORM CHECK_PARAMETERS USING P_UFILE
CHANGING W_UFILE.
ELSEIF P_LFILE IS NOT INITIAL.
PERFORM CHECK_PC_DIRECTORY USING P_LFILE.
ENDIF.
G/L Account Number Input Incomplete( Registration )
IF RA_REG = CNS_X.
IF ( P_KCODE1 IS INITIAL AND
P_KCODE2 IS NOT INITIAL ) OR
( P_KCODE2 IS INITIAL AND
P_KCODE1 IS NOT INITIAL ) .
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_000
WITH TEXT-038.
G/L Account Numbers Existence Check
ELSEIF P_KCODE1 IS NOT INITIAL AND
P_KCODE2 IS NOT INITIAL .
CLEAR : W_SAKNR,
FLG_KCODE.
SELECT SINGLE SAKNR FROM SKB1 INTO W_SAKNR
WHERE SAKNR = P_KCODE1 AND
BUKRS IN IT_SEL_BUKRS.
G/L Account Number Check Failure
IF SY-SUBRC <> 0.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_000
WITH P_KCODE1
TEXT-039.
ENDIF.
G/L Account Numbers Existence Check
CLEAR : W_SAKNR.
SELECT SINGLE SAKNR FROM SKB1 INTO W_SAKNR
WHERE SAKNR = P_KCODE2 AND
BUKRS IN IT_SEL_BUKRS.
G/L Account Number Check Failure
IF SY-SUBRC <> 0.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_000
WITH P_KCODE2
TEXT-039.
ENDIF.
G/L Account Numbers Input Check
FLG_KCODE = CNS_X.
ENDIF.
ENDIF.
IF RA_REG = CNS_X.
ZTFI0023 Records Extraction for Asset Registration
SELECT * FROM ZTFI0023 INTO TABLE IT_FI0023
WHERE ZZBUKRS IN IT_SEL_BUKRS AND
ZZANLN1 = SPACE AND
ZZLEAFI IN S_LEAFI AND
ZZLVTNR1 IN S_LVTNR1 AND
ZZLVTNR2 IN S_LVTNR2.
Asset Cancellation Process
ELSE.
ZTFI0023 Records Extraction for Asset Cancellation
SELECT * FROM ZTFI0023 INTO TABLE IT_FI0023
WHERE ZZBUKRS IN IT_SEL_BUKRS AND
ZZANLN1 <> SPACE AND
ZZLEAFI IN S_LEAFI AND
ZZLVTNR1 IN S_LVTNR1 AND
ZZLVTNR2 IN S_LVTNR2.
ENDIF.
ZTFI0023 Records Extraction Failure
IF SY-SUBRC <> 0.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_009.
ENDIF.
ZTFI0024 Records Extraction
SELECT * FROM ZTFI0024 INTO TABLE IT_FI0024
FOR ALL ENTRIES IN IT_FI0023
WHERE ZZBUKRS = IT_FI0023-ZZBUKRS AND
ZZLEAFI = IT_FI0023-ZZLEAFI AND
ZZLEYM = IT_FI0023-ZZLEYM AND
ZZLVTNR1 = IT_FI0023-ZZLVTNR1 AND
ZZLVTNR2 = IT_FI0023-ZZLVTNR2 .
ZTFI0024 Records Extraction Failure
IF SY-SUBRC <> 0.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_009.
ENDIF.
ENDFORM. " CHECK_FIELDS
&----
*& Form PROCESS_FIELDS
&----
Processing( Asset Register/Cancel ) the Lease Data
----
FORM PROCESS_FIELDS .
Background Execution Without Unix File Input
IF SY-BATCH = CNS_X AND
P_UFILE IS INITIAL.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_011
WITH TEXT-042.
ENDIF.
Unix File Existence Check
IF P_UFILE IS NOT INITIAL.
PERFORM UFILE_CHECK.
Local File Existence Check
ELSE.
PERFORM LFILE_CHECK.
ENDIF.
CLEAR : IT_ERROR,
WA_ERROR.
Locking ZTFI0023 & ZTFI0024 tables
PERFORM ENQUEUE_ZTFI0023.
PERFORM ENQUEUE_ZTFI0024.
Asset Registration Process
IF RA_REG = CNS_X.
CLEAR : W_INDEX_23,
W_INDEX_24,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
PERFORM POSTING_PERIOD_CHECK.
Processing ZTFI0023 Records
LOOP AT IT_FI0023 INTO WA_FI0023.
ZTFI0023 Record Index
W_INDEX_23 = SY-TABIX.
ZTFI0023 Record : Asset Master Creation(AS01)
PERFORM BDC_AS01_FI0023.
ZTFI0023 Record : Asset Master Creation(AS01) Incomplete
IF FLG_ERROR = CNS_X.
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
ENDIF.
Processing ZTFI0024 Records correspond to ZTFI0023 Record
CLEAR : WA_FI0024,
W_INDEX_24.
LOOP AT IT_FI0024 INTO WA_FI0024
WHERE ZZBUKRS = WA_FI0023-ZZBUKRS AND
ZZLEAFI = WA_FI0023-ZZLEAFI AND
ZZLEYM = WA_FI0023-ZZLEYM AND
ZZLVTNR1 = WA_FI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_FI0023-ZZLVTNR2 .
ZTFI0024 Record Index
W_INDEX_24 = SY-TABIX.
ZTFI0024 Record : Asset Master Creation(AS01)
PERFORM BDC_AS01_FI0024.
ZTFI0023 Record : Asset Master Creation(AS01) Incomplete
IF FLG_ERROR = CNS_X.
No Further Asset Master Creation for ZTFI0024 Records
EXIT.
ENDIF.
CLEAR : W_INDEX_24.
ENDLOOP.
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
ENDIF.
CLEAR : WA_FI0027,
WA_SKB1.
G/L Account Number for Company Code
SELECT SINGLE * FROM ZTFI0027 INTO WA_FI0027
WHERE ZZBUKRS = WA_FI0023-ZZBUKRS.
G/L Account Master(company code) Data
SELECT SINGLE * FROM SKB1 INTO WA_SKB1
WHERE BUKRS = WA_FI0023-ZZBUKRS AND
MWSKZ = CNS_LT.
CLEAR : WA_FI0024,
W_INDEX_24.
ZTFI0024 Record : Post Account Document for Asset(FB01) Created
LOOP AT IT_FI0024 INTO WA_FI0024
WHERE ZZBUKRS = WA_FI0023-ZZBUKRS AND
ZZLEAFI = WA_FI0023-ZZLEAFI AND
ZZLEYM = WA_FI0023-ZZLEYM AND
ZZLVTNR1 = WA_FI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_FI0023-ZZLVTNR2 .
ZTFI0024 Record Index
W_INDEX_24 = SY-TABIX.
CLEAR : IT_PARAM,
IT_RETURN,
WA_PARAM,
WA_RETURN.
ZTFI0024 Record : Post Account Document(FB01) for Asset Batch Input Data
PERFORM SET_PARAM_24.
ZTFI0024 Record : FB01 Batch Input Execution ( through program 'ZFI00I0010' )
PERFORM SUBMIT_ZFI00I0010.
ZTFI0024 Record : Post Account Document(FB01) for Asset Batch Input Result
PERFORM GET_RETURN_24.
ZTFI0024 Record : Account Document Posting(FB01) Incomplete
IF FLG_ERROR = CNS_X.
No Further Posting for ZTFI0024 Records
EXIT.
ENDIF.
CLEAR : W_INDEX_24.
ENDLOOP.
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
ENDIF.
CLEAR : IT_BDCDATA,
IT_MESSTAB.
ZTFI0023 Record : Post Account Document(FB01) for Asset Batch Input Data
IF WA_FI0023-ZZACCT = CNS_2 AND
FLG_KCODE = CNS_X .
PERFORM BDC_FB01_FI0023_2.
ELSE.
PERFORM BDC_FB01_FI0023_1.
ENDIF.
ZTFI0023 Record : Post Account Document(FB01) Batch Input Execution
PERFORM BDC_FB01_23_EXEC.
ZTFI0023 Record : Post Account Document(FB01) Incomplete
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
ENDIF.
CLEAR : FLG_ABSO.
IF WA_FI0023-ZZLBARW IS NOT INITIAL AND
WA_FI0023-ZZACCT <> CNS_2.
ZTFI0023 Record : Asset Miscellaneous Transactions(ABSO) Process
PERFORM BDC_ABSO_FI0023 USING CNS_Z22
WA_FI0023-ZZLBARW
TEXT-002.
ZTFI0023 Record : Asset Miscellaneous Transactions(ABSO) Incompete
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
ENDIF.
ENDIF.
IF WA_FI0023-ZZCONTAX IS NOT INITIAL.
PERFORM BDC_ABSO_FI0023 USING CNS_Z23
WA_FI0023-ZZCONTAX
TEXT-003.
ZTFI0023 Record : Asset Miscellaneous Transactions(ABSO) Incompete
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
ENDIF.
ENDIF.
IF WA_FI0023-ZZKZINW IS NOT INITIAL AND
WA_FI0023-ZZACCT <> CNS_2.
PERFORM BDC_ABSO_FI0023 USING CNS_Z24
WA_FI0023-ZZKZINW
TEXT-004.
ZTFI0023 Record : Asset Miscellaneous Transactions(ABSO) Incompete
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
ENDIF.
ENDIF.
ZTFI0023 Record : Asset Miscellaneous Transactions(ABSO) Inompete
IF FLG_ABSO = CNS_X.
MODIFY ZTFI0023 FROM WA_FI0023.
Database Update Failure
IF SY-SUBRC <> 0.
CLEAR : W_MSG.
CONCATENATE TEXT-034
CNS_ABSO
TEXT-035
INTO W_MSG
SEPARATED BY SPACE.
PERFORM SET_ERROR USING TEXT-033
W_MSG
SPACE.
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
Successful Database Update
ELSE.
COMMIT WORK.
ENDIF.
ENDIF.
CLEAR : W_INDEX_24,
WA_FI0024,
FLG_ABSO.
Processing ZTFI0024 Records
LOOP AT IT_FI0024 INTO WA_FI0024
WHERE ZZBUKRS = WA_FI0023-ZZBUKRS AND
ZZLEAFI = WA_FI0023-ZZLEAFI AND
ZZLEYM = WA_FI0023-ZZLEYM AND
ZZLVTNR1 = WA_FI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_FI0023-ZZLVTNR2 .
ZTFI0024 Record Index
W_INDEX_24 = SY-TABIX.
CLEAR : FLG_ABSO.
ZTFI0024 Record : Asset Miscellaneous Transactions(ABSO) Process
IF WA_FI0024-ZZMAINTE IS NOT INITIAL AND
WA_FI0023-ZZACCT <> CNS_2.
PERFORM BDC_ABSO_FI0024 USING CNS_Z25
WA_FI0024-ZZMAINTE
TEXT-005.
ZTFI0024 Record : Asset Miscellaneous Transactions(ABSO) Incomplete
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0024 Records
EXIT.
ENDIF.
ENDIF.
IF WA_FI0024-ZZLGADV IS NOT INITIAL AND
WA_FI0023-ZZACCT <> CNS_2.
PERFORM BDC_ABSO_FI0024 USING CNS_Z26
WA_FI0024-ZZLGADV
TEXT-006.
ZTFI0024 Record : Asset Miscellaneous Transactions(ABSO) Incomplete
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0024 Records
EXIT.
ENDIF.
ENDIF.
ZTFI0024 Record : Asset Miscellaneous Transactions(ABSO) Process Complete
IF FLG_ABSO = CNS_X.
MODIFY ZTFI0024 FROM WA_FI0024.
Database Update Failure
IF SY-SUBRC <> 0.
CLEAR : W_MSG.
CONCATENATE TEXT-034
CNS_ABSO
TEXT-035
INTO W_MSG
SEPARATED BY SPACE.
PERFORM SET_ERROR USING TEXT-033
W_MSG
WA_FI0024-ZZINVNR_ANLA.
CLEAR : W_INDEX_24,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
CONTINUE.
Successful Database Update
ELSE.
COMMIT WORK.
ENDIF.
ENDIF.
CLEAR : W_INDEX_24,
FLG_ABSO.
ENDLOOP.
CLEAR : W_INDEX_23,
FLG_ERROR,
WA_FI0027,
WA_SKB1.
ENDLOOP.
Asset Cancellation Process
ELSEIF RA_CAN = CNS_X.
CLEAR : FLG_ERROR,
W_INDEX_23,
W_INDEX_24.
PERFORM POSTING_PERIOD_CHECK.
CLEAR : WA_FI0023,
W_INDEX_23,
W_INDEX_24,
W_CURRENT,
IT_ANEP,
WA_ANEP,
FLG_ERROR.
Processing ZTFI0023 Records
LOOP AT IT_FI0023 INTO WA_FI0023.
ZTFI0023 Record Index
W_INDEX_23 = SY-TABIX.
CLEAR : WA_FI0024,
W_INDEX_24.
Processing ZTFI0024 Records
LOOP AT IT_FI0024 INTO WA_FI0024
WHERE ZZBUKRS = WA_FI0023-ZZBUKRS AND
ZZLEAFI = WA_FI0023-ZZLEAFI AND
ZZLEYM = WA_FI0023-ZZLEYM AND
ZZLVTNR1 = WA_FI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_FI0023-ZZLVTNR2 .
ZTFI0024 Record Index
W_INDEX_24 = SY-TABIX.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_FI0024-ZZANLN1
IMPORTING
OUTPUT = WA_FI0024-ZZANLN1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_FI0023-ZZANLN2
IMPORTING
OUTPUT = WA_FI0023-ZZANLN2.
Asset Line Items for ZTFI0024 Record
SELECT AFABE BWASL FROM ANEP INTO TABLE IT_ANEP
WHERE BUKRS = WA_FI0024-ZZBUKRS AND
ANLN1 = WA_FI0024-ZZANLN1 AND
ANLN2 = WA_FI0023-ZZANLN2 AND
AFABE <> CNS_15.
Asset Line Item Reverse Process(AB08) for ZTFI0024 Records
PERFORM BDC_AB08_FI0024.
Asset Line Item Reverse Process(AB08) Incomplete
IF FLG_ERROR = CNS_X.
No Further Reverse Process for ZTFI0024 Records
EXIT.
ENDIF.
ENDLOOP.
Asset Line Item Reverse Process(AB08) Incomplete
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : IT_ANEP,
WA_FI0023,
WA_ANEP,
W_INDEX_23,
W_INDEX_24,
W_CURRENT,
FLG_ERROR.
CONTINUE.
ENDIF.
CLEAR : W_CURRENT,
IT_ANEP,
WA_ANEP.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = WA_FI0023-ZZANLN1
IMPORTING
OUTPUT = WA_FI0023-ZZANLN1.
Asset Line Items for ZTFI0024 Record
SELECT AFABE BWASL FROM ANEP INTO TABLE IT_ANEP
WHERE BUKRS = WA_FI0023-ZZBUKRS AND
ANLN1 = WA_FI0023-ZZANLN1 AND
ANLN2 = WA_FI0023-ZZANLN2.
Asset Line Item Reverse Process(AB08) for ZTFI0023 Record
PERFORM BDC_AB08_FI0023.
Asset Line Item Reverse Process(AB08) Incomplte
IF FLG_ERROR = CNS_X.
No Further Process for ZTFI0023 Record
CLEAR : IT_ANEP,
WA_FI0023,
WA_ANEP,
W_INDEX_23,
W_INDEX_24,
W_CURRENT,
FLG_ERROR.
CONTINUE.
ENDIF.
Asset Account Document Reversing Process(FB08) for ZTFI0023 Record
PERFORM BDC_CALL_FB08 USING WA_FI0023-ZZBELNR96_FI
SPACE.
CLEAR : IT_ANEP,
WA_FI0023,
WA_ANEP,
W_INDEX_23,
W_INDEX_24,
W_CURRENT,
FLG_ERROR.
ENDLOOP.
ENDIF.
Unlocking ZTFI0023 & ZTFI0024 tables
PERFORM DEQUEUE_ZTFI0023.
PERFORM DEQUEUE_ZTFI0024.
Error Records Existence Check
IF IT_ERROR IS NOT INITIAL.
*--- ダウンロードファイルヘッダ(正常データ)
IF WA_COL_TXT IS NOT INITIAL.
Error Record Header
INSERT WA_COL_TXT INTO IT_ERROR INDEX CNS_1.
ENDIF.
IF P_UFILE IS NOT INITIAL.
Error Records Download : Unix File
PERFORM ERR_DOWNLOAD_UFILE.
ELSE.
Error Records Download : Local File
PERFORM ERR_DOWNLOAD_LFILE.
ENDIF.
ENDIF.
Process Completion Indication
MESSAGE ID CNS_MID3
TYPE CNS_S
NUMBER CNS_000
WITH TEXT-026.
ENDFORM. " PROCESS_FIELDS
&----
*& Form CHECK_PARAMETERS
&----
パラメータチェック
----
FORM CHECK_PARAMETERS USING P_FPATH TYPE C
CHANGING P_FNAME TYPE C.
DATA: L_CHK_PATH TYPE STRING.
入力ファイル名の編集,チェック
CLEAR: L_CHK_PATH.
L_CHK_PATH = P_FPATH.
REPLACE CNS_AMP WITH SY-SYSID INTO L_CHK_PATH.
REPLACE CNS_$ WITH SY-MANDT INTO L_CHK_PATH.
CONDENSE L_CHK_PATH NO-GAPS.
CALL FUNCTION 'Z_ZMA1_UNIX_DIR_CHECK'
EXPORTING
I_FILEPATH = L_CHK_PATH
I_S_KBN = CNS_1
EXCEPTIONS
H_MODULE_ERROR = 1
MASTER_ERROR = 2
UNIX_PATH_ERROR = 3
PARAMETER_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID
TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4.
ENDIF.
P_FNAME = L_CHK_PATH.
ENDFORM. " CHECK_PARAMETERS
&----
*& Form BDC_AS01_FI0023
&----
AS01 : BDC Execution : ZTFI0023 Record
----
FORM BDC_AS01_FI0023.
DATA : W_LEGEB_T TYPE ZTFI0023-ZZLEGEB.
CLEAR : IT_BDCDATA,
IT_MESSTAB.
Initial Screen
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0105'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'ANLA-ANLKL'
CNS_2800.
PERFORM BDC_FIELD USING 'ANLA-BUKRS'
WA_FI0023-ZZBUKRS.
PERFORM BDC_FIELD USING 'RA02S-NASSETS'
CNS_1.
General Data tab
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB02'.
PERFORM BDC_FIELD USING 'ANLA-TXT50'
WA_FI0023-ZZTXA50_ANLT.
PERFORM BDC_FIELD USING 'ANLA-INVNR'
WA_FI0023-ZZINVNR_ANLA.
Time-dependent Data tab
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB07'.
PERFORM BDC_FIELD USING 'ANLZ-KOSTL'
WA_FI0023-ZZKOSTL.
Leasing Date tab
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB08'.
PERFORM BDC_FIELD USING 'ANLA-LEAFI'
WA_FI0023-ZZLEAFI.
PERFORM BDC_FIELD USING 'ANLA-LVTNR'
WA_FI0023-ZZLVTNR1.
PERFORM BDC_FIELD USING 'ANLA-LVDAT'
WA_FI0023-ZZLVDAT.
PERFORM BDC_FIELD USING 'ANLA-LKDAT'
WA_FI0023-ZZLKDAT.
PERFORM BDC_FIELD USING 'ANLA-LEABG'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'ANLA-LEJAR'
WA_FI0023-ZZLEJAR.
PERFORM BDC_FIELD USING 'ANLA-LEPER'
WA_FI0023-ZZLEPER.
PERFORM BDC_FIELD USING 'ANLA-LEART'
WA_FI0023-ZZLEART.
CLEAR : W_LEANZ,
W_FVAL.
W_LEANZ = ( WA_FI0023-ZZLEJAR * 12 ) + WA_FI0023-ZZLEPER.
W_FVAL = W_LEANZ.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'ANLA-LEANZ'
W_FVAL.
PERFORM BDC_FIELD USING 'ANLA-LRYTH'
CNS_001.
CLEAR : W_FVAL,
W_LEGEB_T.
W_LEGEB_T = WA_FI0023-ZZLEGEB.
W_LEGEB_T = W_LEGEB_T / 100.
WRITE W_LEGEB_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'ANLA-LEGEB'
W_FVAL.
CLEAR : W_FVAL.
W_FVAL = WA_FI0023-ZZLZINS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'ANLA-LZINS'
W_FVAL.
Deprec. Areas Data tab & Final Screen
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
IF WA_FI0023-ZZACCT = CNS_1 AND
WA_FI0023-ZZINTEREST = CNS_1.
PERFORM BDC_AS01_DEPR_AREA USING CNS_ZLS2
CNS_ZZ00
CNS_0000
WA_FI0023-ZZLEJAR.
ENDIF.
IF WA_FI0023-ZZACCT = CNS_1 AND
WA_FI0023-ZZINTEREST = CNS_2.
PERFORM BDC_AS01_DEPR_AREA USING CNS_ZZ00
CNS_ZZ00
CNS_0000
WA_FI0023-ZZLEJAR.
ENDIF.
IF WA_FI0023-ZZACCT = CNS_1 AND
WA_FI0023-ZZINTEREST = CNS_3.
PERFORM BDC_AS01_DEPR_AREA USING CNS_ZZ00
CNS_ZZ00
CNS_ZZ00
WA_FI0023-ZZLEJAR.
ENDIF.
IF WA_FI0023-ZZACCT = CNS_2.
PERFORM BDC_AS01_DEPR_AREA USING CNS_ZZ00
CNS_0000
CNS_0000
WA_FI0023-ZZLEJAR.
ENDIF.
CLEAR : IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_AS01
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
Asset Creation Confirmation
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_AA
MSGNR = CNS_228.
IF SY-SUBRC = 0.
Successful Asset Creation
CONDENSE WA_MESSTAB-MSGV1.
CONDENSE WA_MESSTAB-MSGV2.
WA_FI0023-ZZANLN1 = WA_MESSTAB-MSGV1.
WA_FI0023-ZZANLN2 = WA_MESSTAB-MSGV2.
WA_FI0023-ZZAENAM = SY-UNAME.
WA_FI0023-ZZUPDAT = SY-DATUM.
WA_FI0023-ZZUPTIM = SY-UZEIT.
MODIFY IT_FI0023 FROM WA_FI0023 INDEX W_INDEX_23
TRANSPORTING ZZANLN1
ZZANLN2
ZZAENAM
ZZUPDAT
ZZUPTIM.
MODIFY ZTFI0023 FROM WA_FI0023.
Database Update Failure
IF SY-SUBRC <> 0.
CLEAR : W_MSG.
CONCATENATE TEXT-034
CNS_AS01
WA_FI0023-ZZANLN1
TEXT-035
INTO W_MSG
SEPARATED BY SPACE.
PERFORM SET_ERROR USING TEXT-033
W_MSG
SPACE.
FLG_ERROR = CNS_X.
Successful Database Update
ELSE.
COMMIT WORK.
ENDIF.
ELSE.
Asset Creation Failure
CLEAR : WA_MESSTAB,
WA_ERROR.
WA_ERROR-APPL = CNS_AS01.
WA_ERROR-AREA = TEXT-010.
WA_ERROR-ZZBUKRS = WA_FI0023-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0023-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0023-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0023-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0023-ZZLVTNR2.
Error Message
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
CALL Transaction failure
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
ENDIF.
ENDFORM. " BDC_AS01_FI0023
&----
*& Form BDC_DYNPRO
&----
BDC Data( Screens ) Generation
----
FORM BDC_DYNPRO USING PROGRAM TYPE C
DYNPRO TYPE N.
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = CNS_X.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM. "BDC_DYNPRO
&----
*& Form BDC_FIELD
&----
BDC Data( Screen Fields ) Generation
----
FORM BDC_FIELD USING FNAM TYPE C
FVAL TYPE ANY.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM. "BDC_FIELD
&----
*& Form BDC_AS01_FI0024
&----
AS01 : BDC Execution : ZTFI0024 Record
----
FORM BDC_AS01_FI0024.
CLEAR : IT_BDCDATA,
IT_MESSTAB.
Initial Screen
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0105'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'ANLA-ANLKL'
WA_FI0024-ZZANLKL.
PERFORM BDC_FIELD USING 'ANLA-BUKRS'
WA_FI0024-ZZBUKRS.
PERFORM BDC_FIELD USING 'RA02S-NASSETS'
CNS_001.
General Data tab
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB02'.
PERFORM BDC_FIELD USING 'ANLA-TXT50'
WA_FI0024-ZZTXA50_ANLT.
PERFORM BDC_FIELD USING 'ANLA-INVNR'
WA_FI0024-ZZINVNR_ANLA.
Time-dependent Data tab
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB07'.
PERFORM BDC_FIELD USING 'ANLZ-KOSTL'
WA_FI0024-ZZKOSTL.
Leasing Date tab
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB08'.
PERFORM BDC_FIELD USING 'ANLA-LEAFI'
WA_FI0024-ZZLEAFI.
PERFORM BDC_FIELD USING 'ANLA-LVTNR'
WA_FI0024-ZZLVTNR1.
Deprec. Areas Data tab & Final Screen
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
PERFORM BDC_FIELD USING 'ANLB-AFASL(01)'
CNS_ZZ00.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(01)'
WA_FI0023-ZZLEJAR.
PERFORM BDC_FIELD USING 'ANLB-AFASL(02)'
CNS_ZZ00.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(02)'
WA_FI0023-ZZLEJAR.
PERFORM BDC_FIELD USING 'ANLB-AFASL(03)'
CNS_ZZ00.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(03)'
WA_FI0023-ZZLEJAR.
PERFORM BDC_FIELD USING 'ANLB-AFASL(04)'
CNS_ZZ00.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(04)'
WA_FI0023-ZZLEJAR.
CLEAR : IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_AS01
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
Asset Creation Confirmation
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_AA
MSGNR = CNS_228.
IF SY-SUBRC = 0.
Successful Asset Creation
CONDENSE WA_MESSTAB-MSGV1.
WA_FI0024-ZZANLN1 = WA_MESSTAB-MSGV1.
WA_FI0024-ZZAENAM = SY-UNAME.
WA_FI0024-ZZUPDAT = SY-DATUM.
WA_FI0024-ZZUPTIM = SY-UZEIT.
MODIFY IT_FI0024 FROM WA_FI0024 INDEX W_INDEX_24
TRANSPORTING ZZANLN1
ZZAENAM
ZZUPDAT
ZZUPTIM.
MODIFY ZTFI0024 FROM WA_FI0024.
Database Update Failure
IF SY-SUBRC <> 0.
CLEAR : W_MSG.
CONCATENATE TEXT-034
CNS_AS01
WA_FI0024-ZZANLN1
TEXT-035
INTO W_MSG
SEPARATED BY SPACE.
PERFORM SET_ERROR USING TEXT-033
W_MSG
WA_FI0024-ZZINVNR_ANLA.
FLG_ERROR = CNS_X.
Successful Database Update
ELSE.
COMMIT WORK.
ENDIF.
Asset Creation Failure
ELSE.
CLEAR : WA_MESSTAB,
WA_ERROR.
WA_ERROR-APPL = CNS_AS01.
WA_ERROR-AREA = TEXT-011.
WA_ERROR-ZZBUKRS = WA_FI0024-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0024-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0024-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0024-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0024-ZZLVTNR2.
WA_ERROR-ZZINVNR_ANLA = WA_FI0024-ZZINVNR_ANLA.
Error Message
READ TABLE IT_MESSTAB INTO WA_MESSTAB WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
CALL Transaction failure
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
ENDIF.
ENDFORM. " BDC_AS01_FI0024
&----
*& Form ENQUEUE_ZTFI0023
&----
Locking the table ZTFI0023
----
FORM ENQUEUE_ZTFI0023 .
CALL FUNCTION 'ENQUEUE_EZ_ZTFI0023'
EXPORTING
MODE_ZTFI0023 = CNS_E
ZZMANDT = SY-MANDT
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
PERFORM LOCK_ERROR USING TEXT-010.
ENDIF.
ENDFORM. " ENQUEUE_ZTFI0023
&----
*& Form DEQUEUE_ZTFI0023
&----
Unlocking the table ZTFI0023
----
FORM DEQUEUE_ZTFI0023 .
CALL FUNCTION 'DEQUEUE_EZ_ZTFI0023'
EXPORTING
MODE_ZTFI0023 = CNS_E
ZZMANDT = SY-MANDT.
ENDFORM. " DEQUEUE_ZTFI0023
&----
*& Form ENQUEUE_ZTFI0024
&----
Locking the table ZTFI0024
----
FORM ENQUEUE_ZTFI0024 .
CALL FUNCTION 'ENQUEUE_EZ_ZTFI0024'
EXPORTING
MODE_ZTFI0024 = CNS_E
ZZMANDT = SY-MANDT
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
PERFORM LOCK_ERROR USING TEXT-011.
ENDIF.
ENDFORM. " ENQUEUE_ZTFI0024
&----
*& Form DEQUEUE_ZTFI0024
&----
Unlocking the table ZTFI0024
----
FORM DEQUEUE_ZTFI0024 .
CALL FUNCTION 'DEQUEUE_EZ_ZTFI0024'
EXPORTING
MODE_ZTFI0024 = CNS_E
ZZMANDT = SY-MANDT.
ENDFORM. " ENQUEUE_ZTFI0024
&----
*& Form SUBMIT_ZFI00I0010
&----
伝票転記登録(ZFI00I0010)起動
----
FORM SUBMIT_ZFI00I0010.
*-- 入力パラメータテーブルをメモリへセット
FREE MEMORY ID CNS_MEMID. "ABAPメモリの解放
EXPORT T_PARM = IT_PARAM TO MEMORY ID CNS_MEMID.
*-- 起動
SUBMIT ZFI00I0010 WITH P_MEMORY = CNS_MEMID "受け渡し用ABAPメモリID
WITH P_MODE = W_BDC_MODE "ZFI00I0010でのB/Iモード
AND RETURN. "呼び元に処理を戻す
*-- メモリから戻りパラメータテーブルへセット
IMPORT T_RETURN = IT_RETURN FROM MEMORY ID CNS_MEMID.
FREE MEMORY ID CNS_MEMID. "SAPメモリの解放
ENDFORM. " SUBMIT_ZFI00I0010
&----
*& Form BDC_ABSO_FI0023
&----
ABSO : BDC Execution : ZTFI0023 Record
----
-->P_TORIHIKI Asset transaction type
-->P_AMT Amount
-->P_TEXT G/L Account Item Text
----
FORM BDC_ABSO_FI0023 USING P_TORIHIKI TYPE CHAR03
P_AMT TYPE ANBZ-DMBTR
P_TEXT TYPE C.
DATA : P_AMT_T TYPE ANBZ-DMBTR.
CLEAR : IT_BDCDATA,
IT_MESSTAB,
W_SGTXT.
CONCATENATE P_TEXT
WA_FI0023-ZZLEAFI(10)
WA_FI0023-ZZLEYM(6)
WA_FI0023-ZZLVTNR1(10)
INTO W_SGTXT.
Initial Screen
PERFORM BDC_DYNPRO USING 'SAPMA01B' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'ANBZ-BUKRS'
WA_FI0023-ZZBUKRS.
PERFORM BDC_FIELD USING 'ANBZ-ANLN1'
WA_FI0023-ZZANLN1.
PERFORM BDC_FIELD USING 'ANBZ-ANLN2'
WA_FI0023-ZZANLN2.
PERFORM BDC_FIELD USING 'ANEK-BLDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'ANEK-BUDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'ANBZ-BWASL'
P_TORIHIKI.
Goods Receipt Screen
PERFORM BDC_DYNPRO USING 'SAPMA01B' '0110'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPDA'.
CLEAR : W_FVAL,
P_AMT_T.
P_AMT_T = P_AMT.
P_AMT_T = P_AMT_T / 100.
WRITE P_AMT_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'ANBZ-DMBTR'
W_FVAL.
PERFORM BDC_FIELD USING 'ANBZ-BZDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'ANEK-SGTXT'
W_SGTXT.
CLEAR : IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_ABSO
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_AA
MSGNR = CNS_367.
IF SY-SUBRC = 0.
WA_FI0023-ZZAENAM = SY-UNAME.
WA_FI0023-ZZUPDAT = SY-DATUM.
WA_FI0023-ZZUPTIM = SY-UZEIT.
FLG_ABSO = 'X'.
IF P_TORIHIKI = CNS_Z22.
WA_FI0023-ZZBELNR92_AA = WA_MESSTAB-MSGV1.
MODIFY IT_FI0023 FROM WA_FI0023 INDEX W_INDEX_23
TRANSPORTING ZZBELNR92_AA
ZZAENAM
ZZUPDAT
ZZUPTIM.
ELSEIF P_TORIHIKI = CNS_Z23.
WA_FI0023-ZZBELNR96_AA = WA_MESSTAB-MSGV1.
MODIFY IT_FI0023 FROM WA_FI0023 INDEX W_INDEX_23
TRANSPORTING ZZBELNR96_AA
ZZAENAM
ZZUPDAT
ZZUPTIM.
ELSEIF P_TORIHIKI = CNS_Z24.
WA_FI0023-ZZBELNR97_AA = WA_MESSTAB-MSGV1.
MODIFY IT_FI0023 FROM WA_FI0023 INDEX W_INDEX_23
TRANSPORTING ZZBELNR97_AA
ZZAENAM
ZZUPDAT
ZZUPTIM.
ENDIF.
ELSE.
WA_ERROR-APPL = CNS_ABSO.
WA_ERROR-AREA = TEXT-010.
WA_ERROR-ZZBUKRS = WA_FI0023-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0023-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0023-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0023-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0023-ZZLVTNR2.
CLEAR : WA_MESSTAB,
WA_ERROR.
READ TABLE IT_MESSTAB INTO WA_MESSTAB WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
ENDIF.
ENDFORM. " BDC_ABSO_FI0023
&----
*& Form BDC_ABSO_FI0024
&----
ABSO : BDC Execution : ZTFI0024 Record
----
-->P_TORIHIKI Asset transaction type
-->P_AMT Amount
-->P_TEXT G/L Account Item Text
----
FORM BDC_ABSO_FI0024 USING P_TORIHIKI TYPE CHAR03
P_AMT TYPE ANBZ-DMBTR
P_TEXT TYPE C.
DATA : P_AMT_T TYPE ANBZ-DMBTR.
CLEAR : IT_BDCDATA,
IT_MESSTAB,
W_SGTXT.
CONCATENATE P_TEXT
WA_FI0024-ZZLEAFI(10)
WA_FI0024-ZZLEYM(6)
WA_FI0024-ZZLVTNR1(10)
INTO W_SGTXT.
RECORDED CODE
Initial Screen
PERFORM BDC_DYNPRO USING 'SAPMA01B' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'ANBZ-BUKRS'
WA_FI0023-ZZBUKRS.
PERFORM BDC_FIELD USING 'ANBZ-ANLN1'
WA_FI0024-ZZANLN1.
PERFORM BDC_FIELD USING 'ANBZ-ANLN2'
WA_FI0023-ZZANLN2.
PERFORM BDC_FIELD USING 'ANEK-BLDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'ANEK-BUDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'ANBZ-BWASL'
P_TORIHIKI.
Goods Receipt Screen
PERFORM BDC_DYNPRO USING 'SAPMA01B' '0110'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPDA'.
CLEAR : W_FVAL,
P_AMT_T.
P_AMT_T = P_AMT.
P_AMT_T = P_AMT_T / 100.
WRITE P_AMT_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0024-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'ANBZ-DMBTR'
W_FVAL.
PERFORM BDC_FIELD USING 'ANBZ-BZDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'ANEK-SGTXT'
W_SGTXT.
CLEAR : IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_ABSO
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_AA
MSGNR = CNS_367.
IF SY-SUBRC = 0.
WA_FI0024-ZZAENAM = SY-UNAME.
WA_FI0024-ZZUPDAT = SY-DATUM.
WA_FI0024-ZZUPTIM = SY-UZEIT.
FLG_ABSO = CNS_X.
IF P_TORIHIKI = CNS_Z25.
WA_FI0024-ZZBELNR98_AA = WA_MESSTAB-MSGV1.
MODIFY IT_FI0024 FROM WA_FI0024 INDEX W_INDEX_24
TRANSPORTING ZZBELNR98_AA
ZZAENAM
ZZUPDAT
ZZUPTIM.
ELSEIF P_TORIHIKI = CNS_Z26.
WA_FI0024-ZZBELNR99_AA = WA_MESSTAB-MSGV1.
MODIFY IT_FI0024 FROM WA_FI0024 INDEX W_INDEX_24
TRANSPORTING ZZBELNR99_AA
ZZAENAM
ZZUPDAT
ZZUPTIM.
ENDIF.
ELSE.
WA_ERROR-APPL = CNS_ABSO.
WA_ERROR-AREA = TEXT-011.
WA_ERROR-ZZBUKRS = WA_FI0024-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0024-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0024-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0024-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0024-ZZLVTNR2.
WA_ERROR-ZZINVNR_ANLA = WA_FI0024-ZZINVNR_ANLA.
CLEAR : WA_MESSTAB,
WA_ERROR.
READ TABLE IT_MESSTAB INTO WA_MESSTAB WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
ENDIF.
ENDFORM. " BDC_ABSO_FI0024
&----
*& Form SET_PARAM_24
&----
SUBMIT(ZFI00I0010) : Data Mapping : ZTFI0024 Record
----
FORM SET_PARAM_24 .
WA_PARAM-ZZBLDAT = WA_FI0023-ZZLEABG.
WA_PARAM-ZZBUDAT = WA_FI0023-ZZLEABG.
WA_PARAM-ZZBUKRS = WA_FI0023-ZZBUKRS.
WA_PARAM-ZZWAERS = WA_FI0024-ZZWAERS.
WA_PARAM-ZZBLART = CNS_AA.
WA_PARAM-ZZBKTXT = TEXT-008.
CONCATENATE TEXT-008
WA_FI0024-ZZLEAFI(10)
WA_FI0024-ZZLEYM(6)
WA_FI0024-ZZLVTNR1(10)
INTO WA_PARAM-ZZSGTXT.
WA_PARAM-ZZHKONT = WA_FI0024-ZZANLN1.
WA_PARAM-ZZBSCHL = CNS_70.
WA_PARAM-ZZNEWBW = CNS_Z17.
WA_PARAM-ZZMWSKZ = CNS_V0.
WA_PARAM-ZZMENGE = CNS_1.
WA_PARAM-ZZWRBTR = WA_FI0024-ZZLBARW / 100.
APPEND WA_PARAM TO IT_PARAM.
CLEAR : WA_PARAM-ZZBLDAT,
WA_PARAM-ZZBUDAT,
WA_PARAM-ZZBUKRS,
WA_PARAM-ZZMWSKZ,
WA_PARAM-ZZWAERS,
WA_PARAM-ZZBLART,
WA_PARAM-ZZBKTXT,
WA_PARAM-ZZNEWBW.
Value for WA_PARAM-ZZSGTXT is as in FIRST record
WA_PARAM-ZZBSCHL = CNS_50.
WA_PARAM-ZZHKONT = WA_FI0027-ZZSAKNR_FX.
WA_PARAM-ZZWRBTR = WA_FI0024-ZZLBARW / 100.
APPEND WA_PARAM TO IT_PARAM.
ENDFORM. " SET_PARAM_24
&----
*& Form GET_RETURN_FB01
&----
SUBMIT(ZFI00I0010) : Result Processing : ZTFI0024 Record
----
FORM GET_RETURN_24.
DATA : L_SUBRC TYPE SY-SUBRC.
CLEAR : WA_RETURN,
L_SUBRC.
Posting Document Confirmation
READ TABLE IT_RETURN INTO WA_RETURN INDEX CNS_1.
L_SUBRC = SY-SUBRC.
IF L_SUBRC = 0 AND
WA_RETURN-SUBRC = 0 .
Successful Posting
CONDENSE WA_RETURN-MSGV1.
WA_FI0024-ZZBELNR01_FI = WA_RETURN-MSGV1.
WA_FI0024-ZZAENAM = SY-UNAME.
WA_FI0024-ZZUPDAT = SY-DATUM.
WA_FI0024-ZZUPTIM = SY-UZEIT.
MODIFY IT_FI0024 FROM WA_FI0024 INDEX W_INDEX_24
TRANSPORTING ZZBELNR01_FI
ZZAENAM
ZZUPDAT
ZZUPTIM.
MODIFY ZTFI0024 FROM WA_FI0024.
Database Update Failure
IF SY-SUBRC <> 0.
CLEAR : W_MSG.
CONCATENATE TEXT-034
CNS_FB01
WA_FI0024-ZZBELNR01_FI
TEXT-035
INTO W_MSG
SEPARATED BY SPACE.
PERFORM SET_ERROR USING TEXT-033
W_MSG
WA_FI0024-ZZINVNR_ANLA.
FLG_ERROR = CNS_X.
Successful Database Update
ELSE.
COMMIT WORK.
ENDIF.
Posting Document Failure
ELSE.
CLEAR : WA_ERROR.
WA_ERROR-APPL = CNS_FB01.
WA_ERROR-AREA = TEXT-011.
WA_ERROR-ZZINVNR_ANLA = WA_FI0024-ZZINVNR_ANLA.
WA_ERROR-ZZBUKRS = WA_FI0024-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0024-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0024-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0024-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0024-ZZLVTNR2.
SUBMIT failure
IF L_SUBRC <> 0.
WA_ERROR-MSG = TEXT-028.
ELSE.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_RETURN-MSGID
MSGNR = WA_RETURN-MSGNO
MSGV1 = WA_RETURN-MSGV1
MSGV2 = WA_RETURN-MSGV2
MSGV3 = WA_RETURN-MSGV3
MSGV4 = WA_RETURN-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
ENDIF.
ENDFORM. " GET_RETURN_FB01
&----
*& Form UFILE_CHECK
&----
Unix File ( for Error Records Download ) Check
----
FORM UFILE_CHECK .
OPEN DATASET W_UFILE FOR INPUT
IN TEXT MODE ENCODING NON-UNICODE.
IF SY-SUBRC = 0.
CLOSE DATASET W_UFILE.
IF SY-BATCH = CNS_X.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_020
WITH TEXT-042
P_UFILE.
ELSE.
MESSAGE ID CNS_MID3
TYPE CNS_S
NUMBER CNS_020
WITH TEXT-042
P_UFILE
DISPLAY LIKE CNS_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " UFILE_CHECK
&----
*& Form LFILE_CHECK
&----
Local File ( for Error Records Download ) Check
----
FORM LFILE_CHECK .
P_LFILE, THEN CHECK
CLEAR : W_LFILE,
W_RESULT.
W_LFILE = P_LFILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = W_LFILE
RECEIVING
RESULT = W_RESULT
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID
TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4.
ENDIF.
IF W_RESULT = CNS_X .
IF SY-BATCH = CNS_X.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_020
WITH TEXT-025
P_LFILE.
ELSE.
MESSAGE ID CNS_MID3
TYPE CNS_S
NUMBER CNS_020
WITH TEXT-025
P_LFILE
DISPLAY LIKE CNS_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " LFILE_CHECK
&----
*& Form SET_ERROR
&----
Error Record Insertion
----
-->P_APPL Application Name
-->P_EMSG Error Text
-->P_ZZINVNR_ANLA Inventory number
----
FORM SET_ERROR USING P_APPL TYPE C
P_EMSG TYPE C
P_ZZINVNR_ANLA TYPE ZTFI0024-ZZINVNR_ANLA.
CLEAR : WA_ERROR.
IF P_APPL IS INITIAL.
WA_ERROR-AREA = P_EMSG.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = SY-MSGID
MSGNR = SY-MSGNO
MSGV1 = SY-MSGV1
MSGV2 = SY-MSGV2
MSGV3 = SY-MSGV3
MSGV4 = SY-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
APPEND WA_ERROR TO IT_ERROR.
EXIT.
ENDIF.
WA_ERROR-APPL = P_APPL.
WA_ERROR-ZZBUKRS = WA_FI0023-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0023-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0023-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0023-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0023-ZZLVTNR2.
WA_ERROR-MSG = P_EMSG.
IF P_ZZINVNR_ANLA IS NOT INITIAL.
WA_ERROR-ZZINVNR_ANLA = P_ZZINVNR_ANLA.
WA_ERROR-AREA = TEXT-011.
ELSE.
WA_ERROR-AREA = TEXT-010.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
ENDFORM. " SET_ERROR
&----
*& Form BDC_AB08_FI0024
&----
AB08 : BDC Execution : ZTFI0024 Record
----
FORM BDC_AB08_FI0024 .
CLEAR : W_INDEX_ANEP,
IT_BDCDATA,
WA_BDCDATA,
WA_ERROR,
WA_ANEP,
W_AITEM.
DESCRIBE TABLE IT_ANEP LINES W_AITEM.
DO.
CLEAR : WA_ANEP.
READ TABLE IT_ANEP INTO WA_ANEP INDEX W_AITEM.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
W_INDEX_ANEP = SY-TABIX.
IF WA_ANEP-AFABE = CNS_01 AND
WA_ANEP-BWASL = CNS_Z17 .
Asset Account Document Reversing Process(FB08) for ZTFI0024 Record
PERFORM BDC_CALL_FB08 USING WA_FI0024-ZZBELNR01_FI
WA_FI0024-ZZINVNR_ANLA.
ELSE.
W_CURRENT = W_INDEX_ANEP.
PERFORM BDC_AB08_DATA USING WA_FI0024-ZZANLN1
W_CURRENT.
CLEAR : W_INDEX_ANEP,
IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_AB08
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_AA
MSGNR = CNS_367.
IF SY-SUBRC <> 0.
CLEAR : WA_MESSTAB,
WA_ERROR.
WA_ERROR-APPL = CNS_AB08.
WA_ERROR-AREA = TEXT-011.
WA_ERROR-ZZBUKRS = WA_FI0024-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0024-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0024-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0024-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0024-ZZLVTNR2.
WA_ERROR-ZZINVNR_ANLA = WA_FI0024-ZZINVNR_ANLA.
READ TABLE IT_MESSTAB INTO WA_MESSTAB WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
EXIT.
ENDIF.
ENDIF.
CLEAR : W_INDEX_ANEP,
IT_BDCDATA,
WA_BDCDATA,
WA_ERROR.
IF W_AITEM = 1.
PERFORM DELETE_RECORDS USING WA_FI0024-ZZANLN1
WA_FI0024-ZZINVNR_ANLA.
ENDIF.
W_AITEM = W_AITEM - 1.
ENDDO.
ENDFORM. " BDC_AB08_FI0024
&----
*& Form BDC_AB08_FI0023
&----
AB08 : BDC Execution : ZTFI0023 Record
----
FORM BDC_AB08_FI0023 .
CLEAR : IT_BDCDATA,
WA_BDCDATA,
WA_ERROR,
W_AITEM.
DESCRIBE TABLE IT_ANEP LINES W_AITEM.
DO.
CLEAR : WA_ANEP.
READ TABLE IT_ANEP INTO WA_ANEP INDEX W_AITEM.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
W_CURRENT = SY-TABIX.
PERFORM BDC_AB08_DATA USING WA_FI0023-ZZANLN1
W_CURRENT.
CLEAR : IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_AB08
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_AA
MSGNR = CNS_367.
IF SY-SUBRC <> 0.
WA_ERROR-APPL = CNS_AB08.
WA_ERROR-AREA = TEXT-010.
WA_ERROR-ZZBUKRS = WA_FI0024-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0024-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0024-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0024-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0024-ZZLVTNR2.
CLEAR : WA_MESSTAB,
WA_ERROR.
READ TABLE IT_MESSTAB INTO WA_MESSTAB WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
EXIT.
ENDIF.
CLEAR : IT_BDCDATA,
WA_BDCDATA,
WA_ERROR.
W_AITEM = W_AITEM - 1.
ENDDO.
IF FLG_ERROR IS INITIAL.
CLEAR : WA_FI0023-ZZBELNR92_AA,
WA_FI0023-ZZBELNR96_AA,
WA_FI0023-ZZBELNR97_AA.
MODIFY IT_FI0023 FROM WA_FI0023 INDEX W_INDEX_23
TRANSPORTING ZZBELNR92_AA
ZZBELNR96_AA
ZZBELNR97_AA.
ENDIF.
ENDFORM. " BDC_AB08_FI0023
&----
*& Form BDC_AB08_DATA
&----
FB08 : BDC Data Mapping
----
-->P_ZZANLN1 Main Asset Number
-->P_REC_NO Record Number in Table Control
----
FORM BDC_AB08_DATA USING P_ANLN1 TYPE ZTFI0023-ZZANLN1
P_REC_NO TYPE N.
Initial Screen
PERFORM BDC_DYNPRO USING 'SAPLAB01' '0010'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=WEIT'.
PERFORM BDC_FIELD USING 'RLAB01-BUKRS'
WA_FI0023-ZZBUKRS.
PERFORM BDC_FIELD USING 'RLAB01-ANLN1'
P_ANLN1.
PERFORM BDC_FIELD USING 'RLAB01-ANLN2'
WA_FI0023-ZZANLN2.
PERFORM BDC_FIELD USING 'RLAB01-GJAHR'
P_GJAHR.
'Overview of Asset' Screen : Record Selection & Navigation
PERFORM BDC_DYNPRO USING 'SAPLAB01' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=STOR'.
IF P_REC_NO <> CNS_01.
CLEAR : W_SFIELD.
CONCATENATE CNS_FNAM CNS_01 CNS_CB INTO W_SFIELD.
PERFORM BDC_FIELD USING W_SFIELD
SPACE.
ENDIF.
CLEAR : W_SFIELD.
CONCATENATE CNS_FNAM P_REC_NO CNS_CB INTO W_SFIELD.
PERFORM BDC_FIELD USING W_SFIELD
CNS_X.
'Specifications for Reverse Posting' Screen
PERFORM BDC_DYNPRO USING 'SAPLAMDS' '0650'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'BAPI6037_REV_DATA-REASON_REV'
CNS_01.
'Overview of Asset Accounting Documents' Screen
PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
ENDFORM. " BDC_AB08_DATA
&----
*& Form BDC_CALL_FB08
&----
FB08 : BDC Execution
----
-->P_BELNS Document to be Reversed
-->P_ZZINVNR_ANLA Inventory number
----
FORM BDC_CALL_FB08 USING P_BELNS TYPE CHAR10
P_ZZINVNR_ANLA TYPE ZTFI0024-ZZINVNR_ANLA.
CLEAR : IT_BDCDATA,
WA_BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0105'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSIS-BUDAT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
PERFORM BDC_FIELD USING 'RF05A-BELNS'
P_BELNS.
PERFORM BDC_FIELD USING 'BKPF-BUKRS'
WA_FI0023-ZZBUKRS.
PERFORM BDC_FIELD USING 'RF05A-GJAHS'
P_GJAHR.
PERFORM BDC_FIELD USING 'UF05A-STGRD'
CNS_01.
PERFORM BDC_FIELD USING 'BSIS-BUDAT'
WA_FI0023-ZZLEABG.
CLEAR : IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_FB08
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_F5
MSGNR = CNS_312.
IF SY-SUBRC <> 0.
CLEAR : WA_MESSTAB,
WA_ERROR.
WA_ERROR-APPL = CNS_FB08.
IF P_ZZINVNR_ANLA IS INITIAL.
WA_ERROR-AREA = TEXT-010.
ELSE.
WA_ERROR-ZZINVNR_ANLA = P_ZZINVNR_ANLA.
WA_ERROR-AREA = TEXT-011.
ENDIF.
WA_ERROR-ZZBUKRS = WA_FI0023-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0023-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0023-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0023-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0023-ZZLVTNR2.
READ TABLE IT_MESSTAB INTO WA_MESSTAB WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
ELSE.
IF P_ZZINVNR_ANLA IS INITIAL.
PERFORM DELETE_RECORDS USING WA_FI0023-ZZANLN1
SPACE.
ENDIF.
ENDIF.
ENDFORM. " BDC_CALL_FB08
&----
*& Form ERR_DOWNLOAD_LFILE
&----
エラーファイルをダウンロードする
----
FORM ERR_DOWNLOAD_LFILE.
DATA L_FNAME TYPE STRING.
L_FNAME = P_LFILE.
*--- GUIダウンロード
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_FNAME
FILETYPE = CNS_FTYPE
TABLES
DATA_TAB = IT_ERROR
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID
TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4.
ENDIF.
ENDFORM. " ERR_DOWNLOAD_LFILE
&----
*& Form ERR_DOWNLOAD_UFILE
&----
エラーファイルをダウンロードする
----
FORM ERR_DOWNLOAD_UFILE.
データ宣言
DATA : L_LINE TYPE STRING.
OPEN DATASET W_UFILE FOR OUTPUT IN TEXT MODE
ENCODING NON-UNICODE.
IF SY-SUBRC <> 0 .
IF SY-BATCH = CNS_X.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_001
WITH P_UFILE
CNS_OPEN
SY-SUBRC.
ELSE.
MESSAGE ID CNS_MID3
TYPE CNS_S
NUMBER CNS_001
WITH P_UFILE
CNS_OPEN
SY-SUBRC
DISPLAY LIKE CNS_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF .
CLEAR : WA_ERROR.
LOOP AT IT_ERROR INTO WA_ERROR.
CLEAR L_LINE .
CALL METHOD CL_ABAP_LIST_UTILITIES=>STRUCTURE_TO_DISPLAY
EXPORTING
MEMORY_DATA = WA_ERROR
IMPORTING
DISPLAY_DATA = L_LINE.
TRANSFER L_LINE TO W_UFILE.
ENDLOOP.
CLOSE DATASET W_UFILE.
ENDFORM. " ERR_DOWNLOAD_UFILE
&----
*& Form BDC_AS01_DEPR_AREA
&----
Depriciation Area Calculation
----
-->P_AFASL1 Depreciation key 1
-->P_AFASL2 Depreciation key 2
-->P_AFASL3 Depreciation key 3
-->P_LEJAR Planned useful life in years
----
FORM BDC_AS01_DEPR_AREA USING P_AFASL1 TYPE CHAR04
P_AFASL2 TYPE CHAR04
P_AFASL3 TYPE CHAR04
P_LEJAR TYPE NUMC3.
PERFORM BDC_FIELD USING 'ANLB-AFASL(01)'
P_AFASL1.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(01)'
P_LEJAR.
PERFORM BDC_FIELD USING 'ANLB-AFASL(02)'
P_AFASL2.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(02)'
P_LEJAR.
PERFORM BDC_FIELD USING 'ANLB-AFASL(03)'
P_AFASL3.
PERFORM BDC_FIELD USING 'ANLB-NDJAR(03)'
P_LEJAR.
ENDFORM. " BDC_AS01_DEPR_AREA
&----
*& Form BDC_FB01_FI0023_1
&----
FB01 : BDC Data Mapping : ZTFI0023 Record : No KCODE INPUT
----
FORM BDC_FB01_FI0023_1 .
DATA : L_SGTXT TYPE BSEG-SGTXT,
W_CONTAX_T TYPE ZTFI0023-ZZCONTAX,
W_LEGEB_T TYPE ZTFI0023-ZZLEGEB.
CONCATENATE TEXT-009
WA_FI0023-ZZLEAFI(10)
WA_FI0023-ZZLEYM(6)
WA_FI0023-ZZLVTNR1(10)
INTO L_SGTXT.
Post Document : Header Data
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'BKPF-BLART'
CNS_ZL.
PERFORM BDC_FIELD USING 'BKPF-BUKRS'
WA_FI0023-ZZBUKRS.
PERFORM BDC_FIELD USING 'BKPF-BUDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'BKPF-WAERS'
WA_FI0023-ZZWAERS.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
CNS_40.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
WA_SKB1-SAKNR.
Enter : Add G/L account item ( No 1 )
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0312'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
CLEAR : W_FVAL,
W_CONTAX_T.
W_CONTAX_T = WA_FI0023-ZZCONTAX.
W_CONTAX_T = W_CONTAX_T / 100.
WRITE W_CONTAX_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
W_FVAL.
CLEAR : W_FVAL,
W_LEGEB_T.
W_LEGEB_T = WA_FI0023-ZZLEGEB.
W_LEGEB_T = W_LEGEB_T / 100.
WRITE W_LEGEB_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-FWBAS'
W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
CNS_V1.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
L_SGTXT.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
CNS_50.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
WA_FI0027-ZZSAKNR_TX.
Enter : Add G/L account item ( No 2 )
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
CLEAR : W_FVAL,
W_CONTAX_T.
W_CONTAX_T = WA_FI0023-ZZCONTAX.
W_CONTAX_T = W_CONTAX_T / 100.
WRITE W_CONTAX_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
L_SGTXT.
PERFORM BDC_FIELD USING 'DKACB-FMORE'
CNS_X.
Coding Block Screen
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_FIELD USING 'COBL-GSBER'
SPACE.
ENDFORM. " BDC_FB01_FI0023_1
&----
*& Form BDC_FB01_FI0023_2
&----
FB01 : BDC Data Mapping : ZTFI0023 Record : KCODE INPUT
----
FORM BDC_FB01_FI0023_2 .
DATA : L_SGTXT TYPE BSEG-SGTXT,
W_LEGEB_T TYPE ZTFI0023-ZZLEGEB,
W_CONTAX_T TYPE ZTFI0023-ZZCONTAX.
CONCATENATE TEXT-009
WA_FI0023-ZZLEAFI(10)
WA_FI0023-ZZLEYM(6)
WA_FI0023-ZZLVTNR1(10)
INTO L_SGTXT.
Post Document : Header Data
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'BKPF-BLART'
CNS_ZL.
PERFORM BDC_FIELD USING 'BKPF-BUKRS'
WA_FI0023-ZZBUKRS.
PERFORM BDC_FIELD USING 'BKPF-BUDAT'
WA_FI0023-ZZLEABG.
PERFORM BDC_FIELD USING 'BKPF-WAERS'
WA_FI0023-ZZWAERS.
PERFORM BDC_FIELD USING 'BKPF-BKTXT'
TEXT-009.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
CNS_40.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
P_KCODE1.
Enter : Add G/L account item ( No.1 )
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
CLEAR : W_FVAL,
W_LEGEB_T.
W_LEGEB_T = WA_FI0023-ZZLEGEB.
W_LEGEB_T = W_LEGEB_T / 100.
WRITE W_LEGEB_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
W_FVAL.
CLEAR : W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
L_SGTXT.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
CNS_50.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
P_KCODE2.
PERFORM BDC_FIELD USING 'DKACB-FMORE'
CNS_X.
Coding Block ( No.1 )
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
Enter : Add G/L account item ( No.2 )
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
CLEAR : W_FVAL,
W_LEGEB_T.
W_LEGEB_T = WA_FI0023-ZZLEGEB.
W_LEGEB_T = W_LEGEB_T / 100.
WRITE W_LEGEB_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
L_SGTXT.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
CNS_40.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
WA_SKB1-SAKNR.
PERFORM BDC_FIELD USING 'DKACB-FMORE'
CNS_X.
Coding Block ( No.2 )
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
Enter : Add G/L account item ( No.3 )
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0312'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
CLEAR : W_FVAL,
W_CONTAX_T.
W_CONTAX_T = WA_FI0023-ZZCONTAX.
W_CONTAX_T = W_CONTAX_T / 100.
WRITE W_CONTAX_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
W_FVAL.
CLEAR : W_FVAL,
W_LEGEB_T.
W_LEGEB_T = WA_FI0023-ZZLEGEB.
W_LEGEB_T = W_LEGEB_T / 100.
WRITE W_LEGEB_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-FWBAS'
W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-MWSKZ'
CNS_V1.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
L_SGTXT.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
CNS_50.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
WA_FI0027-ZZSAKNR_TX.
Enter : Add G/L account item ( No.4 )
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
CLEAR : W_FVAL,
W_CONTAX_T.
W_CONTAX_T = WA_FI0023-ZZCONTAX.
W_CONTAX_T = W_CONTAX_T / 100.
WRITE W_CONTAX_T TO W_FVAL LEFT-JUSTIFIED
USING EDIT MASK 'RR_____________'
CURRENCY WA_FI0023-ZZWAERS.
CONDENSE W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
W_FVAL.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
L_SGTXT.
PERFORM BDC_FIELD USING 'DKACB-FMORE'
CNS_X.
Coding Block ( No.3 )
PERFORM BDC_DYNPRO USING 'SAPLKACB' '0002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTE'.
PERFORM BDC_FIELD USING 'COBL-GSBER'
SPACE.
ENDFORM. " BDC_FB01_FI0023_2
&----
*& Form BDC_FB01_RETURN
&----
FB01 : BDC Execution : ZTFI0023 Record
----
FORM BDC_FB01_23_EXEC .
CLEAR : IT_MESSTAB,
WA_MESSTAB.
BDC CALL
CALL TRANSACTION CNS_FB01
USING IT_BDCDATA
MODE W_BDC_MODE
UPDATE CNS_S
MESSAGES INTO IT_MESSTAB.
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGID = CNS_F5
MSGNR = CNS_312.
IF SY-SUBRC = 0.
Successful Posting
CONDENSE WA_MESSTAB-MSGV1.
WA_FI0023-ZZBELNR96_FI = WA_MESSTAB-MSGV1.
WA_FI0023-ZZAENAM = SY-UNAME.
WA_FI0023-ZZUPDAT = SY-DATUM.
WA_FI0023-ZZUPTIM = SY-UZEIT.
MODIFY IT_FI0023 FROM WA_FI0023 INDEX W_INDEX_23
TRANSPORTING ZZBELNR96_FI
ZZAENAM
ZZUPDAT
ZZUPTIM.
MODIFY ZTFI0023 FROM WA_FI0023.
Database Update Failure
IF SY-SUBRC <> 0.
CLEAR : W_MSG.
CONCATENATE TEXT-034
CNS_FB01
WA_FI0023-ZZBELNR96_FI
TEXT-035
INTO W_MSG
SEPARATED BY SPACE.
PERFORM SET_ERROR USING TEXT-033
W_MSG
SPACE.
FLG_ERROR = CNS_X.
Successful Database Update
ELSE.
COMMIT WORK.
ENDIF.
Posting Document Failure
ELSE.
CLEAR : WA_ERROR.
WA_ERROR-APPL = CNS_FB01.
WA_ERROR-AREA = TEXT-010.
WA_ERROR-ZZBUKRS = WA_FI0023-ZZBUKRS.
WA_ERROR-ZZLEAFI = WA_FI0023-ZZLEAFI.
WA_ERROR-ZZLEYM = WA_FI0023-ZZLEYM.
WA_ERROR-ZZLVTNR1 = WA_FI0023-ZZLVTNR1.
WA_ERROR-ZZLVTNR2 = WA_FI0023-ZZLVTNR2.
Error Message
READ TABLE IT_MESSTAB INTO WA_MESSTAB
WITH KEY MSGTYP = CNS_E.
IF SY-SUBRC = 0.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = WA_MESSTAB-MSGID
MSGNR = WA_MESSTAB-MSGNR
MSGV1 = WA_MESSTAB-MSGV1
MSGV2 = WA_MESSTAB-MSGV2
MSGV3 = WA_MESSTAB-MSGV3
MSGV4 = WA_MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = WA_ERROR-MSG.
CALL Transaction failure
ELSE.
WA_ERROR-MSG = TEXT-027.
ENDIF.
APPEND WA_ERROR TO IT_ERROR.
FLG_ERROR = CNS_X.
ENDIF.
ENDFORM. " BDC_FB01_RETURN
&----
*& Form DELETE_RECORDS
&----
Deleting ZTFI0023/ZTFI0024 entries
----
FORM DELETE_RECORDS USING P_ANLN1 TYPE ZTFI0023-ZZANLN1
P_ZZINVNR_ANLA TYPE ZTFI0023-ZZINVNR_ANLA.
IF P_ZZINVNR_ANLA IS INITIAL.
DELETE ZTFI0023 FROM WA_FI0023.
ELSE.
DELETE ZTFI0024 FROM WA_FI0024.
ENDIF.
IF SY-SUBRC = 0.
COMMIT WORK.
ELSE.
CLEAR : W_MSG.
CONCATENATE TEXT-036
CNS_AB08
P_ANLN1
TEXT-035
INTO W_MSG
SEPARATED BY SPACE.
IF P_ZZINVNR_ANLA IS INITIAL.
PERFORM SET_ERROR USING TEXT-033
W_MSG
SPACE.
ELSE.
PERFORM SET_ERROR USING TEXT-033
W_MSG
P_ZZINVNR_ANLA.
ENDIF.
FLG_ERROR = CNS_X.
ENDIF.
ENDFORM. " DELETE_RECORDS
&----
*& Form CHECK_PC_DIRECTORY
&----
Local PC Directory Existence Check
----
-->P_FPATH File name
----
FORM CHECK_PC_DIRECTORY USING P_FPATH TYPE C.
DATA : CNT_MATCH TYPE I,
LT_MATCH TYPE STANDARD TABLE OF MATCH_RESULT,
LW_MATCH TYPE MATCH_RESULT.
CLEAR: W_RESULT,
W_LFILE,
CNT_MATCH.
FIND ALL OCCURRENCES OF CNS_SEP IN P_FPATH
IN CHARACTER MODE
MATCH COUNT CNT_MATCH
RESULTS LT_MATCH.
IF SY-SUBRC <> 0.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_000
WITH TEXT-040.
ENDIF.
READ TABLE LT_MATCH INTO LW_MATCH INDEX CNT_MATCH.
W_LFILE = P_FPATH(LW_MATCH-OFFSET).
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXIST
EXPORTING
DIRECTORY = W_LFILE
RECEIVING
RESULT = W_RESULT
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID
TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4.
ENDIF.
IF W_RESULT IS INITIAL.
MESSAGE ID CNS_MID3
TYPE CNS_E
NUMBER CNS_000
WITH TEXT-041.
ENDIF.
ENDFORM. " CHECK_PC_DIRECTORY
&----
*& Form LOCK_ERROR
&----
Table Lock Process Failure
----
-->P_TNAME Table Name
----
FORM LOCK_ERROR USING P_TNAME.
PERFORM SET_ERROR USING SPACE
P_TNAME
SPACE.
INSERT WA_COL_TXT INTO IT_ERROR INDEX CNS_1.
IF P_UFILE IS NOT INITIAL.
Error Records Download : Unix File
PERFORM ERR_DOWNLOAD_UFILE.
ELSE.
Error Records Download : Local File
PERFORM ERR_DOWNLOAD_LFILE.
ENDIF.
Process Completion Indication
MESSAGE ID CNS_MID3
TYPE CNS_S
NUMBER CNS_000
WITH TEXT-026.
LEAVE LIST-PROCESSING.
ENDFORM. " LOCK_ERROR
&----
*& Form POSTING_PERIOD_CHECK
&----
Posting Period Check Process
----
FORM POSTING_PERIOD_CHECK .
CLEAR : W_ZZLEYM.
Asset Posting Period Criteria
W_ZZLEYM(4) = P_GJAHR.
W_ZZLEYM+4(2) = P_MONAT.
Filtering Assets with Different Posting Period
LOOP AT IT_FI0023 INTO WA_FI0023 WHERE
ZZLEYM <> W_ZZLEYM AND
ZZLEABG(6) >= W_ZZLEYM OR
ZZLKDAT(6) <= W_ZZLEYM.
W_INDEX_23 = SY-TABIX.
Processing ZTFI0023 Record
PERFORM SET_ERROR USING TEXT-014
TEXT-015
SPACE.
CLEAR : WA_FI0024.
Processing ZTFI0024 Records
LOOP AT IT_FI0024 INTO WA_FI0024
WHERE ZZBUKRS = WA_FI0023-ZZBUKRS AND
ZZLEAFI = WA_FI0023-ZZLEAFI AND
ZZLEYM = WA_FI0023-ZZLEYM AND
ZZLVTNR1 = WA_FI0023-ZZLVTNR1 AND
ZZLVTNR2 = WA_FI0023-ZZLVTNR2 .
W_INDEX_24 = SY-TABIX.
PERFORM SET_ERROR USING TEXT-014
TEXT-015
WA_FI0024-ZZINVNR_ANLA.
DELETE IT_FI0024 INDEX W_INDEX_24.
ENDLOOP.
DELETE IT_FI0023 INDEX W_INDEX_23.
ENDLOOP.
ENDFORM. " POSTING_PERIOD_CHECK
11-04-2008 8:53 AM
&----
プログラム・ヘッダー
&----
プログラム ID : ZTLR0060
スクリーン : 1000
作成者 : R.NAGARAJAN(INFOVIEW)
作成日 : 2008/10/30
ソースコードタイプ : 実行可能プログラム
説明 : ユーザロック解除・パスワード初期化プログラム
備考 : -
&----
変更ログ
&----
番号 日付 プログラマ 説明
00001 XXXX/XX/XX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX
&----
一般情報
&----
アプリケーション : BASIS
論理 DB : XXXXXXXXXXXXXXXXXXXX
インプット : ユーザID
(ZTTL0010 ロック解除プログラム使用ユーザ)
ロック解除CheckBox
パスワード初期化CheckBox
バリアント : XXXXXXXXXXXXXX
アウトプット : ロックリリース
パスワード初期化
CALLS : -
インクルード : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
バッチインプット : -
リターンコード : -
アベンド : -
&----
REPORT ZTLR0060 NO STANDARD PAGE HEADING.
&----
定数定義
&----
CONSTANTS :
CNS_X TYPE C LENGTH 01 VALUE 'X',
CNS_E TYPE C LENGTH 01 VALUE 'E',
CNS_S TYPE C LENGTH 01 VALUE 'S',
CNS_00 TYPE C LENGTH 02 VALUE '00',
CNS_398 TYPE N LENGTH 03 VALUE '398',
CNS_SAP* TYPE C LENGTH 04 VALUE 'SAP*', "ユーザID
CNS_PINIT TYPE C LENGTH 40 VALUE '123abc#'. "パスワード
&----
内部テーブル定義
&----
DATA : IT_BAPIRET2 TYPE STANDARD TABLE OF BAPIRET2.
&----
ワークエリア
&----
DATA : WA_LR_EXEC TYPE ZTTL0010,
WA_BAPIRET2 TYPE BAPIRET2,
WA_LR_UNLOCK TYPE ZTTL0020.
&----
選択画面
&----
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
PARAMETERS : P_UNAME TYPE ZTTL0010-ZZUNAME OBLIGATORY,
CK_LRELE AS CHECKBOX DEFAULT CNS_X,
CK_PINIT AS CHECKBOX DEFAULT CNS_X.
SELECTION-SCREEN : END OF BLOCK B1.
&----
INITIALIZATION
&----
INITIALIZATION.
内部テーブルとワークエリアをクリアする
PERFORM INIT_FIELDS.
&----
AT SELECTION-SCREEN
&----
AT SELECTION-SCREEN.
入力パラメータのチェック
PERFORM CHECK_FIELDS.
&----
START-OF-SELECTION
&----
START-OF-SELECTION.
ロック解除処理
PERFORM PROCESS_FIELDS.
&----
サブルーチン
&----
&----
*& Form INIT_FIELDS
&----
内部テーブルとワークエリアをクリアする
----
FORM INIT_FIELDS .
CLEAR : IT_BAPIRET2,
WA_LR_EXEC,
WA_BAPIRET2,
WA_LR_UNLOCK.
ENDFORM. " INIT_FIELDS
&----
*& Form CHECK_FIELDS
&----
入力パラメータのチェック
----
FORM CHECK_FIELDS .
CLEAR : WA_LR_EXEC.
ユーザIDの存在チェック
SELECT SINGLE * FROM ZTTL0010 INTO WA_LR_EXEC
WHERE ZZUNAME = SY-UNAME.
IF SY-SUBRC <> 0 OR
WA_LR_EXEC-ZZDELFL = CNS_X.
プログラムの使用許可がありません
MESSAGE ID CNS_00
TYPE CNS_E
NUMBER CNS_398
WITH TEXT-001.
ENDIF.
CONDENSE P_UNAME.
ユーザIDが「SAP*」の時エラーメッセージを出力する
IF P_UNAME = CNS_SAP*.
ユーザID:& は処理対象外ユーザです
MESSAGE ID CNS_00
TYPE CNS_E
NUMBER CNS_398
WITH TEXT-002
P_UNAME
TEXT-003.
ELSE.
ユーザIDの存在チェック
SELECT SINGLE * FROM ZTTL0020 INTO WA_LR_UNLOCK
WHERE ZZUNAME = P_UNAME.
IF SY-SUBRC = 0.
ユーザID:& は処理対象外ユーザです
MESSAGE ID CNS_00
TYPE CNS_E
NUMBER CNS_398
WITH TEXT-002
P_UNAME
TEXT-003.
ENDIF.
ENDIF.
ユーザロック解除かパスワード初期化が指定しない時エラーメッセージを出力する
IF CK_LRELE IS INITIAL AND
CK_PINIT IS INITIAL .
ユーザロック解除かユーザパスワード初期化を指定して下さい
MESSAGE ID CNS_00
TYPE CNS_E
NUMBER CNS_398
WITH TEXT-004.
ENDIF.
ENDFORM. " CHECK_FIELDS
&----
*& Form PROCESS_FIELDS
&----
ロック解除処理
----
FORM PROCESS_FIELDS .
ユーザマスタテーブルのロック
CALL FUNCTION 'ENQUEUE_E_USR04'
EXPORTING
MODE_USR04 = CNS_E "ロックモード
MANDT = SY-MANDT
BNAME = P_UNAME "ユーザID
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ユーザID: & は編集中のため処理できません
MESSAGE ID CNS_00
TYPE CNS_S
NUMBER CNS_398
WITH TEXT-002
P_UNAME
TEXT-006
DISPLAY LIKE CNS_E.
LEAVE LIST-PROCESSING.
ENDIF.
ロック解除が指定されている時
IF CK_LRELE = CNS_X.
CLEAR : IT_BAPIRET2,
WA_BAPIRET2.
ユーザロック解除
CALL FUNCTION 'BAPI_USER_UNLOCK'
EXPORTING
USERNAME = P_UNAME "ユーザID
TABLES
RETURN = IT_BAPIRET2. "リターン構造
READ TABLE IT_BAPIRET2 INTO WA_BAPIRET2
WITH KEY TYPE = CNS_E.
IF SY-SUBRC = 0.
ユーザロック解除ができません &
MESSAGE ID WA_BAPIRET2-ID
TYPE CNS_S
NUMBER WA_BAPIRET2-NUMBER
WITH WA_BAPIRET2-MESSAGE_V1
WA_BAPIRET2-MESSAGE_V2
WA_BAPIRET2-MESSAGE_V3
WA_BAPIRET2-MESSAGE_V4
DISPLAY LIKE CNS_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
パスワード初期化が指定されている時
IF CK_PINIT = CNS_X.
CLEAR : IT_BAPIRET2,
WA_BAPIRET2.
ユーザのパスワード初期化
CALL FUNCTION 'BAPI_USER_CHANGE'
EXPORTING
USERNAME = P_UNAME "ユーザID
PASSWORD = CNS_PINIT "パスワード
PASSWORDX = CNS_X "変更関連項目の選択
TABLES
RETURN = IT_BAPIRET2. "リターン構造
リターンが「E」エラー時
READ TABLE IT_BAPIRET2 INTO WA_BAPIRET2
WITH KEY TYPE = CNS_E.
IF SY-SUBRC = 0.
ユーザパスワード初期化ができません &
MESSAGE ID WA_BAPIRET2-ID
TYPE CNS_S
NUMBER WA_BAPIRET2-NUMBER
WITH WA_BAPIRET2-MESSAGE_V1
WA_BAPIRET2-MESSAGE_V2
WA_BAPIRET2-MESSAGE_V3
WA_BAPIRET2-MESSAGE_V4
DISPLAY LIKE CNS_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ユーザマスタテーブルのロック解除
CALL FUNCTION 'DEQUEUE_E_USR04'
EXPORTING
MODE_USR04 = CNS_E "ロックモード
MANDT = SY-MANDT
BNAME = P_UNAME. "ユーザID
ロック解除とパスワード初期化が指定されている時
IF CK_LRELE = CNS_X AND
CK_PINIT = CNS_X .
ユーザID:& ユーザロック解除OK パスワード初期化OK
MESSAGE ID CNS_00
TYPE CNS_S
NUMBER CNS_398
WITH TEXT-002
P_UNAME
TEXT-007.
ロック解除が指定されている時
ELSEIF CK_LRELE = CNS_X.
ユーザID:& ユーザロック解除OK
MESSAGE ID CNS_00
TYPE CNS_S
NUMBER CNS_398
WITH TEXT-002
P_UNAME
TEXT-008.
パスワード初期化が指定されている時
ELSE.
ユーザID:& パスワード初期化OK
MESSAGE ID CNS_00
TYPE CNS_S
NUMBER CNS_398
WITH TEXT-002
P_UNAME
TEXT-009.
ENDIF.
ENDFORM. " PROCESS_FIELDS