You are on page 1of 10

REPORT zbdc_xd01_final NO STANDARD PAGE HEADING LINE-SIZE 255.

TABLES: kna1, knvk, knvv. *include bdcrecx1. * *start-of-selection. * *perform open_group. TYPES: BEGIN OF ty_header, kunnr(16), "Customer Number bukrs(4), "Company Code vkorg(4), "Sales Organization vtweg(2), "Distribution Channel spart(2), "Division ktokd(4), "Customer Account Group anred(15), "Title name1(35), "Name 1 sortl(10), "SEARCH name2(35), "Name 2 stras(35), "street ort01(35), "CITY pstlz(10), "Postal Code land1(3), "Country Key regio(3), "Region spras(1), "Language Key akont(10), "Reconciliation Account in General Ledger zuawa(3), "SORT KEY zterm(4), " Payment Key lprio(2), "Delivery Priority vsbed(2), "Shipping Conditions * antlf(1), "Maximum Number of Partial Deliveries Allowed Per Item sl_no(3), "SERIAL NO END OF ty_header. TYPES : BEGIN OF ty_item, sl_no(3), "SERIAL NO * taxkd(1), " Tax classification for customer namev(35), "CONTACT PARTNER First name name1(35), telf1(16), "First telephone number END OF ty_item.

"NAME 1

TYPES : BEGIN OF ty_item1, sl_no(3), "SERIAL NO namev(35), "CONTACT PARTNER First name name1(35), telf1(16), "First telephone number taxkd1(1), " Tax classification for customer taxkd2(1), " Tax classification for customer * namev(35), "CONTACT PARTNER First name * name1(35), * telf1(16), "First telephone number END OF ty_item1. DATA:it_header TYPE STANDARD TABLE OF ty_header, wa_header TYPE ty_header, it_item TYPE STANDARD TABLE OF ty_item, wa_item TYPE ty_item, it_item1 TYPE STANDARD TABLE OF ty_item1, wa_item1 TYPE ty_item1.

"NAME 1

"NAME 1

DATA: it_excel TYPE STANDARD TABLE OF alsmex_tabline, w_excel TYPE alsmex_tabline. DATA : index TYPE i, msg TYPE string, flag TYPE char1, temp TYPE string, cnt(2) TYPE n, cn(2) TYPE n, fmore TYPE char1. FIELD-SYMBOLS: <fs>. *----------------------------------------------------------------------* * data definition FOR BDC DATA *----------------------------------------------------------------------* * Batchinputdata of single transaction DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE. * messages of call transaction DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE. SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001. PARAMETERS:p_path LIKE rlgrap-filename OBLIGATORY, p_srow TYPE i OBLIGATORY, p_erow TYPE i OBLIGATORY. SELECTION-SCREEN SKIP 1. PARAMETERS p_mode LIKE ctu_params-dismode OBLIGATORY. SELECTION-SCREEN END OF BLOCK blk. INITIALIZATION. p_srow = 2. p_erow = 2. p_mode = 'A'.

* At Selection-Screen event AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path. CALL FUNCTION 'F4_FILENAME' IMPORTING file_name = p_path. START-OF-SELECTION. PERFORM get_excel_data. PERFORM call_bapi. *&---------------------------------------------------------------------* *& Form GET_EXCEL_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM get_excel_data . CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_path i_begin_col = 1 i_begin_row = p_srow i_end_col = 22 i_end_row = p_erow TABLES intern = it_excel. IF sy-subrc NE 0. MESSAGE 'Error occur in reading the Excel file' TYPE 'I'. STOP. ENDIF. LOOP AT it_excel INTO w_excel. index = w_excel-col. ASSIGN COMPONENT index OF STRUCTURE <fs> = w_excel-value. AT END OF row. APPEND wa_header TO it_header. CLEAR wa_header. ENDAT. ENDLOOP. CLEAR it_excel. REFRESH it_excel. ***************************************************************************** ************ *********** FOR IT_ITEM******************************************************

wa_header TO <fs>.

************ ***************************************************************************** ************ CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_path i_begin_col = 22 i_begin_row = p_srow i_end_col = 25 i_end_row = p_erow TABLES intern = it_excel. IF sy-subrc NE 0. MESSAGE 'Error occur in reading the Excel file' TYPE 'I'. STOP. ENDIF. LOOP AT it_excel INTO w_excel. index = w_excel-col. ASSIGN COMPONENT index OF STRUCTURE wa_item TO <fs>. <fs> = w_excel-value. AT END OF row. APPEND wa_item TO it_item. CLEAR wa_item. ENDAT. ENDLOOP. CLEAR it_excel. REFRESH it_excel. ***************************************************************************** ****************** ****************************IT_ITEM1***************************************** ***************** CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_path i_begin_col = 22 i_begin_row = p_srow i_end_col = 27 i_end_row = p_erow TABLES intern = it_excel. IF sy-subrc NE 0. MESSAGE 'Error occur in reading the Excel file' TYPE 'I'. STOP. ENDIF. LOOP AT it_excel INTO w_excel. index = w_excel-col.

ASSIGN COMPONENT index OF STRUCTURE wa_item1 TO <fs>. <fs> = w_excel-value. AT END OF row. APPEND wa_item1 TO it_item1. CLEAR wa_item1. ENDAT. ENDLOOP. CLEAR it_excel. REFRESH it_excel. ENDFORM. " GET_EXCEL_DATA

*perform bdc_transaction using 'XD01'. * *perform close_group. *&---------------------------------------------------------------------* *& Form CALL_BAPI *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM call_bapi . DATA: t1 TYPE bdcdata-fnam, t TYPE bdcdata-fnam. DELETE ADJACENT DUPLICATES FROM it_header COMPARING sl_no. DELETE ADJACENT DUPLICATES FROM it_item COMPARING sl_no . * DELETE ADJACENT DUPLICATES FROM it_item1 COMPARING ALL FIELDS . LOOP AT it_header INTO wa_header. REFRESH: bdcdata, messtab.

PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field

USING 'SAPMF02D' '0100'. USING 'BDC_CURSOR' 'RF02D-KTOKD'. USING 'BDC_OKCODE' '/00'. USING 'RF02D-KUNNR' wa_header-kunnr. USING 'RF02D-BUKRS' wa_header-bukrs. USING 'RF02D-VKORG' wa_header-vkorg. USING 'RF02D-VTWEG' wa_header-vtweg.

PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field

USING 'RF02D-SPART' wa_header-spart. USING 'RF02D-KTOKD' wa_header-ktokd. USING 'SAPMF02D' '0110'. USING 'BDC_CURSOR' 'KNA1-REGIO'. USING 'BDC_OKCODE' '/00'. USING 'KNA1-ANRED' wa_header-anred. USING 'KNA1-NAME1' wa_header-name1. USING 'KNA1-SORTL' wa_header-sortl. USING 'KNA1-NAME2' wa_header-name2. USING 'KNA1-STRAS' wa_header-stras. USING 'KNA1-ORT01' wa_header-ort01. USING 'KNA1-PSTLZ' wa_header-pstlz. USING 'KNA1-LAND1' wa_header-land1. USING 'KNA1-REGIO' wa_header-regio. USING 'KNA1-SPRAS' wa_header-spras. USING 'SAPMF02D' '0120'. USING 'BDC_CURSOR' 'KNA1-LIFNR'. USING 'BDC_OKCODE' '/00'. USING 'SAPMF02D' '0125'. USING 'BDC_CURSOR' 'KNA1-NIELS'. USING 'BDC_OKCODE' '/00'. USING 'SAPMF02D' '0130'. USING 'BDC_CURSOR' 'KNBK-BANKS(01)'. USING 'BDC_OKCODE' '=ENTR'. USING 'SAPMF02D' '0340'. USING 'BDC_CURSOR' 'RF02D-KUNNR'. USING 'BDC_OKCODE' '=ENTR'.

PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field

USING 'SAPMF02D' '0370'. USING 'BDC_CURSOR' 'RF02D-KUNNR'. USING 'BDC_OKCODE' '=ENTR'. USING 'KNA1-CIVVE' 'X'.

cn = 1. LOOP AT it_item INTO wa_item WHERE sl_no = wa_header-sl_no. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = cn IMPORTING output = cn. USING 'SAPMF02D' '0360'. USING 'BDC_CURSOR' 'KNVK-TELF1(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'. CONCATENATE 'KNVK-NAMEV(' cn ')' INTO t. PERFORM bdc_field USING t "'KNVK-NAMEV(01)' wa_item-namev. CLEAR t. CONCATENATE 'KNVK-NAME1(' cn ')' INTO t. PERFORM bdc_field USING t "'KNVK-NAME1(01)' wa_item-name1. CLEAR t. CONCATENATE 'KNVK-TELF1(' cn ')' INTO t. PERFORM bdc_field USING t "'KNVK-TELF1(01)' wa_item-telf1. **perform bdc_field using 'KNVK-NAMEV(01)' ** 'TEST CONTACT'. **perform bdc_field using 'KNVK-NAME1(01)' ** 'Ram'. **perform bdc_field using 'KNVK-TELF1(01)' ** '0000000009'. PERFORM bdc_dynpro USING 'SAPMF02D' '0360'. PERFORM bdc_field USING 'BDC_CURSOR' 'KNVK-NAMEV(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'. cn = cn + 1. ENDLOOP. PERFORM bdc_dynpro PERFORM bdc_field USING 'SAPMF02D' '0210'. USING 'BDC_CURSOR' 'KNB1-AKONT'. PERFORM bdc_dynpro PERFORM bdc_field

PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field

USING 'BDC_OKCODE' '/00'. USING 'KNB1-AKONT' wa_header-akont. USING 'KNB1-ZUAWA' wa_header-zuawa. USING 'SAPMF02D' '0215'. USING 'BDC_CURSOR' 'KNB1-ZTERM'. USING 'BDC_OKCODE' '/00'. USING 'KNB1-ZTERM' wa_header-zterm. USING 'SAPMF02D' '0220'. USING 'BDC_CURSOR' 'KNB5-MAHNA'. USING 'BDC_OKCODE' '/00'. USING 'SAPMF02D' '0230'. USING 'BDC_CURSOR' 'KNB1-VRSNR'. USING 'BDC_OKCODE' '/00'. USING 'SAPMF02D' '0610'. USING 'BDC_OKCODE' '/00'. USING 'BDC_CURSOR' 'RF02D-KUNNR'. USING 'SAPMF02D' '0310'. USING 'BDC_CURSOR' 'KNVV-BEGRU'. USING 'BDC_OKCODE' '/00'. USING 'SAPMF02D' '0315'. USING 'BDC_CURSOR' 'KNVV-VSBED'. USING 'BDC_OKCODE' '/00'. USING 'KNVV-LPRIO' '1'. USING 'KNVV-KZAZU' 'X'. USING 'KNVV-VSBED' '01'. USING 'KNVV-ANTLF' '9'.

PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field PERFORM bdc_field

cnt = 1.

LOOP AT it_item1 INTO wa_item1 WHERE sl_no = wa_header-sl_no. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = cnt IMPORTING output = cnt. CONCATENATE 'KNVI-TAXKD( ' cnt ')' INTO t1. PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field USING 'SAPMF02D' '1350'. USING 'BDC_CURSOR' 'KNVI-TAXKD(02)'. USING 'BDC_OKCODE' '=ENTR'. USING t1"'KNVI-TAXKD(01)' wa_item1-taxkd1.

PERFORM bdc_field CLEAR t1. * PERFORM bdc_field * ENDIF. cnt = cnt + 1. ENDLOOP. CLEAR t1. PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field * * cnt = cnt + 1. ENDLOOP. PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field

" '1'.

USING 'KNVI-TAXKD(02)' wa_item1-taxkd2.

"'1'.

USING 'SAPMF02D' '1350'. USING 'BDC_CURSOR' 'RF02D-KUNNR'. USING 'BDC_OKCODE' '=ENTR'.

USING 'SAPMF02D' '0324'. USING 'BDC_CURSOR' 'KNVP-PARVW(01)'. USING 'BDC_OKCODE' '=ENTR'.

CALL TRANSACTION 'XD01' USING bdcdata MODE p_mode MESSAGES INTO messtab. LOOP AT messtab. IF messtab-msgtyp = 'E' OR messtab-msgtyp = 'S'. CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING id = messtab-msgid lang = '-D' no = messtab-msgnr v1 = messtab-msgv1

* *

v2 = messtab-msgv2 v3 = messtab-msgv3 v4 = messtab-msgv4 IMPORTING msg = 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. WRITE:/9 msg. ENDIF. ENDLOOP. ULINE /(100). ENDLOOP.

ENDFORM.

" CALL_BAPI

*----------------------------------------------------------------------* * Start new screen * *----------------------------------------------------------------------* FORM bdc_dynpro USING program dynpro. CLEAR bdcdata. bdcdata-program = program. bdcdata-dynpro = dynpro. bdcdata-dynbegin = 'X'. APPEND bdcdata. ENDFORM. "BDC_DYNPRO *----------------------------------------------------------------------* * Insert field * *----------------------------------------------------------------------* FORM bdc_field USING fnam fval. CLEAR bdcdata. bdcdata-fnam = fnam. bdcdata-fval = fval. APPEND bdcdata. ENDFORM. "BDC_FIELD

You might also like