2013-10-12

ABAP boolc( log_exp )

どもです。

久々の更新。

今回は、ABAP ネタを少し。


みなさんは BAPI 使ってますか?
最近は、Batch Input よりもBAPI を使って伝票作ったりすることも多いんじゃないかと思います。
というか、個人的にBatch Input は使う頻度を下げて行きたいと思ってます。

ま、それはそれとして。

伝票の生成を行う系統の BAPIを使っていて一番面倒なのが

  使う項目について、別の構造体やテーブルにフラグを設定する必要がある。

という点。
まあ、これが予め決まっていて「それ以外無い」 なら決め打ちで 'X' しちゃえばいいんですけどユーザーのアクション(数値などの設定)によって使う/使わないが決まる場合、どうしてもこんな処理をしなきゃいけません。

IF L_GENERALDATA-DESCRIPT2 is initial.
     L_GENERALDATAX-DESCRIPT2  =  space.
ELSE.
     L_GENERALDATAX-DESCRIPT2  =  'X'.
ENDIF.

※わざと冗長に書いてます。

これは、固定資産のBAPIの一部です。
やってることは、 DESCRIPT2 に何か設定されていれば GENERALDATAX の DESCRIPT2 に ’X' を設定する。
と言うもの。

多かれ少なかれ、 BAPI で処理を記述するとこういった部分が出てくると思います。

自分も最近こういった記述をすることになって、「面倒だな〜」と思いながらものは試しにと

もっと簡単に記述できるんじゃないか

と思い Help を漁ってみました。例えば、Lines のような関数でもあれば…なんて。

そうしたらば、見慣れない関数が、
Boolc
Boolx
 これは、こんな風に記述します。

L_GENERALDATAX-DESCRIPT2 = Boolc( L_GENERALDATA-DESCRIPT2 is initial ).

おお!一行で書ける!

つまり、括弧内の論理式が 真の場合、左辺に ’X' を返し、偽の場合、左辺に空白を返します。

  便利ーーーーー!

いままで、 IF でちまちまやってたのが嘘みたい!

まあ、どっかで出たんでしょうね要望が。
 「ちまちまやってられんゾ! (#゚Д゚)ゴルァ!!」

かどうかは、わかりませんが。

あ。因みに(大事なこと)、パッケージの状況によってはこれ(Boolc/Boolx)が使えない場合もあるのでご了承を。

と言う訳で、今日はこのへんで。

では〜。
コメントを投稿