Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9564

Re: handle table control in BDC

$
0
0

Hi Vikash ,

 

Try this code for XK01 Table Control.

 

*include for dispaying icons in error log

INCLUDE <icon>.

*Declaration of structures

*Structure of the file to be uploaded

TYPES:BEGIN OF x_struct,

      bukrs TYPE rf02k-bukrs,                      "Company Code

      ekorg TYPE rf02k-ekorg,                      "Purchasing Organization

      ktokk TYPE rf02k-ktokk,                      "Vendor account group

      title_medi TYPE sza1_d0100-title_medi,       "Title text

      name1 TYPE addr1_data-name1,                 "Name 1

      name2 TYPE addr1_data-name2,                 "Name 2

      name3 TYPE addr1_data-name3,                 "Name 3

      name4 TYPE addr1_data-name4,                 "Name 4

      sort1 TYPE addr1_data-sort1,                 "Search Term 1

      street TYPE addr1_data-street,               "Street

      house_num1 TYPE addr1_data-house_num1,       "House Number

      post_code1 TYPE addr1_data-post_code1,       "City postal code

      city1 TYPE addr1_data-city1,                 "City

      country TYPE addr1_data-country,             "Country Key

      region TYPE addr1_data-region,               "Region (State, Province, County)

      po_box TYPE addr1_data-po_box,               "PO Box

      post_code2 TYPE addr1_data-post_code2,       "PO Box postal code

      post_code3 TYPE addr1_data-post_code3,       "Company postal code (for large customers)

      END OF x_struct.

 

 

*Structure to capture the messages

TYPES: BEGIN OF x_messages,

       msgtyp(1) TYPE c,

       bukrs TYPE rf02k-bukrs,                     "Company Code

       ekorg TYPE rf02k-ekorg,                     "Purchasing Organization

       ktokk TYPE rf02k-ktokk,                     "Vendor account group

       message(120) TYPE c,

       END OF x_messages.

 

DATA: it_messages  TYPE STANDARD TABLE OF x_messages,

      wa_messages TYPE x_messages.

 

*Internal table and work area which has same structure as file

DATA:it_file TYPE STANDARD TABLE OF x_struct.

DATA:wa_file TYPE x_struct.

 

 

*internal table for BDC

DATA: it_bdcdata TYPE STANDARD TABLE OF bdcdata.

DATA: wa_bdcdata TYPE bdcdata.

 

*Internal table for capturing messages

DATA:it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll,

     wa_msgtab TYPE bdcmsgcoll.

 

DATA:it_excel TYPE STANDARD TABLE OF alsmex_tabline,

     wa_excel TYPE alsmex_tabline.

 

DATA: x_ctuprms TYPE ctu_params.

DATA:con(50) TYPE c.

DATA:con1(50) TYPE c.

 

*selection screen

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

*Enter file name on presentation server

PARAMETERS:  p_file TYPE rlgrap-filename OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

 

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

 

*subroutine for F4 help

  PERFORM browse.

 

START-OF-SELECTION.

 

*subroutine to upload the file

  PERFORM upload.

 

*subroutine for display parameters

  PERFORM fill_params.

 

*subroutine to fill BDC internal table

  PERFORM transact.

 

&----

*&      Form  fill_params

&----

      text

----

-->  p1        text

<--  p2        text

----

FORM fill_params .

  x_ctuprms-dismode = 'N'.

  x_ctuprms-updmode = 'A'.

  x_ctuprms-defsize = 'X'.

ENDFORM.                    " fill_params

&----

*&      Form  bdc_dynpro

&----

      text

----

     -->P_0367   text

     -->P_0368   text

----

FORM bdc_dynpro  USING  program dynpro.                     "#EC *

  CLEAR wa_bdcdata.

  wa_bdcdata-program  = program.

  wa_bdcdata-dynpro   = dynpro.

  wa_bdcdata-dynbegin = 'X'.

  APPEND wa_bdcdata TO it_bdcdata.

 

ENDFORM.                    " bdc_dynpro

&----

*&      Form  bdc_field

&----

      text

----

     -->P_0447   text

     -->P_0448   text

----

FORM bdc_field  USING  fnam fval.                           "#EC *

 

  CLEAR wa_bdcdata.

 

  wa_bdcdata-fnam = fnam.

  wa_bdcdata-fval = fval.

  APPEND wa_bdcdata TO it_bdcdata.

 

ENDFORM.                    " bdc_field

&----

*&      Form  collect_messages

&----

      text

----

-->  p1        text

<--  p2        text

----

FORM collect_messages .

  DATA: w_msg(100).

 

  LOOP AT it_msgtab INTO wa_msgtab.

 

    CALL FUNCTION 'FORMAT_MESSAGE'

      EXPORTING

        id        = wa_msgtab-msgid

        lang      = wa_msgtab-msgspra

        no        = wa_msgtab-msgnr

        v1        = wa_msgtab-msgv1

        v2        = wa_msgtab-msgv2

        v3        = wa_msgtab-msgv3

      IMPORTING

        msg       = w_msg

      EXCEPTIONS

        not_found = 1

        OTHERS    = 2.

    IF sy-subrc <> 0.

      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

 

    CONDENSE w_msg.

    CLEAR wa_messages.

 

    wa_messages-msgtyp = wa_msgtab-msgtyp.

    wa_messages-message = w_msg.

    wa_messages-bukrs = wa_file-bukrs .

    wa_messages-ekorg = wa_file-ekorg.

    wa_messages-ktokk = wa_file-ktokk.

 

    APPEND wa_messages TO it_messages .

  ENDLOOP.

  REFRESH it_msgtab.

ENDFORM.                    " collect_messages

&----

*&      Form  write_messages

&----

      text

----

-->  p1        text

<--  p2        text

----

FORM write_messages .

  LOOP AT it_messages INTO wa_messages .

 

    WRITE:/1 sy-vline.

 

    IF wa_messages-msgtyp = 'S'.

      WRITE: 5 icon_green_light.

    ELSEIF wa_messages-msgtyp = 'E'.

      WRITE: 5 icon_red_light.

    ELSEIF wa_messages-msgtyp = 'W'.

      WRITE: 5 icon_yellow_light.

    ENDIF.

    WRITE: 15 sy-vline.

    WRITE : 16 wa_messages-bukrs .

    WRITE: 30 sy-vline.

    WRITE : 32 wa_messages-ekorg .

    WRITE: 48 sy-vline.

    WRITE : 49 wa_messages-message .

    WRITE: 170 sy-vline.

 

    WRITE:/1 sy-vline.

    ULINE 1(180).

 

  ENDLOOP.

ENDFORM.                    " write_messages

&----

*&      Form  browse

&----

      text

----

-->  p1        text

<--  p2        text

----

FORM browse .

*Function which enables the user to browse the files on hard disk

  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

    EXPORTING

      program_name  = syst-repid

      static        = 'X'

    CHANGING

      file_name     = p_file

    EXCEPTIONS

      mask_too_long = 1

      OTHERS        = 2.

 

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

ENDFORM.                    " browse

&----

*&      Form  upload

&----

      text

----

-->  p1        text

<--  p2        text

----

FORM upload .

*Function to upload excel file

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

    EXPORTING

      filename                = p_file

      i_begin_col             = 1

      i_begin_row             = 8

      i_end_col               = 18

      i_end_row               = 9999

    TABLES

      intern                  = it_excel

    EXCEPTIONS

      inconsistent_parameters = 1

      upload_ole              = 2

      OTHERS                  = 3.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

 

  CLEAR wa_file.

 

*Read the file row-wise

  LOOP AT it_excel INTO wa_excel.

    CASE wa_excel-col .

*Read Company Code

      WHEN '1'.

        wa_file-bukrs = wa_excel-value.

*Read Purchasing Organization

      WHEN '2'.

        wa_file-ekorg = wa_excel-value.

*Read Vendor account group

      WHEN '3'.

        wa_file-ktokk = wa_excel-value.

 

 

*Read Title

      WHEN '4'.

        wa_file-title_medi = wa_excel-value.

*Read Name 1

      WHEN '5'.

        wa_file-name1 = wa_excel-value.

*Read Name 2

      WHEN '6'.

        wa_file-name2 = wa_excel-value.

*Read Name 3

      WHEN '7'.

        wa_file-name3 = wa_excel-value.

*Read Name 4

      WHEN '8'.

        wa_file-name4 = wa_excel-value.

 

 

 

*Read Search Term 1

      WHEN '9'.

        IF STRLEN( wa_excel-value ) = 1.

          CONCATENATE '00' wa_excel-value INTO con.

          wa_file-sort1 = con.

        ELSEIF STRLEN( wa_excel-value ) = 2.

          CONCATENATE '0' wa_excel-value INTO con1.

          wa_file-sort1 = con1.

        ELSE.

          wa_file-sort1 = wa_excel-value.

        ENDIF.

 

 

*Read Street

      WHEN '10'.

        wa_file-street = wa_excel-value.

*Read house no

      WHEN '11'.

        wa_file-house_num1 = wa_excel-value.

*Read city postal code

      WHEN '12'.

        wa_file-post_code1 = wa_excel-value.

*Read city

      WHEN '13'.

        wa_file-city1 = wa_excel-value.

*Read country

      WHEN '14'.

        wa_file-country = wa_excel-value.

*Read Region (State, Province, County)

      WHEN '15'.

        wa_file-region = wa_excel-value.

 

 

 

 

*Read PO Box

      WHEN '16'.

        wa_file-po_box = wa_excel-value.

*Read PO Box postal code

      WHEN '17'.

        wa_file-post_code2 = wa_excel-value.

*Read Company postal code (for large customers)

      WHEN '18'.

        wa_file-post_code3 = wa_excel-value.

 

    ENDCASE.

 

    AT END OF row.

      CONDENSE:wa_file-bukrs,wa_file-ekorg,wa_file-ktokk,wa_file-title_medi,

               wa_file-name1,wa_file-name2,wa_file-name3,wa_file-name4,

               wa_file-sort1,wa_file-street,wa_file-house_num1,

               wa_file-post_code1,wa_file-city1,wa_file-country,wa_file-region,

               wa_file-po_box,wa_file-post_code2,wa_file-post_code3.

 

      APPEND wa_file TO it_file.

      CLEAR wa_file.

    ENDAT .

  ENDLOOP.

 

ENDFORM.                    " upload

&----

*&      Form  transact

&----

      text

----

-->  p1        text

<--  p2        text

----

FORM transact .

  LOOP AT it_file INTO wa_file.

 

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0100'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02K-KTOKK'.

 

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'RF02K-BUKRS'

                                  wa_file-bukrs.

    PERFORM bdc_field       USING 'RF02K-EKORG'

                                  wa_file-ekorg.

    PERFORM bdc_field       USING 'RF02K-KTOKK'

                                  wa_file-ktokk.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0110'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-REGIO'.

 

 

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '=PF03'.

    PERFORM bdc_field       USING 'LFA1-ANRED'

                                  wa_file-title_medi.

 

    PERFORM bdc_field       USING 'LFA1-NAME1'

                                  wa_file-name1.

 

    PERFORM bdc_field       USING 'LFA1-NAME2'

                                  wa_file-name2.

 

    PERFORM bdc_field       USING 'LFA1-NAME3'

                                  wa_file-name3.

    PERFORM bdc_field       USING 'LFA1-NAME4'

                                  wa_file-name4.

 

 

    PERFORM bdc_field       USING 'LFA1-SORTL'

                                  wa_file-sort1.

 

 

 

    PERFORM bdc_field       USING 'LFA1-STRAS'

                                  wa_file-street.

    PERFORM bdc_field       USING 'LFA1-PFORT'

                                  wa_file-house_num1.

 

    PERFORM bdc_field       USING 'LFA1-ORT01'

                                  wa_file-post_code1.

    PERFORM bdc_field       USING 'LFA1-ORT02'

                                  wa_file-city1.

 

    PERFORM bdc_field       USING 'LFA1-LAND1'

                                  wa_file-country.

    PERFORM bdc_field       USING 'LFA1-REGIO'

                                  wa_file-region.

 

 

 

 

    PERFORM bdc_field       USING 'LFA1-PFACH'

                                  wa_file-po_box.

    PERFORM bdc_field       USING 'LFA1-PSTL2'

                                  wa_file-post_code2.

    PERFORM bdc_field       USING 'LFA1-PSTLZ'

                                  wa_file-post_code2.

 

 

 

    PERFORM bdc_dynpro      USING 'SAPLSPO1' '0100'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '=YES'.

 

    CALL TRANSACTION 'XK01'

                         USING it_bdcdata

                         OPTIONS FROM x_ctuprms

                         MESSAGES INTO it_msgtab.

 

    REFRESH it_bdcdata.

    PERFORM collect_messages.

    CLEAR wa_file.

  ENDLOOP.

 

  PERFORM write_messages.

ENDFORM.                    " transact

 

Regards ,

satish


Viewing all articles
Browse latest Browse all 9564

Trending Articles