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) 。括號必須緊跟着這個內表,不能有空格。