SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
TABLES:bkpf,tvkbt,vbak.
TYPE-POOLS:slis.
DATA:ift TYPE lvc_t_fcat ,
ifts LIKE LINE OF ift,
w_layo TYPE lvc_s_layo.
DATA i_grid_title TYPE lvc_title.
DATA :new_table TYPE REF TO data,
new_ifts TYPE REF TO data.
DATA:BEGIN OF gi_out OCCURS 0,
bezei LIKE tvkbt-bezei,
erdat LIKE vbak-erdat,
cx(40),
lfimg LIKE lips-lfimg,
vbeln LIKE vbap-vbeln ,
posnr LIKE vbap-posnr,
vkbur LIKE vbak-vkbur,
vtweg LIKE vbak-vtweg,
auart LIKE vbak-auart,
END OF gi_out.
DATA :BEGIN OF gi_list OCCURS 0,
bezei LIKE tvkbt-bezei,
erdat LIKE vbak-erdat,
cx(40),
lfimg LIKE lips-lfimg,
END OF gi_list.
DATA :BEGIN OF gi_vbak OCCURS 0,
vbeln LIKE vbak-vbeln,
vkbur LIKE vbak-vkbur,
erdat LIKE vbak-erdat,
END OF gi_vbak.
DATA :BEGIN OF gi_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
wbstk LIKE vbuk-wbstk,
lfimg LIKE lips-lfimg,
kwmeng LIKE vbap-kwmeng,
kwmeng1 LIKE vbap-kwmeng,
END OF gi_vbap.
DATA :BEGIN OF gi_lips OCCURS 0,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgbel,
vbeln LIKE lips-vbeln,
posnr LIKE lips-posnr,
lfimg LIKE lips-lfimg,
END OF gi_lips.
DATA :BEGIN OF gi_lips1 OCCURS 0,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgbel,
lfimg LIKE lips-lfimg,
END OF gi_lips1.
RANGES s_month FOR vbak-erdat.
DATA:d1 LIKE sy-datum,
d2 LIKE sy-datum.
DATA : BEGIN OF gi_s OCCURS 0,
bezei LIKE tvkbt-bezei,
cx(40),
lfimg LIKE lips-lfimg,
END OF gi_s.
DATA: gv_name(70) TYPE c,
gi_lines LIKE STANDARD TABLE OF tline INITIAL SIZE 10 WITH HEADER LINE.
FIELD-SYMBOLS: TYPE table, TYPE table,
TYPE ANY,
TYPE ANY.
*----------------------------------------------------------------------*
* selection-screen *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-001.
SELECT-OPTIONS:s_bezei FOR tvkbt-bezei NO INTERVALS,
s_erdat FOR vbak-erdat NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK b.
*----------------------------------------------------------------------*
* INITIALIZATION. *
*----------------------------------------------------------------------*
INITIALIZATION.
*----------------------------------------------------------------------*
* *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
CONCATENATE s_erdat-low+0(6) '01' INTO d1.
CONCATENATE s_erdat-high '01' INTO d2.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
i_date = d2
IMPORTING
e_date = d2.
CLEAR s_month.
s_month-low = d1.
s_month-high = d2.
s_month-sign = 'I'.
s_month-option = 'BT'.
APPEND s_month.
*----------------------------------------------------------------------*
* start-of-selection *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM frm_getdata.
PERFORM frm_deal_data.
PERFORM frm_alv_out.
*&---------------------------------------------------------------------*
*& Form FRM_GETDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_getdata .
SELECT vbak~vbeln vbak~vkbur vbak~erdat
FROM vbak
INNER JOIN vbuk
ON vbak~vbeln = vbuk~vbeln
INTO CORRESPONDING FIELDS OF TABLE gi_vbak
WHERE vbak~erdat IN s_month
AND vbuk~lfgsk <> 'C'.
IF sy-subrc <> 0.
MESSAGE i208(00) WITH '没有数据'.
STOP.
ENDIF.
SORT gi_vbak[] BY vbeln.
SELECT vbap~vbeln vbap~posnr vbap~kwmeng lips~lfimg vbuk~wbstk
FROM vbap
INNER JOIN lips
ON vbap~vbeln = lips~vgbel
AND vbap~posnr = lips~vgpos
INNER JOIN vbuk
ON vbap~vbeln = vbuk~vbeln
INTO CORRESPONDING FIELDS OF TABLE gi_vbap
FOR ALL ENTRIES IN gi_vbak
WHERE vbap~vbeln = gi_vbak-vbeln.
SORT gi_vbap BY vbeln posnr.
SELECT lips~vbeln lips~posnr lips~vgbel lips~vgpos lips~lfimg
FROM lips
INNER JOIN likp
ON lips~vbeln = likp~vbeln
INNER JOIN vbuk
ON likp~vbeln = vbuk~vbeln
INTO CORRESPONDING FIELDS OF TABLE gi_lips
FOR ALL ENTRIES IN gi_vbak
WHERE likp~vbeln = gi_vbak-vbeln
AND vbuk~wbstk = 'C'.
SORT gi_lips BY vgbel vgpos.
LOOP AT gi_lips.
MOVE-CORRESPONDING gi_lips TO gi_lips1.
AT END OF vgbel.
COLLECT gi_lips1.
ENDAT.
CLEAR:gi_lips,gi_lips1.
ENDLOOP.
DATA :gv_vtweg LIKE vbak-vtweg,
gv_auart LIKE vbak-auart.
LOOP AT gi_vbap.
MOVE:gi_vbap-vbeln TO gi_out-vbeln.
READ TABLE gi_vbak WITH KEY vbeln = gi_vbap-vbeln.
IF sy-subrc = 0.
gi_out-erdat = gi_vbak-erdat+0(6).
ENDIF.
READ TABLE gi_lips1 WITH KEY vgbel = gi_vbap-vbeln.
IF sy-subrc = 0.
gi_out-lfimg = gi_vbap-kwmeng - gi_lips1-lfimg.
ELSE.
gi_out-lfimg = gi_vbap-kwmeng.
ENDIF.
SELECT SINGLE tvkbt~bezei vbak~vtweg vbak~auart
FROM tvkbt
INNER JOIN vbak
ON vbak~vkbur = tvkbt~vkbur
INTO (gi_out-bezei,gv_vtweg,gv_auart)
WHERE vbak~vbeln = gi_vbap-vbeln.
IF sy-subrc = 0.
IF gv_vtweg = '01' OR ( gv_vtweg = '00' AND gv_auart = 'ZQX2' ) .
CLEAR gi_out-bezei.
gi_out-bezei = '公司销售'.
ENDIF.
ELSE.
gi_out-bezei = '其它'.
ENDIF.
CONCATENATE gi_vbap-vbeln gi_vbap-posnr INTO gv_name.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = '0006'
language = sy-langu
name = gv_name
object = 'VBBP'
TABLES
lines = gi_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
READ TABLE gi_lines INDEX 2.
IF sy-subrc = 0.
gi_out-cx = gi_lines-tdline.
TRANSLATE gi_out-cx TO UPPER CASE.
IF gi_out-cx NOT IN s_bezei.
* DELETE GI_LIST.
CONTINUE.
ENDIF.
ENDIF.
READ TABLE gi_lines INDEX 3.
IF sy-subrc = 0 .
TRANSLATE gi_lines-tdline TO UPPER CASE.
CONCATENATE gi_out-cx gi_lines-tdline INTO gi_out-cx.
ENDIF.
READ TABLE gi_lines INDEX 4.
IF sy-subrc = 0 .
TRANSLATE gi_lines-tdline TO UPPER CASE.
CONCATENATE gi_out-cx gi_lines-tdline INTO gi_out-cx.
ENDIF.
ENDIF.
IF gi_out-cx = ''.
gi_out-cx = 'OTHER'.
ENDIF.
APPEND gi_out.
ENDLOOP.
IF gi_out[] IS INITIAL.
MESSAGE i208(00) WITH '没有符合条件的数据!!'.
ENDIF.
SORT gi_out BY bezei erdat cx.
LOOP AT gi_out.
MOVE-CORRESPONDING gi_out TO gi_list.
MOVE-CORRESPONDING gi_out TO gi_s.
COLLECT gi_list.
COLLECT gi_s.
ENDLOOP.
ENDFORM. " FRM_GETDATA
*&---------------------------------------------------------------------*
*& Form FRM_DEAL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_deal_data .
ifts-fieldname = 'BEZEI' .ifts-coltext = '战区'. APPEND ifts TO ift.
CLEAR IFTS.
ifts-fieldname = 'ERDAT' .ifts-coltext = '月份'.APPEND ifts TO ift.
CLEAR IFTS.
ifts-fieldname = 'CBOX' .ifts-NO_OUT = 'X'. APPEND ifts TO ift.
CLEAR IFTS.
LOOP AT gi_list.
READ TABLE ift INTO ifts WITH KEY fieldname = gi_list-cx.
IF sy-subrc <> 0.
TRANSLATE gi_list-cx TO UPPER CASE.
CONDENSE gi_list-cx NO-GAPS.
ifts-fieldname = gi_list-cx .ifts-coltext = gi_list-cx.APPEND ifts TO ift. CLEAR IFTS.
ENDIF.
MODIFY gi_list.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ift
IMPORTING
ep_table = new_table.
ASSIGN new_table->* TO .
CREATE DATA new_ifts LIKE LINE OF .
ASSIGN new_ifts->* TO .
FIELD-SYMBOLS : TYPE ANY TABLE.
ASSIGN LOCAL COPY OF INITIAL LINE OF TO .
LOOP AT gi_list.
AT END OF erdat.
LOOP AT ift INTO ifts .
ASSIGN COMPONENT ifts-fieldname OF STRUCTURE TO .
CASE sy-tabix.
WHEN 1. = gi_list-bezei.
WHEN 2 . = gi_list-erdat.
WHEN 3 . = ''.
WHEN OTHERS.
READ TABLE gi_list WITH KEY bezei = gi_list-bezei erdat = gi_list-erdat cx = ifts-fieldname.
IF sy-subrc = 0.
= gi_list-lfimg.
ENDIF.
ENDCASE.
ENDLOOP .
INSERT INTO TABLE .
CLEAR .
ENDAT.
AT END OF bezei.
LOOP AT ift INTO ifts .
ASSIGN COMPONENT ifts-fieldname OF STRUCTURE TO .
CASE sy-tabix.
WHEN 1. = '汇总'.
WHEN 2 .
WHEN 3 . = 'C310'.
WHEN OTHERS.
READ TABLE gi_s WITH KEY bezei = gi_list-bezei cx = ifts-fieldname.
IF sy-subrc = 0.
= gi_s-lfimg.
ENDIF.
ENDCASE.
ENDLOOP .
INSERT INTO TABLE .
CLEAR .
ENDAT.
ENDLOOP.
ENDFORM. " FRM_DEAL_DATA
*&---------------------------------------------------------------------*
*& Form FRM_ALV_OUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_alv_out .
i_grid_title = '某车型各战区未发车总表'.
w_layo-zebra = 'X'.
w_layo-cwidth_opt = 'X'.
w_layo-INFO_FNAME = 'CBOX'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = w_layo
it_fieldcat_lvc = ift
i_bypassing_buffer = 'X'
i_default = 'X'
i_save = 'U'
i_grid_title = i_grid_title
* it_sort_lvc = gt_sort[]
TABLES
t_outtab =
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " FRM_ALV_OUT
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23495244/viewspace-693871/
,如需转载,请注明出处,否则将追究法律责任。