在CMOD上写ABAP取长文本

56 篇文章 0 订阅

HowTo extract Order long text

Extracting Order number and Description is pretty straight forward when you use the standard datasource 0COORDER_TEXT
provided by the content.

What if you need to include the “long text” which sits behind the document icon?

A.png

B.png

 

For that we make use of the functionmodul READ_TEXT in CMOD.

 

You have two options either you extend the standard datasource 0COORDER_ATTR or opt for an additional datasource. In this
example we use 
ZBW_COORDER_ATTR as additional datasource.

 

  1. Create the datasource ZBW_COORDER_ATTR which basically has only AUFNR and TXTLG as fields.
  2. Next we need a CMOD entry reading through READ_TEXT the desired additional  text. You can modify the code that it transfers the language code.

         We only needed english and if it doesn't exist try german. In the end we map it to our txtlg. Unfortunately you will be restricted to 60 CHAR.

 

 

Detail on READ_TEXT

 

For Order Description we need LTXT and the Object AUFK.

 

        CALL FUNCTION 'READ_TEXT'
             
EXPORTING
               
CLIENT             '100'
               
ID                      'LTXT'
               
LANGUAGE      l_text_langu
               NAME        
l_object_name
               OBJECT      
'AUFK'

 

In the end we fill  l_object_name with the order number.  ( l_object_name <fs_zbw_coorder_attr>-AUFNR.)

C.png

Submitting those parameters delivers you the "Additional TEXT"

D.png

Putting it all in CMOD:

 

-----------------------------------------------------------------------------------

   WHEN 'ZBW_COORDER_ATTR'.
     LOOP AT i_t_data ASSIGNING <fs_zbw_coorder_attr>.
** derive order description, max 560 chars, if LTEXT = X we take always the first line only, the others are history
       IF <fs_zbw_coorder_attr>-LTEXT RS_C_TRUE.
* call function module to read the order text
         CLEAR lt_text_lines.
         l_text_langu 'E'. " English default
         l_object_name <fs_zbw_coorder_attr>-AUFNR.

         DO TIMES"first english, then german
           CALL FUNCTION 'READ_TEXT'
             EXPORTING
               CLIENT              = '100'
               ID                       'LTXT'
               LANGUAGE       l_text_langu
               NAME                 l_object_name
               OBJECT             'AUFK'
*         IMPORTING
*           HEADER                  = HTEXT
             TABLES
               LINES                   lt_text_lines
             EXCEPTIONS
               ID                                      1
               LANGUAGE                     2
               NAME                               3
               NOT_FOUND                   4
               OBJECT                           5
               REFERENCE_CHECK     6
               WRONG_ACCESS_TO_ARCHIVE 7
               OTHERS                            8.

           IF SY-SUBRC 0.
             EXIT.
           ENDIF.
           l_text_langu 'D'" set language to german for second try
         ENDDO.

         IF NOT lt_text_lines IS INITIAL.
           READ TABLE lt_text_lines INTO lr_text_lines INDEX 1.
           <fs_zbw_coorder_attr>-txtlg lr_text_lines-TDLINE(60).
         ENDIF.
       ENDIF.
ENDCASE.

-----------------------------------------------------------------------------------

 

That's it map your datasource to 0coorder with an additonal infoobject with holds the long text and you are done..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值