久々の更新。
今回は、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)が使えない場合もあるのでご了承を。
と言う訳で、今日はこのへんで。
では〜。
0 件のコメント:
コメントを投稿