7. 出荷

完成品在庫(または生産完了した受注)を、実際にお客様(トヨタ紡織・アイシン・デンソーなど)へ送り出すまでの一連の処理。受注データ(JUDP)1行=1受注明細という構造が出荷まで貫かれ、出荷専用の別ファイルは存在しない。

このページの要点
  • 受注データJUDP1行=1受注明細の構造が出荷まで貫かれ、出荷専用の別ファイルは存在しない。
  • JUDP全45,545行中80.2%が出荷済みで、年間出荷件数は概ね4,000〜4,800件で安定。
  • 中止区分JUKUSTは82.4%がNULL(空欄)で、これは異常でなく「キャンセルされていない」正常値。
手前で担当者が伝票にスタンプを押しトラックへ積み込む場面と、奥で別の担当者が棚の部品を取り出す場面が、点線の足跡でつながっている様子
出荷入力と在庫展開は、別の人・別のタイミングで行う2段階の手動作業。

1. 業務の目的と位置づけ

出荷業務は、生産完了した受注をお客様の工場へ届けるまでの最終工程。大きく4段階で進む。

  1. 出荷指示 JSBS08 / JSBS09
    どの受注をいつまでに出荷するか、社内向けに指示書を発行する。
    担当: 出荷担当
  2. 出荷準備 JSBS10
    現場が現品をピッキング・梱包し、生産完了=出荷準備完了をシステムに記録する。
    担当: 生産ライン
  3. 出荷実績入力 SSBS01ITND50R
    実際に出荷した日・数量・伝票№を受注データ(JUDP)に記録する。
    担当: 出荷担当
  4. 在庫展開 SSBS02ITND01R
    出荷が確定した分だけ、完成品・部品の現在庫数を一括で減算する。
    担当: 出荷担当(別実行)

このあと下流の売上計上(請求書発行、ITS000R/001R/002R系)へ引き継がれる。売上計上は財務エージェントの領域だが、JUDPレコードの JUNOHI(納入日)・JUSEHI(請求対象年月)が橋渡しキーとなる。(出典: itnd50r.md #UPDATセクション)

アーキテクチャ上の要点
出荷は独立ファイルを持たず、受注明細 JUDP がそのまま出荷記録になる。 1つの JUDP レコード=1つの受注明細行であり、出荷はこのレコードに納入日・納入数・打切区分等を記入することで記録される。「出荷伝票」に相当する専用テーブルは存在しない。これは推測ではなく仕様書に明記された事実。 (出典: itnd50r.md「Purpose」節)

2. 出荷指示のフロー

JSBS08 出荷・組付指示書発行(オーケストレーター)

エントリ: MENUJ1(受注管理)オプション8 → CL JSBS08JSBS08C 本体。JSBS08Cはそれ自体はデータ処理を一切行わない、純粋なオーケストレーター。画面(JSBS08D)は確認のみ・入力項目なしで、実行キーを押すと最大6回までExcelが自動起動する旨が画面に明記される。(出典: jsbs08c.md「Purpose」節)

パイプラインは6フェーズ・22の子プログラムから成る固定シーケンス:

1. まとめ指示作成ITKM11R W6未実装
2. まとめ振戻・再引当ITKM12R/13R W6未実装
3. 単品区分照合ITSS05R
4. 出荷指示書発行ITSJ07R
5. 組付指示書発行ITSS01R〜08R/02R
6. 構成チェックリストITKS06R
フェーズ何をするか出荷業務上の意味
1. まとめ指示作成ITKM11R(W6未実装スタブ)→条件付きでBAT0108C印刷複数受注をまとめた組付指示(まとめ指示)を作る。現状W6未実装のため常に0件でスキップ
2. まとめ振戻・再引当ITKM12R/13R(同W6スタブ)→BAT1001印刷フェーズ1が動いていれば在庫再引当。現状ドーマント
3. 単品区分照合ITSS05R単品出荷品かどうかの整合チェック
4. 出荷指示書発行ITSJ07R → 条件付きBAT0109印刷本フェーズが「出荷指示書」を作る中核。単品出荷品(JUD605=11〜19)を対象に在庫引当し、JUDP側にJUKUED=8/JUD104=9/JUHAHI=TODAYを立てる
5. 組付指示書発行ITSS01R構成展開→ITSS06R引継→ITSS03R分納再引当→ITSS08R在庫引当→ITTS44R支給品数量反映→ITSS02R発行→条件付きBAT0108印刷「組付品」(部品を組み立てて出荷する製品)向けの組付指示書を作る
6. 構成チェックリストITKS06RQPRINT(プリンタ)へ構成の累積チェックリストを出力

「何を印刷するか」=6種類のBATプログラム(すべて Excel/VBA):

プログラム発行条件帳票名
BAT0108C Excelまとめ指示>0件まとめ指示書(組付)
BAT1001 Excelまとめ再引当>0件まとめ再引当後帳票
BAT0109 Excel出荷指示>0件出荷指示書
BAT0108A Excel常時組付部品引当在庫の引継ぎ指示書(引継分)
BAT0108B Excel常時同上(分納分)
BAT0108 Excel組付指示>0件組付指示書

「何を決めるか(引当)」は出荷指示書発行(ITSJ07R)が担う。在庫確認 PBZKCKR(読み取り専用)と在庫マスタ処理 PBZKUPR(実際にZKDPの引当数・現在庫数を増減する在庫引当エンジン)を呼び出し、その日出荷できる分の在庫を実際に押さえてから受注データにスタンプを打つ。これはRPGの実物コールで、Excel帳票のBAT0109はあくまで印刷担当(ITSJ07Rは印刷を持たず、印刷はJUDPP1ステージングテーブル経由でBAT0109のExcelマクロが担う)。(出典: itsj07r.md「Purpose」節)

【ヒアリングで判明】フェーズ5のITSS08R(部品展開・在庫引当)は、新實さんの確認では試作品(受注区分2)の受注経路における「肝」の処理にあたります。試作品はMENUT→MENUA(前段階)を経てMENUJ1のJSBS08へ進み、ここで部品展開と在庫引当が行われます。受注区分の全体像は3. 受注 §7を参照。(出典: 新實さん、2026-07-20メール、docs/feedback/analysis/2026-07-20-niimi-shijikeitai.md参照)

各BATプログラムの実体は「サーバー2台目 \\SERVER2\KANRI\BATCH\<name>.XLSM を開いてマクロを実行するだけ」の薄いCLラッパー。現行の移行版TypeScriptではこのステップを「ログを出してスキップ(PRINT-SEAM defer-loud)」として実装している。(出典: jsbs08-seam-and-stubs.md §B)

実VBAで解明 — BAT0109の実体マクロは本リポジトリに存在する
「XLSMマクロ本体はこのリポジトリに含まれていない」という従来の記述はBAT0109に関しては誤りsource/shipping/出荷指示書発行/出荷指示書発行.xlsmのVBAを解析したところ、ファイル名こそBAT0109.XLSMではないが、内部定数DATA_FILE = "JUDPP1.xls"KANRI_PATH & "\batch\CA\Batch"という展開パス・JUDPP1行区分コード("Z"=ITSJ07R/"G"=ITSJ05R/"S"or"G"=ITSJ51R/"K"=ITTS13R)がjsbs08-seam-and-stubs.mdのBAT0109契約と完全一致し、同一ロジックの実体マクロと判断できる。BAT0108/BAT0108A/BAT0108B/BAT0108C/BAT1001の5本(組付指示書・まとめ指示系)は今回出荷指示書発行/出荷準備/の2フォルダを精査しても見つからず、この5本については「マクロ本体はリポジトリ外」という従来の記述のままでよい。 (出典: 出荷指示書発行.xlsm VBA実測; jsbs08-seam-and-stubs.md §B)
実VBAで解明 — 未文書化だった7本目のBATプログラム BAT0811
source/shipping/出荷指示書発行/品番紙印刷(ロット№付).xlsmDATA_FILE = "SJDPP3.xls"を読む。pilot/spec/itts15r.mdによれば、SJDPP3を消費するのはBAT0811(CL、品番紙データ転送\\SERVER2\KANRI\BATCH\...\BAT0811.XLSM)という、本ページが従来まったく把握していなかったBATプログラムで、MENUW1(号口管理サブシステム)オプション11「作業指示完成入力」(WSBS11ITTS15R)から呼ばれる——JSBS08パイプラインとは別系統。ITTS15Rは号口の生産完了入力(完成日/出来高/半加工数等を記録し、SJDP/BHMP/JHMPの現在庫数を更新)で、対象品番のJHMP.JHD033=100(品番紙要・ロット№印刷)のときだけSJDPP3に1行書き、セッション終了時に1件以上あれば&KENSU>0でBAT0811を起動する。マクロ内のエラーメール本文が\\Server2\kanri\AS400設定\出荷指示書発行\デンソー機工品番紙(ロット№付).xlsという実サーバーパスをそのまま記載しており、本リポジトリのsource/shipping/出荷指示書発行/フォルダがそのミラーであることも確認できる。 (出典: 品番紙印刷(ロット№付).xlsm VBA実測; itts15r.md「BAT0811 / BATCH00 chain」節; pilot_MENUW1.md)
まとめ指示との関係
「まとめ指示」(組付まとめ指示、指示形態=31、KMDPテーブル)は、複数の号口受注をひとまとめにして1回の組付指示にする仕組み。JSBS08Cのフェーズ1・2(ITKM11R〜17R)が担当するが、移行版では現状すべて未実装スタブ(W6スコープ)で「常に0件」を返すよう固定されている。そのためまとめ指示が絡む受注は移行版アプリでは処理されない(未解明事項10も参照)。(出典: jsbs08-seam-and-stubs.md §0 disposition一覧)

JSBS09 出荷指示書発行(号口)との違い

JSBS09 はJSBS08と別の独立CLで、ITSJ05R を呼ぶ。JSBS08が「出荷・組付指示書発行」という全パイプライン(単品出荷品も組付品も両方処理)であるのに対し、JSBS09(ITSJ05R)は「号口」区分専用にITSJ01RPMKBN='G'で呼び、日付判定にCLMPではなくDCMP(DKカレンダー)を使う点が異なる。(出典: itsj05r.md; menuj1-open-questions.md #84)

注意 — コメントに惑わされないこと
JSBS09には「検査用出荷指示書を使わなくなったため、処理停止」という古いコメント(2010年NIINOMI)が残っているが、実際にはコード自体は現役で動いている。移行チームが確認済みの「コメントが古いだけで実際は生きている」ケース。新人が同コメントを読んで「使われていない」と早合点しないよう注意。

3. 出荷準備

JSBS10 号口出荷準備完了入力(ITJM79R)

MENUJ1オプション10。号口(JUD605=51〜69)の受注1件について、「生産ラインが出荷準備を完了した」ことを記録するだけの小さな画面。サブファイルなし、作業者コードサインオンなし、証跡プリントなし、在庫演算も一切なし — 4節のITND50R(出荷入力)と比べてはるかに単純。(出典: itjm79r.md「Purpose」節)

記録する内容:

フィールド内容
JUKUED(打切区分)= 8(生産完了)にスタンプ
JUKNHI / JUKNSU完成日 / 完成数
JURNO1/2/3ロット№を3つまで、操作者が手入力

対象条件: JUKUED=0(未完了)、JUKUST=blank(中止でない)、JUD605が51〜69(号口)のみ。この画面は号口専用で、それ以外の区分は「この受注№はこのプログラムでは消し込みできません」というエラーで弾かれる。(出典: itjm79r.md #CHECK)

画面タイトルの表記揺れ
メニュー表記は「号口出荷準備完了入力」だが、実際の画面タイトルやCLコメントは「出荷指示完了入力」となっている(未解明事項として記録済み)。2001年作成の社内手順書「データフロー(出荷処理)」「データフロー(号口品)」もいずれもこの画面を指すボックスを「出荷指示完了入力 1-10」と表記しており、RPGソース解析より前から社内文書上でも「出荷指示完了入力」の名称が使われていたことが裏付けられる。(出典: source/work-procedures/作業手順書/データフロー(出荷処理).doc、データフロー(号口品).doc参照) (出典: itjm79r.md「Note title discrepancy」節)

出荷準備Excelジョブ Excel/VBA

ディレクトリ source/shipping/出荷準備/ には品番ごとに個別のExcelファイル(例: 047460-0580.xls, 146250-4861.xls など、品番№がファイル名)が大量に格納されている。内容は現物のピッキング・梱包手順書(写真付き、PHOTOサブフォルダあり)、荷姿の説明、納品書の作成手順(「納品書の処理手順(デンソー機工).xls」「同(ヒサダ).xls」「同(浅賀井製作所).xls」「同(アイシン機工).xls」等、取引先ごとに個別の納品書作成マニュアルが存在)、完成ストア入庫前検査(完成ストア入庫前検査/A-様式.xls)、表面処理準備作業(表面処理準備作業/B-様式.xls)のチェックリスト、および全体の「出荷作業手順書」が含まれる。

実VBAで解明 — 出荷準備/フォルダは完全に静的で、AS/400連携ゼロ
76ファイル全件(per-品番手順書、4取引先分の納品書処理手順、A-様式/B-様式、出荷準備データ検索.xlsx含む)をoletoolsで一括走査した結果、VBA/XLMマクロを含むファイルは1件もなかった。従来「推測(未精査)」としていた「AS/400のプログラムではなく、現場作業者向けの手順書・作業補助ツール」という位置づけは、これで確定事実に格上げできる。写真・手書き図・チェック欄付きの静的なExcel/JPEGドキュメント群であり、システム的なトリガー・自動連携は一切ない。 (出典: 出荷準備/配下76ファイルへのolevba一括実行、全件"No VBA or XLM macros found")

「出荷準備データ検索.xlsx」もVBAなしの静的ファイルで、中身はAS/400への問い合わせではなく、得意先/品番/品名の一覧表から同フォルダ内の各品番手順書ファイル(および完成ストア入庫前検査/A-*.xls表面処理準備作業/B-*.xls)へのハイパーリンク集(外部リンク約40件、ExcelのTargetMode="External")だった。いわば「どの品番の手順書がどこにあるか」を引くための手作業インデックスであり、検索エンジンやAS/400クエリではない。(出典: 出荷準備データ検索.xlsx sharedStrings.xml/rels実測)

出荷準備/の各ドキュメントは、JSBS10(ITJM79R)が記録する「生産ラインが出荷準備を完了した」という事実の裏側で実際に行われる手作業(ピッキング・梱包・検査・表面処理準備)を支えるデスクリファレンスであり、JSBS10からもJSBS10へも自動的な読み書きは無い——JSBS10はJUKUED=8等のスタンプを打つだけの小さな画面(3節冒頭参照)で、実際の作業手順はこれらのExcel文書に完全にオフシステムで存在する。

品番紙・現品票 — 出荷指示書発行/のExcel/VBA実測

JHMP(受注品番マスター)のJHD033(品番紙要不要)フラグで、品番ごとに「品番紙(品番ラベル/かんばんラベルに相当)」を印刷するかどうかを制御する。(出典: itjm59r.md)

意味
0作成しない
1作成する
2作成し、確認者の欄を追加
100作成し、ロット№の印刷

この設定は JSBS45(ITJM59R 品番紙情報入力)画面で保守する。実際の品番紙印刷そのものはAS/400側ではなくPC(Excel)側で行われる(原文コメント引用: 「09/11/03 変更 デンソー機工向けのすべての号口品に品番紙が要るようになったため、デンソー機工の製品についてはAS400側が作成しない設定になっていてもPC側で要るように変更するようにした」)。この引用は品番紙印刷(ロット№付).xlsm内の09/10/30付変更履歴コメントとほぼ同一文面で、VBA側の記述として直接確認できる。

実VBAで解明 — 品番紙と現品票は別物。トリガーも別系統
従来「品番紙(現品票に相当)」と1つの概念として扱っていたが、VBA実測の結果、品番紙と現品票は別々の帳票で、生成トリガーも別系統と判明した。
  • 品番紙は号口製品につける品番ラベル。生成経路が2つある:
    1. 出荷指示発行時(BAT0109 = 出荷指示書発行.xlsm: JUDPP1の号口(G)行から「品番紙データ」xlsを作成しメール添付するだけ(後述、印刷はしない)。
    2. 生産完了時(BAT0811 = 品番紙印刷(ロット№付).xlsm: ITTS15R(号口の作業指示完成入力、MENUW1オプション11、JSBS08系とは別サブシステム)がJHD033=100の品番についてSJDPP3へ1行書き、セッション終了時にBAT0811がロット№入りラベルをA4に7列でレイアウトしてその場で印刷する。原紙が無い品番は印刷せず、担当者へエラーメールを送る(デンソー機工品番紙エラー通知)。
    つまり号口製品の品番紙は出荷指示より前、生産完了の時点で既に印刷されているのが基本経路で、出荷指示発行時の「品番紙データ」メールは別目的(後述)の副次的な出力にすぎない。
  • 現品票出荷指示書発行.xlsm(BAT0109)が出荷指示書と同じJUDPP1データから生成する別の帳票。JUDPP1の1列目が"A"(在庫情報)の行だけを対象に、得意先/区分("単品製品"固定)/指示品番/指示品名/入出庫日/入庫数/出庫数/棚番を転記して印刷する——出荷指示書(客先向け)ではなく、倉庫の棚での入出庫を示す社内タグという性格が読み取れる。出力先の様式ファイル現品票.xlsx出荷指示書.xlsxと並んでマクロから参照されるが、本リポジトリの出荷指示書発行/フォルダには現品票.xlsxの実体が存在しない(データギャップとして未解明事項に追加)。
(出典: 出荷指示書発行.xlsm VBA実測 Sub JOB_Genpinhyou_A4/Genpinhyou_Write/JOB_Hinbansi; 品番紙印刷(ロット№付).xlsm VBA実測 Sub Main/ERR_Hinban_Send; itts15r.md)

source/shipping/出荷指示書発行/配下には他に「デンソー機工品番紙.xlsx」(マスタ原紙一覧、マクロ無し)・「品番紙個別印刷.xlsm」がある。後者はBAT系とは無関係の手動ツール: 操作者が「入力画面」シートに品番と必要枚数を最大8件手入力し、ボタンでマスタ原紙から品番紙をA4に割付印刷するだけで、AS/400ファイルもメールも一切扱わない(原本が見つからない品番はメッセージボックスで警告するのみ)。既存の1回限りの追加印刷・再発行に使われるとみられる。デンソー機工品番紙_<受注№>[_軍次].xlsという日付・受注№付きファイルはこのツールまたはマスタ原紙の出力スナップショットで、いずれもVBAを含まない。(出典: 品番紙個別印刷.xlsm VBA実測 Sub Main)

実業務手順書で解明 — デンソー機工向け品番紙の現場運用を記した2008年作成の社内手順書「デンソー機工 品番紙にロット№記入」(作成者: 新実、現ヒアリング回答者の新實さんと同一人物と見られる)には、実際のタグ書式が図示されている: 品番:B8021-57602ロットNO:(作業指示書のロット№を転記)梱口 個仕入先名 ㈱板倉製作所。手順は「メッキ完了後、東工場2Fへ移動→作業指示書のロット№を品番紙に手書きで転記し箱数分すべてに添付→出荷専用の指定箱(2008-01-17時点は緑1号箱・200個入り、変更の可能性ありと注記)に移し替えて品番紙を付け替える」という2段階。この2008年時点の手順は手書きでロット№を記入する運用であり、本節前段のVBAコメント引用「09/11/03変更 デンソー機工向けのすべての号口品に品番紙が要るようになった」による自動化(BAT0811によるロット№印刷)は、この手書き運用より後に導入されたものと見られる。(出典: source/work-procedures/作業手順書/デンソー機工 品番紙にロット№記入.doc参照)

品番紙データは「メール定期自動送信」ジョブでも定期的に添付ファイルとして送信されている(添付ファイル/*_品番紙データ.xls、6節参照)——これは出荷指示書発行.xlsmのSub JOB_HinbansiHinbansi_Data_Sendが生成するもので、BAT0109(出荷指示発行)が走るたびに号口(G)かつ入り数に対して端数のある品番だけを対象に作成される(6節で詳述)。

4. 出荷実績 — SSBS01 出荷入力(ITND50R)

いつ・誰が記録するか

MENUS1(出荷管理サブシステム)オプション1「出荷入力」。生産完了した受注(JUKUED=8、つまり出荷準備が済んだ状態)に対して、実際に出荷したという事実を記録する画面。操作者コード(SGMPマスタ)のサインオンが必須。(出典: itnd50r.md「Purpose」節、画面フローGMRD)

何を記録するか(GM2詳細画面の入力項目)

項目フィールド備考
出荷数WSNOSU→JUNOSU受注残数を超える入力は不可(MSG,7)
伝票区分WSKUDE→JUKUDE1桁目=得意先/板倉どちらが品番記入か、2桁目=区別無/試作/号口
伝票№WSNOTD→JUNOTD客先伝票№。操作者が手入力(システムによる自動採番は無い)
出荷日WSNOHI→JUNOHI稼働20日以内、カレンダーマスタ(CLMP)に存在する日付のみ、締め済み月以前は不可(SIMEBIガード、下記callout参照)
打切区分WSKUED→JUKUED0=継続(分納継続)/9=打切(出荷完了)
完成度WSKNDO→JUKNDO追加モードでは自動100固定
SIMEBI(締日)ガードの設計意図と、TK1P未登録時の引き継ぎバグ 【2026-07-29ヒアリングで完全クローズ】

上表「出荷日」の「締め済み月以前は不可」という検証は、NOHIXX IFLE SIMEBI(作業変数SIMEBI=得意先のTK1P.T1DYSM=締日)による日付比較で実現されている。この検証の設計意図はこれまで文書化されていなかったが、新實さんの回答で判明した——「基本的に請求済みの期間では入力できないようにするためのもの」。つまり単なる日付妥当性チェックではなく、締切済み会計期間への遡及出荷入力を防ぐためのガードである。

これに関連し、ITND50Rには既知の潜在バグがあった: TK1Pレコードの無い得意先の受注を処理すると、直前に処理した別の受注の締日が誤って引き継がれる可能性がある(SIMEBI#CLEARで一度だけ0初期化されるのみで、CHAINT1MR失敗時にELSEでのリセットが行われないため。source/as400-admin/transport-tooling/ITLIBS/ITND50R.txt 458-463行目)。新實さんはバグの実在を明示的に確認したうえで、「TKMPとTK1Pは毎月レコードが一致するようになっており、JUDPの得意先コードはTKMPを参照して入力するため、その現象は起こりにくい」(運用による回避)としつつ、「発生の可能性はゼロではないので、修正できれば修正したほうが良い」と回答した。

当方の対応状況: 既に修正済み。移植版pilot/app/src/menus1/shipmentEntry.ts:309-320は得意先ごとにTK1Pを都度SELECTし、ヒットしなければガード自体を掛けない実装になっている(pilot/DEVIATIONS.md #36として逸脱登録済み)。持ち越しは構造的に不可能(値がリクエストスコープのローカル変数)。回帰テストpilot/app/test/menus1/itnd50.test.ts:485-506が、TK1Pのある受注でブロックされた後にTK1Pの無い受注が通ることを固定している。

機械的スイープ: TK1P(T1MR)をCHAINする全9本(ITND50R/ITS995R/ITS994R×2/ITS996R/ITJM38R/ITJM38RA/ITS001R/ITS001RX1)を点検し、ELSEリセット漏れはITND50Rのみと確認——他はすべてZ-ADD*ZEROで作業フィールドを明示的にリセットしている(ITS995Rは自レコード更新パスのため対象外)。同種の潜在バグは他に存在しない。

(出典: 新實さん、2026-07-29ヒアリングシート回答、hearing.html C9docs/feedback/hearing/2026-07-29-niimi-hearing-sheet.md参照)
実VBAで解明 — 伝票№の入力漏れは自動チェック・メールで検知される
客先伝票№(JUNOTD)はシステム自動採番が無く操作者の手入力だが、入力漏れを放置できない仕組みが別途存在する。source/shipping/出荷指示書発行/伝票№未入力チェックリストメール送付.xlsmJUDPQ7.xls(RPG ITND06Rが書き出す「受注データTO PC FOR 伝票№未入力チェック」ステージング)を読み、「出荷入力が終了しているが伝票№が入力されていないもの」を当月+前月分だけ抽出して一覧化し、メール添付で担当者へ送付する。ITND06Rはどのメニューツリーにも見つからず、日次/夜間のジョブスケジューラ登録による無人バッチと推測される(未解明事項に追加)。 【解決】ITND06Rはメニューツリーには現れないが無関係ではなく、analysis/out/edges.csvが示すとおりBACKUP02BACKUP02CPも同一)から呼ばれるCLバッチの一部であり、BACKUP02自体はhearing.html A3で確定済みの日次06:30チェーン(LSTPRT01SCD02SCDCK02BACKUP02)の末端。このExcel側の受け皿こそ本節のメール自体であり、daily-rhythm.html A3(19本連鎖表・12番目「伝票№未入力チェックリストメール送付」)で送信時刻06:32〜07:22頃・送付先まで既に確定している——「実行頻度・時刻不明」ではなく、AS/400側(BACKUP02経由のITND06R)とWindows側(本メール)が同一の06:30チェーンの両端だったというだけ。 (出典: 伝票№未入力チェックリストメール送付.xlsm VBA実測 Sub Main; analysis/out/schema.sql「JUDPQ7」コメント; analysis/out/edges.csv「BACKUP02,call,ITND06R」; hearing.html A3; daily-rhythm.html A3)

4つのモード(機能キーで切替):

  1. 追加
    生産完了済み受注に対して初めて出荷を記録する。前提条件: JUKUST≠'D'(中止でない)・JUNOHI=0(未出荷)・JUKUED=8(生産完了済)・JUD104≠9(在庫引落未完了は不可)。
  2. 修正
    既に入力済みの出荷内容を訂正する。プルーフリストに前/後2行で印字される。
  3. 中止補償
    中止(キャンセル)済み受注に対する補償出荷を記録する。
  4. 削除
    出荷入力を取り消し、受注を未出荷状態に戻す。

各モードで受付前提条件が異なる。詳細は pilot/spec/itnd50r.md「Validations」節を参照。トランザクションごとにQPRINT(出荷入力プルーフリスト)へ証跡が印字される(作業内容/受注№/出荷日/出荷数/打切区分/伝票№/伝票区分/受注品番/得意先/注残数の列)。

納品書・受領書の印刷について

ITND50R自体はプルーフリスト(内部証跡)のみを印刷し、得意先向けの納品書・受領書は発行しない(仕様書に明記された事実)。推測 得意先向け納品書は前述の「出荷準備」Excelジョブ側(取引先別の納品書作成手順書、3節参照)で別途作成されると見られるが、具体的なタイミング・ツールは特定できず未解明事項5。

【ヒアリングで判明】「出荷準備Excelジョブ側で別途作成」という上記の推測は誤りだったと確定した——新實さんの回答: 「基本的に納品書は客先指定納品書が中心。受注後客先より印刷されたものを渡されるか、データで受け取って印刷するものが多い。手書き伝票だが客先指定のもの、当社の手書き伝票と混在しているが、納品書をAS400から発行することはない。製品が完成し(在庫含む)納期が一定期間内になったら、出荷指示書がAS400より発行され、それを元に納品書を手書きで記入、出荷指示書が営業課に回収され、営業課で出荷入力される」。つまり得意先向け納品書はAS/400からもExcelジョブからも発行されず、客先支給または当社手書きのいずれかであり、AS/400が発行する出荷指示書は納品書そのものではなく、営業課が手書き納品書へ転記するための社内トリガーに過ぎない。(出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C9)

注意 — 出荷入力は在庫を減らさない
仕様書が明示的に警告している通り、このプログラムは在庫演算を一切行わず(JHMPは読み取り専用、BHMPは開かれない)、伝票№の自動採番も行わない。在庫の実際の引き落としは別プログラム(5節のSSBS02、または2節のJSBS08系ITSJ07R/ITTS32R)が担当する。新人がこの画面だけで「出荷=在庫が減る」と誤解しないよう注意(在庫が減るのは次節SSBS02のみ)。 (出典: itnd50r.md「Purpose」節)

5. 在庫展開 — SSBS02 出荷データ在庫展開(ITND01R)

注意 — 2段階の手動運用。忘れると在庫がずれる
SSBS01(出荷入力)で出荷を記録した後で、SSBS02(在庫展開)を別途実行して初めて在庫数が減る、という2段階の手動運用になっている。両者はメニュー上の別オプションであり、SSBS01が自動的にSSBS02を呼ぶ仕組みは無い。SSBS02の実行を忘れると、出荷は記録済みなのに在庫数だけが古いまま残る。SSBS02をいつ・どのくらいの頻度で回すか(都度か日次バッチか)はソースからは分からない(未解明事項11)。

【ヒアリングで判明】SSBS02の実行頻度・タイミングについて、新實さんの確認により運用ルールが判明した: 「SSBS01を実行した後に、SSBS01実行者がSSBS02を実行することになっています。基本的に1人が1日1回実行します。」——つまり自動化された日次バッチではなく、SSBS01を実行した本人がその都度続けて手動でSSBS02を実行するという担当者ベースの運用ルールであり、実務上は1日1回のペースで回されている。(出典: 新實さん、2026-07-22回答、docs/feedback/analysis/2026-07-22-niimi-remaining-A-questions-reply.md参照)

実業務手順書で解明 — 2001年作成の社内手順書「データフロー(出荷処理)」の図には、出荷入力(3-1)と出荷データ在庫展開(3-2)の間に「15:00〜17:00の間、データの不整合発生中」という注記が明記されている。当時から出荷入力と在庫展開の間に日次の時間差ウィンドウが存在し、その間は出荷済みでも在庫が未反映という状態が業務上想定されていたことがわかる——上記のヒアリングで判明した「1人が1日1回実行する」運用の、より具体的な歴史的裏付けと見られる。(出典: source/work-procedures/作業手順書/データフロー(出荷処理).doc参照)

「展開」とは何をしているか

「出荷が確定した受注」を一括でスキャンし、完成品在庫(JHMP)と部品在庫(BHMP)をまとめて減算するバッチ処理。画面上の説明文をそのまま引用(ITND01D.txt):

現在庫数から出荷した製品数を減らします。
組付する製品は、部品に直して部品の現在庫数を修正します。

「部品に直して」の部分が「展開=BOM展開」に相当する処理で、構成マスタ(KSMP)をたどって組付製品を構成部品に分解し、各部品の現在庫数(BHZASU)を消費数量(=構成数量×出荷数量)だけ減算する。(出典: itnd01r.md「#KSMP — BOM component walk」節)

対象の選び方

処理対象は「JUDL31」という論理ファイル(JUDPをキーJUNOJUで見たビュー)で、あらかじめ「JUNOHI>0(納入日あり)かつJUKBWN=blank(未処理)」の行だけに絞り込まれている。さらにRPGコード側で下記3条件すべてを満たす行だけが対象:

処理後はJUKBWN(出荷処理区分)に'E'をスタンプし、二重処理を防ぐ(同じ受注が2回展開されることはない)。

在庫減算の対象・条件

実行方法とバックアップ

SSBS02は確認画面1枚だけの一括バッチ(対話的な項目入力は無し、実行キーで開始 or F3で中止のみ)。実行前に自動的に3ファイルのバックアップコピーが取られる(JUDP→JUDPSV, JHMP→JHMPSV, BHMP→BHMPSV)。これが唯一のロールバック手段であり、失敗時は手動でCPYFにより復元する必要がある。実行完了後は「"出荷データ在庫展開"処理が終了しました。」というメッセージが表示されるのみで、エラー時の個別通知は無い(欠品などは静かにスキップされる)。(出典: itnd01r.md「SSBS02C backup copies」節、「Validations」節)

6. 納入形態

出荷準備のExcelジョブ群のファイル名や納品書手順書(3節)から、取引先(デンソー機工、ヒサダ、浅賀井製作所など)ごとに異なる納品書フォーマット・処理手順が存在することが確認できる。推測 各得意先の受入形態(かんばん納入方式か通常納入方式か等)が異なるためと推測されるが、本調査で読んだソース内には「かんばん納入」と「通常納入」を明示的に区別する業務ロジック(フラグや分岐)は見つからなかった(未解明事項6)。

【ヒアリングで判明】「かんばん納入」と「通常納入」を区別する業務ロジックが出荷フロー内に見つからなかったのは正しかった——そもそも板倉側では区別しておらず、システムレベルの分岐ではないことが新實さんの回答で確定した。「客先からのかんばんを納品書として扱っている。通常の納入と同じ。客先から板倉へ一方通行。その指定日にいるだけのかんばんが発行される」「かんばんがあるのは、浅賀井製作所、ヒサダ、アイシンぐらい。デンソープレステックは納品書」。つまり客先が発行するかんばん自体をそのまま納品書として扱っているだけ(客先→板倉の一方通行)であり、それ以外の得意先(デンソープレステック等)は通常の納品書を使うという運用の違いにすぎない。(出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C3)

かんばんという語自体は複数のspec(itgo40r.md, itjm56r.md/57r.md/58r.md, itjm81r.md, itsj81r.md/82r.md/84r.md等)に登場するが、これらは主に受注入力(内示/確定のかんばん情報取り込み)側の話であり、出荷業務そのものの中でかんばんが果たす役割は本ブリーフのソース調査範囲では確認できなかった。

メール定期自動送信ジョブに見える出荷案内らしきもの

source/as400-admin/mail-auto-settei/は出荷業務専用ではなく全社共通のメール自動送信基盤(設計書: 各業務プログラムが「メール本文Excelファイル」を所定フォルダに書き出すと、別プログラムが定期的にフォルダを監視しMailingList.xlsxから宛先を引いて送信する仕組み)。

実VBAで解明 — 出荷指示書発行/フォルダにあるメール生成マクロの正体
出荷指示書発行/配下の3本のxlsmマクロを解析し、「メール本文」「添付ファイル」フォルダへ何が書き出されるか実測した。いずれもCells(1,1)=プログラム名(MailingList.xlsx検索キー)/Cells(2,1)=件名/Cells(3,1)=本文/Cells(4,1)=添付フルパス/Cells(5,1)=送信PC/Cells(6,1)=送信ユーザーという共通フォーマットのメール本文ワークブックを作り、実際の送信は別プログラム(本ページの調査範囲外)に委ねる、という同一アーキテクチャだった。
  • 品番紙データ*_品番紙データ.xls) — 出荷指示書発行.xlsm(BAT0109)のSub JOB_Hinbansiが、JUDPP1の号口(G)行のうち入り数に対して端数が出る品番だけを抽出して作成。件名固定「品番紙データの送信」。BAT0109(出荷指示書発行)が走るたびに作成される、つまり号口の出荷指示発行イベント駆動——固定の日次スケジュールではない。
  • 伝票№未入力チェックリスト伝票№未入力チェックリスト.xlsx) — 伝票№未入力チェックリストメール送付.xlsmがJUDPQ7(ITND06R書き出し)から当月+前月の「出荷済みだが伝票№未入力」行を抽出。件名固定「伝票№未入力チェックリストメール送付」。ITND06Rはメニューには現れないがBACKUP02経由で日次06:30チェーン(hearing.html A3)の一部と確定済み——本メール自身がdaily-rhythm.html A3の19本連鎖表12番目
  • 型費重複計上チェックリスト型費重複計上チェックリスト.xlsx) — 型費重複計上チェックリストメール送付.xlsmがJUDPS7(ITUR08R書き出し)から型費(金型費用)の重複計上らしき行を抽出。出荷業務というより型費・財務側の関心事だが、同じ出荷指示書発行/フォルダに同居しており、同じメール基盤・同じ受注データ(JUDP派生)を使っている。ITUR08Rも同じくBACKUP02経由で日次06:30チェーン入り——本メール自身がdaily-rhythm.html A3の19本連鎖表3番目
従来「号口指示納期修正リスト」というメールの存在を推測していたが、該当する痕跡は今回の2フォルダ精査では見つからなかった。代わりに上記2種(伝票№未入力・型費重複計上)という、従来推測していなかった具体的な定期チェックメールが確認できた。追記(実業務手順書で解明):「号口指示納期修正リスト」自体は現行システムにも実在する——production.html §3の調査で号口指示納期修正リスト送付.xlsmSJDPP7を読み材料担当へメール送付、フォルダは作業指示書発行2/)が見つかっており、2001年作成の社内手順書「データフロー(号口品)」にも同種の帳票「号口部品作業指示納期修正リスト」(*変更内容は納期の早出しのみ、との注記付き)が描かれている。つまり本節が精査した出荷指示書発行/・出荷準備/の2フォルダには痕跡が無かっただけで、レポート自体はその外(作業指示書発行2/)に現役で存在する、というのが正確な位置づけ。 (出典: 出荷指示書発行.xlsm/伝票№未入力チェックリストメール送付.xlsm/型費重複計上チェックリストメール送付.xlsm VBA実測 各Sub Main; source/work-procedures/作業手順書/データフロー(号口品).doc参照)

これらは出荷案内メール(得意先向け)ではなく、社内向けの業務連絡メールと見られる(メールの宛先がMailingList.xlsx=社内配布リストであることから)。得意先向けの出荷案内(ASN等)に相当する仕組みは本調査では発見できなかった(未解明事項12)。トラック便・納入時間に関する具体的な設定・マスタも本調査範囲では見つからなかった(未解明事項)。

7. 特殊ケース

再発行(JSBS14/24/25/26)

出荷・組付指示書の再発行は目的別に4種類のCLに分かれている:

CL対象プログラム対象データ用途
JSBS14(受注票再発行、本ページ範囲外)JUDP受注票の再発行(受注担当領域)
JSBS24ITKM18RKMDP組付指示書再発行(まとめ指示専用)
JSBS25ITSJ51RJUDP→JUDPP1出荷指示書の再発行
JSBS26ITSS04RJUDP/BJDP組付指示書の再発行(通常受注)

JSBS25 出荷指示書再発行: 受注№を1件入力すると、既存の出荷指示内容(指示品番/品名/納期/指示数)を確認表示してから、ITSJ01R経由でJUDPP1に1件ステージングし、&KENSU>0ならBAT0109Excel印刷)を起動する。JSBS08の全パイプラインを回さず1受注だけをピンポイントで再印刷できる小さな対話プログラム。(出典: itsj51r.md)

JSBS26 組付指示書再発行: 受注№を入力すると、既発行か未発行かをBJDP(組付部品状況)のBJKBWKから判定し、未発行ならBJD101=9/BJKBWK='S'(新規発行として在庫引当からやり直し)、既発行ならBJD101=1/BJKBWK='F'(既存引当のまま再発行)にスタンプし直すだけ。印刷そのものはこのプログラムでは行わず、次回のJSBS08C(オプション1-8)実行時に初めてBAT0108が呼ばれる — つまり「再発行フラグを立てるだけ」で即座には印刷されない設計。まとめ指示(BJD601=31)の受注はJSBS26では拒否されJSBS24(ITKM18R)に誘導される。(出典: itss04r.md「No &KENSU output」節)

既知の潜在バグ — verbatim移植・要注意
ITKM18R(まとめ指示の再発行)には「BJDPの最初の1行だけをチェックして早期終了するため、同一受注内の後続行が'E'(発行済)でも見逃す」バグが確認されており、初回発行/再発行の判定を誤る可能性がある。現状は原典通りに移植し、ログ出力のみ追加する方針(修正はしていない)。 (出典: menuj1-open-questions.md「ITKM18R」節、DEVIATIONS #69)

分納出荷

打切区分(JUKUED)が「0=継続(未打切)」の状態で出荷入力すると、受注は分納継続扱いとなり、同じ受注に対して複数回出荷入力ができる。組付側の分納再引当はJSBS08Cフェーズ5b(ITSS03R)が担当し、BJDPQ4という専用の作業キューテーブルで前回までの分納引当状況を管理する。(出典: itnd50r.md #UPDAT; jsbs08-seam-and-stubs.md §A.7)

直送

推測・未解明 直送(得意先から板倉を経由せず直接第三者へ出荷する形態)に相当する明示的なフラグ・分岐は今回読んだソース内には見当たらなかった(未解明事項8)。

【ヒアリングで判明・部分的】明示的なフラグ・分岐が見つからなかったのは正しいと確定した——新實さんの回答: 「直送は少ないがある。いずれも客先指定伝票と記憶している(営業課に確認要)。特に通常納品と区別することはしていない(納める先が違うだけ)」。つまり直送はまれだが実在し、システム上は通常出荷と同一のフロー(客先指定伝票)で処理され、単に届け先が違うだけで特別な分岐・フラグは設けられていない。ただし新實さん自身「記憶している」という留保付きの回答であり、確定には営業課への追加確認が必要と明言された(100%確定ではない)。(出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C9)

出荷訂正(間違えた場合の是正)

SSBS01(ITND50R)の「修正」「削除」「中止補償」の3モードがそのまま訂正手段になっている(4節参照)。ただし以下の制約に注意:

8. 実データスナップショット

ここまでの記述は仕様書に基づく。ここでは実際の7年分のAS/400実データ(PostgreSQL、587,000行)にSELECTクエリを実行し、出荷業務が実運用でどう現れているかを確認する。JUDP全体は45,545行。実運用データの主要な時期は2018年〜2026年(記載時点で7月)——2001〜2017年分は年数件〜十数件と極めて少なく、システム移行前後のテスト/サンプルデータと見られる。

8.1 年別出荷実績(JUNOHI基準)

出荷件数出荷数量計
20183,55090,842
20194,567223,234
20204,711178,064
20214,831200,143
20224,576210,383
20233,912177,128
20244,412200,743
20254,014177,336
2026(7月時点)1,96456,394

JUDP全45,545行のうち36,537行(80.2%)が出荷済み(JUNOHI>0)で、残り9,008行は未出荷・進行中の受注明細。年間出荷件数は概ね4,000〜4,800件/年で安定しており、2020〜2021年がピーク。

8.2 打切区分(JUKUED)の実分布

JUKUED用語集の意味件数割合
9出荷確定・打切36,53680.2%
0継続(分納可)8,90419.5%
8生産完了(未出荷)1050.2%

8.3 中止区分(JUKUST)のNULL率

データ読み方のコツ: 板倉のAS/400フラグ列は「空(NULL)」が正常値
JUKUST(中止区分、'D'=キャンセル済み)を実データで集計すると、82.4%(37,541/45,545行)がSQL NULL(空欄)で、'D'が立っているのは17.6%(8,004行)のみだった。フラグ列にNULLが入っていると「データが壊れている」「移行漏れ」と誤解しがちだが、この列の場合は「キャンセルされていない=正常」を意味する空欄が母集団の8割を占めるのが実態であり、CHAR型フラグ列は「立っている値だけが意味を持ち、大多数は空」という前提でシステムを読む必要がある——本リポジトリの他調査(JSBS08D等)でも同種のNULLヘビーな列が繰り返し見つかっている。

8.4 分納の実態

受注データ1行=1受注明細という構造上、同一受注が複数回に分けて出荷される「分納」がJUDP上でどう現れるかを、親受注№(JUNOJO)でグルーピングして確認した。JUNOJOが自分自身の受注№(JUNOJU)と異なる——つまり明示的に別の親を持つ「分割された子行」——は45,545行中175行(0.4%)のみで、複数行を持つ親グループは151件(129件が2行、17件が3行、1件が5行)にとどまる。JUKUED=0(継続)が19.5%を占める一方で、実際に複数のJUDP行に分かれる分納は稀——大半の「継続」状態の受注は、同一行のまま出荷入力(SSBS01)を繰り返すことで分納を処理しており、行を分割する分納は例外的なケースにとどまると見られる。

参考: 未解明事項§9(まとめ指示の実運用影響範囲)に関連して、KMDP(まとめ指示データ)の実件数を確認したところ378行存在した。まとめ指示は実運用で実際に使われている実態があり、移行版でこの経路が未実装(W6スコープ)であることの潜在的な影響範囲は少なくとも378件規模ということになる(0件ではない)。

8.5 リードタイム(受注日→出荷日)

JUJUHI(受注日)からJUNOHI(出荷日)までの日数を、明らかな日付異常値(365日超、61件・0.17%、AS/400側の不正な日付起因と見られる)を除いた36,343件で集計:

指標
中央値(p50)17日
90パーセンタイル(p90)47日
平均27.4日

中央値17日は号口の標準的な補充サイクルとしては妥当な範囲。ただしJUJUHIは号口の自動採番受注(生産ページ§3.1で述べた99xxxxxx受注№)も含む可能性があり、厳密な「顧客が発注した日〜出荷日」ではなく「JUDP行作成〜出荷」に近い可能性がある点は留意(要現場確認)。

8.6 出荷先の実データ(JUCDTK上位)

得意先コード得意先名出荷件数
20株式会社デンソープレステック12,394
5000トヨタ紡織株式会社11,234
30株式会社浅賀井製作所4,340
6000アイシンシロキ株式会社2,804
16株式会社アイシン 試作工場1,399

件数トップは冒頭リード文で名前が挙がる3社(トヨタ紡織・アイシン・デンソー)のうちデンソー系(デンソープレステック)で、僅差でトヨタ紡織が続く。3位以下は浅賀井製作所・ヒサダ・佐藤工業・山崎工業・鈴木鈑金工業所・エクセディ・コデラダイナックスといった板金加工の協力会社群が並び、実際の出荷先はリード文が示唆する大手3社だけでなく裾野の広いサプライチェーンであることが実データから確認できる。

集計に使ったSQL
-- 8.1 年別出荷実績
SELECT (junohi/10000)::int AS year, count(*), sum(junosu) FROM judp WHERE junohi>0 GROUP BY 1 ORDER BY 1;
SELECT count(*), count(*) FILTER (WHERE junohi>0) FROM judp;

-- 8.2 打切区分
SELECT jukued, count(*) FROM judp GROUP BY jukued ORDER BY count(*) DESC;

-- 8.3 中止区分NULL率
SELECT jukust, count(*) FROM judp GROUP BY jukust ORDER BY count(*) DESC;

-- 8.4 分納・まとめ指示
SELECT count(*) FILTER (WHERE junojo = junoju), count(*) FILTER (WHERE junojo <> junoju AND junojo>0)
FROM judp;
SELECT count(*) FROM kmdp;

-- 8.5 リードタイム
WITH d AS (
  SELECT to_date(jujuhi::text,'YYYYMMDD') od, to_date(junohi::text,'YYYYMMDD') sd
  FROM judp WHERE jujuhi>20000101 AND junohi>20000101 AND junohi>=jujuhi
)
SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY sd-od) FILTER (WHERE sd-od<=365),
       percentile_cont(0.9) WITHIN GROUP (ORDER BY sd-od) FILTER (WHERE sd-od<=365),
       avg(sd-od) FILTER (WHERE sd-od<=365)
FROM d;

-- 8.6 出荷先
SELECT jucdtk, count(*), sum(junosu) FROM judp WHERE junohi>0 GROUP BY jucdtk ORDER BY count(*) DESC LIMIT 10;
SELECT tkcdtk, trim(tknmkj) FROM tkmp WHERE tkcdtk IN (20,5000,30,6000,16);

9. 関連マスタ・帳票一覧

主要テーブル

すべて analysis/out/schema.sql に定義済み。

テーブル役割
judp受注データ。出荷情報(納入日junohi/納入数junosu/打切区分jukued等)も同一レコードに同居
jhmp受注品番マスター。完成品の現在庫数(jhzasu)、S/A在庫(jhd091)、品番紙設定(jhd033)、最終出荷日(jhedsh)等
bhmp部品品番マスター。部品の現在庫数(bhzasu)
ksmp構成マスター(BOM)。組付製品→部品の展開に使用
zkdp試作品在庫データ。在庫引当エンジン(PBZKUPR/PBZKCKR)が操作
bjdp組付部品状況。組付指示書再発行のスタンプ対象
judpp1出荷指示書印刷用ステージングテーブル(BAT0109が読む)
bjdpp2組付指示書印刷用ステージングテーブル(BAT0108が読む)
bjdpq2/q3/q4まとめ指示・引継ぎ・分納再引当それぞれの作業キュー(処理回数管理)
kmdp/kmdpp1まとめ指示データおよびその印刷ステージング(現状W6未実装)

帳票一覧

帳票発行プログラム内容
出荷指示書BAT0109出荷指示書発行.xlsm Excel(JSBS08/09/25経由)出荷対象受注の指示品番・品名・納期・指示数・得意先名等(JUDPP1の"A"以外の行)
現品票BAT0109出荷指示書発行.xlsm Excel(同上、Sub JOB_Genpinhyou)倉庫棚の入出庫タグ(得意先/入庫数/出庫数/棚番、JUDPP1の"A"行のみ)
組付指示書BAT0108 Excel(JSBS08/26経由)組付対象の指示内容
まとめ指示書(組付)BAT0108C Excelまとめ指示分の組付指示
組付部品引当在庫の引継ぎ指示書BAT0108A(常時)/BAT0108B(分納分) Excel引当在庫の引継ぎ状況
まとめ再引当後帳票BAT1001 Excelまとめ指示の再引当結果
出荷入力プルーフリストITND50R(QPRINT直接) AS/400出荷入力の証跡(追加/修正/中止補償/削除)
構成チェックリストITKS06R(QPRINT直接) AS/400構成の累積チェック
品番紙(ロット№付・号口)BAT0811品番紙印刷(ロット№付).xlsm Excel(MENUW1オプション11・ITTS15R経由、SJDPP3)生産完了時に印刷される現品ラベル(ロット№焼き込み)
品番紙(個別・手動)品番紙個別印刷.xlsm Excel(手動ツール、AS/400非連携)手入力品番の追加印刷・再発行
納品書出荷準備Excelジョブ群(取引先別手順書、マクロ無し) Excel得意先向け納品書(作成は手作業。【ヒアリングで判明】AS/400からは発行されず客先指定伝票または当社手書き。製品完成(在庫含む)+納期が一定期間内になると出荷指示書がAS/400より発行され、それを元に納品書へ手書きで転記、出荷指示書は営業課が回収して出荷入力する、という社内トリガーの役割。出典: 新實さん、2026-07-23ヒアリングシート回答C、hearing.html C9

注: BAT系はすべて \\SERVER2\KANRI\BATCH\<name>.XLSM を呼ぶ薄いCLラッパー。BAT0109とBAT0811の2本はExcelマクロ本体(VBA)が本リポジトリ出荷指示書発行/フォルダに実在することを確認済み(実VBAで解明、上記2節参照)。BAT0108/BAT0108A/BAT0108B/BAT0108C/BAT1001の5本は今回の調査範囲では見つからず、従来通りリポジトリ外(ネットワーク共有上のみ)と扱う。移行版アプリでは「印刷シーム(PRINT-SEAM)」として、ステージングテーブルへのINSERTとログ出力のみを行い、実際のExcel起動は延期している。

10. 用語集

出荷指示書
どの受注をどれだけ・いつまでに出荷するかを現場に示す帳票(単品出荷品向け)
組付指示書
部品を組み立てて出荷する製品向けの指示書
まとめ指示
複数の号口受注をひとまとめにして1回の組付指示にする仕組み(指示形態=31)
号口
量産品の受注区分(指示形態51〜69)。試作品と対比される
単品出荷品
組み立て不要でそのまま出荷する製品(指示形態11〜19)
打切区分(JUKUED)
0=継続(分納可)、8=生産完了、9=出荷確定・打切
中止区分(JUKUST)
'D'=受注キャンセル済み
出荷処理区分(JUKBWN)
在庫展開(SSBS02)が処理済みかどうかのフラグ('E'=処理済)
受注処理区分(JUKBWJ)
出荷指示発行フローの初回通過フラグ
引当(在庫引当)
出荷予定分の在庫数量を確保すること。ZKDPで管理、PBZKUPR/PBZKCKRが実処理
展開(在庫展開)
組付製品を構成部品まで分解(BOM展開)し、完成品/部品それぞれの在庫を減算する処理
品番紙
現品に貼る品番ラベル(かんばんラベルに相当)。印刷はPC(Excel)側
客先伝票№
得意先が指定する伝票番号。操作者が手入力、システム自動採番なし
分納
1受注を複数回に分けて出荷すること
直送
得意先を介さず第三者へ直接出荷する形態。まれだが実在し、通常出荷と同一のフロー(客先指定伝票)で処理される、届け先が違うだけの扱い。【ヒアリングで判明・部分的】新實さん本人が「記憶している」との留保付きで回答——最終確定には営業課への追加確認が必要(hearing.html C9
印刷シーム(PRINT-SEAM)
移行版で「Excel印刷を実行する代わりにログとステージングだけ行う」設計パターン
ステージングテーブル
印刷対象データを一時的に格納し、Excelマクロが読み取るための中間テーブル(JUDPP1, BJDPP2等)
ALCOBJ/DLCOBJ
AS/400のファイル排他ロック取得/解放。出荷入力・出荷指示発行等が使用

11. 他業務との接続点

未解明事項 — 現場担当者への質問リスト
  1. JUKUED=9の正確な業務的意味(打切区分=9が「出荷確定」を意味するのか、他の値との使い分けがあるのか)。 【実資料で判明】 2009〜2010年の実際の受注内容変更ログ(ITJM38R)を確認したところ、打切区分=9のレコードは全640件が例外なく完成度=100%と対応しており(打切区分0または8のレコードには完成度100%はほとんど無い)、「JUKUED=9=出荷確定・完了」という解釈が実データから強く裏付けられた。(出典: source/dev-archive/20101020_中止・数減処理に伴う在庫戻し/受注内容変更ログ(ITJM38R).xls「ログ」シート参照)(出典: itnd01r.md Open Questions #1)
  2. JHD062(指示形態)51〜69の範囲の業務定義 — 在庫展開の対象/対象外を分ける唯一の基準だが、範囲の意味そのものが未文書化。(同spec #2)
  3. シャフト除外(品番先頭5桁=61155)ルールの現況 — 2008年のコメントに反して現行コードに対応するガードが見当たらない。(同spec #3)
  4. JHMP+BHMP両方の在庫減算漏れ(2020年変更コメントと実装の不一致、S/A新規登録品でBHZASUが減算されないケースがある)。(同spec #4)
  5. 正式な得意先向け納品書がどのツール・タイミングで発行されるか実VBAで一部解明: 出荷準備/配下の取引先別「納品書の処理手順(〇〇).xls」4本すべてにVBA/XLMマクロが無いことをoletoolsで確認済み。つまり納品書作成に自動化ツールは関与しておらず、完全な手作業(出典: 出荷準備/配下olevba一括実行) 【ヒアリングで判明】(解決済み)AS/400は納品書を発行せず、常に客先指定伝票または当社手書きで作成される。製品完成+納期一定期間内で出荷指示書がAS/400より発行され、それを元に手書きで納品書へ転記、出荷指示書は営業課が回収して出荷入力する——出荷指示書は納品書そのものではなく社内トリガー。詳細は4節参照。(出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C9)
  6. 【ヒアリングで判明】かんばん納入 vs 通常納入の業務ロジック上の区別が出荷フロー内に見当たらない(受注側の「かんばん情報取り込み」との切り分けが必要)——見つからなかったのは正しく、そもそも板倉側では区別していない。客先発行のかんばん自体を納品書として扱う(客先→板倉一方通行)だけで、対象得意先は浅賀井製作所・ヒサダ・アイシン、デンソープレステックは通常の納品書。詳細は6節参照。(出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C3)
  7. 得意先ごとの納入先マスタの有無(TKMP以外に納入先を持つ場所が見つからなかった)。
  8. 【ヒアリングで判明・部分的】直送の有無・仕組み——「直送は少ないがある。いずれも客先指定伝票と記憶している(営業課に確認要)。特に通常納品と区別することはしていない(納める先が違うだけ)」。まれだが実在し、通常出荷と同一フロー(客先指定伝票)、届け先が違うだけで特別な分岐は無い。ただし新實さん自身「記憶している」との留保付きで、営業課への追加確認が必要(未確定)。詳細は7節参照。(出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C9)
  9. SIMEBI(締日)引き継ぎバグ: 出荷入力(ITND50R)で、TK1Pレコードの無い得意先の受注を処理すると、直前に処理した別の受注の締日が誤って引き継がれる可能性がある。忠実移植すべきバグか、修正すべきかは要判断。(出典: itnd50r.md Open Questions #1)
    完全クローズ: 2026-07-29のヒアリングで新實さんがバグの実在を明示的に確認した(「ご指摘のバグはその通りです」)。TKMPとTK1Pが毎月レコード一致するよう運用され、JUDPの得意先コードはTKMPを参照して入力されるため実運用では起こりにくいが、「発生の可能性はゼロではないので、修正できれば修正したほうが良い」との回答も得た。当方の対応状況は既に修正済み——移植版pilot/app/src/menus1/shipmentEntry.ts:309-320でTK1P未ヒット時はガード自体を掛けない実装(pilot/DEVIATIONS.md #36)、回帰テストpilot/app/test/menus1/itnd50.test.ts:485-506で固定済み。TK1PをCHAINする全9本の機械的スイープでも同種バグはITND50R以外に無いことを確認した。ガードの設計意図(請求済み期間への遡及入力防止)も含め詳細は4節参照。 (出典: 新實さん、2026-07-29ヒアリングシート回答、hearing.html C9docs/feedback/hearing/2026-07-29-niimi-hearing-sheet.md参照)
  10. まとめ指示(JSBS08フェーズ1・2、W6スコープ)が移行版で未実装であることの実運用上の影響範囲(まとめ指示を使う受注がどの程度あるか、現状の運用に支障が出ていないか)。
  11. SSBS02(在庫展開)の実行頻度・タイミング(都度手動か、日次バッチかはソースからは不明)。ヒアリングで判明: 「SSBS01を実行した後に、SSBS01実行者がSSBS02を実行することになっています。基本的に1人が1日1回実行します。」自動日次バッチではなく、SSBS01実行者本人が続けて手動実行する担当者ベースの運用(実務上は1日1回)。(出典: 新實さん、2026-07-22回答、docs/feedback/analysis/2026-07-22-niimi-remaining-A-questions-reply.md参照)
  12. メール定期自動送信の「号口指示納期修正リスト」「品番紙データ」メールの正確な送信先・トリガー条件実VBAで解明: 「品番紙データ」メールはBAT0109(出荷指示書発行.xlsm Sub JOB_Hinbansi)が号口出荷指示発行のたびに、入り数に対して端数のある品番だけを抽出して生成する(3・6節参照)——固定スケジュールではなくイベント駆動。「号口指示納期修正リスト」は今回の2フォルダ精査では痕跡が見つからず、代わりに「伝票№未入力チェックリスト」「型費重複計上チェックリスト」という従来未把握だった2種の定期チェックメールを新たに確認した(3・4・6節参照)。(出典: 出荷指示書発行.xlsm/伝票№未入力チェックリストメール送付.xlsm/型費重複計上チェックリストメール送付.xlsm VBA実測)
  13. 現品票.xlsx の実体が本リポジトリの出荷指示書発行/フォルダに存在しない — 出荷指示書発行.xlsmGP_FILE = "現品票.xlsx"として参照するが、同フォルダには出荷指示書.xlsx(様式)しか無い。サーバー上の別フォルダにあるのか、本リポジトリのスナップショット取得漏れかは未確認。現品票の詳細な様式・レイアウトはVBAのフィールド一覧(得意先/区分/指示品番/指示品名/入出庫日/入庫数/出庫数/棚番)からの推定にとどまる。
  14. JUDPQ7を書くITND06R(伝票№未入力チェック)、JUDPS7を書くITUR08R(型費重複チェック)はいずれもメニューツリーに現れず、実行頻度・時刻が不明。日次/夜間のジョブスケジューラ登録による無人バッチと推測されるが、現場のジョブスケジュール一覧が無いと確定できない。解決: analysis/out/edges.csvを見ると両方ともBACKUP02BACKUP02CPも同一)から呼ばれており、BACKUP02自体はhearing.html A3で確定済みの日次06:30チェーン(LSTPRT01SCD02SCDCK02BACKUP02)の末端。その出力(JUDPQ7/JUDPS7)を読むExcel側メール自体がdaily-rhythm.html A3の19本連鎖表の12番目「伝票№未入力チェックリストメール送付」・3番目「型費重複計上チェックリストメール送付」そのもの——実行頻度・時刻とも既に確定済みだった(毎朝06:32〜07:22頃)。本節の調査時点ではまだedges.csvとhearing.html/daily-rhythm.htmlの該当箇所を突き合わせていなかっただけ。
  15. 型費重複計上チェックリストメール送付.xlsmが「出荷指示書発行」フォルダに同居している理由 — 内容は型費(金型費用)の重複計上チェックで出荷業務そのものではない。単なる共有フォルダの便宜的配置か、出荷担当がこのチェックも実務上担っているのかは未確認。
  16. 最終出荷日検索(OLD_DATA).xlsm(ALL_JUDP.xlsxという全件抽出への手動検索ツール、2024/7/23作成)が日常的に使われているのか、過去データ調査用の一時ツールなのか未確認。ファイル名の「OLD_DATA」が示す通り、参照データが静的スナップショットである点は判明済み。
板倉製作所 業務フロー資料 — 出典: AS/400 ソース・翻訳仕様・Excel/VBA 資産(itakura-sys リポジトリ) ← 6. 試作・工機・材料・金型 / 8. 外製・仕入 →