Michael's profileAt world's endBlogGuestbookNetwork Tools Help

Blog


    July 29

    白领的真正含义!

      直到今天,我才真正明白"白领"是什么意思! 我们这些所谓的"白领",并非是指穿的衣服领子洗得比别人干净,也不是坐在办公室不用出来风吹日晒,而是指我们这种一身职业病,长期处于亚健康状太的,拿着不低不高的薪水,却每个月花得一个子不剩的,刚领了的工资,又"白领"了,所以叫"白领".拿着平均工资的人的存款都比我们多,为什么呀,因为我是"白领"呀,我们高不成低不就,我们满足于现状和穷于漫不经心! ---原创,转载请注明!
    July 14

    Alignment of Data in TOP-OF-PAGE in ALV GRID

    Many of us faced difficulty in aligning the data in TOP-OF-PAGE in ALV GRID using function modules, We are not able to right align the data or which ever position we want.

    Many unsolved threads on this topic!!!!!!!!!!.

    Here is a sample code which aligns the data according to the position specified.

    REPORT  alv_top_of_page.

    TABLES : t001.
    TYPE-POOLS: slis.

    DATA : w_repid LIKE sy-repid.
    TYPES : BEGIN OF ty_comp.
            INCLUDE STRUCTURE t001.
    TYPES : END OF ty_comp.

    DATA: wa_layout  TYPE slis_layout_alv.

    DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
          wa_fieldcat TYPE slis_fieldcat_alv.

    DATA : it_comp TYPE TABLE OF ty_comp.

    INITIALIZATION.
      w_repid = sy-repid.

    START-OF-SELECTION.

      SELECT * FROM t001 INTO TABLE it_comp.

    END-OF-SELECTION.

      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
          i_program_name         = w_repid
          i_internal_tabname     = 'IT_COMP'
          i_inclname             = w_repid
        CHANGING
          ct_fieldcat            = it_fieldcat[]
        EXCEPTIONS
          inconsistent_interface = 1
          program_error          = 2
          OTHERS                 = 3.

      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program          = w_repid
          i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
          is_layout                   = wa_layout
          it_fieldcat                 = it_fieldcat
        TABLES
          t_outtab                    = it_comp
        EXCEPTIONS
          program_error               = 1
          OTHERS                      = 2.

    *&---------------------------------------------------------------------*
    *&      Form  html_top_of_page
    *&---------------------------------------------------------------------*

    FORM html_top_of_page USING document TYPE REF TO cl_dd_document.

      DATA: text TYPE sdydo_text_element.

      CALL METHOD document->add_gap
        EXPORTING
          width = 100.
      text =  'Company Code Data'.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'HEADING'.

      CALL METHOD document->new_line.
      CALL METHOD document->new_line.
      CALL METHOD document->new_line.

      text = 'User Name : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.

      CALL METHOD document->add_gap
        EXPORTING
          width = 6.

      text = sy-uname.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.

      CALL METHOD document->add_gap
        EXPORTING
          width = 50.

      text = 'Date : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.

      CALL METHOD document->add_gap
        EXPORTING
          width = 6.

      text = sy-datum.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.

      CALL METHOD document->add_gap
        EXPORTING
          width = 50.

      text = 'Time : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.

      CALL METHOD document->add_gap
        EXPORTING
          width = 6.

      text = sy-uzeit.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.

      CALL METHOD document->new_line.
      CALL METHOD document->new_line.

    ENDFORM.                    "HTML_TOP_OF_PAGE

    July 13

    Cross table Demo2

    *&---------------------------------------------------------------------*
    *& Report  ZCROSS_TABLE_DEMO1
    *&
    *&---------------------------------------------------------------------*
    *& Author              : CHUNG NAM INTERNATIONAL CO.,LTD. MICHAELCHOW
    *& Creation Date       : 11.07.2009
    *& Program Type        : Executable Programs
    *& Logical DB          : [Nil]
    *& Text Elements
    *&   (Titles&Headers)  : [Nil]
    *&   (Selection Texts) : [Nil]
    *&   (Text symbols)    : [Nil]
    *& GUI Status          : [Nil] OR [Standard]
    *& Variants            : [Nil] OR Variant
    *& Message Class       : [Nil]
    *& Description         :
    *&
    *&---------------------------------------------------------------------*
    *& Modifications       :
    *& ID   Date        Programmer   Description
    *&
    *&---------------------------------------------------------------------*
    REPORT  ZCROSS_TABLE_DEMO1.
    TYPE-POOLS: slis.
    TABLES: mseg,mkpf.
    DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: sla TYPE slis_layout_alv ,
          ivariant LIKE disvariant,
          i_repid LIKE sy-repid ,
          i_excluding TYPE slis_t_extab.
    TYPES: BEGIN OF ty_sum ,
            werks LIKE mseg-werks ,
            matnr LIKE mseg-matnr ,
            lgort LIKE mseg-lgort ,
            bwart LIKE mseg-bwart ,
            menge LIKE mseg-menge ,
    END OF ty_sum.
    DATA : itab TYPE STANDARD TABLE OF ty_sum WITH HEADER LINE .
    DATA : hs_sum TYPE HASHED TABLE OF ty_sum
    WITH UNIQUE KEY werks matnr lgort bwart WITH HEADER LINE .
    DATA : itab_sum TYPE STANDARD TABLE OF ty_sum WITH HEADER LINE .
    TYPES: BEGIN OF ty_bwart ,
            bwart LIKE mseg-bwart ,
    END OF ty_bwart.
    DATA : hs_bwart TYPE HASHED TABLE OF ty_bwart
    WITH UNIQUE KEY bwart WITH HEADER LINE .
    DATA : itab_bwart TYPE STANDARD TABLE OF ty_bwart WITH HEADER LINE .
    FIELD-SYMBOLS: <f_fs1> ,
                   <f_out> TYPE STANDARD TABLE ,
                   <f_out_wa> .
    DATA: max_count TYPE i ,
          dy_out    TYPE REF TO data ,
          dy_out_wa TYPE REF TO data,
          xfc       TYPE lvc_s_fcat,
          ifc       TYPE lvc_t_fcat.
    DATA: c(2) TYPE n ,
          txt(20) TYPE c .
    SELECT-OPTIONS: s_mblnr FOR mseg-mblnr ,
                    s_budat FOR mkpf-budat .
    PARAMETERS:     p_sum AS CHECKBOX .
    START-OF-SELECTION.
    PERFORM getdata.
    PERFORM fixdata.
    IF p_sum = 'X'.
    PERFORM outdata.
    ELSE.
    PERFORM outdata2.
    ENDIF.
    *&---------------------------------------------------------------------*
    *&      Form  GETDATA
    *&---------------------------------------------------------------------*
    FORM getdata.
    SELECT werks matnr lgort bwart menge INTO TABLE itab
    FROM mkpf INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr AND
                                   mkpf~mjahr = mseg~mjahr
    WHERE mkpf~mblnr IN s_mblnr AND
            mkpf~budat IN s_budat .
    ENDFORM.                    " GETDATA
    *&---------------------------------------------------------------------*
    *&      Form  FIXDATA
    *&---------------------------------------------------------------------*
    FORM fixdata.
    DATA: index LIKE sy-tabix .
    LOOP AT itab.
        hs_sum = itab.
    COLLECT hs_sum.
        hs_bwart = itab-bwart .
    COLLECT hs_bwart.
    ENDLOOP.
    SORT hs_bwart.
      itab_bwart[] = hs_bwart[].
      itab_sum[] = hs_sum[].
    PERFORM creat_itab_out.
    LOOP AT itab_sum.
    ASSIGN COMPONENT 'WERKS' OF STRUCTURE <f_out_wa> TO <f_fs1>.
        <f_fs1> = itab_sum-werks.
    ASSIGN COMPONENT 'MATNR' OF STRUCTURE <f_out_wa> TO <f_fs1>.
        <f_fs1> = itab_sum-matnr.
    ASSIGN COMPONENT 'LGORT' OF STRUCTURE <f_out_wa> TO <f_fs1>.
        <f_fs1> = itab_sum-lgort.
    READ TABLE itab_bwart WITH KEY bwart = itab_sum-bwart .
    index = sy-tabix + 3.
    ASSIGN COMPONENT index OF STRUCTURE <f_out_wa> TO <f_fs1>.
        <f_fs1> = itab_sum-menge.
    ASSIGN COMPONENT 'LINE_SUM' OF STRUCTURE <f_out_wa> TO <f_fs1>.
        <f_fs1> = itab_sum-menge.
    COLLECT <f_out_wa> INTO <f_out>  .
    CLEAR <f_out_wa>.
    ENDLOOP.
    ENDFORM.                    " FIXDATA
    *&---------------------------------------------------------------------*
    *&      Form  outdata
    *&---------------------------------------------------------------------*
    FORM outdata.
    PERFORM fieldcat_init .
      sla-colwidth_optimize = 'X'.
      sla-zebra             = 'X'.
      i_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
                i_callback_program      = i_repid
                it_fieldcat             = gd_fieldcat[]
                i_save                  = 'A'
                is_variant              = ivariant
                is_layout               = sla
                it_excluding            = i_excluding
    *            i_callback_user_command = 'USER_COMMAND'
    TABLES
                t_outtab                = itab_sum
    EXCEPTIONS
                program_error           = 1
    OTHERS                  = 2.
    ENDFORM.                    " outdata
    *---------------------------------------------------------------------*
    *       FORM fieldcat_init                                            *
    *---------------------------------------------------------------------*
    FORM fieldcat_init .
    PERFORM frm_catlg_set USING: 'WERKS' 'WERKS' 'X' ,
    'MATNR' 'MATNR' 'X' ,
    'LGORT' 'LGORT' 'X' ,
    'BWART' 'BWART' '' ,
    'MENGE' 'MENGE' '' .
    ENDFORM.                    "fieldcat_init
    *---------------------------------------------------------------------*
    *       FORM frm_catlg_set                                            *
    *---------------------------------------------------------------------*
    FORM frm_catlg_set USING p_field
                             p_text
                             p_key.
    DATA: ls_fieldcat TYPE slis_fieldcat_alv.
      ls_fieldcat-fieldname     = p_field.
      ls_fieldcat-seltext_l     = p_text.
      ls_fieldcat-key           = p_key.
    IF p_field = 'LINE_SUM'.
        ls_fieldcat-emphasize  = 'C700'.
    ENDIF.
    APPEND ls_fieldcat TO gd_fieldcat .
    CLEAR ls_fieldcat .
    ENDFORM.                    "frm_catlg_set
    *&--------------------------------------------------------------------*
    *&      Form  user_command
    *&--------------------------------------------------------------------*
    *FORM user_command USING r_ucomm LIKE sy-ucomm
    *                    rs_selfield TYPE slis_selfield.
    *  READ TABLE itab INDEX rs_selfield-tabindex.
    *  CASE r_ucomm.
    *    WHEN '&IC1'. "双击
    *
    *    WHEN 'EXIT'.
    *      LEAVE PROGRAM.
    *  ENDCASE.
    **  rs_selfield-refresh = 'X'.  "自动刷新
    *ENDFORM. "user_com
    *---------------------------------------------------------------------*
    *       FORM outdata2                                                 *
    *---------------------------------------------------------------------*
    FORM outdata2.
    PERFORM fieldcat_init2 .
      sla-colwidth_optimize = 'X'.
      sla-zebra             = 'X'.
      i_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
                i_callback_program      = i_repid
                it_fieldcat             = gd_fieldcat[]
                i_save                  = 'A'
                is_variant              = ivariant
                is_layout               = sla
                it_excluding            = i_excluding
    TABLES
                t_outtab                = <f_out>
    EXCEPTIONS
                program_error           = 1
    OTHERS                  = 2.
    ENDFORM.                    " outdata
    *---------------------------------------------------------------------*
    *       FORM fieldcat_init2                                           *
    *---------------------------------------------------------------------*
    FORM fieldcat_init2 .
    CLEAR c .
    PERFORM frm_catlg_set USING: 'WERKS' 'WERKS' 'X' ,
    'MATNR' 'MATNR' 'X' ,
    'LGORT' 'LGORT' 'X' .
    LOOP AT hs_bwart .
    c = c + 1.
    CONCATENATE 'MENGE' c INTO txt.
    PERFORM frm_catlg_set USING: txt hs_bwart-bwart '' .
    ENDLOOP.
    PERFORM frm_catlg_set USING: 'LINE_SUM' 'SUM' '' .
    ENDFORM.                    "fieldcat_init
    *---------------------------------------------------------------------*
    *       FORM creat_itab_out                                           *
    *---------------------------------------------------------------------*
    FORM creat_itab_out.
    CLEAR c.
    PERFORM build_itab_stru USING: 'WERKS' 'MSEG' 'WERKS' ,
    'MATNR' 'MSEG' 'MATNR' ,
    'LGORT' 'MSEG' 'LGORT' .
    LOOP AT hs_bwart.
    c = c + 1.
    CONCATENATE 'MENGE' c INTO txt.
    PERFORM build_itab_stru USING: txt 'MSEG' 'MENGE' .
    ENDLOOP.
    PERFORM build_itab_stru USING: 'LINE_SUM' 'MSEG' 'MENGE' .
    CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
                      it_fieldcatalog = ifc
    IMPORTING
                      ep_table        = dy_out.
    ASSIGN dy_out->* TO <f_out>.
    CREATE DATA dy_out_wa LIKE LINE OF <f_out>.
    ASSIGN dy_out_wa->* TO <f_out_wa>.
    ENDFORM.
    *---------------------------------------------------------------------*
    *       FORM build_itab_stru                                          *
    *---------------------------------------------------------------------*
    FORM build_itab_stru USING fdname ref_t ref_f.
      xfc-fieldname = fdname .
      xfc-ref_table = ref_t.
      xfc-ref_field = ref_f.
    APPEND xfc TO ifc.
    ENDFORM.

    Cross Table Demo1

    *&---------------------------------------------------------------------*
    *& Report  ZCROSS_TABLE_DEMO
    *&
    *&---------------------------------------------------------------------*
    *& Author              : CHUNG NAM INTERNATIONAL CO.,LTD. MICHAELCHOW
    *& Creation Date       : 11.07.2009
    *& Program Type        : Executable Programs
    *& Logical DB          : [Nil]
    *& Text Elements
    *&   (Titles&Headers)  : [Nil]
    *&   (Selection Texts) : [Nil]
    *&   (Text symbols)    : [Nil]
    *& GUI Status          : [Nil] OR [Standard]
    *& Variants            : [Nil] OR Variant
    *& Message Class       : [Nil]
    *& Description         :
    *&
    *&---------------------------------------------------------------------*
    *& Modifications       :
    *& ID   Date        Programmer   Description
    *&
    *&---------------------------------------------------------------------*
    REPORT  ZCROSS_TABLE_DEMO.
    TYPE-POOLS: slis.
    TABLES: mseg,mkpf.
    DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: sla TYPE slis_layout_alv ,
          ivariant LIKE disvariant,
          i_repid LIKE sy-repid ,
          i_excluding TYPE slis_t_extab.
    TYPES: BEGIN OF ty_sum ,
            werks LIKE mseg-werks ,
            matnr LIKE mseg-matnr ,
            lgort LIKE mseg-lgort ,
            bwart LIKE mseg-bwart ,
            menge LIKE mseg-menge ,
    END OF ty_sum.
    DATA : itab TYPE STANDARD TABLE OF ty_sum WITH HEADER LINE .
    DATA : hs_sum TYPE HASHED TABLE OF ty_sum
    WITH UNIQUE KEY werks matnr lgort bwart WITH HEADER LINE .
    DATA : itab_sum TYPE STANDARD TABLE OF ty_sum WITH HEADER LINE .
    DATA: BEGIN OF itab_out OCCURS 0,
            werks LIKE mseg-werks ,
            matnr LIKE mseg-matnr ,
            lgort LIKE mseg-lgort ,
            menge01 TYPE i        ,
            menge02 TYPE i        ,
            menge03 TYPE i        ,
            menge04 TYPE i        ,
            menge05 TYPE i        ,
            menge06 TYPE i        ,
            menge07 TYPE i        ,
            menge08 TYPE i        ,
            menge09 TYPE i        ,
            menge10 TYPE i        ,
            menge11 TYPE i        ,
            menge12 TYPE i        ,
            menge13 TYPE i        ,
            menge14 TYPE i        ,
            menge15 TYPE i        ,
            menge16 TYPE i        ,
            menge17 TYPE i        ,
            menge18 TYPE i        ,
            menge19 TYPE i        ,
            menge20 TYPE i        ,
            menge21 TYPE i        ,
            menge22 TYPE i        ,
            menge23 TYPE i        ,
            menge24 TYPE i        ,
            menge25 TYPE i        ,
            menge26 TYPE i        ,
            line_sum TYPE i       ,
    END OF itab_out.
    TYPES: BEGIN OF ty_bwart ,
            bwart LIKE mseg-bwart ,
    END OF ty_bwart.
    DATA : hs_bwart TYPE HASHED TABLE OF ty_bwart
    WITH UNIQUE KEY bwart WITH HEADER LINE .
    DATA : itab_bwart TYPE STANDARD TABLE OF ty_bwart WITH HEADER LINE .
    FIELD-SYMBOLS: <f_fs1> ,
                   <f_fs2>.
    DATA: max_count TYPE i .
    SELECT-OPTIONS: s_mblnr FOR mseg-mblnr ,
                    s_budat FOR mkpf-budat .
    PARAMETERS:     p_sum AS CHECKBOX .
    START-OF-SELECTION.
    PERFORM getdata.
    PERFORM fixdata.
    IF p_sum = 'X'.
    PERFORM outdata.
    ELSE.
    PERFORM outdata2.
    ENDIF.
    *&---------------------------------------------------------------------*
    *&      Form  GETDATA
    *&---------------------------------------------------------------------*
    FORM getdata.
    SELECT werks matnr lgort bwart menge INTO TABLE itab
    FROM mkpf INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr AND
                                   mkpf~mjahr = mseg~mjahr
    WHERE mkpf~mblnr IN s_mblnr AND
            mkpf~budat IN s_budat .
    ENDFORM.                    " GETDATA
    *&---------------------------------------------------------------------*
    *&      Form  FIXDATA
    *&---------------------------------------------------------------------*
    FORM fixdata.
    DATA: index LIKE sy-tabix .
    LOOP AT itab.
        hs_sum = itab.
    COLLECT hs_sum.
        hs_bwart = itab-bwart .
    COLLECT hs_bwart.
    ENDLOOP.
    SORT hs_bwart.
      itab_bwart[] = hs_bwart[].
      itab_sum[] = hs_sum[].
    LOOP AT itab_sum.
        itab_out-werks = itab_sum-werks .
        itab_out-matnr = itab_sum-matnr .
        itab_out-lgort = itab_sum-lgort .
    READ TABLE itab_bwart WITH KEY bwart = itab_sum-bwart .
    index = sy-tabix + 3.
    ASSIGN COMPONENT index OF STRUCTURE itab_out TO <f_fs1>.
        <f_fs1> = itab_sum-menge.
        itab_out-line_sum = itab_sum-menge.
    COLLECT itab_out.
    CLEAR itab_out.
    ENDLOOP.
    ENDFORM.                    " FIXDATA
    *&---------------------------------------------------------------------*
    *&      Form  outdata
    *&---------------------------------------------------------------------*
    FORM outdata.
    PERFORM fieldcat_init .
      sla-colwidth_optimize = 'X'.
      sla-zebra             = 'X'.
      i_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
                i_callback_program      = i_repid
                it_fieldcat             = gd_fieldcat[]
                i_save                  = 'A'
                is_variant              = ivariant
                is_layout               = sla
                it_excluding            = i_excluding
                i_callback_user_command = 'USER_COMMAND'
    TABLES
                t_outtab                = itab_sum
    EXCEPTIONS
                program_error           = 1
    OTHERS                  = 2.
    ENDFORM.                    " outdata
    *---------------------------------------------------------------------*
    *       FORM fieldcat_init                                            *
    *---------------------------------------------------------------------*
    FORM fieldcat_init .
    PERFORM frm_catlg_set USING: 'WERKS' 'WERKS' 'X' ,
    'MATNR' 'MATNR' 'X' ,
    'LGORT' 'LGORT' 'X' ,
    'BWART' 'BWART' 'X' ,
    'MENGE' 'MENGE' '' .
    ENDFORM.                    "fieldcat_init
    *---------------------------------------------------------------------*
    *       FORM frm_catlg_set                                            *
    *---------------------------------------------------------------------*
    FORM frm_catlg_set USING p_field
                             p_text
                             p_key.
    DATA: ls_fieldcat TYPE slis_fieldcat_alv.
      ls_fieldcat-fieldname     = p_field.
      ls_fieldcat-seltext_l     = p_text.
      ls_fieldcat-key           = p_key.
    IF p_field = 'LINE_SUM'.
        ls_fieldcat-emphasize  = 'C700'.
    ENDIF.
    APPEND ls_fieldcat TO gd_fieldcat .
    CLEAR ls_fieldcat .
    ENDFORM.                    "frm_catlg_set
    *&--------------------------------------------------------------------*
    *&      Form  user_command
    *&--------------------------------------------------------------------*
    FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
    READ TABLE itab INDEX rs_selfield-tabindex.
    CASE r_ucomm.
    WHEN '&IC1'. "双击
    WHEN 'EXIT'.
    LEAVE PROGRAM.
    ENDCASE.
      rs_selfield-refresh = 'X'.  "自动刷新
    ENDFORM. "user_com
    *---------------------------------------------------------------------*
    *       FORM outdata2                                                 *
    *---------------------------------------------------------------------*
    FORM outdata2.
    PERFORM fieldcat_init2 .
      sla-colwidth_optimize = 'X'.
      sla-zebra             = 'X'.
      i_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
                i_callback_program      = i_repid
                it_fieldcat             = gd_fieldcat[]
                i_save                  = 'A'
                is_variant              = ivariant
                is_layout               = sla
                it_excluding            = i_excluding
                i_callback_user_command = 'USER_COMMAND'
    TABLES
                t_outtab                = itab_out
    EXCEPTIONS
                program_error           = 1
    OTHERS                  = 2.
    ENDFORM.                    " outdata
    *---------------------------------------------------------------------*
    *       FORM fieldcat_init2                                           *
    *---------------------------------------------------------------------*
    FORM fieldcat_init2 .
    DATA: c(2) TYPE n ,
            txt(20) TYPE c .
    PERFORM frm_catlg_set USING: 'WERKS' 'WERKS' 'X' ,
    'MATNR' 'MATNR' 'X' ,
    'LGORT' 'LGORT' 'X' .
    LOOP AT hs_bwart .
    c = c + 1.
    CONCATENATE 'MENGE' c INTO txt.
    PERFORM frm_catlg_set USING: txt hs_bwart-bwart '' .
    ENDLOOP.
    PERFORM frm_catlg_set USING: 'LINE_SUM' 'SUM' '' .
    ENDFORM.                    "fieldcat_init