当我们select时用到INNER JOIN的时候,做三表连接
有时会遇到from 一个内表不好用的情况,这里提供了一种写法,仅供参考
SELECT
BKPF~BUKRS, "会社コード
BSEG~BUZEI, "会計伝票内の明細番号
FROM @I_TAB AS A "内部テーブル「ULファイルデータ」
INNER JOIN BKPF "会計伝票ヘッダ
ON BKPF~BUKRS = A~BUKRS
AND BKPF~BELNR = A~BELNR
AND BKPF~GJAHR = A~GJAHR
INNER JOIN BSEG "会計伝票明細
ON BSEG~BUKRS = BKPF~BUKRS
AND BSEG~BELNR = BKPF~BELNR
AND BSEG~GJAHR = BKPF~GJAHR
AND BSEG~BUZEI = A~BUZEI
WHERE BSEG~BUKRS = @P_BUKRS "会社コード
AND A~PROCE_RESULT = @SPACE
INTO TABLE @C_IT_BKPF. "内部テーブル「会計伝票情報」
可以转换成loop 套read的写法,并附加相关限制条件
* 転記伝票情報の取得
SELECT
BKPF~BUKRS, "会社コード
BSEG~BUZEI, "会計伝票内の明細番号
FROM BKPF
INNER JOIN BSEG "会計伝票明細
ON BSEG~BUKRS = BKPF~BUKRS "#EC CI_DB_OPERATION_OK[2431747]
AND BSEG~BELNR = BKPF~BELNR "#EC CI_CMPLX_WHERE
AND BSEG~GJAHR = BKPF~GJAHR
WHERE BSEG~BUKRS = @P_BUKRS "会社コード
INTO TABLE @C_IT_BKPF. "内部テーブル「会計伝票情報」
LOOP AT C_IT_BKPF ASSIGNING FIELD-SYMBOL(<LW_BKPF>).
READ TABLE U_IT_UPFILE INTO DATA(LW_UPFILE)
WITH KEY
NS00
COMPONENTS
BUKRS = <LW_BKPF>-BUKRS
BELNR = <LW_BKPF>-BELNR
GJAHR = <LW_BKPF>-GJAHR
BUZEI = <LW_BKPF>-BUZEI (附加条件1)
PROCE_RESULT = SPACE. (附加条件2)
IF SY-SUBRC <> 0.
DELETE TABLE C_IT_BKPF FROM <LW_BKPF>.
ENDIF.
ENDLOOP.