The SAVE button is not active by default in GRID status, you should create an own status.

But if you mean the button to save a layout variant, you have to set the parameter I_SAVE:

SPACE = Display variants cannot be saved
Defined display variants (such as delivered display variants) can be selected for presentation regardless of this indicator. However, changes cannot be saved.

'X' = Standard save mode
Display variants can be saved as standard display variants.
Saving display variants as user-specific is not possible.

'U' = User-specific save mode
Display variants can only be saved as user-specific.

'A' = Standard and user-specific save mode


<<참조>>

  call function'REUSE_ALV_GRID_DISPLAY_LVC'
    exporting
      i_callback_program       = sy-cprog
      i_callback_user_command  = 'USER_COMMAND'
      i_save                   = 'A'
      it_fieldcat_lvc          = gt_fcat_lvc
      is_layout_lvc            = gs_layout
      it_events                = gt_events[]
    tables
      t_outtab                 = gt_itab .

cx_root - Division by zero

SAP/ABAP 개발 2010. 7. 21. 14:07 Posted by KindKay

  *&-----------------------------------------------------------*
*& Report  YRTEST0037
*&
*&----------------------------------------------------------*
*&
*&
*&-----------------------------------------------------------*

report  yrtest0037.

  data: lv_msg  type bapi_msg,
        lr_root type ref to cx_root,
        l       type i.


*------------------------------------------------------------*
end-of-selection.
*--------------------------------------------------------------*
   l = 10.

  try.
    l = l / 0.
  catch cx_root into lr_root.
    lv_msg = lr_root->get_text( ) .
    write: lv_msg.
  endtry.

Message Class 조회

SAP/ABAP 개발 2010. 7. 21. 10:30 Posted by KindKay


report yrtest0035.

  include yrtest0035top.
  include yrtest0035f01.



*-----------------------------------------------------------------*
initialization.
*-----------------------------------------------------------------*
  if s_arbgb[] is initial.
    mac_add_range s_arbgb 'I' 'CP' 'Z*' ''.
  endif.


*-----------------------------------------------------------------*
start-of-selection.
*-----------------------------------------------------------------*
  perform select_data.


*-----------------------------------------------------------------*
end-of-selection.
*-----------------------------------------------------------------*
  call method zcl_ppz_msg_util=>msg_data_found( it_table = gt_itab[] ).
  check gt_itab[] is not initial.

  perform get_event_list using gt_events 0.
  perform set_event.
  perform set_layout.
  perform set_fieldcat.
  perform display_alv.
 



*&-----------------------------------------------------------------
*& Include YRTEST0035TOP
*& User    A539
*& Date    2010.07.21
*&-----------------------------------------------------------------


*-----------------------------------------------------------------*
* type
*-----------------------------------------------------------------*
  type-pools: slis.


*----------------------------------------------------------------*
* table
*----------------------------------------------------------------*
  tables: t100a,    "T100에 대한 메세지 ID
          rsdag.

*--------------------------------------------------------------*
* internal table
*--------------------------------------------------------------*
  data: begin of gt_itab occurs 0.
          include structure t100a.
  data: end of gt_itab.

  data: itab like table of bdcmsgcoll with header line.


*--------------------------------------------------------------*
* BDC
*------------------------------------------------------------*
  data: gt_bdcdata like bdcdata    occurs with header line,
        gt_messtab like bdcmsgcoll occurs with header line,
        gs_options like ctu_params.


*----------------------------------------------------------*
* data
*--------------------------------------------------------------*
  data: gt_lvc_fcat type lvc_t_fcat,
        gs_lvc_layo type lvc_s_layo,
        gs_layout   type slis_layout_alv.

  data: gt_events type slis_t_event.

  data: gt_slis_t_fieldcat_alv type slis_t_fieldcat_alv,
        gs_slis_fieldcat_alv   type slis_fieldcat_alv.


*-------------------------------------------------------------*
* macro
*-------------------------------------------------------------*
* macro for filling select-option
  define mac_add_range.
    clear: &1.
    &1-sign    = &2.
    &1-option  = &3.
    &1-low     = &4.
    &1-high    = &5.
    append &1.
  end-of-definition.



*&-------------------------------------------------------------*
*&  Include           YRTEST00001_SEL
*&-------------------------------------------------------------*

  selection-screen begin of block b1 with frame title text-001.

    select-options: s_arbgb for t100a-arbgb.

  selection-screen end of block b1.
 



*&----------------------------------------------------------
*& Include YRTEST0035F01
*& User    A539
*& Date    2010.07.21
*&-------------------------------------------------------------

*&-------------------------------------------------------------*
*&      Form  DISPLAY_ALV
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
form display_alv .

  call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      i_callback_program       = sy-cprog
      it_fieldcat              = gt_slis_t_fieldcat_alv
      is_layout                = gs_layout
      i_default                = 'X'
      i_save                   = 'A'
      it_events                = gt_events
    tables
      t_outtab                 = gt_itab.

endform.                    " DISPLAY_ALV



*&--------------------------------------------------------------*
*&      Form  SET_FIELDCAT
*&---------------------------------------------------------------*
*       text
*----------------------------------------------------------------*
form set_fieldcat .

  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    exporting
      i_program_name         = sy-repid
      i_internal_tabname     = 'GT_ITAB'
      i_inclname             = sy-repid
    changing
      ct_fieldcat            = gt_slis_t_fieldcat_alv
    exceptions
      inconsistent_interface = 1
      program_error          = 2
      others                 3.

  loop at gt_slis_t_fieldcat_alv into gs_slis_fieldcat_alv.
    case gs_slis_fieldcat_alv-fieldname.
      when 'ARBGB'.
*        gs_slis_fieldcat_alv-hotspot = 'X'.
        gs_slis_fieldcat_alv-seltext_l = 'Message Class'.
        gs_slis_fieldcat_alv-seltext_m = 'Message Class'.
        modify gt_slis_t_fieldcat_alv from gs_slis_fieldcat_alv.
    endcase.
  endloop.

endform.                    " SET_FIELDCAT



*&-------------------------------------------------------------*
*&      Form  SELECT_DATA
*&---------------------------------------------------------------*
*       text
*----------------------------------------------------------------*
form select_data .

  select *
    into corresponding fields of table gt_itab
    from t100a
   where arbgb in s_arbgb.

  sort gt_itab by arbgb.

  read table gt_itab index transporting no fields.

endform.                    " SELECT_DATA



*&-------------------------------------------------------------*
*&      Form  SET_EVENT
*&--------------------------------------------------------------*
*       text
*-------------------------------------------------------------*
form set_event .

  data: ls_event type slis_alv_event.

* - FORM USER_COMMAND
  read table gt_events with key name = slis_ev_user_command
                       into ls_event.
  if sy-subrc eq 0.
    move   'USER_COMMAND' to ls_event-form.
    modify gt_events index sy-tabix from ls_event.
  endif.

endform.                    " SET_EVENT



*&------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&------------------------------------------------------------------*
*       ##(REUSE_ALV_EVENTS_GET)## CALL# FORM ###.
*-------------------------------------------------------------------*
form user_command using  p_ucomm    like sy-ucomm
                         p_selfield type slis_selfield.

  case p_ucomm.
    when '&IC1'.
      read table gt_itab index p_selfield-tabindex.
      set parameter id 'MAG' field gt_itab-arbgb.
      call transaction 'SE91' and skip first screen.

*      perform call_transaction.
  endcase.

endform.                    "USER_COMMAND



*&-----------------------------------------------------------*
*&      FORM  EVENTTAB_BUILD
*&--------------------------------------------------------------*
form get_event_list using  p_events   type slis_t_event
                           p_alv_type type slis_list_type.

  call function 'REUSE_ALV_EVENTS_GET'
    exporting
      i_list_type = p_alv_type
    importing
      et_events   = p_events.

endform.                    " EVENTTAB_BUILD



*&-----------------------------------------------------------*
*&      Form  SET_LAYOUT
*&------------------------------------------------------------*
*       text
*--------------------------------------------------------------*
form set_layout .

  clear: gs_layout.
  gs_layout-zebra = 'X'.

endform.                    " SET_LAYOUT



*&------------------------------------------------------------*
*&      Form  CALL_TRANSACTION
*&--------------------------------------------------------------*
*       text
*--------------------------------------------------------------*
form call_transaction .

  clear: gs_options, gt_bdcdata[].
  gs_options-dismode = 'E'.
  gs_options-updmode = 'A'.

  perform bdc_dynpro using  'SAPLWBMESSAGES' '0100'.
  perform bdc_field  using  'BDC_CURSOR'     'RSDAG-ARBGB'.
  perform bdc_field  using  'BDC_OKCODE'     '=WB_DISPLAY'.
  perform bdc_field  using  'RSDAG-ARBGB'    gt_itab-arbgb.

  call transaction 'SE91'   using gt_bdcdata
                     options from gs_options
                    messages into gt_messtab.

endform.                    " CALL_TRANSACTION



*&----------------------------------------------------------*
*&      Form  bdc_DYNPRO
*&--------------------------------------------------------------*
*       text
*---------------------------------------------------------------*
form bdc_dynpro using   program dynpro.

  clear: gt_bdcdata.

  gt_bdcdata-program  = program.
  gt_bdcdata-dynpro   = dynpro.
  gt_bdcdata-dynbegin = 'X'.

  append gt_bdcdata.

endform.                    " bdc_DYNPRO



*&-----------------------------------------------------------*
*&      Form  bdc_FIELD
*&------------------------------------------------------------*
*       text
*------------------------------------------------------------*
form bdc_field using fnam fval.

  clear: gt_bdcdata.

  gt_bdcdata-fnam = fnam.
  gt_bdcdata-fval = fval.

  append gt_bdcdata.

endform.                    " bdc_FIELD

*&----------------------------------------------------------------*
*& Report  YRTEST0035
*&
*&----------------------------------------------------------------*
*&
*&
*&----------------------------------------------------------------*

report  yrtest0035.

  type-pools: wfcsr.

  data : lv_text type wfcsr_ui_popup_text.

  lv_text-titlebar = 'title'.
  lv_text-question = 'question'.

  data: gv_answer.

*-----------------------------------------------------------------*
end-of-selection.
*-----------------------------------------------------------------*
  call function 'WFCS_POPUP_YES_NO'
    exporting
      pi_ui_popup_text  = lv_text
    changing
      pe_answer         = gv_answer  "YES: 1 /  NO: 2
    exceptions
      error_using_popup = 1
      others            2.

   write: gv_answer.




'SAP > ABAP 개발' 카테고리의 다른 글

cx_root - Division by zero  (1) 2010.07.21
Message Class 조회  (1) 2010.07.21
SAPGUI_PROGRESS_INDICATOR - %  (2) 2010.07.19
PP - BOM Item List Function ( MAST STPO STKO )  (2) 2010.07.16
External Operating System Commands - SM49  (2) 2010.07.09

SAPGUI_PROGRESS_INDICATOR - %

SAP/ABAP 개발 2010. 7. 19. 11:48 Posted by KindKay



 *&----------------------------------------------------------------*
*& Report  YRTEST0034
*&
*&----------------------------------------------------------------*
*&
*&
*&----------------------------------------------------------------*

REPORT  YRTEST0034.

  include YRTEST0034top.
  include YRTEST0034f01.



*-----------------------------------------------------------------*
start-of-selection.
*-----------------------------------------------------------------*
  select *
    into corresponding fields of table gt_itab2
    from sflight.

  clear: gt_itab[], gt_itab.

  loop at gt_itab2.
    do 10000 times.
      move-corresponding gt_itab2 to gt_itab.
      append gt_itab.
    enddo.
  endloop.

*-----------------------------------------------------------------*
end-of-selection.
*-----------------------------------------------------------------*
  data: l_total type i.
  describe table gt_itab lines l_total.
  loop at gt_itab.
    l_totcnt  = l_totcnt + 1.
    l_totcnt2 = l_totcnt mod 10.
    if l_totcnt2 = 0.
      g_rate = sy-tabix / l_total * 100.
      perform display_rate.
    endif.
  endloop.

  write: 'End'.
 



*&----------------------------------------------------------------*
*&  Include           YRTEST0034F01
*&----------------------------------------------------------------*

*&----------------------------------------------------------------*
*&      Form  DISPLAY_RATE
*&----------------------------------------------------------------*
*       text
*-----------------------------------------------------------------*
form display_rate .

  data: l_text(50).

  concatenate g_rate '%' 'progressing ->' gt_itab-carrid
         into l_text separated by space.

  call function 'SAPGUI_PROGRESS_INDICATOR'  "Progress  Bar
    exporting
      percentage = g_rate
      text       = l_text      "
    exceptions
      others     1.

endform.                    " DISPLAY_RATE




Hi all,

There is three ttables stpo stko mast, i have to join them and display this fields

mast~matnr,
mast~werks,
mast~stlan,
mast~stlal,
stko~stlst,
stko~stlst,
stpo~posnr,
stpo~idnrk,
stpo~menge,
stpo~meins,
stpo~ausch,
stpo~lgort.

Can any body suggest me a way to do this, also after joining them i ve to display one report. In that very report we have to show the alternative bom no and corresponding components. Someone please show me a way.


Hi!

You might try out these fm-s:

CS_BOM_EXPL_MAT_V2
CABM_READ_BOM


Regards
Tamás

출처:  http://forums.sdn.sap.com/thread.jspa?threadID=647247

External Operating System Commands - SM49

SAP/ABAP 개발 2010. 7. 9. 11:20 Posted by KindKay





SHD0 - Transaction and Screen Variants

SAP/ABAP 개발 2010. 6. 30. 08:49 Posted by KindKay

Tcode: SHD0
enter Tcode: VA01( for eg)
enter transaction variant : ZDISP ( If you want to put some fileds in gray mode),
press create button,
u ll get the regula sales order creation screen, enter the respective details and go on, according to the system proceedings,and maitain the field properties where ever ;you required.
when u reach to the final screen,it will ask u to save the document?
click on "Yes", now sales order will generate, (here transaction variant is created vth ZDISP)
now goto VOV8, select your doc type- details
in transaction flow- variant filed, assign newly created variant name ie. ZDISP

from now, whenever you use that doc type, according to the settings stored in that variant,sales order will works.




Learning LSMW Step by Step!!!

SAP/ABAP 개발 2010. 6. 29. 16:17 Posted by KindKay

Business Case:
As a part of reorganization and to better serve the customer needs, you are regrouping many of the customers. In SAP terms, you are changing the Sales Office, Sales Group and Customer Groups for specific Customer Master Records. Typically, you would maintain customer records with transaction XD02 to update 'Sales View'. You would enter Customer Key (Customer No, Sales Organization, Distribution Channel, and Division) and update relevant fields on Sales View screen. 
This document contains Step-by-step instructions to use LSMW to update Customer Master Records. It has two demonstration examples - one using Batch Recording and another using standard SAP Object.  

Demo Example 1

LSMW to Update Customer Master Records with Transaction Recording

  
Call Legacy System Migration Workbench by entering transaction code LSMW. Every conversion task is grouped together as Project / Subproject / Object structure. Create a Project called LSMW_DEMO and a Subproject as CUSTOMERS and Object as CUST_REC as shown in Figure Below.     


      
The main screen of LSMW provides wizard-like step-by-step tasks, as shown in Figure below. To complete your data conversion, you need to execute these steps in sequence. Once a step is executed, the cursor is automatically positioned to the next step. 

 Note that these steps may look different depending upon your Personal menu settings. You could make step numbers visible by 'Numbers on' icon or hidden by 'Numbers off' icon. You can execute a step by double-clicking on the row. Toggle icon 'Doubleclick=Display' or 'Doubleclick=Edit', makes the step in 'display' mode or 'change' mode.

 
      

Step 1: Maintain Object attributes

In this example, you will be updating the customer master records with the help of recording a transaction (XD02). Choose radio button Batch Input Recording and click on the recording overview icon to record the R/3 transaction. Enter the Recording name as XD02_REC, the description as Customer Master Updates Recording, and the transaction code as XD02.       



 The system calls the transaction code XD02 and prompts you to complete the Change
Customer transaction, as shown in Figure 4. Enter the key customer information (I entered customer number 1000, sales organization 1000, distribution channel 01, and division 00) and choose 'Sales' view within 'Sales area data'. Make changes to these three fields (I entered, sales office 1010, sales group 110, and customer group 01) and save the transaction.   

  
Once the transaction is completed, R/3 records the flow of screens and fields and saves the information, as shown in Figure below.      


Note that the fields are populated with default values. The values you entered when you recorded the transaction are set by default.  
Note that if you have more fields in the recording than needed, you can remove them by clicking 'Remove Screen field' icon .

Observe that the transaction-recording process stores field names in a technical format. By pressing the F1 key on individual screen fields and then pressing the F9 key, the system displays technical names. You then can replace the technical names with descriptive names. Double-click on the field RF02D-KUNNR and enter the name as KUNNR and the description as Customer Account Number and remove the default value. (See Figure below.)      

Similarly, double-click on all other fields with default values and make appropriate changes. Once you have made changes, the recording overview screen looks like what you see in Figure below.        

Save your changes. When you go back to the initial screen, you will see that the initial screen steps have changed. Since you want to import data via the BDC method, the Direct Input and *IDoc-*related steps are hidden, as they are not relevant.   

Step 2. Maintain Source Structures

Give a name and a description to the source structure (Figure below).    

Step 3. Maintain Source Fields

In this step, you need to list what fields are present in the source structure. The easiest way is to click on 'Table Maintenance' icon to enter Fieldname, Type and Length for each field  as shown in Figure below.    

  

Note that your input file will have four fields as key fields and you need to update three fields in the system.  

Step 4: Maintain Structure Relations

Execute a step to 'Maintain Structure Relations'. (See Figure below.) Since, there is only one Source and Target Structure, the relationship is defaulted automatically.      

Step 5: Maintain field mapping and conversion rules

Field RF02D-D0310 represents that you chose 'Sales view' for the customer Master screen accordingly its value should be set to X. Keep your cursor on field RF02D-D0310 and click on Constant rule icon to choose the constant value of 'X'. 
If your source file already has the field value, you choose rule 'Source Field'.  
Keep cursor on field 'KUNNR' and click on 'Assign Source field' icon to choose source field CUSTOMER from structure XD02S as shown in Figure below.       

Similarly, assign 'Source Field' rules to the remaining fields.  
Once all the fields are mapped, you should have an overview screen as shown in Figure below.      

Step 6: Maintain fixed values, translations, user-defined routines

You can also maintain re-usable translations and user-defined routines, which can be used across conversion tasks. In this case, that step is not required.  

Step 7: Specify files

In this step, we define how the layout of the input file is. The input file is a [Community:Tab] delimited with the first row as field names. It is present on my PC (local drive) as C:\XD02.txt. (See Figure below.)      

Create an Excel file (Figure below) with your data and save it as a Tab-delimited text file on your local drive (C:\ and name it XD02.txt).     

Step 8: Assign files

Execute step 'Assign Files' (Figure below) and the system automatically defaults the filename to the source structure.      

Step 9: Read data

In this step, LSMW reads the data (Figure below) from the source file (from your PC's local drive). You have the option to read only selected rows and convert data values to Internal format.      

 

Step 10: Display read data

This step (Figure below) is optional. If required, you can review the field contents for the rows of data read.    

    

Step 11: Convert data

This is the step that actually converts the source data (in source format) to a target format. Based on the conversion rules defined, source fields are mapped to target fields.  

Step 12: Display Converted data

Again this is an optional step to view how the source data is converted to internal SAP format (Figure below).        

 

Step 13: Create batch input session

Once the source data is converted in an internal format, you can create a batch session to process updates (Figure below).       

  

Step 14: Run Batch Input Session

You can execute the BDC session by Run Batch input session. Executing a batch input session is a standard SM35 transaction for managing BDC sessions. Once you have successfully executed the batch input session, the customer master records are updated in the system. You can confirm this by viewing the customer master records (XD03).   
Note! Browsing thru these 14 steps, you may get a feeling that this is a very lengthy and time-consuming activity. However, for the purposes of demonstration, I have made it detailed. Although it looks lengthy, actually it takes hardly few hours from start-to-finish! After playing around with few simple LSMW scripts, you will find it so easy to change and create more complex ones.

출처: http://wiki.sdn.sap.com/wiki/display/CRM/Learning+LSMW+Step+by+Step%21%21%21




*&----------------------------------------------------------------*
*& Report  YRTEST0007
*&
*&----------------------------------------------------------------*
*&
*&
*&----------------------------------------------------------------*

report  YRTEST0007.


*-----------------------------------------------------------------*
end-of-selection.
*-----------------------------------------------------------------*
  data: ip type char15.

  call method cl_gui_frontend_services=>get_ip_address
    receiving
      ip_address           = ip
    exceptions
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      others               4.

  write: ip.