REPORT ZAC00160 NO STANDARD PAGE HEADINGLINE-SIZE 170
LINE-COUNT 58
MESSAGE-ID ZAC001.
*----------------------------------------------------------------------*
* 定数の定義
*----------------------------------------------------------------------*
CONSTANTS:
C_A(1) TYPE C VALUE 'A',
C_E(1) TYPE C VALUE 'E',
C_X(1) TYPE C VALUE 'X',
C_S(1) TYPE C VALUE 'S',
C_SLASH TYPE CHAR1 VALUE '/',
C_REQ TYPE C VALUE '+',
C_MIN TYPE C VALUE '-',
C_2 TYPE C VALUE '2',
C_I TYPE C VALUE 'I',
C_U TYPE C VALUE 'U',
C_D TYPE C VALUE 'D',
C_CHECK(5) TYPE C VALUE 'CHECK',
C_UTF8 TYPE ABAP_ENCOD VALUE '4110',
C_TYPE(10) TYPE C VALUE 'ASC', " タブ区切りFILE
C_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
C_TYP_E(01) TYPE C VALUE 'E', " メッセージタイプ
C_CHK(01) TYPE C VALUE 'X'. " チェック
*&---------------------------------------------------------------------*
* 型定義
*&---------------------------------------------------------------------*
TYPES:
BEGIN OF TYP_SFILE,
FIELD TYPE STRING,
END OF TYP_SFILE,
BEGIN OF TYP_FILE,
PARTNER TYPE BUT000-PARTNER, "ビジネスパートナ番号
RLTYP TYPE STRING, "BP 役割の登録
BU_GROUP TYPE STRING , "グルーピング
TITLE TYPE STRING, "タイトル(敬称)
NAME1 TYPE ADRC-NAME1, "名称
NAME2 TYPE ADRC-NAME2, "名称 2
SORT1 TYPE ADRC-SORT1, "検索語句1/2
SORT2 TYPE ADRC-SORT2, "検索語句2/2
STREET TYPE ADRC-STREET, "地名
HOUSE_NUM1 TYPE ADRC-HOUSE_NUM1, "番地-号
POST_CODE1 TYPE ADRC-POST_CODE1, "郵便番号
CITY1 TYPE ADRC-CITY1, "市区町村
COUNTRY TYPE STRING, "国コード
REGION TYPE STRING, "地域 (都道府県)
TIME_ZONE TYPE ADRC-TIME_ZONE, "タイムゾーン
LANGU TYPE STRING, "言語
TEL_NUMBER TYPE ADRC-TEL_NUMBER, "電話
FAX_NUMBER TYPE ADRC-FAX_NUMBER, "FAX
SMTP_ADDR1 TYPE ADR6-SMTP_ADDR, "E-Mail(1)
SMTP_ADDR2 TYPE ADR6-SMTP_ADDR, "E-Mail(2)
SMTP_ADDR3 TYPE ADR6-SMTP_ADDR, "E-Mail(3)
LEGAL_ORG TYPE STRING, "法的実体
VBUND TYPE LFA1-VBUND, "取引先
BKVID TYPE BUT0BK-BKVID, "ID
BANKS TYPE BUT0BK-BANKS, "国
BANKL TYPE BUT0BK-BANKL, "銀行コード
BANKN TYPE BUT0BK-BANKN, "銀行口座
BKONT TYPE STRING, "管理キー
KOINH TYPE BUT0BK-KOINH, "口座名義人
BKREF TYPE BUT0BK-BKREF, "支払参照
XBLCK TYPE STRING, "共通ブロック
LIFNR TYPE LFA1-LIFNR, "仕入先コード"
KUNNR TYPE LFA1-KUNNR, "得意先コード
DLGRP TYPE STRING, "サービス業者価格決定グループ
PROFS TYPE LFA1-PROFS, "職業
ZSABE TYPE LFB1-ZSABE, "仕入先担当者
BUKRS TYPE STRING, "会社コード
AKONT TYPE LFB1-AKONT, "統制勘定
FDGRV TYPE LFB1-FDGRV, "CM 計画グループ
ALTKN TYPE LFB1-ALTKN, "旧勘定コード
ZTERM TYPE LFB1-ZTERM, "支払条件
BUSAB TYPE STRING, "記帳担当者
WITHT TYPE STRING, "源泉徴収税タイプコード
WT_WITHCD TYPE STRING, "源泉徴収税コード
WT_SUBJCT TYPE STRING, "源泉徴収課税対象
END OF TYP_FILE,
TYP_I_FILE TYPE STANDARD TABLE OF TYP_FILE,
BEGIN OF TYP_FILE_ERR,
PARTNER TYPE BUT000-PARTNER, "ビジネスパートナ番号
RLTYP TYPE STRING, "BP 役割の登録
BU_GROUP TYPE STRING, "グルーピング
TITLE TYPE STRING, "タイトル(敬称)
NAME1 TYPE STRING, "名称
NAME2 TYPE STRING, "名称 2
SORT1 TYPE STRING, "検索語句1/2
SORT2 TYPE STRING, "検索語句2/2
STREET TYPE STRING, "地名
HOUSE_NUM1 TYPE STRING, "番地-号
POST_CODE1 TYPE STRING, "郵便番号
CITY1 TYPE STRING, "市区町村
COUNTRY TYPE STRING, "国コード
REGION TYPE STRING, "地域 (都道府県)
TIME_ZONE TYPE STRING, "タイムゾーン
LANGU TYPE STRING, "言語
TEL_NUMBER TYPE STRING, "電話
FAX_NUMBER TYPE STRING, "FAX
SMTP_ADDR1 TYPE STRING, "E-Mail(1)
SMTP_ADDR2 TYPE STRING, "E-Mail(2)
SMTP_ADDR3 TYPE STRING, "E-Mail(3)
LEGAL_ORG TYPE STRING, "法的実体
VBUND TYPE STRING, "取引先
BKVID TYPE STRING, "ID
BANKS TYPE STRING, "国
BANKL TYPE STRING, "銀行コード
BANKN TYPE STRING, "銀行口座
BKONT TYPE STRING, "管理キー
KOINH TYPE STRING, "口座名義人
BKREF TYPE STRING, "支払参照
XBLCK TYPE STRING, "共通ブロック
LIFNR TYPE STRING, "仕入先コード"
KUNNR TYPE STRING, "得意先コード
DLGRP TYPE STRING, "サービス業者価格決定グループ
PROFS TYPE STRING, "職業
ZSABE TYPE STRING, "仕入先担当者
BUKRS TYPE STRING, "会社コード
AKONT TYPE STRING, "統制勘定
FDGRV TYPE STRING, "CM 計画グループ
ALTKN TYPE STRING, "旧勘定コード
ZTERM TYPE STRING, "支払条件
BUSAB TYPE STRING, "記帳担当者
WITHT TYPE STRING, "源泉徴収税タイプコード
WT_WITHCD TYPE STRING, "源泉徴収税コード
WT_SUBJCT TYPE STRING, "源泉徴収課税対象
ID TYPE STRING, "エラーメッセージのID(メッセージクラス+番号)
MESSAGE TYPE STRING, "エラーの内容を表示
END OF TYP_FILE_ERR,
BEGIN OF TYP_BAK,
PARTNER TYPE BUT000-PARTNER, "ビジネスパートナ番号
RLTYP TYPE STRING, "BP 役割の登録
BU_GROUP TYPE STRING, "グルーピング
TITLE TYPE STRING, "タイトル(敬称)
NAME1 TYPE STRING, "名称
NAME2 TYPE STRING, "名称 2
SORT1 TYPE STRING, "検索語句1/2
SORT2 TYPE STRING, "検索語句2/2
STREET TYPE STRING, "地名
HOUSE_NUM1 TYPE STRING, "番地-号
POST_CODE1 TYPE STRING, "郵便番号
CITY1 TYPE STRING, "市区町村
COUNTRY TYPE STRING, "国コード
REGION TYPE STRING, "地域 (都道府県)
TIME_ZONE TYPE STRING, "タイムゾーン
LANGU TYPE STRING, "言語
TEL_NUMBER TYPE STRING, "電話
FAX_NUMBER TYPE STRING, "FAX
SMTP_ADDR1 TYPE STRING, "E-Mail(1)
SMTP_ADDR2 TYPE STRING, "E-Mail(2)
SMTP_ADDR3 TYPE STRING, "E-Mail(3)
LEGAL_ORG TYPE STRING, "法的実体
VBUND TYPE STRING, "取引先
BKVID TYPE STRING, "ID
BANKS TYPE STRING, "国
BANKL TYPE STRING, "銀行コード
BANKN TYPE STRING, "銀行口座
BKONT TYPE STRING, "管理キー
KOINH TYPE STRING, "口座名義人
BKREF TYPE STRING, "支払参照
XBLCK TYPE STRING, "共通ブロック
LIFNR TYPE STRING, "仕入先コード"
KUNNR TYPE STRING, "得意先コード
DLGRP TYPE STRING, "サービス業者価格決定グループ
PROFS TYPE STRING, "職業
ZSABE TYPE STRING, "仕入先担当者
BUKRS TYPE STRING, "会社コード
AKONT TYPE STRING, "統制勘定
FDGRV TYPE STRING, "CM 計画グループ
ALTKN TYPE STRING, "旧勘定コード
ZTERM TYPE STRING, "支払条件
BUSAB TYPE STRING, "記帳担当者
WITHT TYPE STRING, "源泉徴収税タイプコード
WT_WITHCD TYPE STRING, "源泉徴収税コード
WT_SUBJCT TYPE STRING, "源泉徴収課税対象
END OF TYP_BAK,
BEGIN OF TYP_MSG,
COL1 TYPE STRING,
COL2 TYPE STRING,
COL3 TYPE STRING,
END OF TYP_MSG,
TYP_BDCMSGCOLL TYPE STANDARD TABLE OF BDCMSGCOLL,
BEGIN OF TYP_CHECK,
KEY01 TYPE ZCAT_MA001-KEY01, "検索キー1
NUMB TYPE ZCAT_MA001-NUMB, "ABAP: 現在の選択番号
LOW TYPE ZCAT_MA001-LOW, "LOW
HIGH TYPE ZCAT_MA001-HIGH, "HIGH
END OF TYP_CHECK,
TYP_BAPIRET TYPE STANDARD TABLE OF BAPIRET2,
* 電子メールアドレス
BEGIN OF TYP_EMAIL,
CONSNUMBER TYPE ADR6-CONSNUMBER, "連続番号
SMTP_ADDR TYPE ADR6-SMTP_ADDR, "電子メールアドレス
END OF TYP_EMAIL,
* 銀行詳細
BEGIN OF TYP_BUT0BK,
BKVID TYPE BUT0BK-BKVID, "銀行詳細 ID
END OF TYP_BUT0BK.
*&---------------------------------------------------------------------*
* 内部テーブル定義
*&---------------------------------------------------------------------*
DATA:
I_BAK TYPE STANDARD TABLE OF TYP_BAK, "バックアップファイル作成
I_ERR TYPE STANDARD TABLE OF TYP_FILE_ERR, "エラーファイル
I_RFILE TYPE STANDARD TABLE OF TYP_MSG, "処理結果情報ファイル
I_FILE TYPE STANDARD TABLE OF TYP_FILE, "インプットファイル
I_CHECK TYPE STANDARD TABLE OF TYP_CHECK, "必須項目チェック
I_MSG TYPE STANDARD TABLE OF TYP_MSG,
I_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
I_MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL,
H_CHECK TYPE TYP_CHECK. "必須項目チェック
*&---------------------------------------------------------------------*
* 変数定義
*&---------------------------------------------------------------------*
DATA:
G_NAME TYPE STRING,
G_EFILE TYPE RLGRAP-FILENAME, " エラーファイル名
G_BFILE TYPE RLGRAP-FILENAME, " バックアップファイル名
G_DO TYPE I, " 処理件数
G_OK TYPE I, " 正常件数
G_ERR TYPE I. " エラー件数
*&---------------------------------------------------------------------*
* 選択画面定義
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_LOGIN RADIOBUTTON GROUP RB1 DEFAULT 'X' USER-COMMAND U1."登録
PARAMETERS: P_UPDATE RADIOBUTTON GROUP RB1. "変更
PARAMETERS: P_RE RADIOBUTTON GROUP RB1. "登録/変更(インターフェースファイル取込用)
SELECTION-SCREEN END OF BLOCK BL1 .
PARAMETERS: P_IFILE TYPE RLGRAP-FILENAME."インプットファイル名
PARAMETERS: P_RFILE TYPE RLGRAP-FILENAME ."処理結果ファイル名
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_SERVE RADIOBUTTON GROUP RB2 USER-COMMAND U2."サーバー
SELECTION-SCREEN COMMENT 3(6) TEXT-017.
SELECTION-SCREEN COMMENT 12(20) TEXT-028.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_LOCAL RADIOBUTTON GROUP RB2 DEFAULT 'X'. "ローカル
SELECTION-SCREEN COMMENT 3(6) TEXT-018.
SELECTION-SCREEN COMMENT 12(20) TEXT-029.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BL2.
SELECTION-SCREEN BEGIN OF BLOCK BL3 WITH FRAME TITLE TEXT-030.
PARAMETERS:CB_TSTCK AS CHECKBOX DEFAULT 'X'."テスト実行
PARAMETERS:CB_HEAD AS CHECKBOX DEFAULT 'X'."ヘッダ行あり
SELECTION-SCREEN END OF BLOCK BL3.
*&---------------------------------------------------------------------*
* INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
* 初期化処理
PERFORM FRM_INIT_DATA.
*&---------------------------------------------------------------------*
*& AT SELECTION-SCREEN ON VALUE-REQUEST
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_IFILE. " インプットファイル名
IF P_LOCAL = 'X' .
PERFORM FRM_FILENAME_GET CHANGING P_IFILE.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_RFILE. " 処理結果ファイル名
IF P_LOCAL = 'X' .
PERFORM FRM_FILENAME_GET_O CHANGING P_RFILE.
ENDIF.
*&---------------------------------------------------------------------*
* AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
PERFORM FRM_INPUT_CH.
*&---------------------------------------------------------------------*
* AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
* 選択画面のチェック
PERFORM FRM_SCREEN_CHECK.
*&---------------------------------------------------------------------*
*& メイン処理
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* 入力チェック
PERFORM FRM_INPUT_CHECK.
* ファイルアップロード
PERFORM FRM_UPLOAD_DATA.
* バッチインプット
PERFORM FRM_BAPI_PROCESS.
* 帳票結果とファイル出力
PERFORM FRM_RESULT_PROCESS.
*&---------------------------------------------------------------------*
*& TOP-OF-PAGE
*&---------------------------------------------------------------------*
TOP-OF-PAGE.
PERFORM FRM_TOP_PAGE.
*&---------------------------------------------------------------------*
*& Form INPUT_CHECK
*&---------------------------------------------------------------------*
FORM FRM_INPUT_CHECK .
DATA:
L_H TYPE STRING,
L_NAME TYPE STRING,
L_IFILENAME_SPLIT TYPE RLGRAP-FILENAME,
L_IFILEPATH_SPLIT TYPE RLGRAP-FILENAME,
L_PATH TYPE STRING.
*ファイルオプションのチェック
IF P_SERVE = 'X' AND SY-BATCH = SPACE. "サーバー
MESSAGE S007(ZAC001) DISPLAY LIKE C_TYP_E.
LEAVE LIST-PROCESSING.
ENDIF.
*インプットファイルパス分割処理
L_PATH = P_IFILE.
PERFORM FRM_SPLIT_PATH USING L_PATH
CHANGING L_IFILENAME_SPLIT
L_IFILEPATH_SPLIT .
SPLIT L_IFILENAME_SPLIT AT '.' INTO L_NAME L_H."インプットファイル名
G_NAME = L_IFILENAME_SPLIT.
*エラーファイル名作成
CONCATENATE L_IFILEPATH_SPLIT L_NAME '_' 'ERR.TXT' INTO G_EFILE.
*バックアップファイル名作成
CONCATENATE L_IFILEPATH_SPLIT L_NAME '.BAK' INTO G_BFILE.
*処理結果ファイル名作成
IF P_RFILE IS INITIAL AND P_IFILE IS NOT INITIAL.
CONCATENATE L_IFILEPATH_SPLIT L_NAME '_' SY-DATUM SY-UZEIT '.LOG'
INTO P_RFILE.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILENAME_GET
*&---------------------------------------------------------------------*
*& インプットファイル名
*&---------------------------------------------------------------------*
FORM FRM_FILENAME_GET CHANGING O_IFILE.
DATA:
LI_FILE TYPE FILETABLE, "ファイル名一覧格納
LH_FILE LIKE LINE OF LI_FILE , "ヘッダ
L_RC TYPE I, "結果
L_TITLE TYPE STRING. "WINDOW TITLE
L_TITLE = TEXT-003.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = L_TITLE
CHANGING
FILE_TABLE = LI_FILE
RC = L_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
CASE SY-SUBRC.
WHEN 0.
IF L_RC < 0.
ELSE.
READ TABLE LI_FILE INTO LH_FILE INDEX 1.
O_IFILE = LH_FILE-FILENAME.
ENDIF.
WHEN OTHERS.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*& ファイルアップロード
*&---------------------------------------------------------------------*
FORM FRM_UPLOAD_DATA .
* ファイルの保存場所によってアップロード方法を変える
IF SY-BATCH IS NOT INITIAL.
PERFORM FRM_UPLOAD_SERVER_DATA. " サーバからデータをUL
ELSEIF P_LOCAL = C_CHK.
PERFORM FRM_UPLOAD_LOCAL_DATA. " ローカルからデータをUL
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_SERVER_DATA
*&---------------------------------------------------------------------*
*& サーバからデータをUL
*&---------------------------------------------------------------------*
FORM FRM_UPLOAD_SERVER_DATA .
DATA :
LH_SFILE TYPE TYP_SFILE,
LI_SFILE TYPE STANDARD TABLE OF TYP_SFILE.
DATA LH_FILE TYPE TYP_FILE.
*----- 入力ファイル読込
OPEN DATASET P_IFILE FOR INPUT IN TEXT MODE
WITH SMART LINEFEED
ENCODING UTF-8 IGNORING CONVERSION ERRORS
SKIPPING BYTE-ORDER MARK.
DO.
CLEAR LH_SFILE.
READ DATASET P_IFILE INTO LH_SFILE-FIELD.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
APPEND LH_SFILE TO LI_SFILE.
ENDIF.
ENDDO.
IF LI_SFILE IS INITIAL.
MESSAGE E009(ZAC001) WITH G_NAME.
* 入力ファイルの読込でエラーが発生しました
ENDIF.
*----- ファイルクローズ(UNIX FILE)
CLOSE DATASET P_IFILE.
*タブで区切り編集
CLEAR LH_SFILE.
LOOP AT LI_SFILE INTO LH_SFILE.
SPLIT LH_SFILE-FIELD
AT C_TAB
INTO LH_FILE-PARTNER "ビジネスパートナ番号"
LH_FILE-RLTYP "BP 役割の登録
LH_FILE-BU_GROUP "グルーピング
LH_FILE-TITLE "タイトル(敬称)
LH_FILE-NAME1 "名称
LH_FILE-NAME2 "名称 2
LH_FILE-SORT1 "検索語句1/2
LH_FILE-SORT2 "検索語句2/2
LH_FILE-STREET "地名
LH_FILE-HOUSE_NUM1 "番地-号
LH_FILE-POST_CODE1 "郵便番号
LH_FILE-CITY1 "市区町村
LH_FILE-COUNTRY "国コード
LH_FILE-REGION "地域 (都道府県)
LH_FILE-TIME_ZONE "タイムゾーン
LH_FILE-LANGU "言語
LH_FILE-TEL_NUMBER "電話
LH_FILE-FAX_NUMBER "FAX
LH_FILE-SMTP_ADDR1 "E-Mail(1)
LH_FILE-SMTP_ADDR2 "E-Mail(2)
LH_FILE-SMTP_ADDR3 "E-Mail(3)
LH_FILE-LEGAL_ORG "法的実体
LH_FILE-VBUND "取引先
LH_FILE-BKVID "ID
LH_FILE-BANKS "国
LH_FILE-BANKL "銀行コード
LH_FILE-BANKN "銀行口座
LH_FILE-BKONT "管理キー
LH_FILE-KOINH "口座名義人
LH_FILE-BKREF "支払参照
LH_FILE-XBLCK "共通ブロック
LH_FILE-LIFNR "仕入先コード"
LH_FILE-KUNNR "得意先コード
LH_FILE-DLGRP "サービス業者価格決定グループ
LH_FILE-PROFS "職業
LH_FILE-ZSABE "仕入先担当者
LH_FILE-BUKRS "会社コード
LH_FILE-AKONT "統制勘定
LH_FILE-FDGRV "CM 計画グループ
LH_FILE-ALTKN "旧勘定コード
LH_FILE-ZTERM "支払条件
LH_FILE-BUSAB "記帳担当者
LH_FILE-WITHT "源泉徴収税タイプコード
LH_FILE-WT_WITHCD "源泉徴収税コード
LH_FILE-WT_SUBJCT. "源泉徴収課税対象
APPEND LH_FILE TO I_FILE .
ENDLOOP.
*件数の判断
PERFORM FRM_SPLIT_FILE_ACOUNT USING I_FILE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_LOCAL_DATA
*&---------------------------------------------------------------------*
*& ローカルからデータをUL
*&---------------------------------------------------------------------*
FORM FRM_UPLOAD_LOCAL_DATA .
DATA L_FNAME TYPE STRING.
L_FNAME = P_IFILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_FNAME " ファイル名
FILETYPE = C_TYPE " タイプ'ASC'
HAS_FIELD_SEPARATOR = C_CHK " X: タブ区切り
TABLES
DATA_TAB = I_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 S009(ZAC001) WITH G_NAME DISPLAY LIKE C_TYP_E.
LEAVE LIST-PROCESSING.
ENDIF.
*件数の判断
PERFORM FRM_SPLIT_FILE_ACOUNT USING I_FILE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SPLIT_FILE_ACOUNT
*&---------------------------------------------------------------------*
*& 件数計算なだ
*&---------------------------------------------------------------------*
FORM FRM_SPLIT_FILE_ACOUNT USING I_FILE TYPE TYP_I_FILE.
DATA LH_BAK TYPE TYP_BAK.
DATA LH_FILE TYPE TYP_FILE.
DATA LH_ERR TYPE TYP_FILE_ERR.
* BAKファイル作成用内部テーブルの保持
LOOP AT I_FILE INTO LH_FILE.
MOVE-CORRESPONDING LH_FILE TO LH_BAK.
APPEND LH_BAK TO I_BAK.
ENDLOOP.
IF CB_HEAD IS NOT INITIAL."ヘッダ行あり
* エラーファイルヘッダ作成
READ TABLE I_BAK INTO LH_BAK INDEX 1.
LH_ERR-ID = TEXT-022.
LH_ERR-MESSAGE = TEXT-023.
MOVE-CORRESPONDING LH_BAK TO LH_ERR.
APPEND LH_ERR TO I_ERR.
* インプットファイルヘッダ削除
DELETE I_FILE INDEX 1.
ENDIF.
CLEAR G_DO.
G_DO = LINES( I_FILE ).
*----- 対象データが0件の場合
IF G_DO = 0.
IF SY-BATCH IS INITIAL.
MESSAGE S010 DISPLAY LIKE 'E'.
* 処理対象件数は0件でした
LEAVE LIST-PROCESSING.
ELSE.
MESSAGE E010.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DATA_CHECK
*&---------------------------------------------------------------------*
*& データチェック
*&---------------------------------------------------------------------*
FORM FRM_DATA_CHECK USING PI_LH_FILE_BAK TYPE TYP_FILE
PI_LINE TYPE I
CHANGING PO_LH_FILE TYPE TYP_FILE
PO_FLG TYPE CHAR1.
DATA:
L_BUKRS TYPE CHAR4,
L_LIFNR TYPE CHAR10,
LH_LFB1 TYPE LFB1,
LH_ERR TYPE TYP_FILE_ERR,
LH_MSG TYPE TYP_MSG.
CLEAR PO_FLG.
* IF PI_LH_FILE-LIFNR IS INITIAL.
* PO_FLG = 'X'.
*
* CLEAR LH_MSG.
* LH_MSG-COL1 = PI_LINE.
* MESSAGE S030 WITH TEXT-031 INTO LH_MSG-COL3.
* CONCATENATE 'ZAC001' '030' INTO LH_MSG-COL2 SEPARATED BY SPACE.
* APPEND LH_MSG TO I_MSG.
*
**エラーファイル
* CLEAR LH_ERR.
* MOVE-CORRESPONDING PI_LH_FILE TO LH_ERR.
* LH_ERR-ID = LH_MSG-COL2.
* LH_ERR-MESSAGE = LH_MSG-COL3.
* APPEND LH_ERR TO I_ERR.
* ENDIF.
* 登録
IF P_LOGIN IS NOT INITIAL.
* 登録のチェック
PERFORM FRM_CHECK_INSERT USING PI_LH_FILE_BAK
PI_LINE
CHANGING PO_LH_FILE
PO_FLG.
* 変更
ELSEIF P_UPDATE IS NOT INITIAL.
* 変更のチェック
PERFORM FRM_CHECK_UPDATE USING PI_LH_FILE_BAK
PI_LINE
CHANGING PO_LH_FILE
PO_FLG.
* 登録/変更(インターフェースファイル取込用)
ELSE.
* ビジネスパートナー取得
CLEAR L_LIFNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PO_LH_FILE-LIFNR
IMPORTING
OUTPUT = L_LIFNR.
* 入力ファイルの仕入先コードの存在確認を行う(仕入先マスタ登録/変更 判断用)
SELECT SINGLE BUKRS
INTO L_BUKRS
FROM LFB1
WHERE LIFNR = L_LIFNR. "仕入先コード"
IF SY-SUBRC <> 0.
* 登録のチェック
PERFORM FRM_CHECK_INSERT USING PI_LH_FILE_BAK
PI_LINE
CHANGING PO_LH_FILE
PO_FLG.
ELSE.
IF L_BUKRS <> PO_LH_FILE-BUKRS.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S174 WITH PO_LH_FILE-LIFNR L_BUKRS INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '174' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ELSE.
* 変更のチェック
PERFORM FRM_CHECK_UPDATE USING PI_LH_FILE_BAK
PI_LINE
CHANGING PO_LH_FILE
PO_FLG.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_INSERT
*&---------------------------------------------------------------------*
*& 登録のチェック
*&---------------------------------------------------------------------*
FORM FRM_CHECK_INSERT USING PI_LH_FILE_BAK TYPE TYP_FILE
PI_LINE TYPE I
CHANGING PO_LH_FILE TYPE TYP_FILE
PO_FLG TYPE CHAR1.
DATA: LH_CHECK TYPE TYP_CHECK, "必須項目チェック
LH_ERR TYPE TYP_FILE_ERR,
LH_MSG TYPE TYP_MSG,
L_BUKRS TYPE CHAR4,
L_LIFNR TYPE LFA1-LIFNR,
L_SAKNR TYPE SKB1-SAKNR. "G/L 勘定コード
FIELD-SYMBOLS <LFS_FIELD> TYPE ANY.
* インプットデータの必須項目チェック
LOOP AT I_CHECK INTO H_CHECK WHERE KEY01 = PO_LH_FILE-RLTYP.
ASSIGN COMPONENT H_CHECK-NUMB OF STRUCTURE PO_LH_FILE TO <LFS_FIELD>.
IF H_CHECK-LOW = C_REQ
AND ( <LFS_FIELD> IS INITIAL
OR <LFS_FIELD> = C_SLASH ).
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S163 WITH PO_LH_FILE-RLTYP H_CHECK-HIGH INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '163' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
IF H_CHECK-LOW = C_MIN.
<LFS_FIELD> = C_SLASH.
ENDIF.
ENDLOOP.
* 存在チェック
* 仕入先マスタ存在チェック
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PO_LH_FILE-LIFNR
IMPORTING
OUTPUT = L_LIFNR.
SELECT BUKRS UP TO 1 ROWS
FROM LFB1
INTO L_BUKRS
WHERE LIFNR = L_LIFNR.
ENDSELECT.
IF SY-SUBRC = 0.
IF L_BUKRS = PO_LH_FILE-BUKRS.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S158 WITH PO_LH_FILE-LIFNR PO_LH_FILE-BUKRS SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '158' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ELSE.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S174 WITH PO_LH_FILE-LIFNR L_BUKRS INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '174' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
ENDIF.
* 会社コードの存在チェック
SELECT COUNT(*)
FROM T001
WHERE BUKRS = PO_LH_FILE-BUKRS.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S056 WITH PO_LH_FILE-BUKRS SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '056' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
* 会社コードの権限チェック
L_BUKRS = PO_LH_FILE-BUKRS.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD L_BUKRS
ID 'ACTVT' FIELD '01'.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S011 WITH L_BUKRS SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '011' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
* BP 役割の登録
SELECT COUNT(*)
FROM TB003
WHERE ROLE = PO_LH_FILE-RLTYP
AND XSUPPRESS = SPACE.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S160 WITH PO_LH_FILE-RLTYP SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '160' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
* グルーピング
SELECT COUNT(*)
FROM TB001
WHERE BU_GROUP = PO_LH_FILE-BU_GROUP.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S161 WITH PO_LH_FILE-BU_GROUP SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '161' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
* 勘定コードの存在チェック
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PO_LH_FILE-AKONT
IMPORTING
OUTPUT = L_SAKNR.
SELECT COUNT(*)
FROM SKB1
WHERE BUKRS = PO_LH_FILE-BUKRS
AND SAKNR = L_SAKNR.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S178 WITH PO_LH_FILE-BUKRS PO_LH_FILE-AKONT SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '178' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_UPDATE
*&---------------------------------------------------------------------*
*& 変更のチェック
*&---------------------------------------------------------------------*
FORM FRM_CHECK_UPDATE USING PI_LH_FILE_BAK TYPE TYP_FILE
PI_LINE TYPE I
CHANGING PO_LH_FILE TYPE TYP_FILE
PO_FLG TYPE CHAR1.
DATA: LH_CHECK TYPE TYP_CHECK, "必須項目チェック
LH_ERR TYPE TYP_FILE_ERR,
LH_MSG TYPE TYP_MSG,
L_BUKRS TYPE CHAR4,
L_GUID TYPE CVI_VEND_LINK-PARTNER_GUID,
L_PARTNER TYPE BUT000-PARTNER,
L_RLTYP TYPE BUT100-RLTYP,
L_LIFNR TYPE LFA1-LIFNR,
L_BUGRP TYPE BUT000-BU_GROUP, "ビジネスパートナグルーピング
L_SAKNR TYPE SKB1-SAKNR. "G/L 勘定コード
FIELD-SYMBOLS <LFS_FIELD> TYPE ANY.
* インプットデータの必須項目チェック
LOOP AT I_CHECK INTO H_CHECK WHERE KEY01 = PO_LH_FILE-RLTYP.
ASSIGN COMPONENT H_CHECK-NUMB OF STRUCTURE PO_LH_FILE TO <LFS_FIELD>.
IF H_CHECK-LOW = C_REQ
AND <LFS_FIELD> IS INITIAL.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S163 WITH PO_LH_FILE-RLTYP H_CHECK-HIGH INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '163' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
ENDLOOP.
* 存在チェック
* 仕入先マスタ存在チェック
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PO_LH_FILE-LIFNR
IMPORTING
OUTPUT = L_LIFNR.
SELECT BUKRS UP TO 1 ROWS
INTO L_BUKRS
FROM LFB1
WHERE LIFNR = L_LIFNR.
ENDSELECT.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S159 WITH PO_LH_FILE-LIFNR PO_LH_FILE-BUKRS SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '159' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ELSEIF L_BUKRS <> PO_LH_FILE-BUKRS.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S174 WITH PO_LH_FILE-LIFNR L_BUKRS INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '174' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
* 会社コードの存在チェック
SELECT COUNT(*)
FROM T001
WHERE BUKRS = PO_LH_FILE-BUKRS.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S056 WITH PO_LH_FILE-BUKRS SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '056' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
* 会社コードの権限チェック
L_BUKRS = PO_LH_FILE-BUKRS.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD L_BUKRS
ID 'ACTVT' FIELD '02'.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S011 WITH L_BUKRS SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '011' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
* BP GUID取得
SELECT PARTNER_GUID UP TO 1 ROWS
FROM CVI_VEND_LINK
INTO L_GUID
WHERE VENDOR = L_LIFNR.
ENDSELECT.
* ビジネスパートナ番号の取得
SELECT PARTNER UP TO 1 ROWS
FROM BUT000
INTO L_PARTNER
WHERE PARTNER_GUID = L_GUID.
ENDSELECT.
* BP 役割の登録
SELECT RLTYP UP TO 1 ROWS
INTO L_RLTYP
FROM BUT100
WHERE PARTNER = L_PARTNER.
ENDSELECT.
IF SY-SUBRC = 0
AND L_RLTYP <> PO_LH_FILE-RLTYP.
IF PO_LH_FILE-RLTYP <> C_SLASH.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S175 WITH PO_LH_FILE-LIFNR L_RLTYP INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '175' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ELSE.
PO_LH_FILE-RLTYP = L_RLTYP.
ENDIF.
ENDIF.
* グルーピング
SELECT SINGLE BU_GROUP
INTO L_BUGRP
FROM BUT000
WHERE PARTNER = L_PARTNER.
IF SY-SUBRC = 0
AND L_BUGRP <> PO_LH_FILE-BU_GROUP.
IF PO_LH_FILE-BU_GROUP = C_SLASH.
PO_LH_FILE-BU_GROUP = L_BUGRP.
ELSE.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S176 WITH PO_LH_FILE-LIFNR L_BUGRP INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '176' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
ENDIF.
* 勘定コードの存在チェック
IF PO_LH_FILE-AKONT <> C_SLASH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PO_LH_FILE-AKONT
IMPORTING
OUTPUT = L_SAKNR.
SELECT COUNT(*)
FROM SKB1
WHERE BUKRS = PO_LH_FILE-BUKRS
AND SAKNR = L_SAKNR.
IF SY-SUBRC <> 0.
* エラーメッセージ編集
CLEAR LH_MSG.
LH_MSG-COL1 = PI_LINE.
MESSAGE S178 WITH PO_LH_FILE-BUKRS PO_LH_FILE-AKONT SPACE INTO LH_MSG-COL3.
CONCATENATE 'ZAC001' '178' INTO LH_MSG-COL2 SEPARATED BY SPACE.
APPEND LH_MSG TO I_MSG.
* エラーファイル
CLEAR LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE_BAK TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
PO_FLG = 'X'.
RETURN.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FIELD_CHECK
*&---------------------------------------------------------------------*
*& インプットデータの必須項目チェック
*&---------------------------------------------------------------------*
FORM FRM_FIELD_CHECK .
* インプットデータの必須項目チェック
REFRESH I_CHECK.
SELECT KEY01 "検索キー1
NUMB "ABAP: 現在の選択番号
LOW "LOW
HIGH "HIGH
FROM ZCAT_MA001
INTO TABLE I_CHECK
WHERE NAME = C_CHECK
AND PRGNM = SY-REPID.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_RESULT_PROCESS
*&---------------------------------------------------------------------*
*& 帳票結果出力とファイル出力
*&---------------------------------------------------------------------*
FORM FRM_RESULT_PROCESS .
*帳票結果出力
PERFORM FRM_WRITE_RESULT.
*エラーファイルと処理結果ファイルの出力
PERFORM FRM_OUPUT_FILE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_WRITE_RESULT
*&---------------------------------------------------------------------*
*& 帳票結果出力
*&---------------------------------------------------------------------*
FORM FRM_WRITE_RESULT .
DATA L_OPTION TYPE STRING.
DATA L_TEST TYPE STRING.
DATA LH_MSG TYPE TYP_MSG.
DATA LH_RFILE TYPE TYP_MSG.
DATA L_Y TYPE CHAR4.
DATA L_M TYPE CHAR2.
DATA L_D TYPE CHAR2.
DATA L_TIME TYPE STRING.
DATA L_01 TYPE CHAR2.
DATA L_02 TYPE CHAR2.
DATA L_03 TYPE CHAR2.
DATA L_TEXT TYPE STRING.
DATA L_TITLE TYPE CHAR50.
IF CB_TSTCK IS NOT INITIAL.
L_TITLE = TEXT-027. "仕入先マスタ一括更新結果画面(テスト実行)
ELSE.
L_TITLE = TEXT-020. "仕入先マスタ一括更新結果画面
ENDIF.
G_OK = G_DO - G_ERR."正常件数
IF P_SERVE IS NOT INITIAL.
L_OPTION = TEXT-017."サーバー
ELSE.
L_OPTION = TEXT-018."ローカル
ENDIF.
IF CB_TSTCK IS NOT INITIAL.
L_TEST = TEXT-019."テスト実行
ENDIF.
L_Y = SY-DATUM+0(4).
L_M = SY-DATUM+4(2).
L_D = SY-DATUM+6(2).
CONCATENATE L_Y L_M L_D INTO L_TEXT SEPARATED BY '/'.
L_01 = SY-UZEIT+0(2).
L_02 = SY-UZEIT+2(2).
L_03 = SY-UZEIT+4(2).
CONCATENATE L_01 L_02 L_03 INTO L_TIME SEPARATED BY ':'.
WRITE:50(50) L_TITLE. "仕入先マスタ一括更新結果画面
WRITE:130 SY-DATUM.
WRITE:145 SY-UZEIT.
WRITE:155 SY-PAGNO.
SKIP 2.
WRITE:TEXT-005. "<実行条件>
WRITE:/2 TEXT-006,24 P_IFILE. "インプットファイル名
WRITE:/2 TEXT-007,24 P_RFILE. "処理結果ファイル名
WRITE:/2 TEXT-009,24 L_OPTION. "ファイルオプション
WRITE:/2 TEXT-010,24 L_TEST. "テスト実行
SKIP.
WRITE: TEXT-011. "<処理結果サマリ>
WRITE:/2 TEXT-012,24 ':',G_DO. "処理件数
WRITE:/2 TEXT-013,24 ':',G_OK. "正常件数
WRITE:/2 TEXT-014,24 ':',G_ERR. "エラー件数
SKIP.
WRITE:TEXT-015. "<処理結果>
WRITE:/3 TEXT-021, "行No.
18 TEXT-022, "メッセージID
45 TEXT-023. "メッセージ
* SORT I_MSG BY COL1.
LOOP AT I_MSG INTO LH_MSG.
WRITE:/3 LH_MSG-COL1,
18 LH_MSG-COL2,
45 LH_MSG-COL3.
ENDLOOP.
*処理結果情報ファイ編集
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-026."<ヘッダ情報>
LH_RFILE-COL2 = L_TEXT.
LH_RFILE-COL3 = L_TIME.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-005."<実行条件>
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-006."インプットファイル名
LH_RFILE-COL2 = P_IFILE.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-007."処理結果ファイル名
LH_RFILE-COL2 = P_RFILE.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-009."ファイルオプション
LH_RFILE-COL2 = L_OPTION.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-010."テスト実行
LH_RFILE-COL2 = L_TEST.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-011."<処理結果サマリ>
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-012."処理件数
LH_RFILE-COL2 = ':'.
LH_RFILE-COL3 = G_DO.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-013."正常件数
LH_RFILE-COL2 = ':'.
LH_RFILE-COL3 = G_OK.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-014."エラー件数
LH_RFILE-COL2 = ':'.
LH_RFILE-COL3 = G_ERR.
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-015."<処理結果>
APPEND LH_RFILE TO I_RFILE.
CLEAR LH_RFILE.
LH_RFILE-COL1 = TEXT-021.
LH_RFILE-COL2 = TEXT-022.
LH_RFILE-COL3 = TEXT-023.
APPEND LH_RFILE TO I_RFILE.
LOOP AT I_MSG INTO LH_MSG.
CLEAR LH_RFILE.
LH_RFILE-COL1 = LH_MSG-COL1.
LH_RFILE-COL2 = LH_MSG-COL2.
LH_RFILE-COL3 = LH_MSG-COL3.
APPEND LH_RFILE TO I_RFILE.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_OUPUT_FILE
*&---------------------------------------------------------------------*
*& エラーファイルと処理結果ファイルの出力
*&---------------------------------------------------------------------*
FORM FRM_OUPUT_FILE .
IF P_LOCAL IS INITIAL.
PERFORM FRM_OUTPUT_SERVE. " サーバファイル出力
ELSE.
PERFORM FRM_OUTPUT_LOCAL. " ローカルファイル出力
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_OUTPUT_SERVE
*&---------------------------------------------------------------------*
*& サーバファイル出力
*&---------------------------------------------------------------------*
FORM FRM_OUTPUT_SERVE .
DATA L_FILE TYPE STRING.
DATA LH_RFILE TYPE TYP_MSG.
DATA LH_ERR TYPE TYP_FILE_ERR.
DATA LH_BAK TYPE TYP_BAK.
DATA L_FLG TYPE CHAR1.
DATA L_LINE TYPE I.
*-------------処理結果ファイルの出力
OPEN DATASET P_RFILE FOR OUTPUT
IN TEXT MODE
ENCODING UTF-8 IGNORING CONVERSION ERRORS.
IF SY-SUBRC <> 0.
IF SY-BATCH IS INITIAL.
MESSAGE S006(ZAC001) DISPLAY LIKE C_TYP_E.
LEAVE LIST-PROCESSING.
ELSE.
MESSAGE E006(ZAC001).
ENDIF.
ENDIF.
LOOP AT I_RFILE INTO LH_RFILE.
CONCATENATE LH_RFILE-COL1
LH_RFILE-COL2
LH_RFILE-COL3
INTO L_FILE
SEPARATED BY C_TAB.
TRANSFER L_FILE TO P_RFILE.
ENDLOOP.
IF L_FILE IS INITIAL.
MESSAGE E012(ZAC001).
ENDIF.
CLOSE DATASET P_RFILE.
*-------------エラーファイル作成
*----- ファイルOPEN
IF CB_HEAD IS NOT INITIAL."ヘッダ行あり
DESCRIBE TABLE I_ERR LINES L_LINE.
IF L_LINE > 1 AND CB_TSTCK IS INITIAL.
L_FLG = 'X'.
ENDIF.
ELSE.
IF CB_TSTCK IS INITIAL.
L_FLG = 'X'.
ENDIF.
ENDIF.
IF L_FLG IS NOT INITIAL.
OPEN DATASET G_EFILE FOR OUTPUT
IN TEXT MODE
ENCODING UTF-8.
IF SY-SUBRC <> 0.
MESSAGE E012(ZAC001).
ENDIF.
LOOP AT I_ERR INTO LH_ERR.
CLEAR L_FILE.
CONCATENATE LH_ERR-PARTNER "ビジネスパートナ番号"
LH_ERR-RLTYP "BP 役割の登録
LH_ERR-BU_GROUP "グルーピング
LH_ERR-TITLE "タイトル(敬称)
LH_ERR-NAME1 "名称
LH_ERR-NAME2 "名称 2
LH_ERR-SORT1 "検索語句1/2
LH_ERR-SORT2 "検索語句2/2
LH_ERR-STREET "地名
LH_ERR-HOUSE_NUM1 "番地-号
LH_ERR-POST_CODE1 "郵便番号
LH_ERR-CITY1 "市区町村
LH_ERR-COUNTRY "国コード
LH_ERR-REGION "地域 (都道府県)
LH_ERR-TIME_ZONE "タイムゾーン
LH_ERR-LANGU "言語
LH_ERR-TEL_NUMBER "電話
LH_ERR-FAX_NUMBER "FAX
LH_ERR-SMTP_ADDR1 "E-Mail(1)
LH_ERR-SMTP_ADDR2 "E-Mail(2)
LH_ERR-SMTP_ADDR3 "E-Mail(3)
LH_ERR-LEGAL_ORG "法的実体
LH_ERR-VBUND "取引先
LH_ERR-BKVID "ID
LH_ERR-BANKS "国
LH_ERR-BANKL "銀行コード
LH_ERR-BANKN "銀行口座
LH_ERR-BKONT "管理キー
LH_ERR-KOINH "口座名義人
LH_ERR-BKREF "支払参照
LH_ERR-XBLCK "共通ブロック
LH_ERR-LIFNR "仕入先コード
LH_ERR-KUNNR "得意先コード
LH_ERR-DLGRP "サービス業者価格決定グループ
LH_ERR-PROFS "職業
LH_ERR-ZSABE "仕入先担当者
LH_ERR-BUKRS "会社コード
LH_ERR-AKONT "統制勘定
LH_ERR-FDGRV "CM 計画グループ
LH_ERR-ALTKN "旧勘定コード
LH_ERR-ZTERM "支払条件
LH_ERR-BUSAB "記帳担当者
LH_ERR-WITHT "源泉徴収税タイプコード
LH_ERR-WT_WITHCD "源泉徴収税コード
LH_ERR-WT_SUBJCT "源泉徴収課税対象
LH_ERR-ID "
LH_ERR-MESSAGE "
INTO L_FILE SEPARATED BY C_TAB.
TRANSFER L_FILE TO G_EFILE.
ENDLOOP.
CLOSE DATASET G_EFILE.
ENDIF.
*-------------バックアップファイル作成
*----- ファイルOPEN
OPEN DATASET G_BFILE FOR OUTPUT
IN TEXT MODE
ENCODING UTF-8 IGNORING CONVERSION ERRORS.
IF SY-SUBRC <> 0.
MESSAGE E013(ZAC001).
ENDIF.
LOOP AT I_BAK INTO LH_BAK.
CLEAR L_FILE.
CONCATENATE LH_BAK-PARTNER "ビジネスパートナ番号"
LH_BAK-RLTYP "BP 役割の登録
LH_BAK-BU_GROUP "グルーピング
LH_BAK-TITLE "タイトル(敬称)
LH_BAK-NAME1 "名称
LH_BAK-NAME2 "名称 2
LH_BAK-SORT1 "検索語句1/2
LH_BAK-SORT2 "検索語句2/2
LH_BAK-STREET "地名
LH_BAK-HOUSE_NUM1 "番地-号
LH_BAK-POST_CODE1 "郵便番号
LH_BAK-CITY1 "市区町村
LH_BAK-COUNTRY "国コード
LH_BAK-REGION "地域 (都道府県)
LH_BAK-TIME_ZONE "タイムゾーン
LH_BAK-LANGU "言語
LH_BAK-TEL_NUMBER "電話
LH_BAK-FAX_NUMBER "FAX
LH_BAK-SMTP_ADDR1 "E-Mail(1)
LH_BAK-SMTP_ADDR2 "E-Mail(2)
LH_BAK-SMTP_ADDR3 "E-Mail(3)
LH_BAK-LEGAL_ORG "法的実体
LH_BAK-VBUND "取引先
LH_BAK-BKVID "ID
LH_BAK-BANKS "国
LH_BAK-BANKL "銀行コード
LH_BAK-BANKN "銀行口座
LH_BAK-BKONT "管理キー
LH_BAK-KOINH "口座名義人
LH_BAK-BKREF "支払参照
LH_BAK-XBLCK "共通ブロック
LH_BAK-LIFNR "仕入先コード"
LH_BAK-KUNNR "得意先コード
LH_BAK-DLGRP "サービス業者価格決定グループ
LH_BAK-PROFS "職業
LH_BAK-ZSABE "仕入先担当者
LH_BAK-BUKRS "会社コード
LH_BAK-AKONT "統制勘定
LH_BAK-FDGRV "CM 計画グループ
LH_BAK-ALTKN "旧勘定コード
LH_BAK-ZTERM "支払条件
LH_BAK-BUSAB "記帳担当者
LH_BAK-WITHT "源泉徴収税タイプコード
LH_BAK-WT_WITHCD "源泉徴収税コード
LH_BAK-WT_SUBJCT "源泉徴収課税対象
INTO L_FILE SEPARATED BY C_TAB.
TRANSFER L_FILE TO G_BFILE.
ENDLOOP.
CLOSE DATASET G_BFILE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_OUTPUT_LOCAL
*&---------------------------------------------------------------------*
*& ローカルファイル出力
*&---------------------------------------------------------------------*
FORM FRM_OUTPUT_LOCAL .
DATA L_FLG TYPE CHAR1.
DATA L_LINE TYPE I.
*-------------処理結果ファイルの出力
PERFORM FRM_DOWNLOAD_FILE USING I_RFILE "処理結果ファイル
P_RFILE "処理結果ファイル名
CHANGING L_FLG.
IF L_FLG IS NOT INITIAL.
MESSAGE S012(ZAC001) DISPLAY LIKE C_TYP_E.
LEAVE LIST-PROCESSING.
ENDIF.
*-------------エラーファイル作成
IF CB_HEAD IS NOT INITIAL."ヘッダ行あり
DESCRIBE TABLE I_ERR LINES L_LINE.
IF L_LINE > 1 AND CB_TSTCK IS INITIAL.
PERFORM FRM_DOWNLOAD_FILE USING I_ERR "エラーファイル
G_EFILE "エラーファイル名
CHANGING L_FLG.
IF L_FLG IS NOT INITIAL.
MESSAGE S012(ZAC001) DISPLAY LIKE C_TYP_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ELSE.
IF CB_TSTCK IS INITIAL.
PERFORM FRM_DOWNLOAD_FILE USING I_ERR "エラーファイル
G_EFILE "エラーファイル名
CHANGING L_FLG.
IF L_FLG IS NOT INITIAL.
MESSAGE S012(ZAC001) DISPLAY LIKE C_TYP_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDIF.
*-------------バックアップファイル作成
IF CB_TSTCK IS INITIAL.
PERFORM FRM_DOWNLOAD_FILE USING I_BAK "バックアップファイル
G_BFILE "バックアップファイル名
CHANGING L_FLG.
IF L_FLG IS NOT INITIAL.
MESSAGE S013(ZAC001) DISPLAY LIKE C_TYP_E.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SPLIT_PATH
*&---------------------------------------------------------------------*
*& ファイルパス分割処理
*&---------------------------------------------------------------------*
FORM FRM_SPLIT_PATH USING I_L_PATH TYPE STRING
CHANGING O_FILENAME_SPLIT TYPE RLGRAP-FILENAME
O_FILEPATH_SPLIT TYPE RLGRAP-FILENAME.
IF P_LOCAL IS NOT INITIAL. " ローカルの場合
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
FULL_NAME = I_L_PATH
IMPORTING
STRIPPED_NAME = O_FILENAME_SPLIT
FILE_PATH = O_FILEPATH_SPLIT
EXCEPTIONS
X_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.
ELSE.
CALL FUNCTION 'TRINT_SPLIT_FILE_AND_PATH'
EXPORTING
FULL_NAME = I_L_PATH
IMPORTING
STRIPPED_NAME = O_FILENAME_SPLIT
FILE_PATH = O_FILEPATH_SPLIT
EXCEPTIONS
X_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.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD_FILE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
FORM FRM_DOWNLOAD_FILE USING I_TAB_FILE TYPE TABLE
I_P_FNAME TYPE C
CHANGING O_FLG TYPE CHAR1.
DATA: L_FNAME TYPE STRING. " 出力ファイル名
*----- 型合わせ
L_FNAME = I_P_FNAME. " 出力ファイル名
*----- 汎用モジュールの呼出し:ダウンロード
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_FNAME " ファイル名
FILETYPE = C_TYPE " ファイルタイプ
WRITE_FIELD_SEPARATOR = C_TAB " TAB種別
CODEPAGE = C_UTF8 " コードページ
TABLES
DATA_TAB = I_TAB_FILE " 内部テーブル
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.
O_FLG = C_CHK.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILENAME_GET_O
*&---------------------------------------------------------------------*
*& 出力ファイル名の取得
*&---------------------------------------------------------------------*
FORM FRM_FILENAME_GET_O CHANGING O_RFILE.
DATA:
L_FILE TYPE STRING, " ファイル名
L_PATH TYPE STRING, " パス
L_FULL TYPE STRING. " フルパス
*----- メソッド:ファイル名取得
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
CHANGING
FILENAME = L_FILE
PATH = L_PATH
FULLPATH = L_FULL
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
CASE SY-SUBRC.
WHEN 0.
O_RFILE = L_FULL.
WHEN OTHERS.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_INIT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM FRM_INIT_DATA .
REFRESH:
I_BAK , "バックアップファイル作成
I_ERR , "エラーファイル
I_RFILE , "処理結果情報ファイル
I_FILE , "インプットファイル
I_MSG .
CLEAR:
G_NAME,
G_EFILE , " エラーファイル名
G_BFILE , " バックアップファイル名
G_DO , " 処理件数
G_OK , " 正常件数
G_ERR . " エラー件数
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_TOP_PAGE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_TOP_PAGE .
DATA L_TITLE TYPE CHAR50.
IF CB_TSTCK IS NOT INITIAL.
L_TITLE = TEXT-027.
ELSE.
L_TITLE = TEXT-020.
ENDIF.
IF SY-PAGNO <> 1.
WRITE:50(50) L_TITLE.
WRITE:130 SY-DATUM.
WRITE:145 SY-UZEIT.
WRITE:155 SY-PAGNO.
SKIP.
WRITE:TEXT-015. "<処理結果>
WRITE:/3 TEXT-021, "行No.
18 TEXT-022, "メッセージID
35 TEXT-023. "メッセージ
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_INPUT_CH
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM FRM_INPUT_CH .
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_IFILE'.
SCREEN-REQUIRED = '2'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SCREEN_CHECK
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM FRM_SCREEN_CHECK .
DATA:
L_RFILEPATH_SPLIT_TMP TYPE STRING,
L_RFILENAME_SPLIT TYPE RLGRAP-FILENAME,
L_RFILEPATH_SPLIT TYPE RLGRAP-FILENAME,
L_PATH TYPE STRING,
L_RESULT TYPE ABAP_BOOL, " 結果
L_IFILE TYPE STRING. " インプットファイル名
CHECK SY-UCOMM <> 'U1' AND SY-UCOMM <> 'U2' .
*入力ファイルの必須チェック
IF P_IFILE IS INITIAL.
MESSAGE E004(ZAC001).
ENDIF.
IF P_LOCAL = 'X' AND SY-BATCH = 'X'. "'ローカル
MESSAGE E008(ZAC001) .
ENDIF.
IF SY-BATCH IS INITIAL. " ローカルの場合
*-------------.インプットファイルの存在チェック
L_IFILE = P_IFILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = L_IFILE
RECEIVING
RESULT = L_RESULT
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
CASE SY-SUBRC.
WHEN 0.
IF L_RESULT = SPACE.
MESSAGE E005(ZAC001).
ENDIF.
WHEN OTHERS.
MESSAGE E005(ZAC001).
ENDCASE.
*------------.処理結果ファイルの存在チェック
*処理結果ファイルパス分割処理
IF P_RFILE IS NOT INITIAL.
CLEAR L_PATH.
L_PATH = P_RFILE.
PERFORM FRM_SPLIT_PATH USING L_PATH
CHANGING L_RFILENAME_SPLIT
L_RFILEPATH_SPLIT .
*メソッドの呼出し:ディレクトリの存在チェック
L_RFILEPATH_SPLIT_TMP = L_RFILEPATH_SPLIT .
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXIST
EXPORTING
DIRECTORY = L_RFILEPATH_SPLIT_TMP " ディレクトリ名
RECEIVING
RESULT = L_RESULT " 結果(存在する場合:'X')
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
CASE SY-SUBRC.
WHEN 0.
IF L_RESULT = SPACE.
MESSAGE E006(ZAC001).
ENDIF.
WHEN OTHERS.
MESSAGE E006(ZAC001).
ENDCASE.
ENDIF.
ELSE."サーバの場合
*----- 入力ファイルオープン(UNIX FILE)
OPEN DATASET P_IFILE FOR INPUT
IN TEXT MODE
WITH SMART LINEFEED
ENCODING UTF-8 IGNORING CONVERSION ERRORS
SKIPPING BYTE-ORDER MARK.
IF SY-SUBRC <> 0.
MESSAGE E005(ZAC001).
ENDIF.
CLOSE DATASET P_IFILE.
**----- 結果ファイルオープン(UNIX FILE)
IF P_RFILE IS NOT INITIAL.
OPEN DATASET P_RFILE FOR OUTPUT
IN TEXT MODE
ENCODING UTF-8 IGNORING CONVERSION ERRORS.
IF SY-SUBRC <> 0.
MESSAGE E006(ZAC001).
ENDIF.
CLOSE DATASET P_RFILE.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BAPI_PROCESS
*&---------------------------------------------------------------------*
*& バッチインプット
*&---------------------------------------------------------------------*
FORM FRM_BAPI_PROCESS .
DATA:
L_LIFNR TYPE CHAR10,
LH_CVI_VEND_LINK TYPE CVI_VEND_LINK,
LH_BUT000 TYPE BUT000,
LH_MSG TYPE TYP_MSG, "
L_MSG TYPE STRING,
LI_MESSTAB TYPE STANDARD TABLE OF BAPIRET2,
LH_MESSTAB TYPE BAPIRET2,
L_LINE TYPE I,
L_FLG TYPE CHAR1,
LH_FILE TYPE TYP_FILE,
LH_FILE_BAK TYPE TYP_FILE.
CLEAR:
LH_CVI_VEND_LINK,
LH_BUT000.
* インプットデータの必須項目チェック
PERFORM FRM_FIELD_CHECK.
*---------------------登録
IF P_LOGIN IS NOT INITIAL.
LOOP AT I_FILE INTO LH_FILE.
L_LINE = SY-TABIX.
LH_FILE_BAK = LH_FILE.
* ファイルデータチェック
PERFORM FRM_DATA_CHECK USING LH_FILE_BAK
L_LINE
CHANGING LH_FILE
L_FLG.
IF L_FLG IS NOT INITIAL.
G_ERR = G_ERR + 1.
CONTINUE.
ENDIF.
* 仕入先マスタ登録
* PERFORM FRM_BDC_SET_C USING LH_FILE
* CHANGING L_FLG
* LI_MESSTAB.
PERFORM FRM_BAPI_SET_C USING LH_FILE
CHANGING L_FLG
LI_MESSTAB.
IF L_FLG IS NOT INITIAL.
G_ERR = G_ERR + 1.
CLEAR LH_MESSTAB.
DELETE LI_MESSTAB WHERE TYPE <> C_A
AND TYPE <> C_E
AND TYPE <> C_X.
* エラーメッセージの編集
IF LI_MESSTAB IS NOT INITIAL.
PERFORM FRM_ERR_EDIT USING LH_FILE_BAK
LI_MESSTAB
L_LINE.
ENDIF.
ENDIF.
CLEAR:
LH_FILE,
L_FLG,
LH_MESSTAB.
REFRESH LI_MESSTAB.
ENDLOOP.
*---------------------変更
ELSEIF P_UPDATE IS NOT INITIAL.
LOOP AT I_FILE INTO LH_FILE.
L_LINE = SY-TABIX.
LH_FILE_BAK = LH_FILE.
* ファイルデータチェック
PERFORM FRM_DATA_CHECK USING LH_FILE_BAK
L_LINE
CHANGING LH_FILE
L_FLG.
IF L_FLG IS NOT INITIAL.
G_ERR = G_ERR + 1.
CONTINUE.
ENDIF.
* ビジネスパートナー取得
CLEAR L_LIFNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LH_FILE-LIFNR
IMPORTING
OUTPUT = L_LIFNR.
SELECT SINGLE *
FROM CVI_VEND_LINK
INTO LH_CVI_VEND_LINK
WHERE VENDOR = L_LIFNR. "仕入先コード"
SELECT SINGLE *
FROM BUT000
INTO LH_BUT000
WHERE PARTNER_GUID = LH_CVI_VEND_LINK-PARTNER_GUID.
* 仕入先マスタ変更
* PERFORM FRM_BDC_SET_U USING LH_FILE
* LH_BUT000-PARTNER "ビジネスパートナー
* CHANGING L_FLG
* LI_MESSTAB.
PERFORM FRM_BAPI_SET_U USING LH_FILE
LH_BUT000-PARTNER "ビジネスパートナー
LH_CVI_VEND_LINK-PARTNER_GUID
CHANGING L_FLG
LI_MESSTAB.
IF L_FLG IS NOT INITIAL.
G_ERR = G_ERR + 1.
DELETE LI_MESSTAB WHERE TYPE <> C_A
AND TYPE <> C_E
AND TYPE <> C_X.
* エラーメッセージの編集
IF LI_MESSTAB IS NOT INITIAL.
PERFORM FRM_ERR_EDIT USING LH_FILE_BAK
LI_MESSTAB
L_LINE.
ENDIF.
ENDIF.
CLEAR:
LH_FILE,
L_FLG,
LH_MESSTAB.
REFRESH LI_MESSTAB.
ENDLOOP.
*-----------------登録/変更(インターフェースファイル取込用)
ELSE.
LOOP AT I_FILE INTO LH_FILE.
L_LINE = SY-TABIX.
LH_FILE_BAK = LH_FILE.
* ファイルデータチェック
PERFORM FRM_DATA_CHECK USING LH_FILE_BAK
L_LINE
CHANGING LH_FILE
L_FLG.
IF L_FLG IS NOT INITIAL.
G_ERR = G_ERR + 1.
CONTINUE.
ENDIF.
* ビジネスパートナー取得
CLEAR L_LIFNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LH_FILE-LIFNR
IMPORTING
OUTPUT = L_LIFNR.
* ビジネスパートナー取得 (仕入先マスタ登録/変更 判断用)
SELECT SINGLE *
FROM CVI_VEND_LINK
INTO LH_CVI_VEND_LINK
WHERE VENDOR = L_LIFNR. "仕入先コード"
SELECT SINGLE *
FROM BUT000
INTO LH_BUT000
WHERE PARTNER_GUID = LH_CVI_VEND_LINK-PARTNER_GUID.
IF LH_BUT000-PARTNER IS INITIAL."ビジネスパートナー
* 仕入先マスタ登録
* PERFORM FRM_BDC_SET_C USING LH_FILE
* CHANGING L_FLG
* LI_MESSTAB.
PERFORM FRM_BAPI_SET_C USING LH_FILE
CHANGING L_FLG
LI_MESSTAB.
IF L_FLG IS NOT INITIAL.
G_ERR = G_ERR + 1.
DELETE LI_MESSTAB WHERE TYPE <> C_A
AND TYPE <> C_E
AND TYPE <> C_X.
* エラーメッセージの編集
IF LI_MESSTAB IS NOT INITIAL.
PERFORM FRM_ERR_EDIT USING LH_FILE_BAK
LI_MESSTAB
L_LINE.
ENDIF.
ENDIF.
ELSE.
* 仕入先マスタ変更
* PERFORM FRM_BDC_SET_U USING LH_FILE
* LH_BUT000-PARTNER "ビジネスパートナー
* CHANGING L_FLG
* LI_MESSTAB.
PERFORM FRM_BAPI_SET_U USING LH_FILE
LH_BUT000-PARTNER "ビジネスパートナー
LH_CVI_VEND_LINK-PARTNER_GUID
CHANGING L_FLG
LI_MESSTAB.
IF L_FLG IS NOT INITIAL.
G_ERR = G_ERR + 1.
DELETE LI_MESSTAB WHERE TYPE <> C_A
AND TYPE <> C_E
AND TYPE <> C_X.
* エラーメッセージの編集
IF LI_MESSTAB IS NOT INITIAL.
PERFORM FRM_ERR_EDIT USING LH_FILE_BAK
LI_MESSTAB
L_LINE.
ENDIF.
ENDIF.
ENDIF.
CLEAR:
L_FLG,
LH_MESSTAB,
LH_CVI_VEND_LINK,
LH_BUT000.
REFRESH LI_MESSTAB.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BDC_SET_C
*&---------------------------------------------------------------------*
*& 仕入先マスタ登録BDC
*&---------------------------------------------------------------------*
FORM FRM_BDC_SET_C USING PI_LH_FILE TYPE TYP_FILE
CHANGING PO_FLG TYPE CHAR1
P0_MESSTAB TYPE TYP_BDCMSGCOLL.
DATA:
L_N TYPE CTU_PARAMS-DISMODE VALUE 'N',
LH_MESSTAB TYPE BDCMSGCOLL.
REFRESH:
I_BDCDATA,
P0_MESSTAB.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_LOCATOR_CLOSE'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_CRE_ORGA'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'BUS_JOEL_MAIN-CHANGE_NUMBER'."
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_SUBSCR' 'SAPLBUPA_DIALOG_JOEL'."
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1110_CHG_ROLE'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_SUBSCR' 'SAPLBUPA_DIALOG_JOEL'.
IF PI_LH_FILE-BU_GROUP <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS_JOEL_MAIN-CREATION_GROUP' PI_LH_FILE-BU_GROUP."グルーピング
ENDIF.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_SUBSCR' 'SAPLBUPA_DIALOG_JOEL'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'BUS_JOEL_MAIN-PARTNER_ROLE'.
IF PI_LH_FILE-RLTYP <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS_JOEL_MAIN-PARTNER_ROLE' PI_LH_FILE-RLTYP."BP 役割
ENDIF.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS_JOEL_MAIN-PARTNER_TIMEDEP' '000001'.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=OPT1'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_01'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=TEST'.
IF PI_LH_FILE-TITLE <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS000FLDS-TITLE_MEDI' PI_LH_FILE-TITLE. "タイトル(敬称)
ENDIF.
IF PI_LH_FILE-NAME1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-NAME_ORG1' PI_LH_FILE-NAME1. "名称
ENDIF.
IF PI_LH_FILE-NAME2 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-NAME_ORG2' PI_LH_FILE-NAME2. "名称2
ENDIF.
IF PI_LH_FILE-SORT1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS000FLDS-BU_SORT1_TXT' PI_LH_FILE-SORT1."検索語句1
ENDIF.
IF PI_LH_FILE-SORT2 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS000FLDS-BU_SORT2_TXT' PI_LH_FILE-SORT2."検索語句2
ENDIF.
IF PI_LH_FILE-STREET <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-STREET' PI_LH_FILE-STREET. "地名
ENDIF.
IF PI_LH_FILE-HOUSE_NUM1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-HOUSE_NUM1' PI_LH_FILE-HOUSE_NUM1."番地-号
ENDIF.
IF PI_LH_FILE-POST_CODE1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-POST_CODE1' PI_LH_FILE-POST_CODE1."郵便番号
ENDIF.
IF PI_LH_FILE-CITY1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-CITY1' PI_LH_FILE-CITY1. "市区町村
ENDIF.
IF PI_LH_FILE-COUNTRY <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-COUNTRY' PI_LH_FILE-COUNTRY. "国コード
ENDIF.
IF PI_LH_FILE-REGION <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-REGION' PI_LH_FILE-REGION. "地域 (都道府県)
ENDIF.
IF PI_LH_FILE-TIME_ZONE <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-TIME_ZONE' PI_LH_FILE-TIME_ZONE."タイムゾーン
ENDIF.
IF PI_LH_FILE-LANGU <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-LANGU' PI_LH_FILE-LANGU. "言語
ENDIF.
IF PI_LH_FILE-TEL_NUMBER <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'SZA1_D0100-TEL_NUMBER' PI_LH_FILE-TEL_NUMBER. "電話
ENDIF.
IF PI_LH_FILE-FAX_NUMBER <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'SZA1_D0100-FAX_NUMBER' PI_LH_FILE-FAX_NUMBER."FAX
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=$INT'.
PERFORM FRM_BDC_SET USING 'SAPLSZA6' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'ADSMTP-SMTP_ADDR(01)'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=NEWL'.
IF PI_LH_FILE-SMTP_ADDR1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADSMTP-SMTP_ADDR(01)' PI_LH_FILE-SMTP_ADDR1."E-Mail(1)
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLSZA6' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'ADSMTP-SMTP_ADDR(01)'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=NEWL'.
IF PI_LH_FILE-SMTP_ADDR2 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADSMTP-SMTP_ADDR(01)' PI_LH_FILE-SMTP_ADDR2."E-Mail(2)
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLSZA6' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'ADSMTP-SMTP_ADDR(01)'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=CONT'.
IF PI_LH_FILE-SMTP_ADDR3 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADSMTP-SMTP_ADDR(01)' PI_LH_FILE-SMTP_ADDR3."E-Mail(3)
ENDIF.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_SUBSCR' 'SAPLSZA11'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_03'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_04'.
* IF PI_LH_FILE-LEGAL_ORG <> C_SLASH.
* PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-LEGAL_ORG' PI_LH_FILE-LEGAL_ORG."法的実体
* ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_05'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'GS_BP001-VBUND'.
IF PI_LH_FILE-VBUND <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_BP001-VBUND' PI_LH_FILE-VBUND."取引先
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_06'.
IF PI_LH_FILE-BKVID <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BKVID(01)' PI_LH_FILE-BKVID."ID
ENDIF.
IF PI_LH_FILE-BANKS <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BANKS(01)' PI_LH_FILE-BANKS."国
ENDIF.
IF PI_LH_FILE-BANKL <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BANKL(01)' PI_LH_FILE-BANKL."銀行コード
ENDIF.
IF PI_LH_FILE-BANKN <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BANKN(01)' PI_LH_FILE-BANKN."銀行口座
ENDIF.
IF PI_LH_FILE-BKONT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BKONT(01)' PI_LH_FILE-BKONT."管理キー
ENDIF.
IF PI_LH_FILE-BKREF <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BKREF(01)' PI_LH_FILE-BKREF."支払参照
ENDIF.
IF PI_LH_FILE-KOINH <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-KOINH(01)' PI_LH_FILE-KOINH."口座名義人
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_MAIN_ENTER'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_07'.
IF PI_LH_FILE-XBLCK <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-XBLCK' PI_LH_FILE-XBLCK."共通ブロック
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_MAIN_P02'.
IF PI_LH_FILE-LIFNR <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GV_VENDOR_EXT' PI_LH_FILE-LIFNR."仕入先コード
ENDIF.
IF PI_LH_FILE-KUNNR <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFA1-KUNNR' PI_LH_FILE-KUNNR."得意先コード
ENDIF.
IF PI_LH_FILE-DLGRP <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFA1-DLGRP' PI_LH_FILE-DLGRP."サービス業者価格決定グループ
ENDIF.
IF PI_LH_FILE-PROFS <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFA1-PROFS' PI_LH_FILE-PROFS."職業
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=OPT2'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_02'.
IF PI_LH_FILE-BUKRS <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BS001-BUKRS' PI_LH_FILE-BUKRS."会社コード
ENDIF.
IF PI_LH_FILE-AKONT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-AKONT' PI_LH_FILE-AKONT."統制勘定
ENDIF.
IF PI_LH_FILE-FDGRV <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-FDGRV' PI_LH_FILE-FDGRV."CM 計画グループ
ENDIF.
IF PI_LH_FILE-WT_SUBJCT <> C_SLASH AND PI_LH_FILE-WT_SUBJCT IS NOT INITIAL.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-QLAND' 'JP'."源泉徴収税国
ENDIF.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-ALTKN' PI_LH_FILE-ALTKN."旧勘定コード
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_03'.
IF PI_LH_FILE-ZTERM <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-ZTERM' PI_LH_FILE-ZTERM."支払条件
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_05'."記帳担当者
IF PI_LH_FILE-BUSAB <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-BUSAB' PI_LH_FILE-BUSAB."記帳担当者
ENDIF.
IF PI_LH_FILE-ZSABE <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-ZSABE' PI_LH_FILE-ZSABE."仕入先担当者
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_MAIN_P01'."
IF PI_LH_FILE-WITHT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'CVIS_LFBW-WITHT(01)' PI_LH_FILE-WITHT."源泉徴収税タイプコード
ENDIF.
IF PI_LH_FILE-WT_WITHCD <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'CVIS_LFBW-WT_WITHCD(01)' PI_LH_FILE-WT_WITHCD."源泉徴収税コード
ENDIF.
IF PI_LH_FILE-WT_SUBJCT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'CVIS_LFBW-WT_SUBJCT(01)' PI_LH_FILE-WT_SUBJCT."源泉徴収課税対象
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_CHECK'."BDCチェック
IF PI_LH_FILE-KUNNR <> C_SLASH AND PI_LH_FILE-KUNNR IS NOT INITIAL.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=OPT2'.
ENDIF.
IF CB_TSTCK IS NOT INITIAL.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_MAIN_BACK'.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0100' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=NO'.
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
IF CB_TSTCK IS INITIAL.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_MAIN_SAVE'."BDC保存
ENDIF.
IF PI_LH_FILE-KUNNR <> C_SLASH AND PI_LH_FILE-KUNNR IS NOT INITIAL.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=OPT2'.
ENDIF.
CALL TRANSACTION 'BP0' USING I_BDCDATA
MODE L_N
UPDATE C_S
MESSAGES INTO P0_MESSTAB.
IF CB_TSTCK IS INITIAL.
CLEAR LH_MESSTAB.
READ TABLE P0_MESSTAB INTO LH_MESSTAB WITH KEY MSGID = 'R1'
MSGNR = '214'."登録成功
IF SY-SUBRC = 0.
COMMIT WORK.
ELSE.
PO_FLG = 'X'.
ROLLBACK WORK.
ENDIF.
ELSE.
CLEAR LH_MESSTAB.
LOOP AT P0_MESSTAB INTO LH_MESSTAB WHERE MSGNR <> '101'
AND MSGNR <> '096'.
EXIT.
ENDLOOP.
IF LH_MESSTAB IS NOT INITIAL.
PO_FLG = 'X'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BAPI_SET_C
*&---------------------------------------------------------------------*
*& 仕入先マスタ登録BAPI
*&---------------------------------------------------------------------*
FORM FRM_BAPI_SET_C USING PI_LH_FILE TYPE TYP_FILE
CHANGING PO_FLG TYPE CHAR1
PO_MESSTAB TYPE TYP_BAPIRET.
DATA:LI_PHONE TYPE STANDARD TABLE OF BAPIADTEL, "電話番号
LI_FAX TYPE STANDARD TABLE OF BAPIADFAX, "FAX 番号
LI_EMAIL TYPE STANDARD TABLE OF BAPIADSMTP, "電子メール
LI_RETMSG TYPE STANDARD TABLE OF BAPIRET2, "リターンパラメータ
LI_DATA TYPE CVIS_EI_EXTERN_T, "得意先/仕入先統合の受信
LI_RETURN TYPE BAPIRETM, "複数オブジェクト
LI_MESSAGE TYPE BAPIRETCT, "リターンパラメータ
LH_CATEGORY TYPE BAPIBUS1006_HEAD, "BP ヘッダデータ
LH_CENTRAL TYPE BAPIBUS1006_CENTRAL, "一般 BP データ
LH_ORGAN TYPE BAPIBUS1006_CENTRAL_ORGAN, "組織データ
LH_ADDRESS TYPE BAPIBUS1006_ADDRESS, "BAPI 構造 アドレスデータ
LH_PHONE TYPE BAPIADTEL, "電話番号
LH_FAX TYPE BAPIADFAX, "FAX 番号
LH_EMAIL TYPE BAPIADSMTP, "電子メール
LH_BUT000 TYPE BUS000___I, "ステータス情報
LH_ROLE TYPE BUS_EI_BUPA_ROLES, "ロール登録データ
LH_BANK TYPE BUS_EI_BUPA_BANKDETAIL, "銀行詳細登録
LH_COMPANY TYPE VMDS_EI_COMPANY, "会社コードデータ
LH_WTAX TYPE VMDS_EI_WTAX_TYPE, "源泉徴収税
LH_DATA TYPE CVIS_EI_EXTERN, "CVI のビジネスパートナ用複合
LH_MESSTAB TYPE BDCMSGCOLL, "メッセージ
LH_RETMSG TYPE BAPIRET2, "リターンパラメータ
LH_RETURN TYPE BAPIRETI, "複数オブジェクト
LH_MESSAGE TYPE BAPIRETC, "リターンパラメータ
L_PARTNER TYPE BU_PARTNER. "ビジネスパートナ番号
REFRESH:
PO_MESSTAB.
* INSERT BP
LH_CATEGORY-PARTN_CAT = C_2. "ビジネスパートナカテゴリ
IF PI_LH_FILE-BU_GROUP <> C_SLASH.
LH_CATEGORY-PARTN_GRP = PI_LH_FILE-BU_GROUP. "グルーピング
ENDIF.
IF PI_LH_FILE-TITLE <> C_SLASH.
LH_CENTRAL-TITLE_KEY = PI_LH_FILE-TITLE. "タイトル(敬称)
ENDIF.
IF PI_LH_FILE-SORT1 <> C_SLASH.
LH_CENTRAL-SEARCHTERM1 = PI_LH_FILE-SORT1. "検索語句1
ENDIF.
IF PI_LH_FILE-SORT2 <> C_SLASH.
LH_CENTRAL-SEARCHTERM2 = PI_LH_FILE-SORT2. "検索語句2
ENDIF.
IF PI_LH_FILE-XBLCK <> C_SLASH.
LH_CENTRAL-CENTRALBLOCK = PI_LH_FILE-XBLCK. "共通ブロック
ENDIF.
IF PI_LH_FILE-NAME1 <> C_SLASH.
LH_ORGAN-NAME1 = PI_LH_FILE-NAME1. "名称
ENDIF.
IF PI_LH_FILE-NAME2 <> C_SLASH.
LH_ORGAN-NAME2 = PI_LH_FILE-NAME2. "名称2
ENDIF.
IF PI_LH_FILE-POST_CODE1 <> C_SLASH.
LH_ADDRESS-POSTL_COD1 = PI_LH_FILE-POST_CODE1. "郵便番号
ENDIF.
IF PI_LH_FILE-REGION <> C_SLASH.
LH_ADDRESS-REGION = PI_LH_FILE-REGION. "地域 (都道府県)
ENDIF.
IF PI_LH_FILE-CITY1 <> C_SLASH.
LH_ADDRESS-CITY = PI_LH_FILE-CITY1. "市区町村
ENDIF.
IF PI_LH_FILE-STREET <> C_SLASH.
LH_ADDRESS-STREET = PI_LH_FILE-STREET. "地名
ENDIF.
IF PI_LH_FILE-HOUSE_NUM1 <> C_SLASH.
LH_ADDRESS-HOUSE_NO = PI_LH_FILE-HOUSE_NUM1. "番地-号
ENDIF.
IF PI_LH_FILE-COUNTRY <> C_SLASH.
LH_ADDRESS-COUNTRY = PI_LH_FILE-COUNTRY. "国コード
ENDIF.
IF PI_LH_FILE-TIME_ZONE <> C_SLASH.
LH_ADDRESS-TIME_ZONE = PI_LH_FILE-TIME_ZONE. "タイムゾーン
ENDIF.
IF PI_LH_FILE-LANGU <> C_SLASH.
LH_ADDRESS-LANGU = PI_LH_FILE-LANGU. "言語
ENDIF.
IF PI_LH_FILE-TEL_NUMBER <> C_SLASH.
LH_PHONE-TELEPHONE = PI_LH_FILE-TEL_NUMBER. "電話
APPEND LH_PHONE TO LI_PHONE.
ENDIF.
IF PI_LH_FILE-FAX_NUMBER <> C_SLASH.
LH_FAX-FAX = PI_LH_FILE-FAX_NUMBER. "FAX
APPEND LH_FAX TO LI_FAX.
ENDIF.
IF PI_LH_FILE-SMTP_ADDR1 <> C_SLASH.
LH_EMAIL-E_MAIL = PI_LH_FILE-SMTP_ADDR1. "E-Mail(1)
APPEND LH_EMAIL TO LI_EMAIL.
ENDIF.
IF PI_LH_FILE-SMTP_ADDR2 <> C_SLASH.
LH_EMAIL-E_MAIL = PI_LH_FILE-SMTP_ADDR2. "E-Mail(2)
APPEND LH_EMAIL TO LI_EMAIL.
ENDIF.
IF PI_LH_FILE-SMTP_ADDR3 <> C_SLASH.
LH_EMAIL-E_MAIL = PI_LH_FILE-SMTP_ADDR3. "E-Mail(3)
APPEND LH_EMAIL TO LI_EMAIL.
ENDIF.
CALL FUNCTION 'BAPI_BUPA_FS_CREATE_FROM_DATA2'
EXPORTING
PARTNERCATEGORY = LH_CATEGORY-PARTN_CAT
PARTNERGROUP = LH_CATEGORY-PARTN_GRP
CENTRALDATA = LH_CENTRAL
CENTRALDATAORGANIZATION = LH_ORGAN
ADDRESSDATA = LH_ADDRESS
IMPORTING
BUSINESSPARTNER = L_PARTNER
TABLES
TELEFONDATA = LI_PHONE
FAXDATA = LI_FAX
E_MAILDATA = LI_EMAIL
RETURN = LI_RETMSG.
* エラーありの場合
LOOP AT LI_RETMSG INTO LH_RETMSG WHERE TYPE = C_A
OR TYPE = C_E
OR TYPE = C_X.
APPEND LH_RETMSG TO PO_MESSTAB.
ENDLOOP.
IF PO_MESSTAB IS NOT INITIAL.
PO_FLG = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
RETURN.
ENDIF.
* エラーなしの場合
CALL FUNCTION 'BUP_MEMORY_BUT000_GET'
EXPORTING
IV_PARTNER = L_PARTNER
IMPORTING
ES_BUT000 = LH_BUT000.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
* UPDATE VENDOR INFO
LH_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = L_PARTNER.
LH_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LH_BUT000-PARTNER_GUID.
LH_DATA-PARTNER-HEADER-OBJECT_TASK = C_U.
IF PI_LH_FILE-VBUND <> C_SLASH.
LH_DATA-PARTNER-FINSERV_DATA-COMMON-DATA-FSBP_CENTRL-VBUND = PI_LH_FILE-VBUND."取引先
LH_DATA-PARTNER-FINSERV_DATA-COMMON-DATAX-FSBP_CENTRL-VBUND = C_CHK.
ENDIF.
* ADD ROLE
IF PI_LH_FILE-RLTYP <> C_SLASH.
LH_ROLE-TASK = C_I.
LH_ROLE-DATA_KEY = PI_LH_FILE-RLTYP. "BP 役割
APPEND LH_ROLE TO LH_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES.
ENDIF.
* BANK
IF PI_LH_FILE-BKVID <> C_SLASH
AND PI_LH_FILE-BKVID <> SPACE.
LH_BANK-TASK = C_I.
LH_BANK-DATA_KEY = PI_LH_FILE-BKVID. "ID
ENDIF.
IF PI_LH_FILE-BANKS <> C_SLASH.
LH_BANK-DATA-BANK_CTRY = PI_LH_FILE-BANKS. "国
LH_BANK-DATAX-BANK_CTRY = C_CHK.
ENDIF.
IF PI_LH_FILE-BANKL <> C_SLASH.
LH_BANK-DATA-BANK_KEY = PI_LH_FILE-BANKL. "銀行コード
LH_BANK-DATAX-BANK_KEY = C_CHK.
ENDIF.
IF PI_LH_FILE-BANKN <> C_SLASH.
LH_BANK-DATA-BANK_ACCT = PI_LH_FILE-BANKN. "銀行口座
LH_BANK-DATAX-BANK_ACCT = C_CHK.
ENDIF.
IF PI_LH_FILE-BKONT <> C_SLASH.
LH_BANK-DATA-CTRL_KEY = PI_LH_FILE-BKONT. "管理キー
LH_BANK-DATAX-CTRL_KEY = C_CHK.
ENDIF.
IF PI_LH_FILE-BKREF <> C_SLASH.
LH_BANK-DATA-BANK_REF = PI_LH_FILE-BKREF. "支払参照
LH_BANK-DATAX-BANK_REF = C_CHK.
ENDIF.
IF PI_LH_FILE-KOINH <> C_SLASH.
LH_BANK-DATA-ACCOUNTHOLDER = PI_LH_FILE-KOINH. "口座名義人
LH_BANK-DATAX-ACCOUNTHOLDER = C_CHK.
ENDIF.
IF LH_BANK-TASK IS NOT INITIAL.
APPEND LH_BANK TO LH_DATA-PARTNER-CENTRAL_DATA-BANKDETAIL-BANKDETAILS.
ENDIF.
* Vendor
IF PI_LH_FILE-LIFNR <> C_SLASH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-LIFNR
IMPORTING
OUTPUT = LH_DATA-VENDOR-HEADER-OBJECT_INSTANCE-LIFNR. "仕入先コード
ENDIF.
LH_DATA-VENDOR-HEADER-OBJECT_TASK = C_I.
IF PI_LH_FILE-KUNNR <> C_SLASH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-KUNNR
IMPORTING
OUTPUT = LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATA-KUNNR. "得意先コード
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATAX-KUNNR = C_CHK.
ENDIF.
IF PI_LH_FILE-DLGRP <> C_SLASH.
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATA-DLGRP = PI_LH_FILE-DLGRP."サービス業者価格決定グループ
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATAX-DLGRP = C_CHK.
ENDIF.
IF PI_LH_FILE-PROFS <> C_SLASH.
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATA-PROFS = PI_LH_FILE-PROFS."職業
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATAX-PROFS = C_CHK.
ENDIF.
* Company
LH_COMPANY-TASK = C_I.
IF PI_LH_FILE-BUKRS <> C_SLASH.
LH_COMPANY-DATA_KEY = PI_LH_FILE-BUKRS. "会社コード
ENDIF.
IF PI_LH_FILE-AKONT <> C_SLASH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-AKONT
IMPORTING
OUTPUT = LH_COMPANY-DATA-AKONT. "統制勘定
LH_COMPANY-DATAX-AKONT = C_CHK.
ENDIF.
IF PI_LH_FILE-FDGRV <> C_SLASH.
LH_COMPANY-DATA-FDGRV = PI_LH_FILE-FDGRV. "CM 計画グループ
LH_COMPANY-DATAX-FDGRV = C_CHK.
ENDIF.
IF PI_LH_FILE-BANKS <> C_SLASH.
LH_COMPANY-DATA-QLAND = PI_LH_FILE-BANKS. "国
LH_COMPANY-DATAX-QLAND = C_CHK.
ENDIF.
IF PI_LH_FILE-ALTKN <> C_SLASH.
LH_COMPANY-DATA-ALTKN = PI_LH_FILE-ALTKN. "旧勘定コード
LH_COMPANY-DATAX-ALTKN = C_CHK.
ENDIF.
IF PI_LH_FILE-ZTERM <> C_SLASH.
LH_COMPANY-DATA-ZTERM = PI_LH_FILE-ZTERM. "支払条件
LH_COMPANY-DATAX-ZTERM = C_CHK.
ENDIF.
IF PI_LH_FILE-BUSAB <> C_SLASH.
LH_COMPANY-DATA-BUSAB = PI_LH_FILE-BUSAB. "記帳担当者
LH_COMPANY-DATAX-BUSAB = C_CHK.
ENDIF.
IF PI_LH_FILE-ZSABE <> C_SLASH.
LH_COMPANY-DATA-ZSABE = PI_LH_FILE-ZSABE. "仕入先担当者
LH_COMPANY-DATAX-ZSABE = C_CHK.
ENDIF.
* 源泉徴収税
IF PI_LH_FILE-WITHT <> C_SLASH
AND PI_LH_FILE-WITHT <> SPACE.
LH_WTAX-TASK = C_I.
LH_WTAX-DATA_KEY-WITHT = PI_LH_FILE-WITHT. "源泉徴収税タイプコード
ENDIF.
IF PI_LH_FILE-WT_WITHCD <> C_SLASH.
LH_WTAX-DATA-WT_WITHCD = PI_LH_FILE-WT_WITHCD. "源泉徴収税コード
LH_WTAX-DATAX-WT_WITHCD = C_CHK.
ENDIF.
IF PI_LH_FILE-WT_SUBJCT <> C_SLASH.
LH_WTAX-DATA-WT_SUBJCT = PI_LH_FILE-WT_SUBJCT. "源泉徴収課税対象
LH_WTAX-DATAX-WT_SUBJCT = C_CHK.
IF PI_LH_FILE-WT_SUBJCT <> SPACE.
LH_COMPANY-DATA-QLAND = 'JP'.
ELSE.
LH_COMPANY-DATA-QLAND = SPACE.
ENDIF.
LH_COMPANY-DATAX-QLAND = C_CHK.
ENDIF.
IF LH_WTAX-TASK <> SPACE.
APPEND LH_WTAX TO LH_COMPANY-WTAX_TYPE-WTAX_TYPE.
ENDIF.
APPEND LH_COMPANY TO LH_DATA-VENDOR-COMPANY_DATA-COMPANY.
APPEND LH_DATA TO LI_DATA.
CALL METHOD CL_MD_BP_MAINTAIN=>MAINTAIN
EXPORTING
I_DATA = LI_DATA
IMPORTING
E_RETURN = LI_RETURN.
IF LI_RETURN IS NOT INITIAL.
LOOP AT LI_RETURN INTO LH_RETURN.
LI_MESSAGE = LH_RETURN-OBJECT_MSG.
LOOP AT LI_MESSAGE INTO LH_MESSAGE WHERE TYPE = C_A
OR TYPE = C_E
OR TYPE = C_X.
CLEAR LH_RETMSG.
MOVE-CORRESPONDING LH_MESSAGE TO LH_RETMSG.
APPEND LH_RETMSG TO PO_MESSTAB.
ENDLOOP.
ENDLOOP.
ENDIF.
* エラーありの場合
IF PO_MESSTAB IS NOT INITIAL
OR CB_TSTCK IS NOT INITIAL.
IF PO_MESSTAB IS NOT INITIAL.
PO_FLG = 'X'.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
RETURN.
* エラーなしの場合
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BDC_SET_U
*&---------------------------------------------------------------------*
*& 仕入先マスタ変更BDC
*&---------------------------------------------------------------------*
FORM FRM_BDC_SET_U USING PI_LH_FILE TYPE TYP_FILE
PI_PARTNER TYPE CHAR10
CHANGING PO_FLG TYPE CHAR1
P0_MESSTAB TYPE TYP_BDCMSGCOLL.
DATA:
L_KUNNR TYPE KUNNR,
LH_MESSTAB TYPE BDCMSGCOLL,
L_N TYPE CTU_PARAMS-DISMODE VALUE 'N'.
REFRESH:
I_BDCDATA,
P0_MESSTAB.
*得意先コード
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-LIFNR
IMPORTING
OUTPUT = PI_LH_FILE-LIFNR.
SELECT SINGLE KUNNR
FROM LFA1
INTO L_KUNNR
WHERE LIFNR = PI_LH_FILE-LIFNR.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-KUNNR
IMPORTING
OUTPUT = PI_LH_FILE-KUNNR.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_LOCATOR_CLOSE'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_OPEN'.
PERFORM FRM_BDC_SET USING 'SAPLBUPA_DIALOG_JOEL' '1600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_MAIN_ENTER'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'BUS_JOEL_MAIN-OPEN_NUMBER'.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS_JOEL_MAIN-OPEN_NUMBER' PI_PARTNER.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1110_CHG_ROLE'.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS_JOEL_MAIN-PARTNER_ROLE' PI_LH_FILE-RLTYP."BP 役割
PERFORM FRM_BDC_SET USING '' '' '' 'BUS_JOEL_MAIN-PARTNER_TIMEDEP' '000001'."
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_01'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_01'.
IF PI_LH_FILE-TITLE <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS000FLDS-TITLE_MEDI' PI_LH_FILE-TITLE. "タイトル(敬称)
ENDIF.
IF PI_LH_FILE-NAME1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-NAME_ORG1' PI_LH_FILE-NAME1. "名称
ENDIF.
IF PI_LH_FILE-NAME2 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-NAME_ORG2' PI_LH_FILE-NAME2. "名称2
ENDIF.
IF PI_LH_FILE-SORT1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS000FLDS-BU_SORT1_TXT' PI_LH_FILE-SORT1."検索語句1
ENDIF.
IF PI_LH_FILE-SORT2 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUS000FLDS-BU_SORT2_TXT' PI_LH_FILE-SORT2."検索語句2
ENDIF.
IF PI_LH_FILE-STREET <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-STREET' PI_LH_FILE-STREET. "地名
ENDIF.
IF PI_LH_FILE-HOUSE_NUM1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-HOUSE_NUM1' PI_LH_FILE-HOUSE_NUM1."番地-号
ENDIF.
IF PI_LH_FILE-POST_CODE1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-POST_CODE1' PI_LH_FILE-POST_CODE1."郵便番号
ENDIF.
IF PI_LH_FILE-CITY1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-CITY1' PI_LH_FILE-CITY1. "市区町村
ENDIF.
IF PI_LH_FILE-COUNTRY <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-COUNTRY' PI_LH_FILE-COUNTRY. "国コード
ENDIF.
IF PI_LH_FILE-REGION <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-REGION' PI_LH_FILE-REGION. "地域 (都道府県)
ENDIF.
IF PI_LH_FILE-TIME_ZONE <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-TIME_ZONE' PI_LH_FILE-TIME_ZONE."タイムゾーン
ENDIF.
IF PI_LH_FILE-LANGU <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADDR1_DATA-LANGU' PI_LH_FILE-LANGU. "言語
ENDIF.
IF PI_LH_FILE-TEL_NUMBER <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'SZA1_D0100-TEL_NUMBER' PI_LH_FILE-TEL_NUMBER. "電話
ENDIF.
IF PI_LH_FILE-FAX_NUMBER <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'SZA1_D0100-FAX_NUMBER' PI_LH_FILE-FAX_NUMBER."FAX
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=$INT'.
PERFORM FRM_BDC_SET USING 'SAPLSZA6' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=DELL'.
IF PI_LH_FILE-SMTP_ADDR1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'G_SELECTED(01)' 'X'.
ENDIF.
IF PI_LH_FILE-SMTP_ADDR2 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'G_SELECTED(02)' 'X'.
ENDIF.
IF PI_LH_FILE-SMTP_ADDR3 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'G_SELECTED(03)' 'X'.
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLSZA6' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'ADSMTP-SMTP_ADDR(01)'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=NEWL'.
IF PI_LH_FILE-SMTP_ADDR1 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADSMTP-SMTP_ADDR(01)' PI_LH_FILE-SMTP_ADDR1."E-Mail(1)
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLSZA6' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'ADSMTP-SMTP_ADDR(01)'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=NEWL'.
IF PI_LH_FILE-SMTP_ADDR2 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADSMTP-SMTP_ADDR(01)' PI_LH_FILE-SMTP_ADDR2."E-Mail(2)
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLSZA6' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_CURSOR' 'ADSMTP-SMTP_ADDR(01)'.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=CONT'.
IF PI_LH_FILE-SMTP_ADDR3 <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'ADSMTP-SMTP_ADDR(01)' PI_LH_FILE-SMTP_ADDR3."E-Mail(3)
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_03'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_04'.
* IF PI_LH_FILE-LEGAL_ORG <> C_SLASH.
* PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-LEGAL_ORG' PI_LH_FILE-LEGAL_ORG."法的実体
* ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_05'.
IF PI_LH_FILE-VBUND <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_BP001-VBUND' PI_LH_FILE-VBUND."取引先
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_06'.
IF PI_LH_FILE-BANKS <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BANKS(01)' PI_LH_FILE-BANKS."国
ENDIF.
IF PI_LH_FILE-BANKL <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BANKL(01)' PI_LH_FILE-BANKL."銀行コード
ENDIF.
IF PI_LH_FILE-BANKN <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BANKN(01)' PI_LH_FILE-BANKN."銀行口座
ENDIF.
IF PI_LH_FILE-BKONT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BKONT(01)' PI_LH_FILE-BKONT."管理キー
ENDIF.
IF PI_LH_FILE-BKREF <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-BKREF(01)' PI_LH_FILE-BKREF."支払参照
ENDIF.
IF PI_LH_FILE-KOINH <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GT_BUT0BK-KOINH(01)' PI_LH_FILE-KOINH."口座名義人
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_07'.
IF PI_LH_FILE-XBLCK <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BUT000-XBLCK' PI_LH_FILE-XBLCK."共通ブロック
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_MAIN_P02'.
IF PI_LH_FILE-KUNNR <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFA1-KUNNR' PI_LH_FILE-KUNNR."得意先コード
ENDIF.
IF PI_LH_FILE-DLGRP <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFA1-DLGRP' PI_LH_FILE-DLGRP."サービス業者価格決定グループ
ENDIF.
IF PI_LH_FILE-PROFS <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFA1-PROFS' PI_LH_FILE-PROFS."職業
ENDIF.
IF PI_LH_FILE-KUNNR <> C_SLASH
AND PI_LH_FILE-KUNNR IS NOT INITIAL
AND PI_LH_FILE-KUNNR <> L_KUNNR.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=OPT2'.
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_MAIN_ENTER'.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_02'.
IF PI_LH_FILE-BUKRS <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'BS001-BUKRS' PI_LH_FILE-BUKRS."会社コード
ENDIF.
IF PI_LH_FILE-AKONT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-AKONT' PI_LH_FILE-AKONT."統制勘定
ENDIF.
IF PI_LH_FILE-FDGRV <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-FDGRV' PI_LH_FILE-FDGRV."CM 計画グループ
ENDIF.
IF PI_LH_FILE-WT_SUBJCT <> C_SLASH AND PI_LH_FILE-WT_SUBJCT IS NOT INITIAL.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-QLAND' 'JP'."源泉徴収税国
ENDIF.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-ALTKN' PI_LH_FILE-ALTKN."旧勘定コード
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_03'.
IF PI_LH_FILE-ZTERM <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-ZTERM' PI_LH_FILE-ZTERM."支払条件
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1100_TAB_05'."記帳担当者
IF PI_LH_FILE-BUSAB <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-BUSAB' PI_LH_FILE-BUSAB."記帳担当者
ENDIF.
IF PI_LH_FILE-ZSABE <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'GS_LFB1-ZSABE' PI_LH_FILE-ZSABE."仕入先担当者
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_MAIN_P01'."
IF PI_LH_FILE-WITHT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'CVIS_LFBW-WITHT(01)' PI_LH_FILE-WITHT."源泉徴収税タイプコード
ENDIF.
IF PI_LH_FILE-WT_WITHCD <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'CVIS_LFBW-WT_WITHCD(01)' PI_LH_FILE-WT_WITHCD."源泉徴収税コード
ENDIF.
IF PI_LH_FILE-WT_SUBJCT <> C_SLASH.
PERFORM FRM_BDC_SET USING '' '' '' 'CVIS_LFBW-WT_SUBJCT(01)' PI_LH_FILE-WT_SUBJCT."源泉徴収課税対象
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=SCREEN_1000_CHECK'."BDCチェック
IF PI_LH_FILE-KUNNR <> C_SLASH
AND PI_LH_FILE-KUNNR IS NOT INITIAL
AND PI_LH_FILE-KUNNR <> L_KUNNR.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=OPT2'.
ENDIF.
IF CB_TSTCK IS NOT INITIAL.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_MAIN_BACK'.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0100' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=NO'.
ENDIF.
PERFORM FRM_BDC_SET USING 'SAPLBUS_LOCATOR' '3000' 'X' '' ''.
IF CB_TSTCK IS INITIAL.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=BUS_MAIN_SAVE'."BDC保存
ENDIF.
IF PI_LH_FILE-KUNNR <> C_SLASH
AND PI_LH_FILE-KUNNR IS NOT INITIAL
AND PI_LH_FILE-KUNNR <> L_KUNNR.
PERFORM FRM_BDC_SET USING 'SAPLSPO1' '0600' 'X' '' ''.
PERFORM FRM_BDC_SET USING '' '' '' 'BDC_OKCODE' '=OPT2'.
ENDIF.
CALL TRANSACTION 'BUP2' USING I_BDCDATA
MODE L_N
UPDATE C_S
MESSAGES INTO P0_MESSTAB.
IF CB_TSTCK IS INITIAL.
CLEAR LH_MESSTAB.
READ TABLE P0_MESSTAB INTO LH_MESSTAB WITH KEY MSGID = 'R1'
MSGNR = '215'."変更成功
IF SY-SUBRC = 0.
COMMIT WORK.
ELSE.
PO_FLG = 'X'.
ROLLBACK WORK.
ENDIF.
ELSE.
CLEAR LH_MESSTAB.
LOOP AT P0_MESSTAB INTO LH_MESSTAB WHERE MSGNR <> '108'.
EXIT.
ENDLOOP.
IF LH_MESSTAB IS NOT INITIAL.
PO_FLG = 'X'.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BAPI_SET_U
*&---------------------------------------------------------------------*
*& 仕入先マスタ変更BAPI
*&---------------------------------------------------------------------*
FORM FRM_BAPI_SET_U USING PI_LH_FILE TYPE TYP_FILE
PI_PARTNER TYPE CHAR10
PI_GUID TYPE BU_PARTNER_GUID
CHANGING PO_FLG TYPE CHAR1
PO_MESSTAB TYPE TYP_BAPIRET.
DATA:LI_PHONE TYPE STANDARD TABLE OF BAPIADTEL, "電話番号
LI_FAX TYPE STANDARD TABLE OF BAPIADFAX, "FAX 番号
LI_EMAIL TYPE STANDARD TABLE OF BAPIADSMTP, "電子メール
LI_RETMSG TYPE STANDARD TABLE OF BAPIRET2, "リターンパラメータ
LI_DATA TYPE CVIS_EI_EXTERN_T, "得意先/仕入先統合の受信
LI_RETURN TYPE BAPIRETM, "複数オブジェクト
LI_MESSAGE TYPE BAPIRETCT, "リターンパラメータ
LI_ADR6 TYPE STANDARD TABLE OF TYP_EMAIL, "電子メールアドレス
LI_BUT0BK TYPE STANDARD TABLE OF TYP_BUT0BK, "銀行詳細
LH_CATEGORY TYPE BAPIBUS1006_HEAD, "BP ヘッダデータ
LH_CENTRAL TYPE BAPIBUS1006_CENTRAL, "一般 BP データ
LH_ORGAN TYPE BAPIBUS1006_CENTRAL_ORGAN, "組織データ
LH_ADDRESS TYPE BUS_EI_BUPA_ADDRESS, "BAPI 構造 アドレスデータ
LH_PHONE TYPE BUS_EI_BUPA_TELEPHONE, "電話番号
LH_FAX TYPE BUS_EI_BUPA_FAX, "FAX 番号
LH_EMAIL TYPE BUS_EI_BUPA_SMTP, "電子メール
LH_BUT000 TYPE BUS000___I, "ステータス情報
LH_ROLE TYPE BUS_EI_BUPA_ROLES, "ロール登録データ
LH_BANK TYPE BUS_EI_BUPA_BANKDETAIL, "銀行詳細登録
LH_COMPANY TYPE VMDS_EI_COMPANY, "会社コードデータ
LH_WTAX TYPE VMDS_EI_WTAX_TYPE, "源泉徴収税
LH_DATA TYPE CVIS_EI_EXTERN, "CVI のビジネスパートナ用複合
LH_MESSTAB TYPE BDCMSGCOLL, "メッセージ
LH_RETMSG TYPE BAPIRET2, "リターンパラメータ
LH_RETURN TYPE BAPIRETI, "複数オブジェクト
LH_MESSAGE TYPE BAPIRETC, "リターンパラメータ
LH_ADR6 TYPE TYP_EMAIL, "電子メールアドレス
LH_BUT0BK TYPE TYP_BUT0BK, "銀行詳細
L_ADDNUM TYPE BUT020-ADDRNUMBER, "ビジネスパートナ番号
L_ADDGUID TYPE BU_ADDRESS_GUID, "アドレス GUID
L_WITHT TYPE LFBW-WITHT. "源泉徴収税タイプコード
REFRESH:
PO_MESSTAB.
* UPDATE VENDOR INFO
LH_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = PI_PARTNER.
LH_DATA-PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = PI_GUID.
LH_DATA-PARTNER-HEADER-OBJECT_TASK = C_U.
IF PI_LH_FILE-BU_GROUP <> C_SLASH.
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = PI_LH_FILE-BU_GROUP. "グルーピング
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = C_2. "ビジネスパートナカテゴリ
ENDIF.
IF PI_LH_FILE-TITLE <> C_SLASH.
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-TITLE_KEY = PI_LH_FILE-TITLE. "タイトル(敬称)
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-TITLE_KEY = C_CHK.
ENDIF.
IF PI_LH_FILE-SORT1 <> C_SLASH.
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 = PI_LH_FILE-SORT1. "検索語句1
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM1 = C_CHK.
ENDIF.
IF PI_LH_FILE-SORT2 <> C_SLASH.
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM2 = PI_LH_FILE-SORT2. "検索語句2
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-SEARCHTERM2 = C_CHK.
ENDIF.
IF PI_LH_FILE-XBLCK <> C_SLASH.
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-CENTRALBLOCK = PI_LH_FILE-XBLCK. "共通ブロック
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_CENTRALDATA-CENTRALBLOCK = C_CHK.
ENDIF.
IF PI_LH_FILE-NAME1 <> C_SLASH.
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1 = PI_LH_FILE-NAME1. "名称
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME1 = C_CHK.
ENDIF.
IF PI_LH_FILE-NAME2 <> C_SLASH.
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME2 = PI_LH_FILE-NAME2. "名称2
LH_DATA-PARTNER-CENTRAL_DATA-COMMON-DATAX-BP_ORGANIZATION-NAME2 = C_CHK.
ENDIF.
LH_ADDRESS-TASK = C_U.
* 取得ADD GUID
SELECT ADDRESS_GUID
ADDRNUMBER UP TO 1 ROWS
FROM BUT020
INTO (L_ADDGUID,
L_ADDNUM)
WHERE PARTNER = PI_PARTNER. "取引先コード
ENDSELECT.
IF SY-SUBRC = 0.
LH_ADDRESS-DATA_KEY-GUID = L_ADDGUID.
ENDIF.
IF PI_LH_FILE-STREET <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-STREET = PI_LH_FILE-STREET. "地名
LH_ADDRESS-DATA-POSTAL-DATAX-STREET = C_CHK.
ENDIF.
IF PI_LH_FILE-POST_CODE1 <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-POSTL_COD1 = PI_LH_FILE-POST_CODE1. "郵便番号
LH_ADDRESS-DATA-POSTAL-DATAX-POSTL_COD1 = C_CHK.
ENDIF.
IF PI_LH_FILE-REGION <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-REGION = PI_LH_FILE-REGION. "地域 (都道府県)
LH_ADDRESS-DATA-POSTAL-DATAX-REGION = C_CHK.
ENDIF.
IF PI_LH_FILE-CITY1 <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-CITY = PI_LH_FILE-CITY1. "市区町村
LH_ADDRESS-DATA-POSTAL-DATAX-CITY = C_CHK.
ENDIF.
IF PI_LH_FILE-HOUSE_NUM1 <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-HOUSE_NO = PI_LH_FILE-HOUSE_NUM1. "番地-号
LH_ADDRESS-DATA-POSTAL-DATAX-HOUSE_NO = C_CHK.
ENDIF.
IF PI_LH_FILE-COUNTRY <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-COUNTRY = PI_LH_FILE-COUNTRY. "国コード
LH_ADDRESS-DATA-POSTAL-DATAX-COUNTRY = C_CHK.
ENDIF.
IF PI_LH_FILE-TIME_ZONE <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-TIME_ZONE = PI_LH_FILE-TIME_ZONE. "タイムゾーン
LH_ADDRESS-DATA-POSTAL-DATAX-TIME_ZONE = C_CHK.
ENDIF.
IF PI_LH_FILE-LANGU <> C_SLASH.
LH_ADDRESS-DATA-POSTAL-DATA-LANGU = PI_LH_FILE-LANGU. "言語
LH_ADDRESS-DATA-POSTAL-DATAX-LANGU = C_CHK.
ENDIF.
IF PI_LH_FILE-TEL_NUMBER <> C_SLASH.
LH_PHONE-CONTACT-TASK = C_U.
LH_PHONE-CONTACT-DATA-TELEPHONE = PI_LH_FILE-TEL_NUMBER. "電話
LH_PHONE-CONTACT-DATAX-TELEPHONE = C_CHK.
APPEND LH_PHONE TO LH_ADDRESS-DATA-COMMUNICATION-PHONE-PHONE.
ENDIF.
IF PI_LH_FILE-FAX_NUMBER <> C_SLASH.
LH_FAX-CONTACT-TASK = C_U.
LH_FAX-CONTACT-DATA-FAX = PI_LH_FILE-FAX_NUMBER. "FAX
LH_FAX-CONTACT-DATAX-FAX = C_CHK.
APPEND LH_FAX TO LH_ADDRESS-DATA-COMMUNICATION-FAX-FAX.
ENDIF.
* 取得E-MAIL
SELECT CONSNUMBER
SMTP_ADDR
FROM ADR6
INTO TABLE LI_ADR6
WHERE ADDRNUMBER = L_ADDNUM "アドレス番号
AND CONSNUMBER <= 3.
IF PI_LH_FILE-SMTP_ADDR1 <> C_SLASH.
LH_EMAIL-CONTACT-TASK = C_U.
LH_EMAIL-CONTACT-DATA-E_MAIL = PI_LH_FILE-SMTP_ADDR1. "E-Mail(1)
LH_EMAIL-CONTACT-DATAX-E_MAIL = C_CHK.
APPEND LH_EMAIL TO LH_ADDRESS-DATA-COMMUNICATION-SMTP-SMTP.
ELSE.
CLEAR LH_ADR6.
READ TABLE LI_ADR6 INTO LH_ADR6 WITH KEY CONSNUMBER = 1.
IF SY-SUBRC = 0
AND LH_ADR6-SMTP_ADDR IS NOT INITIAL.
LH_EMAIL-CONTACT-TASK = C_U.
LH_EMAIL-CONTACT-DATA-E_MAIL = LH_ADR6-SMTP_ADDR. "E-Mail(1)
LH_EMAIL-CONTACT-DATAX-E_MAIL = C_CHK.
APPEND LH_EMAIL TO LH_ADDRESS-DATA-COMMUNICATION-SMTP-SMTP.
ENDIF.
ENDIF.
IF PI_LH_FILE-SMTP_ADDR2 <> C_SLASH.
LH_EMAIL-CONTACT-TASK = C_U.
LH_EMAIL-CONTACT-DATA-E_MAIL = PI_LH_FILE-SMTP_ADDR2. "E-Mail(2)
LH_EMAIL-CONTACT-DATAX-E_MAIL = C_CHK.
APPEND LH_EMAIL TO LH_ADDRESS-DATA-COMMUNICATION-SMTP-SMTP.
ELSE.
CLEAR LH_ADR6.
READ TABLE LI_ADR6 INTO LH_ADR6 WITH KEY CONSNUMBER = 2.
IF SY-SUBRC = 0
AND LH_ADR6-SMTP_ADDR IS NOT INITIAL.
LH_EMAIL-CONTACT-TASK = C_U.
LH_EMAIL-CONTACT-DATA-E_MAIL = LH_ADR6-SMTP_ADDR. "E-Mail(2)
LH_EMAIL-CONTACT-DATAX-E_MAIL = C_CHK.
APPEND LH_EMAIL TO LH_ADDRESS-DATA-COMMUNICATION-SMTP-SMTP.
ENDIF.
ENDIF.
IF PI_LH_FILE-SMTP_ADDR3 <> C_SLASH.
LH_EMAIL-CONTACT-TASK = C_U.
LH_EMAIL-CONTACT-DATA-E_MAIL = PI_LH_FILE-SMTP_ADDR3. "E-Mail(3)
LH_EMAIL-CONTACT-DATAX-E_MAIL = C_CHK.
APPEND LH_EMAIL TO LH_ADDRESS-DATA-COMMUNICATION-SMTP-SMTP.
ELSE.
CLEAR LH_ADR6.
READ TABLE LI_ADR6 INTO LH_ADR6 WITH KEY CONSNUMBER = 3.
IF SY-SUBRC = 0
AND LH_ADR6-SMTP_ADDR IS NOT INITIAL.
LH_EMAIL-CONTACT-TASK = C_U.
LH_EMAIL-CONTACT-DATA-E_MAIL = LH_ADR6-SMTP_ADDR. "E-Mail(3)
LH_EMAIL-CONTACT-DATAX-E_MAIL = C_CHK.
APPEND LH_EMAIL TO LH_ADDRESS-DATA-COMMUNICATION-SMTP-SMTP.
ENDIF.
ENDIF.
APPEND LH_ADDRESS TO LH_DATA-PARTNER-CENTRAL_DATA-ADDRESS-ADDRESSES.
IF PI_LH_FILE-VBUND <> C_SLASH.
LH_DATA-PARTNER-FINSERV_DATA-COMMON-DATA-FSBP_CENTRL-VBUND = PI_LH_FILE-VBUND."取引先
LH_DATA-PARTNER-FINSERV_DATA-COMMON-DATAX-FSBP_CENTRL-VBUND = C_CHK.
ENDIF.
* ADD ROLE
IF PI_LH_FILE-RLTYP <> C_SLASH.
LH_ROLE-TASK = C_U.
LH_ROLE-DATA_KEY = PI_LH_FILE-RLTYP. "BP 役割
APPEND LH_ROLE TO LH_DATA-PARTNER-CENTRAL_DATA-ROLE-ROLES.
ENDIF.
* BANK
* 取得銀行詳細
SELECT BKVID
FROM BUT0BK
INTO TABLE LI_BUT0BK
WHERE PARTNER = PI_PARTNER.
IF LI_BUT0BK IS INITIAL.
LH_BANK-TASK = C_I.
ELSE.
READ TABLE LI_BUT0BK TRANSPORTING NO FIELDS WITH KEY BKVID = PI_LH_FILE-BKVID.
IF SY-SUBRC = 0.
LH_BANK-TASK = C_U.
ELSE.
LOOP AT LI_BUT0BK INTO LH_BUT0BK.
LH_BANK-TASK = C_D.
LH_BANK-DATA_KEY = LH_BUT0BK-BKVID. "ID
APPEND LH_BANK TO LH_DATA-PARTNER-CENTRAL_DATA-BANKDETAIL-BANKDETAILS.
ENDLOOP.
LH_BANK-TASK = C_I.
ENDIF.
ENDIF.
IF PI_LH_FILE-BKVID <> C_SLASH
AND PI_LH_FILE-BKVID <> SPACE.
LH_BANK-DATA_KEY = PI_LH_FILE-BKVID. "ID
ELSE.
CLEAR LH_BANK-TASK.
ENDIF.
IF PI_LH_FILE-BANKS <> C_SLASH.
LH_BANK-DATA-BANK_CTRY = PI_LH_FILE-BANKS. "国
LH_BANK-DATAX-BANK_CTRY = C_CHK.
ENDIF.
IF PI_LH_FILE-BANKL <> C_SLASH.
LH_BANK-DATA-BANK_KEY = PI_LH_FILE-BANKL. "銀行コード
LH_BANK-DATAX-BANK_KEY = C_CHK.
ENDIF.
IF PI_LH_FILE-BANKN <> C_SLASH.
LH_BANK-DATA-BANK_ACCT = PI_LH_FILE-BANKN. "銀行口座
LH_BANK-DATAX-BANK_ACCT = C_CHK.
ENDIF.
IF PI_LH_FILE-BKONT <> C_SLASH.
LH_BANK-DATA-CTRL_KEY = PI_LH_FILE-BKONT. "管理キー
LH_BANK-DATAX-CTRL_KEY = C_CHK.
ENDIF.
IF PI_LH_FILE-BKREF <> C_SLASH.
LH_BANK-DATA-BANK_REF = PI_LH_FILE-BKREF. "支払参照
LH_BANK-DATAX-BANK_REF = C_CHK.
ENDIF.
IF PI_LH_FILE-KOINH <> C_SLASH.
LH_BANK-DATA-ACCOUNTHOLDER = PI_LH_FILE-KOINH. "口座名義人
LH_BANK-DATAX-ACCOUNTHOLDER = C_CHK.
ENDIF.
IF LH_BANK-TASK <> SPACE.
APPEND LH_BANK TO LH_DATA-PARTNER-CENTRAL_DATA-BANKDETAIL-BANKDETAILS.
ENDIF.
* Vendor
IF PI_LH_FILE-LIFNR <> C_SLASH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-LIFNR
IMPORTING
OUTPUT = LH_DATA-VENDOR-HEADER-OBJECT_INSTANCE-LIFNR. "仕入先コード
ENDIF.
LH_DATA-VENDOR-HEADER-OBJECT_TASK = C_U.
IF PI_LH_FILE-KUNNR <> C_SLASH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-KUNNR
IMPORTING
OUTPUT = LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATA-KUNNR. "得意先コード
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATAX-KUNNR = C_CHK.
ENDIF.
IF PI_LH_FILE-DLGRP <> C_SLASH.
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATA-DLGRP = PI_LH_FILE-DLGRP."サービス業者価格決定グループ
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATAX-DLGRP = C_CHK.
ENDIF.
IF PI_LH_FILE-PROFS <> C_SLASH.
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATA-PROFS = PI_LH_FILE-PROFS."職業
ELSE.
SELECT SINGLE PROFS
FROM LFA1
INTO LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATA-PROFS
WHERE LIFNR = LH_DATA-VENDOR-HEADER-OBJECT_INSTANCE-LIFNR.
ENDIF.
LH_DATA-VENDOR-CENTRAL_DATA-CENTRAL-DATAX-PROFS = C_CHK.
* Company
LH_COMPANY-TASK = C_U.
IF PI_LH_FILE-BUKRS <> C_SLASH.
LH_COMPANY-DATA_KEY = PI_LH_FILE-BUKRS. "会社コード
ENDIF.
IF PI_LH_FILE-AKONT <> C_SLASH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = PI_LH_FILE-AKONT
IMPORTING
OUTPUT = LH_COMPANY-DATA-AKONT. "統制勘定
LH_COMPANY-DATAX-AKONT = C_CHK.
ENDIF.
IF PI_LH_FILE-FDGRV <> C_SLASH.
LH_COMPANY-DATA-FDGRV = PI_LH_FILE-FDGRV. "CM 計画グループ
LH_COMPANY-DATAX-FDGRV = C_CHK.
ENDIF.
IF PI_LH_FILE-BANKS <> C_SLASH.
LH_COMPANY-DATA-QLAND = PI_LH_FILE-BANKS. "国
LH_COMPANY-DATAX-QLAND = C_CHK.
ENDIF.
IF PI_LH_FILE-ALTKN <> C_SLASH.
LH_COMPANY-DATA-ALTKN = PI_LH_FILE-ALTKN. "旧勘定コード
LH_COMPANY-DATAX-ALTKN = C_CHK.
ENDIF.
IF PI_LH_FILE-ZTERM <> C_SLASH.
LH_COMPANY-DATA-ZTERM = PI_LH_FILE-ZTERM. "支払条件
LH_COMPANY-DATAX-ZTERM = C_CHK.
ENDIF.
IF PI_LH_FILE-BUSAB <> C_SLASH.
LH_COMPANY-DATA-BUSAB = PI_LH_FILE-BUSAB. "記帳担当者
LH_COMPANY-DATAX-BUSAB = C_CHK.
ENDIF.
IF PI_LH_FILE-ZSABE <> C_SLASH.
LH_COMPANY-DATA-ZSABE = PI_LH_FILE-ZSABE. "仕入先担当者
LH_COMPANY-DATAX-ZSABE = C_CHK.
ENDIF.
* 取得源泉徴収税
SELECT WITHT UP TO 1 ROWS
FROM LFBW
INTO L_WITHT
WHERE LIFNR = LH_DATA-VENDOR-HEADER-OBJECT_INSTANCE-LIFNR
AND BUKRS = PI_LH_FILE-BUKRS.
ENDSELECT.
* 源泉徴収税
IF L_WITHT IS INITIAL.
IF PI_LH_FILE-WITHT IS INITIAL
OR PI_LH_FILE-WITHT = C_SLASH .
CLEAR LH_WTAX-TASK.
ELSE.
LH_WTAX-TASK = C_I.
LH_WTAX-DATA_KEY-WITHT = PI_LH_FILE-WITHT. "源泉徴収税タイプコード
ENDIF.
ELSE.
IF PI_LH_FILE-WITHT IS INITIAL.
LH_WTAX-TASK = C_D.
LH_WTAX-DATA_KEY-WITHT = L_WITHT. "源泉徴収税タイプコード
ELSE.
LH_WTAX-TASK = C_U.
LH_WTAX-DATA_KEY-WITHT = PI_LH_FILE-WITHT. "源泉徴収税タイプコード
ENDIF.
ENDIF.
IF PI_LH_FILE-WT_WITHCD <> C_SLASH.
LH_WTAX-DATA-WT_WITHCD = PI_LH_FILE-WT_WITHCD. "源泉徴収税コード
LH_WTAX-DATAX-WT_WITHCD = C_CHK.
ENDIF.
IF PI_LH_FILE-WT_SUBJCT <> C_SLASH.
LH_WTAX-DATA-WT_SUBJCT = PI_LH_FILE-WT_SUBJCT. "源泉徴収課税対象
LH_WTAX-DATAX-WT_SUBJCT = C_CHK.
IF PI_LH_FILE-WT_SUBJCT <> SPACE.
LH_COMPANY-DATA-QLAND = 'JP'.
ELSE.
LH_COMPANY-DATA-QLAND = SPACE.
ENDIF.
LH_COMPANY-DATAX-QLAND = C_CHK.
ENDIF.
IF LH_WTAX-TASK IS NOT INITIAL.
APPEND LH_WTAX TO LH_COMPANY-WTAX_TYPE-WTAX_TYPE.
ENDIF.
APPEND LH_COMPANY TO LH_DATA-VENDOR-COMPANY_DATA-COMPANY.
APPEND LH_DATA TO LI_DATA.
CALL METHOD CL_MD_BP_MAINTAIN=>MAINTAIN
EXPORTING
I_DATA = LI_DATA
IMPORTING
E_RETURN = LI_RETURN.
IF LI_RETURN IS NOT INITIAL.
LOOP AT LI_RETURN INTO LH_RETURN.
LI_MESSAGE = LH_RETURN-OBJECT_MSG.
LOOP AT LI_MESSAGE INTO LH_MESSAGE WHERE TYPE = C_A
OR TYPE = C_E
OR TYPE = C_X.
CLEAR LH_RETMSG.
MOVE-CORRESPONDING LH_MESSAGE TO LH_RETMSG.
APPEND LH_RETMSG TO PO_MESSTAB.
ENDLOOP.
ENDLOOP.
ENDIF.
* エラーありの場合
IF PO_MESSTAB IS NOT INITIAL
OR CB_TSTCK IS NOT INITIAL.
IF PO_MESSTAB IS NOT INITIAL.
PO_FLG = 'X'.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
RETURN.
* エラーなしの場合
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_BDC_SET
*&---------------------------------------------------------------------*
*& BDC SET
*&---------------------------------------------------------------------*
* -->I_PROGRAM プログラム
* -->I_DYNPRO Dynpro番号
* -->I_DYNBEGIN ID
* -->I_FNAM 項目名
* -->I_FVAL 項目値
*&---------------------------------------------------------------------*
FORM FRM_BDC_SET USING VALUE(I_PROGRAM)
VALUE(I_DYNPRO)
VALUE(I_DYNBEGIN)
VALUE(I_FNAM)
VALUE(I_FVAL).
DATA LH_BDCDATA TYPE BDCDATA.
CLEAR LH_BDCDATA.
LH_BDCDATA-PROGRAM = I_PROGRAM.
LH_BDCDATA-DYNPRO = I_DYNPRO.
LH_BDCDATA-DYNBEGIN = I_DYNBEGIN.
LH_BDCDATA-FNAM = I_FNAM .
LH_BDCDATA-FVAL = I_FVAL.
APPEND LH_BDCDATA TO I_BDCDATA.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ERR_EDIT
*&---------------------------------------------------------------------*
*& エラーメッセージの編集
*&---------------------------------------------------------------------*
FORM FRM_ERR_EDIT USING PI_LH_FILE TYPE TYP_FILE
PI_LI_MESSTAB TYPE TABLE
PI_L_LINE TYPE SY-TABIX.
DATA:
LH_ERR TYPE TYP_FILE_ERR,
LH_MESSTAB TYPE BAPIRET2,
LH_MSG TYPE TYP_MSG.
*帳票レイアウエラー
CLEAR LH_MSG.
LH_MSG-COL1 = PI_L_LINE .
LOOP AT PI_LI_MESSTAB INTO LH_MESSTAB.
CONCATENATE LH_MESSTAB-ID LH_MESSTAB-NUMBER
INTO LH_MSG-COL2 SEPARATED BY SPACE."メッセージID
MESSAGE ID LH_MESSTAB-ID
TYPE LH_MESSTAB-TYPE
NUMBER LH_MESSTAB-NUMBER
WITH LH_MESSTAB-MESSAGE_V1
LH_MESSTAB-MESSAGE_V2
LH_MESSTAB-MESSAGE_V3
LH_MESSTAB-MESSAGE_V4
INTO LH_MSG-COL3.
APPEND LH_MSG TO I_MSG.
AT FIRST.
* エラーファイル
CLEAR:LH_ERR.
MOVE-CORRESPONDING PI_LH_FILE TO LH_ERR.
LH_ERR-ID = LH_MSG-COL2.
LH_ERR-MESSAGE = LH_MSG-COL3.
APPEND LH_ERR TO I_ERR.
ENDAT.
ENDLOOP.
ENDFORM.