Friday, 25 May 2012
OPP'S Examples programs
When class implementation is done at the end of the program like
forms of a perform, no need of start of selection
******** Begin of Program one on OOP's*****************
----------------------------------------------------------------------*
CLASS tax DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS tax DEFINITION.
PUBLIC SECTION.
DATA : salary TYPE p DECIMALS 2 VALUE '50000'.
METHODS: calc_tax IMPORTING sal TYPE p
EXPORTING tax_amt TYPE p.
ENDCLASS. "tax DEFINITION
----------------------------------------------------------------------*
CLASS tax IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS tax IMPLEMENTATION.
METHOD calc_tax.
sal = salary.
tax_amt = sal / 10.
ENDMETHOD. "calc_tax
ENDCLASS. "tax IMPLEMENTATION
START-OF-SELECTION.
DATA : taxamt TYPE p.
DATA : salary TYPE p VALUE '10025606511'.
DATA: obj1 TYPE REF TO tax.
CREATE OBJECT : obj1.
CALL METHOD: obj1->calc_tax EXPORTING sal = salary
IMPORTING tax_amt = taxamt.
WRITE: / 'Tax amount is ', taxamt.
******** End of Program one on OOP's*****************
When class implementation is done at the end of the program like
forms of a perform, no need of start of selection
******** Begin of Program 2 on OOP's*****************
----------------------------------------------------------------------*
CLASS tax DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS tax DEFINITION.
PUBLIC SECTION.
DATA : salary TYPE p DECIMALS 2 VALUE '50000'.
METHODS: calc_tax IMPORTING sal TYPE p
EXPORTING tax_amt TYPE p.
ENDCLASS. "tax DEFINITION
START-OF-SELECTION.
DATA : taxamt TYPE p.
DATA : salary TYPE p VALUE '10025606511'.
DATA: obj1 TYPE REF TO tax.
CREATE OBJECT : obj1.
CALL METHOD: obj1->calc_tax EXPORTING sal = salary
IMPORTING tax_amt = taxamt.
WRITE: / 'Tax amount is ', taxamt.
----------------------------------------------------------------------*
CLASS tax IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS tax IMPLEMENTATION.
METHOD calc_tax.
sal = salary.
tax_amt = sal / 10.
ENDMETHOD. "calc_tax
ENDCLASS. "tax IMPLEMENTATION
******** End of Program 2 on OOP's*****************
******** Begin of Program 3 on OOP's*****************
----------------------------------------------------------------------*
CLASS tax DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 DEFINITION.
PUBLIC SECTION.
DATA : salary TYPE p DECIMALS 2 VALUE '50000'.
METHODS: m1.
ENDCLASS. "tax DEFINITION
----------------------------------------------------------------------*
CLASS c2 DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c2 DEFINITION INHERITING FROM c1.
PUBLIC SECTION.
METHODS: m2.
ENDCLASS. "c2 DEFINITION
----------------------------------------------------------------------*
CLASS tax IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD m1.
WRITE: / 'This is the method in class 1'.
ENDMETHOD. "calc_tax
ENDCLASS. "tax IMPLEMENTATION
----------------------------------------------------------------------*
CLASS c2 IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c2 IMPLEMENTATION.
METHOD m2.
WRITE : / 'this is the method in class c2'.
ENDMETHOD. "m1
ENDCLASS. "c2 IMPLEMENTATION
START-OF-SELECTION.
DATA : obj1 TYPE REF TO c1,
obj2 TYPE REF TO c2.
CREATE OBJECT: obj1, obj2.
CALL METHOD : obj1->m1 , obj2->m2 , obj2->m1.
******** End of Program 3 on OOP's*****************
******** Begin of Program 4 on OOP's*****************
----------------------------------------------------------------------*
CLASS tax DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 DEFINITION.
PUBLIC SECTION.
DATA : salary TYPE p DECIMALS 2 VALUE '50000'.
METHODS: m1.
ENDCLASS. "tax DEFINITION
----------------------------------------------------------------------*
CLASS c2 DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c2 DEFINITION INHERITING FROM c1.
PUBLIC SECTION.
METHODS: m2.
ENDCLASS. "c2 DEFINITION
----------------------------------------------------------------------*
CLASS tax IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD m1.
WRITE: / 'This is the method in class 1'.
ENDMETHOD. "calc_tax
ENDCLASS. "tax IMPLEMENTATION
----------------------------------------------------------------------*
CLASS c2 IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c2 IMPLEMENTATION.
METHOD m2.
WRITE : / 'this is the method in class c2'.
ENDMETHOD. "m1
ENDCLASS. "c2 IMPLEMENTATION
START-OF-SELECTION.
DATA : obj1 TYPE REF TO c1,
obj2 TYPE REF TO c2.
CREATE OBJECT: obj1, obj2.
CALL METHOD : obj1->m1 , obj2->m2 , obj2->m1.
******** End of Program 4 on OOP's*****************
***********************************************************************************
THis is for the static keyword, this is implemented using CLASS-
******** Begin of Program 5 on OOP's*****************
----------------------------------------------------------------------*
CLASS tax DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 DEFINITION.
PUBLIC SECTION.
CLASS-DATA: assign_value(10) TYPE c.
DATA : salary TYPE p DECIMALS 2 VALUE '50000'.
METHODS: m1.
CLASS-METHODS: cm1.
ENDCLASS. "tax DEFINITION
----------------------------------------------------------------------*
CLASS c2 DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c2 DEFINITION INHERITING FROM c1.
PUBLIC SECTION.
METHODS: m2.
ENDCLASS. "c2 DEFINITION
----------------------------------------------------------------------*
CLASS tax IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD m1.
WRITE: / 'This is the method in class 1'.
ENDMETHOD. "m1
METHOD cm1. " static method.
DATA : name(10) TYPE c VALUE 'Bharat'.
assign_value = name. " we don't get error here because assign_value is a static data type
salary = '4555'. This gives error because static methods
WRITE: / ' This is inside the static method and variable name', name.
ENDMETHOD. "m1
ENDCLASS. "tax IMPLEMENTATION
----------------------------------------------------------------------*
CLASS c2 IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c2 IMPLEMENTATION.
METHOD m2.
WRITE : / 'this is the method in class c2'.
ENDMETHOD. "m1
ENDCLASS. "c2 IMPLEMENTATION
START-OF-SELECTION.
DATA : obj1 TYPE REF TO c1,
obj2 TYPE REF TO c2.
CREATE OBJECT: obj1, obj2.
CALL METHOD : obj1->m1 , obj2->m2 , obj2->m1.
CALL METHOD: obj1->cm1 , c1=>cm1 , obj2->cm1.
c1=>assign_value = 'Country'.
obj1->assign_value = 'India'.
WRITE: / c1=>assign_value.
WRITE: / obj1->assign_value.
WRITE: / ' Test'.
******** End of Program 5 on OOP's*****************
********* **************** **************** **************** ****************
Best program in which a method is called in the implementation of another method of the same class.
********* Begin of Program 6 on OOP's*****************
CLASS c1 DEFINITION.
PUBLIC SECTION.
METHODS : m1 IMPORTING inp1 TYPE i
EXPORTING out1 TYPE i,
m2 IMPORTING inp2 TYPE i
EXPORTING out2 TYPE i.
ENDCLASS. "c1 DEFINITION
&---------------------------------------------------------------------*
& Class (Implementation) c1
&---------------------------------------------------------------------*
Text
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD m1.
out1 = inp1.
ENDMETHOD. "m1
METHOD m2.
CALL METHOD : m1 EXPORTING inp1 = inp2
IMPORTING out1 = out2.
ENDMETHOD. "m2
ENDCLASS. "c1
START-OF-SELECTION.
DATA : number TYPE i.
DATA : obj1 TYPE REF TO c1.
CREATE OBJECT OBJ1.
CALL METHOD: obj1->m2 EXPORTING inp2 = '10'
IMPORTING out2 = number.
WRITE : number.
********* End of Program 6 on OOP's*****************
***********************************************************************************************
program to demonstrate constructor
********** Begin of Program 7 on OOP's*****************
CLASS c1 DEFINITION.
PUBLIC SECTION.
METHODS: constructor.
ENDCLASS. "c1 DEFINITION
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD constructor.
The constructor method name should be constructor only.
WRITE : / ' The constructor has been called automatically'.
ENDMETHOD. "constructor
ENDCLASS. "c1 IMPLEMENTATION
START-OF-SELECTION.
DATA : obj TYPE REF TO c1.
create OBJECT obj.
********** End of Program 8 on OOP's*****************
***********************************************************************************************
program to demonstrate static constructor and instance constructor
********** Begin of Program8 on OOP's*****************
CLASS c1 DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: class_constructor.
ENDCLASS. "c1 DEFINITION
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD class_constructor.
WRITE : / ' The constructor has been called automatically'.
ENDMETHOD. "constructor
ENDCLASS. "c1 IMPLEMENTATION
START-OF-SELECTION.
DATA : obj TYPE REF TO c1.
CREATE OBJECT obj.
********** End of Program8 on OOP's*****************
**********************************************************************************
Inheritance
********** Begin of Program 9 ******************
CLASS c1 DEFINITION.
PUBLIC SECTION.
DATA: name1 TYPE c LENGTH 30 VALUE 'bharat'.
METHODS: m1 , "IMPORTING nam TYPE c
EXPORTING nam1 TYPE c.
m2.
ENDCLASS. "c1 DEFINITION
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
METHOD m1.
CONCATENATE nam 'Good' INTO nam1 SEPARATED BY space.
WRITE:/ ' This is a method in super class c1.'.
ENDMETHOD. "m1
METHOD m2.
WRITE: / ' This is the method 2 of the super class c1.'.
ENDMETHOD. "m2
ENDCLASS. "c1 IMPLEMENTATION
----------------------------------------------------------------------*
CLASS s1 DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS s1 DEFINITION INHERITING FROM c1.
PUBLIC SECTION.
METHODS m1 REDEFINITION.
METHODS: sm1.
ENDCLASS. "s1 DEFINITION
----------------------------------------------------------------------*
CLASS s1 IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS s1 IMPLEMENTATION.
METHOD sm1.
CALL METHOD super->m1.
WRITE: / ' This is a method in subclass SM1'.
ENDMETHOD. "sm1
ENDCLASS. "s1 IMPLEMENTATION
START-OF-SELECTION.
DATA : obj1 TYPE REF TO c1.
DATA : objs1 TYPE REF TO s1.
CREATE OBJECT : obj1 , objs1.
CALL METHOD : objs1->sm1.
CALL METHOD : objs1->m1,objs1->m2.
CALL METHOD objs1->m1.
**********End of program 9******************
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PROTECTED SECTION.
DATA count TYPE i.
ENDCLASS. "counter DEFINITION
----------------------------------------------------------------------*
CLASS counter IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD. "set
METHOD increment.
ADD 1 TO count.
ENDMETHOD. "increment
METHOD get.
get_value = count.
ENDMETHOD. "get
ENDCLASS. "counter IMPLEMENTATION
----------------------------------------------------------------------*
CLASS counter_ten DEFINITION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS counter_ten DEFINITION INHERITING FROM counter.
PUBLIC SECTION.
METHODS increment REDEFINITION.
DATA count_ten.
ENDCLASS. "counter_ten DEFINITION
----------------------------------------------------------------------*
CLASS counter_ten IMPLEMENTATION
----------------------------------------------------------------------*
----------------------------------------------------------------------*
CLASS counter_ten IMPLEMENTATION.
METHOD increment.
DATA modulo TYPE i.
CALL METHOD super->increment.
WRITE / count.
modulo = count MOD 10.
IF modulo = 0.
count_ten = count_ten + 1.
WRITE count_ten.
ENDIF.
ENDMETHOD. "increment
ENDCLASS. "counter_ten IMPLEMENTATION
DATA: count TYPE REF TO counter,
number TYPE i VALUE 5.
START-OF-SELECTION.
CREATE OBJECT count TYPE counter_ten.
CALL METHOD count->set
EXPORTING
set_value = number.
DO 20 TIMES.
CALL METHOD count->increment.
ENDDO.
Functional Flow
Quotation - VA21 / VA22 / VA23
Sales Order - VA01 / VA02 / VA03
Delivery - VL01N / VL02N / VL03N
Billing / Invoicing - VF01 / VF02 / VF03
· SD Flow Cycle:
INQUIRY ( VA11)
|
QUOTATION (VA21)
|
PURCHASE ORDER (ME21)
|
ORDER CONFIRMATION (VA01)
|
PICKING LIST – (VL36)
|
PACKING LIST - (VL02, VL01)
|
SHIPPING – (VT01)
|
INVOICE – (VF21, VF01)
|AR
· SD FLOW
SD Flow Cycle and T Codes:
INQUIRY ( VA11)
|
QUOTATION (VA21)
|
PURCHASE ORDER (ME21)
|
ORDER CONFIRMATION (VA01)
|
PICKING LIST – (VL36)
|
PACKING LIST - (VL02, VL01)
|
SHIPPING – (VT01)
|
INVOICE – (VF21, VF01)
|
AR
· MM Cycle:
Purchase Requisition-> STaff in an orgn places Pur requisition for want of some goods/products - ME51
Request for Quotation(RFQ)-> The Purchase dept in the orgn calls/requests for the quotation for the products against which PR was raised. - ME41
Vendor Evaluation->After receving the RFQ's, after comparison a Vendor is finalised based on the terms and conditions.
Purchase Order(PO)-> Pur order was issued to that vendor asking him to supply the goods/products -ME21N
Goods Receipt Note(GRN)->Vendor supplies the material/Products to the orgn-
MB01
Goods Issue (GI) -> People receives their respective itesm for which they have placed the Requisitions
Invoice Verification-> ALong with the Material Vendor submits a Invoice for which the Company Pays the amount - .MIRO
Data to FI -> data will be posted to FI as per the vendor invoices
Thursday, 24 May 2012
ALV OOP'S
REPORT ybharat.
TABLES : vbak.
**********************************************************************
*ALV related delcarations for initial container
DATA : gdt_fieldcat TYPE lvc_t_fcat ,
gds_fieldcat TYPE lvc_s_fcat,
* Referencing Object for Container and ALV Grid
gro_cont TYPE REF TO cl_gui_custom_container,
gro_alv TYPE REF TO cl_gui_alv_grid,
gdf_flag TYPE c,
gds_layout TYPE lvc_s_layo.
**********************************************************************
TYPES : BEGIN OF lts_vbak,
vbeln TYPE vbeln_va,
erdat TYPE erdat,
erzet TYPE erzet,
ernam TYPE ernam,
angdt TYPE angdt_v,
bnddt TYPE bnddt,
audat TYPE audat,
END OF lts_vbak.
DATA : gdt_vbak TYPE STANDARD TABLE OF lts_vbak,
gds_vbak TYPE lts_vbak.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
START-OF-SELECTION.
SELECT * FROM vbak INTO CORRESPONDING FIELDS OF TABLE gdt_vbak
WHERE vbeln IN s_vbeln.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'PF_STATUS'.
SET TITLEBAR 'ALV_TITLE'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module PREPARE_CONTAINER_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE prepare_container_0100 OUTPUT.
IF gro_cont IS INITIAL.
* Creating Custom Container
CREATE OBJECT gro_cont
EXPORTING
* parent =
container_name = 'ALV_DISPLAY' " this is the container which we created in the screen 100 layout
* style =
* lifetime = lifetime_default
* repid =
* dynnr =
* no_autodef_progid_dynnr =
* EXCEPTIONS
* cntl_error = 1
* cntl_system_error = 2
* create_error = 3
* lifetime_error = 4
* lifetime_dynpro_dynpro_link = 5
* others = 6
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Create an instance of ALV control
CREATE OBJECT gro_alv
EXPORTING
* i_shellstyle = 0
* i_lifetime =
i_parent = gro_cont
* i_appl_events = space
* i_parentdbg =
* i_applogparent =
* i_graphicsparent =
* i_name =
* i_fcat_complete = space
* EXCEPTIONS
* error_cntl_create = 1
* error_cntl_init = 2
* error_cntl_link = 3
* error_dp_create = 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.
* Creating Field Catalog
PERFORM field_catalog.
* Hot spot Event handler
PERFORM hotspot_event_handler1.
* Method for calling ALV grid to display
CALL METHOD gro_alv->set_table_for_first_display
EXPORTING
* is_layout = gds_layout
* is_variant = gdf_variant
* i_save = 'A'
i_default = 'X'
CHANGING
it_outtab = gdt_vbak
it_fieldcatalog = gdt_fieldcat.
ENDIF.
ENDMODULE. " PREPARE_CONTAINER_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM field_catalog .
* refresh fieldcatalog internal table
REFRESH gdt_fieldcat.
CLEAR gds_fieldcat.
PERFORM get_field_info USING 'VBELN' 'Sales Document' '10' 'CHAR' 'X' 'X' 'X'.
PERFORM get_field_info USING 'ERDAT' 'Date on Which Record Was Created' '8' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'ERZET' 'Entry time' '6' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'ERNAM' 'Name of Person who Created the Object' '12' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'ANGDT' 'Quotation/Inquiry is valid from' '8' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'BNDDT' 'Date until which bid/quotation is binding (valid-to date)' '8' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'AUDAT' 'Document Date (Date Received/Sent)' '8' 'CHAR' ' ' ' ' ' '.
ENDFORM. " FIELD_CATALOG
*&---------------------------------------------------------------------*
*& Form GET_FIELD_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0161 text
* -->P_0162 text
* -->P_0163 text
* -->P_0164 text
* -->P_0165 text
* -->P_0166 text
* -->P_0167 text
*----------------------------------------------------------------------*
FORM get_field_info USING value(pvf_field) TYPE any
value(pvf_text) TYPE any
value(pvf_len) TYPE i
value(pvf_type) TYPE any
value(pvf_gcf_x) TYPE c
value(pvf_emphasize) TYPE any
value(pvf_hspot) TYPE c.
CLEAR gds_fieldcat.
* Assigning the values to Fieldcat
gds_fieldcat-fieldname = pvf_field.
gds_fieldcat-coltext = pvf_text.
gds_fieldcat-outputlen = pvf_len.
gds_fieldcat-datatype = pvf_type.
gds_fieldcat-key = pvf_gcf_x. " like freeze pane in excel
gds_fieldcat-emphasize = pvf_emphasize. " for shading
gds_fieldcat-hotspot = pvf_hspot.
APPEND gds_fieldcat TO gdt_fieldcat.
ENDFORM. " GET_FIELD_INFO
*&---------------------------------------------------------------------*
*& Class GCL_EVENTS_CLICK
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
CLASS gcl_events_click DEFINITION.
PUBLIC SECTION.
METHODS: meth_hotspot_click FOR EVENT hotspot_click
OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id.
ENDCLASS. "GCL_EVENTS_CLICK
* class for hotspot
DATA gro_events1 TYPE REF TO gcl_events_click.
*&---------------------------------------------------------------------*
*& Class (Implementation) gcl_events_click
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
class gcl_events_click implementation.
METHOD meth_hotspot_click.
CONSTANTS: lcf_vbe TYPE RSEUX-CR_VALUE VALUE 'VF',
lcf_va03 TYPE sy-tcode VALUE 'VF02'.
READ TABLE gdt_vbak INDEX e_row_id INTO gds_vbak.
IF sy-subrc EQ 0.
SET PARAMETER ID lcf_vbe FIELD gds_vbak-vbeln.
CALL TRANSACTION lcf_va03 AND SKIP FIRST SCREEN.
ENDIF.
*
ENDMETHOD. "meth_hotspot_click
endclass. "gcl_events_click
*DATA gro_events1 TYPE REF TO gcl_events_click.
*&---------------------------------------------------------------------*
*& Form HOTSPOT_EVENT_HANDLER1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM hotspot_event_handler1 .
CREATE OBJECT gro_events1.
SET HANDLER gro_events1->meth_hotspot_click FOR gro_alv.
ENDFORM. " HOTSPOT_EVENT_HANDLER1
TABLES : vbak.
**********************************************************************
*ALV related delcarations for initial container
DATA : gdt_fieldcat TYPE lvc_t_fcat ,
gds_fieldcat TYPE lvc_s_fcat,
* Referencing Object for Container and ALV Grid
gro_cont TYPE REF TO cl_gui_custom_container,
gro_alv TYPE REF TO cl_gui_alv_grid,
gdf_flag TYPE c,
gds_layout TYPE lvc_s_layo.
**********************************************************************
TYPES : BEGIN OF lts_vbak,
vbeln TYPE vbeln_va,
erdat TYPE erdat,
erzet TYPE erzet,
ernam TYPE ernam,
angdt TYPE angdt_v,
bnddt TYPE bnddt,
audat TYPE audat,
END OF lts_vbak.
DATA : gdt_vbak TYPE STANDARD TABLE OF lts_vbak,
gds_vbak TYPE lts_vbak.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
START-OF-SELECTION.
SELECT * FROM vbak INTO CORRESPONDING FIELDS OF TABLE gdt_vbak
WHERE vbeln IN s_vbeln.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'PF_STATUS'.
SET TITLEBAR 'ALV_TITLE'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module PREPARE_CONTAINER_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE prepare_container_0100 OUTPUT.
IF gro_cont IS INITIAL.
* Creating Custom Container
CREATE OBJECT gro_cont
EXPORTING
* parent =
container_name = 'ALV_DISPLAY' " this is the container which we created in the screen 100 layout
* style =
* lifetime = lifetime_default
* repid =
* dynnr =
* no_autodef_progid_dynnr =
* EXCEPTIONS
* cntl_error = 1
* cntl_system_error = 2
* create_error = 3
* lifetime_error = 4
* lifetime_dynpro_dynpro_link = 5
* others = 6
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Create an instance of ALV control
CREATE OBJECT gro_alv
EXPORTING
* i_shellstyle = 0
* i_lifetime =
i_parent = gro_cont
* i_appl_events = space
* i_parentdbg =
* i_applogparent =
* i_graphicsparent =
* i_name =
* i_fcat_complete = space
* EXCEPTIONS
* error_cntl_create = 1
* error_cntl_init = 2
* error_cntl_link = 3
* error_dp_create = 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.
* Creating Field Catalog
PERFORM field_catalog.
* Hot spot Event handler
PERFORM hotspot_event_handler1.
* Method for calling ALV grid to display
CALL METHOD gro_alv->set_table_for_first_display
EXPORTING
* is_layout = gds_layout
* is_variant = gdf_variant
* i_save = 'A'
i_default = 'X'
CHANGING
it_outtab = gdt_vbak
it_fieldcatalog = gdt_fieldcat.
ENDIF.
ENDMODULE. " PREPARE_CONTAINER_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM field_catalog .
* refresh fieldcatalog internal table
REFRESH gdt_fieldcat.
CLEAR gds_fieldcat.
PERFORM get_field_info USING 'VBELN' 'Sales Document' '10' 'CHAR' 'X' 'X' 'X'.
PERFORM get_field_info USING 'ERDAT' 'Date on Which Record Was Created' '8' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'ERZET' 'Entry time' '6' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'ERNAM' 'Name of Person who Created the Object' '12' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'ANGDT' 'Quotation/Inquiry is valid from' '8' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'BNDDT' 'Date until which bid/quotation is binding (valid-to date)' '8' 'CHAR' ' ' ' ' ' '.
PERFORM get_field_info USING 'AUDAT' 'Document Date (Date Received/Sent)' '8' 'CHAR' ' ' ' ' ' '.
ENDFORM. " FIELD_CATALOG
*&---------------------------------------------------------------------*
*& Form GET_FIELD_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0161 text
* -->P_0162 text
* -->P_0163 text
* -->P_0164 text
* -->P_0165 text
* -->P_0166 text
* -->P_0167 text
*----------------------------------------------------------------------*
FORM get_field_info USING value(pvf_field) TYPE any
value(pvf_text) TYPE any
value(pvf_len) TYPE i
value(pvf_type) TYPE any
value(pvf_gcf_x) TYPE c
value(pvf_emphasize) TYPE any
value(pvf_hspot) TYPE c.
CLEAR gds_fieldcat.
* Assigning the values to Fieldcat
gds_fieldcat-fieldname = pvf_field.
gds_fieldcat-coltext = pvf_text.
gds_fieldcat-outputlen = pvf_len.
gds_fieldcat-datatype = pvf_type.
gds_fieldcat-key = pvf_gcf_x. " like freeze pane in excel
gds_fieldcat-emphasize = pvf_emphasize. " for shading
gds_fieldcat-hotspot = pvf_hspot.
APPEND gds_fieldcat TO gdt_fieldcat.
ENDFORM. " GET_FIELD_INFO
*&---------------------------------------------------------------------*
*& Class GCL_EVENTS_CLICK
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
CLASS gcl_events_click DEFINITION.
PUBLIC SECTION.
METHODS: meth_hotspot_click FOR EVENT hotspot_click
OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id.
ENDCLASS. "GCL_EVENTS_CLICK
* class for hotspot
DATA gro_events1 TYPE REF TO gcl_events_click.
*&---------------------------------------------------------------------*
*& Class (Implementation) gcl_events_click
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
class gcl_events_click implementation.
METHOD meth_hotspot_click.
CONSTANTS: lcf_vbe TYPE RSEUX-CR_VALUE VALUE 'VF',
lcf_va03 TYPE sy-tcode VALUE 'VF02'.
READ TABLE gdt_vbak INDEX e_row_id INTO gds_vbak.
IF sy-subrc EQ 0.
SET PARAMETER ID lcf_vbe FIELD gds_vbak-vbeln.
CALL TRANSACTION lcf_va03 AND SKIP FIRST SCREEN.
ENDIF.
*
ENDMETHOD. "meth_hotspot_click
endclass. "gcl_events_click
*DATA gro_events1 TYPE REF TO gcl_events_click.
*&---------------------------------------------------------------------*
*& Form HOTSPOT_EVENT_HANDLER1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM hotspot_event_handler1 .
CREATE OBJECT gro_events1.
SET HANDLER gro_events1->meth_hotspot_click FOR gro_alv.
ENDFORM. " HOTSPOT_EVENT_HANDLER1
Subscribe to:
Posts (Atom)