WRITE,ALV与FORM不同的输出方式

来源:互联网 发布:大数据思维与决策equp 编辑:程序博客网 时间:2024/06/03 19:28

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