Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Using macro sum, date is displaying wrong.....

Former Member
0 Kudos

Hi Experts,

I am using macros in ALV like :

define m_fieldcat.

add 1 to w_fcat-col_pos.

w_fcat-fieldname = &1.

w_fcat-seltext_m = &2.

w_fcat-outputlen = &3.

w_fcat-decimals_out = &4.

w_fcat-do_sum(1) = &5.

w_fcat-ref_tabname = &6.

Data : w_fcat type slis_fieldcat_alv,

lt_fieldcat type slis_t_fieldcat_alv.

FORM f_cat .

m_fieldcat 'SRNO' 'Serial No' '9' '' '' 'IT_OUT'.

m_fieldcat 'VBELN' 'Order No' '10' '' '' 'IT_OUT'.

m_fieldcat 'POSNR' 'Item' '4' '' '' 'IT_OUT'.

m_fieldcat 'ERDAT' 'Order Date' '10' '' '' 'IT_OUT'.

m_fieldcat 'MATNR' 'Material No' '18' '' '' 'IT_OUT'.

m_fieldcat 'ARKTX' 'Material Description' '40' '' '' 'IT_OUT'.

m_fieldcat 'ORD_QTY' 'Order Qty' '10' '0' 'X' 'IT_OUT'.

m_fieldcat 'PEND_QTY' 'Pending Qty' '11' '0' 'X' 'IT_OUT'.

m_fieldcat 'NETWR' 'Net Value' '10' '' 'X' 'IT_OUT'.

m_fieldcat 'KUNNR' 'Customer' '10' '' '' 'IT_OUT'.

m_fieldcat 'NAME1' 'Cust Name' '30' '' '' 'IT_OUT'.

But the date format is comming like 20060214, i want 14.02.2006 and Sum of Order Qty is not showing. Pl. guide me.

Yusuf

Message was edited by:

YUSUF BHORI

4 REPLIES 4

Former Member
0 Kudos

Yusuf,

In the internal table which contains the data of the report, when you are appending entries into the table :

for date do this

WRITE wa_data-erdat to wa_ouput-erdat USING EDIT MASK 'MM/DD/YYYY'.

This should solve the problem. There seems to nothing wrong with macro here.

0 Kudos

Hi Srihari,

Thanks,

I tried but not solved in ALV report, it will work with write statement. And slao what about SUM ? Total is not showing with macro.

Yusuf

Message was edited by:

YUSUF BHORI

0 Kudos

What is the data type you have used for the two fields for which you want totals,

They should be integers or decimals.

Also, please make sure that you have not set the flag for 'NO_TOTALLINE' in the layout settings.

If you want to enable summing for NUMC fields, you must set the flag 'NUMC_TOTAL' in the layout settings.

Thanks,

Srihari

Clemenss
Active Contributor
0 Kudos

Hi Yusuf,

it is not recommended to create a field catalog manually.

You may try these two format to create an ALV field catalog automatically for any internal table. If you need texts other than defined in data dictionary you can use the third form as a template:



*&---------------------------------------------------------------------*
*&      Form  SAPGUI_PROGRESS_INDICATOR
*&---------------------------------------------------------------------*
FORM sapgui_progress_indicator
  USING
  p_text                                  TYPE c
  p_share                                 TYPE sytfill
  p_total                                 TYPE sytfill.
  STATICS:
    lv_time                               LIKE sy-uzeit,
    lv_txt                                TYPE text80.
  DATA:
    lv_seconds_since_lastcall             TYPE sytfill,
    lv_share                              TYPE p,
    lv_pct                                TYPE sytfill,
    lv_txt1                               TYPE tline-tdline,
    lv_txt2                               TYPE tline-tdline.
  GET TIME.
  lv_seconds_since_lastcall               = sy-uzeit - lv_time.
  CHECK lv_seconds_since_lastcall         >= 1 OR lv_txt <> p_text.
  lv_txt                                  = p_text.
  lv_time                                 = sy-uzeit.
  IF p_total                              > 0.
    lv_share                              = p_share.
    lv_share                              = p_share.
    lv_pct                                = lv_share * 100 / p_total.
    WRITE p_share TO lv_txt1 LEFT-JUSTIFIED.
    WRITE p_total TO lv_txt2 LEFT-JUSTIFIED.
    CONCATENATE
      p_text lv_txt1 '/' lv_txt2 INTO lv_txt1 SEPARATED BY space.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        percentage = lv_pct
        text       = lv_txt1.
  ELSE.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
         EXPORTING
*             percentage                  = lv_pct
              text                        = p_text.
  ENDIF.                               " p_total > 0.
ENDFORM.                               " SAPGUI_PROGRESS_INDICATOR
*&---------------------------------------------------------------------*
*&      Form  ALV_FIELDCAT_FOR_ITAB
*&---------------------------------------------------------------------*
*       Feldkatalog from (arbitrary) internal Table (c) Clemens Li
*       * build field catalog from        type description
*----------------------------------------------------------------------*
FORM alv_fieldcat_for_itab                                  "#EC *
  TABLES   pt_outtab                      TYPE table        "#EC *
  CHANGING pt_alv_fieldcat                TYPE slis_t_fieldcat_alv."#EC *
  DATA:
    lv_desc                               TYPE sydes_desc,
    ls_alv_fieldcat                       TYPE slis_fieldcat_alv,
    lv_longfield                          TYPE text80."CRM<=R/3 fname.
  FIELD-SYMBOLS:
    <typeinfo>                            TYPE sydes_typeinfo,
    <nameinfo>                            TYPE sydes_nameinfo.
  DESCRIBE FIELD pt_outtab INTO lv_desc.                    "#EC *

  LOOP AT lv_desc-types
      ASSIGNING <typeinfo>
      WHERE NOT idx_name IS INITIAL
        AND table_kind IS INITIAL "no entries for deep table like color
        AND back                          = 1. "top-level-entries only.
    READ TABLE lv_desc-names INDEX <typeinfo>-idx_name
      ASSIGNING <nameinfo>.
    CHECK <nameinfo>-name                 <> 'INCLUDE'.
    ls_alv_fieldcat-fieldname             = <nameinfo>-name.
    WHILE NOT <nameinfo>-continue IS INITIAL.
      ADD 1 TO <typeinfo>-idx_name.
      READ TABLE lv_desc-names INDEX <typeinfo>-idx_name
        ASSIGNING <nameinfo>.
      CONCATENATE
        ls_alv_fieldcat-fieldname
        <nameinfo>-name
        INTO ls_alv_fieldcat-fieldname.
    ENDWHILE." not <nameinfo>-continue IS INITIAL.
    READ TABLE lv_desc-names INDEX <typeinfo>-idx_help_id
      ASSIGNING <nameinfo>.
    IF sy-subrc                           = 0.

* Caution: Help-ID may be Tablename-Fieldname and thus longer
* than 30 Chars; ls_alv_fieldcat-rollname is 30 Chars only
      ls_alv_fieldcat-rollname            = <nameinfo>-name.
      lv_longfield                        = <nameinfo>-name.
      WHILE NOT <nameinfo>-continue IS INITIAL.
        ADD 1 TO <typeinfo>-idx_help_id.
        READ TABLE lv_desc-names INDEX <typeinfo>-idx_help_id
          ASSIGNING <nameinfo>.
        CONCATENATE
          lv_longfield
          <nameinfo>-name
          INTO lv_longfield.
      ENDWHILE." not lv_desc-continue is initial.

* help id may be data element or <table>-<field>
      IF lv_longfield CA '-'.

* get data                                type for table field
        PERFORM get_rollname_4_tabfield
          USING lv_longfield CHANGING ls_alv_fieldcat.
      ENDIF." lv_longfield ca '-'.
    ELSE.

* No Help-ID: Use Fieldname as text
      ls_alv_fieldcat-seltext_s           =
      ls_alv_fieldcat-seltext_m           =
      ls_alv_fieldcat-seltext_l           =
      ls_alv_fieldcat-reptext_ddic        =
      <nameinfo>-name.
    ENDIF." sy-subrc                      = 0.

* Starting 4.7: get edit mask
    IF NOT <typeinfo>-idx_edit_mask IS INITIAL.
      READ TABLE lv_desc-names INDEX <typeinfo>-idx_edit_mask
        ASSIGNING <nameinfo>.
      ls_alv_fieldcat-edit_mask           = <nameinfo>-name.
      IF NOT <nameinfo>-continue IS INITIAL.
        ADD 1 TO <typeinfo>-idx_edit_mask.
        READ TABLE lv_desc-names INDEX <typeinfo>-idx_edit_mask
          ASSIGNING <nameinfo>.
        CONCATENATE
          ls_alv_fieldcat-edit_mask
          <nameinfo>-name
          INTO ls_alv_fieldcat-edit_mask.
      ENDIF." not <nameinfo>-continue IS INITIAL.
    ENDIF." not <typeinfo>-IDX_EDIT_MASK is initial.

* assign length, output length and decimals
    ls_alv_fieldcat-intlen                = <typeinfo>-length.
    ls_alv_fieldcat-outputlen             = <typeinfo>-output_length.
    ls_alv_fieldcat-decimals_out          = <typeinfo>-decimals.
    ls_alv_fieldcat-inttype               = <typeinfo>-type.
    APPEND ls_alv_fieldcat TO pt_alv_fieldcat.
    CLEAR:  "prevent anything 2 B  taken for subsequent fields
      ls_alv_fieldcat.
  ENDLOOP." at lv_desc-types where not IDX_NAME is in initial.
ENDFORM.                    " ALV_FIELDCAT_FOR_ITAB


*&---------------------------------------------------------------------
*&      Form  get_rollname_4_tabfield
*&---------------------------------------------------------------------
*       Get Data                          type for Table field
*----------------------------------------------------------------------
FORM get_rollname_4_tabfield
  USING    p_fname                        TYPE text80 ""CRM<=R/3 fname
  CHANGING p_alv_fieldcat                 TYPE slis_fieldcat_alv.
  FIELD-SYMBOLS:
    <dfies>                               TYPE dfies.
  DATA:
    lv_tabname                            TYPE tabname,
     lt_dfies                             TYPE TABLE OF dfies,
    lv_fieldname                          TYPE fieldname.
  SPLIT p_fname AT '-'
    INTO lv_tabname lv_fieldname.
  CLEAR p_alv_fieldcat-rollname.
  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname                             = lv_tabname
      fieldname                           = lv_fieldname
*   LANGU                                 = SY-LANGU
*   LFIELDNAME                            = ' '
*   ALL_TYPES                             = ' '
* IMPORTING
*   X030L_WA                              =
*   DDOBJTYPE                             =
*   DFIES_WA                              =
*   LINES_DESCR                           =
   TABLES
     dfies_tab                            =  lt_dfies
*   FIXED_VALUES                          =
   EXCEPTIONS
     not_found                            = 1
     internal_error                       = 2
     OTHERS                               = 3
            .
  IF sy-subrc                             <> 0.
    MESSAGE ID sy-msgid                   TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    READ TABLE   lt_dfies ASSIGNING <dfies> INDEX 1.
    p_alv_fieldcat-rollname               = <dfies>-rollname.
* Und wenn keinerlei Twexte gepflegt sind?
    IF <dfies>-reptext IS INITIAL AND
       <dfies>-scrtext_s IS INITIAL AND
       <dfies>-scrtext_m IS INITIAL AND
       <dfies>-scrtext_l IS INITIAL.
* No Text: Use Fieldname as text
      p_alv_fieldcat-seltext_s            =
      p_alv_fieldcat-seltext_m            =
      p_alv_fieldcat-seltext_l            =
      p_alv_fieldcat-reptext_ddic         =
      p_alv_fieldcat-fieldname.
    ENDIF." <dfies>-reptext IS INITIAL AND
  ENDIF.
ENDFORM.                    " get_rollname_4_tabfield

*&---------------------------------------------------------------------*
*&      Form  alv_fieldcat_enhance
*&---------------------------------------------------------------------*
*       Individual Enrichment of field catalog
*----------------------------------------------------------------------*
FORM alv_fieldcat_enhance
  CHANGING pt_alv_fieldcat                TYPE slis_t_fieldcat_alv.
  FIELD-SYMBOLS:
    <alv_fieldcat>                        TYPE slis_fieldcat_alv.
  LOOP AT pt_alv_fieldcat ASSIGNING <alv_fieldcat>.
    CASE <alv_fieldcat>-fieldname.
      WHEN 'EBELN'.
        <alv_fieldcat>-hotspot             = c_true.
*      WHEN 'LIGHTS'.
*        <alv_fieldcat>-icon               = c_true.
*        <alv_fieldcat>-seltext_s          = 'Status'(009).
*        <alv_fieldcat>-seltext_m          =
*        <alv_fieldcat>-seltext_l          =
*        <alv_fieldcat>-reptext_ddic       = 'Status of Processing'(010).
      WHEN  'MANDT' OR 'SEL' or 'T_PROT' or 'BSTYP' or 'PROTOCOL'.
        <alv_fieldcat>-tech               = c_true.
    ENDCASE." <alv_fieldcat>-fieldname.
  ENDLOOP." at pt_alv_fieldcat assigning <fieldcat_alv>.
ENDFORM.                    " alv_fieldcat_enhance

Regards,

Clemens