【新着】SAPラボのYouTubeチャンネル開設しました SAPラボチャンネルはコチラ

【SAP ABAP】基本構文:文字列操作(CONCATENATE、REPLACE、SPLIT、SHIFT、STRLEN、FIND、CONDENSE)

ABAP文字列操作

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退しSAPの後進育成と啓蒙活動に従事中!
若者に負けぬようX(旧Twitter)も奮闘中。

この記事を読むメリット

  • ABAPでの文字列操作(CONCATENATE命令、REPLACE命令、SPLIT命令、SHIFT命令、STRLEN命令、FIND命令、CONDENSE命令)文字列操作を行えるようになります。
博士

今回はABAPの文字列操作について説明するぞい!

文字列操作は非常に重要なABAPスキルです。
ABAPには、文字列を効果的に操作するための多くの便利な機能があります。
この記事では、ABAPでよく使用されるいくつかの基本的な文字列操作方法について紹介していきます!

SAPフリーランスバンク SAPフリーランスバンク

新着のSAPフリーランス案件

【MM】

【SD】

【SAP保守運用支援(SD, MM)】静岡県浜松市/リモート併用/保守運用支援

月額単価
1,400,000円 / 月
稼働場所
静岡県
業務領域
運用・保守
稼働率:
100%
作業内容:
SAPの保守運用支援プロジェクトにご参画いただきます。 高度なIT戦略立案フェーズではなく、現場の課題解決を着実に実行するメンバーとしての役割が期待されます。 社員の方のリードのもと、主体的に業務を遂行(自走)できる方、または各モジュール領域のコンサルタントとして一人称で運用・維持管理ができる方を募集しています。 ユーザーからの問い合わせ対応、見積作成、テスト推進など、具体的な保守運用支援業務を担当していただきます。 主な業務内容:
  • ユーザーからの問い合わせ対応、トラブルシューティング、要望ヒアリング
  • 見積作成、WBS策定、スケジュール管理
  • 受け入れテストの計画、実施、検証

【FI】

【基幹システム刷新(S/4HANA FI/BTP)】東京・二子玉川(リモート併用)/移行推進サブリード

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, その他
稼働率:
100%
作業内容:
大手企業様の基幹システムをSAP S/4HANAへ刷新する大規模プロジェクトです。 このプロジェクトにおいて、SAP FIモジュールとBTPアドオンを中心とした移行推進チームのサブリードとしてご活躍いただきます。 自ら主体的に動き、移行方針書や移行計画書のドラフト作成からクライアントとのセッションを主導し、合意形成までの一連のプロセスを担当していただきます。 主な業務内容:
  • 移行推進チームのサブリード業務
  • 移行方針書、移行計画書など、各種ドキュメントの作成とクライアントへの提案
  • クライアントおよび関連チームとの調整、合意形成の推進
  • FIモジュールおよびBTPアドオンに関する課題解決のサポート

【CO】

【FI】

【販社受発注システム再構築(CO/FI)】神奈川・川崎(リモート併用)/構想策定・効果算定

月額単価
1,700,000円 / 月
稼働場所
神奈川県
業務領域
要件定義
稼働率:
100%
作業内容:
販社(販売会社)における受発注システムの再構築構想を策定する、極めて重要な最上流フェーズの案件です。 この構想フェーズでは、最適なSAPソリューション選定に向けたインプット情報を作成することが主要なミッションとなります。 具体的には、概算費用と効果を試算するためのモデル作成、そして会計領域を中心とした施策検討を実施します。 特に顧客別・商品別収益分析(CO)の施策やToBe像を確立するため、CO/FIの知見が不可欠となるポジションを担当していただきます。 主な業務内容:
  • 施策別効果分析モデルの作成(業務削減、人件費、運転資本などの定量化)
  • 業務/IT統合の観点を取り入れた改革シナリオの立案
  • 経営層向けの説明資料(ROI/Payback試算を含む構想報告書)の作成支援
  • 現行業務工数ヒアリング、帳票/IF数集計
  • 会計領域の施策検討(顧客別、商品別収益分析(CO)のToBe設計およびデータ連携方式検討)

【MM】

【ECC→S4HANA移行(MM)】東京都/リモート併用/グローバルテンプレート構築・展開

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, テスト
稼働率:
100%
作業内容:
ECCからS/4HANAへの移行に伴う、グローバルテンプレートの構築・展開プロジェクトです。 パイロット拠点のテストフェーズ完了に伴い、東南アジア、インド、UAEへの次拠点展開と、中国、ヨーロッパ、アフリカ、北米への次々拠点展開を並行して進めていきます。 本案件では、MM領域のコンサルタントとして、テンプレート導入における要件定義や設計、テスト推進などを担当していただきます。 主な業務内容:
  • コンフィグ要件定義、および設定担当者への説明・レビュー
  • アドオン要件定義(特に帳票関連)、および設計者への説明・レビュー
  • 結合テスト、ウォークスルーテストシナリオの検討
  • 発生する個別課題の検討および解決推進
  • 顧客(情報システム部門)との直接の調整・フェーシング

【FI】

【ECC→S4HANA移行(FI/会計帳票)】東京都/リモート併用/アドオン帳票リバースエンジニアリング

月額単価
1,150,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
稼働率:
100%
作業内容:
ECC6.0からS/4HANAへの移行プロジェクトです。 設計書が存在しない現行のアドオン帳票(約46本)について、リバースエンジニアリングを実施し、S/4HANAでの実装に向けた基本設計書の新規作成を行います。 本案件では、会計帳票チームのサブリードとして、経理ユーザーとの要件ヒアリング、基本設計、開発チーム(別チーム)への説明、成果物レビュー、チームの進捗・課題管理などを担当していただきます。 主な業務内容:
  • 現行アドオン帳票のリバースエンジニアリングによる基本設計書作成
  • 顧客(経理ユーザー)への要件ヒアリング、仕様調整
  • 開発チームへの設計詳細説明、および開発成果物のレビュー
  • 帳票チームのサブリード業務(各帳票の進捗状況把握、課題管理)
  • タスク遂行に関するスケジュール調整、要員アサインの調整
  • 顧客IT部門担当との進め方や品質管理に関するコミュニケーション

【MM】

【SD】

【貴金属リサイクル業 SAP保守(MM/SD/ABAP)】東京都/リモート併用/保守・ユーザー対応

月額単価
1,100,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
稼働率:
100%
作業内容:
貴金属リサイクル業のクライアントにおけるSAP保守プロジェクトです。 ロジモジュール(MM, SD)の保守をご担当いただきます。 アドオンの作りこみが多い環境であり、ドキュメント類の整備が不十分なためABAPスキルが必須となります。 主に、ユーザーからの問い合わせ対応や調査、プログラム改修などを担当していただきます。 主な業務内容:
  • ロジモジュール(MM, SD)の保守業務
  • ユーザーからの問い合わせ対応・調査
  • アドオンプログラムの改修・開発

【MM】

【SD】

【電気通信 子会社統合(SD/MM移行)】東京(リモート併用)/データ移行・開発

月額単価
1,100,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori)
稼働率:
100%
作業内容:
電気通信事業における子会社統合に伴い、SAPシステム(ロジスティクス領域)の移行プロジェクトが進行中です。 本ポジションでは、資材マスタのデータ移行を軸に、移行リハーサル、本番稼働フォロー、既存プログラムの改修など、移行・開発業務全般をご担当いただきます。 ロジ領域の組織カスタマイズ経験とABAPスキルの両方を活かせる、技術的にチャレンジングな役割です。 主な業務内容:
  • 資材マスタデータ移行、およびデータマッピング
  • 移行リハーサル、走行試験の実施支援
  • 本番稼働のフォローアップ
  • 既存プログラムの改修、およびパフォーマンスチューニング

【MM】

【PP】

【SD】

【SAP S/4HANA 保守・運用(SD/MM/PP/ABAP)】東京都/リモート併用/インシデント対応・アドオン改修

月額単価
850,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
稼働率:
100%
作業内容:
SAP S/4HANAの保守・運用プロジェクトにご参画いただきます。 主に販売管理(SD)、購買管理(MM)、在庫管理、生産管理(PP)領域におけるインシデント対応やアドオンプログラムの対応を担当していただきます。 主な業務内容:
  • SAPに関する問い合わせ(インシデント)に対する調査・回答。
  • アドオンプログラム(ABAP)の調査・改修。

【CO】

【MM】

【SD】

【その他】

【半導体S/4HANA新規導入(PS/CO/SD/MM)】東京(オンサイト)/要件定義

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
要件定義
稼働率:
100%
作業内容:
半導体製造業における、SAP S/4HANAの新規導入プロジェクトです。 現在、別パッケージで対応している「個別受注生産」プロセスを、SAP S/4HANA (PS/CO/SD/MM) に置き換えることを目的としています。 本募集では、プロジェクトの根幹をなす要件定義フェーズにおいて、各モジュールの専門家として新プロセスの設計を中心メンバーとして推進していただくことを期待しています。 主な業務内容:
  • 【PS担当】
    • WBS(作業分解構造)やネットワークの設計・設定
    • 販売受注(SD)とPSの統合、および購買(MM)や製造(PP)との連携設計
    • 成果物の納品・請求プロセスの設計
  • 【CO担当】
    • プロジェクト別の原価収集設定
    • 個別原価計算、総合原価計算の設計
    • 収益性分析(CO-PA)や原価センタ配賦の設計
  • 【SD/MM担当】
    • PSモジュールとの連携を前提とした、受注・購買プロセスの要件定義

【MM】

【SD】

【保守運用支援(SD/MM)】静岡県/リモート併用/保守運用

月額単価
1,250,000円 / 月
稼働場所
静岡県
業務領域
運用・保守
稼働率:
100%
作業内容:
SAPにおける保守運用支援業務の案件です。 高度なIT戦略立案よりも、現場の課題解決を着実に実行できるメンバーとして、社員のリードのもとで主体的に業務を遂行(自走)できる方を求めています。 これまで各モジュール領域のコンサルタントとしてご活躍され、一人称で運用・維持管理を完遂できる方が適任とされています。 現場の課題解決を中心に、保守運用支援全般を担当していただきます。 主な業務内容:
  • ユーザーからの問い合わせ対応、トラブルシューティング、要望ヒアリング
  • 見積作成、WBS策定、スケジュール管理
  • 受け入れテストの計画、実施、検証
この記事のポイント

CONCATENATE命令(文字列の結合)

文字列の結合は、複数の文字列を1つにまとめる操作です。ABAPでは、CONCATENATE 命令を使用して文字列を結合できます。

基本の構文
 CONCATENATE a1 a2 a3… INTO 変数 [SEPARATED BY separator] [RESPECTING BLANKS].
 ※a1 a2 a3…は結合する文字列や変数を直接指定します。
 ※内部テーブルにの文字列を連結する場合は「CONCATENATE LINES OF itab INTO ~」を使用します。

SEPARATED BYオプション

SEPARATED BYオプションは、結合する各文字列やフィールドの間に特定の区切り文字を挿入するために使用されます。デフォルトでは、CONCATENATE命令は区切り文字を挿入しませんが、SEPARATED BYオプションを指定することで、任意の文字列をセパレータとして指定できます。(例:スペース、カンマ、ハイフンなど)

使用例
DATA: string1 TYPE string VALUE 'Hello',
      string2 TYPE string VALUE 'World',
      result  TYPE string.

* SEPARATED BYオプション未使用
CONCATENATE string1 string2 INTO result.
WRITE: result.  " 出力: HelloWorld
* SEPARATED BYオプション使用
CONCATENATE string1 string2 INTO result SEPARATED BY space.
WRITE: / result.  " 出力: Hello World

このプログラムでは、string1とstring2を結合し、その間にスペースを挿入しています。

実行結果

CONCATENATE(SEPARATED-BY)実行結果

RESPECTING BLANKSオプション

通常、文字列の結合時に末尾にある空白が削除される場合があります。しかし、RESPECTING BLANKSオプションを指定することで、空白をそのまま保持して結合できます。

使用例
TYPES: text   TYPE c LENGTH 6.
DATA:  result TYPE c LENGTH 30,
       itab   TYPE TABLE OF text.

APPEND 'Hello' TO itab.
APPEND 'world' TO itab.
APPEND 'this'  TO itab.
APPEND 'is'    TO itab.
APPEND 'test'  TO itab.

* オプション使用無し
CONCATENATE LINES OF itab INTO result.
WRITE: result.
* SEPARATED BYオプション使用
CONCATENATE LINES OF itab INTO result SEPARATED BY space.
WRITE: / result.
* RESPECTING BLANKSオプション使用
CONCATENATE LINES OF itab INTO result RESPECTING BLANKS.
WRITE: / result.

このプログラムでは、文字列型テーブル itab に5つの文字列(’Hello’, ‘world’, ‘this’, ‘is’, ‘test’)を格納し、CONCATENATE 命令を使用してそれらの要素を1つの文字列 result に結合しています。
最初に CONCATENATE LINES OF itab INTO result. によって、テーブル内の要素が空白なしで結合され、次に CONCATENATE LINES OF itab INTO result SEPARATED BY space. によって、各要素が空白で区切られて結合されます。最後に CONCATENATE LINES OF itab INTO result RESPECTING BLANKS. では、各文字列の元の空白が維持されたまま結合されることを確認できます。

実行結果

CONCATENATE(RESPECTING-BLANKS)実行結果

REPLACE命令(文字列の置換)

REPLACE命令は、文字列内の特定の部分文字列を別の文字列に置き換えるために使用されます。特定のパターンを見つけ、それを新しいパターンに置き換える操作が可能です。

基本の構文
 REPLACE [ALL OCCURRENCES OF | FIRST OCCURRENCE OF] 検索する文字列 IN 置換対象の文字列 WITH 置換用の文字列.

使用例
DATA: text TYPE string VALUE 'Hello ABAP World',
      pattern TYPE string VALUE 'ABAP',
      replacement TYPE string VALUE 'SAP'.

REPLACE pattern IN text WITH replacement.
WRITE: text.  " 出力: Hello SAP World

このプログラムでは、文字列「Hello ABAP World」の中の「ABAP」を「SAP」に置き換えています。

実行結果

REPLACE実行結果

ALL OCCURRENCES OF | FIRST OCCURRENCE OFオプション

ALL OCCURRENCES OFオプションを使用すれば、一致するすべての文字列を置き換えます。一方、FIRST OCCURRENCE OFオプションを使用すれば、最初に一致した文字列のみを置き換えます。指定しない場合は、FIRST OCCURRENCE OFオプションがデフォルトで適用されます。

使用例
DATA: text TYPE string.

* FIRST OCCURRENCE OFオプションを使用
text = 'apple banana apple'.
REPLACE FIRST OCCURRENCE OF 'apple' IN text WITH 'orange'.
WRITE: / text.  " 結果: "orange banana apple"

* ALL OCCURRENCES OFオプションを使用
text = 'apple banana apple'.
REPLACE ALL OCCURRENCES OF 'apple' IN text WITH 'orange'.
WRITE: / text.  " 結果: "orange banana orange"

このプログラムでは、文字列操作において REPLACE 命令の FIRST OCCURRENCE OF と ALL OCCURRENCES OF オプションを使用して、文字列内の部分文字列を置き換えています。最初に FIRST OCCURRENCE OF を使用し、文字列 text に含まれる最初の ‘apple’ を ‘orange’ に置き換えています。次に、ALL OCCURRENCES OF を使用して、文字列内に含まれるすべての ‘apple’ を ‘orange’ に置き換え、両方の ‘apple’ が ‘orange’ に変更されています。

実行結果

REPLACE(ALL-OCCURRENCES-OF、FIRST-OCCURRENCE-OF)実行結果

SPLIT命令(文字列の分割)

SPLIT命令は、文字列を特定の区切り文字で分割し、分割された部分を別々の変数や内部テーブルに格納するために使用されます。ABAPでは、SPLIT命令を使用して、文字列内のデータを個々の要素に分割し、より細かく操作することができます。

基本の構文
 SPLIT 文字列 AT 区切り文字 INTO 変数1 変数2 変数3 ….
 ※区切り文字については、文字列を分割する際に使用される文字や文字列を指定します。
  変数1 変数2 変数3 …は、分割された各部分を格納する変数を指定します。

使用例
DATA: text TYPE string VALUE 'Apple,Orange,Banana',
      fruit1 TYPE string,
      fruit2 TYPE string,
      fruit3 TYPE string.

SPLIT text AT ',' INTO fruit1 fruit2 fruit3.
WRITE: / fruit1,  " 出力: Apple
       / fruit2,  " 出力: Orange
       / fruit3.  " 出力: Banana

このプログラムでは、text変数内の文字列’Apple,Orange,Banana’をカンマで区切り、それぞれをfruit1、fruit2、およびfruit3に格納しています。

実行結果

SPLIT(INTO)実行結果

INTO TABLEオプション

INTO TABLEオプションを使用すると、分割された文字列の各部分を内部テーブルに格納することができます。このオプションは、分割後の要素数が不定の場合や、多くの要素を処理する必要がある場合に便利です。

使用例
DATA: text TYPE string VALUE 'Red;Green;Blue;Yellow',
      color_table TYPE TABLE OF string WITH EMPTY KEY.

SPLIT text AT ';' INTO TABLE color_table.
LOOP AT color_table INTO DATA(color).
  WRITE: / color.
ENDLOOP.

このプログラムでは、text変数内の文字列’Red;Green;Blue;Yellow’をセミコロンで区切り、それぞれを内部テーブルcolor_tableに格納しています。その後、テーブルの各要素をループで出力しています。

実行結果

SPLIT(INTO TABLE)実行結果

SHIFT命令(文字列のシフト)

文字列全体を左または右にシフト(移動)させるための命令です。指定した文字数だけ文字列をシフトし、シフトによって空いた部分にはスペースが埋められます。この命令は、文字列の先頭や末尾から特定の文字を削除したい場合や、文字列を整形したい場合に有用です。

基本の構文
 SHIFT 文字列 [BY n PLACES] [LEFT | RIGHT | CIRCULAR].
 ※nについてはシフトする文字数を指定します。
 ※LEFT:位置がn個分左に移動され、右端に移動した分の空白が追加される
  RIGHT:位置がn個分右に移動され、左端に移動した分の空白が追加される
CIRCULAR:シフトされた文字を文字列の反対側に移動される(文字列全体を回転させる)
  (指定しない場合はLEFTが設定されます。)

使用例
DATA:
  lv_text  TYPE char10 VALUE 'ABCDEF1234',
  lv_text1 TYPE char10,
  lv_text2 TYPE char10,
  lv_text3 TYPE char10,
  lv_text4 TYPE char10.

lv_text1 = lv_text.
lv_text2 = lv_text.
lv_text3 = lv_text.
lv_text4 = lv_text.

SHIFT lv_text1.
SHIFT lv_text2 BY 3 PLACES LEFT.
SHIFT lv_text3 BY 3 PLACES RIGHT.
SHIFT lv_text4 BY 3 PLACES CIRCULAR.

WRITE: / 'Original Text: ', lv_text,
       / 'lv_text1 (Shift Left by 1): ', lv_text1,
       / 'lv_text2 (Shift Left by 3): ', lv_text2,
       / 'lv_text3 (Shift Right by 3): ', lv_text3,
       / 'lv_text4 (Shift Circular by 3): ', lv_text4.

このプログラムでは、文字列’ABCDEF1234’を使用して、ABAPのSHIFT命令の動作を示しています。lv_text1はデフォルトで1文字左にシフトされ、lv_text2は3文字左にシフト、lv_text3は3文字右にシフト、そしてlv_text4は3文字循環シフトされます。最後に、元の文字列とそれぞれのシフト結果が出力されます。

実行結果

SHIFT実行結果

STRLEN命令(文字列の長さ取得)

STRLEN命令は、指定された文字列の長さを取得するために使用されるABAPの関数です。文字列の長さを確認することで、文字列操作やデータ検証などに利用することができます。STRLENは文字列の中の文字数を返し、バイト数ではなく文字数をカウントするため、マルチバイト文字列でも正確に長さを取得できます。

基本の構文
 STRLEN (文字列).

使用例
DATA: text TYPE string VALUE 'ABAP Programming',
      length TYPE i.

length = STRLEN( text ).
WRITE: 'Length:', length.  " 出力: Length: 16

このプログラムでは、text変数に格納されている文字列の長さをlengthに格納し、出力しています。textには’ABAP Programming’という文字列が含まれており、その長さである16が出力されます。

実行結果

STRLEN実行結果

FIND命令(文字列の検索)

FIND命令は、指定された文字列内で特定の部分文字列を検索するために使用されるABAPのコマンドです。文字列操作において、特定のパターンやキーワードが含まれているかどうかをチェックしたり、その位置を取得したりするために使用されます。

基本の構文
 FIND [FIRST OCCURRENCE | ALL OCCURRENCES] (文字列) IN text [MATCH OFFSET 変数] [MATCH COUNT 変数] [MATCH LENGTH 変数].

FIRST OCCURRENCE | ALL OCCURRENCESオプション

FIRST OCCURRENCEオプションは、検索対象の文字列内で最初に一致した部分文字列のみを検索します。指定しない場合は、FIRST OCCURRENCEオプションがデフォルトで適用されます。
ALL OCCURRENCESオプションは、検索対象の文字列内で一致するすべての部分文字列を検索します。このオプションを指定することで、検索対象文字列のすべての一致箇所を取得することができます。

使用例
DATA: text     TYPE string VALUE 'apple banana apple grape banana apple',
      word     TYPE string VALUE 'apple',
      offset   TYPE i,
      count    TYPE i.

* FIRST OCCURRENCE OFオプションを使用
FIND FIRST OCCURRENCE OF word IN text MATCH OFFSET offset.

IF sy-subrc = 0.
  WRITE: / 'First occurrence of "', word, '" is at offset:', offset.  " 結果: 0
ELSE.
  WRITE: / 'Pattern not found.'.
ENDIF.

* ALL OCCURRENCES OFオプションを使用
FIND ALL OCCURRENCES OF word IN text MATCH COUNT count.

WRITE: / 'Total occurrences of "', word, '":', count.  " 結果: 3

このプログラムでは、最初に FIND FIRST OCCURRENCE OF を使用して ‘apple’ が最初に出現する位置を取得し、そのオフセット(開始位置)を表示します。この例では、’apple’ は文字列の先頭にあるため、オフセットは 0 です。次に、FIND ALL OCCURRENCES OF を使用して ‘apple’ の全出現回数を取得し、結果として 3 回出現していることがわかります。

実行結果

FIND(FIRST-OCCURRENCE、ALL-OCCURRENCES)実行結果

MATCH OFFSET | MATCH COUNT | MATCH LENGTHオプション

MATCH OFFSETオプションは、一致した部分文字列の開始位置(オフセット)を取得するオプションです。オフセットは、検索対象文字列の先頭から何文字目に一致したかを示す数値です。

MATCH COUNTオプションは、一致した部分文字列の総数を取得するオプションです。検索対象の文字列内で、指定したパターンがいくつ見つかったかを示します。

MATCH LENGTHオプションは、一致した部分文字列の長さを取得するオプションです。検索対象の文字列内で、指定したパターンが一致した部分の文字数を示します。

使用例
DATA: text   TYPE string VALUE 'apple banana apple grape apple',
      word   TYPE string VALUE 'apple',
      offset TYPE i,
      count  TYPE i,
      length TYPE i.

* 最初の 'apple' の出現位置と長さを取得
FIND FIRST OCCURRENCE OF word IN text
     MATCH OFFSET offset
     MATCH LENGTH length.

IF sy-subrc = 0.
  WRITE: / 'First occurrence of "', word, '" found: '.
  WRITE: / '  - Offset:', offset, ' Length:', length.
ELSE.
  WRITE: / 'Pattern not found.'.
ENDIF.

* すべての 'apple' の出現回数を取得
FIND ALL OCCURRENCES OF word IN text MATCH COUNT count.

WRITE: / 'Total occurrences of "', word, '":', count.

このプログラムでは、文字列 text 内における特定の単語 word (‘apple’) の最初の出現位置およびその長さ、さらにすべての出現回数を取得して表示しています。まず、FIND FIRST OCCURRENCE OF 命令を使用して、’apple’ が最初に現れる位置 (offset) とその単語の長さ (length) を取得し、その結果を表示します。次に、FIND ALL OCCURRENCES OF 命令を使って、文字列全体における ‘apple’ の出現回数 (count) を取得し、その回数を表示しています。

実行結果

FIND(MATCH-OFFSET、MATCH-COUNT、MATCH-LENGTH)実行結果

CONDENSE命令(文字列の空白削除)

CONDENSE命令は、文字列から余分な空白を削除するために使用されるABAPのコマンドです。この命令を使用すると、文字列内の連続する複数の空白を1つの空白に置き換えたり、文字列の先頭および末尾にある空白を削除したりできます。入力データの整形や出力のフォーマットを整えるためによく使用されます。

基本の構文
 CONDENSE 文字列 [NO-GAPS].

使用例
DATA: text TYPE string VALUE '  ABAP   Programming  '.

CONDENSE text.
WRITE: '"' && text && '"'.  " 出力: "ABAP Programming"

このプログラムでは、text変数の中にある先頭と末尾の空白が削除され、内部の連続する空白も1つの空白に縮小されています。出力は”ABAP Programming”となります。

実行結果

CONDENSE実行結果

NO-GAPSオプション

NO-GAPSオプションを使用すると、文字列内のすべての空白を完全に削除します。このオプションを使うことで、文字列内のスペースが必要ない場合や、データのクリーニングを行う場合に有効です。

まとめ

ABAPでの文字列操作における基本的な命令であるCONCATENATE、REPLACE、SPLIT、SHIFT、STRLEN、FIND、およびCONDENSEについて説明しました。
これらの命令を活用することで、文字列の結合、分割、シフト、長さの取得、特定の文字列の検索、そして余分な空白の削除といった操作が効率的に行えます。ABAPプログラミングにおいて、これらの文字列操作はデータ処理の重要な部分を担っており、適切に使用することで、コードの可読性とメンテナンス性を向上させることができます。今後の開発において、これらの命令を活用し、より効果的なプログラムを作成していきましょう。

新着のSAPフリーランス案件

【MM】

【SD】

【SAP保守運用支援(SD, MM)】静岡県浜松市/リモート併用/保守運用支援

月額単価
1,400,000円 / 月
稼働場所
静岡県
業務領域
運用・保守
稼働率:
100%
作業内容:
SAPの保守運用支援プロジェクトにご参画いただきます。 高度なIT戦略立案フェーズではなく、現場の課題解決を着実に実行するメンバーとしての役割が期待されます。 社員の方のリードのもと、主体的に業務を遂行(自走)できる方、または各モジュール領域のコンサルタントとして一人称で運用・維持管理ができる方を募集しています。 ユーザーからの問い合わせ対応、見積作成、テスト推進など、具体的な保守運用支援業務を担当していただきます。 主な業務内容:
  • ユーザーからの問い合わせ対応、トラブルシューティング、要望ヒアリング
  • 見積作成、WBS策定、スケジュール管理
  • 受け入れテストの計画、実施、検証

【FI】

【基幹システム刷新(S/4HANA FI/BTP)】東京・二子玉川(リモート併用)/移行推進サブリード

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, その他
稼働率:
100%
作業内容:
大手企業様の基幹システムをSAP S/4HANAへ刷新する大規模プロジェクトです。 このプロジェクトにおいて、SAP FIモジュールとBTPアドオンを中心とした移行推進チームのサブリードとしてご活躍いただきます。 自ら主体的に動き、移行方針書や移行計画書のドラフト作成からクライアントとのセッションを主導し、合意形成までの一連のプロセスを担当していただきます。 主な業務内容:
  • 移行推進チームのサブリード業務
  • 移行方針書、移行計画書など、各種ドキュメントの作成とクライアントへの提案
  • クライアントおよび関連チームとの調整、合意形成の推進
  • FIモジュールおよびBTPアドオンに関する課題解決のサポート

【CO】

【FI】

【販社受発注システム再構築(CO/FI)】神奈川・川崎(リモート併用)/構想策定・効果算定

月額単価
1,700,000円 / 月
稼働場所
神奈川県
業務領域
要件定義
稼働率:
100%
作業内容:
販社(販売会社)における受発注システムの再構築構想を策定する、極めて重要な最上流フェーズの案件です。 この構想フェーズでは、最適なSAPソリューション選定に向けたインプット情報を作成することが主要なミッションとなります。 具体的には、概算費用と効果を試算するためのモデル作成、そして会計領域を中心とした施策検討を実施します。 特に顧客別・商品別収益分析(CO)の施策やToBe像を確立するため、CO/FIの知見が不可欠となるポジションを担当していただきます。 主な業務内容:
  • 施策別効果分析モデルの作成(業務削減、人件費、運転資本などの定量化)
  • 業務/IT統合の観点を取り入れた改革シナリオの立案
  • 経営層向けの説明資料(ROI/Payback試算を含む構想報告書)の作成支援
  • 現行業務工数ヒアリング、帳票/IF数集計
  • 会計領域の施策検討(顧客別、商品別収益分析(CO)のToBe設計およびデータ連携方式検討)

【MM】

【ECC→S4HANA移行(MM)】東京都/リモート併用/グローバルテンプレート構築・展開

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, テスト
稼働率:
100%
作業内容:
ECCからS/4HANAへの移行に伴う、グローバルテンプレートの構築・展開プロジェクトです。 パイロット拠点のテストフェーズ完了に伴い、東南アジア、インド、UAEへの次拠点展開と、中国、ヨーロッパ、アフリカ、北米への次々拠点展開を並行して進めていきます。 本案件では、MM領域のコンサルタントとして、テンプレート導入における要件定義や設計、テスト推進などを担当していただきます。 主な業務内容:
  • コンフィグ要件定義、および設定担当者への説明・レビュー
  • アドオン要件定義(特に帳票関連)、および設計者への説明・レビュー
  • 結合テスト、ウォークスルーテストシナリオの検討
  • 発生する個別課題の検討および解決推進
  • 顧客(情報システム部門)との直接の調整・フェーシング

【FI】

【ECC→S4HANA移行(FI/会計帳票)】東京都/リモート併用/アドオン帳票リバースエンジニアリング

月額単価
1,150,000円 / 月
稼働場所
東京都
業務領域
設計, 開発(ABAP/Fiori)
稼働率:
100%
作業内容:
ECC6.0からS/4HANAへの移行プロジェクトです。 設計書が存在しない現行のアドオン帳票(約46本)について、リバースエンジニアリングを実施し、S/4HANAでの実装に向けた基本設計書の新規作成を行います。 本案件では、会計帳票チームのサブリードとして、経理ユーザーとの要件ヒアリング、基本設計、開発チーム(別チーム)への説明、成果物レビュー、チームの進捗・課題管理などを担当していただきます。 主な業務内容:
  • 現行アドオン帳票のリバースエンジニアリングによる基本設計書作成
  • 顧客(経理ユーザー)への要件ヒアリング、仕様調整
  • 開発チームへの設計詳細説明、および開発成果物のレビュー
  • 帳票チームのサブリード業務(各帳票の進捗状況把握、課題管理)
  • タスク遂行に関するスケジュール調整、要員アサインの調整
  • 顧客IT部門担当との進め方や品質管理に関するコミュニケーション

【MM】

【SD】

【貴金属リサイクル業 SAP保守(MM/SD/ABAP)】東京都/リモート併用/保守・ユーザー対応

月額単価
1,100,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
稼働率:
100%
作業内容:
貴金属リサイクル業のクライアントにおけるSAP保守プロジェクトです。 ロジモジュール(MM, SD)の保守をご担当いただきます。 アドオンの作りこみが多い環境であり、ドキュメント類の整備が不十分なためABAPスキルが必須となります。 主に、ユーザーからの問い合わせ対応や調査、プログラム改修などを担当していただきます。 主な業務内容:
  • ロジモジュール(MM, SD)の保守業務
  • ユーザーからの問い合わせ対応・調査
  • アドオンプログラムの改修・開発

【MM】

【SD】

【電気通信 子会社統合(SD/MM移行)】東京(リモート併用)/データ移行・開発

月額単価
1,100,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori)
稼働率:
100%
作業内容:
電気通信事業における子会社統合に伴い、SAPシステム(ロジスティクス領域)の移行プロジェクトが進行中です。 本ポジションでは、資材マスタのデータ移行を軸に、移行リハーサル、本番稼働フォロー、既存プログラムの改修など、移行・開発業務全般をご担当いただきます。 ロジ領域の組織カスタマイズ経験とABAPスキルの両方を活かせる、技術的にチャレンジングな役割です。 主な業務内容:
  • 資材マスタデータ移行、およびデータマッピング
  • 移行リハーサル、走行試験の実施支援
  • 本番稼働のフォローアップ
  • 既存プログラムの改修、およびパフォーマンスチューニング

【MM】

【PP】

【SD】

【SAP S/4HANA 保守・運用(SD/MM/PP/ABAP)】東京都/リモート併用/インシデント対応・アドオン改修

月額単価
850,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori), 運用・保守
稼働率:
100%
作業内容:
SAP S/4HANAの保守・運用プロジェクトにご参画いただきます。 主に販売管理(SD)、購買管理(MM)、在庫管理、生産管理(PP)領域におけるインシデント対応やアドオンプログラムの対応を担当していただきます。 主な業務内容:
  • SAPに関する問い合わせ(インシデント)に対する調査・回答。
  • アドオンプログラム(ABAP)の調査・改修。

【CO】

【MM】

【SD】

【その他】

【半導体S/4HANA新規導入(PS/CO/SD/MM)】東京(オンサイト)/要件定義

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
要件定義
稼働率:
100%
作業内容:
半導体製造業における、SAP S/4HANAの新規導入プロジェクトです。 現在、別パッケージで対応している「個別受注生産」プロセスを、SAP S/4HANA (PS/CO/SD/MM) に置き換えることを目的としています。 本募集では、プロジェクトの根幹をなす要件定義フェーズにおいて、各モジュールの専門家として新プロセスの設計を中心メンバーとして推進していただくことを期待しています。 主な業務内容:
  • 【PS担当】
    • WBS(作業分解構造)やネットワークの設計・設定
    • 販売受注(SD)とPSの統合、および購買(MM)や製造(PP)との連携設計
    • 成果物の納品・請求プロセスの設計
  • 【CO担当】
    • プロジェクト別の原価収集設定
    • 個別原価計算、総合原価計算の設計
    • 収益性分析(CO-PA)や原価センタ配賦の設計
  • 【SD/MM担当】
    • PSモジュールとの連携を前提とした、受注・購買プロセスの要件定義

【MM】

【SD】

【保守運用支援(SD/MM)】静岡県/リモート併用/保守運用

月額単価
1,250,000円 / 月
稼働場所
静岡県
業務領域
運用・保守
稼働率:
100%
作業内容:
SAPにおける保守運用支援業務の案件です。 高度なIT戦略立案よりも、現場の課題解決を着実に実行できるメンバーとして、社員のリードのもとで主体的に業務を遂行(自走)できる方を求めています。 これまで各モジュール領域のコンサルタントとしてご活躍され、一人称で運用・維持管理を完遂できる方が適任とされています。 現場の課題解決を中心に、保守運用支援全般を担当していただきます。 主な業務内容:
  • ユーザーからの問い合わせ対応、トラブルシューティング、要望ヒアリング
  • 見積作成、WBS策定、スケジュール管理
  • 受け入れテストの計画、実施、検証

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

新卒でSAPエンジニアとしてABAPでの新規開発や保守業務を担当。
業務内容としてはロジ系(MM/SD)がメインで、ABAPの開発が最も得意。

この記事のポイント