ABAP 動態where 使用


REPORT  ztest001_xch.
TABLES: makt.

DATA where_tab(80) OCCURS 10 WITH HEADER LINE.
DATA : wa_itab LIKE makt OCCURS 10 WITH HEADER LINE.

PARAMETERS: s_trx LIKE makt-matnr OBLIGATORY,
lan LIKE makt-spras OBLIGATORY.

INITIALIZATION.
  MOVE 'EN' TO lan.

START-OF-SELECTION.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input  = s_trx
    IMPORTING
      output = s_trx.

  CONCATENATE 'matnr like ''%' s_trx '%''' INTO where_tab.
  APPEND where_tab.
  CONCATENATE ' and SPRAS = ''' lan '''' INTO where_tab.
  APPEND where_tab.
  CLEAR where_tab.

  SELECT * FROM makt INTO TABLE wa_itab WHERE (where_tab).

END-OF-SELECTION.
  LOOP AT wa_itab.
    WRITE:/  wa_itab-matnr,wa_itab-spras.
  ENDLOOP.

 

一些教訓:單引號是特殊字符,如果要用到單引號,必須得轉義,'',即兩個單引號。SQL語句查詢條件為字符時,需要加單引號。CONCATENATE ' and SPRAS = ''' lan '''' INTO where_tab. 實際上是三個字符串連接成一個字符串存放到內表中,and SPRAS = '變量',前面是一個字符串,and SPRAS = '',中間是一個變量 lan,后面是一個單引號'' ,所以合起來就是 CONCATENATE ' and SPRAS = ''' lan '''' INTO where_tab.

關於字符串的連接和單引號的使用,需要去體會和實踐一下。這是關於在SAP中如何多條件語句的使用示例。

注意:WHERE (where_tab) 。括號必須緊跟着這個內表,不能有空格。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM