REPORT ZKEEHOMEWORK1 NO STANDARD PAGE HEADING
message-id zasia
LINE-SIZE 180
LINE-COUNT 60.
INCLUDE ZALV_EXAMPLE_INCL. "在下面
**********************Table Work Area***********************
TABLES: VBAK,VBAP,KNA1,VBEP.
*********************DATA TYPES*****************************
DATA: BEGIN OF WA,
MATKL LIKE VBAP-MATKL,
KUNNR LIKE KNA1-KUNNR,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
ARKTX LIKE VBAP-ARKTX,
NETPR LIKE VBAP-NETPR,
KWMENG LIKE VBAP-KWMENG,
EDATU LIKE VBEP-EDATU,
ADRNR LIKE KNA1-ADRNR,
NAME1 LIKE KNA1-NAME1,
END OF WA.
DATA: WA_TAB LIKE WA OCCURS 500 WITH HEADER LINE,
HF_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
HF_PF_STATUS TYPE SLIS_FORMNAME VALUE 'PF_STATUS',
TOP_OF_PAGE_EVENT TYPE slis_alv_event.
DATA: total type i.
*********************SELECTION SCREEN**************************
SELECT-OPTIONS ZVBELN FOR VBAK-VBELN MATCHCODE OBJECT VMVA.
PARAMETERS:ZERNAM LIKE VBAK-ERNAM OBLIGATORY default 'cura'.
SELECT-OPTIONS ZAUDAT FOR VBAK-AUDAT .
SELECT-OPTIONS ZKUNNR FOR VBAK-KUNNR.
PARAMETERS:List RADIOBUTTON GROUP AAA,
ALV RADIOBUTTON GROUP AAA,
Form RADIOBUTTON GROUP AAA Default 'X'.
**********************SELECTION SCREEN VALIDATION*************
*AT SELECTION-SCREEN.
* SELECT SINGLE * FROM VBAK WHERE VBELN IN ZVBELN AND ERNAM = ZERNAM.
* IF SY-SUBRC = 4.
* MESSAGE I000 WITH 'No Hit Found'.
* LEAVE SCREEN.
* ENDIF.
**********************MAIN PROCESS*****************************
START-OF-SELECTION.
* set pf-status 'ZKEEHOMEWORK1'.
PERFORM QUERY_DATA.
END-OF-SELECTION.
IF ALV = 'X'.
PERFORM ALV_DISPLAY.
ELSEIF Form = 'X'.
PERFORM PrintInForm.
ENDIF.
*********************Print Page Header*************************
* WRITE:0(10) 'SONum',10 SY-VLINE,
* 'ItemNo',20 SY-VLINE,
* 'MatNo',30 SY-VLINE,
* 'MatGrp',40 SY-VLINE,
* 'MatDesc',80 SY-VLINE,
* 81(8)'NetPrice',90 SY-VLINE,
* 91(8) 'Qty',100 SY-VLINE,
* 'DlyDate',115 SY-VLINE,
* 'CustNo',125 SY-VLINE,
* 'CustAddr',155 SY-VLINE,
* 156(20) 'CustName'.
* ULINE.
*********************Handling & Printing Hits*******************
* SORT WA_TAB BY MATKL KUNNR.
* LOOP AT WA_TAB.
* WRITE:wa_tab-vbeln,10 SY-VLINE,
* wa_tab-posnr,20 SY-VLINE,
* wa_tab-matnr,30 SY-VLINE,
* wa_tab-matkl,40 SY-VLINE,
* wa_tab-arktx,80 SY-VLINE,
* 81(8) wa_tab-netpr,90 SY-VLINE,
* 91(8) wa_tab-kwmeng,100 SY-VLINE,
* wa_tab-edatu,115 SY-VLINE,
* wa_tab-kunnr,125 SY-VLINE,
* wa_tab-adrnr,155 SY-VLINE,
* 156(20) wa_tab-name1.
*
* ULINE.
*
* AT END OF KUNNR.
* SUM.
* WRITE: 'Total Qty of customer[',wa_tab-KUNNR centered,']:',40(10)
*wa_tab-kwmeng.
* WRITE: /.
* ULINE.
* ENDAT.
* AT END OF MATKL.
* SUM.
* WRITE: 'Total Qty of MatGrp[',wa_tab-MATKL centered,']:',40(10)
*wa_tab-kwmeng.
* WRITE: /.
* ULINE.
* ENDAT.
*
* ENDLOOP.
****************************User Command Handling***********
FORM QUERY_DATA.
SELECT distinct VBAP~MATKL
KNA1~KUNNR
VBAP~VBELN
VBAP~POSNR
VBAP~MATNR
VBAP~ARKTX
VBAP~NETPR
VBAP~KWMENG
VBEP~EDATU
KNA1~ADRNR
KNA1~NAME1
into table wa_tab
FROM VBAP
INNER JOIN VBAK ON VBAP~VBELN = VBAK~VBELN
INNER JOIN VBEP ON VBAP~VBELN = VBEP~VBELN
AND VBEP~POSNR = VBAP~POSNR
INNER JOIN KNA1 ON VBAK~KUNNR = KNA1~KUNNR
WHERE VBAK~VBELN IN ZVBELN AND
VBAK~ERNAM = ZERNAM AND
VBAK~AUDAT IN ZAUDAT AND
VBAK~KUNNR IN ZKUNNR.
IF SY-SUBRC = 4.
MESSAGE I000 WITH 'No Hits Found'.
LEAVE SCREEN.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM ALV_DISPLAY *
*---------------------------------------------------------------------*
FORM ALV_DISPLAY.
**************************Initialization*********************
FIELDCAT_INIT: 'MATKL' 'X' 'group' '' '10' ''.
FIELDCAT_INIT: 'KUNNR' 'X' 'customer' '' '16' ''.
FIELDCAT_INIT: 'VBELN' '' 'sale order' '' '' ''.
FIELDCAT_INIT: 'POSNR' '' 'item' '' '6' ''.
FIELDCAT_INIT: 'MATNR' '' 'material ' '' '40' ''.
FIELDCAT_INIT: 'ARKTX' '' 'description' '' '' ''.
FIELDCAT_INIT: 'NETPR' '' 'price' 'X' '16' 'CURR'.
FIELDCAT_INIT: 'KWMENG' '' 'qunatity' 'X' '16' 'INT1'.
FIELDCAT_INIT: 'EDATU' '' 'DlyDate' '' '16' ''.
FIELDCAT_INIT: 'ADRNR' '' 'CustAddr' '' '50' ''.
FIELDCAT_INIT: 'NAME1' '' 'CustName' '' '40' ''.
****************************Set Sort Table*********************
IT_SORT_ROW-FIELDNAME = 'MATKL'.
IT_SORT_ROW-SPOS = 1.
IT_SORT_ROW-UP = 'X'.
IT_SORT_ROW-SUBTOT = 'X'.
APPEND IT_SORT_ROW TO IT_SORT.
IT_SORT_ROW-FIELDNAME = 'KUNNR'.
IT_SORT_ROW-SPOS = 2.
IT_SORT_ROW-UP = 'X'.
IT_SORT_ROW-SUBTOT = 'X'.
APPEND IT_SORT_ROW TO IT_SORT.
****************************Set Top-of-Page********************
TOP_OF_PAGE_EVENT-NAME = 'TOP_OF_PAGE'.
TOP_OF_PAGE_EVENT-FORM = 'TOP_OF_PAGE_CALLBACK'.
APPEND TOP_OF_PAGE_EVENT TO wtbl_event.
***************************Write Out***************************
g_repid = sy-repid.
gs_layout-zebra = 'X'.
gs_layout-f2code = '&ETA'.
gs_layout-detail_popup = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
I_CALLBACK_PF_STATUS_SET = HF_PF_STATUS
I_CALLBACK_USER_COMMAND = HF_USER_COMMAND
it_fieldcat = gt_fieldcat
is_layout = gs_layout
it_events = wtbl_event
it_sort = it_sort
TABLES
t_outtab = WA_TAB.
ENDFORM.
FORM PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
Set pf-Status 'STANDARD' EXCLUDING EXTAB.
ENDFORM.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&ETA'. "dobbleclick
READ CURRENT LINE.
set Parameter ID 'AUN' field WA_TAB-vbeln.
call transaction 'VA02' and skip first screen.
WHEN 'KEEPRT'.
PERFORM PrintInForm.
WHEN OTHERS.
MESSAGE I003 WITH R_UCOMM.
ENDCASE.
ENDFORM.
*---------------------------------------------------------------------*
* FORM top_of_page_callback *
*---------------------------------------------------------------------*
FORM top_of_page_callback.
WRITE:/ sy-repid, 35 sy-title, 85 sy-datum, sy-uzeit,
/ sy-uname, 85 'Page: ', sy-cpage.
ENDFORM.
*---------------------------------------------------------------------*
* FORM PrintInForm *
*---------------------------------------------------------------------*
FORM PrintInForm.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
form = 'ZKEEFORM_TEST'
language = '1'
EXCEPTIONS
canceled = 1
device = 2
form = 3
options = 4
unclosed = 5
mail_options = 6
OTHERS = 7.
SORT WA_TAB BY MATKL KUNNR.
Loop at wa_tab.
* CALL FUNCTION 'START_FORM'
* EXPORTING
* form = 'ZKEEFORM_TEST'
* language = '1'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'LOGO'
function = 'SET'
type = 'BODY'
window = 'LOGO'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'HEADER'
function = 'SET'
type = 'BODY'
window = 'HEADER'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'MAIN'
function = 'SET'
type = 'BODY'
window = 'MAIN'.
at last.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'TOTAL'
function = 'SET'
type = 'BODY'
window = 'FOOTER'.
CALL FUNCTION 'END_FORM'.
endat.
endloop.
CALL FUNCTION 'CLOSE_FORM'.
ENDFORM.
*-----------------------------------------------------------------------------------------------------
***INCLUDE ZALV_EXAMPLE_INCL .
*&---------------------------------------------------------------------*
*& Include ZMMRP_IN_01 *
*&---------------------------------------------------------------------*
*---------------------------------------------------------------------
* Forms
*---------------------------------------------------------------------
* Initialization fieldcatalog DEFINITION OF HEADING.
* Fieldnames and ref_fieldnames MUST be UPPER CASE !!
TYPE-POOLS: slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
it_sort TYPE slis_sortinfo_alv OCCURS 0.
DATA: g_repid LIKE sy-repid,
wstr_event TYPE slis_alv_event,
wtbl_event TYPE slis_t_event.
DATA: pos TYPE i VALUE 1.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: BEGIN OF it_sort_row OCCURS 0,
* spos(2) type n,
spos LIKE alvdynp-sortpos,
fieldname TYPE slis_fieldname,
tabname TYPE slis_fieldname,
* up(1) type c,
* down(1) type c,
* group(2) type c,
* subtot(1) type c,
up LIKE alvdynp-sortup,
down LIKE alvdynp-sortdown,
group LIKE alvdynp-grouplevel,
subtot LIKE alvdynp-subtotals,
comp(1) TYPE c,
expa(1) TYPE c,
obligatory(1) TYPE c,
END OF it_sort_row.
DEFINE fieldcat_init.
* USING rt_fieldcat TYPE slis_t_fieldcat_alv.
clear ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-key = &2.
ls_fieldcat-seltext_l = &3.
ls_fieldcat-seltext_m = &3.
* ls_fieldcat-seltext_s = &3.
* ls_fieldcat-outputlen = &4.
ls_fieldcat-do_sum = &4.
ls_fieldcat-outputlen = &5.
ls_fieldcat-datatype = &6.
append ls_fieldcat to gt_fieldcat.
pos = pos + 1.
END-OF-DEFINITION. "fieldcat_init
DEFINE fieldcat_init1.
* USING rt_fieldcat TYPE slis_t_fieldcat_alv.
clear ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-key = &2.
ls_fieldcat-seltext_l = &3.
ls_fieldcat-seltext_m = &3.
* ls_fieldcat-seltext_s = &3.
* ls_fieldcat-outputlen = &4.
ls_fieldcat-do_sum = &4.
ls_fieldcat-outputlen = &5.
ls_fieldcat-no_out = &6.
append ls_fieldcat to gt_fieldcat.
clear ls_fieldcat.
pos = pos + 1.
END-OF-DEFINITION. "fieldcat_init1
*&---------------------------------------------------------------------*
*& Form write_list_in_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_SHOW text
* -->P_0279 text
*----------------------------------------------------------------------*
FORM frm_write_list_in_alv TABLES i_table USING itabnam. "upper case
g_repid = sy-repid.
gs_layout-zebra = 'X'.
gs_layout-f2code = '&ETA'.
gs_layout-detail_popup = 'X'.
* gs_layout-COLWIDTH_OPTIMIZE = 'X'.
* gs_layout-box_fieldname = 'BOX'.
* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* i_program_name = g_repid
* i_internal_tabname = itabnam
* i_inclname = g_repid
* CHANGING
* ct_fieldcat = gt_fieldcat.
* PERFORM fieldcat_init USING gt_fieldcat[].
*
* it_sort_row-fieldname = 'MATKL'.
* it_sort_row-spos = 1.
* it_sort_row-up = 'X'.
* it_sort_row-subtot = 'X'.
* APPEND it_sort_row TO it_sort.
*
* it_sort_row-fieldname = 'BKLAS'.
* it_sort_row-spos = 2.
* it_sort_row-up = 'X'.
* it_sort_row-subtot = 'X'.
* APPEND it_sort_row TO it_sort.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
is_layout = gs_layout
it_events = wtbl_event
it_sort = it_sort
TABLES
t_outtab = i_table.
ENDFORM. "WRITE_LIST_IN_ALV
*&---------------------------------------------------------------------*
*& Form write_list_in_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_SHOW text
* -->P_0279 text
*----------------------------------------------------------------------*
FORM frm_write_list_in_alv0 TABLES i_table USING itabnam. "upper case
g_repid = sy-repid.
gs_layout-zebra = 'X'.
gs_layout-f2code = '&ETA'.
gs_layout-detail_popup = 'X'.
* gs_layout-box_fieldname = 'BOX'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = g_repid
i_internal_tabname = itabnam
i_inclname = g_repid
CHANGING
ct_fieldcat = gt_fieldcat.
* PERFORM fieldcat_init USING gt_fieldcat[].
* it_sort_row-fieldname = 'FGMATNR'.
* it_sort_row-spos = 1.
* it_sort_row-up = 'X'.
* it_sort_row-subtot = 'X'.
* APPEND it_sort_row TO it_sort.
*
* it_sort_row-fieldname = 'BKLAS'.
* it_sort_row-spos = 2.
* it_sort_row-up = 'X'.
* it_sort_row-subtot = 'X'.
* APPEND it_sort_row TO it_sort.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
is_layout = gs_layout
it_events = wtbl_event
it_sort = it_sort
TABLES
t_outtab = i_table.
ENDFORM. "WRITE_LIST_IN_ALV