*&---------------------------------------------------------------------*
*& Report YH001
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT yh001.
TABLES:ekko,ekpo,t024,lfa1.
*******报表输出结构
DATA: BEGIN OF gs_out,
sel ,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
lifnr LIKE ekko-lifnr,
name1 LIKE lfa1-name1,
matnr LIKE ekpo-matnr,
ztdline LIKE mara-ztdline,
menge LIKE ekpo-menge,
aedat LIKE ekko-aedat,
eknam LIKE t024-eknam,
ekgrp LIKE t024-ekgrp,
END OF gs_out.
DATA: gt_out LIKE TABLE OF gs_out.
DATA:gt_fieldcat TYPE lvc_t_fcat, "ALV字段布局工作区
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo,
gs_setting TYPE lvc_s_glay,
* grid_settings TYPE lvc_s_glay,
it_events TYPE slis_t_event,
wa_events TYPE slis_alv_event.
DEFINE fill_fieldcat. "ALV展示设置宏
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-scrtext_l = &2.
gs_fieldcat-edit = &3.
gs_fieldcat-checkbox = &4.
gs_fieldcat-ref_table = &5.
gs_fieldcat-ref_field = &6.
gs_fieldcat-key = &7.
gs_fieldcat-fix_column = &8.
APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.
****输入屏幕
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln,"采购订单
s_matnr FOR ekpo-matnr."物料编码
PARAMETERS: s_lifnr TYPE ekko-lifnr OBLIGATORY."供应商
SELECTION-SCREEN END OF BLOCK bk1.
START-OF-SELECTION.
PERFORM get_data. "alv获取数据
PERFORM get_layout.
PERFORM get_fieldcat.
PERFORM dis_alv.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_data .
SELECT ekpo~ebeln
ekpo~ebelp
ekko~lifnr
ekpo~matnr
ekpo~menge
ekko~aedat
ekko~ekgrp
INTO CORRESPONDING FIELDS OF TABLE gt_out
FROM ekko
INNER JOIN ekpo
ON ekko~ebeln = ekpo~ebeln
WHERE ekko~ebeln IN s_ebeln.
IF gt_out IS NOT INITIAL.
SELECT lfa1~lifnr,
lfa1~name1
INTO TABLE @DATA(lt_lfa1)
FROM lfa1
FOR ALL ENTRIES IN @gt_out
WHERE lfa1~lifnr = @gt_out-lifnr.
SELECT t024~ekgrp,
t024~eknam
INTO TABLE @DATA(lt_t024)
FROM t024
FOR ALL ENTRIES IN @gt_out
WHERE t024~ekgrp = @gt_out-ekgrp.
SELECT mara~matnr,
mara~ztdline
INTO TABLE @DATA(lt_mara)
FROM mara
FOR ALL ENTRIES IN @gt_out
WHERE mara~matnr = @gt_out-matnr.
ENDIF.
LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>).
READ TABLE lt_lfa1 INTO DATA(ls_lfa1) WITH KEY lifnr = <fs_out>-lifnr.
IF sy-subrc = 0.
<fs_out>-name1 = ls_lfa1-name1.
ENDIF.
READ TABLE lt_t024 INTO DATA(ls_t024) WITH KEY ekgrp = <fs_out>-ekgrp.
IF sy-subrc = 0.
<fs_out>-eknam = LS_t024-eknam.
ENDIF.
READ TABLE lt_mara INTO DATA(ls_mara) WITH KEY matnr = <fs_out>-matnr.
IF sy-subrc = 0.
<fs_out>-ztdline = ls_mara-ztdline.
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_layout
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_layout .