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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本