ABAP 批次特性中的供应商关联MCHA表取数
1、根据供应商号从AUSP表读取对象值
DATA : lv_atinn TYPE ausp-atinn. CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT' EXPORTING input = 'Z_BATCH_VENDOR1' IMPORTING output = lv_atinn. DATA: BEGIN OF ls_ausp, objek TYPE inob-objek, cuobj_bm TYPE inob-cuobj, atinn TYPE ausp-atinn, atwrt TYPE ausp-atwrt, END OF ls_ausp, lt_ausp LIKE TABLE OF ls_ausp. REFRESH: lt_ausp. SELECT inob~objek inob~cuobj AS cuobj_bm ausp~atinn ausp~atwrt INTO CORRESPONDING FIELDS OF TABLE lt_ausp FROM ausp JOIN inob ON inob~cuobj = ausp~objek WHERE inob~klart = '022' AND inob~obtab = 'MCHA' AND ausp~atwrt IN s_lifnr AND ausp~atinn = lv_atinn. SORT lt_ausp BY objek atinn. DELETE ADJACENT DUPLICATES FROM lt_ausp COMPARING objek atinn.
2、使用内表进行内连接查询需要的数据
SELECT a~matnr, a~werks, CASE a~lifnr WHEN ' ' THEN p~atwrt ELSE a~lifnr END AS lifnr, * a~lifnr, b~lgort, b~charg, b~clabs, b~clabs AS menge, m~meins, k~maktx * l~name1 FROM mcha AS a INNER JOIN mara AS m ON a~matnr = m~matnr INNER JOIN makt AS k ON a~matnr = k~matnr INNER JOIN @lt_ausp AS p ON p~cuobj_bm = a~cuobj_bm LEFT JOIN mchb AS b ON a~matnr = b~matnr AND a~werks = b~werks AND a~charg = b~charg *LEFT JOIN lfa1 AS l ON a~lifnr = l~lifnr "因为MCHA表中LIFNR字段为空,所以此处没有查询供应商名称 WHERE a~matnr IN @s_matnr AND a~werks IN @s_werks AND b~lgort IN @s_lgort AND b~charg IN @s_charg AND ( a~lifnr IS NOT INITIAL OR p~atwrt IS NOT INITIAL ) AND b~clabs > 0 AND k~spras = @sy-langu INTO CORRESPONDING FIELDS OF TABLE @gt_out.
3、查询供应商名称
LOOP AT gt_out ASSIGNING <fs_out>. READ TABLE lt_lfa1 INTO DATA(ls_lfa1) WITH KEY lifnr = <fs_out>-lifnr BINARY SEARCH. IF sy-subrc = 0. <fs_out>-name1 = ls_lfa1-name1. ENDIF. ENDLOOP.

浙公网安备 33010602011771号