SAP abap program to send message by randy teh

12:46 AM
*&---------------------------------------------------------------------*
*& Report  YMSG_RANDY
*&
*&---------------------------------------------------------------------*
*& Copy right Randy Teh 2015July15
*& To have customized table to store chat log
*& Can view the last message history
*&---------------------------------------------------------------------*
REPORT  YMSG_RANDY.
TABLESztab_randy.
TABLESsscrfields.
*----------------------------------------------------------------------*
*  Local class for report
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
  PUBLIC SECTION.
    DATAt_data TYPE STANDARD TABLE OF ztab_randy.

    METHODS:
      get_data,
      generate_output.
ENDCLASS.                    "lcl_report DEFINITION

*----------------------------------------------------------------------*
*  Local class for events
*----------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS:
      on_user_command FOR EVENT added_function OF cl_salv_events
        IMPORTING e_salv_function.
ENDCLASS.                    "lcl_report DEFINITION

TYPESBEGIN OF y_ztab_randy,
        mandt     TYPE mandt,   "primary
        UNAME     TYPE SYUNAME"primary
        send_time TYPE SYUZEIT"primary
        send_date TYPE SYDATUM"primary
        chatid    TYPE char10,
        send_msg  TYPE text255,
       END OF y_ztab_randy.

TYPE-POOLSicon.

DATAwa_ztab TYPE y_ztab_randy,
      cl_columns       TYPE REF TO cl_salv_columns_table,
      cl_column        TYPE REF TO cl_salv_column_table,
      cl_not_found     TYPE REF TO cx_salv_not_found.
DATAlo_report TYPE REF TO lcl_report.
DATAgr_events TYPE REF TO cl_salv_events_table.
DATAevent_handler TYPE REF TO lcl_handle_events.

DATAlo_dock TYPE REF TO cl_gui_docking_container,
      lo_cont TYPE REF TO cl_gui_container,
      lo_alv  TYPE REF TO cl_salv_table.

PARAMETERS CLIENT   LIKE  SY-MANDT.
PARAMETERS USER     LIKE  SY-UNAME OBLIGATORY.
PARAMETERS CHATID   TYPE  CHAR10.
PARAMETERS MESSAGE  LIKE  SM04DIC-POPUPMSG     LOWER CASE.
PARAMETERS MSG_LEN  LIKE  SY-INDEX."MESSAGE_LEN  LIKE  SY-INDEX.
PARAMETERS CUT_BLKS LIKE  SY-LANGU."CUT_BLANKS LIKE  SY-LANGU.
SELECTION-SCREEN BEGIN OF LINE.
* Add buttons to application toolbar
SELECTION-SCREEN  FUNCTION KEY 1.  "Will have a function code of 'FC01'
SELECTION-SCREEN  FUNCTION KEY 2.  "Will have a function code of 'FC01'
SELECTION-SCREEN END OF LINE.

PARAMETERp_ucomm LIKE sy-ucomm NO-DISPLAY.

INITIALIZATION.
* Add displayed text string to buttons
  MOVE 'REFRESH' TO sscrfields-functxt_01.
  MOVE 'song'    TO sscrfields-functxt_02.

  CLIENT   =  SY-MANDT.
  USER     =  SY-UNAME.
  MSG_LEN  =  SY-INDEX."MESSAGE_LEN  LIKE  SY-INDEX.
  CUT_BLKS =  SY-LANGU."CUT_BLANKS LIKE  SY-LANGU.

  CREATE OBJECT lo_report.
* generate output
  lo_report->get_data).
  lo_report->generate_output).

  DATAwa_usr41 TYPE usr41.
  SELECT FROM USR41 CLIENT SPECIFIED INTO wa_usr41.
  ENDSELECT.

AT SELECTION-SCREEN.
* Check if button have been selected or not
  IF sscrfields-ucomm EQ 'FC01'.
    p_ucomm 'BUTN1'.
  ELSEIF sscrfields-ucomm EQ 'FC02'.
    p_ucomm 'BUTN2'.
  ELSE.
    CLEAR p_ucomm.
  ENDIF.


AT SELECTION-SCREEN OUTPUT.

  IF p_ucomm 'BUTN1'.
    MESSAGE 'cant refresh' TYPE 'I' DISPLAY LIKE 'I'.
    LEAVE TO TRANSACTION 'YMSG'.
  ELSEIF p_ucomm 'BUTN2'.
    MESSAGE 'SONG LAH' TYPE 'I' DISPLAY LIKE 'I'.
  ENDIF.

at selection-screen on value-request for  USER.
  PERFORM F_SEARCHHELP.

START-OF-SELECTION.
    PERFORM f_collect_data.
    TRANSLATE chatid TO UPPER CASE.
    IF chatid eq 'DELETE123'.
      DELETE FROM ztab_randy.
      lo_report->GET_DATA).
    ELSE.

      CALL FUNCTION 'TH_POPUP'
        EXPORTING
          CLIENT               CLIENT
          USER                 USER
          MESSAGE              MESSAGE
*             MESSAGE_LEN          = 0
*             CUT_BLANKS           = ' '
*           EXCEPTIONS
*             USER_NOT_FOUND       = 1
*             OTHERS               = 2
                .
      IF SY-SUBRC <> 0.
*           Implement suitable error handling here
      ELSE.
        TRANSLATE wa_ztab-uname TO UPPER CASE.
        IF wa_ztab-chatid <> 'JUNIOR ZAI' .
          wa_ztab-chatid text-001.
        ENDIF.

        INSERT INTO ztab_randy VALUES wa_ztab.
        lo_report->get_data).
      ENDIF.
    ENDIF.

END-OF-SELECTION.


*&---------------------------------------------------------------------*
*&      Form  F_COLELCT_DATA
*&---------------------------------------------------------------------*
FORM f_collect_data.
  wa_ztab-mandt     client.
  wa_ztab-uname     sy-uname.
  wa_ztab-chatid    chatid.
  wa_ztab-send_msg  message.
  wa_ztab-send_time sy-uzeit.
  wa_ztab-send_date sy-datum.
ENDFORM.                    "f_collect_data


*&---------------------------------------------------------------------*
*&      Form  F_SEARCHHELP
*&---------------------------------------------------------------------*
FORM F_SEARCHHELP .
  TABLESusr02.
  data:
       begin of t_BNAME occurs 0,
             BNAME like USR02-BNAME,
             TRDAT TYPE XULDATE,
             LTIME TYPE XULTIME,
             "maktx like makt-maktx,
       end   of t_BNAME,
       t_values type DYNPREAD occurs WITH HEADER LINE,
       v_prog like D020S-PROG.
  TYPESBEGIN OF X_RETURN .
          INCLUDE STRUCTURE DDSHRETVAL"Search help structure
  TYPESEND OF X_RETURN.
  datal_dynpprog       type sy-repid,
        l_dynnr          type sy-dynnr,
        l_dynprofld      TYPE help_info-dynprofld.
  dataRETURN_TAB   TYPE STANDARD TABLE OF X_RETURN WITH HEADER LINE.

  v_prog sy-repid.
  REFRESHt_values.
  CLEARt_values.
  t_values-fieldname 'USER'.
  APPEND t_VALUES.
*  CALL FUNCTION 'DYNP_VALUES_READ'
*    EXPORTING
*      dyname                   = v_prog
*      dynumb                   = '1000'
*      TRANSLATE_TO_UPPER       = ' '
*      REQUEST                  = ' '
*      PERFORM_CONVERSION_EXITS = ' '
*      PERFORM_INPUT_CONVERSION = ' '
*      DETERMINE_LOOP_INDEX     = ' '
*    TABLES
*      dynpfields               = t_values.
*  IF sy-subrc = 0.
*    READ TABLE T_VALUES INDEX 1.
*    IF SY-SUBRC = 0.
      SELECT BNAME TRDAT LTIME FROM usr02 INTO t_BNAME "to get recent login of the day
                 where USTYP 'A' AND
                       TRDAT SY-DATUM.
        APPEND T_BNAME.
      ENDSELECT.
      if sy-subrc 0.
        l_dynpprog sy-repid.
        l_dynnr    sy-dynnr.
        l_dynprofld  'BNAME'  .
        CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
          EXPORTING
            retfield    'BNAME'
            DYNPPROG    l_dynpprog
            DYNPNR      l_dynnr
            DYNPROFIELD l_dynprofld
            VALUE_ORG   'S'
          TABLES
            value_tab   t_BNAME
            RETURN_TAB  RETURN_TAB.
*        IF sy-subrc = 0.
*          IF NOT RETURN_TAB[] IS INITIAL.
*            READ TABLE RETURN_TAB INDEX 1.
*            IF SY-SUBRC = 0.
*              T_BNAME = RETURN_TAB-FIELDVAL.
*            ENDIF.
*          ENDIF.
*        ENDIF.
      ENDIF.
*    ENDIF.
*  ENDIF.

ENDFORM.                    "F_SEARCHHELP

*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_report IMPLEMENTATION.
*
  METHOD get_data.
*   data selection
    SELECT FROM ztab_randy
           INTO  TABLE me->t_data
           WHERE send_date sy-datum ORDER BY send_date send_time DESCENDING.
    IF sy-dbcnt IS INITIAL.
      MESSAGE s398(00WITH 'No data selected'.
    ENDIF.

*   export to memory
    EXPORT data me->t_data TO MEMORY ID sy-cprog.

  ENDMETHOD.                    "get_data

  METHOD generate_output.

*   import output table from the memory and free afterwards
    IMPORT data me->t_data FROM MEMORY ID sy-cprog.
    FREE MEMORY ID sy-cprog.

*   Only if there is some data
    CHECK me->t_data IS NOT INITIAL.

    IF lo_dock IS NOT INITIAL.
      lo_dock->free).
    ENDIF.

*   Create a docking control at bottom
*    CHECK lo_dock IS INITIAL.
    CREATE OBJECT lo_dock
      EXPORTING
        repid sy-cprog
        dynnr sy-dynnr
        ratio 80
        side  cl_gui_docking_container=>dock_at_bottom
        name  'DOCK_CONT'.
    IF sy-subrc <> 0.
      MESSAGE 'Error in the Docking control' TYPE 'S'.
    ENDIF.

    lo_dock->set_heightheight '340' ).

*   Create a SALV for output
*    CHECK lo_alv IS INITIAL.
    TRY.
*       Narrow Casting: To initialize custom container from
*       docking container
        lo_cont ?= lo_dock.

*       SALV Table Display on the Docking container
        CALL METHOD cl_salv_table=>factory
          EXPORTING
            list_display   if_salv_c_bool_sap=>false
            r_container    lo_cont
            container_name 'DOCK_CONT'
          IMPORTING
            r_salv_table   lo_alv
          CHANGING
            t_table        me->t_data.
      CATCH cx_salv_msg .
    ENDTRY.

*   Pf status
    DATAlo_functions TYPE REF TO cl_salv_functions_list.
    lo_functions lo_alv->get_functions).
    lo_functions->set_defaultabap_true ).

    lo_functions->add_function(
      name      '&REF'
      icon      '@42@'
*      text      =
      tooltip   'Refresh'
      position  if_salv_c_function_position=>right_of_salv_functions ).

*   Set event
    gr_events lo_alv->get_event).
    CREATE OBJECT event_handler.
    SET HANDLER event_handler->on_user_command FOR gr_events.

    PERFORM set_column_setting USING lo_alv.

*   output display
    lo_alv->display).

  ENDMETHOD.                    "generate_output

ENDCLASS.                    "lcl_report IMPLEMENTATION

*----------------------------------------------------------------------*
* Local Class Implementation
*----------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
    CASE e_salv_function.
      WHEN '&REF'.
        lo_report->get_data).
        lo_report->generate_output).
    ENDCASE.
  ENDMETHOD.                    "on_user_command
ENDCLASS.

FORM set_column_setting USING lo_alv TYPE REF TO cl_salv_table.

  DATAv_text TYPE string.
  DATA:lv_scrtext_s TYPE dd04t-scrtext_s,
    lv_scrtext_m TYPE dd04t-scrtext_m,
    lv_scrtext_l TYPE dd04t-scrtext_l.

  cl_columns lo_alv->get_columns).
  cl_columns->set_optimizeabap_true ).
*
*  TRY.
*      cl_columns->set_cell_type_column( 'CELLTAB' ).
*    CATCH cx_salv_data_error.                           "#EC NO_HANDLER
*  ENDTRY.

  TRY.
*      cl_column ?= cl_columns->get_column( 'TABNAME' ).
*      cl_column->set_cell_type( if_salv_c_cell_type=>hotspot ).

      cl_column ?= cl_columns->get_column'CHATID' ).
      lv_scrtext_s lv_scrtext_m lv_scrtext_l 'CHAT ID'.
      cl_column->set_short_textlv_scrtext_s ).
      cl_column->set_medium_textlv_scrtext_m ).
      cl_column->set_long_textlv_scrtext_l ).



    CATCH cx_salv_not_found INTO cl_not_found.
      CLEARv_text.
      v_text cl_not_found->get_text).
*      MESSAGE v_text TYPE c_i.
  ENDTRY.

ENDFORM.                    "set_column_setting
Read On 0 comments

Abap: transport alv layout

2:32 AM
http://scn.sap.com/thread/80260 You can do this easily. Go to the ALV Variants Managment screen after executing the report. There, one of the Menu options, when expanded, will have a 'Transport' option. Note that there is no button for this. Clicking this option will prompt for a transport number assignment.
Read On 0 comments

ABAP: copy alv variant to another program

2:29 AM
*&---------------------------------------------------------------------* *& Report ZTEST1 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* * from this site * http://scn.sap.com/thread/3200295 REPORT ZTEST1. TYPE-POOLS: slis. TABLES : LTDXT. PARAMETERS: P_REP LIKE SY-REPID, P_REP2 LIKE SY-REPID. DATA : T_VAR TYPE STANDARD TABLE OF LTVARIANT, L_VAR TYPE LTVARIANT. DATA: LS_VARKEY LIKE LTDXKEY. DATA: LS_VARIANT LIKE DISVARIANT. DATA: LT_DBFIELDCAT LIKE LTDXDATA OCCURS 0 WITH HEADER LINE. DATA: LT_DBSORTINFO LIKE LTDXDATA OCCURS 0 WITH HEADER LINE. DATA: LT_DBFILTER LIKE LTDXDATA OCCURS 0 WITH HEADER LINE. DATA: LT_DBLAYOUT LIKE LTDXDATA OCCURS 0 WITH HEADER LINE. DATA: LT_FCAT TYPE SLIS_T_FIELDCAT_ALV. DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV. RANGES: LR_REPORT FOR LTDX-REPORT. LR_REPORT-SIGN = 'I'. LR_REPORT-OPTION = 'EQ'. LR_REPORT-LOW = P_REP. APPEND LR_REPORT. CALL FUNCTION 'LT_VARIANTS_READ_FROM_LTDX' EXPORTING I_TOOL = 'LT' I_TEXT = 'X' TABLES ET_VARIANTS = T_VAR IT_RA_REPORT = LR_REPORT EXCEPTIONS NOT_FOUND = 1 OTHERS = 2. IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. * LOOP AT T_VAR INTO L_VAR. MOVE-CORRESPONDING L_VAR TO LS_VARKEY. CALL FUNCTION 'LT_DBDATA_READ_FROM_LTDX' EXPORTING I_TOOL = 'LT' IS_VARKEY = LS_VARKEY TABLES T_DBFIELDCAT = LT_DBFIELDCAT T_DBSORTINFO = LT_DBSORTINFO T_DBFILTER = LT_DBFILTER T_DBLAYOUT = LT_DBLAYOUT EXCEPTIONS NOT_FOUND = 1 WRONG_RELID = 2 OTHERS = 3. IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. * MOVE-CORRESPONDING L_VAR TO LS_VARIANT. LS_VARKEY-REPORT = P_REP2. LS_VARIANT-REPORT = P_REP2. CALL FUNCTION 'LT_DBDATA_WRITE_TO_LTDX' EXPORTING I_TOOL = 'LT' IS_VARKEY = LS_VARKEY IS_VARIANT = LS_VARIANT TABLES T_DBFIELDCAT = LT_DBFIELDCAT T_DBSORTINFO = LT_DBSORTINFO T_DBFILTER = LT_DBFILTER T_DBLAYOUT = LT_DBLAYOUT EXCEPTIONS NOT_FOUND = 1 WRONG_RELID = 2 OTHERS = 3. IF SY-SUBRC <> 0. ELSE. MOVE-CORRESPONDING LS_VARKEY TO LTDXT. LTDXT-RELID = 'LT'. LTDXT-LANGU = SY-LANGU. LTDXT-TEXT = LS_VARIANT-TEXT. INSERT LTDXT. IF SY-SUBRC NE 0. UPDATE LTDXT. ENDIF. ENDIF. ENDLOOP.
Read On 0 comments

Program to find Badi or user exit

7:59 PM
report ZFINDEXIT_BADI.
TABLES TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT ,
TSTCT.

DATA JTAB LIKE TADIR OCCURS WITH HEADER LINE.
DATA FIELD1(30).
DATA V_DEVCLASS LIKE TADIR-DEVCLASS.

PARAMETERS P_TCODE LIKE TSTC-TCODE,
P_PGMNA LIKE TSTC-PGMNA .

DATA wa_tadir type tadir.

START-OF-SELECTION.

IF NOT P_TCODE IS INITIAL.
SELECT SINGLE FROM TSTC WHERE TCODE EQ P_TCODE.

ELSEIF NOT P_PGMNA IS INITIAL.
TSTC-PGMNA P_PGMNA.
ENDIF.

IF SY-SUBRC EQ 0.
SELECT SINGLE FROM TADIR
WHERE PGMID 'R3TR'
AND OBJECT 'PROG'
AND OBJ_NAME TSTC-PGMNA.

MOVE TADIR-DEVCLASS TO V_DEVCLASS.

IF SY-SUBRC NE 0.
SELECT SINGLE FROM TRDIR
WHERE NAME TSTC-PGMNA.
IF TRDIR-SUBC EQ 'F'.
SELECT SINGLE FROM TFDIR
WHERE PNAME TSTC-PGMNA.

SELECT SINGLE FROM ENLFDIR
WHERE FUNCNAME TFDIR-FUNCNAME.

SELECT SINGLE FROM TADIR
WHERE PGMID 'R3TR'
AND OBJECT 'FUGR'
AND OBJ_NAME EQ ENLFDIR-AREA.

MOVE TADIR-DEVCLASS TO V_DEVCLASS.
ENDIF.
ENDIF.

SELECT FROM TADIR INTO TABLE JTAB
WHERE PGMID 'R3TR'
AND OBJECT in ('SMOD''SXSD')
AND DEVCLASS V_DEVCLASS.


SELECT SINGLE FROM TSTCT
WHERE SPRSL EQ SY-LANGU
AND TCODE EQ P_TCODE.

FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19'Transaction Code - ',
20(20P_TCODE,
45(50TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.



*Sorting the internal Table
sort jtab by OBJECT.
data wf_txt(60type c,
wf_smod type ,
wf_badi type ,
wf_object2(30type C.
clear wf_smodwf_badi wf_object2.

*Get the total SMOD.

LOOP AT JTAB into wa_tadir.
at first.
FORMAT COLOR COL_HEADING INTENSIFIED ON.

WRITE:/1 SY-VLINE,
'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105SY-ULINE.
endat.
clear wf_txt.
at new object.
if wa_tadir-object 'SMOD'.
wf_object2 'Enhancement' .
elseif wa_tadir-object 'SXSD'.
wf_object2 ' Business Add-in'.

endif.
FORMAT COLOR COL_GROUP INTENSIFIED ON.

WRITE:/1 SY-VLINE,

wf_object2,
105 SY-VLINE.
endat.

case wa_tadir-object.
when 'SMOD'.
wf_smod wf_smod + 1.
SELECT SINGLE MODTEXT into wf_txt
FROM MODSAPT
WHERE SPRSL SY-LANGU
AND NAME wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

when 'SXSD'.


*For BADis
wf_badi wf_badi + .
select single TEXT into wf_txt
from SXS_ATTRT
where sprsl sy-langu
and EXIT_NAME wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.

endcase.


WRITE:/1 SY-VLINE,
wa_tadir-OBJ_NAME hotspot on,
41 SY-VLINE ,
42 wf_txt,
105 SY-VLINE.
AT END OF object.
write /(105sy-ULINE.
ENDAT.


ENDLOOP.

WRITE:/(105SY-ULINE.



SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:'No.of Exits:' wf_smod.
WRITE:'No.of BADis:' wf_badi.

ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105'No userexits or BADis exist'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105'Transaction does not exist'.
ENDIF.

AT LINE-SELECTION.

data wf_object type tadir-object.
clear wf_object.


GET CURSOR FIELD FIELD1.
CHECK FIELD1(8EQ 'WA_TADIR'.
read table jtab with key obj_name sy-lisel+1(20).
move jtab-object to wf_object.

case wf_object.
when 'SMOD'.
SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).

CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
when 'SXSD'.
SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
endcase.
Read On 0 comments

Sample on OO grid with select otspot

3:00 AM
REPORT ZLLTEST13.
*****************************************
*  D A T A  D E C L A R A T I O N  START*
*****************************************
*********************************************************
*  D I S P L A Y   A L V   I N   S C R E E N  S T A R T *
*********************************************************
DATA:   gs_fieldcatalog TYPE lvc_s_fcat OCCURS 0,
        gv_fcat LIKE LINE OF gs_fieldcatalog,
        gs_layout TYPE lvc_s_layo.
*<----------------CUSTOM TABLE START----------------------
TYPES BEGIN OF gty_item,
          checkbox type c,                "field for checkbox
          celltab  type lvc_t_styl,        "field to switch editability
          VBELN            TYPE VBAK-VBELN,                        "<---CUSTOMIZED
          TABLE(4)         TYPE C,                                 "<---CUSTOMIZED
          GV_ADDRESS1(500TYPE C,                                 "<---CUSTOMIZED
          GV_ADDRESS2(500TYPE C,                                 "<---CUSTOMIZED
        END OF gty_item.
DATA :  gs_item TYPE gty_item,
        gt_item TYPE TABLE OF gty_item.
*<----------------CUSTOM TABLE END------------------------
DATA :  g_Container TYPE scrfname VALUE 'C_ALV',                    ""<---CUSTOMIZED CONTAINER VALUE
        g_Custom_Container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
        g_Grid TYPE REF TO CL_GUI_ALV_GRID.
DATA :  OK_CODE LIKE sy-ucomm,
        SAVE_OK LIKE sy-ucomm.



******************************************************
*  D I S P L A Y   A L V   I N   S C R E E N  E N D  *
******************************************************

******************************************************
*  CUSTOM TABLE OR DATA DECLRATION FOR PROGRAM       *
******************************************************
TABLEST001ADRC,
        Ekko"Purchasing Document Header       EBELN
        vbrk"Billing Document: Header Data    VBELN
        vbak.  "Sales Document: Header Data     VBELN
DATA:   TA_T001       TYPE TABLE OF T001,
        WA_T001       LIKE LINE OF TA_T001,
        TA_ADRC       TYPE TABLE OF ADRC,
        WA_ADRC       LIKE LINE OF TA_ADRC,
        LV_BUKRS      TYPE T001-BUKRS,
        GV_ADDRESS1   TYPE  STRING,
        GV_ADDRESS2   TYPE  STRING,
        SY_PROG       TYPE SY-CPROG,
        LV_VBELN      TYPE VBAK-VBELN.
SY_PROG SY-CPROG.
******************************************************
*  S E L E C T I O N   S C R E E N                   *
******************************************************
SELECTION-SCREEN BEGIN OF BLOCK b_top WITH FRAME.
PARAMETERS     p_EKKO  RADIOBUTTON GROUP g1,
                 p_VBRK  RADIOBUTTON GROUP g1,
                 p_VBAK  RADIOBUTTON GROUP g1,
                 p_DOCNO type vbeln DEFAULT '4970000000'.
SELECTION-SCREENEND OF BLOCK b_top.


FORM U_PREPARE_FIELDCATALOG .
  CLEAR gv_fcat.

  CLEAR gv_fcat.
  gv_fcat-fieldname 'TABLE'.
  gv_fcat-tabname 'TABLE'.
  gv_fcat-col_pos 0.
  gv_fcat-coltext 'TABLE'.
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

  gv_fcat-fieldname 'VBELN'.
  gv_fcat-tabname 'VBELN'.
  gv_fcat-col_pos 0.
  gv_fcat-coltext 'VBELN'.
  gv_fcat-hotspot 'X'.
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

  CLEAR gv_fcat.
  gv_fcat-fieldname 'GV_ADDRESS1'.
  gv_fcat-tabname 'GV_ADDRESS1'.
  gv_fcat-col_pos 0.
  gv_fcat-coltext 'GV_ADDRESS1'.
  gv_fcat-INTLEN 55.
  "gv_fcat-no_out = 'X'. " Do not Display Column
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

  CLEAR gv_fcat.
  gv_fcat-fieldname 'GV_ADDRESS2'.
  gv_fcat-tabname 'GV_ADDRESS2'.
  gv_fcat-col_pos 1.
  gv_fcat-coltext 'GV_ADDRESS2'.
  gv_fcat-INTLEN 55.
  "gv_fcat-no_out = 'X'. " Do not Display Column
  INSERT gv_fcat INTO TABLE gs_fieldcatalog.

ENDFORM" U_PREPARE_FIELDCATALOG
*****************************************
*  D A T A  D E C L A R A T I O N  END  *
*****************************************
*****************************************
*  H O T   S P O T               START  *
*****************************************
CLASS event_class DEFINITION DEFERRED.
*& Refrence Objects To Alv Grid & Custom Container Classes
DATA:
****  g_Grid TYPE REF TO cl_gui_alv_grid,                     <-- your customized ALV
****  g_Custom_Container TYPE REF TO cl_gui_custom_container, <-- your customized ALV
  event_receiver TYPE REF TO event_class,
  e_object TYPE REF TO cl_alv_event_toolbar_set.
*& Data Declaration For Interactive Lists
DATA:
  t_layo TYPE lvc_s_layo,
  t_fcat TYPE lvc_t_fcat,
  fs_fcat TYPE lvc_s_fcat,
  t_cell TYPE lvc_t_cell,
  t_row TYPE lvc_t_roid,
  t_cel TYPE lvc_t_ceno.
*----------------------------------------------------------------------*
* CLASS event_class DEFINITION
*----------------------------------------------------------------------*
CLASS event_class DEFINITION.
  PUBLIC SECTION.
    METHODS:
    handle_hotspot_click
*    FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_row_id.
    FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING  e_column_id
                                                          e_row_id
                                                          es_row_no  .

ENDCLASS"event_class DEFINITION

*----------------------------------------------------------------------*
* CLASS event_class IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS event_class IMPLEMENTATION.
  METHOD handle_hotspot_click.
* fl_flag = 1.
*& Work Variable Declarations
*****    DATA:
*****    fs_carrid LIKE LINE OF t_flight. " Airline Passed Variable
*& Reading the selected data into the variable
****    READ TABLE t_flight INDEX e_row_id-index INTO fs_carrid.
****    PERFORM get_booking_data USING fs_carrid.
****    CALL SCREEN 600.

    READ TABLE GT_ITEM INTO GS_ITEM INDEX e_row_id-index.

    CASE GS_ITEM-TABLE.
    WHEN 'EKKO'SET PARAMETER ID 'BES' FIELD GS_ITEM-VBELNCALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    WHEN 'VBRK'SET PARAMETER ID 'VF'  FIELD GS_ITEM-VBELNCALL TRANSACTION 'VF03'  AND SKIP FIRST SCREEN.
    WHEN 'VBAK'SET PARAMETER ID 'AUN' FIELD GS_ITEM-VBELNCALL TRANSACTION 'VA03'  AND SKIP FIRST SCREEN.
    ENDCASE.

  ENDMETHOD"handle_hotspot_click
ENDCLASS"event_class IMPLEMENTATION
*****************************************
*  H O T   S P O T                 END  *
*****************************************

*****************************************
*  PROCESS DATA START                   *
*****************************************
*&---------------------------------------------------------------------*
*&      Form  F_PROCESS_DATA - TO POPULATE GT_ITEM
*&---------------------------------------------------------------------*
FORM F_PROCESS_DATA .
  CLEARLV_BUKRSGS_ITEM.
  CASE 'X'.
    WHEN p_EKKOSELECT SINGLE BUKRS    FROM EKKO INTO LV_BUKRS WHERE EBELN EQ p_DOCNO.
    WHEN p_VBRKSELECT SINGLE BUKRS    FROM VBRK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO.
    WHEN p_VBAKSELECT SINGLE BUKRS_VF FROM VBAK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO AND VKORG '0190'"SALES oRDER
  ENDCASE.
  IF SY-SUBRC EQ 0.
    SELECT FROM T001 INTO CORRESPONDING FIELDS OF TABLE TA_T001 WHERE BUKRS EQ LV_BUKRS.
    IF TA_T001[] IS NOT INITIAL.
      SELECT FROM ADRC INTO CORRESPONDING FIELDS OF TABLE TA_ADRC
        FOR ALL ENTRIES IN TA_T001 WHERE ADDRNUMBER EQ TA_T001-ADRNR.
      IF SY-SUBRC EQ 0.
        READ TABLE TA_ADRC INTO  WA_ADRC INDEX 1.
        IF SY-SUBRC EQ 0.
          CLEARGV_ADDRESS1GV_ADDRESS2.
              CONCATENATEWA_ADRC-NAME1 WA_ADRC-NAME2 INTO GV_ADDRESS1 SEPARATED BY SPACE.

          IF WA_ADRC-STR_SUPPL1 IS NOT INITIAL"NEXT LINE IS NOT INITIAL
              CONCATENATE WA_ADRC-STREET  ','         INTO WA_ADRC-STREET.
          ENDIF.
          IF WA_ADRC-STR_SUPPL2 IS NOT INITIAL"NEXT LINE IS NOT INITIAL
              CONCATENATE WA_ADRC-STR_SUPPL1  ','     INTO WA_ADRC-STR_SUPPL1.
          ENDIF.
              CONCATENATE WA_ADRC-STREET
                          WA_ADRC-STR_SUPPL1
                          WA_ADRC-STR_SUPPL2          INTO GV_ADDRESS2 SEPARATED BY SPACE.
          REPLACE ',,'  WITH ',' INTO:  GV_ADDRESS1 GV_ADDRESS2.
          REPLACE ', ,' WITH ',' INTO:  GV_ADDRESS1 GV_ADDRESS2.
          REPLACE ' ,'  WITH ',' INTO:  GV_ADDRESS1 GV_ADDRESS2.

          GS_ITEM-VBELN       P_DOCNO.
          CASE 'X'.
            WHEN p_EKKOGS_ITEM-TABLE       'EKKO'.
            WHEN p_VBRKGS_ITEM-TABLE       'VBRK'.
            WHEN p_VBAKGS_ITEM-TABLE       'VBAK'.
          ENDCASE.

          GS_ITEM-GV_ADDRESS1 GV_ADDRESS1.
          GS_ITEM-GV_ADDRESS2 GV_ADDRESS2.
          DELETE GT_ITEM WHERE VBELN P_DOCNO.
          APPEND GS_ITEM TO GT_ITEM.

        ENDIF.
      ENDIF.
    ENDIF.
 ELSE.
    DATADOC_NO TYPE VBRK-VBELN.

    CASE 'X'.
      WHEN p_EKKOSELECT SINGLE EBELN FROM EKKO INTO DOC_NO.
      WHEN p_VBRKSELECT SINGLE VBELN FROM VBRK INTO DOC_NO.
      WHEN p_VBAKSELECT SINGLE VBELN FROM VBAK INTO DOC_NO.
    ENDCASE.
    IF sy-subrc eq 0.
      MESSAGE 'NO COMPANY CODE FOUND' TYPE 'I' display like 'I' .
    ELSE.
      MESSAGE 'NO DATA' TYPE 'I' display like 'E'.
    ENDIF.
    P_DOCno DOC_NO.
  ENDIF.
ENDFORM.                    " F_PROCESS_DATA
*****************************************
*  PROCESS DATA END                     *
*****************************************



******************************************************
*  S T A R T - O F - S E L E C T I O N               *
******************************************************
START-OF-SELECTION.
 PERFORM F_PROCESS_DATA.
 IF GT_ITEM[] IS NOT INITIAL.
   call SCREEN 100.
 ENDIF.
END-OF-SELECTION.


MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'ZMARK'"<--- CUSTOMIZED GUI STATUS
*  SET TITLEBAR 'xxx'.
  PERFORM F_INIT_ALV.
ENDMODULE.                 " STATUS_0100  OUTPUT

MODULE USER_COMMAND_0100 INPUT.
  save_ok ok_code.
  clear ok_code.
  case save_ok.
    when 'BACK' OR 'CANCEL'.
        submit zmark VIA SELECTION-SCREEN WITH p_ekko     EQ p_ekko
                                          WITH p_DOCNO    eq p_DOCNO.
    when 'EXIT'.
      LEAVE PROGRAM.
    when 'F_BT_SEARCH'.
      IF LV_VBELN NE ''.
          p_DOCNO LV_VBELN.
          PERFORM F_PROCESS_DATA.
          LV_VBELN P_DOCno.
          CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
      ELSE.
          MESSAGE 'SEARCH FIELD IS BLANK' TYPE 'I' display like 'E'.
      ENDIF.
  endcase.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

FORM F_INIT_ALV.
  datalt_exclude type ui_functions.

  IF g_Custom_Container IS INITIAL.
    " Create CONTAINER object with reference to container name in the screen
    CREATE OBJECT g_Custom_Container
        EXPORTING CONTAINER_NAME g_Container.
    " Create GRID object with reference to parent name
    CREATE OBJECT g_Grid
        EXPORTING I_PARENT g_Custom_Container.
    PERFORM u_prepare_fieldcatalog.



    "****************************
    "  CELLTAB            start "
    "****************************
*-> Initially, set all checkbox cells editable.
    DATA:
    ls_celltab type lvc_s_styl,
    lt_celltab type lvc_t_styl,
    tp_iindex type i.
    ls_celltab-fieldname 'CHECKBOX'.
    ls_celltab-style cl_gui_alv_grid=>mc_style_enabled.

    loop at gt_item INTO GS_ITEM.
      tp_iindex sy-tabix.
      refresh lt_celltab.
      ls_celltab-fieldname 'CHECKBOX'.
      ls_celltab-style cl_gui_alv_grid=>mc_style_enabled.
      insert ls_celltab into table lt_celltab.
      gS_item-celltab[] lT_celltab[].
      modify GT_ITEM FROM GS_ITEM index tp_iindex.
    endloop.
    "****************************
    "  CELLTAB            END   "
    "****************************


    "****************************
    "  gs_layout settings start "
    "****************************
*    A Multiple columns, multiple rows with selection buttons.
*    B Simple selection, listbox, Single row/column
*    C Multiple rows without buttons
*    D Multiple rows with buttons and select all ICON
    gs_layout-sel_mode   'D'.        "SELECT ALL AT THE UPPER RIGHT
    gs_layout-ZEBRA      'X'.
    gs_layout-stylefname 'CELLTAB'.
    "gs_layout-edit = 'X'.             "Makes all Grid editable
    "****************************
    "  gs_layout settings end   "
    "****************************

    perform exclude_tb_functions changing lt_exclude.
    " SET_TABLE_FOR_FIRST_DISPLAY
    CALL METHOD g_Grid->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        is_layout             gs_layout
        it_toolbar_excluding  lt_exclude
      CHANGING
        it_fieldcatalog       gs_fieldcatalog
        IT_OUTTAB             gt_item" Data


************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
    CREATE OBJECT event_receiver.
    SET HANDLER event_receiver->handle_hotspot_click FOR g_Grid."cl_alv_grid.
    CREATE OBJECT e_object.

************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
************************************************************************
*Create object of the event class and setting handler for hotspot click
************************************************************************
  ELSE.
    CALL METHOD g_Grid->REFRESH_TABLE_DISPLAY.
  ENDIF.
ENDFORM.


form exclude_tb_functions changing pt_exclude type ui_functions.

*  data ls_exclude type ui_func.
*
*  ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
*  append ls_exclude to pt_exclude.
*  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
*  append ls_exclude to pt_exclude.

endform.                               " EXCLUDE_TB_FUNCTIONS


*NOTE:
*1. create gui status zmark
*   - assign cancel, back and exit
*2. create screen 100. copy into a file below and upload the screen 100
****************************************************************************
****************************************************************
*   THIS FILE IS GENERATED BY THE SCREEN PAINTER.              *
*   NEVER CHANGE IT MANUALLY, PLEASE !                         *
****************************************************************
*%_DYNPRO
*ZMARK_T
*0100
*700
*             40
*%_HEADER
*ZMARK_T                                 0100 0100     30112192 37  0  0 35141  0G E                              20150624173745
*%_DESCRIPTION
*Test result screen
*%_FIELDS
*SY_PROG  C CHAR   13 80  00  80  32  00    1   7     0   0   0     0           0   0               _____________
*GV_ADDRESS1  C CHAR  107 80  00  80  32  00    2   7     0   0   0     0           0   0               ___________________________________________________________________________________________________________
*GV_ADDRESS2  C CHAR  107 80  00  80  32  00    3   7     0   0   0     0           0   0               ___________________________________________________________________________________________________________
*C_ALV      108 00  00  00  30  00    4   6     0   0   0    22 U         1   1 101
*LV_VBELN C CHAR   25 80  00  80  00  00   27   6     0   0   0     0           0   0               _________________________
*BT_SEARCH    CHAR    6 00  00  00  30  00   27  34     0   0   0     0 P         0   0 102             Search
*                       F_BT_SEARCH  [bring this line up]
*P_EKKO C CHAR    1 80  00  80  00  00   28   6     0   0   0     0 A         0   0 103     G1  G1  G1  G1
*P_EKKO 0 CHAR    4 00  00  00  30  00   28   8     0   0   0     0 A         0   0 103     G1  G1  G1  G1  EKKO
*P_VBRK C CHAR    1 80  00  80  00  00   29   6     0   0   0     0 A         0   0 103     G1  G1  G1  G1
*P_VBRK 0 CHAR    4 00  00  00  30  00   29   8     0   0   0     0 A         0   0 103     G1  G1  G1  G1  VBRK
*P_VBAK C CHAR    1 80  00  80  00  00   30   6     0   0   0     0 A         0   0 103     G1  G1  G1  G1
*P_VBAK 0 CHAR    4 00  00  00  30  00   30   8     0   0   0     0 A         0   0 103     G1  G1  G1  G1  VBAK
*OK_CODE    CHAR   20 80  10  00  00  00  255   1 O   0   0   0     0           0   0               ____________________
*%_FLOWLOGIC
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*%_PARAMS
Read On 0 comments

message

Labels

NuffNang

Search google

Blog Archive

My Blog List

Twitter

Message

Followers