Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

want to access the BDC Session log

former_member1052991
Active Participant
0 Kudos

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.

9 REPLIES 9

Former Member
0 Kudos

Hi Guna,

Check this thread.

Regards,

Chandra Sekhar

0 Kudos

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

0 Kudos

This message was moderated.

0 Kudos

*======================================================================

  • プログラム・ヘッダー

*======================================================================

*

  • プログラム 名称 : リース契約・リース物件情報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

0 Kudos

*======================================================================

  • プログラム・ヘッダー

*======================================================================

*

  • プログラム 名称 : リース契約・リース物件情報アップロード

  • プログラム : 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

Former Member
0 Kudos

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.

former_member1052991
Active Participant
0 Kudos

*======================================================================

*

  • プログラム・ヘッダー

*======================================================================

*

  • プログラム 名称 : リース契約・物件資産レポート

  • プログラム : 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

former_member1052991
Active Participant
0 Kudos

&----


      • プログラム・ヘッダー

&----


  • プログラム 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

former_member1052991
Active Participant
0 Kudos

&----


      • プログラム・ヘッダー

&----


  • プログラム 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