版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wtxhai/article/details/52934129
REPORT zsdrp301.
********************************
* INNITIALIZATION
********************************
TABLES : vbak,vbap,kna1,mara,tvagt,cdhdr,cdpos.
TYPES : BEGIN OF ltype_vbkp,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
ernam TYPE vbak-ernam,
vbtyp TYPE vbak-vbtyp,
auart TYPE vbak-auart,
vkorg TYPE vbak-vkorg,
vtweg TYPE vbak-vtweg,
spart TYPE vbak-spart,
vkgrp TYPE vbak-vkgrp,
vkbur TYPE vbak-vkbur,
ihrez TYPE vbak-ihrez,
bname TYPE vbak-bname,
kunnr TYPE vbak-kunnr,
zzoter TYPE vbak-zzoter,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
arktx TYPE vbap-arktx,
pstyv TYPE vbap-pstyv,
posar TYPE vbap-posar,
abgru TYPE vbap-abgru,
netwr TYPE vbap-netwr,
waerk TYPE vbap-waerk,
kwmeng TYPE vbap-kwmeng,
vrkme TYPE vbap-vrkme,
END OF ltype_vbkp.
TYPES : BEGIN OF ltype_kna1,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
END OF ltype_kna1.
TYPES : BEGIN OF ltype_mara,
matnr TYPE mara-matnr,
normt TYPE mara-normt,
END OF ltype_mara.
TYPES : BEGIN OF ltype_tvagt,
abgru TYPE tvagt-abgru,
bezei TYPE tvagt-bezei,
END OF ltype_tvagt.
TYPES : BEGIN OF ltype_cdpos,
objectid TYPE cdpos-objectid,
changenr TYPE cdpos-changenr,
END OF ltype_cdpos.
TYPES : BEGIN OF ltype_cdhdr,
objectid TYPE cdhdr-objectid,
udate TYPE cdhdr-udate,
END OF ltype_cdhdr.
TYPES : BEGIN OF ltype_middle,
objectid TYPE cdpos-objectid,
END OF ltype_middle.
DATA : lt_middle TYPE TABLE OF ltype_middle,
ls_middle LIKE LINE OF lt_middle.
DATA : lt_vbkp TYPE TABLE OF ltype_vbkp,
ls_vbkp LIKE LINE OF lt_vbkp.
DATA : lt_kna1 TYPE TABLE OF ltype_kna1,
ls_kna1 LIKE LINE OF lt_kna1.
DATA : lt_mara TYPE TABLE OF ltype_mara,
ls_mara LIKE LINE OF lt_mara.
DATA : lt_tvagt TYPE TABLE OF ltype_tvagt,
ls_tvagt LIKE LINE OF lt_tvagt.
DATA : lt_cdpos TYPE TABLE OF ltype_cdpos,
ls_cdpos LIKE LINE OF lt_cdpos.
DATA : lt_cdhdr TYPE TABLE OF ltype_cdhdr,
ls_cdhdr LIKE LINE OF lt_cdhdr.
DATA : lt_display TYPE TABLE OF zssdrp301_struc_list,
ls_display LIKE LINE OF lt_display.
********************************
* SELECTION-SCREEN
********************************
SELECTION-SCREEN BEGIN OF BLOCK blk01 WITH FRAME.
SELECT-OPTIONS :
m_vbeln FOR vbap-vbeln,
m_posnr FOR vbap-posnr,
m_erdat FOR vbak-erdat,
m_vkorg FOR vbak-vkorg,
m_abgru FOR vbap-abgru.
SELECTION-SCREEN END OF BLOCK blk01.
IF m_vbeln IS INITIAL AND m_abgru IS INITIAL.
MESSAGE 'Please input selection option' TYPE 'E'.
ELSE.
PERFORM frm_get_data.
PERFORM frm_alv_display.
ENDIF.
********************************
* START OF SELECTION
********************************
FORM frm_get_data.
CLEAR lt_display[].
SELECT
t1~vbeln
t1~erdat
t1~ernam
t1~vbtyp
t1~auart
t1~vkorg
t1~vtweg
t1~spart
t1~vkgrp
t1~vkbur
t1~ihrez
t1~bname
t1~kunnr
t1~zzoter
t2~posnr
t2~matnr
t2~matkl
t2~arktx
t2~pstyv
t2~posar
t2~abgru
t2~netwr
t2~waerk
t2~kwmeng
t2~vrkme
FROM vbak AS t1 INNER JOIN vbap AS t2 ON t1~vbeln = t2~vbeln
INTO CORRESPONDING FIELDS OF TABLE lt_display
WHERE t1~vbeln IN m_vbeln
AND t1~erdat IN m_erdat
AND t1~vkorg IN m_vkorg
AND t2~posnr IN m_posnr
AND t2~abgru IN m_abgru.
IF lt_display IS NOT INITIAL.
CLEAR lt_kna1[].
SELECT
kunnr
name1
FROM kna1
INTO CORRESPONDING FIELDS OF TABLE lt_kna1
FOR ALL ENTRIES IN lt_display
WHERE kunnr = lt_display-kunnr.
CLEAR lt_mara[].
SELECT
matnr
normt
FROM mara
INTO CORRESPONDING FIELDS OF TABLE lt_mara
FOR ALL ENTRIES IN lt_display
WHERE matnr = lt_display-matnr.
CLEAR lt_tvagt[].
SELECT
abgru
bezei
FROM tvagt
INTO CORRESPONDING FIELDS OF TABLE lt_tvagt
FOR ALL ENTRIES IN lt_display
WHERE abgru = lt_display-abgru
AND spras = sy-langu.
LOOP AT lt_display INTO ls_display.
ls_middle-objectid = ls_display-vbeln.
APPEND ls_middle TO lt_middle.
ENDLOOP.
IF lt_middle IS NOT INITIAL .
CLEAR lt_cdpos.
SELECT
objectid
changenr
FROM cdpos
INTO CORRESPONDING FIELDS OF TABLE lt_cdpos
FOR ALL ENTRIES IN lt_middle
WHERE objectid = lt_middle-objectid
AND fname = 'ABGRU'.
ENDIF.
IF lt_cdpos IS NOT INITIAL.
SELECT
objectid
udate
FROM cdhdr
INTO CORRESPONDING FIELDS OF TABLE lt_cdhdr
FOR ALL ENTRIES IN lt_cdpos
WHERE objectid = lt_cdpos-objectid.
ENDIF.
ENDIF.
CLEAR ls_display.
LOOP AT lt_display INTO ls_display.
CLEAR ls_kna1.
READ TABLE lt_kna1 INTO ls_kna1 WITH KEY kunnr = ls_display-kunnr.
ls_display-name1 = ls_kna1-name1.
CLEAR ls_mara.
READ TABLE lt_mara INTO ls_mara WITH KEY matnr = ls_display-matnr.
ls_display-normt = ls_mara-normt.
CLEAR ls_tvagt.
READ TABLE lt_tvagt INTO ls_tvagt WITH KEY abgru = ls_display-abgru.
ls_display-bezei = ls_tvagt-bezei.
CLEAR ls_cdhdr.
CLEAR ls_middle.
* ls_middle-objectid = ls_display-vbeln.
READ TABLE lt_cdhdr INTO ls_cdhdr WITH KEY objectid = ls_display-vbeln.
IF ls_display-abgru IS NOT INITIAL.
ls_display-udate = ls_cdhdr-udate.
ENDIF.
MODIFY lt_display FROM ls_display.
ENDLOOP.
ENDFORM. "frm_get_data
*&---------------------------------------------------------------------*
*& Form frm_alv_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_alv_display .
DATA : ls_layout TYPE slis_layout_alv.
DATA : lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA : l_repid TYPE sy-repid.
PERFORM frm_build_fieldcat CHANGING lt_fieldcat.
PERFORM frm_build_layout CHANGING ls_layout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = lt_fieldcat
is_layout = ls_layout
* i_callback_user_command = 'FRM_USER_COMMAND'
* i_callback_pf_status_set = 'FRM_PF_STATUS_SET'
TABLES
t_outtab = lt_display.
ENDFORM. " FRM_ALV_DISPLAY
*&---------------------------------------------------------------------*
*& Form frm_build_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CT_FIELDCAT text
*----------------------------------------------------------------------*
FORM frm_build_fieldcat CHANGING ct_fieldcat TYPE slis_t_fieldcat_alv.
DATA : ls_fieldcat LIKE LINE OF ct_fieldcat.
REFRESH ct_fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSSDRP301_STRUC_LIST'
CHANGING
ct_fieldcat = ct_fieldcat.
* DELETE ct_fieldcat WHERE fieldname = 'PLANR'.
* LOOP AT ct_fieldcat INTO ls_fieldcat.
*
* CASE ls_fieldcat-fieldname.
* WHEN 'MNG01'.
* IF sy-langu = '1'.
* ls_fieldcat-seltext_l = '工单数量'.
* ELSE.
* ls_fieldcat-seltext_l = 'Order quantity'.
* ls_fieldcat-seltext_m = 'Order quantity'.
* ls_fieldcat-seltext_s = 'Order quantity'.
* ENDIF.
* ENDCASE.
*
* MODIFY ct_fieldcat FROM ls_fieldcat TRANSPORTING seltext_l seltext_m seltext_s.
*
* ENDLOOP.
ENDFORM. "frm_build_fieldcat
*&---------------------------------------------------------------------*
*& Form frm_build_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->CS_LAYOUT text
*----------------------------------------------------------------------*
FORM frm_build_layout CHANGING cs_layout TYPE slis_layout_alv.
CLEAR cs_layout.
MOVE 'X' TO cs_layout-detail_popup.
MOVE 'X' TO cs_layout-colwidth_optimize.
MOVE 'COLOR' TO cs_layout-info_fieldname.
* MOVE 'SELECTED' TO cs_layout-box_fieldname.
ENDFORM. " FRM_BUILD_LAYOUT