<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8441308693820441271</id><updated>2011-11-28T08:00:02.291+07:00</updated><category term='Others'/><category term='SAP'/><category term='Blabering'/><category term='ABAP'/><title type='text'>where the brain, inside notebook and problem stored</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-5964870322786750147</id><published>2010-09-29T12:40:00.003+07:00</published><updated>2010-09-29T12:47:09.797+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>CONCATENATE with blanks space</title><content type='html'>To CONCATENATE string with blank space in middle.&lt;br /&gt;This syntax applicable start from SAP ECC 6.0&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;DATA : v_string(40).&lt;br /&gt;CONCATENATE 'I' 'need' 'more' '     ' 'space.' INTO v_string&lt;br /&gt;            RESPECTING BLANKS&lt;br /&gt;            SEPARATED BY space.&lt;br /&gt;WRITE:/ v_string.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;For R/3 release 4.6C, just do a little tricks.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  DATA : v_err LIKE tline OCCURS 0 WITH HEADER LINE,&lt;br /&gt;         var1(20), var2(10), var3(10), var4(10), var5(10), x(1).&lt;br /&gt;&lt;br /&gt;  v_err-tdformat = '*'.&lt;br /&gt;  var1 = 'Material           0'.&lt;br /&gt;  var2 = 'QTY PR   1'.&lt;br /&gt;  var3 = 'QTY PO   2'.&lt;br /&gt;  var4 = 'QTY SO   3'.&lt;br /&gt;  var5 = 'Selisih  4'.&lt;br /&gt;  CONCATENATE var1 var2 var3 var4 var5&lt;br /&gt;          INTO v_err-tdline SEPARATED BY space.&lt;br /&gt;  x = 0.&lt;br /&gt;  DO 5 TIMES.&lt;br /&gt;    REPLACE x WITH space INTO v_err-tdline .&lt;br /&gt;    x = x + 1.&lt;br /&gt;  ENDDO.&lt;br /&gt;  write:/ v_err-tdline.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-5964870322786750147?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/5964870322786750147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=5964870322786750147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/5964870322786750147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/5964870322786750147'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2010/09/concatenate-with-blanks-space.html' title='CONCATENATE with blanks space'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-2581073930612172118</id><published>2010-06-04T10:11:00.001+07:00</published><updated>2010-06-04T10:13:05.085+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>include program : ZGEN_EXCEL</title><content type='html'>Include ZGEN_EXCEL - for transfer itab to Excel&lt;br /&gt;use tcode OAOR  to place the excel template.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;***INCLUDE ZGEN_EXCEL .&lt;br /&gt;&lt;br /&gt;  TYPE-POOLS: soi.&lt;br /&gt;  TYPES : type_doc(64),format_amount(18).&lt;br /&gt;  DATA: tranges TYPE soi_range_list,&lt;br /&gt;        tcontents TYPE soi_generic_table,&lt;br /&gt;        setranges TYPE soi_full_range_table,&lt;br /&gt;        rangesdef TYPE soi_dimension_table,&lt;br /&gt;        tformat TYPE soi_format_table,&lt;br /&gt;        tcell TYPE soi_cell_table.&lt;br /&gt;&lt;br /&gt;  DATA: struc_ranges TYPE soi_range_item,&lt;br /&gt;        struc_generic TYPE soi_generic_item,&lt;br /&gt;        struc_setrange TYPE soi_full_range_item,&lt;br /&gt;        struc_rangesdef TYPE soi_dimension_item,&lt;br /&gt;        struc_cell TYPE soi_cell_item.&lt;br /&gt;*--- Object Instance Declaration ---&lt;br /&gt;  DATA: container TYPE REF TO cl_gui_custom_container.&lt;br /&gt;  DATA: control   TYPE REF TO i_oi_container_control.&lt;br /&gt;  DATA: document  TYPE REF TO i_oi_document_proxy.&lt;br /&gt;  DATA: excel      TYPE REF TO i_oi_spreadsheet.&lt;br /&gt;&lt;br /&gt;  DATA: bds_doc   TYPE REF TO cl_bds_document_set.&lt;br /&gt;  DATA: link_server   TYPE REF TO i_oi_link_server.&lt;br /&gt;*--- Other Objects/Variable Declaration ---&lt;br /&gt;  DATA: no_flush,&lt;br /&gt;        error TYPE REF TO i_oi_error,&lt;br /&gt;        retcode(256) TYPE c,&lt;br /&gt;        version(64) TYPE c.&lt;br /&gt;  DATA: document_type(80) TYPE c VALUE soi_doctype_word_document,&lt;br /&gt;        document_format(6) TYPE c,&lt;br /&gt;        doc_url TYPE bapiuri-uri, "MSDocument URL Address&lt;br /&gt;        pic_url TYPE bapiuri-uri. "Logo URL Address&lt;br /&gt;* Error Handling after call a method&lt;br /&gt;  CLASS c_oi_errors DEFINITION LOAD.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM select_new_sheet                                         *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM select_new_sheet USING    p_sheet_name.&lt;br /&gt;    CALL METHOD excel-&gt;select_sheet&lt;br /&gt;           EXPORTING name      = p_sheet_name&lt;br /&gt;                     no_flush  = no_flush&lt;br /&gt;           IMPORTING error     = error&lt;br /&gt;                     retcode   = retcode.&lt;br /&gt;    CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;    CALL METHOD excel-&gt;set_selection&lt;br /&gt;             EXPORTING&lt;br /&gt;                left = 2&lt;br /&gt;                top = 2&lt;br /&gt;                rows = 4&lt;br /&gt;                columns = 1&lt;br /&gt;               no_flush  = no_flush&lt;br /&gt;               updating  = -1&lt;br /&gt;             IMPORTING error     = error&lt;br /&gt;                retcode   = retcode.&lt;br /&gt;    CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;  ENDFORM.                    " select_new_sheet&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM select_document                                          *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM select_document USING nclass TYPE type_doc&lt;br /&gt;                    objkey TYPE type_doc&lt;br /&gt;                    doc_id TYPE type_doc&lt;br /&gt;                    CHANGING adr_url TYPE bapiuri-uri.&lt;br /&gt;&lt;br /&gt;* Tables and WAs:&lt;br /&gt;    DATA: doc_signature TYPE sbdst_signature,&lt;br /&gt;          wa_doc_signature LIKE LINE OF doc_signature,&lt;br /&gt;          doc_components TYPE sbdst_components,&lt;br /&gt;          wa_doc_components LIKE LINE OF doc_components,&lt;br /&gt;          doc_uris TYPE sbdst_uri,&lt;br /&gt;          wa_doc_uris LIKE LINE OF doc_uris.&lt;br /&gt;* IDs:&lt;br /&gt;    DATA: doc_classname TYPE sbdst_classname," VALUE 'ZCO_IMR',&lt;br /&gt;          doc_classtype TYPE sbdst_classtype VALUE 'OT',&lt;br /&gt;          doc_object_key TYPE sbdst_object_key," VALUE 'WPL',&lt;br /&gt;          doc_mimetype LIKE bapicompon-mimetype.&lt;br /&gt;*----------------------------------------------------------------------&lt;br /&gt;    CLEAR: wa_doc_signature, wa_doc_components, wa_doc_uris.&lt;br /&gt;    REFRESH: doc_signature, doc_components, doc_uris.&lt;br /&gt;&lt;br /&gt;    doc_classname = nclass.&lt;br /&gt;    doc_object_key = objkey.&lt;br /&gt;&lt;br /&gt;    wa_doc_signature-prop_name = 'DESCRIPTION'.&lt;br /&gt;    wa_doc_signature-prop_value = doc_id.&lt;br /&gt;    APPEND wa_doc_signature TO doc_signature.&lt;br /&gt;&lt;br /&gt;* Availability of document checked&lt;br /&gt;    CALL METHOD bds_doc-&gt;get_info&lt;br /&gt;                  EXPORTING classname  = doc_classname&lt;br /&gt;                            classtype  = doc_classtype&lt;br /&gt;                            object_key = doc_object_key&lt;br /&gt;                            client     = sy-mandt&lt;br /&gt;                  CHANGING components  = doc_components&lt;br /&gt;                           signature   = doc_signature&lt;br /&gt;                    EXCEPTIONS nothing_found = 1&lt;br /&gt;                               error_kpro = 2&lt;br /&gt;                               internal_error = 3&lt;br /&gt;                               parameter_error = 4&lt;br /&gt;                               not_authorized = 5&lt;br /&gt;                               not_allowed = 6.&lt;br /&gt;    IF sy-subrc NE 0 AND sy-subrc NE 1.&lt;br /&gt;      "Error in the Business Document Service (BDS)&lt;br /&gt;      MESSAGE e016(demoofficeintegratio).&lt;br /&gt;    ENDIF.&lt;br /&gt;    IF sy-subrc = 1.&lt;br /&gt;      MESSAGE e017(demoofficeintegratio).&lt;br /&gt;      "There are no documents that meet the search criteria&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;* Get URL address&lt;br /&gt;    CALL METHOD bds_doc-&gt;get_with_url&lt;br /&gt;                       EXPORTING classname  = doc_classname&lt;br /&gt;                                 classtype  = doc_classtype&lt;br /&gt;                                 object_key = doc_object_key&lt;br /&gt;                       CHANGING uris        = doc_uris&lt;br /&gt;                                signature   = doc_signature&lt;br /&gt;                    EXCEPTIONS nothing_found = 1&lt;br /&gt;                               error_kpro = 2&lt;br /&gt;                               internal_error = 3&lt;br /&gt;                               parameter_error = 4&lt;br /&gt;                               not_authorized = 5&lt;br /&gt;                               not_allowed = 6.&lt;br /&gt;    IF sy-subrc NE 0 AND sy-subrc NE 1.&lt;br /&gt;      MESSAGE e016(demoofficeintegratio).&lt;br /&gt;    ENDIF.&lt;br /&gt;    IF sy-subrc = 1.&lt;br /&gt;      MESSAGE e017(demoofficeintegratio).&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;    READ TABLE doc_components INTO wa_doc_components INDEX 1.&lt;br /&gt;    READ TABLE doc_uris INTO wa_doc_uris INDEX 1.&lt;br /&gt;    doc_mimetype = wa_doc_components-mimetype.&lt;br /&gt;    adr_url = wa_doc_uris-uri.&lt;br /&gt;&lt;br /&gt;    CASE doc_mimetype.&lt;br /&gt;      WHEN 'application/x-rtf' OR 'text/rtf'.&lt;br /&gt;        document_format = soi_docformat_rtf.&lt;br /&gt;      WHEN 'application/x-oleobject'.&lt;br /&gt;        document_format = soi_docformat_compound.&lt;br /&gt;      WHEN 'text/plain'.&lt;br /&gt;        document_format = soi_docformat_text.&lt;br /&gt;      WHEN OTHERS.&lt;br /&gt;        document_format = soi_docformat_native.&lt;br /&gt;    ENDCASE.&lt;br /&gt;  ENDFORM.                    " select_document&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM formatting_rangesdef_tab                                 *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM formatting_rangesdef_tab.&lt;br /&gt;    LOOP AT tcontents INTO struc_generic.&lt;br /&gt;      struc_rangesdef-rows = 1.&lt;br /&gt;      struc_rangesdef-columns = 1.&lt;br /&gt;      struc_rangesdef-row = struc_generic-row.&lt;br /&gt;      struc_rangesdef-column = struc_generic-column.&lt;br /&gt;      struc_generic-row = '1'.&lt;br /&gt;      struc_generic-column = '1'.&lt;br /&gt;      MODIFY tcontents FROM struc_generic INDEX sy-tabix.&lt;br /&gt;      APPEND struc_rangesdef TO rangesdef.&lt;br /&gt;    ENDLOOP.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM set_data                                                 *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM set_data.&lt;br /&gt;    CALL METHOD excel-&gt;set_ranges_data&lt;br /&gt;      EXPORTING&lt;br /&gt;        ranges    = tranges&lt;br /&gt;        contents  = tcontents&lt;br /&gt;        rangesdef = rangesdef&lt;br /&gt;        updating  = -1&lt;br /&gt;        no_flush  = no_flush&lt;br /&gt;      IMPORTING error     = error&lt;br /&gt;        retcode   = retcode.&lt;br /&gt;    CALL METHOD excel-&gt;screen_update&lt;br /&gt;         EXPORTING updating = 'X'&lt;br /&gt;                   no_flush = no_flush&lt;br /&gt;         IMPORTING error    = error&lt;br /&gt;                   retcode  = retcode.&lt;br /&gt;    CLEAR : tcontents, rangesdef.&lt;br /&gt;    REFRESH : tcontents, rangesdef.&lt;br /&gt;  ENDFORM.                    " set_data&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM prog_indicator                                           *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM prog_indicator_excel USING t_pers t_text.&lt;br /&gt;    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;br /&gt;         EXPORTING&lt;br /&gt;              percentage = t_pers&lt;br /&gt;              text       = t_text.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM format_amount                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM format_amount USING p_amount&lt;br /&gt;    CHANGING axx TYPE format_amount.&lt;br /&gt;    DATA : p_val TYPE p DECIMALS 2.&lt;br /&gt;    p_val = p_amount.&lt;br /&gt;    IF p_val &lt; 0.&lt;br /&gt;      p_val = p_val * -1.&lt;br /&gt;      WRITE p_val TO axx CURRENCY 'IDR'.&lt;br /&gt;      CONCATENATE '-' axx INTO axx.&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE p_val TO axx CURRENCY 'IDR'.&lt;br /&gt;    ENDIF.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;    DO 5 TIMES.&lt;br /&gt;      REPLACE '.' WITH '' INTO axx.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM format_amount_coma                                       *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM format_amount_coma USING p_amount&lt;br /&gt;    CHANGING axx TYPE format_amount.&lt;br /&gt;    DATA : p_val TYPE p DECIMALS 2.&lt;br /&gt;    p_val = p_amount.&lt;br /&gt;    IF p_val &lt; 0.&lt;br /&gt;      p_val = p_val * -1.&lt;br /&gt;      WRITE p_val TO axx CURRENCY 'USD'.&lt;br /&gt;      CONCATENATE '-' axx INTO axx.&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE p_val TO axx CURRENCY 'USD'.&lt;br /&gt;    ENDIF.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;    DO 5 TIMES.&lt;br /&gt;      REPLACE '.' WITH '' INTO axx.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM format_origin                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM format_origin USING p_amount CHANGING axx TYPE format_amount.&lt;br /&gt;    DATA : p_val TYPE p DECIMALS 2.&lt;br /&gt;    p_val = p_amount.&lt;br /&gt;    IF p_val &lt; 0.&lt;br /&gt;      p_val = p_val * -1.&lt;br /&gt;      WRITE p_val TO axx.&lt;br /&gt;      CONCATENATE '-' axx INTO axx.&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE p_val TO axx.&lt;br /&gt;    ENDIF.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;    DO 5 TIMES.&lt;br /&gt;      REPLACE '.' WITH '' INTO axx.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM f_format_amt_excel                                       *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM f_format_amt_excel USING pu_dmbt pu_curr&lt;br /&gt;      CHANGING pc_dmbt TYPE format_amount.&lt;br /&gt;    DATA : lv_dmbt TYPE p DECIMALS 2.&lt;br /&gt;    lv_dmbt = pu_dmbt.&lt;br /&gt;    IF lv_dmbt &lt; 0.&lt;br /&gt;      lv_dmbt = lv_dmbt * -1.&lt;br /&gt;      WRITE lv_dmbt TO pc_dmbt CURRENCY pu_curr.&lt;br /&gt;      CONCATENATE '-' pc_dmbt INTO pc_dmbt.&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE lv_dmbt TO pc_dmbt CURRENCY pu_curr.&lt;br /&gt;    ENDIF.&lt;br /&gt;    CONDENSE pc_dmbt NO-GAPS.&lt;br /&gt;    DO 5 TIMES.&lt;br /&gt;      REPLACE '.' WITH '' INTO pc_dmbt.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CONDENSE pc_dmbt NO-GAPS.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM format_quantity                                          *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM format_quantity USING pu_meng&lt;br /&gt;    CHANGING axx TYPE format_amount.&lt;br /&gt;    DATA : p_val TYPE p DECIMALS 3.&lt;br /&gt;    p_val = pu_meng.&lt;br /&gt;    IF p_val &lt; 0.&lt;br /&gt;      p_val = p_val * -1.&lt;br /&gt;      WRITE p_val TO axx.&lt;br /&gt;      CONCATENATE '-' axx INTO axx.&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE p_val TO axx.&lt;br /&gt;    ENDIF.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;    DO 5 TIMES.&lt;br /&gt;      REPLACE '.' WITH '' INTO axx.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CONDENSE axx NO-GAPS.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  MODIFY_to_cell&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;  FORM modify_to_cell USING  p_cols p_rows&lt;br /&gt;                             p_value.&lt;br /&gt;    struc_generic-column = p_cols.&lt;br /&gt;    struc_generic-row = p_rows.&lt;br /&gt;    struc_generic-value = p_value.&lt;br /&gt;    APPEND struc_generic TO tcontents.&lt;br /&gt;  ENDFORM.                    " MODIFY_to_cell&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM modify_to_cell_format                                    *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM modify_to_cell_format USING p_typ p_cols p_rows&lt;br /&gt;                             p_value.&lt;br /&gt;    DATA : lvxdmbt(18).&lt;br /&gt;    IF p_typ = 'C'.&lt;br /&gt;      PERFORM format_amount USING p_value&lt;br /&gt;        CHANGING lvxdmbt.&lt;br /&gt;    ELSEIF p_typ = 'D'.&lt;br /&gt;      PERFORM format_amount_coma USING p_value&lt;br /&gt;        CHANGING lvxdmbt.&lt;br /&gt;    ELSEIF p_typ = 'Q'.&lt;br /&gt;      PERFORM format_quantity USING p_value&lt;br /&gt;        CHANGING lvxdmbt.&lt;br /&gt;    ELSE.&lt;br /&gt;      PERFORM format_origin USING p_value CHANGING lvxdmbt.&lt;br /&gt;    ENDIF.&lt;br /&gt;    struc_generic-column = p_cols.&lt;br /&gt;    struc_generic-row = p_rows.&lt;br /&gt;    struc_generic-value = lvxdmbt.&lt;br /&gt;    APPEND struc_generic TO tcontents.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  insert_logo&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;  FORM insert_logo.&lt;br /&gt;    CALL METHOD document-&gt;paste_clipboard&lt;br /&gt;       EXPORTING&lt;br /&gt;         no_flush    = no_flush&lt;br /&gt;       IMPORTING&lt;br /&gt;         error       = error&lt;br /&gt;         retcode     = retcode.&lt;br /&gt;  ENDFORM.                    " insert_logo&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM insert_logo_posxy                                        *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM insert_logo_posxy USING p_left p_top p_rows p_colm.&lt;br /&gt;    CALL METHOD excel-&gt;set_selection&lt;br /&gt;           EXPORTING&lt;br /&gt;              left = p_left&lt;br /&gt;              top = p_top&lt;br /&gt;              rows = p_rows&lt;br /&gt;              columns = p_colm&lt;br /&gt;             no_flush  = no_flush&lt;br /&gt;             updating  = -1&lt;br /&gt;           IMPORTING error     = error&lt;br /&gt;              retcode   = retcode.&lt;br /&gt;    CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;&lt;br /&gt;    CALL METHOD document-&gt;paste_clipboard&lt;br /&gt;       EXPORTING&lt;br /&gt;         no_flush    = no_flush&lt;br /&gt;       IMPORTING&lt;br /&gt;         error       = error&lt;br /&gt;         retcode     = retcode.&lt;br /&gt;  ENDFORM.                    " insert_logo&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM connect_to_excel                                         *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM connect_to_excel USING p_place p_class p_obj p_doc&lt;br /&gt;                              p_logo p_nlogo TYPE type_doc.&lt;br /&gt;    PERFORM prog_indicator_excel USING 0 'Link SAP to Excel..'.&lt;br /&gt;    IF bds_doc IS INITIAL.&lt;br /&gt;      CREATE OBJECT bds_doc.&lt;br /&gt;    ENDIF.&lt;br /&gt;    IF container IS INITIAL.&lt;br /&gt;      CREATE OBJECT container&lt;br /&gt;      EXPORTING&lt;br /&gt;          container_name = 'CONTAINER'.&lt;br /&gt;&lt;br /&gt;      CALL METHOD c_oi_container_control_creator=&gt;get_container_control&lt;br /&gt;           IMPORTING control = control&lt;br /&gt;                     retcode = retcode.&lt;br /&gt;      CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;&lt;br /&gt;      CALL METHOD control-&gt;init_control&lt;br /&gt;           EXPORTING r3_application_name = p_doc&lt;br /&gt;                     inplace_enabled = 'X'&lt;br /&gt;                     parent = container&lt;br /&gt;           IMPORTING retcode = retcode.&lt;br /&gt;      CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;&lt;br /&gt;* Excel&lt;br /&gt;      PERFORM select_document USING p_class p_obj p_doc&lt;br /&gt;        CHANGING doc_url.&lt;br /&gt;* logo&lt;br /&gt;      IF p_logo = 'X'.&lt;br /&gt;        PERFORM select_document USING p_class p_obj p_nlogo&lt;br /&gt;          CHANGING pic_url.&lt;br /&gt;      ENDIF.&lt;br /&gt;      CALL METHOD control-&gt;get_document_proxy&lt;br /&gt;        EXPORTING&lt;br /&gt;          document_format    = document_format&lt;br /&gt;          document_type      = document_type&lt;br /&gt;          no_flush           = no_flush&lt;br /&gt;         IMPORTING&lt;br /&gt;           document_proxy     = document&lt;br /&gt;           error              = error&lt;br /&gt;           retcode            = retcode.&lt;br /&gt;      CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;&lt;br /&gt;*     Open link server&lt;br /&gt;      CALL METHOD control-&gt;get_link_server&lt;br /&gt;         EXPORTING&lt;br /&gt;           no_flush    = no_flush&lt;br /&gt;         IMPORTING&lt;br /&gt;           error       = error&lt;br /&gt;           link_server = link_server&lt;br /&gt;           retcode     = retcode.&lt;br /&gt;      CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;&lt;br /&gt;      CALL METHOD link_server-&gt;start_link_server&lt;br /&gt;         EXPORTING&lt;br /&gt;           no_flush           = no_flush&lt;br /&gt;           server_name_suffix = 'SERVER_LINK'&lt;br /&gt;         IMPORTING&lt;br /&gt;           error       = error&lt;br /&gt;           retcode     = retcode.&lt;br /&gt;      CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;      IF p_logo = 'X'.&lt;br /&gt;*       Open logo to buffer&lt;br /&gt;        CALL METHOD link_server-&gt;add_binary_item&lt;br /&gt;          EXPORTING&lt;br /&gt;            item_name    = p_nlogo&lt;br /&gt;            no_flush     = no_flush&lt;br /&gt;            table_url    = pic_url&lt;br /&gt;           IMPORTING&lt;br /&gt;             error       = error&lt;br /&gt;             retcode     = retcode.&lt;br /&gt;        CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;*       Copy logo to buffer&lt;br /&gt;        CALL METHOD link_server-&gt;copy_link_item_to_clipboard&lt;br /&gt;           EXPORTING&lt;br /&gt;             item_name   = p_nlogo&lt;br /&gt;             no_flush    = no_flush&lt;br /&gt;           IMPORTING&lt;br /&gt;             error       = error&lt;br /&gt;             retcode     = retcode.&lt;br /&gt;        CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;      ENDIF.&lt;br /&gt;* Open the Office document&lt;br /&gt;*     ‘X’   : MS Word will displayed in a custom container area&lt;br /&gt;*     Blank : MS Word will displayed in a new window.&lt;br /&gt;      CALL METHOD document-&gt;open_document&lt;br /&gt;                             EXPORTING document_url = doc_url&lt;br /&gt;                                       open_inplace = p_place&lt;br /&gt;                             IMPORTING retcode = retcode.&lt;br /&gt;      CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;&lt;br /&gt;      CALL METHOD document-&gt;get_spreadsheet_interface&lt;br /&gt;           EXPORTING no_flush     = no_flush&lt;br /&gt;           IMPORTING sheet_interface = excel&lt;br /&gt;                     error        = error&lt;br /&gt;                     retcode      = retcode.&lt;br /&gt;      CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;      PERFORM prog_indicator_excel USING 100 'Link Complate!'.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM close_excel_link                                         *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM close_excel_link.&lt;br /&gt;* Close/release link server object&lt;br /&gt;    CALL METHOD link_server-&gt;stop_link_server&lt;br /&gt;       EXPORTING&lt;br /&gt;         no_flush    = no_flush&lt;br /&gt;       IMPORTING&lt;br /&gt;         error       = error&lt;br /&gt;         retcode     = retcode.&lt;br /&gt;    CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;    CLEAR bds_doc.&lt;br /&gt;    CLEAR container.&lt;br /&gt;    MESSAGE i016(zcomsg01).&lt;br /&gt;  ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM run_macro                                                *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM run_macro USING p_macro_string.&lt;br /&gt;    CALL METHOD document-&gt;execute_macro&lt;br /&gt;       EXPORTING macro_string  = p_macro_string&lt;br /&gt;                 no_flush      = no_flush&lt;br /&gt;                 script_name  = ''&lt;br /&gt;       IMPORTING error         = error&lt;br /&gt;                 retcode       = retcode.&lt;br /&gt;    CALL METHOD c_oi_errors=&gt;show_message EXPORTING type = 'E'.&lt;br /&gt;  ENDFORM.&lt;br /&gt;*----------------------------------------------------------------------&lt;br /&gt;  FORM RUN_MACRO_PARAM USING P_MACRO_STRING&lt;br /&gt;                             P_PARAM_COUNT&lt;br /&gt;                             P_PARAM01 P_PARAM02 P_PARAM03 P_PARAM04&lt;br /&gt;                             P_PARAM05 P_PARAM06 P_PARAM07 P_PARAM08&lt;br /&gt;                             P_PARAM09 P_PARAM10 P_PARAM11 P_PARAM12.&lt;br /&gt;    CALL METHOD DOCUMENT-&gt;EXECUTE_MACRO&lt;br /&gt;       EXPORTING MACRO_STRING  = P_MACRO_STRING&lt;br /&gt;                 NO_FLUSH      = NO_FLUSH&lt;br /&gt;                 SCRIPT_NAME  = ''&lt;br /&gt;                 PARAM_COUNT  = P_PARAM_COUNT&lt;br /&gt;                 PARAM1       = P_PARAM01&lt;br /&gt;                 PARAM2       = P_PARAM02&lt;br /&gt;                 PARAM3       = P_PARAM03&lt;br /&gt;                 PARAM4       = P_PARAM04&lt;br /&gt;                 PARAM5       = P_PARAM05&lt;br /&gt;                 PARAM6       = P_PARAM06&lt;br /&gt;                 PARAM7       = P_PARAM07&lt;br /&gt;                 PARAM8       = P_PARAM08&lt;br /&gt;                 PARAM9       = P_PARAM09&lt;br /&gt;                 PARAM10      = P_PARAM10&lt;br /&gt;                 PARAM11      = P_PARAM11&lt;br /&gt;                 PARAM12      = P_PARAM12&lt;br /&gt;       IMPORTING ERROR         = ERROR&lt;br /&gt;                 RETCODE       = RETCODE.&lt;br /&gt;    CALL METHOD C_OI_ERRORS=&gt;SHOW_MESSAGE EXPORTING TYPE = 'E'.&lt;br /&gt;  ENDFORM.&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_header_std_excel&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;  FORM f_header_std_excel USING pu_xpos pu_ypos&lt;br /&gt;    pu_bukrs pu_spmon pu_title.&lt;br /&gt;    DATA : lvtxt(40),lvxpos(4) TYPE c,lvypos(4) TYPE c.&lt;br /&gt;    SELECT SINGLE butxt INTO lvtxt FROM t001&lt;br /&gt;    WHERE bukrs = pu_bukrs.&lt;br /&gt;    CONCATENATE 'COMPANY : PT.' lvtxt INTO lvtxt SEPARATED BY space.&lt;br /&gt;    TRANSLATE lvtxt TO UPPER CASE.&lt;br /&gt;    lvxpos = pu_xpos. lvypos = pu_ypos.&lt;br /&gt;    PERFORM modify_to_cell USING lvxpos lvypos lvtxt.&lt;br /&gt;    lvypos = lvypos + 1.&lt;br /&gt;    PERFORM modify_to_cell USING lvxpos lvypos pu_title.&lt;br /&gt;    PERFORM f_get_month_excel USING pu_spmon+4(2) CHANGING lvtxt.&lt;br /&gt;    CONCATENATE 'FOR THE MONTH :' lvtxt ',' pu_spmon+0(4)&lt;br /&gt;      INTO lvtxt SEPARATED BY space.&lt;br /&gt;    lvypos = lvypos + 1.&lt;br /&gt;    PERFORM modify_to_cell USING lvxpos lvypos lvtxt.&lt;br /&gt;  ENDFORM.                    " f_header_std_excel&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM f_get_month_EXCEL                                        *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  PMONAT                                                        *&lt;br /&gt;*  --&gt;  PMOTXT                                                        *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;  FORM f_get_month_excel USING pmonat CHANGING pmotxt.&lt;br /&gt;    CASE pmonat.&lt;br /&gt;      WHEN 1. pmotxt = 'JANUARY'.&lt;br /&gt;      WHEN 2. pmotxt = 'FEBRUARY'.&lt;br /&gt;      WHEN 3. pmotxt = 'MARCH'.&lt;br /&gt;      WHEN 4. pmotxt = 'APRIL'.&lt;br /&gt;      WHEN 5. pmotxt = 'MAY'.&lt;br /&gt;      WHEN 6. pmotxt = 'JUNE'.&lt;br /&gt;      WHEN 7. pmotxt = 'JULY'.&lt;br /&gt;      WHEN 8. pmotxt = 'AUGUST'.&lt;br /&gt;      WHEN 9. pmotxt = 'SEPTEMBER'.&lt;br /&gt;      WHEN 10. pmotxt = 'OCTOBER'.&lt;br /&gt;      WHEN 11. pmotxt = 'NOVEMBER'.&lt;br /&gt;      WHEN 12. pmotxt = 'DECEMBER'.&lt;br /&gt;    ENDCASE.&lt;br /&gt;  ENDFORM.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-2581073930612172118?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/2581073930612172118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=2581073930612172118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/2581073930612172118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/2581073930612172118'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2010/06/include-program-zgenexcel.html' title='include program : ZGEN_EXCEL'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-7984637968770974206</id><published>2010-06-04T10:05:00.001+07:00</published><updated>2010-06-04T10:11:13.817+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>include program : ZAB_ALV</title><content type='html'>Include ZAB_ALV - for create ALV Layout&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;TYPE-POOLS: slis .&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*     Data object declaration&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;DATA: t_alv_fctlg TYPE slis_t_fieldcat_alv,&lt;br /&gt;      t_alv_event TYPE slis_t_event WITH HEADER LINE,&lt;br /&gt;      t_alv_isort TYPE slis_t_sortinfo_alv WITH HEADER LINE,&lt;br /&gt;      t_alv_filtr TYPE slis_t_filter_alv WITH HEADER LINE,&lt;br /&gt;      t_header    TYPE slis_t_listheader,&lt;br /&gt;      d_alv_isort TYPE slis_sortinfo_alv,&lt;br /&gt;      d_alv_varnt TYPE disvariant,&lt;br /&gt;      d_alv_lscrl TYPE  slis_list_scroll,&lt;br /&gt;      d_alv_sort_postn TYPE i,&lt;br /&gt;      d_alv_save(1) TYPE c,&lt;br /&gt;      d_alv_varnm LIKE disvariant-variant,&lt;br /&gt;      d_alv_qinfo TYPE slis_keyinfo_alv,&lt;br /&gt;      d_alv_fctlg TYPE slis_fieldcat_alv,&lt;br /&gt;      d_alv_stats TYPE slis_formname,&lt;br /&gt;      d_alv_ucomm TYPE slis_formname,&lt;br /&gt;      d_alv_print TYPE slis_print_alv,&lt;br /&gt;      d_alv_repid LIKE sy-repid,&lt;br /&gt;      d_alv_tabix LIKE sy-tabix,&lt;br /&gt;      d_alv_subrc LIKE sy-subrc,&lt;br /&gt;      d_alv_bg_id LIKE bapibds01-objkey VALUE 'ALV_BACKGROUND',&lt;br /&gt;      d_alv_screen_start_column TYPE i,&lt;br /&gt;      d_alv_screen_start_line   TYPE i,&lt;br /&gt;      d_alv_screen_end_column   TYPE i,&lt;br /&gt;      d_alv_screen_end_line     TYPE i,&lt;br /&gt;      d_alv_layout TYPE slis_layout_alv.&lt;br /&gt;&lt;br /&gt;CONSTANTS : c_top_of_page TYPE slis_formname VALUE 'F_TOP_OF_PAGE',&lt;br /&gt;            c_top_of_page_alv TYPE slis_formname&lt;br /&gt;                             VALUE 'F_TOP_OF_PAGE_ALV',&lt;br /&gt;            c_end_of_page TYPE slis_formname VALUE 'F_END_OF_PAGE',&lt;br /&gt;            c_user_command TYPE slis_formname VALUE 'F_USER_COMMAND',&lt;br /&gt;            c_pf_status TYPE slis_formname VALUE 'F_PF_STATUS'.&lt;br /&gt;&lt;br /&gt;* Variant&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE text-v01.&lt;br /&gt;PARAMETERS: p_vari LIKE disvariant-variant no-display.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK 0.&lt;br /&gt;&lt;br /&gt;** Process on value request&lt;br /&gt;*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.&lt;br /&gt;*  PERFORM f_alv_variant_f4 CHANGING d_alv_varnt-variant.&lt;br /&gt;&lt;br /&gt;*AT SELECTION-SCREEN.&lt;br /&gt;*  PERFORM f_alv_selscr_input.&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      FORM F_ALV_INIT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Initialize ALV variables&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_init.&lt;br /&gt;  d_alv_repid = sy-repid.&lt;br /&gt;  d_alv_save = 'A'.&lt;br /&gt;  d_alv_varnt-report = sy-repid.&lt;br /&gt;ENDFORM.                    " f_alv_init&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM F_ALV_BUILD_COMMENT                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       Build ALV Header                                              *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_comment TABLES ft_top_of_page TYPE slis_t_listheader&lt;br /&gt;                         USING  fu_typ fu_key fu_info.&lt;br /&gt;&lt;br /&gt;* fu_typ = H, S, or A.&lt;br /&gt;*   H = Header (big), S = Selection (reg) , A = Action (small)&lt;br /&gt;  ft_top_of_page-typ  = fu_typ.&lt;br /&gt;  ft_top_of_page-key  = fu_key.&lt;br /&gt;  ft_top_of_page-info = fu_info.&lt;br /&gt;  APPEND ft_top_of_page.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    "f_alv_build_comment&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM F_TOP_OF_PAGE                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       TOP-OF-PAGE                                                   *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_top_of_page_alv.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_logo             = 'ENJOYSAP_LOGO'&lt;br /&gt;      it_list_commentary = t_header.&lt;br /&gt;ENDFORM.     "F_TOP_OF_PAGE_ALV&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM f_end_of_page                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       END-OF-PAGE                                                   *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_end_of_page_alv.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    "f_end_of_page_alv&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_BUILD_EVENT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Build ALV events (TOP-OF-PAGE, END-OF-PAGE, etc)&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_event USING fu_pname fu_pform.&lt;br /&gt;&lt;br /&gt;*  DATA: lX_event TYPE slis_alv_event.&lt;br /&gt;*&lt;br /&gt;*  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;br /&gt;*       EXPORTING&lt;br /&gt;*            i_list_type = 0&lt;br /&gt;*       IMPORTING&lt;br /&gt;*            et_events   = t_alv_event.&lt;br /&gt;*&lt;br /&gt;*   READ TABLE t_alv_event WITH KEY name = slis_ev_top_of_page.&lt;br /&gt;*&lt;br /&gt;*  IF sy-subrc = 0.&lt;br /&gt;*    MOVE c_top_of_page TO t_alv_event-form.&lt;br /&gt;*    APPEND t_alv_event.&lt;br /&gt;*  ENDIF.&lt;br /&gt;&lt;br /&gt;  CLEAR t_alv_event.&lt;br /&gt;  t_alv_event-name = fu_pname.&lt;br /&gt;  t_alv_event-form = fu_pform.&lt;br /&gt;  APPEND t_alv_event.&lt;br /&gt;ENDFORM.                    " F_BUILD_EVENT&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM F_ALV_SET_UCOMM                                          *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       Set ALV user callback command                                 *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_set_ucomm USING value(fu_ucomm) TYPE slis_formname.&lt;br /&gt;  CLEAR d_alv_ucomm.&lt;br /&gt;  d_alv_ucomm = fu_ucomm.&lt;br /&gt;ENDFORM.                    "f_alv_set_ucomm&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_BUILD_LAYOUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Build ALV layout&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_layout USING fu_field fu_value.&lt;br /&gt;* No Headings&lt;br /&gt;  IF fu_field = 'NO_COLHEAD'.&lt;br /&gt;    d_alv_layout-no_colhead = fu_value.&lt;br /&gt;* Headings not as hotspot&lt;br /&gt;  ELSEIF fu_field = 'NO_HOTSPOT'.&lt;br /&gt;    d_alv_layout-no_hotspot = fu_value.&lt;br /&gt;* Striped pattern&lt;br /&gt;  ELSEIF fu_field = 'ZEBRA'.&lt;br /&gt;    d_alv_layout-zebra = fu_value.&lt;br /&gt;* Columns separated by space&lt;br /&gt;  ELSEIF fu_field = 'NO_VLINE'.&lt;br /&gt;    d_alv_layout-no_vline = fu_value.&lt;br /&gt;* Not suppress field replication&lt;br /&gt;  ELSEIF fu_field = 'CELL_MERGE'.&lt;br /&gt;    d_alv_layout-cell_merge = fu_value.&lt;br /&gt;* For GRID only&lt;br /&gt;  ELSEIF fu_field = 'EDIT'.&lt;br /&gt;    d_alv_layout-edit = fu_value.&lt;br /&gt;* For GRID only&lt;br /&gt;  ELSEIF fu_field = 'EDIT_MODE'.&lt;br /&gt;    d_alv_layout-edit_mode = fu_value.&lt;br /&gt;* Totals for NUMC-Fields possible.&lt;br /&gt;  ELSEIF fu_field = 'NUMC_SUM'.&lt;br /&gt;    d_alv_layout-numc_sum = fu_value.&lt;br /&gt;* Only display fields&lt;br /&gt;  ELSEIF fu_field = 'NO_INPUT'.&lt;br /&gt;    d_alv_layout-no_input = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'F2CODE'.&lt;br /&gt;    d_alv_layout-f2code = fu_value.&lt;br /&gt;* Report interface active&lt;br /&gt;  ELSEIF fu_field = 'REPREP'.&lt;br /&gt;    d_alv_layout-reprep = fu_value.&lt;br /&gt;* No fix key columns - moving possible&lt;br /&gt;  ELSEIF fu_field = 'NO_KEYFIX'.&lt;br /&gt;    d_alv_layout-no_keyfix = fu_value.&lt;br /&gt;* Expand all positions&lt;br /&gt;  ELSEIF fu_field = 'EXPAND_ALL'.&lt;br /&gt;    d_alv_layout-expand_all = fu_value.&lt;br /&gt;* No standard authority check&lt;br /&gt;  ELSEIF fu_field = 'NO_AUTHOR'.&lt;br /&gt;    d_alv_layout-no_author = fu_value.&lt;br /&gt;* Default status  space or 'A'&lt;br /&gt;  ELSEIF fu_field = 'DEF_STATUS'.&lt;br /&gt;    d_alv_layout-def_status = fu_value.&lt;br /&gt;* Text for item button&lt;br /&gt;  ELSEIF fu_field = 'ITEM_TEXT'.&lt;br /&gt;    d_alv_layout-item_text = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'COLWIDTH_OPTIMIZE'.&lt;br /&gt;    d_alv_layout-colwidth_optimize = fu_value.&lt;br /&gt;* line size = width of the list&lt;br /&gt;  ELSEIF fu_field = 'NO_MIN_LINESIZE'.&lt;br /&gt;    d_alv_layout-no_min_linesize  = fu_value.&lt;br /&gt;* if initial min_linesize = 80&lt;br /&gt;  ELSEIF fu_field = 'MIN_LINESIZE'.&lt;br /&gt;    d_alv_layout-min_linesize  = fu_value.&lt;br /&gt;* Default = 250&lt;br /&gt;  ELSEIF fu_field = 'MAX_LINESIZE'.&lt;br /&gt;    d_alv_layout-max_linesize  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'WINDOW_TITLEBAR'.&lt;br /&gt;    d_alv_layout-window_titlebar  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'NO_ULINE_HS'.&lt;br /&gt;    d_alv_layout-no_uline_hs  = fu_value.&lt;br /&gt;** Exceptions&lt;br /&gt;  ELSEIF fu_field = 'LIGHTS_FIELDNAME'.&lt;br /&gt;    d_alv_layout-lights_fieldname  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'LIGHTS_TABNAME'.&lt;br /&gt;    d_alv_layout-lights_tabname  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'LIGHTS_ROLLNAME'.&lt;br /&gt;    d_alv_layout-lights_rollname  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'LIGHTS_CONDENSE'.&lt;br /&gt;    d_alv_layout-lights_condense  = fu_value.&lt;br /&gt;** Sums&lt;br /&gt;* No choice for summing up&lt;br /&gt;  ELSEIF fu_field = 'NO_SUMCHOICE'.&lt;br /&gt;    d_alv_layout-no_sumchoice  = fu_value.&lt;br /&gt;* No total line&lt;br /&gt;  ELSEIF fu_field = 'NO_TOTALLINE'.&lt;br /&gt;    d_alv_layout-no_totalline  = fu_value.&lt;br /&gt;* No choice for subtotals&lt;br /&gt;  ELSEIF fu_field = 'NO_SUBCHOICE'.&lt;br /&gt;    d_alv_layout-no_subchoice  = fu_value.&lt;br /&gt;* No subtotals possible&lt;br /&gt;  ELSEIF fu_field = 'NO_SUBTOTALS'.&lt;br /&gt;    d_alv_layout-no_subtotals  = fu_value.&lt;br /&gt;* no sep. tot.lines by inh.units&lt;br /&gt;  ELSEIF fu_field = 'NO_UNIT_SPLITTING'.&lt;br /&gt;    d_alv_layout-no_unit_splitting  = fu_value.&lt;br /&gt;* Display totals before the items&lt;br /&gt;  ELSEIF fu_field = 'TOTALS_BEFORE_ITEMS'.&lt;br /&gt;    d_alv_layout-totals_before_items = fu_value.&lt;br /&gt;* Show only totals&lt;br /&gt;  ELSEIF fu_field = 'TOTALS_ONLY'.&lt;br /&gt;    d_alv_layout-totals_only  = fu_value.&lt;br /&gt;* Text for 1st col. in total line&lt;br /&gt;  ELSEIF fu_field = 'TOTALS_TEXT'.&lt;br /&gt;    d_alv_layout-totals_text  = fu_value.&lt;br /&gt;* Text for 1st col. in subtotals&lt;br /&gt;  ELSEIF fu_field = 'SUBTOTALS_TEXT'.&lt;br /&gt;    d_alv_layout-subtotals_text  = fu_value.&lt;br /&gt;** Interaction&lt;br /&gt;  ELSEIF fu_field = 'BOX_FIELDNAME'.&lt;br /&gt;    d_alv_layout-box_fieldname  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'BOX_TABNAME'.&lt;br /&gt;    d_alv_layout-box_tabname  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'BOX_ROLLNAME'.&lt;br /&gt;    d_alv_layout-box_rollname  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'EXPAND_FIELDNAME'.&lt;br /&gt;    d_alv_layout-expand_fieldname  = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'HOTSPOT_FIELDNAME'.&lt;br /&gt;    d_alv_layout-hotspot_fieldname = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'CONFIRMATION_PROMPT'.&lt;br /&gt;    d_alv_layout-confirmation_prompt = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'KEY_HOTSPOT'.&lt;br /&gt;    d_alv_layout-key_hotspot = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'FLEXIBLE_KEY'.&lt;br /&gt;    d_alv_layout-flexible_key = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'GROUP_BUTTONS'.&lt;br /&gt;    d_alv_layout-group_buttons = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'GET_SELINFOS'.&lt;br /&gt;    d_alv_layout-get_selinfos = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'GROUP_CHANGE_EDIT'.&lt;br /&gt;    d_alv_layout-group_change_edit = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'NO_SCROLLING'.&lt;br /&gt;    d_alv_layout-no_scrolling = fu_value.&lt;br /&gt;** Detailed screen&lt;br /&gt;  ELSEIF fu_field = 'DETAIL_POPUP'.&lt;br /&gt;    d_alv_layout-detail_popup = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'DETAIL_INITIAL_LINES'.&lt;br /&gt;    d_alv_layout-detail_initial_lines = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'DETAIL_TITLEBAR'.&lt;br /&gt;    d_alv_layout-detail_titlebar = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'DETAIL_POPUP'.&lt;br /&gt;    d_alv_layout-detail_popup = fu_value.&lt;br /&gt;** Variant&lt;br /&gt;  ELSEIF fu_field = 'HEADER_TEXT'.&lt;br /&gt;    d_alv_layout-header_text = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'DEFAULT_ITEM'.&lt;br /&gt;    d_alv_layout-default_item = fu_value.&lt;br /&gt;** Color&lt;br /&gt;  ELSEIF fu_field = 'INFO_FIELDNAME'.&lt;br /&gt;    d_alv_layout-info_fieldname = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'COLTAB_FIELDNAME'.&lt;br /&gt;    d_alv_layout-coltab_fieldname = fu_value.&lt;br /&gt;** Others&lt;br /&gt;  ELSEIF fu_field = 'LIST_APPEND'.&lt;br /&gt;    d_alv_layout-coltab_fieldname = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'XIFUNCKEY'.&lt;br /&gt;    d_alv_layout-xifunckey = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'XIDIRECT'.&lt;br /&gt;    d_alv_layout-xidirect = fu_value.&lt;br /&gt;  ELSEIF fu_field = 'DTC_LAYOUT'.&lt;br /&gt;    d_alv_layout-dtc_layout = fu_value.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.  " F_ALV_BUILD_LAYOUT&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_check_box&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_check_box USING fu_tname.&lt;br /&gt;  d_alv_layout-box_fieldname = 'CHKBX'.&lt;br /&gt;  d_alv_layout-box_tabname   = fu_tname.&lt;br /&gt;ENDFORM.                    " F_CHECK_BOX&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_alv_sort&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Sort ALV catalog&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_sort USING fu_table fu_field fu_ascnd fu_subtot fu_group.&lt;br /&gt;  DATA: ld_isort TYPE slis_sortinfo_alv.&lt;br /&gt;  d_alv_sort_postn = d_alv_sort_postn + 1.&lt;br /&gt;  ld_isort-tabname   = fu_table.&lt;br /&gt;  ld_isort-fieldname = fu_field.&lt;br /&gt;  IF fu_ascnd = 'X'.&lt;br /&gt;    ld_isort-up = 'X'.&lt;br /&gt;  ELSE.&lt;br /&gt;    ld_isort-down = 'X'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  ld_isort-spos      = d_alv_sort_postn.&lt;br /&gt;  ld_isort-subtot    = fu_subtot.&lt;br /&gt;  ld_isort-group     = fu_group.&lt;br /&gt;  APPEND ld_isort TO t_alv_isort.&lt;br /&gt;ENDFORM.                    " F_ALV_SORT&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_BUILD_CATALOG&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_catalog USING ft_fctlg TYPE slis_t_fieldcat_alv&lt;br /&gt;                               fu_tbnam fu_fname fu_dscrp&lt;br /&gt;                               fu_reftb fu_refld&lt;br /&gt;                               fu_noout fu_outln fu_hotsp fu_jstfy&lt;br /&gt;                               fu_dosum fu_rowpos fu_colpos&lt;br /&gt;                               fu_icon fu_spgroup fu_keysel.&lt;br /&gt;  DATA: lv_fctlg TYPE slis_fieldcat_alv.&lt;br /&gt;&lt;br /&gt;  lv_fctlg-seltext_s     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_m     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_l     = fu_dscrp.&lt;br /&gt;  lv_fctlg-reptext_ddic  = fu_dscrp.&lt;br /&gt;  lv_fctlg-tabname       = fu_tbnam.&lt;br /&gt;  lv_fctlg-fieldname     = fu_fname.&lt;br /&gt;  lv_fctlg-ref_tabname   = fu_reftb.&lt;br /&gt;  lv_fctlg-ref_fieldname = fu_refld.&lt;br /&gt;  lv_fctlg-no_out        = fu_noout.&lt;br /&gt;  lv_fctlg-outputlen     = fu_outln.&lt;br /&gt;  lv_fctlg-hotspot       = fu_hotsp.&lt;br /&gt;  lv_fctlg-just          = fu_jstfy.&lt;br /&gt;  lv_fctlg-do_sum        = fu_dosum.&lt;br /&gt;  lv_fctlg-row_pos       = fu_rowpos.&lt;br /&gt;  lv_fctlg-col_pos       = fu_colpos.&lt;br /&gt;  lv_fctlg-icon          = fu_icon.&lt;br /&gt;  lv_fctlg-sp_group      = fu_spgroup.&lt;br /&gt;  lv_fctlg-key_sel       = fu_keysel.&lt;br /&gt;  APPEND lv_fctlg TO ft_fctlg.&lt;br /&gt;ENDFORM.                               " F_ALV_BUILD_CATALOG&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_BUILD_CATALOG_CRNCY&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_catalog_crncy USING ft_fctlg TYPE slis_t_fieldcat_alv&lt;br /&gt;                         fu_tbnam fu_fname fu_dscrp&lt;br /&gt;                         fu_reftb fu_refld fu_outln fu_dosum&lt;br /&gt;                         fu_curky fu_cfild fu_ctbnm fu_jstfy&lt;br /&gt;                         fu_rowpos fu_colpos fu_noout.&lt;br /&gt;  DATA: lv_fctlg TYPE slis_fieldcat_alv,&lt;br /&gt;        ld_lngth TYPE i.&lt;br /&gt;  ld_lngth = STRLEN( fu_dscrp ).&lt;br /&gt;  IF ld_lngth &gt; 25.&lt;br /&gt;    lv_fctlg-seltext_l   = fu_dscrp.&lt;br /&gt;  ELSEIF ld_lngth &gt; 10.&lt;br /&gt;    lv_fctlg-seltext_l   = fu_dscrp.&lt;br /&gt;    lv_fctlg-seltext_m   = fu_dscrp.&lt;br /&gt;  ELSE.&lt;br /&gt;    lv_fctlg-seltext_s   = fu_dscrp.&lt;br /&gt;    lv_fctlg-seltext_m   = fu_dscrp.&lt;br /&gt;    lv_fctlg-seltext_l   = fu_dscrp.&lt;br /&gt;  ENDIF.&lt;br /&gt;  lv_fctlg-tabname       = fu_tbnam.&lt;br /&gt;  lv_fctlg-fieldname     = fu_fname.&lt;br /&gt;  lv_fctlg-ctabname      = fu_reftb.&lt;br /&gt;  lv_fctlg-cfieldname    = fu_refld.&lt;br /&gt;  lv_fctlg-outputlen     = fu_outln.&lt;br /&gt;  lv_fctlg-do_sum        = fu_dosum.&lt;br /&gt;  lv_fctlg-just          = fu_jstfy.&lt;br /&gt;  lv_fctlg-currency      = fu_curky.&lt;br /&gt;  lv_fctlg-cfieldname    = fu_cfild.&lt;br /&gt;  lv_fctlg-ctabname      = fu_ctbnm.&lt;br /&gt;  lv_fctlg-datatype      = 'CURR'.&lt;br /&gt;  lv_fctlg-row_pos       = fu_rowpos.&lt;br /&gt;  lv_fctlg-col_pos       = fu_colpos.&lt;br /&gt;  lv_fctlg-no_out        = fu_noout.&lt;br /&gt;  APPEND lv_fctlg TO ft_fctlg.&lt;br /&gt;ENDFORM.                    " F_ALV_BUILD_CATALOG_CRNCY&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_CATALOG_EXPNT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_catalog_expnt USING ft_fctlg TYPE slis_t_fieldcat_alv&lt;br /&gt;                         fu_tbnam fu_fname fu_dscrp&lt;br /&gt;                         fu_reftb fu_refld&lt;br /&gt;                         fu_outln fu_decml fu_expnt fu_jstfy&lt;br /&gt;                         fu_rowpos fu_colpos fu_noout.&lt;br /&gt;  DATA: lv_fctlg TYPE slis_fieldcat_alv,&lt;br /&gt;        ld_lngth TYPE i.&lt;br /&gt;  ld_lngth = STRLEN( fu_dscrp ).&lt;br /&gt;  IF ld_lngth &gt; 25.&lt;br /&gt;    lv_fctlg-seltext_l   = fu_dscrp.&lt;br /&gt;  ELSEIF ld_lngth &gt; 10.&lt;br /&gt;    lv_fctlg-seltext_l   = fu_dscrp.&lt;br /&gt;    lv_fctlg-seltext_m   = fu_dscrp.&lt;br /&gt;  ELSE.&lt;br /&gt;    lv_fctlg-seltext_s   = fu_dscrp.&lt;br /&gt;    lv_fctlg-seltext_m   = fu_dscrp.&lt;br /&gt;    lv_fctlg-seltext_l   = fu_dscrp.&lt;br /&gt;  ENDIF.&lt;br /&gt;  lv_fctlg-tabname       = fu_tbnam.&lt;br /&gt;  lv_fctlg-fieldname     = fu_fname.&lt;br /&gt;  lv_fctlg-ref_tabname   = fu_reftb.&lt;br /&gt;  lv_fctlg-ref_fieldname = fu_refld.&lt;br /&gt;  lv_fctlg-outputlen     = fu_outln.&lt;br /&gt;  lv_fctlg-decimals_out  = fu_decml.&lt;br /&gt;  lv_fctlg-exponent      = fu_expnt.&lt;br /&gt;  lv_fctlg-datatype      = 'FLTP'.&lt;br /&gt;  lv_fctlg-just          = fu_jstfy.&lt;br /&gt;  lv_fctlg-row_pos       = fu_rowpos.&lt;br /&gt;  lv_fctlg-col_pos       = fu_colpos.&lt;br /&gt;  lv_fctlg-no_out        = fu_noout.&lt;br /&gt;  APPEND lv_fctlg TO ft_fctlg.&lt;br /&gt;ENDFORM.                    " F_ALV_CATALOG_EXPNT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_BUILD_CATALOG_QTY&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; field catalog for quantity unit&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_catalog_qty USING ft_fctlg TYPE slis_t_fieldcat_alv&lt;br /&gt;                               fu_tbnam fu_fname fu_dscrp&lt;br /&gt;                               fu_reftb fu_refld fu_noout&lt;br /&gt;                               fu_outln fu_dosum fu_jstfy&lt;br /&gt;                               fu_meins fu_qfild fu_qtbnm&lt;br /&gt;                               fu_rowpos fu_colpos.&lt;br /&gt;  DATA: lv_fctlg TYPE slis_fieldcat_alv.&lt;br /&gt;&lt;br /&gt;  lv_fctlg-seltext_s     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_m     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_l     = fu_dscrp.&lt;br /&gt;  lv_fctlg-reptext_ddic  = fu_dscrp.&lt;br /&gt;  lv_fctlg-tabname       = fu_tbnam.&lt;br /&gt;  lv_fctlg-fieldname     = fu_fname.&lt;br /&gt;  lv_fctlg-ref_tabname   = fu_reftb.&lt;br /&gt;  lv_fctlg-ref_fieldname = fu_refld.&lt;br /&gt;  lv_fctlg-no_out        = fu_noout.&lt;br /&gt;  lv_fctlg-outputlen     = fu_outln.&lt;br /&gt;  lv_fctlg-do_sum        = fu_dosum.&lt;br /&gt;  lv_fctlg-just          = fu_jstfy.&lt;br /&gt;  lv_fctlg-quantity      = fu_meins.&lt;br /&gt;  lv_fctlg-qfieldname    = fu_qfild.&lt;br /&gt;  lv_fctlg-qtabname      = fu_qtbnm.&lt;br /&gt;  lv_fctlg-row_pos       = fu_rowpos.&lt;br /&gt;  lv_fctlg-col_pos       = fu_colpos.&lt;br /&gt;  APPEND lv_fctlg TO ft_fctlg.&lt;br /&gt;ENDFORM.                               " F_ALV_BUILD_CATALOG_QTY&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_BUILD_CATALOG_INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_catalog_input USING ft_fctlg TYPE slis_t_fieldcat_alv&lt;br /&gt;                               fu_tbnam fu_fname fu_dscrp&lt;br /&gt;                               fu_reftb fu_refld&lt;br /&gt;                               fu_noout fu_outln fu_hotsp fu_jstfy&lt;br /&gt;                               fu_dosum fu_rowpos fu_colpos&lt;br /&gt;                               fu_icon fu_spgroup fu_keysel&lt;br /&gt;                               fu_input fu_edit.&lt;br /&gt;  DATA: lv_fctlg TYPE slis_fieldcat_alv.&lt;br /&gt;&lt;br /&gt;  lv_fctlg-seltext_s     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_m     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_l     = fu_dscrp.&lt;br /&gt;  lv_fctlg-reptext_ddic  = fu_dscrp.&lt;br /&gt;  lv_fctlg-tabname       = fu_tbnam.&lt;br /&gt;  lv_fctlg-fieldname     = fu_fname.&lt;br /&gt;  lv_fctlg-ref_tabname   = fu_reftb.&lt;br /&gt;  lv_fctlg-ref_fieldname = fu_refld.&lt;br /&gt;  lv_fctlg-no_out        = fu_noout.&lt;br /&gt;  lv_fctlg-outputlen     = fu_outln.&lt;br /&gt;  lv_fctlg-hotspot       = fu_hotsp.&lt;br /&gt;  lv_fctlg-just          = fu_jstfy.&lt;br /&gt;  lv_fctlg-do_sum        = fu_dosum.&lt;br /&gt;  lv_fctlg-row_pos       = fu_rowpos.&lt;br /&gt;  lv_fctlg-col_pos       = fu_colpos.&lt;br /&gt;  lv_fctlg-icon          = fu_icon.&lt;br /&gt;  lv_fctlg-sp_group      = fu_spgroup.&lt;br /&gt;  lv_fctlg-key_sel       = fu_keysel.&lt;br /&gt;  lv_fctlg-input         = fu_input.&lt;br /&gt;  lv_fctlg-edit          = fu_edit.&lt;br /&gt;  APPEND lv_fctlg TO ft_fctlg.&lt;br /&gt;ENDFORM.                               " F_ALV_BUILD_CATALOG_INPUT&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_GET_CATALOG&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;* @FT_FCTLG = internal table to store field catalog result&lt;br /&gt;* @FU_TABLE = internal table name&lt;br /&gt;* @FU_STRCT = Table/Structure name&lt;br /&gt;* description: Purpose to get field attribute from data dictionary&lt;br /&gt;*              (Table/Structure) and save as ALV field catalog&lt;br /&gt;FORM f_alv_get_catalog TABLES ft_fctlg TYPE slis_t_fieldcat_alv&lt;br /&gt;                       USING  fu_table&lt;br /&gt;                              fu_strct.&lt;br /&gt;  DATA: ld_table TYPE slis_tabname,&lt;br /&gt;        ld_strct LIKE dd02l-tabname,&lt;br /&gt;        ld_fctlg TYPE slis_fieldcat_alv,&lt;br /&gt;        lt_fctlg TYPE slis_t_fieldcat_alv.&lt;br /&gt;  ld_table = fu_table.&lt;br /&gt;  ld_strct = fu_strct.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_internal_tabname     = ld_table&lt;br /&gt;      i_structure_name       = ld_strct&lt;br /&gt;      i_bypassing_buffer     = 'X'&lt;br /&gt;    CHANGING&lt;br /&gt;      ct_fieldcat            = lt_fctlg&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      inconsistent_interface = 1&lt;br /&gt;      program_error          = 2&lt;br /&gt;      OTHERS                 = 3.&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;  ENDIF.&lt;br /&gt;*  ld_fctlg-currency = 'IDR'.&lt;br /&gt;*  MODIFY lt_fctlg FROM ld_fctlg TRANSPORTING currency&lt;br /&gt;*    WHERE datatype EQ 'CURR'.&lt;br /&gt;  APPEND LINES OF lt_fctlg TO ft_fctlg.&lt;br /&gt;ENDFORM.                    " F_GET_CATALOG&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_LIST_DISPLAY&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Generate ALV classic display&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_list_display TABLES ft_table&lt;br /&gt;                        USING  fu_table TYPE slis_tabname&lt;br /&gt;                               fu_fsave.&lt;br /&gt;  d_alv_varnt-report = d_alv_repid.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;br /&gt;      EXPORTING&lt;br /&gt;            i_callback_program       = d_alv_repid&lt;br /&gt;            i_callback_pf_status_set = d_alv_stats&lt;br /&gt;            i_callback_user_command  = d_alv_ucomm&lt;br /&gt;*           I_STRUCTURE_NAME         =&lt;br /&gt;            is_layout                = d_alv_layout&lt;br /&gt;            it_fieldcat              = t_alv_fctlg&lt;br /&gt;            it_sort                  = t_alv_isort[]&lt;br /&gt;            i_default                = 'X'&lt;br /&gt;            i_save                   = fu_fsave&lt;br /&gt;            is_variant               = d_alv_varnt&lt;br /&gt;            it_events                = t_alv_event[]&lt;br /&gt;            is_print                 = d_alv_print&lt;br /&gt;            i_screen_start_column    = d_alv_screen_start_column&lt;br /&gt;            i_screen_start_line      = d_alv_screen_start_line&lt;br /&gt;            i_screen_end_column      = d_alv_screen_end_column&lt;br /&gt;            i_screen_end_line        = d_alv_screen_end_line&lt;br /&gt;       TABLES&lt;br /&gt;            t_outtab                 = ft_table[]&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            program_error            = 1&lt;br /&gt;            OTHERS                   = 2.&lt;br /&gt;ENDFORM.                    " F_ALV_LIST_DISPLAY&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM F_ALV_GRID_DISPLAY                                       *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       Generate ALV grid display                                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_grid_display TABLES ft_table.&lt;br /&gt;  d_alv_varnt-report = d_alv_repid.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_callback_program       = d_alv_repid&lt;br /&gt;      i_callback_pf_status_set = d_alv_stats&lt;br /&gt;      i_callback_user_command  = d_alv_ucomm&lt;br /&gt;      i_background_id          = d_alv_bg_id&lt;br /&gt;      is_layout                = d_alv_layout&lt;br /&gt;      it_fieldcat              = t_alv_fctlg&lt;br /&gt;      it_sort                  = t_alv_isort[]&lt;br /&gt;      i_default                = 'X'&lt;br /&gt;      i_save                   = d_alv_save&lt;br /&gt;      is_variant               = d_alv_varnt&lt;br /&gt;      it_events                = t_alv_event[]&lt;br /&gt;      is_print                 = d_alv_print&lt;br /&gt;      i_screen_start_column    = d_alv_screen_start_column&lt;br /&gt;      i_screen_start_line      = d_alv_screen_start_line&lt;br /&gt;      i_screen_end_column      = d_alv_screen_end_column&lt;br /&gt;      i_screen_end_line        = d_alv_screen_end_line&lt;br /&gt;    TABLES&lt;br /&gt;      t_outtab                 = ft_table&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      program_error            = 1&lt;br /&gt;      OTHERS                   = 2.&lt;br /&gt;ENDFORM.         " F_ALV_GRID_DISPLAY&lt;br /&gt;&lt;br /&gt;FORM f_alv_grid_display_neu TABLES ft_table&lt;br /&gt;                   USING  fu_scol fu_sline fu_ecol fu_eline fu_default.&lt;br /&gt;  d_alv_varnt-report = d_alv_repid.&lt;br /&gt;*  d_alv_layout-COLWIDTH_OPTIMIZE = 'X'.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_callback_program       = d_alv_repid&lt;br /&gt;      i_callback_pf_status_set = d_alv_stats&lt;br /&gt;      i_callback_user_command  = d_alv_ucomm&lt;br /&gt;      i_background_id          = d_alv_bg_id&lt;br /&gt;      is_layout                = d_alv_layout&lt;br /&gt;      it_fieldcat              = t_alv_fctlg&lt;br /&gt;      it_sort                  = t_alv_isort[]&lt;br /&gt;      i_default                = fu_default&lt;br /&gt;      i_save                   = d_alv_save&lt;br /&gt;      is_variant               = d_alv_varnt&lt;br /&gt;      it_events                = t_alv_event[]&lt;br /&gt;      is_print                 = d_alv_print&lt;br /&gt;      i_screen_start_column    = fu_scol&lt;br /&gt;      i_screen_start_line      = fu_sline&lt;br /&gt;      i_screen_end_column      = fu_ecol&lt;br /&gt;      i_screen_end_line        = fu_eline&lt;br /&gt;    TABLES&lt;br /&gt;      t_outtab                 = ft_table&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      program_error            = 1&lt;br /&gt;      OTHERS                   = 2.&lt;br /&gt;ENDFORM.         " F_ALV_GRID_DISPLAY_NEU&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_HIER_DISPLAY&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Generate ALV hierarchical display (header &amp; item level)&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_hier_display TABLES ft_headr&lt;br /&gt;                               ft_items&lt;br /&gt;                        USING  fu_headr TYPE slis_tabname&lt;br /&gt;                               fu_items TYPE slis_tabname&lt;br /&gt;                               fu_fsave.&lt;br /&gt;  d_alv_varnt-report = d_alv_repid.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_callback_program       = d_alv_repid&lt;br /&gt;      i_callback_pf_status_set = d_alv_stats&lt;br /&gt;      i_callback_user_command  = d_alv_ucomm&lt;br /&gt;      is_layout                = d_alv_layout&lt;br /&gt;      i_save                   = fu_fsave&lt;br /&gt;      it_fieldcat              = t_alv_fctlg&lt;br /&gt;      it_sort                  = t_alv_isort[]&lt;br /&gt;      it_events                = t_alv_event[]&lt;br /&gt;      is_variant               = d_alv_varnt&lt;br /&gt;      i_tabname_header         = fu_headr&lt;br /&gt;      i_tabname_item           = fu_items&lt;br /&gt;      is_keyinfo               = d_alv_qinfo&lt;br /&gt;      is_print                 = d_alv_print&lt;br /&gt;      i_screen_start_column    = d_alv_screen_start_column&lt;br /&gt;      i_screen_start_line      = d_alv_screen_start_line&lt;br /&gt;      i_screen_end_column      = d_alv_screen_end_column&lt;br /&gt;      i_screen_end_line        = d_alv_screen_end_line&lt;br /&gt;    TABLES&lt;br /&gt;      t_outtab_header          = ft_headr&lt;br /&gt;      t_outtab_item            = ft_items&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      program_error            = 1&lt;br /&gt;      OTHERS                   = 2.&lt;br /&gt;ENDFORM.                     " F_ALV_HIER_DISPLAY&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_GET_TABLES2&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_get_tables2 TABLES ft_headr ft_items.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_HS_TABLES_GET'&lt;br /&gt;    TABLES&lt;br /&gt;      et_outtab_master = ft_headr&lt;br /&gt;      et_outtab_detail = ft_items&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      no_infos         = 1&lt;br /&gt;      OTHERS           = 2.&lt;br /&gt;ENDFORM.                    " F_GET_TABLES&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM f_alv_get_tables                                         *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_get_tables1 TABLES ft_table.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_TABLES_GET'&lt;br /&gt;    TABLES&lt;br /&gt;      et_outtab = ft_table&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      no_infos  = 1&lt;br /&gt;      OTHERS    = 2.&lt;br /&gt;ENDFORM.                    " F_GET_TABLES&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_alv_variant_f4&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_variant_f4 CHANGING fc_varnt.&lt;br /&gt;  DATA: rs_variant LIKE disvariant.&lt;br /&gt;  rs_variant-report   = d_alv_repid.&lt;br /&gt;  rs_variant-username = sy-uname.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'&lt;br /&gt;    EXPORTING&lt;br /&gt;      is_variant = rs_variant&lt;br /&gt;      i_save     = 'A'&lt;br /&gt;    IMPORTING&lt;br /&gt;      es_variant = rs_variant&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      OTHERS     = 1.&lt;br /&gt;  IF sy-subrc = 0.&lt;br /&gt;    fc_varnt = rs_variant-variant.&lt;br /&gt;    p_vari = rs_variant-variant.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDFORM.                               " ALV_VARIANT_F4&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_alv_selscr_input&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       PAI of ALV selection screen&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_selscr_input.&lt;br /&gt;  DATA : rs_variant LIKE disvariant.&lt;br /&gt;&lt;br /&gt;  IF NOT p_vari IS INITIAL.&lt;br /&gt;    MOVE d_alv_varnt TO rs_variant.&lt;br /&gt;    MOVE p_vari TO rs_variant-variant.&lt;br /&gt;    CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_save     = d_alv_save&lt;br /&gt;      CHANGING&lt;br /&gt;        cs_variant = rs_variant.&lt;br /&gt;&lt;br /&gt;    d_alv_varnt = rs_variant.&lt;br /&gt;  ELSE.&lt;br /&gt;    CLEAR d_alv_varnt.&lt;br /&gt;    d_alv_varnt  = d_alv_repid.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " f_alv_selscr_input&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_BUILD_PRINT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&gt;P_D_ALV_PRINT  text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_build_print CHANGING fc_print TYPE slis_print_alv.&lt;br /&gt;&lt;br /&gt;  fc_print-no_print_listinfos = 'X'.&lt;br /&gt;  fc_print-no_print_selinfos = 'X'.&lt;br /&gt;  fc_print-no_coverpage = 'X'.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " F_BUILD_PRINT&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_ALV_BUILD_CATALOG_INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_build_catalog_checkbox&lt;br /&gt;                         USING ft_fctlg TYPE slis_t_fieldcat_alv&lt;br /&gt;                               fu_tbnam fu_fname fu_dscrp&lt;br /&gt;                               fu_reftb fu_refld&lt;br /&gt;                               fu_noout fu_outln fu_hotsp fu_jstfy&lt;br /&gt;                               fu_dosum fu_rowpos fu_colpos&lt;br /&gt;                               fu_icon fu_spgroup fu_keysel&lt;br /&gt;                               fu_input fu_edit fu_box.&lt;br /&gt;  DATA: lv_fctlg TYPE slis_fieldcat_alv.&lt;br /&gt;&lt;br /&gt;  lv_fctlg-seltext_s     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_m     = fu_dscrp.&lt;br /&gt;  lv_fctlg-seltext_l     = fu_dscrp.&lt;br /&gt;  lv_fctlg-reptext_ddic  = fu_dscrp.&lt;br /&gt;  lv_fctlg-tabname       = fu_tbnam.&lt;br /&gt;  lv_fctlg-fieldname     = fu_fname.&lt;br /&gt;  lv_fctlg-ref_tabname   = fu_reftb.&lt;br /&gt;  lv_fctlg-ref_fieldname = fu_refld.&lt;br /&gt;  lv_fctlg-no_out        = fu_noout.&lt;br /&gt;  lv_fctlg-outputlen     = fu_outln.&lt;br /&gt;  lv_fctlg-hotspot       = fu_hotsp.&lt;br /&gt;  lv_fctlg-just          = fu_jstfy.&lt;br /&gt;  lv_fctlg-do_sum        = fu_dosum.&lt;br /&gt;  lv_fctlg-row_pos       = fu_rowpos.&lt;br /&gt;  lv_fctlg-col_pos       = fu_colpos.&lt;br /&gt;  lv_fctlg-icon          = fu_icon.&lt;br /&gt;  lv_fctlg-sp_group      = fu_spgroup.&lt;br /&gt;  lv_fctlg-key_sel       = fu_keysel.&lt;br /&gt;  lv_fctlg-input         = fu_input.&lt;br /&gt;  lv_fctlg-edit          = fu_edit.&lt;br /&gt;  lv_fctlg-checkbox      = fu_box.&lt;br /&gt;  APPEND lv_fctlg TO ft_fctlg.&lt;br /&gt;ENDFORM.                               " F_ALV_BUILD_CATALOG_INPUT&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM F_ALV_GRID_DISPLAY_EXIT                                  *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       Generate ALV grid display with event exit                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_alv_grid_display_exit TABLES ft_table&lt;br /&gt;                                    ft_evt_exit TYPE slis_t_event_exit.&lt;br /&gt;&lt;br /&gt;  d_alv_varnt-report = d_alv_repid.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_callback_program       = d_alv_repid&lt;br /&gt;      i_callback_pf_status_set = d_alv_stats&lt;br /&gt;      i_callback_user_command  = d_alv_ucomm&lt;br /&gt;      i_background_id          = d_alv_bg_id&lt;br /&gt;      is_layout                = d_alv_layout&lt;br /&gt;      it_fieldcat              = t_alv_fctlg&lt;br /&gt;      it_sort                  = t_alv_isort[]&lt;br /&gt;      i_default                = 'X'&lt;br /&gt;      i_save                   = d_alv_save&lt;br /&gt;      is_variant               = d_alv_varnt&lt;br /&gt;      it_events                = t_alv_event[]&lt;br /&gt;      is_print                 = d_alv_print&lt;br /&gt;      it_event_exit            = ft_evt_exit[]&lt;br /&gt;      i_screen_start_column    = d_alv_screen_start_column&lt;br /&gt;      i_screen_start_line      = d_alv_screen_start_line&lt;br /&gt;      i_screen_end_column      = d_alv_screen_end_column&lt;br /&gt;      i_screen_end_line        = d_alv_screen_end_line&lt;br /&gt;    TABLES&lt;br /&gt;      t_outtab                 = ft_table&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      program_error            = 1&lt;br /&gt;      OTHERS                   = 2.&lt;br /&gt;ENDFORM.         " F_ALV_GRID_DISPLAY&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-7984637968770974206?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/7984637968770974206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=7984637968770974206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/7984637968770974206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/7984637968770974206'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2010/06/include-program-zabalv.html' title='include program : ZAB_ALV'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-4845201695893338625</id><published>2010-06-04T09:24:00.008+07:00</published><updated>2010-06-07T14:48:42.116+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Sample : ALV Report and Transfer to Excel with Macro defined on excel (make column lines)</title><content type='html'>Here's a report using simple ALV to display and transfer to Excel.&lt;br /&gt;And it run macro also, to create column lines.&lt;br /&gt;Place your excel template using tcode OAOR&lt;br /&gt;&lt;br /&gt;for include program, please refer to this link:&lt;br /&gt;&lt;a href="http://hannyandnotebook.blogspot.com/2010/06/include-program-zgenexcel.html"&gt;ZGEN_EXCEL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hannyandnotebook.blogspot.com/2010/06/include-program-zabalv.html"&gt;ZAB_ALV&lt;/a&gt;&lt;br /&gt;&lt;a href="http://spreadsheets.google.com/ccc?key=0Ant3Rk3LRGpcdDVvSm5qV25MMGpnMjB1RXFKbHpsc3c&amp;hl=in"&gt;File Excel (contain macro)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This program also contains :&lt;br /&gt;- how to get Material initial stock balance (MB5B) (include backposting - stock in transfer)&lt;br /&gt;- how to get Material end stock balance&lt;br /&gt;- how to get Quantity received or quantity required for MRP (MD04)&lt;br /&gt;- outstanding PO Qty&lt;br /&gt;- display the report using ALV and Excel&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;REPORT zmm_realisasi NO STANDARD PAGE HEADING LINE-SIZE 237.&lt;br /&gt;&lt;br /&gt;TABLES : mara, t001w, makt, mbewh, mardh.&lt;br /&gt;DATA : BEGIN OF t_mara OCCURS 0,&lt;br /&gt;         matnr LIKE mara-matnr,&lt;br /&gt;         meins LIKE mara-meins,&lt;br /&gt;         mtart LIKE mara-mtart,&lt;br /&gt;         maktx LIKE makt-maktx,&lt;br /&gt;       END OF t_mara,&lt;br /&gt;       BEGIN OF t_mbewh OCCURS 0,&lt;br /&gt;         matnr LIKE mbewh-matnr,&lt;br /&gt;         bwkey LIKE mbewh-bwkey,&lt;br /&gt;         lbkum LIKE mbewh-lbkum,&lt;br /&gt;       END OF t_mbewh,&lt;br /&gt;       BEGIN OF t_t_mbewh OCCURS 0,&lt;br /&gt;         matnr LIKE ekpo-matnr,&lt;br /&gt;         werks LIKE ekpo-werks,&lt;br /&gt;       END OF t_t_mbewh,&lt;br /&gt;       BEGIN OF t_mbew OCCURS 0,&lt;br /&gt;         matnr LIKE mbew-matnr,&lt;br /&gt;         bwkey LIKE mbew-bwkey,&lt;br /&gt;         lbkum LIKE mbew-lbkum,&lt;br /&gt;         lfgja LIKE mbew-lfgja,&lt;br /&gt;         lfmon LIKE mbew-lfmon,&lt;br /&gt;       END OF t_mbew,&lt;br /&gt;       BEGIN OF t_mardh OCCURS 0,&lt;br /&gt;         matnr LIKE mardh-matnr,&lt;br /&gt;         werks LIKE mardh-werks,&lt;br /&gt;         lgort LIKE mardh-lgort,&lt;br /&gt;         umlme LIKE mardh-umlme,&lt;br /&gt;       END OF t_mardh,&lt;br /&gt;       BEGIN OF t_qtypo OCCURS 0,&lt;br /&gt;         bedat LIKE ekko-bedat,&lt;br /&gt;         ebeln LIKE ekpo-ebeln,&lt;br /&gt;         ebelp LIKE ekpo-ebelp,&lt;br /&gt;         matnr LIKE ekpo-matnr,&lt;br /&gt;         werks LIKE ekpo-werks,&lt;br /&gt;         menge LIKE ekpo-menge,&lt;br /&gt;         elikz LIKE ekpo-elikz,&lt;br /&gt;       END OF t_qtypo,&lt;br /&gt;       BEGIN OF t_qtypo2 OCCURS 0,&lt;br /&gt;         matnr LIKE ekpo-matnr,&lt;br /&gt;         werks LIKE ekpo-werks,&lt;br /&gt;         menge LIKE ekpo-menge,&lt;br /&gt;       END OF t_qtypo2,&lt;br /&gt;       t_qtypooutst LIKE t_qtypo2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       BEGIN OF t_io OCCURS 0,&lt;br /&gt;         budat LIKE mkpf-budat,&lt;br /&gt;         mblnr LIKE mseg-mblnr,&lt;br /&gt;         zeile LIKE mseg-zeile,&lt;br /&gt;         werks LIKE mseg-werks,&lt;br /&gt;         matnr LIKE mseg-matnr,&lt;br /&gt;         bwart LIKE mseg-bwart,&lt;br /&gt;         shkzg LIKE mseg-shkzg,&lt;br /&gt;         menge LIKE mseg-menge,&lt;br /&gt;       END OF t_io,&lt;br /&gt;       BEGIN OF t_outpo OCCURS 0,&lt;br /&gt;         bedat LIKE ekko-bedat,&lt;br /&gt;         matnr LIKE ekpo-matnr,&lt;br /&gt;         werks LIKE ekpo-werks,&lt;br /&gt;         ebeln LIKE ekpo-ebeln,&lt;br /&gt;         ebelp LIKE ekpo-ebelp,&lt;br /&gt;         belnr LIKE ekbe-belnr,&lt;br /&gt;         buzei LIKE ekbe-buzei,&lt;br /&gt;         bwart LIKE ekbe-bwart,&lt;br /&gt;         menge LIKE ekbe-menge,&lt;br /&gt;       END OF t_outpo,&lt;br /&gt;*       begin of t_outpo occurs 0,&lt;br /&gt;*         bedat like ekko-bedat,&lt;br /&gt;*         matnr like ekpo-matnr,&lt;br /&gt;*         werks like ekpo-werks,&lt;br /&gt;*         ebeln like ekpo-ebeln,&lt;br /&gt;*         ebelp like ekpo-ebelp,&lt;br /&gt;*         bwart like ekbe-bwart,&lt;br /&gt;*         menge like ekbe-menge,&lt;br /&gt;*       end of t_outpo,&lt;br /&gt;* ekko~bedat&lt;br /&gt;*    ekpo~matnr ekpo~werks&lt;br /&gt;*    ekbe~ebeln ekbe~ebelp&lt;br /&gt;*    ekbe~bwart ekbe~menge&lt;br /&gt;       BEGIN OF t_input2 OCCURS 0,&lt;br /&gt;         matnr LIKE mseg-matnr,&lt;br /&gt;         werks LIKE mseg-werks,&lt;br /&gt;         menge LIKE mseg-menge,&lt;br /&gt;       END OF t_input2,&lt;br /&gt;       BEGIN OF t_rata2 OCCURS 0,&lt;br /&gt;         matnr LIKE mseg-matnr,&lt;br /&gt;         werks LIKE mseg-werks,&lt;br /&gt;         menge LIKE mseg-menge,&lt;br /&gt;         rbagi(1) TYPE p DECIMALS 0,&lt;br /&gt;       END OF t_rata2,&lt;br /&gt;       t_outpt2 LIKE t_input2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_kumi2 LIKE t_input2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_kumo2 LIKE t_input2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_other LIKE t_input2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_kumot LIKE t_input2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_outstx LIKE t_input2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_stockcur LIKE t_input2 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_io2 LIKE t_io OCCURS 0 WITH HEADER LINE,&lt;br /&gt;       t_iobck LIKE t_io OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;DATA : BEGIN OF t_data OCCURS 0,&lt;br /&gt;         matnr LIKE mara-matnr,&lt;br /&gt;         maktx LIKE makt-maktx,&lt;br /&gt;         meins LIKE mara-meins,&lt;br /&gt;         werks LIKE t001w-werks,&lt;br /&gt;         awal  LIKE mbewh-lbkum,&lt;br /&gt;         qtypo LIKE ekpo-menge,&lt;br /&gt;         input LIKE mseg-menge,&lt;br /&gt;         kumi  LIKE mseg-menge,&lt;br /&gt;         outst LIKE ekpo-menge,&lt;br /&gt;         estpk LIKE ekpo-menge,&lt;br /&gt;         outpt LIKE mseg-menge,&lt;br /&gt;         kumo  LIKE mseg-menge,&lt;br /&gt;         pctus LIKE ekpo-zwert,&lt;br /&gt;         other LIKE mseg-menge,&lt;br /&gt;         kumot LIKE mseg-menge,&lt;br /&gt;         akhir LIKE mbew-lbkum,&lt;br /&gt;         rata2 LIKE mseg-menge,&lt;br /&gt;         tod(8) TYPE p DECIMALS 0,  "   LIKE ekpo-zwert,&lt;br /&gt;&lt;br /&gt;       END OF t_data.&lt;br /&gt;&lt;br /&gt;DATA : v_year LIKE mbewh-lfgja,&lt;br /&gt;       v_lastmo LIKE mbewh-lfmon,&lt;br /&gt;       v_tglawal LIKE sy-datum,&lt;br /&gt;       v_trata_b LIKE sy-datum,&lt;br /&gt;       v_trata_e LIKE sy-datum,&lt;br /&gt;       x TYPE i,&lt;br /&gt;       v_var(30),&lt;br /&gt;       v_bln(2).&lt;br /&gt;DATA: w_msg(50).&lt;br /&gt;&lt;br /&gt;INCLUDE zab_alv.&lt;br /&gt;INCLUDE zgen_excel.&lt;br /&gt;&lt;br /&gt;**************************************&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.&lt;br /&gt;SELECT-OPTIONS : s_matnr FOR mara-matnr .&lt;br /&gt;SELECT-OPTIONS : s_werks FOR t001w-werks OBLIGATORY.&lt;br /&gt;PARAMETERS: p_mtart LIKE mara-mtart OBLIGATORY.&lt;br /&gt;PARAMETERS: p_date LIKE sy-datum OBLIGATORY.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN END OF BLOCK blk1.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK blc2 WITH FRAME TITLE text-s20.&lt;br /&gt;PARAMETERS     : rb_chk1  RADIOBUTTON  GROUP a DEFAULT 'X',&lt;br /&gt;                 rb_chk2  RADIOBUTTON  GROUP a.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK blc2.&lt;br /&gt;***************************************&lt;br /&gt;INITIALIZATION.&lt;br /&gt;* ALV init&lt;br /&gt;  PERFORM f_alv_init.&lt;br /&gt;&lt;br /&gt;AT SELECTION-SCREEN.&lt;br /&gt;  PERFORM authority_check CHANGING w_msg.&lt;br /&gt;  IF NOT w_msg IS INITIAL.&lt;br /&gt;    MESSAGE e398(00) WITH w_msg.&lt;br /&gt;    EXIT.&lt;br /&gt;  ENDIF.&lt;br /&gt;*--&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;  PERFORM f_getdata.&lt;br /&gt;  IF rb_chk1 = 'X'.&lt;br /&gt;    PERFORM f_displayalv.&lt;br /&gt;  ELSE.&lt;br /&gt;    WRITE:/ 'Transfer to excel complete !.'.&lt;br /&gt;    WRITE:/ 'Please save excel file before closing this page'.&lt;br /&gt;    PERFORM f_to_excel.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;FORM authority_check CHANGING msg.&lt;br /&gt;  DATA: BEGIN OF lit_t001w OCCURS 0,&lt;br /&gt;              werks LIKE t001w-werks,&lt;br /&gt;              END OF lit_t001w.&lt;br /&gt;  CLEAR msg.&lt;br /&gt;  SELECT werks&lt;br /&gt;         FROM t001w&lt;br /&gt;         INTO TABLE lit_t001w&lt;br /&gt;         WHERE werks IN s_werks.&lt;br /&gt;  IF lit_t001w[] IS INITIAL.&lt;br /&gt;    w_msg = 'Plant Not Found'.&lt;br /&gt;  ELSE.&lt;br /&gt;    LOOP AT lit_t001w.&lt;br /&gt;      AUTHORITY-CHECK OBJECT 'M_BEST_WRK'&lt;br /&gt;               ID 'ACTVT' FIELD '03'&lt;br /&gt;               ID 'WERKS' FIELD lit_t001w-werks.&lt;br /&gt;      IF sy-subrc &lt;&gt; 0.&lt;br /&gt;        CONCATENATE 'Not Authorized to Plant' lit_t001w-werks&lt;br /&gt;                    INTO w_msg&lt;br /&gt;                    SEPARATED BY space.&lt;br /&gt;        EXIT.&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDLOOP.                                                "lit_t001w&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDFORM. "authority_check&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  F_GETDATA&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_getdata.&lt;br /&gt;  DATA : v_estimasi_a LIKE mdps-mng01.&lt;br /&gt;&lt;br /&gt;  SELECT a~matnr a~meins a~mtart b~maktx&lt;br /&gt;    INTO CORRESPONDING FIELDS OF TABLE t_mara&lt;br /&gt;    FROM mara AS a INNER JOIN makt AS b&lt;br /&gt;    ON a~matnr = b~matnr&lt;br /&gt;    WHERE a~matnr IN s_matnr&lt;br /&gt;      AND a~mtart = p_mtart.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* TGL UTK RATA2 OUTPUT, AMBIL 4 BULAN KEBELAKANG, CURRENT TDK TRMSK.&lt;br /&gt;  CALL FUNCTION 'HR_PT_ADD_MONTH_TO_DATE'&lt;br /&gt;       EXPORTING&lt;br /&gt;            dmm_datin = p_date&lt;br /&gt;            dmm_count = '4'&lt;br /&gt;            dmm_oper  = '-'&lt;br /&gt;            dmm_pos   = space&lt;br /&gt;       IMPORTING&lt;br /&gt;            dmm_daout = v_trata_b.&lt;br /&gt;  v_trata_b+6(2) = '01'.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'HR_PT_ADD_MONTH_TO_DATE'&lt;br /&gt;       EXPORTING&lt;br /&gt;            dmm_datin = p_date&lt;br /&gt;            dmm_count = '1'&lt;br /&gt;            dmm_oper  = '-'&lt;br /&gt;            dmm_pos   = space&lt;br /&gt;       IMPORTING&lt;br /&gt;            dmm_daout = v_trata_e.&lt;br /&gt;  CALL FUNCTION 'LAST_DAY_OF_MONTHS'&lt;br /&gt;       EXPORTING&lt;br /&gt;            day_in            = v_trata_e&lt;br /&gt;       IMPORTING&lt;br /&gt;            last_day_of_month = v_trata_e.&lt;br /&gt;&lt;br /&gt;  v_year = v_trata_e(4).&lt;br /&gt;  v_lastmo = v_trata_e+4(2).&lt;br /&gt;&lt;br /&gt;  v_tglawal = p_date.&lt;br /&gt;  v_tglawal+6(2) = '01'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  IF NOT t_mara[] IS INITIAL.&lt;br /&gt;*   STOCK AWAL&lt;br /&gt;    SELECT * FROM mbewh&lt;br /&gt;      INTO CORRESPONDING FIELDS OF TABLE t_mbewh&lt;br /&gt;      FOR ALL ENTRIES IN t_mara&lt;br /&gt;      WHERE matnr = t_mara-matnr&lt;br /&gt;        AND bwkey IN s_werks&lt;br /&gt;        AND lfgja = v_year&lt;br /&gt;        AND lfmon = v_lastmo.&lt;br /&gt;*   stock awal - stock in transfer&lt;br /&gt;    SELECT * FROM mardh&lt;br /&gt;      INTO CORRESPONDING FIELDS OF TABLE t_mardh&lt;br /&gt;      FOR ALL ENTRIES IN t_mara&lt;br /&gt;      WHERE matnr = t_mara-matnr&lt;br /&gt;        AND werks IN s_werks&lt;br /&gt;        AND lfgja = v_year&lt;br /&gt;        AND lfmon = v_lastmo&lt;br /&gt;        AND umlme &gt; 0.&lt;br /&gt;&lt;br /&gt;*   STOCK AKHIR&lt;br /&gt;    SELECT * FROM mbew&lt;br /&gt;      INTO CORRESPONDING FIELDS OF TABLE t_mbew&lt;br /&gt;      FOR ALL ENTRIES IN t_mara&lt;br /&gt;      WHERE matnr = t_mara-matnr&lt;br /&gt;        AND bwkey IN s_werks.&lt;br /&gt;*        AND lfgja = p_date(4)&lt;br /&gt;*        AND lfmon = p_date+4(2).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*   QTY PO&lt;br /&gt;    SELECT ekko~bedat&lt;br /&gt;    ekpo~ebeln ekpo~ebelp ekpo~werks ekpo~matnr ekpo~menge ekpo~elikz&lt;br /&gt;    FROM ekko AS ekko&lt;br /&gt;    INNER JOIN ekpo AS ekpo ON ekko~ebeln = ekpo~ebeln&lt;br /&gt;    INTO CORRESPONDING FIELDS OF TABLE t_qtypo&lt;br /&gt;    FOR ALL ENTRIES IN t_mara&lt;br /&gt;*    WHERE ekko~bedat &gt;= v_tglawal AND ekko~bedat &lt;= p_date&lt;br /&gt;    WHERE ekko~bedat &lt;= p_date&lt;br /&gt;    AND ekpo~werks IN s_werks&lt;br /&gt;    AND ekpo~matnr = t_mara-matnr&lt;br /&gt;    AND ekpo~loekz NE 'L'.&lt;br /&gt;*   COLLECT QTY PO&lt;br /&gt;    LOOP AT t_qtypo.&lt;br /&gt;      IF t_qtypo-bedat &gt;= v_tglawal.&lt;br /&gt;*       qty po kolom F&lt;br /&gt;*        COLLECT t_qtypo INTO t_qtypo2.&lt;br /&gt;        READ TABLE t_qtypo2 WITH KEY matnr = t_qtypo-matnr.&lt;br /&gt;        IF sy-subrc = 0.&lt;br /&gt;          t_qtypo2-menge = t_qtypo2-menge + t_qtypo-menge.&lt;br /&gt;          MODIFY t_qtypo2 INDEX sy-tabix.&lt;br /&gt;        ELSE.&lt;br /&gt;          t_qtypo2-matnr = t_qtypo-matnr.&lt;br /&gt;          t_qtypo2-menge = t_qtypo-menge.&lt;br /&gt;          t_qtypo2-werks = t_qtypo-werks.&lt;br /&gt;          APPEND t_qtypo2.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDIF.&lt;br /&gt;*     qty all outstanding po per material&lt;br /&gt;      IF t_qtypo-elikz NE 'X'.&lt;br /&gt;        READ TABLE t_qtypooutst WITH KEY matnr = t_qtypo-matnr.&lt;br /&gt;        IF sy-subrc = 0.&lt;br /&gt;          t_qtypooutst-menge = t_qtypooutst-menge + t_qtypo-menge.&lt;br /&gt;          MODIFY t_qtypooutst INDEX sy-tabix.&lt;br /&gt;        ELSE.&lt;br /&gt;          t_qtypooutst-matnr = t_qtypo-matnr.&lt;br /&gt;          t_qtypooutst-menge = t_qtypo-menge.&lt;br /&gt;          t_qtypooutst-werks = t_qtypo-werks.&lt;br /&gt;          APPEND t_qtypooutst.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;*   INPUT HARI INI (P_DATE) DAN KUMULATIF (AWAL S/D P_DATE)&lt;br /&gt;*    SELECT mkpf~budat mseg~matnr mseg~bwart mseg~menge&lt;br /&gt;*    FROM mkpf AS mkpf&lt;br /&gt;*    INNER JOIN mseg AS mseg&lt;br /&gt;*    ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr&lt;br /&gt;*    INTO CORRESPONDING FIELDS OF TABLE t_io&lt;br /&gt;*    FOR ALL ENTRIES IN t_mara&lt;br /&gt;*    WHERE mkpf~budat &gt;= v_tglawal AND mkpf~budat &lt;= p_date&lt;br /&gt;*      AND mseg~matnr = t_mara-matnr&lt;br /&gt;*      AND mseg~werks IN s_werks&lt;br /&gt;*      AND mseg~bwart IN ('101', '102', '261', '262' ).&lt;br /&gt;&lt;br /&gt;    SELECT mkpf~budat mseg~mblnr mseg~zeile mseg~werks mseg~matnr&lt;br /&gt;           mseg~bwart mseg~shkzg mseg~menge&lt;br /&gt;    FROM mkpf AS mkpf&lt;br /&gt;    INNER JOIN mseg AS mseg&lt;br /&gt;    ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr&lt;br /&gt;    INTO CORRESPONDING FIELDS OF TABLE t_io&lt;br /&gt;    FOR ALL ENTRIES IN t_mara&lt;br /&gt;    WHERE mkpf~budat &gt;= v_trata_b AND mkpf~budat &lt;= p_date&lt;br /&gt;      AND mseg~matnr = t_mara-matnr&lt;br /&gt;      AND mseg~werks IN s_werks&lt;br /&gt;      AND mseg~xauto EQ space.&lt;br /&gt;*      AND mseg~bwart IN ('101', '102', '261', '262' ).&lt;br /&gt;&lt;br /&gt;*   all outstanding po, utk material2 selected di mbewh&lt;br /&gt;    IF NOT t_mbewh[] IS INITIAL.&lt;br /&gt;      LOOP AT t_mbewh.&lt;br /&gt;        t_t_mbewh-matnr = t_mbewh-matnr.&lt;br /&gt;        t_t_mbewh-werks = t_mbewh-bwkey.&lt;br /&gt;        APPEND t_t_mbewh.&lt;br /&gt;      ENDLOOP.&lt;br /&gt;      SELECT ekko~bedat&lt;br /&gt;      ekpo~ebeln ekpo~ebelp&lt;br /&gt;      ekpo~matnr ekpo~werks&lt;br /&gt;      ekbe~belnr ekbe~buzei ekbe~bwart ekbe~menge&lt;br /&gt;      FROM ekko AS ekko&lt;br /&gt;      INNER JOIN ekpo AS ekpo ON ekko~ebeln = ekpo~ebeln&lt;br /&gt;      INNER JOIN ekbe AS ekbe ON ekpo~ebeln = ekbe~ebeln&lt;br /&gt;                             AND ekpo~ebelp = ekbe~ebelp&lt;br /&gt;      INTO CORRESPONDING FIELDS OF TABLE t_outpo&lt;br /&gt;      FOR ALL ENTRIES IN t_t_mbewh&lt;br /&gt;      WHERE ( ekpo~elikz EQ space AND ekpo~loekz EQ space )&lt;br /&gt;        AND ekko~bedat &lt;= p_date&lt;br /&gt;        AND ekpo~matnr = t_t_mbewh-matnr&lt;br /&gt;        AND ekpo~werks = t_t_mbewh-werks&lt;br /&gt;        AND ekbe~budat &lt;= p_date.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*   calculate var pengurang total qty all po outst per mat&lt;br /&gt;      LOOP AT t_outpo.&lt;br /&gt;        IF t_outpo-bwart = '101' OR t_outpo-bwart = '123'.&lt;br /&gt;          READ TABLE t_outstx WITH KEY matnr = t_outpo-matnr&lt;br /&gt;                                       werks = t_outpo-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_outstx-menge = t_outstx-menge + t_outpo-menge.&lt;br /&gt;            MODIFY t_outstx INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_outstx-matnr = t_outpo-matnr.&lt;br /&gt;            t_outstx-menge = t_outpo-menge.&lt;br /&gt;            t_outstx-werks = t_outpo-werks.&lt;br /&gt;            APPEND t_outstx.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_outpo-bwart = '102' OR t_outpo-bwart = '122'.&lt;br /&gt;          READ TABLE t_outstx WITH KEY matnr = t_outpo-matnr&lt;br /&gt;                                       werks = t_outpo-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_outstx-menge = t_outstx-menge - t_outpo-menge.&lt;br /&gt;            MODIFY t_outstx INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_outstx-matnr = t_outpo-matnr.&lt;br /&gt;            t_outstx-menge = t_outpo-menge * - 1.&lt;br /&gt;            t_outstx-werks = t_outpo-werks.&lt;br /&gt;            APPEND t_outstx.&lt;br /&gt;          ENDIF.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDLOOP.&lt;br /&gt;    ENDIF.&lt;br /&gt;    DATA : v_tglx LIKE sy-datum,&lt;br /&gt;           var_menge LIKE mseg-menge.&lt;br /&gt;    SORT t_io BY budat werks mblnr matnr.&lt;br /&gt;    LOOP AT t_io.&lt;br /&gt;*---&lt;br /&gt;      IF t_io-budat = p_date.&lt;br /&gt;*        I/O HARI INI&lt;br /&gt;        IF t_io-bwart = '101'.&lt;br /&gt;          READ TABLE t_input2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_input2-menge = t_input2-menge + t_io-menge.&lt;br /&gt;            MODIFY t_input2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_input2-matnr = t_io-matnr.&lt;br /&gt;            t_input2-menge = t_io-menge.&lt;br /&gt;            t_input2-werks = t_io-werks.&lt;br /&gt;            APPEND t_input2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_io-bwart = '102'.&lt;br /&gt;          READ TABLE t_input2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_input2-menge = t_input2-menge - t_io-menge.&lt;br /&gt;            MODIFY t_input2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_input2-matnr = t_io-matnr.&lt;br /&gt;            t_input2-menge = t_io-menge * -1.&lt;br /&gt;            t_input2-werks = t_io-werks.&lt;br /&gt;            APPEND t_input2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_io-bwart = '261'.&lt;br /&gt;          READ TABLE t_outpt2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_outpt2-menge = t_outpt2-menge + t_io-menge.&lt;br /&gt;            MODIFY t_outpt2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_outpt2-matnr = t_io-matnr.&lt;br /&gt;            t_outpt2-menge = t_io-menge.&lt;br /&gt;            t_outpt2-werks = t_io-werks.&lt;br /&gt;            APPEND t_outpt2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_io-bwart = '262'.&lt;br /&gt;          READ TABLE t_outpt2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_outpt2-menge = t_outpt2-menge - t_io-menge.&lt;br /&gt;            MODIFY t_outpt2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_outpt2-matnr = t_io-matnr.&lt;br /&gt;            t_outpt2-menge = t_io-menge * -1.&lt;br /&gt;            t_outpt2-werks = t_io-werks.&lt;br /&gt;            APPEND t_outpt2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSE.&lt;br /&gt;*---&lt;br /&gt;*    OTHERS  - H = MINUS&lt;br /&gt;          IF t_io-shkzg = 'H'. t_io-menge = t_io-menge * -1. ENDIF.&lt;br /&gt;          READ TABLE t_other WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_other-menge = t_other-menge + t_io-menge.&lt;br /&gt;            MODIFY t_other INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_other-matnr = t_io-matnr.&lt;br /&gt;            t_other-menge = t_io-menge.&lt;br /&gt;            t_other-werks = t_io-werks.&lt;br /&gt;            APPEND t_other.&lt;br /&gt;          ENDIF.&lt;br /&gt;*         balikin lagi qty nya&lt;br /&gt;          IF t_io-shkzg = 'H'.&lt;br /&gt;            t_io-menge = t_io-menge * -1.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDIF.&lt;br /&gt;*---&lt;br /&gt;*     I/O KUM DAN OTHER KUM&lt;br /&gt;      IF t_io-budat &gt;= v_tglawal AND t_io-budat &lt;= p_date.&lt;br /&gt;        IF t_io-bwart = '101'.&lt;br /&gt;          READ TABLE t_kumi2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_kumi2-menge = t_kumi2-menge + t_io-menge.&lt;br /&gt;            MODIFY t_kumi2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_kumi2-matnr = t_io-matnr.&lt;br /&gt;            t_kumi2-menge = t_io-menge.&lt;br /&gt;            t_kumi2-werks = t_io-werks.&lt;br /&gt;            APPEND t_kumi2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_io-bwart = '102'.&lt;br /&gt;          READ TABLE t_kumi2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_kumi2-menge = t_kumi2-menge - t_io-menge.&lt;br /&gt;            MODIFY t_kumi2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_kumi2-matnr = t_io-matnr.&lt;br /&gt;            t_kumi2-menge = t_io-menge * -1.&lt;br /&gt;            t_kumi2-werks = t_io-werks.&lt;br /&gt;            APPEND t_kumi2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_io-bwart = '261'.&lt;br /&gt;          READ TABLE t_kumo2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_kumo2-menge = t_kumo2-menge + t_io-menge.&lt;br /&gt;            MODIFY t_kumo2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_kumo2-matnr = t_io-matnr.&lt;br /&gt;            t_kumo2-menge = t_io-menge.&lt;br /&gt;            t_kumo2-werks = t_io-werks.&lt;br /&gt;            APPEND t_kumo2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_io-bwart = '262'.&lt;br /&gt;          READ TABLE t_kumo2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_kumo2-menge = t_kumo2-menge - t_io-menge.&lt;br /&gt;            MODIFY t_kumo2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_kumo2-matnr = t_io-matnr.&lt;br /&gt;            t_kumo2-menge = t_io-menge * -1.&lt;br /&gt;            t_kumo2-werks = t_io-werks.&lt;br /&gt;            APPEND t_kumo2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSE.&lt;br /&gt;*---&lt;br /&gt;*       KUMULATIF OTHERS - H = MINUS&lt;br /&gt;          IF t_io-shkzg = 'H'. t_io-menge = t_io-menge * -1. ENDIF.&lt;br /&gt;          READ TABLE t_kumot WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            t_kumot-menge = t_kumot-menge + t_io-menge.&lt;br /&gt;            MODIFY t_kumot INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_kumot-matnr = t_io-matnr.&lt;br /&gt;            t_kumot-menge = t_io-menge.&lt;br /&gt;            t_kumot-werks = t_io-werks.&lt;br /&gt;            APPEND t_kumot.&lt;br /&gt;          ENDIF.&lt;br /&gt;*       balikin lagi qty nya&lt;br /&gt;          IF t_io-shkzg = 'H'. t_io-menge = t_io-menge * -1. ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;*---&lt;br /&gt;*       hitung stock current di mseg, S = MINUS&lt;br /&gt;        IF t_io-shkzg = 'S'. t_io-menge = t_io-menge * -1. ENDIF.&lt;br /&gt;        READ TABLE t_stockcur WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;        IF sy-subrc = 0.&lt;br /&gt;          t_stockcur-menge = t_stockcur-menge - t_io-menge.&lt;br /&gt;          MODIFY t_stockcur INDEX sy-tabix.&lt;br /&gt;        ELSE.&lt;br /&gt;          t_stockcur-matnr = t_io-matnr.&lt;br /&gt;          t_stockcur-menge = t_io-menge * -1.&lt;br /&gt;          t_stockcur-werks = t_io-werks.&lt;br /&gt;          APPEND t_stockcur.&lt;br /&gt;        ENDIF.&lt;br /&gt;*       balikin lagi qty nya&lt;br /&gt;        IF t_io-shkzg = 'S'. t_io-menge = t_io-menge * -1. ENDIF.&lt;br /&gt;&lt;br /&gt;      ENDIF.&lt;br /&gt;*---&lt;br /&gt;*    RATA2 OUTPUT&lt;br /&gt;      IF t_io-budat &gt;= v_trata_b&lt;br /&gt;        AND t_io-budat &lt;= v_trata_e&lt;br /&gt;        AND ( t_io-bwart = '261' OR t_io-bwart = '262' ) .&lt;br /&gt;        IF t_io-bwart = '261'.&lt;br /&gt;          READ TABLE t_rata2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            IF v_bln = t_io-budat+4(2).&lt;br /&gt;            ELSE.&lt;br /&gt;              t_rata2-rbagi = t_rata2-rbagi + 1.&lt;br /&gt;              v_bln = t_io-budat+4(2).&lt;br /&gt;            ENDIF.&lt;br /&gt;            t_rata2-menge = t_rata2-menge + t_io-menge.&lt;br /&gt;            MODIFY t_rata2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_rata2-matnr = t_io-matnr.&lt;br /&gt;            t_rata2-menge = t_io-menge.&lt;br /&gt;            t_rata2-werks = t_io-werks.&lt;br /&gt;            t_rata2-rbagi = 1.&lt;br /&gt;            v_bln = t_io-budat+4(2).&lt;br /&gt;            APPEND t_rata2.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ELSEIF t_io-bwart = '262'.&lt;br /&gt;          READ TABLE t_rata2 WITH KEY matnr = t_io-matnr&lt;br /&gt;                                       werks = t_io-werks.&lt;br /&gt;          IF sy-subrc = 0.&lt;br /&gt;            IF v_bln = t_io-budat+4(2).&lt;br /&gt;            ELSE.&lt;br /&gt;              t_rata2-rbagi = t_rata2-rbagi + 1.&lt;br /&gt;              v_bln = t_io-budat+4(2).&lt;br /&gt;            ENDIF.&lt;br /&gt;            t_rata2-menge = t_rata2-menge - t_io-menge.&lt;br /&gt;            MODIFY t_rata2 INDEX sy-tabix.&lt;br /&gt;          ELSE.&lt;br /&gt;            t_rata2-matnr = t_io-matnr.&lt;br /&gt;            t_rata2-menge = t_io-menge * -1.&lt;br /&gt;            t_rata2-werks = t_io-werks.&lt;br /&gt;            t_rata2-rbagi = 1.&lt;br /&gt;            v_bln = t_io-budat+4(2).&lt;br /&gt;            APPEND t_rata2.&lt;br /&gt;          ENDIF.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;*       count jumlah bulan utk variable pembagi rata2&lt;br /&gt;*        if v_bln = t_io-budat+4(2).&lt;br /&gt;*&lt;br /&gt;*        else.&lt;br /&gt;*          v_monthr = v_monthr + 1.&lt;br /&gt;*          v_bln = t_io-budat+4(2).&lt;br /&gt;*        endif.&lt;br /&gt;&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*  COMBINE ALL DATA INTO 1 TABLE.&lt;br /&gt;  SORT t_mara BY matnr.&lt;br /&gt;  SORT t_mbewh BY matnr bwkey.&lt;br /&gt;  SORT t_mbew BY matnr bwkey.&lt;br /&gt;  SORT t_qtypo BY matnr werks.&lt;br /&gt;  SORT t_input2 BY matnr werks.&lt;br /&gt;  SORT t_outpt2 BY matnr werks.&lt;br /&gt;  SORT t_kumi2 BY matnr werks.&lt;br /&gt;  SORT t_kumo2 BY matnr werks.&lt;br /&gt;  SORT t_rata2 BY matnr werks.&lt;br /&gt;  SORT t_other BY matnr werks.&lt;br /&gt;  SORT t_kumot BY matnr werks.&lt;br /&gt;* HEADER EXCEL&lt;br /&gt;  CONCATENATE 'Tgl. ' p_date+6(2) '-' p_date+4(2) '-' p_date(4)&lt;br /&gt;          INTO  v_var SEPARATED BY space.&lt;br /&gt;  PERFORM modify_to_cell USING 9 2 v_var.&lt;br /&gt;&lt;br /&gt;  x = 7.&lt;br /&gt;  LOOP AT t_mbewh.&lt;br /&gt;    CLEAR t_data.&lt;br /&gt;    v_estimasi_a = 0.&lt;br /&gt;*   MATERIAL DATA&lt;br /&gt;    t_data-matnr = t_mbewh-matnr.&lt;br /&gt;    READ TABLE t_mara WITH KEY matnr = t_mbewh-matnr.&lt;br /&gt;    t_data-maktx = t_mara-maktx.&lt;br /&gt;    t_data-meins = t_mara-meins.&lt;br /&gt;    t_data-werks = t_mbewh-bwkey.&lt;br /&gt;&lt;br /&gt;*   STOCK AWAL&lt;br /&gt;    t_data-awal = t_mbewh-lbkum.&lt;br /&gt;    var_menge = 0.&lt;br /&gt;*   stock awal v.4 - ditambahkan dengan transaksi back-posting.&lt;br /&gt;    SELECT mkpf~budat mseg~mblnr mseg~zeile mseg~werks mseg~matnr&lt;br /&gt;           mseg~bwart mseg~shkzg mseg~menge&lt;br /&gt;    FROM mkpf AS mkpf&lt;br /&gt;    INNER JOIN mseg AS mseg&lt;br /&gt;    ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr&lt;br /&gt;    INTO CORRESPONDING FIELDS OF TABLE t_iobck&lt;br /&gt;    WHERE mkpf~budat &lt;= v_trata_e AND mkpf~bldat &gt; v_trata_e&lt;br /&gt;      AND mseg~matnr = t_data-matnr&lt;br /&gt;      AND mseg~werks = t_data-werks.&lt;br /&gt;    IF NOT t_iobck[] IS INITIAL.&lt;br /&gt;      LOOP AT t_iobck.&lt;br /&gt;        IF t_iobck-bwart EQ '321' OR t_iobck-bwart EQ '322' OR&lt;br /&gt;           t_iobck-bwart EQ '343' OR t_iobck-bwart EQ '344' OR&lt;br /&gt;           t_iobck-bwart EQ '349' OR t_iobck-bwart EQ '350' .&lt;br /&gt;        ELSE.&lt;br /&gt;          IF t_iobck-shkzg = 'H'.&lt;br /&gt;            t_iobck-menge = t_iobck-menge * -1.&lt;br /&gt;          ENDIF.&lt;br /&gt;          var_menge = var_menge + t_iobck-menge.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDLOOP.&lt;br /&gt;      t_data-awal = t_data-awal + var_menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;*   stock awal v.4 - dikurangi dengan stock in transfer&lt;br /&gt;    LOOP AT t_mardh WHERE matnr = t_data-matnr AND werks = t_data-werks.&lt;br /&gt;      t_data-awal = t_data-awal - t_mardh-umlme.&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*   QTY PO&lt;br /&gt;    READ TABLE t_qtypo2 WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-qtypo = t_qtypo2-menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;*   INPUT HARI INI&lt;br /&gt;    READ TABLE t_input2 WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-input = t_input2-menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;*   KUM INPUT&lt;br /&gt;    READ TABLE t_kumi2 WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-kumi = t_kumi2-menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*   OUTSTANDING PO QTY, ALL PO QTY DARI SEJAK LIVE - EKBE(BWART 101,102,&lt;br /&gt;*123,122)&lt;br /&gt;    t_data-outst = 0.&lt;br /&gt;    READ TABLE t_qtypooutst WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                     werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      READ TABLE t_outstx WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                     werks = t_mbewh-bwkey.&lt;br /&gt;      IF sy-subrc = 0.&lt;br /&gt;        t_data-outst = t_qtypooutst-menge - t_outstx-menge.&lt;br /&gt;      ELSE.&lt;br /&gt;        t_data-outst = t_qtypooutst-menge.&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*   OUTPUT HARI INI&lt;br /&gt;    READ TABLE t_outpt2 WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                 werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-outpt = t_outpt2-menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;*   KUM OUTPUT&lt;br /&gt;    READ TABLE t_kumo2 WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-kumo = t_kumo2-menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*   ESTIMASI PAKAI&lt;br /&gt;    PERFORM f_get_md01 USING v_tglawal t_mbewh-matnr t_mbewh-bwkey&lt;br /&gt;                  CHANGING v_estimasi_a.&lt;br /&gt;    t_data-estpk = v_estimasi_a + t_data-kumo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*   PERSEN USAGE&lt;br /&gt;    IF t_data-estpk = 0.&lt;br /&gt;      t_data-pctus = 0.&lt;br /&gt;    ELSE.&lt;br /&gt;      t_data-pctus = ( t_data-kumo / t_data-estpk ) * 100.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*   OTHERS&lt;br /&gt;    READ TABLE t_other WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-other = t_other-menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*   KUM OTHER&lt;br /&gt;    READ TABLE t_kumot WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-kumot = t_kumot-menge.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;**   STOCK AKHIR, v.2&lt;br /&gt;    t_data-akhir = 0.&lt;br /&gt;    IF p_date = sy-datum.&lt;br /&gt;*     kalau hari ini, brati ambil dari mbew lfgja dan lfmon = now.&lt;br /&gt;      READ TABLE t_mbew WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                 bwkey = t_mbewh-bwkey&lt;br /&gt;                                 lfgja = sy-datum(4)&lt;br /&gt;                                 lfmon = sy-datum+4(2).&lt;br /&gt;      IF sy-subrc = 0 AND t_mbew-lbkum &gt; 0.&lt;br /&gt;        t_data-akhir = t_mbew-lbkum.&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDIF.&lt;br /&gt;    IF t_data-akhir = 0.&lt;br /&gt;*     stock awal + transaksi   (stock cur)&lt;br /&gt;      READ TABLE t_stockcur WITH KEY matnr = t_data-matnr&lt;br /&gt;                                     werks = t_data-werks.&lt;br /&gt;      IF sy-subrc = 0.&lt;br /&gt;        t_data-akhir = t_data-awal + t_stockcur-menge.&lt;br /&gt;      ELSE.&lt;br /&gt;        t_data-akhir = t_data-awal .&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;*   kalau masih 0 juga, pake cara trakhir.&lt;br /&gt;    IF t_data-akhir = 0.&lt;br /&gt;      DATA : temp_mbewh LIKE mbewh OCCURS 0 WITH HEADER LINE,&lt;br /&gt;             v_mbewh(6), var_ok(1).&lt;br /&gt;*      CARI DATA DARI T_MBEWH TRAKHIR YG LBKUM &gt; 0.&lt;br /&gt;      SELECT * FROM mbewh&lt;br /&gt;        INTO CORRESPONDING FIELDS OF TABLE temp_mbewh&lt;br /&gt;*        FOR ALL ENTRIES IN t_mara&lt;br /&gt;        WHERE matnr = t_mbewh-matnr&lt;br /&gt;          AND bwkey = t_mbewh-bwkey&lt;br /&gt;          AND lbkum &gt; 0 ORDER BY lfgja DESCENDING lfmon DESCENDING.&lt;br /&gt;*  ditambah dgn transaksi dari awal bulan selanjutnya - tgl yg diinput&lt;br /&gt;      CLEAR : var_ok.&lt;br /&gt;      LOOP AT temp_mbewh.&lt;br /&gt;        CONCATENATE temp_mbewh-lfgja temp_mbewh-lfmon INTO v_mbewh.&lt;br /&gt;        var_ok = 'N'.&lt;br /&gt;        IF v_mbewh &lt; p_date(6).&lt;br /&gt;          var_ok = 'Y'.&lt;br /&gt;          EXIT.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDLOOP.&lt;br /&gt;      IF var_ok NE 'Y'.&lt;br /&gt;        CLEAR temp_mbewh.&lt;br /&gt;        t_data-akhir = 0.&lt;br /&gt;      ELSE.&lt;br /&gt;        v_tglx = '00000000'.&lt;br /&gt;*     ambil transaksi dari awal bulan temp_mbewh-lfmon + 1 smp p_date&lt;br /&gt;        CONCATENATE temp_mbewh-lfgja temp_mbewh-lfmon '01' INTO v_tglx.&lt;br /&gt;&lt;br /&gt;        var_menge = 0.&lt;br /&gt;        CLEAR t_io2.&lt;br /&gt;        REFRESH t_io2.&lt;br /&gt;        CALL FUNCTION 'HR_PT_ADD_MONTH_TO_DATE'&lt;br /&gt;             EXPORTING&lt;br /&gt;                  dmm_datin = v_tglx&lt;br /&gt;                  dmm_count = '1'&lt;br /&gt;                  dmm_oper  = '+'&lt;br /&gt;                  dmm_pos   = space&lt;br /&gt;             IMPORTING&lt;br /&gt;                  dmm_daout = v_tglx.&lt;br /&gt;&lt;br /&gt;        SELECT mkpf~budat mseg~mblnr mseg~zeile mseg~werks mseg~matnr&lt;br /&gt;               mseg~bwart mseg~shkzg mseg~menge&lt;br /&gt;        FROM mkpf AS mkpf&lt;br /&gt;        INNER JOIN mseg AS mseg&lt;br /&gt;        ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr&lt;br /&gt;        INTO CORRESPONDING FIELDS OF TABLE t_io2&lt;br /&gt;        WHERE mkpf~budat &gt;= v_tglx AND mkpf~budat &lt;= p_date&lt;br /&gt;          AND mseg~matnr = t_data-matnr&lt;br /&gt;          AND mseg~werks = t_data-werks.&lt;br /&gt;        LOOP AT t_io2.&lt;br /&gt;          IF t_io2-bwart EQ '321' OR t_io2-bwart EQ '322' OR&lt;br /&gt;             t_io2-bwart EQ '343' OR t_io2-bwart EQ '344' OR&lt;br /&gt;             t_io2-bwart EQ '349' OR t_io2-bwart EQ '350' .&lt;br /&gt;          ELSE.&lt;br /&gt;            IF t_io2-shkzg = 'H'. t_io2-menge = t_io2-menge * -1. ENDIF.&lt;br /&gt;            var_menge = var_menge + t_io2-menge.&lt;br /&gt;          ENDIF.&lt;br /&gt;        ENDLOOP.&lt;br /&gt;        t_data-akhir = temp_mbewh-lbkum + var_menge.&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDIF.&lt;br /&gt;*   RATA2 OUTPUT&lt;br /&gt;    READ TABLE t_rata2 WITH KEY matnr = t_mbewh-matnr&lt;br /&gt;                                werks = t_mbewh-bwkey.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      t_data-rata2 = t_rata2-menge / t_rata2-rbagi.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*   T O D&lt;br /&gt;    IF t_data-akhir = 0 OR t_data-rata2 = 0.&lt;br /&gt;      t_data-tod = 0.&lt;br /&gt;    ELSE.&lt;br /&gt;      t_data-tod = t_data-akhir / ( t_data-rata2 / 25 ) .&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*   filter yg 0 ga usah di add.&lt;br /&gt;    IF t_data-awal = 0&lt;br /&gt;       AND t_data-qtypo = 0&lt;br /&gt;       AND t_data-input = 0&lt;br /&gt;       AND t_data-kumi = 0&lt;br /&gt;       AND t_data-outst = 0&lt;br /&gt;       AND t_data-estpk = 0&lt;br /&gt;       AND t_data-kumo = 0&lt;br /&gt;       AND t_data-pctus = 0&lt;br /&gt;       AND t_data-other = 0&lt;br /&gt;       AND t_data-kumot = 0&lt;br /&gt;       AND t_data-akhir = 0&lt;br /&gt;       AND t_data-rata2 = 0&lt;br /&gt;       AND t_data-tod = 0.&lt;br /&gt;    ELSE.&lt;br /&gt;      APPEND t_data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*   PREPARE EXCEL&lt;br /&gt;      PERFORM modify_to_cell USING 1 x t_data-matnr.&lt;br /&gt;      PERFORM modify_to_cell USING 2 x t_data-maktx.&lt;br /&gt;      PERFORM modify_to_cell USING 3 x t_data-meins.&lt;br /&gt;      PERFORM modify_to_cell USING 4 x t_data-werks.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 5 x t_data-awal.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 6 x t_data-qtypo.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 7 x t_data-input.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 8 x t_data-kumi.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 9 x t_data-outst.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 10 x t_data-estpk.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 11 x t_data-outpt.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 12 x t_data-kumo.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 13 x t_data-pctus.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 14 x t_data-other.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 15 x t_data-kumot.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 16 x t_data-akhir.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 17 x t_data-rata2.&lt;br /&gt;      PERFORM append_to_cell USING 'C' 18 x t_data-tod.&lt;br /&gt;&lt;br /&gt;      x = x + 1.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;  x = x - 7.&lt;br /&gt;  PERFORM modify_to_cell USING 1 1 x.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " F_GETDATA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_get_md01&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&gt;P_V_TGLAWAL  text&lt;br /&gt;*      --&gt;P_V_MATNR  text&lt;br /&gt;*      --&gt;P_V_WERKS  text&lt;br /&gt;*      &lt;--P_V_ESTIMASI_A  text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_get_md01 USING    p_v_tglawal&lt;br /&gt;                         p_v_matnr&lt;br /&gt;                         p_v_werks&lt;br /&gt;                CHANGING p_v_estimasi_a.&lt;br /&gt;&lt;br /&gt;  TYPES:&lt;br /&gt;  BEGIN OF m61x_mdlg_r,&lt;br /&gt;    sign(1),&lt;br /&gt;    option(2),&lt;br /&gt;    low LIKE mdlg-lgort,&lt;br /&gt;    high LIKE mdlg-lgort,&lt;br /&gt;  END OF m61x_mdlg_r.&lt;br /&gt;&lt;br /&gt;  TYPES:&lt;br /&gt;  BEGIN OF m61x_mdll_r,&lt;br /&gt;    sign(1),&lt;br /&gt;    option(2),&lt;br /&gt;    low LIKE mdll-lbear,&lt;br /&gt;    high LIKE mdll-lbear,&lt;br /&gt;  END OF m61x_mdll_r.&lt;br /&gt;&lt;br /&gt;  TYPES:&lt;br /&gt;  m61x_mdlg_range TYPE m61x_mdlg_r OCCURS 0,&lt;br /&gt;  m61x_mdll_range TYPE m61x_mdll_r OCCURS 0.&lt;br /&gt;  DATA: BEGIN OF v_cm61b,&lt;br /&gt;          disfg LIKE t000md-disfg,&lt;br /&gt;          dbxxx TYPE c,&lt;br /&gt;          berid LIKE mdlv-berid,&lt;br /&gt;          berty LIKE mdlv-berty,&lt;br /&gt;          bertx LIKE mdlv-bertx,&lt;br /&gt;          werzg LIKE mdlv-werzg,&lt;br /&gt;          ortzg LIKE mdlv-ortzg,&lt;br /&gt;          lbear LIKE mdll-lbear,&lt;br /&gt;          mdlgx_range TYPE m61x_mdlg_range,                 " OCCURS 0,&lt;br /&gt;          mdlgy_range TYPE m61x_mdlg_range,                 " OCCURS 0,&lt;br /&gt;          mdlly_range TYPE m61x_mdll_range,&lt;br /&gt;          sobsl LIKE mdma-sobsl,&lt;br /&gt;          disgr LIKE mdma-disgr,&lt;br /&gt;        END OF v_cm61b.&lt;br /&gt;&lt;br /&gt;  DATA v_mt61d LIKE mt61d.&lt;br /&gt;  DATA v_cm61x LIKE cm61x.&lt;br /&gt;  DATA v_cm61w LIKE cm61w.&lt;br /&gt;  DATA v_t399d LIKE t399d.&lt;br /&gt;  DATA v_mdkp LIKE mdkp .&lt;br /&gt;  DATA v_cm61m LIKE cm61m .&lt;br /&gt;&lt;br /&gt;*MRP table used in MD04&lt;br /&gt;  DATA i_mdpsx LIKE mdps OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;  DATA :&lt;br /&gt;          p_v_tglakhir LIKE sy-datum.&lt;br /&gt;*get akhir bulan&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'LAST_DAY_OF_MONTHS'&lt;br /&gt;       EXPORTING&lt;br /&gt;            day_in            = p_v_tglawal&lt;br /&gt;       IMPORTING&lt;br /&gt;            last_day_of_month = p_v_tglakhir.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'MD_READ_MATERIAL'&lt;br /&gt;       EXPORTING&lt;br /&gt;            ewerks = p_v_werks&lt;br /&gt;            ematnr = p_v_matnr&lt;br /&gt;       IMPORTING&lt;br /&gt;            imt61d = v_mt61d&lt;br /&gt;            icm61b = v_cm61b&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            error  = 1&lt;br /&gt;            OTHERS = 2.&lt;br /&gt;*if no record found, write out error&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;*    MESSAGE e000(vz) WITH 'MD_READ_MATERIAL failed on' v_matnr v_werks.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'MD_READ_PLANT'&lt;br /&gt;       EXPORTING&lt;br /&gt;            ewerks = p_v_werks&lt;br /&gt;       IMPORTING&lt;br /&gt;            icm61w = v_cm61w&lt;br /&gt;            it399d = v_t399d&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            error  = 01.&lt;br /&gt;&lt;br /&gt;*CONSTRUCT MDPSX ANNOUNCEMENTS&lt;br /&gt;  CALL FUNCTION 'AUFBAUEN_MDPSX_ANZEIGEN'&lt;br /&gt;       EXPORTING&lt;br /&gt;            ecm61w = v_cm61w&lt;br /&gt;            ecm61x = v_cm61x&lt;br /&gt;            emt61d = v_mt61d&lt;br /&gt;            et399d = v_t399d&lt;br /&gt;            ecm61b = v_cm61b&lt;br /&gt;       IMPORTING&lt;br /&gt;            icm61m = v_cm61m&lt;br /&gt;            imdkp  = v_mdkp&lt;br /&gt;       TABLES&lt;br /&gt;            mdpsx  = i_mdpsx.&lt;br /&gt;&lt;br /&gt;*if no record, write out error&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;*    MESSAGE e000(vz) WITH 'MD04 read failed' v_matnr v_werks.&lt;br /&gt;  ELSE .&lt;br /&gt;    CALL FUNCTION 'PRUEFEN_UMTERMINIERUNG'&lt;br /&gt;         EXPORTING&lt;br /&gt;              ecm61m = v_cm61m&lt;br /&gt;              ecm61w = v_cm61w&lt;br /&gt;              emdkp  = v_mdkp&lt;br /&gt;              et399d = v_t399d&lt;br /&gt;         TABLES&lt;br /&gt;              mdpsx  = i_mdpsx.&lt;br /&gt;    LOOP AT i_mdpsx.&lt;br /&gt;      IF i_mdpsx-dat00 &gt;= p_v_tglawal AND i_mdpsx-dat00 &lt;= p_v_tglakhir&lt;br /&gt;         AND i_mdpsx-plumi = '-'.&lt;br /&gt;*        IF i_mdpsx-plumi = '+'.&lt;br /&gt;*          i_mdpsx-mng01 = i_mdpsx-mng01 * -1.&lt;br /&gt;*        ENDIF.&lt;br /&gt;        p_v_estimasi_a = p_v_estimasi_a  + i_mdpsx-mng01.&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDLOOP.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDFORM.                    " f_get_md01&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_displayalv&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_displayalv.&lt;br /&gt;* ALV Layout&lt;br /&gt;  PERFORM f_alv_build_layout  USING :&lt;br /&gt;        'ZEBRA' 'X',&lt;br /&gt;        'NO_COLHEAD' '',&lt;br /&gt;        'GROUP_CHANGE_EDIT' 'X',&lt;br /&gt;        'F2CODE' 'F2'.&lt;br /&gt;* Sort Field&lt;br /&gt;*  perform f_alv_sort   using:&lt;br /&gt;*        'T_DATA' 'ERDAT' 'X' '' ''.&lt;br /&gt;* print setup&lt;br /&gt;  PERFORM f_build_print USING d_alv_print.&lt;br /&gt;  PERFORM f_create_header.&lt;br /&gt;  PERFORM f_alv_build_event USING:&lt;br /&gt;    slis_ev_top_of_page 'F_TOP_OF_PAGE', "c_top_of_page_alv,&lt;br /&gt;    slis_ev_user_command c_user_command.&lt;br /&gt;&lt;br /&gt;* ALV Fieldcat&lt;br /&gt;  PERFORM f_build_fieldcat.&lt;br /&gt;* Execute ALV Function&lt;br /&gt;  d_alv_varnt-variant = p_vari.&lt;br /&gt;*  PERFORM f_alv_grid_display TABLES t_data.&lt;br /&gt;*  clear t_header.&lt;br /&gt;*  PERFORM f_top_of_page_alv.&lt;br /&gt;  PERFORM f_alv_grid_display TABLES t_data.&lt;br /&gt;**                             using  '' d_alv_save.&lt;br /&gt;*  perform f_alv_list_display tables t_data&lt;br /&gt;*                             using  '' d_alv_save.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " f_displayalv&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_build_fieldcat&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Build Fieldcat ALV&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_build_fieldcat .&lt;br /&gt;  PERFORM f_alv_build_catalog USING :&lt;br /&gt;    t_alv_fctlg 'T_DATA' 'MATNR' 'Material' '' ''&lt;br /&gt;      '' '10' '' 'X' '' '1' '1' '' '' '',&lt;br /&gt;    t_alv_fctlg 'T_DATA' 'MAKTX' 'Material Desc' '' ''&lt;br /&gt;      '' '30' '' 'X' '' '1' '2' '' '' '',&lt;br /&gt;    t_alv_fctlg 'T_DATA' 'MEINS' 'BaseUnit' '' ''&lt;br /&gt;      '' '8' '' 'X' '' '1' '3' '' '' '',&lt;br /&gt;    t_alv_fctlg 'T_DATA' 'WERKS' 'Plant' '' ''&lt;br /&gt;      '' '6' '' 'X' '' '1' '4' '' '' ''.&lt;br /&gt;&lt;br /&gt;  PERFORM f_alv_build_catalog_qty USING:&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'AWAL' 'Stock Awal'&lt;br /&gt;    'MBEWH' 'LBKUM' '' '16' '' '' '' 'MEINS' '' '1' '5',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'QTYPO' 'QTY Po'&lt;br /&gt;    'EKPO' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '6',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'INPUT' 'Input - HariIni'&lt;br /&gt;    'MSEG' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '7',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'KUMI' 'Input - Kumulatif'&lt;br /&gt;    'MSEG' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '8',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'OUTST' 'Outstanding PO'&lt;br /&gt;    'EKPO' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '9',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'ESTPK' 'Estimasi Pakai'&lt;br /&gt;    'EKPO' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '10',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'OUTPT' 'Output - HariIni'&lt;br /&gt;    'MSEG' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '11',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'KUMO' 'Output - Kumulatif'&lt;br /&gt;    'MSEG' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '12'.&lt;br /&gt;&lt;br /&gt;  PERFORM f_alv_build_catalog_crncy USING:&lt;br /&gt;    t_alv_fctlg 'T_DATA' 'PCTUS' '% Usage'&lt;br /&gt;    'EKPO' 'ZWERT' '16' '' '' 'WAERS' '' '' '1' '13' ''.&lt;br /&gt;&lt;br /&gt;  PERFORM f_alv_build_catalog_qty USING:&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'OTHER' 'Other - Hari ini'&lt;br /&gt;    'EKPO' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '14',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'KUMOT' 'Other - Kumulatif'&lt;br /&gt;    'MSEG' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '15',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'AKHIR' 'Stock Akhir'&lt;br /&gt;    'MBEW' 'LBKUM' '' '16' '' '' '' 'MEINS' '' '1' '16',&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'RATA2' 'Rata-rata Output'&lt;br /&gt;    'MSEG' 'MENGE' '' '16' '' '' '' 'MEINS' '' '1' '17'.&lt;br /&gt;&lt;br /&gt;  PERFORM f_alv_build_catalog_qty USING:&lt;br /&gt;  t_alv_fctlg 'T_DATA' 'TOD' 'T O D'&lt;br /&gt;    'EKPO' 'UMREZ' '' '16' '' '' '' 'MEINS' '' '1' '18'.&lt;br /&gt;&lt;br /&gt;*  perform f_alv_build_catalog_crncy using:&lt;br /&gt;*    t_alv_fctlg 'T_DATA' 'TOD' 'T O D'&lt;br /&gt;*    'EKPO' 'UMREZ' '16' '' '' 'WAERS' '' '' '1' '17' ''.&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_to_excel&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_to_excel.&lt;br /&gt;  CALL SCREEN 8999.&lt;br /&gt;ENDFORM.                    " f_to_excel&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_8999  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE status_8999 OUTPUT.&lt;br /&gt;  SET PF-STATUS '8999'.&lt;br /&gt;  SET TITLEBAR '8999'.&lt;br /&gt;&lt;br /&gt;ENDMODULE.                 " STATUS_8999  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  m_init  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE m_init OUTPUT.&lt;br /&gt;  DATA : w_para TYPE i.&lt;br /&gt;  PERFORM connect_to_excel USING ''                    "Excel in SAP&lt;br /&gt;                                 'ZMM'                 "Object Name&lt;br /&gt;                                 'ZMM'                 "Object ID&lt;br /&gt;                                 'TEMP_ZMM_REALISASI'  "Descr&lt;br /&gt;                                 ''                    "Status Logo&lt;br /&gt;                                 ''.                   "Logo&lt;br /&gt;  PERFORM select_new_sheet USING 'Sheet1'.&lt;br /&gt;  PERFORM formatting_rangesdef_tab.&lt;br /&gt;  PERFORM set_data.&lt;br /&gt;&lt;br /&gt;*--&lt;br /&gt;  PERFORM run_macro_param USING 'kotak_ok'&lt;br /&gt;                          w_para 'Sheet1'&lt;br /&gt;                          '' '' '' '' '' '' '' '' '' '' ''.&lt;br /&gt;&lt;br /&gt;  PERFORM close_excel_link.&lt;br /&gt;  LEAVE TO SCREEN 0.&lt;br /&gt;ENDMODULE.                 " m_init  OUTPUT&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  f_create_header&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM f_create_header.&lt;br /&gt;  DATA: l_wa_listheader  TYPE slis_listheader,&lt;br /&gt;        lv_date1(10),&lt;br /&gt;        lv_date2(10).&lt;br /&gt;&lt;br /&gt;  l_wa_listheader-typ  = 'H'.&lt;br /&gt;  l_wa_listheader-key   = 'LAPORAN REALISASI HARIAN'.&lt;br /&gt;  l_wa_listheader-info = 'LAPORAN REALISASI HARIAN'.&lt;br /&gt;  APPEND l_wa_listheader TO t_header.&lt;br /&gt;&lt;br /&gt;  l_wa_listheader-typ  = 'A'.&lt;br /&gt;  l_wa_listheader-key   = 'LAPORAN REALISASI HARIAN'.&lt;br /&gt;  CONCATENATE p_date+6(2) p_date+4(2) p_date(4) INTO&lt;br /&gt;  l_wa_listheader-info&lt;br /&gt;  SEPARATED BY '/'.&lt;br /&gt;  CONCATENATE 'Tgl. :' l_wa_listheader-info INTO&lt;br /&gt;  l_wa_listheader-info SEPARATED BY space.&lt;br /&gt;  APPEND l_wa_listheader TO t_header.&lt;br /&gt;ENDFORM.                    " f_create_header&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM F_TOP_OF_PAGE                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       TOP-OF-PAGE                                                   *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_top_of_page.&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;br /&gt;       EXPORTING&lt;br /&gt;            it_list_commentary = t_header.&lt;br /&gt;ENDFORM.     "F_TOP_OF_PAGE&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM append_to_cell                                           *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  P_CT                                                          *&lt;br /&gt;*  --&gt;  P_COLS                                                        *&lt;br /&gt;*  --&gt;  P_ROWS                                                        *&lt;br /&gt;*  --&gt;  P_VALUE                                                       *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM append_to_cell USING p_ct p_cols p_rows&lt;br /&gt;                             CHANGING p_value.&lt;br /&gt;  DATA : lv_value(18).&lt;br /&gt;  lv_value = p_value.&lt;br /&gt;  IF p_ct = 'C'.&lt;br /&gt;    PERFORM f_format_xx USING p_value CHANGING lv_value.&lt;br /&gt;  ENDIF.&lt;br /&gt;  struc_generic-column = p_cols.&lt;br /&gt;  struc_generic-row = p_rows.&lt;br /&gt;  struc_generic-value = lv_value.&lt;br /&gt;  APPEND struc_generic TO tcontents.&lt;br /&gt;ENDFORM.                    " append_to_cell&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM f_format_xx                                              *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  FV_AMO                                                        *&lt;br /&gt;*  --&gt;  FV_AMOUNT                                                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM f_format_xx USING fv_amo CHANGING fv_amount TYPE format_amount.&lt;br /&gt;  DATA : p_val TYPE p DECIMALS 2,&lt;br /&gt;         y TYPE i, x TYPE i.&lt;br /&gt;  p_val = fv_amo.&lt;br /&gt;  IF p_val &lt; 0.&lt;br /&gt;    p_val = p_val * -1.&lt;br /&gt;    WRITE p_val TO fv_amount CURRENCY 'USD'.&lt;br /&gt;    CONCATENATE '-' fv_amount INTO fv_amount.&lt;br /&gt;  ELSE.&lt;br /&gt;    WRITE p_val TO fv_amount CURRENCY 'USD'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  CONDENSE fv_amount NO-GAPS.&lt;br /&gt;ENDFORM.                    " f_format_xx&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-4845201695893338625?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/4845201695893338625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=4845201695893338625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4845201695893338625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4845201695893338625'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2010/06/sample-alv-report-and-transfer-to-excel.html' title='Sample : ALV Report and Transfer to Excel with Macro defined on excel (make column lines)'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-4907170840328542058</id><published>2010-06-04T09:20:00.002+07:00</published><updated>2010-06-04T09:24:31.887+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><title type='text'>Activate VOFM - Maintain : Requirement &amp; Formula</title><content type='html'>To Activate all routines on tcode VOFM, simply just open se38, program name : RV80HGEN, and Execute. All routines will activate in current client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-4907170840328542058?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/4907170840328542058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=4907170840328542058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4907170840328542058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4907170840328542058'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2010/06/activate-vofm-maintain-requirement.html' title='Activate VOFM - Maintain : Requirement &amp; Formula'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-504628681197009866</id><published>2010-06-04T09:11:00.002+07:00</published><updated>2010-06-04T09:20:28.906+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Get number of first week base on calender view</title><content type='html'>How to get number of first week in a month base on calender view.&lt;br /&gt;For example : on year 2010 month 01, number of first week is 2009 - &lt;span style="font-weight: bold;"&gt;54&lt;/span&gt;&lt;br /&gt;and on year 2010 month 02, number of first week is 2010 - &lt;span style="font-weight: bold;"&gt;05&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; REPORT ZMM_GET_FIRST_WEEK.&lt;br /&gt; DATA: W_DATE LIKE SY-DATUM,&lt;br /&gt;       W_DATE_VALUE TYPE I,&lt;br /&gt;       W_SISA TYPE I,&lt;br /&gt;       W_WEEK LIKE SCAL-WEEK.&lt;br /&gt; DATA: W_YY(4), W_MM(2).&lt;br /&gt; PARAMETERS: P_YYMM(6) TYPE N.&lt;br /&gt; START-OF-SELECTION.&lt;br /&gt;   CONCATENATE P_YYMM '01' INTO W_DATE.&lt;br /&gt;*--&lt;br /&gt;   CALL FUNCTION 'DATE_GET_WEEK'&lt;br /&gt;     EXPORTING&lt;br /&gt;       DATE               = W_DATE&lt;br /&gt;     IMPORTING&lt;br /&gt;       WEEK               = W_WEEK&lt;br /&gt;     EXCEPTIONS&lt;br /&gt;       DATE_INVALID       = 1&lt;br /&gt;       OTHERS             = 2.&lt;br /&gt;*--             .&lt;br /&gt;   W_DATE_VALUE = W_DATE.&lt;br /&gt;   W_SISA = W_DATE_VALUE MOD 7.&lt;br /&gt;   IF W_SISA &gt;= 2 AND W_SISA &lt;= 5.&lt;br /&gt;     WRITE: / 'WEEK =', W_WEEK.&lt;br /&gt;   ELSE.&lt;br /&gt;     W_YY = W_WEEK+0(4).&lt;br /&gt;     W_MM = W_WEEK+4(2).&lt;br /&gt;     IF W_MM = 52.&lt;br /&gt;       W_YY = W_YY + 1.&lt;br /&gt;       W_MM = 1.&lt;br /&gt;     ELSE.&lt;br /&gt;       W_MM = W_MM + 1.&lt;br /&gt;     ENDIF.&lt;br /&gt;     CONCATENATE W_YY W_MM INTO W_WEEK.&lt;br /&gt;     WRITE: / 'WEEK =', W_WEEK.&lt;br /&gt;   ENDIF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-504628681197009866?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/504628681197009866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=504628681197009866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/504628681197009866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/504628681197009866'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2010/06/get-number-of-first-week-base-on.html' title='Get number of first week base on calender view'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-3591711826949366442</id><published>2008-07-23T15:27:00.003+07:00</published><updated>2008-07-23T15:33:37.341+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Change program in QA client ?</title><content type='html'>Sometimes when DEV client don’t have the proper data and sometimes when SAP do their some weird action (you know what I mean did u ? heheh) then it will takes thousands changes (hehehe is it??) when you do trial n error to repair some programs/tables/something in QA client. And when you found it error you need to go back to DEV client to repair it, and create a Change Request Number, and then transport it again to QA client, and again and again.&lt;br /&gt;Have you ever think how many wasted CRs created just because of it ?&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Well, my colleague gave me a tips for this. You can directly change programs/tables in QA client and see the result of it. You can do trial and error right away in your QA client (yes, right away in your QA client, means you don’t need to code in DEV and create CRs and transport). And after you satisfied with the result in QA, you can go back to DEV client, do the same thing with your programs/tables, create CRs and transport it to QA (replaced) and PROD. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;This is the tips :&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In QA client,&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Open 2      session se38, one session for program &lt;span style="font-weight: bold;"&gt;LSTRDU34&lt;/span&gt; and another is &lt;span style="font-weight: bold;"&gt;LSTRDU44&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Find      this FM : &lt;span style="font-style: italic;"&gt;TR_EDIT_CHECK_OBJECTS_KEYS&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;After      that FM lines block, find the &lt;span style="font-style: italic;"&gt;sy-subrc&lt;/span&gt; result, and put a breakpoint on      that.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Ok,      open new session se38 again, entry your program, or se11 for your tables, or      &lt;span style=""&gt; &lt;/span&gt;etc.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Click      Change program, when the debugger stopped at &lt;span style="font-style: italic;"&gt;sy-subrc&lt;/span&gt; you’ve set, change      the &lt;span style="font-style: italic;"&gt;sy-subrc&lt;/span&gt; result from 12 or 4, to &lt;span style="font-style: italic; font-weight: bold;"&gt;sy-subrc = 0&lt;/span&gt;.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;See      the result.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;You      can activate the programs also with this tips.&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Enjoy&lt;/span&gt;! But be careful, because sometimes (possibly) :&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;you      enjoy changing in QA so much until when you go back to DEV you forgot what      things you’ve done in QA hehehe.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;This      can be done in PROD also, but this is depending on your authorization to      change field contents in debugger.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-3591711826949366442?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/3591711826949366442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=3591711826949366442' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3591711826949366442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3591711826949366442'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/07/change-program-in-qa-client.html' title='Change program in QA client ?'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-988144503447247936</id><published>2008-07-14T13:28:00.001+07:00</published><updated>2008-07-14T13:33:22.683+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Create MIRO with GL reference and Profitability segment using BAPI</title><content type='html'>Purpose : Create MIRO with GL reference and Profitability segment using BAPI.&lt;br /&gt;Function Module : BAPI_INCOMINGINVOICE_CREATE&lt;br /&gt;&lt;br /&gt;Field used : &lt;br /&gt;*** HEADERDATA – 1 row&lt;br /&gt;   MIRO_HEADER-INVOICE_IND = 'X'.&lt;br /&gt;   MIRO_HEADER-DOC_TYPE  = 'RE'.&lt;br /&gt;   MIRO_HEADER-DOC_DATE  =&lt;br /&gt;   MIRO_HEADER-PSTNG_DATE  = SY-DATUM.&lt;br /&gt;   MIRO_HEADER-REF_DOC_NO  = [ reference PO number from that GR ]&lt;br /&gt;   MIRO_HEADER-PO_REF_NO  = [ dummy PO – all item deleted ]&lt;br /&gt;   MIRO_HEADER-COMP_CODE = [ company code ]&lt;br /&gt;   MIRO_HEADER-DIFF_INV = [ vendor code ]&lt;br /&gt;   MIRO_HEADER-BUS_AREA = [ business area ]&lt;br /&gt;   MIRO_HEADER-CURRENCY = [ currency used on MIRO doc ]&lt;br /&gt;   MIRO_HEADER-EXCH_RATE = 1.&lt;br /&gt;   MIRO_HEADER-ALLOC_NMBR = [ allocation number, on my case I use same number with ref_doc_no ]&lt;br /&gt;   MIRO_HEADER-HEADER_TXT = [header text] &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*** TAXDATA – 1 row&lt;br /&gt;   MIRO_HEADER-ITEM_TEXT = [header text]&lt;br /&gt;   MIRO_TAX-TAX_CODE = [tax code]&lt;br /&gt;&lt;br /&gt;*** MATERIALDATA – 1 row [in my case I use only 1 material]&lt;br /&gt;MIRO_MAT-INVOICE_DOC_ITEM = [sequence number]&lt;br /&gt;MIRO_MAT-MATERIAL = [material number]&lt;br /&gt;MIRO_MAT-VAL_AREA = [plant]&lt;br /&gt;MIRO_MAT-DB_CR_IND = 'S'.&lt;br /&gt;MIRO_MAT-ITEM_AMOUNT = [value amount]&lt;br /&gt;MIRO_MAT-QUANTITY = [value quantity]&lt;br /&gt;MIRO_MAT-BASE_UOM = [unit]&lt;br /&gt;MIRO_MAT-BASE_UOM_ISO = [unit]&lt;br /&gt;MIRO_MAT-TAX_CODE = [tax code]&lt;br /&gt;&lt;br /&gt;*** GLACCOUNTDATA – multiple row, according to GL account related to journal&lt;br /&gt;    MIRO_GL-INVOICE_DOC_ITEM = [line number - sequence]&lt;br /&gt;    MIRO_GL-GL_ACCOUNT = [GL account]&lt;br /&gt;    MIRO_GL-ITEM_AMOUNT = [GL value amount]&lt;br /&gt;    MIRO_GL-DB_CR_IND = 'H'.&lt;br /&gt;    MIRO_GL-COMP_CODE = [company code]&lt;br /&gt;    MIRO_GL-TAX_CODE = [tax code]&lt;br /&gt;    MIRO_GL-BUS_area = [business area]&lt;br /&gt;&lt;br /&gt;*** RUN THE BAPI&lt;br /&gt;   CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'&lt;br /&gt;      EXPORTING&lt;br /&gt;        HEADERDATA                = miro_header&lt;br /&gt;      IMPORTING&lt;br /&gt;        INVOICEDOCNUMBER          = result_invoice&lt;br /&gt;        FISCALYEAR                = result_invoice_year&lt;br /&gt;      TABLES&lt;br /&gt;        ITEMDATA                  = miro_item&lt;br /&gt;        TAXDATA                   = miro_tax&lt;br /&gt;        GLACCOUNTDATA             = miro_gl&lt;br /&gt;        MATERIALDATA              = miro_mat&lt;br /&gt;        RETURN                    = return.&lt;br /&gt;&lt;br /&gt;*** INVOICE NUMBER&lt;br /&gt; RESULT_INVOICE&lt;br /&gt; RESULT_INVOICE_YEAR&lt;br /&gt;&lt;br /&gt;*** YOU NEED TO COMMIT THE TRANSACTION, OTHERWISE THE INVOICE NUMBER WONT BE SAVED COMPLETELY&lt;br /&gt;&lt;br /&gt;  IF RESULT_INVOICE NE SPACE.&lt;br /&gt;     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'&lt;br /&gt;      EXPORTING&lt;br /&gt;        WAIT          = 'X'.&lt;br /&gt;  ENDIF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-988144503447247936?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/988144503447247936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=988144503447247936' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/988144503447247936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/988144503447247936'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/07/create-miro-with-gl-reference-and.html' title='Create MIRO with GL reference and Profitability segment using BAPI'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-6645128933922157050</id><published>2008-07-03T15:40:00.004+07:00</published><updated>2008-07-14T13:42:28.812+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Checking is there any UserExit attached ?</title><content type='html'>&lt;span style="font-family:Trebuchet MS;font-size:85%;"&gt;This program is for checking UserExit attached in a tcode.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;-----------------------------------------------------------------------------------&lt;br /&gt;REPORT ZARSTEST .&lt;br /&gt;TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.&lt;br /&gt;TABLES : tstct.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;br /&gt;DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.&lt;br /&gt;DATA : field1(30).&lt;br /&gt;DATA : v_devclass LIKE tadir-devclass.&lt;br /&gt;&lt;br /&gt;PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY.&lt;br /&gt;&lt;br /&gt;SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.&lt;br /&gt;IF sy-subrc EQ 0.&lt;br /&gt;SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR'&lt;br /&gt;AND object = 'PROG'&lt;br /&gt;AND obj_name = tstc-pgmna. "'SAPLITO0'.&lt;br /&gt;MOVE : tadir-devclass TO v_devclass.&lt;br /&gt;IF sy-subrc NE 0.&lt;br /&gt;SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna.&lt;br /&gt;IF trdir-subc EQ 'F'.&lt;br /&gt;SELECT SINGLE * FROM tfdir WHERE pname = tstc-pgmna.&lt;br /&gt;SELECT SINGLE * FROM enlfdir WHERE funcname = tfdir-funcname.&lt;br /&gt;SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR'&lt;br /&gt;AND object = 'FUGR'&lt;br /&gt;AND obj_name EQ enlfdir-area.&lt;br /&gt;MOVE : tadir-devclass TO v_devclass.&lt;br /&gt;ENDIF.&lt;br /&gt;ENDIF.&lt;br /&gt;SELECT * FROM tadir INTO TABLE jtab&lt;br /&gt;WHERE pgmid = 'R3TR'&lt;br /&gt;AND object IN ('SMOD', 'SXSD')&lt;br /&gt;AND devclass = v_devclass.&lt;br /&gt;SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND&lt;br /&gt;tcode EQ p_tcode.&lt;br /&gt;&lt;br /&gt;FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.&lt;br /&gt;WRITE:/(19) 'Transaction Code - ',&lt;br /&gt;20(20) p_tcode,&lt;br /&gt;45(50) tstct-ttext.&lt;br /&gt;SKIP.&lt;br /&gt;IF NOT jtab[] IS INITIAL.&lt;br /&gt;WRITE:/(95) sy-uline.&lt;br /&gt;FORMAT COLOR COL_HEADING INTENSIFIED ON.&lt;br /&gt;WRITE:/1 sy-vline,&lt;br /&gt;2 'Exit Name',&lt;br /&gt;21 sy-vline ,&lt;br /&gt;22 'Description',&lt;br /&gt;95 sy-vline.&lt;br /&gt;WRITE:/(95) sy-uline.&lt;br /&gt;&lt;br /&gt;LOOP AT jtab.&lt;br /&gt;SELECT SINGLE * FROM modsapt&lt;br /&gt;WHERE sprsl = sy-langu AND&lt;br /&gt;name = jtab-obj_name.&lt;br /&gt;FORMAT COLOR COL_NORMAL INTENSIFIED OFF.&lt;br /&gt;WRITE:/1 sy-vline,&lt;br /&gt;2 jtab-obj_name HOTSPOT ON,&lt;br /&gt;21 sy-vline ,&lt;br /&gt;22 modsapt-modtext,&lt;br /&gt;95 sy-vline.&lt;br /&gt;ENDLOOP.&lt;br /&gt;&lt;br /&gt;WRITE:/(95) sy-uline.&lt;br /&gt;DESCRIBE TABLE jtab.&lt;br /&gt;SKIP.&lt;br /&gt;FORMAT COLOR COL_TOTAL INTENSIFIED ON.&lt;br /&gt;WRITE:/ 'No of Exits:' , sy-tfill.&lt;br /&gt;ELSE.&lt;br /&gt;FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.&lt;br /&gt;WRITE:/(95) 'No User Exit exists'.&lt;br /&gt;ENDIF.&lt;br /&gt;ELSE.&lt;br /&gt;FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.&lt;br /&gt;WRITE:/(95) 'Transaction Code Does Not Exist'.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;AT LINE-SELECTION.&lt;br /&gt;GET CURSOR FIELD field1.&lt;br /&gt;CHECK field1(4) EQ 'JTAB'.&lt;br /&gt;READ TABLE jtab with key obj_name = sy-lisel+1(19).&lt;br /&gt;IF jtab-object = 'SMOD'.&lt;br /&gt;SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).&lt;br /&gt;CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.&lt;br /&gt;ELSE.&lt;br /&gt;SET PARAMETER ID 'EXN' FIELD sy-lisel+1(19).&lt;br /&gt;CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.&lt;br /&gt;ENDIF.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;[Copy from one of my senior colleague, many Thanks ! ]&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-6645128933922157050?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/6645128933922157050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=6645128933922157050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/6645128933922157050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/6645128933922157050'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/07/checking-is-there-any-userexit-attached.html' title='Checking is there any UserExit attached ?'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-5923841123929014673</id><published>2008-07-03T14:31:00.005+07:00</published><updated>2008-07-03T16:09:08.629+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>[Sample] Very Simple ALV and join with conversion MEINS</title><content type='html'>&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp; Report  ZMM_OUTPAC&lt;br /&gt;*&amp;amp;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;strong&gt;*&amp;amp; This report is for view outstanding PO qty &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;strong&gt;*&amp;amp; with material PO type = ZPAC using a Very Simple ALV method&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;strong&gt;*&amp;amp; (MONITORING OUTSTANDING ORDER PACKAGING REPORT)&lt;br /&gt;*&amp;amp; and a sample how to get converted MEINS (unit of measure) from a select statement&lt;/strong&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;REPORT  zmm_outpac LINE-SIZE 273 LINE-COUNT 35 NO STANDARD PAGE HEADING.&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Table description&lt;br /&gt;TABLES : ekko, ekpo, eket, eban, mara, makt, lfa1, mseg, t006a.&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Data description&lt;br /&gt;DATA : BEGIN OF itab OCCURS 0,&lt;br /&gt;           no(3),&lt;br /&gt;           matnr LIKE mara-matnr,&lt;br /&gt;           txz01 LIKE ekpo-txz01,&lt;br /&gt;           MSEH3 LIKE T006A-MSEH3,&lt;br /&gt;           badat LIKE eban-badat,&lt;br /&gt;           banfn LIKE ekpo-banfn,&lt;br /&gt;           bnfpo LIKE ekpo-bnfpo,&lt;br /&gt;           bedat LIKE ekko-bedat,&lt;br /&gt;           ebeln LIKE ekpo-ebeln,&lt;br /&gt;           ebelp LIKE ekpo-ebeln,&lt;br /&gt;           menge LIKE ekpo-menge,&lt;br /&gt;           eindt LIKE eket-eindt,&lt;br /&gt;           lifnr LIKE ekko-lifnr,&lt;br /&gt;           name1 LIKE lfa1-NAME1,&lt;br /&gt;           ketpo LIKE tline-tdline,&lt;br /&gt;           leado(5),&lt;br /&gt;           leadr(5),&lt;br /&gt;           kethead LIKE tline-tdline,&lt;br /&gt;        END OF itab.&lt;br /&gt;&lt;br /&gt;DATA : BEGIN OF vendor_data OCCURS 0,&lt;br /&gt;           lifnr LIKE lfa1-lifnr,&lt;br /&gt;           name1 LIKE lfa1-name1,&lt;br /&gt;        END OF vendor_data.&lt;br /&gt;DATA : BEGIN OF history OCCURS 0,&lt;br /&gt;           ebeln LIKE mseg-ebeln,&lt;br /&gt;           ebelp LIKE mseg-ebelp,&lt;br /&gt;           bwart LIKE mseg-bwart,&lt;br /&gt;           menge LIKE mseg-menge,&lt;br /&gt;        END OF history.&lt;br /&gt;&lt;br /&gt;DATA : v_index LIKE sy-tabix,&lt;br /&gt;       v_value1 LIKE mseg-menge,&lt;br /&gt;       v_nettof LIKE ekpo-menge.&lt;br /&gt;DATA : BEGIN OF tbl_hdr OCCURS 0,&lt;br /&gt;        judul(80),&lt;br /&gt;        field(80),&lt;br /&gt;        panjang(3).&lt;br /&gt;DATA END OF tbl_hdr.&lt;br /&gt;&lt;br /&gt;* for ALV&lt;br /&gt;TYPE-POOLS: slis.&lt;br /&gt;&lt;br /&gt;CONSTANTS: c_formname_top_of_page TYPE slis_formname&lt;br /&gt;                                  VALUE 'TOP_OF_PAGE'.&lt;br /&gt;&lt;br /&gt;DATA: t_fieldcat TYPE slis_t_fieldcat_alv,&lt;br /&gt;      t_layout   TYPE slis_layout_alv,&lt;br /&gt;      t_print    TYPE slis_print_alv,&lt;br /&gt;      t_sort     TYPE slis_t_sortinfo_alv,&lt;br /&gt;      t_sp_group TYPE slis_t_sp_group_alv,&lt;br /&gt;      t_grid_title TYPE lvc_title,&lt;br /&gt;      t_events   TYPE slis_t_event,&lt;br /&gt;      t_list_top_of_page TYPE slis_t_listheader,&lt;br /&gt;      v_progid LIKE sy-repid,&lt;br /&gt;      v_save VALUE 'A',&lt;br /&gt;      t_variant    LIKE disvariant,&lt;br /&gt;      v_variant    LIKE disvariant.&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Selection Screen&lt;br /&gt;PARAMETERS: p_mtart LIKE mara-mtart DEFAULT 'ZPAC' .&lt;br /&gt;PARAMETERS: p_werks LIKE t001w-werks obligatory.&lt;br /&gt;select-options : s_bedat for ekko-bedat.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AT SELECTION-SCREEN OUTPUT.&lt;br /&gt;  LOOP AT SCREEN.&lt;br /&gt;    IF screen-name = 'P_MTART'.&lt;br /&gt;      screen-input = '0'.&lt;br /&gt;    ENDIF.&lt;br /&gt;    MODIFY SCREEN.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;INITIALIZATION.&lt;br /&gt;  s_bedat-low = sy-datlo - 30.&lt;br /&gt;  s_bedat-high = sy-datlo.&lt;br /&gt;  append s_bedat.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;*  PERFORM cek_otorisasi.&lt;br /&gt;  PERFORM getdata.&lt;br /&gt;  IF itab[] IS INITIAL.&lt;br /&gt;    MESSAGE i208(00) WITH 'Data not found'.&lt;br /&gt;  ELSE.&lt;br /&gt;    PERFORM display.&lt;br /&gt;  ENDIF.&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  GETDATA&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM getdata .&lt;br /&gt;  DATA : v_name LIKE thead-tdname.&lt;br /&gt;  DATA: lt_tline LIKE tline OCCURS 0 WITH HEADER LINE.&lt;br /&gt;  SELECT&lt;br /&gt;         a~bedat a~lifnr&lt;br /&gt;         b~matnr &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;C~MSEH3&lt;/span&gt;&lt;/strong&gt; b~menge b~banfn b~bnfpo b~ebeln b~ebelp b~txz01&lt;br /&gt;  INTO CORRESPONDING FIELDS OF TABLE itab&lt;br /&gt;  FROM ekko AS a&lt;br /&gt;  INNER JOIN ekpo AS b ON b~mandt = a~mandt&lt;br /&gt;                      AND a~ebeln = b~ebeln&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;  INNER JOIN t006a AS C ON C~MSEHI = B~MEINS&lt;br /&gt;                      and c~spras = sy-langu&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  WHERE b~mtart = p_mtart AND&lt;br /&gt;        b~werks = p_werks and&lt;br /&gt;        a~bedat in s_bedat.&lt;br /&gt;&lt;br /&gt;          CALL FUNCTION 'FI_PROGRESS_INDICATOR'&lt;br /&gt;               EXPORTING&lt;br /&gt;                    percentage = 0&lt;br /&gt;                    text       = 'Collecting data... '.&lt;br /&gt;&lt;br /&gt;* GET QTY&lt;br /&gt;  SELECT ebeln ebelp bwart menge&lt;br /&gt;  INTO CORRESPONDING FIELDS OF TABLE history&lt;br /&gt;  FROM mseg&lt;br /&gt;  FOR ALL ENTRIES IN itab&lt;br /&gt;  WHERE ebeln = itab-ebeln&lt;br /&gt;    AND bwart IN ('101', '102').&lt;br /&gt;&lt;br /&gt;* vendor name&lt;br /&gt;  SELECT lifnr name1&lt;br /&gt;  FROM lfa1&lt;br /&gt;  INTO CORRESPONDING FIELDS OF TABLE vendor_data&lt;br /&gt;  FOR ALL ENTRIES IN itab&lt;br /&gt;  WHERE lifnr = itab-lifnr.&lt;br /&gt;&lt;br /&gt;* NETTING OFF&lt;br /&gt;  LOOP AT itab.&lt;br /&gt;    v_index = sy-tabix.&lt;br /&gt;    CLEAR : v_value1, v_nettof.&lt;br /&gt;    LOOP AT history WHERE ebeln = itab-ebeln AND ebelp = itab-ebelp.&lt;br /&gt;      IF history-bwart = '101'.&lt;br /&gt;        v_value1 = v_value1 + history-menge.&lt;br /&gt;      ELSEIF history-bwart = '102'.&lt;br /&gt;        v_value1 = v_value1 - history-menge.&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;    v_nettof = itab-menge - v_value1.&lt;br /&gt;    IF v_nettof &lt;= 0.&lt;br /&gt;      DELETE itab.&lt;br /&gt;    ELSE.&lt;br /&gt;      itab-menge = v_nettof.&lt;br /&gt;      MODIFY itab INDEX v_index.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;  SORT itab BY ebeln ebelp.&lt;br /&gt;  LOOP AT itab.&lt;br /&gt;    v_index = sy-tabix.&lt;br /&gt;    itab-no = v_index.&lt;br /&gt;    SELECT SINGLE badat&lt;br /&gt;    FROM eban&lt;br /&gt;    INTO itab-badat&lt;br /&gt;    WHERE banfn = itab-banfn.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE eindt&lt;br /&gt;    FROM eket&lt;br /&gt;    INTO itab-eindt&lt;br /&gt;    WHERE ebeln = itab-ebeln&lt;br /&gt;      AND ebelp = itab-ebelp.&lt;br /&gt;&lt;br /&gt;    READ TABLE vendor_data WITH KEY lifnr = itab-lifnr.&lt;br /&gt;    itab-name1 = vendor_data-name1.&lt;br /&gt;*   get keterangan PO&lt;br /&gt;    "Item PO text&lt;br /&gt;    CONCATENATE itab-ebeln itab-ebelp INTO v_name.&lt;br /&gt;    PERFORM read_text TABLES lt_tline&lt;br /&gt;             USING sy-mandt 'F01' 'EKPO' v_name 132.&lt;br /&gt;    READ TABLE lt_tline INDEX 1.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      itab-ketpo = lt_tline-tdline.&lt;br /&gt;    ELSE.&lt;br /&gt;      itab-ketpo = ''.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*   LEAD PO&lt;br /&gt;    itab-leado = sy-datlo - itab-bedat.&lt;br /&gt;*   LEAD PR&lt;br /&gt;    if itab-badat = '00000000'.&lt;br /&gt;      itab-leadr = '-'.&lt;br /&gt;    else.&lt;br /&gt;      itab-leadr = sy-datlo - itab-badat.&lt;br /&gt;    endif.&lt;br /&gt;&lt;br /&gt;    CLEAR : lt_tline.&lt;br /&gt;    REFRESH : lt_tline.&lt;br /&gt;*   get keterangan PO HEADER&lt;br /&gt;    v_name = itab-ebeln.&lt;br /&gt;    PERFORM read_text TABLES lt_tline&lt;br /&gt;             USING sy-mandt 'F01' 'EKKO' v_name 132.&lt;br /&gt;    READ TABLE lt_tline INDEX 1.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      itab-kethead = lt_tline-tdline.&lt;br /&gt;    ELSE.&lt;br /&gt;      itab-kethead = ''.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;    CLEAR : v_name, lt_tline.&lt;br /&gt;    REFRESH : lt_tline.&lt;br /&gt;    MODIFY itab INDEX v_index.&lt;br /&gt;&lt;br /&gt;*   add to ALV&lt;br /&gt;&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.                    " GETDATA&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  read_text&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM read_text TABLES ft_lines STRUCTURE tline&lt;br /&gt;                USING fu_mandt&lt;br /&gt;                      fu_tdid&lt;br /&gt;                      fu_tdobject&lt;br /&gt;                      fu_tdname&lt;br /&gt;                      fu_length.&lt;br /&gt;  DATA: lv_mandt     LIKE sy-mandt,&lt;br /&gt;        lv_tdid      LIKE thead-tdid,&lt;br /&gt;        lv_tdobject  LIKE thead-tdobject,&lt;br /&gt;        lv_tdname    LIKE thead-tdname,&lt;br /&gt;        lv_length    LIKE sy-index.&lt;br /&gt;&lt;br /&gt;  REFRESH ft_lines.&lt;br /&gt;  lv_mandt    = fu_mandt.&lt;br /&gt;  lv_tdid     = fu_tdid.&lt;br /&gt;  lv_tdobject = fu_tdobject.&lt;br /&gt;  lv_tdname   = fu_tdname.&lt;br /&gt;  lv_length   = fu_length.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'READ_TEXT'&lt;br /&gt;    EXPORTING&lt;br /&gt;      client                  = lv_mandt&lt;br /&gt;      id                      = lv_tdid&lt;br /&gt;      language                = sy-langu&lt;br /&gt;      name                    = lv_tdname&lt;br /&gt;      object                  = lv_tdobject&lt;br /&gt;    TABLES&lt;br /&gt;      lines                   = ft_lines&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      id                      = 1&lt;br /&gt;      language                = 2&lt;br /&gt;      name                    = 3&lt;br /&gt;      not_found               = 4&lt;br /&gt;      object                  = 5&lt;br /&gt;      reference_check         = 6&lt;br /&gt;      wrong_access_to_archive = 7&lt;br /&gt;      OTHERS                  = 8.&lt;br /&gt;  IF sy-subrc = 0.&lt;br /&gt;    CALL FUNCTION 'FORMAT_TEXTLINES'&lt;br /&gt;      EXPORTING&lt;br /&gt;        formatwidth = lv_length&lt;br /&gt;      TABLES&lt;br /&gt;        lines       = ft_lines&lt;br /&gt;      EXCEPTIONS&lt;br /&gt;        bound_error = 1&lt;br /&gt;        OTHERS      = 2.&lt;br /&gt;&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " READ_TEXT&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  DISPLAY&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM display .&lt;br /&gt;  PERFORM header.&lt;br /&gt;  PERFORM createalv.&lt;br /&gt;ENDFORM.                    " DISPLAY&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  HEADER&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM header.&lt;br /&gt;  DATA : hdr(1000),&lt;br /&gt;         pjg TYPE i,&lt;br /&gt;         pstr TYPE i,&lt;br /&gt;         tp TYPE i,&lt;br /&gt;         k1(50),&lt;br /&gt;         k2(50),&lt;br /&gt;         k3(50),&lt;br /&gt;         k4(50).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  PERFORM getjudul CHANGING hdr.&lt;br /&gt;  SPLIT hdr AT ',' INTO TABLE tbl_hdr.&lt;br /&gt;&lt;br /&gt;  LOOP AT tbl_hdr.&lt;br /&gt;    CONDENSE tbl_hdr-judul.&lt;br /&gt;    pstr = STRLEN( tbl_hdr-judul ).&lt;br /&gt;    SPLIT tbl_hdr-judul AT '(' INTO k1 k2.&lt;br /&gt;    SPLIT k2 AT ')' INTO k3 k4.&lt;br /&gt;    pstr = pstr - STRLEN( k4 ).&lt;br /&gt;    pjg = STRLEN( k1 ) + 1.&lt;br /&gt;    tp = pjg + 2.&lt;br /&gt;&lt;br /&gt;    IF tp &lt; pstr.&lt;br /&gt;      tbl_hdr-panjang = tbl_hdr-judul+pjg(2).&lt;br /&gt;    ELSE.&lt;br /&gt;      tbl_hdr-panjang = tbl_hdr-judul+pjg(1).&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;    tbl_hdr-judul = k1.&lt;br /&gt;    tbl_hdr-field = k4.&lt;br /&gt;    MODIFY tbl_hdr INDEX sy-tabix.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.                    " Header&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  CREATEALV&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM createalv .&lt;br /&gt;  CLEAR v_variant.&lt;br /&gt;  v_save = 'A'.&lt;br /&gt;  v_variant-report = sy-repid.&lt;br /&gt;  t_variant = v_variant.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_save     = v_save&lt;br /&gt;    CHANGING&lt;br /&gt;      cs_variant = t_variant&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      not_found  = 2.&lt;br /&gt;&lt;br /&gt;  PERFORM f_create_field USING t_fieldcat[].&lt;br /&gt;&lt;br /&gt;  PERFORM setting_attr.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_callback_program     = sy-repid&lt;br /&gt;      is_layout              = t_layout&lt;br /&gt;      i_callback_top_of_page = 'TOP-OF-PAGE'&lt;br /&gt;      it_fieldcat            = t_fieldcat[]&lt;br /&gt;      it_special_groups      = t_sp_group[]&lt;br /&gt;      i_save                 = v_save&lt;br /&gt;      is_variant             = v_variant&lt;br /&gt;      it_events              = t_events[]&lt;br /&gt;    TABLES&lt;br /&gt;      t_outtab               = itab.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " CREATEALV&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  f_create_field&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM f_create_field USING fu_t_fieldcat TYPE slis_t_fieldcat_alv.&lt;br /&gt;  DATA: lv_fieldcat TYPE slis_fieldcat_alv.&lt;br /&gt;&lt;br /&gt;  REFRESH fu_t_fieldcat.&lt;br /&gt;&lt;br /&gt;  LOOP AT tbl_hdr.&lt;br /&gt;    CLEAR lv_fieldcat.&lt;br /&gt;    lv_fieldcat-col_pos       = sy-tabix.&lt;br /&gt;    lv_fieldcat-fieldname     = tbl_hdr-field.&lt;br /&gt;    lv_fieldcat-outputlen     = tbl_hdr-panjang.&lt;br /&gt;    lv_fieldcat-reptext_ddic  = tbl_hdr-judul.&lt;br /&gt;    APPEND lv_fieldcat TO fu_t_fieldcat.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.                    " f_create_field&lt;br /&gt;*&amp;amp;----------------------------------------------------------&lt;br /&gt;*&amp;amp;      Form  top-of-page&lt;br /&gt;*&amp;amp;----------------------------------------------------------&lt;br /&gt;FORM top-of-page.&lt;br /&gt;*ALV Header declarations&lt;br /&gt;  DATA: t_header TYPE slis_t_listheader,&lt;br /&gt;        wa_header TYPE slis_listheader,&lt;br /&gt;        tpmatnr LIKE marc-matnr,&lt;br /&gt;        temp(20).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Title&lt;br /&gt;  wa_header-typ  = 'H'.&lt;br /&gt;  wa_header-info = 'MONITORING OUTSTANDING ORDER PACKAGING REPORT'.&lt;br /&gt;  APPEND wa_header TO t_header.&lt;br /&gt;&lt;br /&gt;  wa_header-typ  = 'A'.&lt;br /&gt;  IF tpmatnr IS INITIAL.&lt;br /&gt;    tpmatnr = 'ALL'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  CONCATENATE 'Plant : ' p_werks INTO wa_header-info SEPARATED BY space.&lt;br /&gt;  append wa_header to t_header.&lt;br /&gt;&lt;br /&gt;  wa_header-typ  = 'A'.&lt;br /&gt;  CONCATENATE 'Printed By : ' sy-uname INTO wa_header-info SEPARATED BY space.&lt;br /&gt;  APPEND wa_header TO t_header.&lt;br /&gt;&lt;br /&gt;  wa_header-typ  = 'A'.&lt;br /&gt;  CONCATENATE  sy-datlo+6(2) '.' sy-datlo+4(2) '.' sy-datlo(4) INTO temp.&lt;br /&gt;  CONCATENATE 'Printed Date : ' temp INTO wa_header-info SEPARATED BY space.&lt;br /&gt;  APPEND wa_header TO t_header.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      it_list_commentary = t_header.&lt;br /&gt;*            i_logo             = ''.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " top-of-page&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  SETTING_ATTR&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM setting_attr.&lt;br /&gt;* setting variant&lt;br /&gt;*  V_VARIANT-VARIANT = P_VAR.&lt;br /&gt;*  V_VARIANT-REPORT = SY-REPID.&lt;br /&gt;*  V_VARIANT-USERNAME = SY-UNAME.&lt;br /&gt;ENDFORM.                    "SETTING_ATTR&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  GETJUDUL&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;FORM getjudul  CHANGING p_hdr.&lt;br /&gt;  CONCATENATE 'NO(3)NO,'&lt;br /&gt;              'MATERIAL(11)MATNR,'&lt;br /&gt;              'MATERIAL DESCRIPTION(40)TXZ01,'&lt;br /&gt;              'SATUAN(6)MSEH3,'&lt;br /&gt;              'TGL PR(10)BADAT,'&lt;br /&gt;              'NO PR(10)BANFN,'&lt;br /&gt;              'ITEM PR(8)BNFPO,'&lt;br /&gt;              'TGL PO(10)BEDAT,'&lt;br /&gt;              'NO PO(10)EBELN,'&lt;br /&gt;              'ITEM PO(8)EBELP,'&lt;br /&gt;              'SISA(7)MENGE,'&lt;br /&gt;              'TGL PERMINTAAN(14)EINDT,'&lt;br /&gt;              'SUPPLIER(40)NAME1,'&lt;br /&gt;              'KETERANGAN PO(132)KETPO,'&lt;br /&gt;              'LEAD PO(7)LEADO,'&lt;br /&gt;              'LEAD PR(7)LEADR,'&lt;br /&gt;              'KETERANGAN(132)KETHEAD'&lt;br /&gt;              INTO p_hdr.&lt;br /&gt;ENDFORM.                    " GETJUDUL&lt;br /&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-5923841123929014673?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/5923841123929014673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=5923841123929014673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/5923841123929014673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/5923841123929014673'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/07/sample-very-simple-alv-and-join-with.html' title='[Sample] Very Simple ALV and join with conversion MEINS'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-746217787391472236</id><published>2008-05-23T11:01:00.004+07:00</published><updated>2008-05-23T11:16:50.665+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Change field contents (from SM30) from uppercase to as it is.</title><content type='html'>One day, my user need to maintain 1 table from SM30, when they entered a description of tax service code, it changed automatically to upper case caps. Actually they need that description as it is.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;What I have to change ?&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;SE11, open the table&lt;/li&gt;&lt;li&gt;Change the field type using a Data Element&lt;/li&gt;&lt;li&gt;Create a Domain from those data element.&lt;/li&gt;&lt;li&gt;This is the important thing : Tick the Lowercase option.&lt;/li&gt;&lt;/ol&gt;&lt;p align="left"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203421115605894802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_vALdbX8WIjU/SDZD74x0xpI/AAAAAAAAAHo/SF9GhaF_CT0/s320/domain.jpg" border="0" /&gt;&lt;/p&gt;The Lowercase option means let the word as it is, not changed to uppercase caps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-746217787391472236?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/746217787391472236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=746217787391472236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/746217787391472236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/746217787391472236'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/05/change-field-contents-from-sm30-from.html' title='Change field contents (from SM30) from uppercase to as it is.'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vALdbX8WIjU/SDZD74x0xpI/AAAAAAAAAHo/SF9GhaF_CT0/s72-c/domain.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-4831435220787260806</id><published>2008-05-07T09:26:00.004+07:00</published><updated>2008-05-07T11:26:45.698+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Select a table between two clients using RFC Function</title><content type='html'>&lt;p&gt;1. Create RFC Destination &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Technical Settings&lt;br /&gt;Connection Type : 3 Abap Connection&lt;br /&gt;Target Host : cpidev03&lt;br /&gt;IP Address : xxxxxxxxx &lt;/li&gt;&lt;li&gt;Logon &amp;amp; Security&lt;br /&gt;Input target Client, user dan password, or u can choose using Current User&lt;/li&gt;&lt;li&gt;Test Connection using Connection Test&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;2. SE37 - Function &lt;strong&gt;TABLE_ENTRIES_GET_VIA_RFC RFC&lt;/strong&gt;&lt;br /&gt;Target sys : input the RFC Destination&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://1.bp.blogspot.com/_vALdbX8WIjU/SCErsyw-AKI/AAAAAAAAAG4/-OlHHjY6HVI/s400/table1.jpg" /&gt;&lt;br /&gt;You can use WHERE clause in this field :&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_vALdbX8WIjU/SCEsWiw-ALI/AAAAAAAAAHA/fve47lDRNFQ/s400/table2.jpg" /&gt; &lt;/p&gt;&lt;br /&gt;The result :&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_vALdbX8WIjU/SCEtwiw-AMI/AAAAAAAAAHI/vY0F1_DzWKs/s400/result.jpg" /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The Structure stored in NAMETAB&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_vALdbX8WIjU/SCEvJiw-API/AAAAAAAAAHg/j58BbRfULWI/s400/detil1.jpg" /&gt; &lt;/p&gt;&lt;p&gt;The Records stored in TABENTRY&lt;br /&gt;1 record will be store in 1 string, so u need to offset them by their structure.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_vALdbX8WIjU/SCEtwyw-AOI/AAAAAAAAAHY/2RYVNGfGWao/s400/detil2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-4831435220787260806?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/4831435220787260806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=4831435220787260806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4831435220787260806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4831435220787260806'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/05/select-table-between-two-clients-using.html' title='Select a table between two clients using RFC Function'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vALdbX8WIjU/SCErsyw-AKI/AAAAAAAAAG4/-OlHHjY6HVI/s72-c/table1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-3450100278724399580</id><published>2008-03-14T09:55:00.002+07:00</published><updated>2008-03-14T10:07:47.658+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><title type='text'>MM : Maintain Message Output Type for Print PO (ME9F)</title><content type='html'>Maintain Message Output Type for Print PO (ME9F)&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;SPRO -&gt; Materials Management -&gt; Purchasing -&gt; Messages -&gt; Output Control -&gt; Message Types -&gt; Define Message Types for Purchase Order&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Choose : Maintain Message Types for PO&lt;/li&gt;&lt;li&gt;Double click at desired Output type&lt;/li&gt;&lt;li&gt;and double click at Processing Routines in left side menu&lt;/li&gt;&lt;li&gt;There you can find the printing Program, Form Routine and Form/Smartform (you can change this to your customized form)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;One of errors that i've found :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ME9F error  when print ( &lt;span style="color:#ff0000;"&gt;X&lt;/span&gt; )&lt;br /&gt;Processing log : Error in OPEN_FORM for document 9000000002&lt;br /&gt;It because the output device from format page ZKUARTO (in form ZFDXMM_PO - form that i use in customizing) , has not been maintained yet.&lt;br /&gt;OPEN_FORM inidcates initalize form with their format pages and the printer.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-3450100278724399580?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/3450100278724399580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=3450100278724399580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3450100278724399580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3450100278724399580'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/mm-maintain-message-output-type-for.html' title='MM : Maintain Message Output Type for Print PO (ME9F)'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-3153723946228120805</id><published>2008-03-14T09:21:00.007+07:00</published><updated>2008-03-14T09:50:59.788+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><title type='text'>MM : Maintain header text PR/PO</title><content type='html'>I know this from one of my MM module's colleague.&lt;br /&gt;&lt;br /&gt;Maintain Header Text PR :&lt;br /&gt;&lt;strong&gt;SPRO -&gt; Real Estate -&gt; Tools -&gt; Central Correspondence Maintenance -&gt; Text ID s&lt;/strong&gt;&lt;br /&gt;To maintain :&lt;br /&gt;PR (me51n/me52n/me53n) text id&lt;br /&gt;- PR Header Text, object name : &lt;strong&gt;EBANH&lt;/strong&gt;, with ID start from B01 - B99&lt;br /&gt;- PR Item Text, object name : &lt;strong&gt;EBAN&lt;/strong&gt;, with ID start from B01 - B99&lt;br /&gt;PO (me21n/me22n/me23n) text id&lt;br /&gt;- PO Header Text, object name : &lt;strong&gt;EKKO&lt;/strong&gt;, with ID start from F01 - F99&lt;br /&gt;- PO Header Text, object name : &lt;strong&gt;EKPO&lt;/strong&gt;, with ID start from F01 - F99&lt;br /&gt;&lt;br /&gt;That table also keeps the maintenance Text IDs for other SAP Standard tcode, but i dont have the documentation furthermore.&lt;br /&gt;&lt;br /&gt;If you have any documentation about this, feel free to share :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-3153723946228120805?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/3153723946228120805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=3153723946228120805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3153723946228120805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3153723946228120805'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/mm-maintain-header-text-prpo.html' title='MM : Maintain header text PR/PO'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-8399545717675232572</id><published>2008-03-13T16:39:00.005+07:00</published><updated>2008-03-14T08:36:02.579+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Others'/><title type='text'>Change Excel column name from A, B, C... to 1, 2, 3 ...</title><content type='html'>One day, when I have to work with Excel file, I just don’t have an idea why the column name that generally named column A, B, C, D … changed to 1, 2, 3, 4, ….. At the first place I don’t really care about it, I only think that it’s weird without having a damn on it. &lt;img id="BLOGGER_PHOTO_ID_5177159128546699474" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_vALdbX8WIjU/R9j2zDKyaNI/AAAAAAAAAFw/Z5IXlwEeGbY/s400/excel1.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And the other day, while my colleague copy that excel file, he need it to be change to original name. Then I start googling, and came up to &lt;a href="http://id.answers.yahoo.com/question/index?qid=20080224082131AAgV0dY&amp;amp;show=7"&gt;this site&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;This is how to change it :&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Click on Tools -&gt; Options -&gt; General tab&lt;/li&gt;&lt;li&gt;Mark &lt;strong&gt;R1C1 reference style&lt;/strong&gt; to change the column name into 1, 2 , 3… or unmark to change it to original&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5177159265985652962" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_vALdbX8WIjU/R9j27DKyaOI/AAAAAAAAAF4/TVJb0Rhk18E/s400/excel2.jpg" border="0" /&gt;&lt;/li&gt;&lt;/ol&gt;I dont know the purpose from this R1C1 reference style options for. Anyone ?&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-8399545717675232572?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/8399545717675232572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=8399545717675232572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/8399545717675232572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/8399545717675232572'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/change-excel-column-name-from-b-c-to-1.html' title='Change Excel column name from A, B, C... to 1, 2, 3 ...'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vALdbX8WIjU/R9j2zDKyaNI/AAAAAAAAAFw/Z5IXlwEeGbY/s72-c/excel1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-2494610750673001541</id><published>2008-03-12T15:30:00.004+07:00</published><updated>2008-03-12T16:01:46.348+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>At Selection Screen event</title><content type='html'>&lt;div&gt;Purpose : radiobutton to enable/disable screen input.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;hr /&gt;&lt;span style="font-size:85%;"&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;REPORT zhny064 .&lt;/div&gt;&lt;br /&gt;&lt;div&gt;TABLES : vbrk.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS p_pil1 TYPE c RADIOBUTTON GROUP gpil DEFAULT 'X'&lt;br /&gt;USER-COMMAND ucomm.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(51) text-001.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK b001 WITH FRAME.&lt;br /&gt;SELECT-OPTIONS: s_vbeln FOR vbrk-vbeln NO-EXTENSION MEMORY ID vf. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;SELECTION-SCREEN END OF BLOCK b001.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;SELECTION-SCREEN SKIP 2.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;PARAMETERS p_pil2 TYPE c RADIOBUTTON GROUP gpil.&lt;br /&gt;SELECTION-SCREEN COMMENT 4(51) text-002.&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK b002 WITH FRAME.&lt;br /&gt;SELECT-OPTIONS: s_vbel1 FOR vbrk-vbeln MEMORY ID vf.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK b002.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;AT SELECTION-SCREEN OUTPUT.&lt;br /&gt;IF p_pil1 EQ 'X'.&lt;br /&gt;          LOOP AT SCREEN.&lt;br /&gt;          IF screen-name CS 'S_VBEL1'.&lt;br /&gt;                    screen-input = 0.&lt;br /&gt;                    MODIFY SCREEN.&lt;br /&gt;          ENDIF.&lt;br /&gt;          ENDLOOP.&lt;br /&gt;ELSE.&lt;br /&gt;          LOOP AT SCREEN.&lt;br /&gt;          IF screen-name CS 'S_VKBUR' OR screen-name CS 'S_VBELN' .&lt;br /&gt;                    screen-input = 0.&lt;br /&gt;                    MODIFY SCREEN.&lt;br /&gt;          ENDIF.&lt;br /&gt;          ENDLOOP.&lt;br /&gt;ENDIF.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5176777323133954242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_vALdbX8WIjU/R9ebjDKyaMI/AAAAAAAAAFo/gQgBoKVg4pA/s400/screenevent.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;div&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/li&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-2494610750673001541?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/2494610750673001541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=2494610750673001541' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/2494610750673001541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/2494610750673001541'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/at-selection-screen-event.html' title='At Selection Screen event'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vALdbX8WIjU/R9ebjDKyaMI/AAAAAAAAAFo/gQgBoKVg4pA/s72-c/screenevent.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-3585040985951899250</id><published>2008-03-12T09:29:00.000+07:00</published><updated>2008-03-12T10:24:34.636+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>SM30 - menyisipkan code event pada sm30</title><content type='html'>&lt;span style="font-size:85%;"&gt;Sekedar share mengenai sm30 yang nemu di forum nya sdn.sap.com semoga bermanfaat untuk menyisipkan code event pada sm30 - table generator .&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Contoh implementasi untuk check authorization.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Berikut step2 nya:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Masuk ke table generator ( screen ) environment =&gt; modification =&gt; Events&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5176689478167849042" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_vALdbX8WIjU/R9dLpzKyaFI/AAAAAAAAAEc/kcB8cslE41w/s400/sm30-1.jpg" border="0" /&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Click New entries hingga keluar seperti gambar , kemudian di pilih event yang akan disisipkan dengan kode program buatan kita.&lt;br /&gt;Contoh: event code 05 bisa untuk menginisialasi suatu nilai pada table misal kita ingin menginisial suatu nilai pada table zmm_ship -&gt; ship_code menjadi auto number.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5176689598426933346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_vALdbX8WIjU/R9dLwzKyaGI/AAAAAAAAAEk/ZOKxbNTNYrU/s400/sm30-2.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Setelah di pilih event code 05 maka isikan form routine ( ZINIT ) kemudian enter , lalu click icon di sebelah kolom form routine sehingga keluar screen sperti dibawah ini langkah berikutnya isi nama subroutine ZINIT pada include choice dibawah ini.&lt;br /&gt;Step berikutnya click new entry jika keluar warning seperti dibawah ini :&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5176689722980984946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_vALdbX8WIjU/R9dL4DKyaHI/AAAAAAAAAEs/yeDWEgR0u-8/s400/sm30-3.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Seperti terlihat contoh code berikut: Save -&gt; Activate&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5176690083758237826" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_vALdbX8WIjU/R9dMNDKyaII/AAAAAAAAAE0/iLtkIQjyczU/s400/sm30-4.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Done, test it !&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;SM30. See result!&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;Jika ada error maka program functions group main harus di activate.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-3585040985951899250?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/3585040985951899250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=3585040985951899250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3585040985951899250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/3585040985951899250'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/sm30-menyisipkan-code-event-pada-sm30.html' title='SM30 - menyisipkan code event pada sm30'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vALdbX8WIjU/R9dLpzKyaFI/AAAAAAAAAEc/kcB8cslE41w/s72-c/sm30-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-8997681977322374167</id><published>2008-03-12T09:18:00.000+07:00</published><updated>2008-03-12T09:23:52.297+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>Abap Dictionary - cara licik utk tembak data langsung</title><content type='html'>&lt;span style="font-size:85%;"&gt;Sesuai judulnya, the purpose is to update data from Z table (recomended only in Z table) secara langsung dari SE16/SE11 without User Interface2an.&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Hal licik ini sebaiknya ngga dilakukan di Production, kecualiii... kepepet - hehehe, yakin kalo data yg mo dirubah gak ngelink ke table laen (misal z table master - bisa runyam kan!), perubahan ngga nyebabin error (sesuai format/tipe data sesuai), and y penting... bos jgn sampe tau... hehehe, ga enak kan... :"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Caranya :&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Call SE16/SE11, entry table name n display&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Double click row data yang ingin dirubah, activate debugger ( /h ), then Enter&lt;/span&gt;&lt;img id="BLOGGER_PHOTO_ID_5172322229505390114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_vALdbX8WIjU/R8fHqeGGdiI/AAAAAAAAADs/665dYLGghJA/s400/SE16-1.jpg" border="0" /&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Press Enter once more, then debugger will show up&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Double click field &lt;strong&gt;&lt;em&gt;code &lt;/em&gt;&lt;/strong&gt;dan change it from  SHOW to &lt;strong&gt;&lt;em&gt;EDIT&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;img id="BLOGGER_PHOTO_ID_5172322341174539826" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_vALdbX8WIjU/R8fHw-GGdjI/AAAAAAAAAD0/rqrXC2hDd3g/s400/SE16-2.jpg" border="0" /&gt; &lt;li&gt;&lt;span style="font-size:85%;"&gt;Change desired fields&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Save, Back, and Refresh table&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Note : &lt;/span&gt;&lt;span style="font-size:85%;"&gt;- Hal ini &lt;u&gt;tidak berlaku&lt;/u&gt; utk &lt;u&gt;key fields&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;- Loe ga bisa lakukan ini klo loe ga punya otorisasi utk change fields (mostly in Production)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-8997681977322374167?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/8997681977322374167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=8997681977322374167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/8997681977322374167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/8997681977322374167'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/abap-dictionary-cara-licik-utk-tembak.html' title='Abap Dictionary - cara licik utk tembak data langsung'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vALdbX8WIjU/R8fHqeGGdiI/AAAAAAAAADs/665dYLGghJA/s72-c/SE16-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-2473167611116582217</id><published>2008-03-12T09:16:00.000+07:00</published><updated>2008-03-12T09:17:47.624+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP'/><category scheme='http://www.blogger.com/atom/ns#' term='ABAP'/><title type='text'>SAP - what's ABAP ?</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Untuk temen2 yang belum perna denger soal ABAP. Berikut penjelasan simple dan sesingkat2nya mengenai ABAP. ABAP (Advanced Business Application Programming) merupakan bahasa pemrograman yang digunakan dalam aplikasi SAP (Systems, Applications, and Products (in data processing)). &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;SAP sendiri merupakan software ERP yang biasanya dipakai di perusahaan2 besar (krn mahallll). Dan ABAP digunakan utk :&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;bikin report&lt;br /&gt;walopun di SAP sudah ada report2 standard, tapi kebanyakan tidak memenuhi kebutuhan user. &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;bikin aplikasi tambahan di SAP yang tidak ada proses standard SAP&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;misal : salah satu proses standard di SAP adalah Production Order Create (CO01) - dan yang tidak ada di standard SAP adalah Proses Automatic Create PO yang datanya di provide dari file Excel&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;bikin user exit, user exit adalah proses tambahan dlm proses standard SAP&lt;br /&gt;misal : dalam proses create sales order, ada validasi2 tertentu yang tidak ada dlm standard SAP&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;bikin print'an form&lt;br /&gt;dlm SAP jg sdh ada form2 standard, misal Invoice. tapi ya kebanyakan memang tidak memenuhi kebutuhan user, dari segi layout terutama.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;ABAP, seperti apa ?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;ABAP itu bahasanya human banget :) . Contoh dari sintak2 ABAP :&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="left"&gt;&lt;img id="BLOGGER_PHOTO_ID_5171954611799634626" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_vALdbX8WIjU/R8Z5UTbCssI/AAAAAAAAADU/hY-2le08asc/s400/z_showcustomer.jpg" border="0" /&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;Untuk belajar ABAP seluruhnya emang gak mudah, karena bnyk sekali tekniknya. Tapi klo utk sekedar reporting ato sintak2 sederhana sih mudah2 aja, karena Editor nya dilengkapi dengan error checking pd saat execute.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-2473167611116582217?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/2473167611116582217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=2473167611116582217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/2473167611116582217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/2473167611116582217'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/untuk-temen2-yang-belum-perna-denger.html' title='SAP - what&apos;s ABAP ?'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vALdbX8WIjU/R8Z5UTbCssI/AAAAAAAAADU/hY-2le08asc/s72-c/z_showcustomer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8441308693820441271.post-4146399834726643103</id><published>2008-03-12T09:03:00.000+07:00</published><updated>2008-03-12T09:16:02.953+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blabering'/><title type='text'>the Notebook n the problems</title><content type='html'>In this blog, i try to share things that i keep in my notebook since time i'm working in IT, as a programmer - ABAPer. I consider coding probably one of my hobbies since most of the time i enjoy in doing that - pretty weird huh!&lt;br /&gt;&lt;br /&gt;First, i tell u, i'm not a master of code, i just think i like it... but i dont know, i think i can not be a master on it. Maybe... some part of my self sez "i'm a female" and... it's verrrry rare when a female become a master on it. Hihihi.&lt;br /&gt;&lt;br /&gt;Second, from this blog i think i can share the problems to. Maybe i can learn from u also ;)&lt;br /&gt;&lt;br /&gt;Hopefully i can update this blog constantly.. since i'm not a really consistent person, hehehe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8441308693820441271-4146399834726643103?l=hannyandnotebook.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hannyandnotebook.blogspot.com/feeds/4146399834726643103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8441308693820441271&amp;postID=4146399834726643103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4146399834726643103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8441308693820441271/posts/default/4146399834726643103'/><link rel='alternate' type='text/html' href='http://hannyandnotebook.blogspot.com/2008/03/notebook-n-problems.html' title='the Notebook n the problems'/><author><name>HannY</name><uri>http://www.blogger.com/profile/12384041796577753580</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
