tag:blogger.com,1999:blog-63854909945838165152024-03-16T06:09:38.314+05:00SDN ABAPerFaisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-6385490994583816515.post-21927636931603724052010-11-23T14:54:00.002+05:002010-11-30T16:27:50.131+05:00OO ALV Event DATA_CHANGEDDownload <b>.nugg</b> file using link below and install this to your system using <a href="http://code.google.com/p/saplink/" target="_blank">SAPLink</a>.<br />
<a href="http://www.zumodrive.com/share/8IbpMTM1MD" target="_blank">SAPLink Package of Application</a><br />
<br />
After installing active<br />
<b>1. ZFSL_OO_ALV_DATA_CHANGED_EVENT</b> Main Program<br />
<b>2. 9001</b> Screen<br />
<b>3. MAIN_PF_STATUS</b> PF-STATUS<br />
<b>4. MAIN_TITLE</b> TITLEBAR<br />
<br />
<b>* Main Program</b><br />
<pre style="background-color: #eeeeee; border: 2px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>*&---------------------------------------------------------------------*
*& Report ZFSL_OO_ALV_DATA_CHANGED_EVENT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zfsl_oo_alv_data_changed_event.
DATA: ok_code_9001 LIKE sy-ucomm,
field TYPE c LENGTH 50,
line TYPE i,
offset TYPE i.
DATA: alv_grid TYPE REF TO cl_gui_alv_grid,
alv_custom_container TYPE REF TO cl_gui_custom_container.
DATA: it_fcat TYPE lvc_t_fcat,
wa_fcat LIKE LINE OF it_fcat.
DATA: l_valid TYPE char1.
DATA: it_t247 LIKE STANDARD TABLE OF t247,
wa_t257 LIKE t247,
it_outtab LIKE STANDARD TABLE OF t247,
wa_outtab LIKE t247.
CLASS: lcl_event_receiver DEFINITION DEFERRED.
DATA: event_receiver TYPE REF TO lcl_event_receiver.
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING er_data_changed.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed.
BREAK-POINT.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
************************************************************************
* START-OF-SELECTION *
************************************************************************
START-OF-SELECTION.
CALL SCREEN 9001.
************************************************************************
* PROCESS BEFORE OUTPUT *
************************************************************************
*&---------------------------------------------------------------------*
*& Module DATA_SELECTION_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE data_selection_9001 OUTPUT.
IF it_t247[] IS INITIAL.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_t247
FROM t247
WHERE spras = 'E'.
it_outtab[] = it_t247[].
ENDIF.
ENDMODULE. " DATA_SELECTION_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
SET PF-STATUS 'MAIN_PF_STATUS'.
SET TITLEBAR 'MAIN_TITLE'.
IF it_fcat[] IS INITIAL.
PERFORM fill_fcat.
ENDIF.
IF alv_custom_container IS INITIAL.
PERFORM show_alv.
ENDIF.
ENDMODULE. " STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Module CLEAR_OK_CODE_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE clear_ok_code_9001 OUTPUT.
CLEAR: ok_code_9001.
ENDMODULE. " CLEAR_OK_CODE_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Module SET_CURSOR_FIELD_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_cursor_field_9001 OUTPUT.
SET CURSOR FIELD field LINE line OFFSET offset.
ENDMODULE. " SET_CURSOR_FIELD_9001 OUTPUT
************************************************************************
* PROCESS AFTER INPUT *
************************************************************************
*&---------------------------------------------------------------------*
*& Module EXIT_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit_command_9001 INPUT.
CASE ok_code_9001.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL' .
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " EXIT_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
*& Module GET_CURSOR_FIELD_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE get_cursor_field_9001 INPUT.
GET CURSOR FIELD field LINE line OFFSET offset.
ENDMODULE. " GET_CURSOR_FIELD_9001 INPUT
*&---------------------------------------------------------------------*
*& Module IT_OPERATION_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE it_operation_9001 INPUT.
ENDMODULE. " IT_OPERATION_9001 INPUT
*&---------------------------------------------------------------------*
*& Module SAVE_DATA_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE save_data_9001 INPUT.
CASE ok_code_9001.
WHEN 'SAVE'.
CALL METHOD alv_grid->check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid = 'X'.
BREAK-POINT.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " SAVE_DATA_9001 INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
ENDMODULE. " USER_COMMAND_9001 INPUT
************************************************************************
* FORMs *
************************************************************************
*&---------------------------------------------------------------------*
*& Form SHOW_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_alv .
CREATE OBJECT alv_custom_container
EXPORTING
container_name = 'ALV_CONTROL'.
CREATE OBJECT alv_grid
EXPORTING
i_parent = alv_custom_container.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_data_changed FOR alv_grid.
CALL METHOD alv_grid->set_table_for_first_display
CHANGING
it_outtab = it_outtab
it_fieldcatalog = it_fcat.
ENDFORM. " SHOW_ALV
*&---------------------------------------------------------------------*
*& Form FILL_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fill_fcat .
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'T247'
CHANGING
ct_fieldcat = it_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT it_fcat INTO wa_fcat WHERE fieldname = 'LTX'.
wa_fcat-edit = 'X'.
MODIFY it_fcat FROM wa_fcat INDEX sy-tabix.
ENDLOOP.
ENDFORM. "FILL_FCAT
</code></pre><br />
<b>* Flow Logic of Screen 9001</b><br />
<pre style="background-color: #eeeeee; border: 2px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>*********************************************************************
* PROCESS BEFORE OUTPUT *
*********************************************************************
PROCESS BEFORE OUTPUT.
MODULE data_selection_9001.
MODULE status_9001.
MODULE clear_ok_code_9001.
MODULE set_cursor_field_9001.
*********************************************************************
* PROCESS AFTER INPUT *
*********************************************************************
PROCESS AFTER INPUT.
MODULE exit_command_9001 AT EXIT-COMMAND.
MODULE get_cursor_field_9001.
MODULE it_operation_9001.
MODULE save_data_9001.
MODULE user_command_9001.
</code></pre>Faisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.com0tag:blogger.com,1999:blog-6385490994583816515.post-10177576122244403942010-11-22T11:28:00.000+05:002010-11-22T11:32:44.524+05:00Filter and Search in Table ControlFrom last few weeks I am observing two or three threads about searching in Table Control on SDN, those threads gave me idea to develop some Filtering and Searching option in Table Control I just completed this and going to share with you Friends.<br />
<br />
I used SELECT-OPTIONs on Screen using SUB Screen, Macros, Dynamic Search Help and Dynamic Dropdown list Filling. I think these things will help specially for beginners those who didn’t play these things before. <br />
<br />
Download <b>.nugg</b> file of that Program using link below and install this to your system using <a href="http://code.google.com/p/saplink/" target="_blank">SAPLink</a>.<br />
<br />
<a href="http://www.zumodrive.com/share/8ra8NWRmNj" target="_blank">SAPLink Package of Application</a><br />
<br />
After installing active<br />
<br />
<b>1. ZFSL_FS_IN_TABLE_CONTROL</b> Main Program<br />
<b>2. 9001</b> Screen<br />
<b>3. MAIN_PF_STATUS</b> PF-STATUS<br />
<b>4. MAIN_TITLE</b> TITLEBAR<br />
<br />
<b>Main Screen (Filter)</b> <br />
<br />
<img alt="image" border="0" height="302" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_001.JPG" width="405" /><br />
<br />
From Dropdown Listbox select the Value you want to filter by, which has already field as shown in below screenshots.<br />
<br />
<img alt="image" border="0" height="71" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_002.JPG" width="78" /> <img alt="image" border="0" height="87" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_003.JPG" width="77" /><br />
<br />
Select different Values from the Dropdown Listbox and Press the Filter Button it will filter the records according to the Selected value as in bellow screens.<br />
<br />
<b>1st</b> <br />
<br />
<img alt="image" border="0" height="232" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_004.JPG" width="395" /><br />
<br />
<b>2nd</b> <br />
<img alt="image" border="0" height="234" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_005.JPG" width="396" /><br />
<br />
<b>3rd</b> <br />
<img alt="image" border="0" height="233" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_006.JPG" width="397" /><br />
<br />
<b>Main Screen (Search)</b> <br />
In the case of Filter you can only select the values from the Dropdown Listbox you can't do the search like all strings starting from <b>A</b>. and also want to search string starting with A or B we will see this in next steps. The Main Search Screen will look like below one.<br />
<img alt="image" border="0" height="300" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_007.JPG" width="484" /><br />
Search Help for Both Fields will fill dynamically according to the Table Control Values, for above Table Control Values Search Help will look like below.<br />
<br />
<b>INT </b>field Search Help <br />
<img alt="image" border="0" height="500" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Installed_VM_ABAP_Trial_Version_007a.JPG" width="346" /><br />
<br />
<b>CHAR</b> field Search Help <br />
<img alt="image" border="0" height="500" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Installed_VM_ABAP_Trial_Version_007b.JPG" width="347" /><br />
<br />
<br />
We have the following Option in the Cash of Search, Select the Search Button after every entered value.<br />
<br />
<br />
<b>1st</b> <br />
<img alt="image" border="0" height="231" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_008.JPG" width="473" /><br />
<br />
<b>2nd</b><br />
<img alt="image" border="0" height="234" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_009.JPG" width="480" /><br />
<br />
You can also use the Extension button for Multiple Values in single field like i want to show records where <b>INT</b> having values <b>1 or 2</b> and <b>CHAR</b> having value starting with <b>A</b> or <b>B</b>.<br />
<br />
<b>3rd</b> <br />
<b>1</b><br />
<img alt="image" border="0" height="36" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_010.JPG" width="219" /><br />
<br />
<img alt="image" border="0" height="386" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_011.JPG" width="658" /><br />
<br />
<br />
<b>2</b><br />
<img alt="image" border="0" height="36" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_012.JPG" width="230" /><br />
<img alt="image" border="0" height="387" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_013.JPG" width="659" /><br />
<br />
<br />
<b>3</b> <br />
<img alt="image" border="0" height="233" src="https://weblogs.sdn.sap.com/weblogs/images/252134807/Filter_and_Search_in_Table_Control_014.JPG" width="477" />Faisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.com2tag:blogger.com,1999:blog-6385490994583816515.post-61588166361182418332010-11-15T15:38:00.001+05:002010-11-15T15:38:40.652+05:00Get Name of Files from Selected Directory to Excel File<pre style="background-color: #eeeeee; border: 2px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>REPORT zfsl_gdirfn.
DATA: it_file LIKE STANDARD TABLE OF sdokpath WITH HEADER LINE,
it_dir LIKE STANDARD TABLE OF sdokpath WITH HEADER LINE,
file_count TYPE i,
dir_count TYPE i.
PARAMETER: pdirp TYPE pfeflnamel OBLIGATORY, " Directory Path from where you want to get Name of Files
psavep TYPE string OBLIGATORY. " Excel File Path and Name in which you want to Save Name of Files
CALL FUNCTION 'TMP_GUI_DIRECTORY_LIST_FILES' " To Get the Name of Files in Internal Table of Given Directory
EXPORTING
directory = pdirp
filter = '*.*'
IMPORTING
file_count = file_count " Number of File in Directory
dir_count = dir_count " Number of Directory in Directory
TABLES
file_table = it_file " Table for Name of Files
dir_table = it_dir " Table for Name of Directories
EXCEPTIONS
cntl_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF file_count IS NOT INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = psavep " Path and Name of Excel File with Extension .xls
TABLES
data_tab = it_file " Internal Table having all Name of Files
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
MESSAGE: 'No file found in the selected Directory' TYPE 'I'.
ENDIF.
INITIALIZATION.
pdirp = 'C:\'.
psavep = 'C:\test.xls'.
*F4 for Getting Directory Path
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pdirp.
DATA: fname TYPE string.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = 'Select Directory'
CHANGING
selected_folder = fname
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
pdirp = fname.
*F4 for Getting File Path and Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR psavep.
DATA: filename TYPE string,
path TYPE string.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = 'Select path and file name'
default_extension = 'XLS'
CHANGING
filename = filename
path = path
fullpath = psavep
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
</code></pre>Faisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.com0tag:blogger.com,1999:blog-6385490994583816515.post-17226326501641153132010-11-15T15:04:00.000+05:002010-11-15T15:04:32.681+05:00HR: Employee Infotype (0000 to 9999) Change HistoryA few months back I got a requirement to show all changes in Employee Master. First I tried my best to search the solution, I found many of the threads with the similar requirement but solution was not there, so I tried to think about it and came to a solution, I want to share this so that it will helpful people in future.<br />
<br />
<b>Selection Screen :-</b> On the Selection Screen bellow you will have to enter the date between you want to display the changes and personal numbers or you can leave it blank for display changes of all Employees.<br />
<br />
<iframe frameborder="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEe8w1PX5Qn-iyWBmr02rgT6yjI3CL-jC7SFcPTMeHPPeivTSQAMRucBtnhqE2XG1R2SKjPV4v2aldwBva8-7uw3KNev88d3H9lTqxA9BTkn1qO-Xv7mwpK1ZnSPyM6nYALCFIoDiG5L4/s1600-r/EmpMasChangeSelectionScreen.JPG" width="581"></iframe><br />
<br />
<br />
<b>Output :-</b> Bellow is the Screen Shot of the First Screen it will show up all the infotypes which have changed with the Employee's Personal Number and Name<br />
<br />
<iframe frameborder="0" height="344" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpEwLgng1me4AyH_uUcTnZBOcA4vXxpq5sEY2_GsEtkmbrV7jF7GRkhM52TrWAkjI_8U2ekXM1qlpGRxRhsHe1qlfr1Z_dE9NtIL24WkDPiu-QhcUumojnEIW6pwm4fGmurVwTcjXU3Oo/s1600-r/EmpMasChangeMainScreen.JPG" width="623"></iframe><br />
<br />
<br />
After Click on any Change Category it will show up the details of that infotype as shown bellow.<br />
<br />
<iframe frameborder="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlivsNyd4JXUQKhEpU-GiCzOqx8syaPM7GOCgYNxWDaIdNyME6KW1N6dh2MbN_XXxxkor99_ekr7RPatlKI_APIx-LBsfaTlv38dxsxrCDvUtaM215XvjM_Oftg9-V8GL1oKquoDMuS9E/s1600-r/EmpMasChangeTableDisplay.JPG" width="554"></iframe><br />
<br />
<br />
<b>Code :-</b>Just Copy Past Bellow Code Save, Active and ready to display changes<br />
<br />
<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 2px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>REPORT zfsl_hremdch NO STANDARD PAGE HEADING.
TABLES: pa0000.
************************************************************************
* Selection Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-001 .
SELECT-OPTIONS: soaedat FOR pa0000-aedtm OBLIGATORY NO-EXTENSION,
sopernr FOR pa0000-pernr.
SELECTION-SCREEN END OF BLOCK main.
************************************************************************
* Types Defined *
************************************************************************
TYPES: BEGIN OF ty_tables, " Type for All HR Master Table Name and Description
tabname LIKE dd02l-tabname,
ddtext LIKE dd02t-ddtext,
END OF ty_tables.
TYPES: BEGIN OF ty_mas. " Type for HR Master Data Change
INCLUDE: STRUCTURE pakey,
TYPE ty_tables.
TYPES: ename LIKE pa0001-ename,
aedtm LIKE pa0000-aedtm,
uname LIKE pa0000-uname,
END OF ty_mas.
TYPES: BEGIN OF ty_pa0001, " Type for Ename and Plans
pernr LIKE pa0001-pernr,
ename LIKE pa0001-ename,
END OF ty_pa0001.
************************************************************************
* Declaration of Variables *
************************************************************************
DATA: it_tables TYPE STANDARD TABLE OF ty_tables WITH HEADER LINE,
wa_tables TYPE ty_tables,
it_mas TYPE STANDARD TABLE OF ty_mas WITH HEADER LINE,
wa1_mas TYPE ty_mas,
wa2_mas TYPE ty_mas,
it_pa0001 TYPE SORTED TABLE OF ty_pa0001 WITH HEADER LINE WITH UNIQUE KEY pernr,
wa_pa0001 TYPE ty_pa0001,
str_date TYPE string,
str_len TYPE i,
date_low TYPE c LENGTH 10,
date_high TYPE c LENGTH 10,
flag TYPE c LENGTH 1.
************************************************************************
* FIELD-SYMBOLS *
************************************************************************
FIELD-SYMBOLS: <wa_mas_c> TYPE ty_mas.
************************************************************************
* Declaration of RANGES *
************************************************************************
DATA: rg_pernr LIKE RANGE OF pa0000-pernr WITH HEADER LINE.
************************************************************************
* START-OF-SELECTION *
************************************************************************
START-OF-SELECTION.
* Format Date to Display on the Screen Top of Page
CLEAR: date_low, date_high.
WRITE: soaedat-low TO date_low, soaedat-high TO date_high.
IF soaedat-high <> '00000000' .
CONCATENATE 'Date: From' date_low 'to' date_high INTO str_date SEPARATED BY space.
ELSE.
CONCATENATE 'Date:' date_low INTO str_date SEPARATED BY space.
ENDIF.
* Select All the Table Name and Description Start from PA
SELECT dd02l~tabname dd02t~ddtext
INTO CORRESPONDING FIELDS OF TABLE it_tables
FROM dd02l LEFT OUTER JOIN dd02t ON ( dd02l~tabname = dd02t~tabname AND dd02t~ddlanguage = 'E' )
WHERE dd02l~tabname LIKE 'PA%'.
* Now Delete all other Tables name Because we Need name from PA0000 to PA9999 we are dealing with all Infotypes 0000 to 9999
LOOP AT it_tables INTO wa_tables.
IF wa_tables-tabname+2(4) CO '0123456789' AND STRLEN( wa_tables-tabname ) = 6 .
ELSE.
DELETE it_tables INDEX sy-tabix.
ENDIF.
ENDLOOP.
SORT it_tables BY tabname.
** Get all the Changed Data and Append it to Internal Table and also Append pernrs to a Range for further USE
rg_pernr-sign = 'I'. rg_pernr-option = 'EQ'.
LOOP AT it_tables INTO wa_tables.
SELECT pernr subty objps sprps endda begda seqnr aedtm uname
APPENDING CORRESPONDING FIELDS OF TABLE it_mas
FROM (wa_tables-tabname)
WHERE aedtm IN soaedat
AND pernr IN sopernr.
IF sy-subrc = 0.
LOOP AT it_mas ASSIGNING <wa_mas_c> WHERE tabname IS INITIAL.
<wa_mas_c>-tabname = wa_tables-tabname.
<wa_mas_c>-ddtext = wa_tables-ddtext.
rg_pernr-low = <wa_mas_c>-pernr.
APPEND rg_pernr.
ENDLOOP.
ENDIF.
ENDLOOP.
* Delete all duplicate pernrs because we Need Distinct For this First Sort by low
SORT rg_pernr BY low.
DELETE ADJACENT DUPLICATES FROM rg_pernr COMPARING low.
IF rg_pernr[] IS NOT INITIAL.
* Select Ename and Plans from PA0001 for all pernr in Range
SELECT mandt pernr subty objps sprps endda begda seqnr ename " We need only Pernr and Ename but because me using FOR ALL ENTRIES IN so talking all Key Fields
FROM pa0001
INTO CORRESPONDING FIELDS OF TABLE it_pa0001
FOR ALL ENTRIES IN rg_pernr
WHERE pernr = rg_pernr-low
AND endda = '99991231'.
* Now Place Names against every pernr
LOOP AT it_mas ASSIGNING <wa_mas_c> .
READ TABLE it_pa0001 WITH TABLE KEY pernr = <wa_mas_c>-pernr.
IF sy-subrc = 0.
<wa_mas_c>-ename = it_pa0001-ename.
ENDIF.
ENDLOOP.
ENDIF.
IF it_mas[] IS INITIAL.
MESSAGE: 'No Change History Found' TYPE 'I'.
ENDIF.
SORT: it_mas BY pernr tabname aedtm begda.
* Now Write the Master Internal Table on the Screen in the Specific Format
LOOP AT it_mas INTO wa1_mas.
* Uncomment this code if want to see Table Description between ( )
** Here we only need the infotype name not Prefix Before Table Description So Get only Text in “ ( ) “
* SEARCH wa1_mas-ddtext FOR '('.
* IF sy-subrc EQ 0.
* str_len = 60 - sy-fdpos.
* wa1_mas-ddtext = wa1_mas-ddtext+sy-fdpos(str_len).
* ELSE.
* CLEAR: wa1_mas-ddtext.
* ENDIF.
wa2_mas = wa1_mas.
AT NEW pernr.
WRITE: 1(140) sy-uline,
/1 '|',
2(12) wa2_mas-pernr CENTERED HOTSPOT ON,
14(1) '|',
15(30) wa2_mas-ename HOTSPOT ON,
45(1) '|',
46(60) wa2_mas-ddtext HOTSPOT ON,
106(1) '|',
107(20) wa2_mas-uname CENTERED HOTSPOT ON,
127(1) '|',
128(12) wa2_mas-aedtm CENTERED HOTSPOT ON.
HIDE : wa2_mas.
WRITE: 140(1) '|',
/1(140) sy-uline.
flag = 'X'.
ENDAT.
IF flag EQ 'X'.
flag = ''.
ELSE.
WRITE: /1 '|',
45(1) '|',
46(60) wa2_mas-ddtext HOTSPOT ON,
106(1) '|',
107(20) wa2_mas-uname CENTERED HOTSPOT ON,
127(1) '|',
128(12) wa2_mas-aedtm CENTERED HOTSPOT ON,
140(1) '|'.
HIDE : wa2_mas.
WRITE: /1 '|',
45(96) sy-uline.
ENDIF.
AT END OF pernr.
WRITE: 1(140) sy-uline.
ENDAT.
ENDLOOP.
************************************************************************
* AT LINE-SELECTION *
************************************************************************
AT LINE-SELECTION.
DATA: it_ref TYPE REF TO data.
DATA: lvc_title TYPE lvc_title.
* Creation of Dynamic Internal Table
CREATE DATA it_ref TYPE STANDARD TABLE OF (wa2_mas-tabname).
FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE.
ASSIGN it_ref->* TO <itab>.
* Selection of Changed Data
SELECT * FROM (wa2_mas-tabname)
INTO CORRESPONDING FIELDS OF TABLE <itab>
WHERE pernr = wa2_mas-pernr
AND aedtm <= wa2_mas-aedtm.
IF sy-subrc = 0.
* Show ALV for select records
PERFORM show_alv.
ENDIF.
************************************************************************
* AT SELECTION-SCREEN OUTPUT *
************************************************************************
AT SELECTION-SCREEN OUTPUT.
IF soaedat[] IS INITIAL.
soaedat-high = sy-datum.
APPEND soaedat TO soaedat.
ENDIF.
************************************************************************
* INITIALIZATION *
************************************************************************
INITIALIZATION.
************************************************************************
* TOP-OF-PAGE *
************************************************************************
TOP-OF-PAGE.
WRITE: 1(140) sy-uline,
/1 '|',
2(139) 'HR: Master Data Change' CENTERED COLOR 1,
140(1) '|' ,
/1 '|',
2(139) str_date CENTERED COLOR 1,
140(1) '|' .
WRITE: /1(140) sy-uline,
/1 '|',
2(12) 'Personal No.' CENTERED COLOR 1,
14(1) '|',
15(30) 'Name of Employee' CENTERED COLOR 1,
45(1) '|',
46(60) 'Changed Category' CENTERED COLOR 1,
106(1) '|',
107(20) 'Changed By' CENTERED COLOR 1,
127(1) '|',
128(12) 'Changed On' CENTERED COLOR 1,
140(1) '|',
/1(140) sy-uline.
************************************************************************
* FORMs *
************************************************************************
*&---------------------------------------------------------------------*
*& Form show_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM show_alv.
TYPE-POOLS: slis.
DATA: wa_layout TYPE slis_layout_alv.
DATA: it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
CONCATENATE wa2_mas-tabname+2(4) '=>' wa2_mas-ddtext INTO lvc_title SEPARATED BY space.
* For Sorting
CLEAR wa_sort.
wa_sort-fieldname = 'AEDTM'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
* for Layout
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
* Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_structure_name = wa2_mas-tabname
i_grid_title = lvc_title
is_layout = wa_layout
it_sort = it_sort
i_default = 'X'
i_save = 'X'
TABLES
t_outtab = <itab>
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "show_alv
</code></pre>Faisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.com1tag:blogger.com,1999:blog-6385490994583816515.post-10848514455788122232010-11-15T14:44:00.000+05:002010-11-15T15:01:20.599+05:00HR: Applicant Infotype (0000 to 9999) Change HistoryA few months back I got a requirement to show all changes in Applicant Master. First I tried my best to search the solution, I found many of the threads with the similar requirement but solution was not there, so I tried to think about it and came to a solution, I want to share this so that it will helpful people in future.<br />
<br />
<b>Selection Screen :-</b> On the Selection Screen bellow you will have to enter the date between you want to display the changes and personal numbers or you can leave it blank for display changes of all Employees.<br />
<br />
<img height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgawIvuFiwMF6cqpWLB05ZI23qU6POVPfALS1kqOfshTC_6Cbwvd3DywX4l-8W1-At5KoTnX3m6HF6h4p3furmYr4eSzKFoOMsHy6YoEU-mMMMTwiAUVF9mG6kFzt03SKYiJzsi1ZjSCBY/s1600-r/AppMasChangeSelectionScreen.JPG" width="575" /><br />
<br />
<br />
<b>Output :-</b> Bellow is the Screen Shot of the First Screen it will show up all the infotypes which have changed with the Employee's Personal Number and Name<br />
<br />
<img height="308" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxYhCi1gFr0dm0GeB8RQJibcbfTR_2wjPG9xywG3RIE7O6KCWRUTodYOz9pRjkfaDLX5WqRrBLlTWxHiFQ2OV4EgV2SqOrWbiNjSat6ncmGBfcVUPw1uxnHdEwIVOkQw-Yib28ZAlBAaw/s1600-r/AppMasChangeMainScreen.JPG" width="623" /><br />
<br />
<br />
After Click on any Change Category it will show up the details of that infotype as shown bellow.<br />
<br />
<img height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6ZY5opDS_OJ8l7kNMs1x26hYMCe6MTP5Sysf90B3H4nvFmL91eK3Yt8yIueAaaz3L3YiW7AA122Dg7fTuZ_0jhGDllBu8dCXhSEoaClP8orFLpZQDTwJnVI32VJh9370wNozQgNC5njc/s1600-r/AppMasChangeTableDisplay.JPG" width="498" /><br />
<br />
<br />
<b>Code :-</b>Just Copy Past Bellow Code Save, Active and ready to display changes<br />
<br />
<pre style="background-color: #eeeeee; border: 2px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>REPORT zfsl_hremdch NO STANDARD PAGE HEADING.
TABLES: pa0000.
************************************************************************
* Selection Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-001 .
SELECT-OPTIONS: soaedat FOR pa0000-aedtm OBLIGATORY NO-EXTENSION,
sopernr FOR pa0000-pernr.
SELECTION-SCREEN END OF BLOCK main.
************************************************************************
* Types Defined *
************************************************************************
TYPES: BEGIN OF ty_tables, " Type for All HR Master Table Name and Description
tabname LIKE dd02l-tabname,
ddtext LIKE dd02t-ddtext,
END OF ty_tables.
TYPES: BEGIN OF ty_mas. " Type for HR Master Data Change
INCLUDE: STRUCTURE pakey,
TYPE ty_tables.
TYPES: ename LIKE pa0001-ename,
aedtm LIKE pa0000-aedtm,
uname LIKE pa0000-uname,
END OF ty_mas.
TYPES: BEGIN OF ty_pa0001, " Type for Ename and Plans
pernr LIKE pa0001-pernr,
ename LIKE pa0001-ename,
END OF ty_pa0001.
************************************************************************
* Declaration of Variables *
************************************************************************
DATA: it_tables TYPE STANDARD TABLE OF ty_tables WITH HEADER LINE,
wa_tables TYPE ty_tables,
it_mas TYPE STANDARD TABLE OF ty_mas WITH HEADER LINE,
wa1_mas TYPE ty_mas,
wa2_mas TYPE ty_mas,
it_pa0001 TYPE SORTED TABLE OF ty_pa0001 WITH HEADER LINE WITH UNIQUE KEY pernr,
wa_pa0001 TYPE ty_pa0001,
str_date TYPE string,
str_len TYPE i,
date_low TYPE c LENGTH 10,
date_high TYPE c LENGTH 10,
flag TYPE c LENGTH 1.
************************************************************************
* FIELD-SYMBOLS *
************************************************************************
FIELD-SYMBOLS: <wa_mas_c> TYPE ty_mas.
************************************************************************
* Declaration of RANGES *
************************************************************************
DATA: rg_pernr LIKE RANGE OF pa0000-pernr WITH HEADER LINE.
************************************************************************
* START-OF-SELECTION *
************************************************************************
START-OF-SELECTION.
* Format Date to Display on the Screen Top of Page
CLEAR: date_low, date_high.
WRITE: soaedat-low TO date_low, soaedat-high TO date_high.
IF soaedat-high <> '00000000' .
CONCATENATE 'Date: From' date_low 'to' date_high INTO str_date SEPARATED BY space.
ELSE.
CONCATENATE 'Date:' date_low INTO str_date SEPARATED BY space.
ENDIF.
* Select All the Table Name and Description Start from PA
SELECT dd02l~tabname dd02t~ddtext
INTO CORRESPONDING FIELDS OF TABLE it_tables
FROM dd02l LEFT OUTER JOIN dd02t ON ( dd02l~tabname = dd02t~tabname AND dd02t~ddlanguage = 'E' )
WHERE dd02l~tabname LIKE 'PB%'.
* Now Delete all other Tables name Because we Need name from PA0000 to PA9999 we are dealing with all Infotypes 0000 to 9999
LOOP AT it_tables INTO wa_tables.
IF wa_tables-tabname+2(4) CO '0123456789' AND STRLEN( wa_tables-tabname ) = 6 .
ELSE.
DELETE it_tables INDEX sy-tabix.
ENDIF.
ENDLOOP.
SORT it_tables BY tabname.
** Get all the Changed Data and Append it to Internal Table and also Append pernrs to a Range for further USE
rg_pernr-sign = 'I'. rg_pernr-option = 'EQ'.
LOOP AT it_tables INTO wa_tables.
SELECT pernr subty objps sprps endda begda seqnr aedtm uname
APPENDING CORRESPONDING FIELDS OF TABLE it_mas
FROM (wa_tables-tabname)
WHERE aedtm IN soaedat
AND pernr IN sopernr.
IF sy-subrc = 0.
LOOP AT it_mas ASSIGNING <wa_mas_c> WHERE tabname IS INITIAL.
<wa_mas_c>-tabname = wa_tables-tabname.
<wa_mas_c>-ddtext = wa_tables-ddtext.
rg_pernr-low = <wa_mas_c>-pernr.
APPEND rg_pernr.
ENDLOOP.
ENDIF.
ENDLOOP.
* Delete all duplicate pernrs because we Need Distinct For this First Sort by low
SORT rg_pernr BY low.
DELETE ADJACENT DUPLICATES FROM rg_pernr COMPARING low.
IF rg_pernr[] IS NOT INITIAL.
* Select Ename and Plans from PA0001 for all pernr in Range
SELECT mandt pernr subty objps sprps endda begda seqnr ename " We need only Pernr and Ename but because me using FOR ALL ENTRIES IN so talking all Key Fields
FROM pa0001
INTO CORRESPONDING FIELDS OF TABLE it_pa0001
FOR ALL ENTRIES IN rg_pernr
WHERE pernr = rg_pernr-low
AND endda = '99991231'.
* Now Place Names against every pernr
LOOP AT it_mas ASSIGNING <wa_mas_c> .
READ TABLE it_pa0001 WITH TABLE KEY pernr = <wa_mas_c>-pernr.
IF sy-subrc = 0.
<wa_mas_c>-ename = it_pa0001-ename.
ENDIF.
ENDLOOP.
ENDIF.
IF it_mas[] IS INITIAL.
MESSAGE: 'No Change History Found' TYPE 'I'.
ENDIF.
SORT: it_mas BY pernr tabname aedtm begda.
* Now Write the Master Internal Table on the Screen in the Specific Format
LOOP AT it_mas INTO wa1_mas.
* Uncomment this code if want to see Table Description between ( )
** Here we only need the infotype name not Prefix Before Table Description So Get only Text in “ ( ) “
* SEARCH wa1_mas-ddtext FOR '('.
* IF sy-subrc EQ 0.
* str_len = 60 - sy-fdpos.
* wa1_mas-ddtext = wa1_mas-ddtext+sy-fdpos(str_len).
* ELSE.
* CLEAR: wa1_mas-ddtext.
* ENDIF.
wa2_mas = wa1_mas.
AT NEW pernr.
WRITE: 1(140) sy-uline,
/1 '|',
2(12) wa2_mas-pernr CENTERED HOTSPOT ON,
14(1) '|',
15(30) wa2_mas-ename HOTSPOT ON,
45(1) '|',
46(60) wa2_mas-ddtext HOTSPOT ON,
106(1) '|',
107(20) wa2_mas-uname CENTERED HOTSPOT ON,
127(1) '|',
128(12) wa2_mas-aedtm CENTERED HOTSPOT ON.
HIDE : wa2_mas.
WRITE: 140(1) '|',
/1(140) sy-uline.
flag = 'X'.
ENDAT.
IF flag EQ 'X'.
flag = ''.
ELSE.
WRITE: /1 '|',
45(1) '|',
46(60) wa2_mas-ddtext HOTSPOT ON,
106(1) '|',
107(20) wa2_mas-uname CENTERED HOTSPOT ON,
127(1) '|',
128(12) wa2_mas-aedtm CENTERED HOTSPOT ON,
140(1) '|'.
HIDE : wa2_mas.
WRITE: /1 '|',
45(96) sy-uline.
ENDIF.
AT END OF pernr.
WRITE: 1(140) sy-uline.
ENDAT.
ENDLOOP.
************************************************************************
* AT LINE-SELECTION *
************************************************************************
AT LINE-SELECTION.
DATA: it_ref TYPE REF TO data.
DATA: lvc_title TYPE lvc_title.
* Creation of Dynamic Internal Table
CREATE DATA it_ref TYPE STANDARD TABLE OF (wa2_mas-tabname).
FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE.
ASSIGN it_ref->* TO <itab>.
* Selection of Changed Data
SELECT * FROM (wa2_mas-tabname)
INTO CORRESPONDING FIELDS OF TABLE <itab>
WHERE pernr = wa2_mas-pernr
AND aedtm <= wa2_mas-aedtm.
IF sy-subrc = 0.
* Show ALV for select records
PERFORM show_alv.
ENDIF.
************************************************************************
* AT SELECTION-SCREEN OUTPUT *
************************************************************************
AT SELECTION-SCREEN OUTPUT.
IF soaedat[] IS INITIAL.
soaedat-high = sy-datum.
APPEND soaedat TO soaedat.
ENDIF.
************************************************************************
* INITIALIZATION *
************************************************************************
INITIALIZATION.
************************************************************************
* TOP-OF-PAGE *
************************************************************************
TOP-OF-PAGE.
WRITE: 1(140) sy-uline,
/1 '|',
2(139) 'HR: Master Data Change' CENTERED COLOR 1,
140(1) '|' ,
/1 '|',
2(139) str_date CENTERED COLOR 1,
140(1) '|' .
WRITE: /1(140) sy-uline,
/1 '|',
2(12) 'Personal No.' CENTERED COLOR 1,
14(1) '|',
15(30) 'Name of Employee' CENTERED COLOR 1,
45(1) '|',
46(60) 'Changed Category' CENTERED COLOR 1,
106(1) '|',
107(20) 'Changed By' CENTERED COLOR 1,
127(1) '|',
128(12) 'Changed On' CENTERED COLOR 1,
140(1) '|',
/1(140) sy-uline.
************************************************************************
* FORMs *
************************************************************************
*&---------------------------------------------------------------------*
*& Form show_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM show_alv.
TYPE-POOLS: slis.
DATA: wa_layout TYPE slis_layout_alv.
DATA: it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
CONCATENATE wa2_mas-tabname+2(4) '=>' wa2_mas-ddtext INTO lvc_title SEPARATED BY space.
* For Sorting
CLEAR wa_sort.
wa_sort-fieldname = 'AEDTM'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
* for Layout
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
* Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_structure_name = wa2_mas-tabname
i_grid_title = lvc_title
is_layout = wa_layout
it_sort = it_sort
i_default = 'X'
i_save = 'X'
TABLES
t_outtab = <itab>
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "show_alv
</code></pre>Faisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.com0tag:blogger.com,1999:blog-6385490994583816515.post-52457071729931411652010-11-05T16:37:00.000+05:002010-11-05T16:58:55.905+05:00How to Install SAPLink<img alt="SAPLink LOGO" height="119" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggP4zjMOxWzzFsR0PEf5U4dfpyfAgDCOdRKcou_1P3CtXbZvjfp-8gumAegb4PA_OhGwABiV0Ml3hgSKKlqAHqPWGmFbb-KDaMI-rRZ_GNXEJEqKVAiGbaQ4YHAFVlYIwuhzfJ4N0yYtg/s1600-r/SAPLinkLogo.jpg" width="240" /><br />
Here in Part1 we are discussing about the detailed Installation process of main application and Plugins both (NUGG and SLNK type) and in Part2 we will discuss in detail working with SAPLink<br />
<br />
<b>Download SAPLink</b><br />
Download <b>SAPLINK_INSTALL-*.ZIP</b> from the following link.<br />
<a href="http://code.google.com/p/saplink/downloads/list" target="_blank">Click here for Download Main Installation Files </a><br />
<b>Note: *</b> Means it can be vary release to release.<br />
<br />
<b>Installing SAPLink</b><br />
After unzip the above downloaded file you will find the following two main file in it.<br />
<br />
<b>1. ZSAPLINK_INSTALLER.TXT<br />
2. NUGG_SAPLINK-*.NUGG</b><br />
<br />
Follow the following Steps for Installation.<br />
<br />
<b>1.</b> Go to <b>T-Code SE38</b><br />
<b>2.</b> Create a new Executable Program with the name <b>ZAPPLINK_INSTALLER</b>. You can save this program as a local Object because we use this only for First time installing SAPLink application.<br />
<b>3.</b> Copy code from<b> ZSAPLINK_INSTALLER.TXT</b> file and paste in the Created Program<br />
<b>4.</b> Save and Activate Program<br />
<b>5.</b> Now Execute the Program using<b> F8</b> Key<br />
<b>6.</b> Following Screen will appear <br />
<br />
<img alt="Installer Initial Screen" height="117" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpp-BxWz1zq2fDWYWzQumiglyMrC8iu13BdJQRh_0A9WQcAly1QzkMZi220S8v4IoUaJKBLl9IBm_-sj43fpRhgrZtcCKtwUWHRO1b3wKFbHkLnAEBozUI3WZR-41Ip2kSFQTXDhGSgbA/s1600-r/SAPLinkInstallerInitialScreen.jpg" width="495" /><br />
<br />
<b>7.</b> In Field Installation Nugget Press F4 or Click on the Search Help Icon on the right hand side of the Field<br />
<b>8.</b> Following Dialog Box will appear from here you need to select that <b>NUGG_SAPLINK-*.NUGG</b> File<br />
<br />
<b>Note:</b> If you will Check Overwrite Originals Option as Shown in the Picture it will overwrite all you existing object so be careful here. <br />
<br />
<img alt="Select File for Installation" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC6M4_y8AXDuCpNUDvNfQMYeCF5DP8JD26UC2X_mvzv17bwhKgwZ3OJNxIkwI9Px3XAw763eNPSuL8IIj9DN04EJEVppZ348jo8QgYBVhes84_lqVxjUYFY3XUdKO7rYO-SZEMQEp0uxk/s1600-r/SAPLinkInstaller.jpg" width="570" /><br />
<br />
<b>9.</b> Selecting required <b>NUGG_SAPLINK-*.NUGG</b> file Click Open button, path and file name will appear in the Field<br />
<b>10.</b> Now press<b> F8</b> to <b>Start Installing</b>.<br />
<b>11.</b> Following Dialog Box will appear for every Object, Select for your relevant Package name as I am Selecting <b>ZFSL</b> and select <b>SAVE Button</b> (Displaying in the box Bottom Left).<br />
<br />
<img alt="Save Dialog" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqrY5ojLL8GSYHz20SP3oMrWt81eq0UrnjrXEDlkt5OL_wfGDdMbrkhFBGj7AIEmt89MvPh1z_iX4bQDgpJV6CUmTd9T6oDizd11jD7nZ0yzv2t6oi2QP0bYgeSHbzCzFzNUZz9QxhOUU/s1600-r/SAPLinkSave.jpg" width="456" /><br />
<br />
<b>12.</b> After Selecting SAVE Button a box will appear for Transport Request as you often see, Create a Request for First Object and save all other in the same Request. <br />
<b>13.</b> After a Short time following message will appear with the name of installed objects.<br />
<br />
<img alt="Installed" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaDEGBa7dU2YGtnLm_7T_UkdYCDY4aPdg61yyXCG9ErxY2VXZ91TJq5Wh4C8FBFKNHknaM_SaS9T1Uel9GWO8xpvsxmifqCcAxwXWOLdelC6p5Tu3k2NkcphW24rtRQZxzp9aHV_jI-Ho/s1600-r/SAPLinkInstalled.jpg" width="237" /><br />
<br />
In the 1st Column Installed indicate that this object installed successfully, 2nd column is showing the type of the object here CLAS mean Class and PROG mean Program, 3rd Column is displaying the name of the Object.<br />
<br />
<b>14.</b> Open the all object in the relevant T-Code and Active one by one for example <b>SE24 for Classes</b> and <b>SE38 for Program in this case</b>. You also have to Active a STATUS of Program ZSAPLINK for this Open T-Code SE41 give the program name in Program text filed and Press F4 in the STATUS Text Filed it will automatically select SELOBJ activate this too. <br />
<b>15.</b> After activating all the objects open program ZSAPLINK using T-Code SE38 and Press F8 for Execute.<br />
<b>16.</b> The following Screen will appear<br />
<br />
<img alt="Main Screen" height="347" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh6HFoULBw4HiGB6ihPOLxToxqOVAS4l9s1he6F9t-zzYZpC5xAFi6u0Og9h42C83Df5kP9gRVNfCY1-aLldlU55JDUkKl2iB7_AA_rIzmzUxpBQviuS-9Cxz1XdgJkslZFzHAgReZczQ/s1600-r/SAPLinkNuggetTab.jpg" width="598" /><br />
<br />
<b>7.</b> There are two Tabs <b>Nugget and Slinkee</b>, Nugget is for operations on .NUGG file and Slinkee for .SLNK<br />
<br />
Now you have INSTALL SAPLINK application successfully.<br />
<br />
<b>Builtin Plugins </b><br />
The two Plugins showing in the picture are builtin you don’t need to install these.<br />
<br />
<img alt="Builtin Plugins" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwiPnTPLsO0X7CHFEEYCuRul0sDf7yI-2aj-XfeFiVqB8skWXWwMHGSrnWs2GQNs0fViZ3Ggy6e-M3VZ_d_cs1fzDa4uK95SY-NyJHFRCmLMaB2lVHUkDhhUPrgr79-V8Ax8Hqdy64avs/s1600-r/SAPLinkBuilt-inPlugins.jpg" width="399" /> <br />
<br />
<b>Download Plugins </b><br />
<br />
<a href="http://code.google.com/p/saplink/wiki/pluginList" target="_blank">Click here for Download Plugins</a> <br />
<br />
<b>Installing Plugins</b><br />
There are two types of file available for all Plugins .NUGG and SLNK. Here we will try to install both of these. <br />
<br />
<b>Installing NUGG Plugins</b><br />
In the following Example we are going to install Plugin for ABAP Dictionary Objects. This NUGG_SAPLINK_DDIC-0.1.0.nugg will use to install DDIC Plugins as it is a .nugg file so we will select Nugget Tab.<br />
<br />
<b>1.</b> Select Radio Button<b> Import Nugget </b><br />
<b>2.</b> In the text field <b>Nugget File Name</b> Select the .NUGG file you want to install, Here we are installing NUGG_SAPLINK_DDIC-0.1.0.nugg so we will select this. <br />
<b>3.</b> After Selecting the File Press F8 to Start Installation (Follow Above Installing SAPLink Steps 11 and 12)<br />
<b>4.</b> After few seconds a window with the following message will appear.<br />
<br />
<img alt="Plugin DDIC Installed" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaaWMSi6QGHJNS-GUxxV-2pNjvDe3xgmxUoWi4xM-P0CS4pemWraDAFNe8VlYveXO0OFyo9L_fe_hLufxdvIvdMmzHlM9P8IHYasV0J4LBvCLjC78tvH05HYuyQ_cIfJ-4MKMU5xm80bE/s1600-r/SAPLinkNuggetDDICPluginInstall.jpg" width="355" /><br />
<br />
<b>5.</b> Green icon means Installed Successfully now you just need to active all these given objects.<br />
<br />
<b>Note:</b> .NUGG file can have one or more than one object but .SLNK can have only one object.<br />
<br />
<b>Installing SLNK Plugins</b><br />
For installing .SLNK select the Slinkee Tab as shown in the following picture<br />
<br />
<img alt="Slinkee Tab" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpuX4fwHF74Wkp0KOomVQqLNsdmYT11pmul-JBIZ6eON8VQc3qOd33vXm2UnnPKMUWnU5KDlUMe_DbJncOdphYJh6c-Gvfus0G7R8wNyxmNs1nffQPZJwWqlDdggnjptU1joY04xfVNfQ/s1600-r/SAPLinkSlinkeeTab.jpg" width="596" /><br />
<br />
<b>1.</b> Select Radio Button<b> Import Slinkee</b><br />
<b>2.</b> In the text field <b>Slinkee File Name</b> Select the .SLNK file you want to install<br />
<b>3.</b> After Selecting the File Press F8 to Start Installation. (Follow Above Installing SAPLink Steps 11 and 12)<br />
<b>4.</b> It will display name of the Installed object this time it will be only one because we can place only one object in .SLNK file. (Open and Active this Object)<br />
<br />
<b>Possible Warning or Error Messages While Installing</b><br />
<br />
<b>1.</b> <b>If you have Check:</b> the Overwrite Originals Check Box and you have already have some installed components than you can get the following pop up for conformation.<br />
<br />
<img alt="Overwrite Pop UP" height="141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIWFIehM_cKBH1olkL2OW-SAZyY4bV4CT3vjFEbeM0tZBHbOEzjuENtRILfdt6Odb2DN1AYc0s_mC4nd5w2KLq1KkkF5tGF-b9MPWgH7bzEUJkAO0EYmMcLWVrpGZER67T3_Y5EyErnAE/s1600-r/SAPLinkOverwrite.jpg" width="471" /><br />
<br />
You can select accordingly <br />
<br />
<b>Yes,</b> will only overwrite current Object <br />
<b>Yes to all,</b> will overwrite all Objects<br />
<b>Cancel,</b> will cancel the process<br />
<br />
<b>2. If you didn’t check:</b> the Overwrite Originals Check Box and you have already have some installed components than you can see the following message.<br />
<br />
<b>In Case of Nugget</b><br />
<br />
<img alt="Already Exists NUGG" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-e4ogNtaP04LSU2YVbc1ne_9VCxIkfN8UKIZ0kcueHBf-aNG6VGHWPmtayFCpjQAIWDMRkp417wXfOwAw-AepbtXbYDe9IeZC15mumuMQUx0E983jGXy6KWHs0r6zrCEAIoYd1ZBmRI0/s1600-r/SAPLinkAlreadyExists.jpg" width="669" /><br />
<br />
<b>In Case of Slinkee</b><br />
<br />
<img alt="Already Exists SLINK" height="21" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY9lFdJ0VHpAzytGWe3OXi4x9VW6PzeDwttRULX2fezlK8xNbu9vhjEwwZQvlHMABbgQisGpelOnnq1TAJHOXodA2TQLDXM3CRT-apzM2-NN5scHkXgURH3EmpADnpHVg_QyvzvCg4KCg/s1600-r/SAPLinkAlreadyExistsSLNK.jpg" width="500" />Faisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.com13tag:blogger.com,1999:blog-6385490994583816515.post-63614250927013576972010-11-05T15:11:00.005+05:002011-02-16T21:09:14.830+05:00Step by Step Configuration for running Web Dynpro in SAP NetWeaver 7.01 SR1 SP3 ABAP Trial Version<span style="font-size: large;"><b> <a href="http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/30129979-011c-2e10-fb9b-a60e0d704c1d">>> Please Click Here <<</a></b></span>Faisal Altafhttp://www.blogger.com/profile/10598232284971723045noreply@blogger.com20