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 0 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(20) P_TCODE,
45(50) TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105) SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.



*Sorting the internal Table
sort jtab by OBJECT.
data : wf_txt(60) type c,
wf_smod type i ,
wf_badi type i ,
wf_object2(30) type C.
clear : wf_smod, wf_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,
2 'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105) SY-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,

2 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 + 1 .
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,
2 wa_tadir-OBJ_NAME hotspot on,
41 SY-VLINE ,
42 wf_txt,
105 SY-VLINE.
AT END OF object.
write : /(105) sy-ULINE.
ENDAT.


ENDLOOP.

WRITE:/(105) SY-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(8) EQ '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(500) TYPE C,                                 "<---CUSTOMIZED
          GV_ADDRESS2(500) TYPE 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       *
******************************************************
TABLES: T001, ADRC,
        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-SCREEN: END 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-VBELN. CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    WHEN 'VBRK'. SET PARAMETER ID 'VF'  FIELD GS_ITEM-VBELN. CALL TRANSACTION 'VF03'  AND SKIP FIRST SCREEN.
    WHEN 'VBAK'. SET PARAMETER ID 'AUN' FIELD GS_ITEM-VBELN. CALL 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 .
  CLEAR: LV_BUKRS, GS_ITEM.
  CASE 'X'.
    WHEN p_EKKO. SELECT SINGLE BUKRS    FROM EKKO INTO LV_BUKRS WHERE EBELN EQ p_DOCNO.
    WHEN p_VBRK. SELECT SINGLE BUKRS    FROM VBRK INTO LV_BUKRS WHERE VBELN EQ p_DOCNO.
    WHEN p_VBAK. SELECT 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.
          CLEAR: GV_ADDRESS1, GV_ADDRESS2.
              CONCATENATE: WA_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_EKKO. GS_ITEM-TABLE       = 'EKKO'.
            WHEN p_VBRK. GS_ITEM-TABLE       = 'VBRK'.
            WHEN p_VBAK. GS_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.
    DATA: DOC_NO TYPE VBRK-VBELN.

    CASE 'X'.
      WHEN p_EKKO. SELECT SINGLE EBELN FROM EKKO INTO DOC_NO.
      WHEN p_VBRK. SELECT SINGLE VBELN FROM VBRK INTO DOC_NO.
      WHEN p_VBAK. SELECT 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.
  data: lt_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

Express Information how to enable it for me23n email

12:32 AM
I was assign a print program for PO and what i did for the output type was to send auto PO to user and sender and information.
But what the functional requested more that is when the sender email has received he wants a pop up which is to say email have been sent to you.
So using the FM CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
and any error occured it will pop up in Send Express Information (pop up)

Configuration to be made in Shared office settings
- Tcode :- SO16
- Mail sy. grp
Select No Mail System Group
Read On 0 comments

Abap Classical report to PDF using spool and email

7:51 PM
REPORT YMARK_ASD.
*source : https://scn.sap.com/thread/879625
PARAMETER: p_email1 LIKE somlreci1-receiver,
           p_sender LIKE somlreci1-receiver,
           p_delspl  AS CHECKBOX.



*DATA DECLARATION
DATA: gd_recsize TYPE i.


*Spool IDs
TYPES: BEGIN OF t_tbtcp.
        INCLUDE STRUCTURE tbtcp.
TYPES: END OF t_tbtcp.
DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
      wa_tbtcp TYPE t_tbtcp.


*Job Runtime Parameters

DATA: gd_eventid LIKE tbtcm-eventid,
      gd_eventparm LIKE tbtcm-eventparm,
      gd_external_program_active LIKE tbtcm-xpgactive,
      gd_jobcount LIKE tbtcm-jobcount,
      gd_jobname LIKE tbtcm-jobname,
      gd_stepcount LIKE tbtcm-stepcount,
      gd_error    TYPE sy-subrc,
      gd_reciever TYPE sy-subrc.

DATA:  w_recsize TYPE i.

DATA: gd_subject   LIKE sodocchgi1-obj_descr,
      it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
      it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
      gd_sender_type     LIKE soextreci1-adr_typ,
      gd_attachment_desc TYPE so_obj_nam,
      gd_attachment_name TYPE so_obj_des.

*Spool to PDF conversions

DATA: gd_spool_nr LIKE tsp01-rqident,
      gd_destination LIKE rlgrap-filename,
      gd_bytecount LIKE tst01-dsize,
      gd_buffer TYPE string.

*Binary store for PDF

DATA: BEGIN OF it_pdf_output OCCURS 0.
        INCLUDE STRUCTURE tline.
DATA: END OF it_pdf_output.


CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
           c_no(1)     TYPE c   VALUE ' ',
           c_device(4) TYPE c   VALUE 'LOCL'.


START-OF-SELECTION.

do 10 times.
  WRITE 'Hello World'.
enddo  .
  new-page.
  commit work.
  new-page print off.


  IF sy-batch EQ 'X'.
    PERFORM get_job_details.
    PERFORM obtain_spool_id.
    PERFORM convert_spool_to_pdf.
    PERFORM process_email.

    if p_delspl EQ 'X'.
      PERFORM delete_spool.
    endif.

    IF sy-sysid = c_dev.
      wait up to 5 seconds.
      SUBMIT rsconn01 WITH mode   = 'INT'
                      WITH output = 'X'
                      AND RETURN.
    ENDIF.
  ELSE.
    SKIP.
    WRITE:/ 'Program must be executed in background in-order for spool',
            'request to be created.'.
  ENDIF.



*------------------------------------------------------------------------------------
*      FORM obtain_spool_id
*------------------------------------------------------------------------------------
FORM obtain_spool_id.
  CHECK NOT ( gd_jobname IS INITIAL ).
  CHECK NOT ( gd_jobcount IS INITIAL ).
  SELECT * FROM  tbtcp
                 INTO TABLE it_tbtcp
                 WHERE      jobname     = gd_jobname
                 AND        jobcount    = gd_jobcount
                 AND        stepcount   = gd_stepcount
                 AND        listident   <> '0000000000'
                 ORDER BY   jobname
                            jobcount
                            stepcount.

  READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
  IF sy-subrc = 0.
    message s004(zdd) with gd_spool_nr.
    gd_spool_nr = wa_tbtcp-listident.
    MESSAGE s004(zdd) WITH gd_spool_nr.
  ELSE.
    MESSAGE s005(zdd).
  ENDIF.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM get_job_details
*------------------------------------------------------------------------------------
FORM get_job_details.
*Get current job details

  CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
       IMPORTING
            eventid                 = gd_eventid
            eventparm               = gd_eventparm
            external_program_active = gd_external_program_active
            jobcount                = gd_jobcount
            jobname                 = gd_jobname
            stepcount               = gd_stepcount
       EXCEPTIONS
            no_runtime_info         = 1
            OTHERS                  = 2.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM convert_spool_to_pdf
*------------------------------------------------------------------------------------
FORM convert_spool_to_pdf.

  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
       EXPORTING
            src_spoolid              = gd_spool_nr
            no_dialog                = c_no
            dst_device               = c_device
       IMPORTING
            pdf_bytecount            = gd_bytecount
       TABLES
            pdf                      = it_pdf_output
       EXCEPTIONS
            err_no_abap_spooljob     = 1
            err_no_spooljob          = 2
            err_no_permission        = 3
            err_conv_not_possible    = 4
            err_bad_destdevice       = 5
            user_cancelled           = 6
            err_spoolerror           = 7
            err_temseerror           = 8
            err_btcjob_open_failed   = 9
            err_btcjob_submit_failed = 10
            err_btcjob_close_failed  = 11

            OTHERS                   = 12.



  CHECK sy-subrc = 0.

*Transfer the 132-long strings to 255-long strings

  LOOP AT it_pdf_output.
    TRANSLATE it_pdf_output USING ' ~'.
    CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
  ENDLOOP.

  TRANSLATE gd_buffer USING '~ '.

  DO.
    it_mess_att = gd_buffer.
    APPEND it_mess_att.
    SHIFT gd_buffer LEFT BY 255 PLACES.
    IF gd_buffer IS INITIAL.
      EXIT.
    ENDIF.
  ENDDO.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM process_email
*------------------------------------------------------------------------------------
FORM process_email.
  DESCRIBE TABLE it_mess_att LINES gd_recsize.
  CHECK gd_recsize > 0.
  PERFORM send_email USING p_email1.
* perform send_email using p_email2.
ENDFORM.

*------------------------------------------------------------------------------------
*      FORM send_email
*------------------------------------------------------------------------------------
* -->  p_email
*------------------------------------------------------------------------------------

FORM send_email USING p_email.
  CHECK NOT ( p_email IS INITIAL ).
  REFRESH it_mess_bod.

*Default subject matter
  gd_subject         = 'Subject'.
  gd_attachment_desc = 'Attachname'.
 CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.

  it_mess_bod        = 'Message Body text, line 1'.
  APPEND it_mess_bod.
  it_mess_bod        = 'Message Body text, line 2...'.
  APPEND it_mess_bod.


*If no sender specified - default blank
  IF p_sender EQ space.
    gd_sender_type  = space.
  ELSE.
    gd_sender_type  = 'INT'.
  ENDIF.

*Send file by email as .xls speadsheet
  PERFORM send_file_as_email_attachment
                               tables it_mess_bod
                                      it_mess_att
                                using p_email
                                      'Example .xls documnet attachment'
                                      'PDF'
                                      gd_attachment_name
                                      gd_attachment_desc
                                      p_sender
                                      gd_sender_type
                             changing gd_error
                                      gd_reciever.
ENDFORM.


*------------------------------------------------------------------------------------
*      FORM delete_spool
*------------------------------------------------------------------------------------
FORM delete_spool.
  DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.

  ld_spool_nr = gd_spool_nr.

  CHECK p_delspl <> c_no.
  CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
       EXPORTING
            spoolid = ld_spool_nr.
ENDFORM.

*&------------------------------------------------------------------------------------
*&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
*&------------------------------------------------------------------------------------
*      Send email
*------------------------------------------------------------------------------------
FORM send_file_as_email_attachment tables it_message
                                          it_attach
                                    using p_email
                                          p_mtitle
                                          p_format
                                          p_filename
                                          p_attdescription
                                          p_sender_address
                                          p_sender_addres_type
                                 changing p_error
                                          p_reciever.


  DATA: ld_error    TYPE sy-subrc,
        ld_reciever TYPE sy-subrc,
        ld_mtitle LIKE sodocchgi1-obj_descr,
        ld_email LIKE  somlreci1-receiver,
        ld_format TYPE  so_obj_tp ,
        ld_attdescription TYPE  so_obj_nam ,
        ld_attfilename TYPE  so_obj_des ,
        ld_sender_address LIKE  soextreci1-receiver,
        ld_sender_address_type LIKE  soextreci1-adr_typ,
        ld_receiver LIKE  sy-subrc.

data:   t_packing_list like sopcklsti1 occurs 0 with header line,
        t_contents like solisti1 occurs 0 with header line,
        t_receivers like somlreci1 occurs 0 with header line,
        t_attachment like solisti1 occurs 0 with header line,
        t_object_header like solisti1 occurs 0 with header line,
        w_cnt type i,
        w_sent_all(1) type c,
        w_doc_data like sodocchgi1.

  ld_email   = p_email.
  ld_mtitle = p_mtitle.
  ld_format              = p_format.
  ld_attdescription      = p_attdescription.
  ld_attfilename         = p_filename.
  ld_sender_address      = p_sender_address.
  ld_sender_address_type = p_sender_addres_type.


*Fill the document data.
  w_doc_data-doc_size = 1.


*Populate the subject/generic message attributes
  w_doc_data-obj_langu = sy-langu.
  w_doc_data-obj_name  = 'SAPRPT'.
  w_doc_data-obj_descr = ld_mtitle .
  w_doc_data-sensitivty = 'F'.

*Fill the document data and get size of attachment
  CLEAR w_doc_data.
  READ TABLE it_attach INDEX w_cnt.
  w_doc_data-doc_size =
     ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
  w_doc_data-obj_langu  = sy-langu.
  w_doc_data-obj_name   = 'SAPRPT'.
  w_doc_data-obj_descr  = ld_mtitle.
  w_doc_data-sensitivty = 'F'.
  CLEAR t_attachment.
  REFRESH t_attachment.
  t_attachment[] = it_attach[].


*Describe the body of the message
  CLEAR t_packing_list.
  REFRESH t_packing_list.
  t_packing_list-transf_bin = space.
  t_packing_list-head_start = 1.
  t_packing_list-head_num = 0.
  t_packing_list-body_start = 1.
  DESCRIBE TABLE it_message LINES t_packing_list-body_num.
  t_packing_list-doc_type = 'RAW'.
  APPEND t_packing_list.

*Create attachment notification
  t_packing_list-transf_bin = 'X'.
  t_packing_list-head_start = 1.
  t_packing_list-head_num   = 1.
  t_packing_list-body_start = 1.

  DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
  t_packing_list-doc_type   =  ld_format.
  t_packing_list-obj_descr  =  ld_attdescription.
  t_packing_list-obj_name   =  ld_attfilename.
  t_packing_list-doc_size   =  t_packing_list-body_num * 255.
  APPEND t_packing_list.

*Add the recipients email address

  CLEAR t_receivers.
  REFRESH t_receivers.
  t_receivers-receiver = ld_email.
  t_receivers-rec_type = 'U'.
  t_receivers-com_type = 'INT'.
  t_receivers-notif_del = 'X'.
  t_receivers-notif_ndel = 'X'.
  APPEND t_receivers.

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
       EXPORTING
            document_data              = w_doc_data
            put_in_outbox              = 'X'
            sender_address             = ld_sender_address
            sender_address_type        = ld_sender_address_type
            commit_work                = 'X'
       IMPORTING
            sent_to_all                = w_sent_all
       TABLES
            packing_list               = t_packing_list
            contents_bin               = t_attachment
            contents_txt               = it_message
            receivers                  = t_receivers
       EXCEPTIONS
            too_many_receivers         = 1
            document_not_sent          = 2
            document_type_not_exist    = 3
            operation_no_authorization = 4
            parameter_error            = 5
            x_error                    = 6
            enqueue_error              = 7
            OTHERS                     = 8.


*Populate zerror return code
  ld_error = sy-subrc.


*Populate zreceiver return code
  LOOP AT t_receivers.
    ld_receiver = t_receivers-retrn_code.
  ENDLOOP.
ENDFORM.
Read On 0 comments

message

Labels

NuffNang

Search google

Blog Archive

My Blog List

Twitter

Message

Followers