2019年の夏。ロサンゼルス郊外の冷蔵3PLにいたとき、FDAのリコール通知が届いた。顧客の製品は3つのロットに混ざり、倉庫は該当パレットを探し出すのに丸2日かかった。その一件で顧客は約$400,000を失い、倉庫はそのアカウントを失った。倉庫業で20年やってきて、断言する。食品倉庫では、ロットと賞味期限の管理は「あったら便利」ではない。商売を続けられるか、潰れるかの分かれ目だ。食品の顧客を取る前に、この記事の全プロセスを確認してくれ。できないなら、契約書にサインするな。

すべては入荷から始まる。そして多くの倉庫はそこでつまずく。満杯のパレットがドックに届き、ドライバーの納品書に「exp 03/2027」と書いてあるからといって、そのまま入力するか?だめだ。食品サプライヤーの混合パレットは当たり前だ。1つのパレットに3つの製造ロットが混ざっているのは日常茶飯事だし、納品書には積載全体で1つの賞味期限しか書いていないことも多い。正しいやり方:入荷時にパレットを崩し、ケースごとにスキャンか目視確認をして、ロット番号と賞味期限をパレット単位ではなくSKU単位・ケース単位で記録する。日付はYYYY-MM-DDの完全形で入力する。サプライヤーが日なしの「03/2027」と書いてきた場合、うちのSOPではその月の最終日をデフォルトにする。システムが期限切れを早めに警告しないようにするためだ。受け入れ担当の独断は認めない。

ユリウス日で印字されて届く製品もある。「25073」なら2025年の73日目だ。受け入れ担当がユリウス日を読めなければ、賞味期限は全部間違って入力される。私のルールは譲れない。入荷SOPにはユリウス日変換表をドックの壁に貼っておき、WMSの賞味期限欄はYYYY-MM-DDだけを受け付ける。ハンディターミナルの入力はその場で形式を検証し、合わないものは弾く。賞味期限の1桁入力ミスで、後でパレット丸ごと崩し直しだ。そのコストも計算済みだ。冷蔵倉庫で1パレットを崩すのに、人件費と冷凍エネルギーを合わせて少なくとも$200かかる。

冷蔵通路でハンディターミナルを使ってパレットのロットラベルをスキャンする作業員

賞味期限の1桁間違いで、パレット丸ごと崩し直し

データを入力するのは始まりにすぎない。大事なのは、そのデータをWMSがどう使うかだ。FEFO機能付きのWMSを持っていても設定したことがない倉庫は山ほどある。だからピッキングはいまだに「近いところから」だ。FEFOを本物にするには3つの設定が必要で、どれも必須だ。まず割り当て戦略。出荷ウェーブで割り当てを「賞味期限の昇順」に設定し、システムが常にそのSKUで一番期限の近い在庫ロットから引くようにして、このルールを近接ピッキングより上位にする。次に賞味期限の閾値。SKUごとに「販売可能日数」フィールドを持つ。例えばヨーグルトなら14日、冷凍肉なら90日。閾値を切った在庫は自動でロックし、割り当て対象から外す。3つ目は期限切れ間近の凍結ルール。残り30日(生鮮は7日)に入った在庫は自動で凍結ロケーションに移動する。ピッキングタスクで凍結ロットをスキャンしたら、スキャナがエラーを出す。解除できるのはスーパーバイザーだけだ。この3つを設定すれば、FEFOは本当に回る。設定しなければ、壁の標語だ。

もう1つの落とし穴はロット分割だ。ピッキングでケースを開けたら、WMSでロット分割のトランザクションが必要になる。開けた分量が元のロットと賞味期限を引き継ぐためだ。手間を省いてこれを飛ばす倉庫を何度も見てきた。そうなると帳簿上のロットと現場のロットが合わなくなる。鉄則は1つ。現物の製品が動いたら、システムも一緒に動く。ロットのアイデンティティは常に製品に付いて回る。

賞味期限ダッシュボード:90/60/30日、アクションには必ず担当者名を

残り30日で気づくのは、手遅れだ。うちの賞味期限ダッシュボードは3段階で、毎朝自動でプッシュされる。90日段階は黄色。アクションは「顧客に販促や在庫移管を促す」、担当はカスタマーサービス。60日段階はオレンジ。アクションは「顧客との週次消化会議」、担当はオペレーションのスーパーバイザー。30日段階は赤。アクションは「出荷凍結、出荷のみモード、毎日サイクルカウント」、担当は倉庫マネージャー本人だ。各段階のアクションと担当はSOPと事務所の壁に書き出す。誰かの頭の中には置かない。

ダッシュボードの計算は一貫性が命だ。「残り日数=賞味期限-今日」を使え。「入荷からの日数」ではない。入荷から180日でアラートを回していた倉庫を見たことがある。ところがサプライヤーが送ってきた製品の残り賞味期限は100日しかなかった。アラートは飾りだった。そしてレポートは必ずロット単位で出せ。SKU合計は出さない。「ヨーグルトの在庫が500ケース」では何もできない。「ロットL250310、500ケース、残り32日、A-12-03にある」なら動ける。

リコール訓練:2時間でロットを見つけられなければ、あなたがニュースの見出しだ

FDAは、対象ロットのすべて、その在庫位置、出荷履歴を2時間以内に特定することを求めている。2時間だ。2日ではない。ほとんどの倉庫はこの訓練をしたことがない。だから本物のリコールは大混乱になる。うちは四半期ごとに固定の台本で訓練する。ロット番号をランダムに1つ引き、計測開始。WMSでそのロットの現状在庫を引く。すべてのロケーションと数量だ。出荷履歴を引く。過去60日の顧客、数量、出荷日をすべてだ。輸送中と納品済みのステータスを引く。2時間で1枚のシートを作る。建物の中にいくらあるか、輸送中にいくらあるか、納品済みがいくらあるか、誰の手に渡っているか。終わったら振り返りだ。1回でも時間オーバーしたら、プロセスのどこかが壊れている。

2019年のロサンゼルスのリコールは、なぜ2日かかったのか。振り返りで3つの問題が見つかった。入荷がパレット単位でロットを記録していたので、パレットを崩した瞬間にロットのアイデンティティが失われていたこと。出荷の一部が紙伝票で行われ、WMSに入っていなかったこと。賞味期限欄の3分の1が空欄だったこと。3つとも基礎だった。どんな高級な技術も救えなかった。食品倉庫のロット管理は、システムがどれだけ高いかではない。プロセスがどれだけ規律正しいかだ。

サイクルカウントが合わない:上位3つの原因

もう1つ。サイクルカウントだ。食品倉庫でロットが合わなくなるとき、原因はいつもこの3つだ。1つ目。混合パレットが入荷時に崩されず、帳簿は1ロット、現場は3ロットになっている。2つ目。ケース開けがシステムのトランザクションを飛ばし、帳簿の開封分量と現場のバラケースが合わない。3つ目。賞味期限の入力ミスで、システムがA-12-03にあると指すロットが、実際にそこにあるロットと違う。FEFOがピッカーを間違った製品に送る。対策は地味だ。入荷にロット確認のステップを追加し、2人目が10パーセントを抜き打ちチェックする。ケース開けは毎回スキャナのトランザクションを必須にし、手書きログはなし。月1回、1つのSKUでロットのみのカウントを実施する。ロットと日付だけ、数量なし、15分以内で終わる。

明日から使える話。WMSに入って3つの数字を出してみてくれ。賞味期限欄が空欄のSKUがいくつあるか。割り当て優先順位でFEFOが何番目か。賞味期限の閾値アラートがそもそもあるのか。この3つの数字で、ロット管理が本物か紙の上だけかが分かる。賞味期限欄の空欄が5パーセントを超えていたら、新しい食品の顧客は取るな。まず古いゴミを片づけろ。

英語版からの翻訳。内容に相違がある場合は英語版を優先します。