Showing posts with label Abap. Show all posts

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: 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

TO CREATE A BUTTON ON THE TOP OF AN ABAP PROGRAM WITHOUT USING gui STATUS

8:00 PM
REPORT  ZTEST_DOWNLOAD_TEMP.
*----------------------------------------------------------------------*
*  TABLES AND VARIABLES
*----------------------------------------------------------------------*
TABLESsscrfields"+ch001

TYPES:BEGIN OF T_DATATAB,
      WERKS(8TYPE C,
      MATNR(50TYPE C,"material no
      CHARG(50TYPE C,"batch
      VALUE(50TYPE C,"batch grade value
      END OF T_DATATAB.


*----------------------------------------------------------------------*
*  SELECTION-SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK RAD1 WITH FRAME TITLE TEXT-T01.

PARAMETERSP_FILE TYPE  RLGRAP-FILENAME.

SELECTION-SCREEN END OF BLOCK RAD1.
SELECTION-SCREEN BEGIN OF LINE.
* Add buttons to application toolbar
SELECTION-SCREEN FUNCTION KEY 1.  "Will have a function code of 'FC01'
SELECTION-SCREEN END OF LINE.
PARAMETERp_ucomm LIKE sy-ucomm NO-DISPLAY.


*----------------------------------------------------------------------*
*  INITIALIZATION
*----------------------------------------------------------------------*

*+ch001 additional button to download template start
INITIALIZATION.

* Add displayed text string to buttons
  MOVE 'Download Template' TO sscrfields-functxt_01.


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

AT SELECTION-SCREEN OUTPUT.

  IF p_ucomm 'BUTN1'.
    PERFORM download_template1.
  ENDIF.
*+ch001 additional button to download template end

*----------------------------------------------------------------------*
*  START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*
*END-OF-SELECTION                                                      *
*----------------------------------------------------------------------*
END-OF-SELECTION.





*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD_TEMPLATE1 ++ch001
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM download_template1 .

*TYPES:BEGIN OF T_DATATAB,
*      WERKS(8) TYPE C,
*      MATNR(50) TYPE C,"material no
*      CHARG(50) TYPE C,"batch
*      VALUE(50) TYPE C,"batch grade value
*      END OF T_DATATAB.

  DATAt_templt type T_DATATAB OCCURS WITH HEADER LINE.

  REFRESH t_templt.
  t_templt-werks =  'Plant'.
  t_templt-matnr  'Material no'.
  t_templt-charg  =  'Batch'.
  t_templt-value 'batch grade value'.

  APPEND t_templt.
  CLEAR t_templt.

  DATAlv_rc         TYPE i,
        lt_filetable  TYPE filetable.

  DATAv_path              TYPE string.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      window_title      'Please Select File'
      default_extension 'XLS'
    CHANGING
      file_table        lt_filetable
      rc                lv_rc.
  IF sy-subrc <> 0.
    MESSAGE 'Can not get file path' TYPE 'E'.
  ELSEIF lv_rc 1.
    READ TABLE lt_filetable INTO v_path INDEX 1.
  ENDIF.

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
*     BIN_FILESIZE            =
      filename                v_path
      filetype                'DAT'
      codepage                '8400'
    TABLES
      data_tab                t_templt
*     FIELDNAMES              =
    EXCEPTIONS
      file_write_error        1
      no_batch                2
      gui_refuse_filetransfer 3
      invalid_type            4
      no_authority            5
      unknown_error           6
      header_not_allowed      7
      separator_not_allowed   8
      filesize_not_allowed    9
      header_too_long         10
      dp_error_create         11
      dp_error_send           12
      dp_error_write          13
      unknown_dp_error        14
      access_denied           15
      dp_out_of_memory        16
      disk_full               17
      dp_timeout              18
      file_not_found          19
      dataprovider_exception  20
      control_flush_error     21
      OTHERS                  22.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " DOWNLOAD_TEMPLATE1
Read On 0 comments

Purchase Order, output type,

12:46 AM
Purchase order, print program.
Prereq : create print program and config in NACE
When you plan to do some coding after your repeat the output
1. send email to vendor
2. do some coding as soon as you push the output again the codes below are important

    IF nast-nacha '5'"EXTERNAL SEND + TCODE + AND WHEN SAVING
      IF sy-tcode 'ME9F'  AND sy-xcode '9AUS' OR
         sy-tcode 'ME21N' AND sy-ucomm EQ space OR
         sy-tcode 'ME22N' AND sy-ucomm EQ space OR
         sy-tcode 'ME23N' AND sy-ucomm EQ space OR
         sy-tcode 'ME28'  AND sy-ucomm EQ space OR
         sy-tcode 'ME29N' AND sy-ucomm EQ space ).
Read On 0 comments

Default value for SELECT-OPTION

7:57 PM
To append a default value for selection-screen.
2 ways.
To code it after in the event

INITIALIZATION.
RSK_RANGE-SIGN = 'I'.
RSK_RANGE-OPTION = 'BT'.
RSK_RANGE-LOW = '00'.
RSK_RANGE-HIGH = '99'.
APPEND RSK_RANGE.
or

SELECT-OPTIONSS_DATE  FOR SY-DATUM OBLIGATORY  NO-EXTENSION
                DEFAULT '20121101'
                     TO '20121231'
                 OPTION  BT
                   SIGN  I
.
Read On 0 comments

Messaging th_popup with the capability to detect who is online (protoype)

3:00 AM
Ever wanted to send  message and checking your friends online on that particular day?

The coding below is a prototype which only detect on a particular day the system user online but not the time which needs to be enhanced.

Which uses the search help technology which is similar to matchcode.

-----------------------------------------------------------------------------------------------
REPORT Z_send_message.

PARAMETERS CLIENT   LIKE  SY-MANDT.
PARAMETERS USER     LIKE  SY-UNAME.
PARAMETERS MESSAGE  LIKE  SM04DIC-POPUPMSG.
PARAMETERS MSG_LEN  LIKE  SY-INDEX."MESSAGE_LEN  LIKE  SY-INDEX.
PARAMETERS CUT_BLKS LIKE  SY-LANGU."CUT_BLANKS LIKE  SY-LANGU.

INITIALIZATION.

CLIENT   =  SY-MANDT.
USER     =  SY-UNAME.
MESSAGE  =  'TYPE your message here'.
MSG_LEN  =  SY-INDEX."MESSAGE_LEN  LIKE  SY-INDEX.
CUT_BLKS =  SY-LANGU."CUT_BLANKS LIKE  SY-LANGU.

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

START-OF-SELECTION.
      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
      ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  F_SEARCHHELP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_SEARCHHELP .
TABLESusr02.
data:
     begin of t_BNAME occurs 0,
           BNAME like USR02-BNAME,
           "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 FROM usr02 INTO t_BNAME
                     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
Read On 0 comments

message

Labels

NuffNang

Search google

Blog Archive

My Blog List

Twitter

Message

Followers