Tuesday, June 24, 2008

Tabbed Block

* To hide or display the selection screen in Runtime of the program "tabbed block" is used

code:

Report ztest.
tables: bsak.
*selection screen
selection-screen: begin of block b1 with frame title text-001.
select-options : so_bukrs for bsak-bukrs ,
so_augbl for bsak-augbl ,
so_gjahr for bsak-gjahr,
so_lifnr for bsak-lifnr no-display.
selection-screen: end of block b1.

selection-screen begin of block b2 with frame title text-003.
parameters : r1 radiobutton group g1 user-command d,
r2 radiobutton group g1.
selection-screen end of block b2.

* sub screen 100
selection-screen begin of screen 100 as subscreen.
selection-screen end of screen 100.

* sub screen 200
selection-screen begin of screen 200 as subscreen.
Selection-screen begin of block b3 with frame title text-002.
parameters: pr_zuonr type bseg-zuonr.
selection-screen end of block b3.
selection-screen end of screen 200.


*tabbed block
* this block reserves particular lines to display the selection screen in runtime of the program.
selection-screen: begin of tabbed block mytab for 10 lines,
end of block mytab.

*Initialization
initialization.
mytab-prog = sy-repid.
mytab-dynnr = 100.

At selection-screen on radiobutton group g1.
If r1 = 'X'.
mytab-dynnr = 100.
else.
mytab-dynnr = 200.
Endif.

Tuesday, June 17, 2008

Interactive ALV Pgm

Report zalv_interactive .

type-pools : slis.

tables: zempldb2.

types: begin of ty_makt,
empid(15),
empname(20),
status(20),
end of ty_makt.

data : begin of it_final occurs 0,
empid like zempldb2-empid,
empname like zempldb2-empname,
dob like zempldb2-dob,
status(25),
cnt(3),
end of it_final,
wa_empid like zempldb2-empid,
w_cnt(3).

data it_makt type table of ty_makt with header line.

data : it_fieldcat type slis_t_fieldcat_alv with header line,
jt_fieldcat type slis_t_fieldcat_alv with header line,
it_event type slis_t_event with header line,
it_top type slis_t_listheader with header line,
wa_repid like sy-repid.

**** selection screen *-***********************

selection-screen begin of block b1 with frame title text-001.
select-options: so_empid for zempldb2-empid.
selection-screen end of block b1.

***** start of selection ***********************
start-of-selection.

wa_repid = sy-repid.


select * from zempldb2 into corresponding fields of table it_final.

perform fieldcat.

form fieldcat.

it_fieldcat-fieldname = 'EMPID'.
it_fieldcat-seltext_m = 'Employee ID'.
it_fieldcat-col_pos = 0.
it_fieldcat-outputlen = 15.
it_fieldcat-emphasize = 'X'.
it_fieldcat-hotspot = 'X'.
append it_fieldcat.
clear it_fieldcat.

it_fieldcat-fieldname = 'EMPNAME'.
it_fieldcat-seltext_m = 'Name'.
it_fieldcat-col_pos = 1.
it_fieldcat-outputlen = 15.
append it_fieldcat.
clear it_fieldcat.

it_fieldcat-fieldname = 'DOB'.
it_fieldcat-seltext_m = 'D.O.B'.
it_fieldcat-col_pos = 2.
it_fieldcat-outputlen = 15.
append it_fieldcat.
clear it_fieldcat.

it_fieldcat-fieldname = 'STATUS'.
it_fieldcat-seltext_m = 'STATUS'.
it_fieldcat-col_pos = 3.
it_fieldcat-outputlen = 15.
append it_fieldcat.
clear it_fieldcat.


* it_top-typ = 'H'.
* it_top-info = 'EMPLOYEE DETAILS'.
* APPEND it_top.
* CLEAR it_top.

call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = wa_repid
i_callback_user_command = 'USER_COMMAND'
* i_callback_top_of_page = 'TOP_OF_PAGE'
* i_grid_title = 'EMPLOYEE DETA'
it_fieldcat = it_fieldcat[]
tables
t_outtab = it_final.

endform.


*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
form user_command using r_ucomm like sy-ucomm
changing rs_selfield type slis_selfield.

if r_ucomm = '&IC1'.
if rs_selfield-fieldname = 'EMPID'.

wa_empid = rs_selfield-value.

loop at it_final
where
empid = wa_empid.
it_final-status = 'Granted'.

modify it_final transporting status where empid = wa_empid.

endloop.

clear it_makt.
refresh it_makt.
clear jt_fieldcat.
refresh jt_fieldcat.

select * from zempldb2
into corresponding fields of table it_makt
where empid = wa_empid.

it_makt-status = 'Granted'.
modify it_makt transporting status where empid = wa_empid.

* ENDIF.

jt_fieldcat-fieldname = 'EMPID'.
jt_fieldcat-seltext_m = 'Employe ID'.
jt_fieldcat-col_pos = 0.
jt_fieldcat-outputlen = 15.
append jt_fieldcat.
clear jt_fieldcat.

jt_fieldcat-fieldname = 'EMPNAME'.
jt_fieldcat-seltext_m = 'Name'.
jt_fieldcat-col_pos = 1.
jt_fieldcat-outputlen = 15.
append jt_fieldcat.
clear jt_fieldcat.

jt_fieldcat-fieldname = 'STATUS'.
jt_fieldcat-seltext_m = 'STATUS'.
jt_fieldcat-col_pos = 1.
jt_fieldcat-outputlen = 15.
jt_fieldcat-emphasize = 'X'.
append jt_fieldcat.
clear jt_fieldcat.


call function 'REUSE_ALV_GRID_DISPLAY'

exporting
i_callback_program = wa_repid
i_grid_title = ' MATERIAL DETAILS '

it_fieldcat = jt_fieldcat[]

tables
t_outtab = it_makt.

elseif r_ucomm = '&F03'.

perform fieldcat.

endif.

endif.

endform. "USER_COMMAND

*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*

form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = it_top[].
endform. "TOP_OF_PAGE

Sunday, June 15, 2008

BDC Call transaction Pgm with ERROR handling

REPORT zbdc_call NO STANDARD PAGE HEADING LINE-SIZE 255.

TYPE-POOLS truxs.

DATA flag TYPE c.
DATA cnt(2) TYPE n.
DATA t_cnt(6) TYPE n.
DATA l_cnt(5) TYPE n.
DATA rng(6) TYPE n.
DATA field(20).

*declaration to upload excel file
DATA it_raw TYPE truxs_t_text_data.
DATA: w_textout LIKE t100-text.
* internal table
DATA: BEGIN OF it_bdc OCCURS 0,
vbeln LIKE vbak-vbeln,
mabnr LIKE rv45a-mabnr,
kunnr LIKE kuagv-kunnr,
kunnr1 LIKE kuwev-kunnr,
guebg LIKE vbak-guebg,
END OF it_bdc.
* Internal table to handle errors
DATA: BEGIN OF ty_error,
vbeln LIKE vbak-vbeln,
mabnr LIKE rv45a-mabnr,
kunnr LIKE kuagv-kunnr,
kunnr1 LIKE kuwev-kunnr,
guebg LIKE vbak-guebg,
err_msg(73) TYPE c,
END OF ty_error.

DATA it_final LIKE TABLE OF it_bdc WITH HEADER LINE.
DATA bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: it_error LIKE TABLE OF ty_error WITH HEADER LINE.

*Used to stores error information from CALL TRANSACTION Function Module
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.

*---------------------------------------------------------------------*
* Select Options Begin with SO_ *
*---------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE tit.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_file TYPE rlgrap-filename.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN: END OF BLOCK b1.

*---------------------------------------------------------------------*
* Initialisation *
*---------------------------------------------------------------------*
INITIALIZATION.

MOVE 'FILE NAME' TO tit.

*---------------------------------------------------------------------*
* At selection-screen *
*---------------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.

***********************************************************************
* S T A R T O F S E L E C T I O N *
***********************************************************************

START-OF-SELECTION.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR = 'X'
* I_LINE_HEADER = 'X'
i_tab_raw_data = it_raw
i_filename = p_file
TABLES
i_tab_converted_data = it_final.
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2.


LOOP AT it_final.

PERFORM bdc_dynpro USING 'SAPMV45A' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-VBELN'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VBAK-VBELN'
it_final-vbeln.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'KUAGV-KUNNR'
it_final-kunnr.
PERFORM bdc_field USING 'KUWEV-KUNNR'
it_final-kunnr1.
PERFORM bdc_field USING 'VBAK-KTEXT'
'ZCAG'.
PERFORM bdc_field USING 'VBAK-GUEBG'
it_final-guebg.
PERFORM bdc_field USING 'VBAK-GUEEN'
'31.12.9999'.
PERFORM bdc_field USING 'RV45A-MABNR(04)'
it_final-mabnr.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'KUAGV-KUNNR'
'4004313'.
PERFORM bdc_field USING 'KUWEV-KUNNR'
'4004313'.
PERFORM bdc_field USING 'VBAK-KTEXT'
'ZCAG'.
PERFORM bdc_field USING 'VBAK-GUEBG'
'01.06.2006'.
PERFORM bdc_field USING 'VBAK-GUEEN'
'31.12.9999'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV45A-MABNR(05)'.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'KUAGV-KUNNR'
'4004313'.
PERFORM bdc_field USING 'KUWEV-KUNNR'
'4004313'.
PERFORM bdc_field USING 'VBAK-KTEXT'
'ZCAG'.
PERFORM bdc_field USING 'VBAK-GUEBG'
'01.06.2006'.
PERFORM bdc_field USING 'VBAK-GUEEN'
'31.12.9999'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV45A-MABNR(05)'.

*call transaction to update customer instalment text
CALL TRANSACTION 'VA02' USING bdcdata MODE 'N' UPDATE 'S'
MESSAGES INTO messtab.

*Check if update was succesful
IF sy-subrc NE 0.
*Retrieve error messages displayed during BDC update
LOOP AT messtab WHERE msgtyp = 'E'.
*Builds actual message based on info returned from Call transaction
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = messtab-msgid
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTING
message_text_output = w_textout.
ENDLOOP.

* Build error table ready for output
it_error-vbeln = it_final-vbeln.
it_error-mabnr = it_final-mabnr.
it_error-kunnr = it_final-kunnr.
it_error-guebg = it_final-guebg.

it_error-err_msg = w_textout.
APPEND it_error.
CLEAR it_error.
ENDIF.

* Clear bdc data table
CLEAR: bdcdata.
REFRESH: bdcdata.
ENDLOOP.

*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro

*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
* if fval <> nodata.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
* endif.
ENDFORM. "bdc_field

Wednesday, June 11, 2008

ALV Using Classes with Events




Screen 100.
create three buttons.
and give the function codes like this.

function code for 'ALV with double click event' button is DIALOG1

function code for 'ALV with hotspot event' button is DIALOG2

screen 101 ( popup screen):
create custom container and name it as ALV_CONTAINER

code:
REPORT ZTEST_ALV_CHECK.
class lcl_event_receiver definition deferred.

data: ok_code like sy-ucomm,
gt_sflight type table of sflight,
gt_sbook type table of sbook,
g_max type i value 100,
g_repid like sy-repid,
gs_layout type lvc_s_layo,
gt_fieldcat type lvc_t_fcat with header line,
cont_on_main type scrfname value 'ALV_CONTAINER',
grid1 type ref to cl_gui_alv_grid,
custom_container1 type ref to cl_gui_custom_container,
event_receiver type ref to lcl_event_receiver.

DATA: it_fieldcat TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.

call screen 100.
* class definition
class lcl_event_receiver definition.
public section.
* declaration for double click event.
methods handle_double_click
for event double_click of cl_gui_alv_grid
importing e_row e_column.
* declaration for Hotspot event.
methods on_hotspot_click
for event hotspot_click of cl_gui_alv_grid
importing
!e_row_id
!es_row_no .
endclass.
* class implementation
class lcl_event_receiver implementation.
* for hotspot event
method on_hotspot_click.
data: ls_sflight like line of gt_sflight.
read table gt_sflight index e_row_id-index into
ls_sflight.

perform select_table_sbook using ls_sflight
changing gt_sbook.
call transaction 'SE11'.

endmethod. "on_hotspot_click

* for double click event
method handle_double_click.
data: ls_sflight like line of gt_sflight.

read table gt_sflight index e_row-index into ls_sflight.

perform select_table_sbook using ls_sflight
changing gt_sbook.
call transaction 'SE11'.

endmethod. "handle_double_click
endclass.



*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
module USER_COMMAND_0100 input.
case ok_code.
when 'DIALOG'.
call screen 101 starting at 10 5 ending at 100 30. " popup window
when 'DIALOG1'.
call screen 101 starting at 10 5 ending at 100 30.
when 'EXIT'.
leave program.
endcase.
endmodule. " USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------*
*& Module STATUS_0101 OUTPUT
*&---------------------------------------------------------------------*
module STATUS_0101 output.
g_repid = sy-repid.
if custom_container1 is initial.
perform select_table_sflight.
create object custom_container1
exporting
container_name = cont_on_main
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.

if sy-subrc ne 0.
* add your handling, for example
call function 'POPUP_TO_INFORM'
exporting
titel = g_repid
txt2 = sy-subrc
txt1 = 'The control could not be created'(510).
endif.

* create an instance of alv control
create object grid1
exporting i_parent = custom_container1.

* change title
gs_layout-grid_title = 'Bookings'(101).

* adjust field catalog
* to suppress the output of already displayed key fields of sflight
perform mask_columns.
call method grid1->set_table_for_first_display
exporting
is_layout = gs_layout
changing
it_fieldcatalog = it_fieldcat[]
it_outtab = gt_sflight.

else.

call method grid1->refresh_table_display.

endif. "IF grid1 IS INITIAL.
* for hotspot and double click events.
if ok_code = 'DIALOG1'.
create object event_receiver.
set handler event_receiver->on_hotspot_click for grid1.
else.
create object event_receiver.
set handler event_receiver->handle_double_click for grid1.
endif.

call method cl_gui_control=>set_focus
exporting control = grid1.
call method cl_gui_cfw=>flush.

if sy-subrc ne 0.
* add your handling, for example
call function 'POPUP_TO_INFORM'
exporting
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in FLush'(500).
endif.

endmodule. " STATUS_0101 OUTPUT

*&---------------------------------------------------------------------*
*& Form SELECT_TABLE_SFLIGHT
*&---------------------------------------------------------------------*
form select_table_sflight .
select * from sflight into table gt_sflight up to g_max rows.
endform. " SELECT_TABLE_SFLIGHT

*&---------------------------------------------------------------------*
*& Form SELECT_TABLE_SBOOK
*&---------------------------------------------------------------------*
form select_table_sbook using p_ls_sflight like line of gt_sflight
changing p_gt_sbook like gt_sbook[].

select * from sbook into table p_gt_sbook
where carrid = p_ls_sflight-carrid
and connid = p_ls_sflight-connid
and fldate = p_ls_sflight-fldate.

endform. " SELECT_TABLE_SBOOK

*&---------------------------------------------------------------------*
*& Form mask_columns
*&---------------------------------------------------------------------*
form mask_columns.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-fieldname = 'CARRID'.
wa_fieldcat-coltext = 10.
wa_fieldcat-seltext = 'CARRID'.
if ok_code = 'DIALOG1'.
wa_fieldcat-hotspot = 'X'.
endif.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-fieldname = 'CONNID'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'CONNID'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-fieldname = 'FLDATE'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'FLDATE'.
APPEND wa_fieldcat TO it_fieldcat.


endform. " mask_columns

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0101 INPUT
*&---------------------------------------------------------------------*
module USER_COMMAND_0101 input.
case ok_code.
when 'BACK'.
clear ok_code.
leave to screen 0.
endcase.

endmodule. " USER_COMMAND_0101 INPUT

ALV Report using OOABAP

Design a screen with the custom control, name it as ALV_CONTAINER.
ZALV.
TABLES: zctp_ch_spare.
DATA tab type zctp_ch_spare occurs 0.
* declarations for Custom container

Data : container_r TYPE REF TO cl_gui_custom_container,
grid_r TYPE REF TO cl_gui_alv_grid.

Call screen 100.

MODULE status_0100 OUTPUT.
SELECT * FROM zctp_ch_spare INTO TABLE tab.

IF container_r IS INITIAL.

CREATE OBJECT container_r
EXPORTING

container_name = 'ALV_CONTAINER'. "Custom container name
CREATE OBJECT grid_r EXPORTING i_parent = container_r.
CALL METHOD grid_r->set_table_for_first_display
EXPORTING
i_structure_name = 'ZCTP_CH_SPARE' "DB table name
CHANGING
it_outtab = TAB "internal table name
.
ELSE.
CALL METHOD grid_r->refresh_table_display
EXPORTING
i_soft_refresh = 'X'.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT

ALV in Screen painter with FIELDCATALOG.
code:

ZALV.
TABLES: zctp_ch_spare,zctp_spare_dt.

TYPES: BEGIN OF ty_tab,
f_vkorg TYPE zctp_ch_spare-f_vkorg,
f_mctype TYPE zctp_ch_spare-f_mctype,
quantity TYPE zctp_ch_spare-quantity,
slno TYPE zctp_spare_dt-slno,
s_date TYPE zctp_spare_dt-s_date,
END OF ty_tab.

DATA tab TYPE ty_tab OCCURS 0.

DATA: it_fieldcat TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.

Data :container_r TYPE REF TO cl_gui_custom_container,
grid_r TYPE REF TO cl_gui_alv_grid.

Call screen 100.

MODULE status_0100 OUTPUT.

SELECT a~f_vkorg a~f_mctype a~quantity b~slno b~s_date INTO CORRESPONDING FIELDS OF TABLE tab FROM zctp_ch_spare AS a INNER JOIN zctp_spare_dt AS b ON a~f_vkorg = b~vkorg.

sort tab by f_vkorg slno.

delete adjacent duplicates from tab comparing slno.

CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-fieldname = 'F_VKORG'.
wa_fieldcat-coltext = 10.
wa_fieldcat-seltext = 'SALES ORG.'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-fieldname = 'F_MCTYPE'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'MACHINE'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-fieldname = 'QUANTITY'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'QUANTITY'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-fieldname = 'SLNO'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'SLNO'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '5'.
wa_fieldcat-fieldname = 'S_DATE'.
wa_fieldcat-outputlen = 8.
wa_fieldcat-coltext = 'DATE'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

IF container_r IS INITIAL.

CREATE OBJECT container_r
EXPORTING container_name = 'PICTURE_CONTAINER'.
‘Custom container name’
CREATE OBJECT grid_r EXPORTING i_parent = container_r.

CALL METHOD grid_r->set_table_for_first_display
CHANGING
it_fieldcatalog = it_fieldcat “Fieldcatalog name
it_outtab = tab. “internal table name

ELSE.

CALL METHOD grid_r->refresh_table_display
EXPORTING
i_soft_refresh = 'X'.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

Tuesday, June 10, 2008

Insert Picture in Screen Painter

Ø To Insert LOGO in Screen Painter
Design a screen with the custom control, by name PICTURE_CONTAINER.

IN SE51.
Flow Logic:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.

PROCESS AFTER INPUT.
MODULE CANCEL AT EXIT-COMMAND.

IN SE38:

REPORT ZTEST .
* Type declarations.....................
TYPES pict_line(256) TYPE c.
* data declarations......................
DATA : init,
container TYPE REF TO cl_gui_custom_container,
editor TYPE REF TO cl_gui_textedit,
picture TYPE REF TO cl_gui_picture,
pict_tab TYPE TABLE OF pict_line,
url(255) TYPE c.

CALL SCREEN 100.
* Dialog modules......................................
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN100'.
IF init is initial.
init = 'X'.
CREATE OBJECT: container EXPORTING container_name = 'PICTURE_CONTAINER',
picture EXPORTING parent = container.
ENDIF.

IMPORT pict_tab = pict_tab FROM DATABASE abtree(pi) ID 'ENJOY'.

CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = 'IMAGE'
subtype = 'GIF'
TABLES
data = pict_tab
CHANGING
url = url.

CALL METHOD picture->load_picture_from_url
EXPORTING url = url.

CALL METHOD picture->set_display_mode
EXPORTING display_mode = picture->display_mode_fit_center.

ENDMODULE.


MODULE cancel INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.

Active URL link in ABAP Program Output

REPORT zurl.

DATA: BEGIN OF URL_TABLE OCCURS 10,
L(25),
END OF URL_TABLE.

URL_TABLE-L = 'http://www.yahoo.com'.
APPEND URL_TABLE.
URL_TABLE-L = 'http://www.gmail.com'.
APPEND URL_TABLE.
URL_TABLE-L = 'http://www.hotmail.com'.
APPEND URL_TABLE.

LOOP AT URL_TABLE.
SKIP.
FORMAT INTENSIFIED OFF.
WRITE: / 'Single click on '.
FORMAT HOTSPOT ON.
FORMAT INTENSIFIED ON.
WRITE: URL_TABLE.
HIDE URL_TABLE.
FORMAT HOTSPOT OFF.
FORMAT INTENSIFIED OFF.
WRITE: 'to go to', URL_TABLE.
ENDLOOP.
CLEAR URL_TABLE.

AT LINE-SELECTION.
IF NOT URL_TABLE IS INITIAL.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
PROGRAM = 'C:\Program Files\Internet Explorer\iexplore.exe'
COMMANDLINE = URL_TABLE
INFORM = ' '
EXCEPTIONS
PROG_NOT_FOUND = 1.
ENDIF.

Friday, June 6, 2008

Smartform

Download Smartform output in PDF format

Report zsmart_form2.
*******DECLARATIONS********************************
data w_fm_name type rs38l_fnam.
data itab type table of ztest1.
data w_itab like line of itab.
data w_rad type char3.
data: tab_otf_data type ssfcrescl.
data: tab_otf_final type itcoo occurs 0 with header line.
data: bin_filesize type i,file_size type i.
data: pdf_tab like tline occurs 0 with header line.
data: cparam type ssfctrlop,outop type ssfcompop.

***** selection screen********************************
parameters p_workct like crhd-arbpl.
select-options: so_date for sy-datum.
parameters: rad1 radiobutton group radi,
rad2 radiobutton group radi,
rad3 radiobutton group radi.

******************Start-of-selection ****************
Start-of-selection.
refresh itab.
w_itab-name = 'name1'.
w_itab-age = '20'.
w_itab-mark1 = '123'.
w_itab-mark2 = '124'.
w_itab-mark3 = '125'.
append w_itab to itab.

w_itab-name = 'name2'.
w_itab-age = '21'.
w_itab-mark1 = '223'.
w_itab-mark2 = '224'.
w_itab-mark3 = '225'.
append w_itab to itab.

w_itab-name = 'name3'.
w_itab-age = '22'.
w_itab-mark1 = '323'.
w_itab-mark2 = '324'.
w_itab-mark3 = '325'.
append w_itab to itab.

**** to supress the dialog box of printer
outop-tddest = 'LP01'.
cparam-no_dialog = 'X'.
cparam-preview = space.
cparam-getotf = 'X'.

call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'ZFORM_SAMPLE1'
importing
fm_name = w_fm_name
exceptions
no_form = 1
no_function_module = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgnowith sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

call function w_fm_name
exporting
control_parameters = cparam
output_options = outop
user_settings = space
importing
job_output_info = tab_otf_data
tables
itab1 = itab[]
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.

******* appending the otf data into the final table **************
tab_otf_final[] = tab_otf_data-otfdata[].

*converting OTF data into pdf data**************************
call function 'CONVERT_OTF'
exporting
format = 'PDF'
max_linewidth = 132
importing
bin_filesize = bin_filesize
tables
otf = tab_otf_final
lines = pdf_tab
exceptions
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
others = 5.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.

*************downloading the converted PDF data to your local PC********
call function 'GUI_DOWNLOAD'
exporting
bin_filesize = bin_filesize
filename = 'D:\TEST.PDF'
filetype = 'BIN'
importing
filelength = file_size
tables
data_tab = pdf_tab

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.

Wednesday, June 4, 2008

SAP ABAP Programs

1. Top-of-page and End-of-Page in ALV using OOPS

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_background_id = 'ALV_BACKGROUND'
i_callback_html_top_of_page = 'TOP_OF_PAGE'
i_callback_html_end_of_list = 'END_OF_LIST_HTML'
is_layout = wa_layout
it_fieldcat = it_fieldcat
i_default = 'X'
i_save = 'A'
is_print = wa_print
TABLES
t_outtab = it_result
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.

**********************************************************************************
*& Form TOP-OF-PAGE
**********************************************************************************
FORM top_of_page USING cl_dd TYPE REF TO cl_dd_document.
DATA: lv_per(255).
* for space
CALL METHOD cl_dd->add_gap
EXPORTING
width = 7.

* to add text in heading
CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_style = cl_dd_document=>heading
sap_fontsize = cl_dd_document=>medium
sap_emphasis = cl_dd_document=>strong.

* for gap between two text
CALL METHOD cl_dd->add_gap
EXPORTING
width = 23.

* for new text
CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_style = cl_dd_document=>key
sap_color = cl_dd_document=>list_background
sap_fontsize = cl_dd_document=>large
sap_emphasis = cl_dd_document=>emphasis.

* for new line
CALL METHOD cl_dd->new_line
EXPORTING
repeat = 0.

CALL METHOD cl_dd->add_gap
EXPORTING
width = 7.

CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_emphasis = cl_dd_document=>strong
style_class = space.

CALL METHOD cl_dd->add_gap
EXPORTING
width = 25.

CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_emphasis = cl_dd_document=>strong
style_class = space.

ENDFORM. "top_of_page

********************************************************************************
*& Form END-OF-PAGE
********************************************************************************
FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
DATA: ls_text TYPE sdydo_text_element,
l_grid TYPE REF TO cl_gui_alv_grid,
f(14) TYPE c VALUE 'SET_ROW_HEIGHT'.

ls_text = 'Footer title'.

* adds and icon (red triangle)
CALL METHOD end->add_icon
EXPORTING
sap_icon = 'ICON_MESSAGE_ERROR_SMALL'.

* adds test (via variable)
CALL METHOD end->add_text
EXPORTING
text = ls_text
sap_emphasis = 'strong'.

* adds new line (start new line)
CALL METHOD end->new_line.

* display text(bold)
CALL METHOD end->add_text
EXPORTING
text = 'Bold text'
sap_emphasis = 'strong'.

*set height of this section
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_grid.

CALL METHOD l_grid->parent->parent->(f)
EXPORTING
id = 3
height = 10.

ENDFORM. "end_of_list_html.

2.To display Total Text in ALV List Display

Perform fieldcat.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = it_fieldcat
it_events = it_events
is_layout = i_layout
it_sort = it_sort
i_default = 'X'
TABLES
t_outtab = it_final.

Perform build_layout.
Perform bulid_sort.


form build_layout.
data i_layout type slis_layout_alv.
i_layout-no_input = 'X'.
i_layout-colwidth_optimize = 'X'.
i_layout-totals_text = 'Total'.
i_layout-subtotals_text = 'SubTotal'.
I_layout-totals_only = 'X'.
i_layout-zebra = 'X'. “For stripped pattern
* gd_layout-group_change_edit = 'X'.
* gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT



FORM bulid_sort.

data it_sort type slis_t_sortinfo_alv .
data wa_sort type slis_sortinfo_alv.
CLEAR wa_sort.
wa_sort-spos = '1'.
wa_sort-fieldname = 'CITY1'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
wa_sort-group = '*'. “For Page Break
wa_sort-obligatory = 'X'.
APPEND wa_sort TO it_sort.

ENDFORM. " bulid_sort

3.To download Internal Table data’s to Particular path in Local PC

REPORT zkk.
TABLES tjj15.

PARAMETERS: filename(10).
PARAMETERS: path(30) TYPE c DEFAULT 'C:\'.

DATA path_name type string.
DATA itab LIKE TABLE OF tjj15 WITH HEADER LINE.

SELECT * FROM tjj15 INTO TABLE itab.

CONCATENATE path filename '.' 'XLS' INTO path_name.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = path_name “this variable must be a string
FILETYPE = 'DAT'
tables
data_tab = itab
.

Monday, June 2, 2008

Windows XP Tricks

-> To Move mouse Pointer using Keboard Numeric Keys.
  • Alt + Left shift + Numlock
  • Click OK.
  • Check “Use Mouse keys”.
  • In setting Increase the Speed of mouse Pointer.
  • That’s all.
  • Now 4, 6 , 8 , 2 keys are used to move the mouse pointer.
  • Key '5' is used to select the content in screen.
-> Force users to press Ctrl-Alt-Delete to Logon
  • Go to start -> run -> type control userpasswords2
  • Select 'Advanced' Tab and check 'Require users to press ctrl+alt_del'.
note: dont type 'type' word in Run.

-> short cuts for SHUTDOWN , RESTART , and LOG OFF
  • For Shutdown goto Start->Run->type shutdown -s -t 00
  • For Restart goto Start->Run->type shutdown -r -t 00
  • For Log off goto Start->Run->type shutdown -l -t 00
  • 'Windows' key + L is used for log off.
note: dont type 'type' word in Run.

-> To Reverse the Desktop.
  • Alt + ctrl + Arrow Keys

Delete Yahoo Account

using the following link you can delete the yahoo account.

https://edit.yahoo.com/config/delete_user