Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem in BDC FOr CA02

Former Member
0 Likes
1,823

Dear All,

     i had develop BDC for ca02 to changes in routing data. doce i below shown. when i excute BDC that time changes only in first line but i want to directly changes in second or any other  line. please give me solution ASAP. thanks in advance.

*&---------------------------------------------------------------------*
*& Report  ZROUTING
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZROUTING.


DATAbdcdata_wa  TYPE bdcdata,
        bdcdata_tab TYPE TABLE OF bdcdata,
        opt         TYPE ctu_params.


DATA:    it_bdcdata     LIKE bdcdata OCCURS 0 WITH HEADER LINE.

*----- Messages of call transaction
DATA:    it_bdcmsgcoll  LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.


*----- Local Variable to Capture the G/L Account Data
DATA:     lv_koart      LIKE bseg-koart,   "Account Type
           lv_umskz      LIKE bseg-umskz,   "Special G/L Account Indicator.
           lv_poskey     LIKE bseg-bschl,   "Posting Key
           lv_buvar      LIKE t001-buvar,   "Transaction (Screen) Variant
           lv_umsks      LIKE bseg-umsks,   "Special G/L Ind. Type
           lv_buzid      LIKE bseg-buzid,   "Identification of the Line Item
           lv_buzei      LIKE bsed-buzei,   "Line Item Within Accounting Document
           lv_bstat      LIKE bkpf-bstat,   "Document Status
           lv_dynnr      LIKE t019-dynnr,   "Screen Number
           lv_winfk      LIKE t019w-winfk"Window Function Code
           lv_winnr      LIKE t019w-winnr"Window Number
           lv_mpool      LIKE t019w-mpool"Module Pool
           lv_opt        LIKE ctu_params.   "Screen Mode

*----- To Capture the File Path into the string
DATA:   lv_file_string  TYPE string,
         lv_messg        TYPE string,
         lv_ok_code(5)   TYPE c.            " OK-Code

*----------------------------------------------------------------------*
*  Constants Declaration
*----------------------------------------------------------------------*
CONSTANTS: c_bukrs      TYPE t001-bukrs         VALUE '1000',
            c_ctum       TYPE ctu_params-dismode VALUE 'N',
            c_cupd       TYPE ctu_params-updmode VALUE 'A',
            c_delim      TYPE c                  VALUE cl_abap_char_utilities=>horizontal_tab,
            c_nodata                             VALUE ' ',
            c_char_a     TYPE c                  VALUE 'A',
            c_char_d     TYPE c                  VALUE 'D',
            c_char_f     TYPE c                  VALUE 'F',
            c_char_k     TYPE c                  VALUE 'K',
            c_char_o     TYPE c                  VALUE 'O',
            c_char_p     TYPE c                  VALUE 'P',
            c_char_m     TYPE c                  VALUE 'M',
            c_char_s     TYPE c                  VALUE 'S',
            c_char_w     TYPE c                  VALUE 'W',
            c_char_x     TYPE c                  VALUE 'x'.
*  DATA: xserial TYPE c LENGTH 2,
*        yserial TYPE bdcdata-fval,
*        XITEM TYPE C LENGTH 2,
*        yitem type c LENGTH 4,
*        count type i,
*        flag.

  TYPES : BEGIN OF ty_final,
             matnr TYPE matnr,
             WERKS TYPE WERKS,
             sttag TYPE sttag,
             ENTRY_ACT TYPE ENTRY_ACT,
             ARBPL TYPE ARBPL,
             LTXA1 TYPE LTXA1,
             VGW01 TYPE VGW01,
          END OF ty_final.
          DATA : it_final TYPE STANDARD TABLE OF ty_final,
                 wa_final TYPE ty_final.
daTA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA :V_COUNT1 TYPE I.

DATA: V_COUNT(3) TYPE C.

DATA: V_CHAR(16).

PARAMETERS: P_FILE TYPE LOCALFILE DEFAULT 'D:\ROUTING.TXT'.
   START-OF-SELECTION.
DATA: W_FILE TYPE STRING.

W_FILE = P_FILE.

CALL FUNCTION 'GUI_UPLOAD'
   EXPORTING
     FILENAME                      = W_FILE
     FILETYPE                      = 'DAT'
*   HAS_FIELD_SEPARATOR           = ' '
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
   TABLES
     DATA_TAB                      = IT_FINAL
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 2
*   NO_BATCH                      = 3
*   GUI_REFUSE_FILETRANSFER       = 4
*   INVALID_TYPE                  = 5
*   NO_AUTHORITY                  = 6
*   UNKNOWN_ERROR                 = 7
*   BAD_DATA_FORMAT               = 8
*   HEADER_NOT_ALLOWED            = 9
*   SEPARATOR_NOT_ALLOWED         = 10
*   HEADER_TOO_LONG               = 11
*   UNKNOWN_DP_ERROR              = 12
*   ACCESS_DENIED                 = 13
*   DP_OUT_OF_MEMORY              = 14
*   DISK_FULL                     = 15
*   DP_TIMEOUT                    = 16
*   OTHERS                        = 17
           .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*
*CALL FUNCTION 'BDC_OPEN_GROUP'
* EXPORTING
*   CLIENT                    = SY-MANDT
**   DEST                      = FILLER8
*   GROUP                     = FILLER12
**   HOLDDATE                  = FILLER8
**   KEEP                      = FILLER1
**   USER                      = FILLER12
**   RECORD                    = FILLER1
**   PROG                      = SY-CPROG
**   DCPFM                     = '%'
**   DATFM                     = '%'
** IMPORTING
**   QID                       =
** EXCEPTIONS
**   CLIENT_INVALID            = 1
**   DESTINATION_INVALID       = 2
**   GROUP_INVALID             = 3
**   GROUP_IS_LOCKED           = 4
**   HOLDDATE_INVALID          = 5
**   INTERNAL_ERROR            = 6
**   QUEUE_ERROR               = 7
**   RUNNING                   = 8
**   SYSTEM_LOCK_ERROR         = 9
**   USER_INVALID              = 10
**   OTHERS                    = 11
*          .
*IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.





*PERFORM getdata.
PERFORM bdc.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  BDC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BDC .
*SAPLCPDI 1010  X

*                                                 BDC_CURSOR  RC27M-WERKS
*                                                 BDC_OKCODE  /00
*                                                 RC27M-MATNR SRT400-26CAM
*                                                 RC27M-WERKS ta02
*                                                 RC271-STTAG 15.12.2012
*SAPLCPDI 1400  X

*

*  CONCATENATE 'RF05L-ANZDT' '(' XITEM ')' INTO yserial.
LOOP at it_final INTO wa_final.
    PERFORM bdc_dynpro      USING 'SAPLCPDI' '1010'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                   'RC27M-WERKS'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM bdc_field       USING 'RC27M-MATNR'
                                  WA_FINAL-MATNR.
    PERFORM bdc_field       USING 'RC27M-WERKS'
                                  WA_FINAL-WERKS.
*   PERFORM bdc_field       USING 'RC271-STTAG'
*                                  WA_FINAL-sttag.

*    BDC_CURSOR  PLPOD-VGW01(01)
*                                                 BDC_OKCODE  =BU
*                                                 RC27X-ENTRY_ACT 1
*                                                 PLPOD-ARBPL(01) WC900
*                                                 PLPOD-LTXA1(01) FITTING02
*                                                 PLPOD-VGW01(01) 2.50

*  do count times.
     PERFORM bdc_dynpro      USING 'SAPLCPDI' '1400'.

     PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                   'PLPOD-VGW01(01)'  .

     PERFORM bdc_field       USING 'BDC_OKCODE' '=BU'.
*  enddo.
*do count times.


*LOOP AT IT_fINAL INTO WA_FINAL.
BREAK 10115.
V_COUNT1 = V_COUNT1 + 1.

V_COUNT = V_COUNT1.

CONDENSE V_COUNT.

CONCATENATE 'WA_FINAL-ENTRY_ACT' '(' V_COUNT ')' INTO V_CHAR.

DO  v_count TIMES.
   BREAK 10115.
*    PERFORM bdc_field       USING 'RC27X-ENTRY_ACT'
*                                 WA_FINAL-ENTRY_ACT.
*    CLEAR V_CHAR.
     CONCATENATE 'WA_FINAL-ARBPL' '(' V_COUNT' )' INTO V_CHAR.

     PERFORM bdc_field       USING 'PLPOD-ARBPL(01)'
                                  WA_FINAL-ARBPL.
     CLEAR V_CHAR.

       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
     PERFORM bdc_field       USING 'PLPOD-LTXA1(01)'
                                   WA_FINAL-LTXA1.
     CLEAR V_CHAR.

       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
      PERFORM bdc_field       USING 'PLPOD-VGW01(01)'
                               WA_FINAL-VGW01.
      CLEAR V_CHAR.
  ENDDO.
*
*IF V_COUNT1 = 24.
*
*   V_COUNT1 = 1.

perform bdc_field   using 'BDC_OKCODE'
                               '=BU'.

*ENDIF.
*ENDLOOP.
BREAK 10115.
*CALL FUNCTION 'BDC_INSERT'
* EXPORTING
*   TCODE                  = 'CA02'
**   POST_LOCAL             = NOVBLOCAL
**   PRINTING               = NOPRINT
**   SIMUBATCH              = ' '
**   CTUPARAMS              = ' '
*  TABLES
*    DYNPROTAB              = it_BDCDATA
** EXCEPTIONS
**   INTERNAL_ERROR         = 1
**   NOT_OPEN               = 2
**   QUEUE_ERROR            = 3
**   TCODE_INVALID          = 4
**   PRINTING_INVALID       = 5
**   POSTING_INVALID        = 6
**   OTHERS                 = 7
*          .
*IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.





*
*   lv_opt-defsize = 'X'.
*    lv_opt-dismode = c_ctum.
**    lv_opt-RACOMMIT = 'X'.
*    lv_opt-updmode = c_cupd.

*------ Call the Tcode for the data upload
     CALL TRANSACTION 'CA02'
          USING it_bdcdata
          OPTIONS FROM lv_opt
          MESSAGES INTO it_bdcmsgcoll.

     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait = 'X'.

     REFRESH it_bdcdata.
ENDLOOP.




COMMIT WORK.
*------ Looping at BDCMSGCOLL to Track the Errors
   LOOP AT it_bdcmsgcoll.
     CALL FUNCTION 'FORMAT_MESSAGE'
       EXPORTING
         id        = it_bdcmsgcoll-msgid
         lang      = it_bdcmsgcoll-msgspra
         no        = it_bdcmsgcoll-msgnr
         v1        = it_bdcmsgcoll-msgv1
         v2        = it_bdcmsgcoll-msgv2
         v3        = it_bdcmsgcoll-msgv3
         v4        = it_bdcmsgcoll-msgv4
       IMPORTING
         msg       = lv_messg
       EXCEPTIONS
         not_found = 1
         OTHERS    = 2.
     IF sy-subrc <> 0.                                       "#EC
       MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
     ELSE.
       WRITE:/ it_bdcmsgcoll-msgtyp, lv_messg.
     ENDIF.
   ENDLOOP.





ENDFORM.                    " BDC
*&---------------------------------------------------------------------*
**&      Form  BDC_DYNPRO
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->P_0323   text
**      -->P_0324   text
**----------------------------------------------------------------------*
FORM bdc_dynpro  USING  program dynpro.
*                          value(p_0324).
   CLEAR it_bdcdata.
   it_bdcdata-program  = program.
   it_bdcdata-dynpro   = dynpro.
   it_bdcdata-dynbegin = 'X'.
   APPEND it_bdcdata.
ENDFORM.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0328   text
*      -->P_0329   text
*----------------------------------------------------------------------*
FORM bdc_field  USING   fnam fval.
   "  value(p_0328)
   "value(p_0329).
   IF fval <> c_nodata.
     CLEAR it_bdcdata.
     it_bdcdata-fnam = fnam.
     it_bdcdata-fval = fval.
     APPEND it_bdcdata.
   ENDIF.




**
**  CALL FUNCTION 'BDC_CLOSE_GROUP'
** EXCEPTIONS
**   NOT_OPEN          = 1
**   QUEUE_ERROR       = 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.


ENDFORM.                    " BDC_FIELD

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,270

Dear All i had create new BDC But that also not work only change first line. code is BELOW.

*&---------------------------------------------------------------------*
*& Report  ZROUTING
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZROUTING.


*REPORT  ZCA02.
TYPE-POOLS : TRUXS.

INCLUDE BDCRECX1.

TYPES: BEGIN OF RECORD,
         COUNT(4),
         MATNR_001(018),
         WERKS_002(004),
         STTAG_004(010),
         ITEMNO(002),
         ARBPL TYPE ARBPL,
         LTXA1 TYPE LTXA1,
         VGW01 TYPE VGW01,
      END OF RECORD.



DATA: T_FINAL TYPE STANDARD TABLE OF RECORD,
       WA_FINAL TYPE RECORD.

TYPES: BEGIN OF TY_ITEM,
         ITEMNO(002),
         ARBPL TYPE ARBPL,
         LTXA1 TYPE LTXA1,
         VGW01 TYPE VGW01,
         END OF TY_ITEM.

DATA: T_ITEM TYPE TABLE OF TY_ITEM,
      WA_ITEM TYPE TY_ITEM.


START-OF-SELECTION.

   PARAMETERS: P_FILE TYPE STRING.

   DATA: G_FILE TYPE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
   CALL FUNCTION 'F4_FILENAME'
     EXPORTING
       FIELD_NAME = 'P_FILE'
     IMPORTING
       FILE_NAME  = G_FILE.

   P_FILE = G_FILE.

START-OF-SELECTION.
   PERFORM OPEN_GROUP.
BREAK 10115.
   CALL FUNCTION 'GUI_UPLOAD'
     EXPORTING
       FILENAME            = P_FILE
       FILETYPE            = 'ASC'
       HAS_FIELD_SEPARATOR = 'X'
     TABLES
       DATA_TAB            = T_FINAL.
   IF SY-SUBRC <> 0.

   ENDIF.
   DATA: T_FINAL2 LIKE T_FINAL.
   DATA: WA_FINAL2 LIKE WA_FINAL.
   T_FINAL2 = T_FINAL.
   LOOP AT T_FINAL INTO WA_FINAL.
    IF SY-SUBRC <> 0. EXIT. ENDIF.
    REFRESH T_ITEM.
BREAK 10115.
*    ON CHANGE OF WA_FINAL-COUNT.
*ON CHANGE OF
       LOOP AT T_FINAL2 INTO WA_FINAL2."" WHERE COUNT = WA_FINAL-COUNT.
         WA_ITEM-ITEMNO = WA_FINAL2-ITEMNO.
         WA_ITEM-ARBPL = WA_FINAL2-ARBPL.
         WA_ITEM-LTXA1 = WA_FINAL2-LTXA1.
         WA_ITEM-VGW01  = WA_FINAL2-VGW01.
         APPEND WA_ITEM TO T_ITEM.
       ENDLOOP.

       PERFORM BDC_DYNPRO      USING 'SAPLCPDI' '1010'.


       PERFORM BDC_FIELD       USING 'RC27M-MATNR'
                                     WA_FINAL-MATNR_001.
       PERFORM BDC_FIELD       USING 'RC27M-WERKS'
                                     WA_FINAL-WERKS_002.
       PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                     '/00'.
       PERFORM BDC_DYNPRO      USING 'SAPLCPDI' '1400'.

       PERFORM BDC_FIELD       USING 'RC27X-ENTRY_ACT'
                                     '1'.
       PERFORM BDC_FIELD       USING 'RC27X-FLG_SEL(01)'
                                     'X'.

       PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=QMUE'.
*      PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
*      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                    'PLPOD-VGE01(04)'.


       LOOP AT T_item INTO WA_item.
BREAK 10115.
         IF WA_ITEM-ITEMNO EQ '10'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
        ENDIF.

         IF WA_ITEM-ITEMNO EQ '20'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '30'.
          PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '40'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '50'.
          PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '60'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '70'.
         PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
         PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
         PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

       ENDLOOP.

       PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=ENT1'.
**          ENDON.
*
*       PERFORM BDC_TRANSACTION USING 'CA02'.
*
   ENDLOOP.
*  PERFORM CLOSE_GROUP.
*
*    AT END OF COUNT.
*      LOOP AT T_ITEM INTO WA_ITEM.
*        IF WA_ITEM-ITEMNO EQ '10'
*        OR WA_ITEM-ITEMNO EQ '20'
*        OR WA_ITEM-ITEMNO EQ '30'
*        OR WA_ITEM-ITEMNO EQ '40'
*        OR WA_ITEM-ITEMNO EQ '50'
*        OR WA_ITEM-ITEMNO EQ '60'
*        OR WA_ITEM-ITEMNO EQ '70'.
**
**          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
**                                        '=QMBU'.
*          PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1501'.
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
**          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
**                                        'PLMKB-PMETHODE'.
**          PERFORM BDC_FIELD       USING 'PLMKB-PMETHODE'.
**                                        WA_ITEM-PMETHODE.       "'GER INSP'.
*
*          PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1502'.
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*          PERFORM BDC_DYNPRO      USING 'SAPLQSS0' '0100'.
*
*          PERFORM BDC_FIELD       USING 'RQMST-SOLLPRUEF'
*                                        ' '.
*
*          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                        'RQMST-RZWANG1'.
*
*
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*          PERFORM BDC_FIELD       USING 'RQMST-RZWANG4'
*                                        ''.
*          PERFORM BDC_FIELD       USING 'RQMST-RZWANG1'
*                                        'X'.
*
**          IF WA_FINAL-QUALITAT EQ 'X'.
**            PERFORM BDC_FIELD       USING 'RQMST-PRUEFKAT'
**                                          'X'."PRUEFKAT.
**          ENDIF.
*
*
*
*          PERFORM BDC_DYNPRO      USING 'SAPLQSS0' '0101'.
*          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                        'RQMST-TEXT1'.
*
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*        ENDIF.
*
**
*      ENDLOOP.
**    ENDON.

     PERFORM BDC_TRANSACTION USING 'CA02'.

*  ENDLOOP.
   PERFORM CLOSE_GROUP.

3 REPLIES 3
Read only

Former Member
0 Likes
1,271

Dear All i had create new BDC But that also not work only change first line. code is BELOW.

*&---------------------------------------------------------------------*
*& Report  ZROUTING
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZROUTING.


*REPORT  ZCA02.
TYPE-POOLS : TRUXS.

INCLUDE BDCRECX1.

TYPES: BEGIN OF RECORD,
         COUNT(4),
         MATNR_001(018),
         WERKS_002(004),
         STTAG_004(010),
         ITEMNO(002),
         ARBPL TYPE ARBPL,
         LTXA1 TYPE LTXA1,
         VGW01 TYPE VGW01,
      END OF RECORD.



DATA: T_FINAL TYPE STANDARD TABLE OF RECORD,
       WA_FINAL TYPE RECORD.

TYPES: BEGIN OF TY_ITEM,
         ITEMNO(002),
         ARBPL TYPE ARBPL,
         LTXA1 TYPE LTXA1,
         VGW01 TYPE VGW01,
         END OF TY_ITEM.

DATA: T_ITEM TYPE TABLE OF TY_ITEM,
      WA_ITEM TYPE TY_ITEM.


START-OF-SELECTION.

   PARAMETERS: P_FILE TYPE STRING.

   DATA: G_FILE TYPE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
   CALL FUNCTION 'F4_FILENAME'
     EXPORTING
       FIELD_NAME = 'P_FILE'
     IMPORTING
       FILE_NAME  = G_FILE.

   P_FILE = G_FILE.

START-OF-SELECTION.
   PERFORM OPEN_GROUP.
BREAK 10115.
   CALL FUNCTION 'GUI_UPLOAD'
     EXPORTING
       FILENAME            = P_FILE
       FILETYPE            = 'ASC'
       HAS_FIELD_SEPARATOR = 'X'
     TABLES
       DATA_TAB            = T_FINAL.
   IF SY-SUBRC <> 0.

   ENDIF.
   DATA: T_FINAL2 LIKE T_FINAL.
   DATA: WA_FINAL2 LIKE WA_FINAL.
   T_FINAL2 = T_FINAL.
   LOOP AT T_FINAL INTO WA_FINAL.
    IF SY-SUBRC <> 0. EXIT. ENDIF.
    REFRESH T_ITEM.
BREAK 10115.
*    ON CHANGE OF WA_FINAL-COUNT.
*ON CHANGE OF
       LOOP AT T_FINAL2 INTO WA_FINAL2."" WHERE COUNT = WA_FINAL-COUNT.
         WA_ITEM-ITEMNO = WA_FINAL2-ITEMNO.
         WA_ITEM-ARBPL = WA_FINAL2-ARBPL.
         WA_ITEM-LTXA1 = WA_FINAL2-LTXA1.
         WA_ITEM-VGW01  = WA_FINAL2-VGW01.
         APPEND WA_ITEM TO T_ITEM.
       ENDLOOP.

       PERFORM BDC_DYNPRO      USING 'SAPLCPDI' '1010'.


       PERFORM BDC_FIELD       USING 'RC27M-MATNR'
                                     WA_FINAL-MATNR_001.
       PERFORM BDC_FIELD       USING 'RC27M-WERKS'
                                     WA_FINAL-WERKS_002.
       PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                     '/00'.
       PERFORM BDC_DYNPRO      USING 'SAPLCPDI' '1400'.

       PERFORM BDC_FIELD       USING 'RC27X-ENTRY_ACT'
                                     '1'.
       PERFORM BDC_FIELD       USING 'RC27X-FLG_SEL(01)'
                                     'X'.

       PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=QMUE'.
*      PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
*      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                    'PLPOD-VGE01(04)'.


       LOOP AT T_item INTO WA_item.
BREAK 10115.
         IF WA_ITEM-ITEMNO EQ '10'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
        ENDIF.

         IF WA_ITEM-ITEMNO EQ '20'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '30'.
          PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '40'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '50'.
          PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '60'.
           PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
           PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
           PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

         IF WA_ITEM-ITEMNO EQ '70'.
         PERFORM BDC_FIELD       USING 'PLPOD-ARBPL((01)' WA_ITEM-ARBPL.
         PERFORM BDC_FIELD       USING 'PLPOD-LTXA1(01)' WA_ITEM-LTXA1.
         PERFORM BDC_FIELD       USING 'PLPOD-VGW01(01)' WA_ITEM-VGW01.
         ENDIF.

       ENDLOOP.

       PERFORM BDC_FIELD       USING 'BDC_OKCODE' '=ENT1'.
**          ENDON.
*
*       PERFORM BDC_TRANSACTION USING 'CA02'.
*
   ENDLOOP.
*  PERFORM CLOSE_GROUP.
*
*    AT END OF COUNT.
*      LOOP AT T_ITEM INTO WA_ITEM.
*        IF WA_ITEM-ITEMNO EQ '10'
*        OR WA_ITEM-ITEMNO EQ '20'
*        OR WA_ITEM-ITEMNO EQ '30'
*        OR WA_ITEM-ITEMNO EQ '40'
*        OR WA_ITEM-ITEMNO EQ '50'
*        OR WA_ITEM-ITEMNO EQ '60'
*        OR WA_ITEM-ITEMNO EQ '70'.
**
**          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
**                                        '=QMBU'.
*          PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1501'.
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
**          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
**                                        'PLMKB-PMETHODE'.
**          PERFORM BDC_FIELD       USING 'PLMKB-PMETHODE'.
**                                        WA_ITEM-PMETHODE.       "'GER INSP'.
*
*          PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1502'.
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*          PERFORM BDC_DYNPRO      USING 'SAPLQSS0' '0100'.
*
*          PERFORM BDC_FIELD       USING 'RQMST-SOLLPRUEF'
*                                        ' '.
*
*          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                        'RQMST-RZWANG1'.
*
*
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*          PERFORM BDC_FIELD       USING 'RQMST-RZWANG4'
*                                        ''.
*          PERFORM BDC_FIELD       USING 'RQMST-RZWANG1'
*                                        'X'.
*
**          IF WA_FINAL-QUALITAT EQ 'X'.
**            PERFORM BDC_FIELD       USING 'RQMST-PRUEFKAT'
**                                          'X'."PRUEFKAT.
**          ENDIF.
*
*
*
*          PERFORM BDC_DYNPRO      USING 'SAPLQSS0' '0101'.
*          PERFORM BDC_FIELD       USING 'BDC_CURSOR'
*                                        'RQMST-TEXT1'.
*
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
*                                        '=ENT1'.
*
*        ENDIF.
*
**
*      ENDLOOP.
**    ENDON.

     PERFORM BDC_TRANSACTION USING 'CA02'.

*  ENDLOOP.
   PERFORM CLOSE_GROUP.

Read only

0 Likes
1,270

Hello Pampaniya,

You can use below code

REPORT ZCA02_BATCH

        NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA: bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE,

            messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF it_final OCCURS 0,

          count(4),

          matnr(18),

          werks(4),

          sttag(10),

          itemno(2),

          arbpl TYPE arbpl,

          ltxa1 TYPE ltxa1,

          vgw01 TYPE vgw01,

       END OF it_final.

PARAMETERS: p_file TYPE string DEFAULT 'D:\ROUTING.TXT'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

   CALL FUNCTION 'F4_FILENAME'

     EXPORTING

       field_name = 'P_FILE'

     IMPORTING

       file_name  = p_file.

START-OF-SELECTION.

   CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

      filename            = p_file

      filetype            = 'ASC'

      has_field_separator = 'X'

    TABLES

      data_tab            = it_final.

   PERFORM bdc.

*&---------------------------------------------------------------------*

*&      Form  bdc

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM bdc.

   DATA: lv_messg TYPE string.

   LOOP AT it_final.

     REFRESH bdcdata.

     PERFORM bdc_dynpro      USING 'SAPLCPDI' '1010'.

     PERFORM bdc_field       USING 'BDC_OKCODE'

                                   '/00'.

     PERFORM bdc_field       USING 'RC27M-MATNR'

                                   it_final-matnr.

     PERFORM bdc_field       USING 'RC27M-WERKS'

                                   it_final-werks.

     PERFORM bdc_field       USING 'RC271-STTAG'

                                   it_final-sttag.

     PERFORM bdc_dynpro      USING 'SAPLCPDI' '1200'.

     PERFORM bdc_field       USING 'BDC_CURSOR'

                                   'RC27X-ENTRY_ACT'.

     PERFORM bdc_field       USING 'BDC_OKCODE'

                                   '/00'.

     PERFORM bdc_field       USING 'RC27X-ENTRY_ACT'

                                   '1'.

     PERFORM bdc_dynpro      USING 'SAPLCPDI' '1200'.

     PERFORM bdc_field       USING 'BDC_CURSOR'

                                   'PLKOD-KTEXT(01)'.

     PERFORM bdc_field       USING 'BDC_OKCODE'

                                   '=PICK'.

     PERFORM bdc_field       USING 'RC27X-ENTRY_ACT'

                                   '1'.

     PERFORM bdc_dynpro      USING 'SAPLCPDI' '1400'.

     PERFORM bdc_field       USING 'BDC_CURSOR'

                                   'RC27X-ENTRY_ACT'.

     PERFORM bdc_field       USING 'BDC_OKCODE'

                                   '/00'.

     PERFORM bdc_field       USING 'RC27X-ENTRY_ACT'

                                   it_final-itemno.

     PERFORM bdc_dynpro      USING 'SAPLCPDI' '1400'.

     PERFORM bdc_field       USING 'BDC_CURSOR'

                                   'PLPOD-VGW01(01)'.

     PERFORM bdc_field       USING 'BDC_OKCODE'

                                   '=BU'.

     PERFORM bdc_field       USING 'RC27X-ENTRY_ACT'

                                   it_final-itemno.

     PERFORM bdc_field       USING 'PLPOD-ARBPL(01)'

                                   it_final-arbpl.

     PERFORM bdc_field       USING 'PLPOD-LTXA1(01)'

                                   it_final-ltxa1.

     PERFORM bdc_field       USING 'PLPOD-VGW01(01)'

                                   it_final-vgw01.

     REFRESH messtab.

     CALL TRANSACTION 'CA02'

     USING bdcdata

     MODE 'A'

     UPDATE 'S'

     MESSAGES INTO messtab.

     LOOP AT messtab.

       CLEAR lv_messg.

       CALL FUNCTION 'FORMAT_MESSAGE'

         EXPORTING

           id        = messtab-msgid

           lang      = messtab-msgspra

           no        = messtab-msgnr

           v1        = messtab-msgv1

           v2        = messtab-msgv2

           v3        = messtab-msgv3

           v4        = messtab-msgv4

         IMPORTING

           msg       = lv_messg

         EXCEPTIONS

           not_found = 1

           OTHERS    = 2.

       WRITE:/ messtab-msgtyp, lv_messg.

     ENDLOOP.

   ENDLOOP.

ENDFORM.                    "bdc

*----------------------------------------------------------------------*

*        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

Read only

0 Likes
1,270

Dear Kahraman,

thanks for your replay, but using your code change only first update. but i had create new code and it's working. my problem is resolved, for reference find below code.

REPORT  ZROUTING_BDC.


DATAbdcdata_wa  TYPE bdcdata,
         bdcdata_tab TYPE TABLE OF bdcdata,
         opt         TYPE ctu_params.


DATA:    it_bdcdata     LIKE bdcdata OCCURS 0 WITH HEADER LINE.

*----- Messages of call transaction
DATA:    it_bdcmsgcoll  LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.


*----- Local Variable to Capture the G/L Account Data
DATA:     lv_koart      LIKE bseg-koart,   "Account Type
            lv_umskz      LIKE bseg-umskz,   "Special G/L Account Indicator.
            lv_poskey     LIKE bseg-bschl,   "Posting Key
            lv_buvar      LIKE t001-buvar,   "Transaction (Screen) Variant
            lv_umsks      LIKE bseg-umsks,   "Special G/L Ind. Type
            lv_buzid      LIKE bseg-buzid,   "Identification of the Line Item
            lv_buzei      LIKE bsed-buzei,   "Line Item Within Accounting Document
            lv_bstat      LIKE bkpf-bstat,   "Document Status
            lv_dynnr      LIKE t019-dynnr,   "Screen Number
            lv_winfk      LIKE t019w-winfk"Window Function Code
            lv_winnr      LIKE t019w-winnr"Window Number
            lv_mpool      LIKE t019w-mpool"Module Pool
            lv_opt        LIKE ctu_params.   "Screen Mode
*lv_opt = 'N'.
*----- To Capture the File Path into the string
DATA:   lv_file_string  TYPE string,
          lv_messg        TYPE string,
          lv_ok_code(5)   TYPE c.            " OK-Code

*----------------------------------------------------------------------*
*  Constants Declaration
*----------------------------------------------------------------------*
CONSTANTS: c_bukrs      TYPE t001-bukrs         VALUE '1000',
             c_ctum       TYPE ctu_params-dismode VALUE 'N',
             c_cupd       TYPE ctu_params-updmode VALUE 'A',
             c_delim      TYPE c                  VALUE cl_abap_char_utilities=>horizontal_tab,
             c_nodata                             VALUE ' ',
             c_char_a     TYPE c                  VALUE 'A',
             c_char_d     TYPE c                  VALUE 'D',
             c_char_f     TYPE c                  VALUE 'F',
             c_char_k     TYPE c                  VALUE 'K',
             c_char_o     TYPE c                  VALUE 'O',
             c_char_p     TYPE c                  VALUE 'P',
             c_char_m     TYPE c                  VALUE 'M',
             c_char_s     TYPE c                  VALUE 'S',
             c_char_w     TYPE c                  VALUE 'W',
             c_char_x     TYPE c                  VALUE 'x'.
*  DATA: xserial TYPE c LENGTH 2,
*        yserial TYPE bdcdata-fval,
*        XITEM TYPE C LENGTH 2,
*        yitem type c LENGTH 4,
*        count type i,
*        flag.

   TYPES : BEGIN OF ty_final,
              item(3),
              matnr TYPE matnr,
              WERKS TYPE WERKS,
              sttag TYPE sttag,
              ENTRY_ACT TYPE ENTRY_ACT,
              ARBPL TYPE ARBPL,
              LTXA1 TYPE LTXA1,
              VGW01 TYPE VGW01,
           END OF ty_final.
           DATA : it_final TYPE STANDARD TABLE OF ty_final,
                  wa_final TYPE ty_final.
daTA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA :V_COUNT1 TYPE I.

DATA: V_COUNT(3) TYPE C.

DATA: V_CHAR(16).

PARAMETERS: P_FILE TYPE LOCALFILE DEFAULT 'D:\ROUTING.TXT'.
    START-OF-SELECTION.
DATA: W_FILE TYPE STRING.

W_FILE = P_FILE.

CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                      = W_FILE
      FILETYPE                      = 'DAT'
*   HAS_FIELD_SEPARATOR           = ' '
*   HEADER_LENGTH                 = 0
*   READ_BY_LINE                  = 'X'
*   DAT_MODE                      = ' '
*   CODEPAGE                      = ' '
*   IGNORE_CERR                   = ABAP_TRUE
*   REPLACEMENT                   = '#'
*   CHECK_BOM                     = ' '
*   VIRUS_SCAN_PROFILE            =
*   NO_AUTH_CHECK                 = ' '
* IMPORTING
*   FILELENGTH                    =
*   HEADER                        =
    TABLES
      DATA_TAB                      = IT_FINAL
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 2
*   NO_BATCH                      = 3
*   GUI_REFUSE_FILETRANSFER       = 4
*   INVALID_TYPE                  = 5
*   NO_AUTHORITY                  = 6
*   UNKNOWN_ERROR                 = 7
*   BAD_DATA_FORMAT               = 8
*   HEADER_NOT_ALLOWED            = 9
*   SEPARATOR_NOT_ALLOWED         = 10
*   HEADER_TOO_LONG               = 11
*   UNKNOWN_DP_ERROR              = 12
*   ACCESS_DENIED                 = 13
*   DP_OUT_OF_MEMORY              = 14
*   DISK_FULL                     = 15
*   DP_TIMEOUT                    = 16
*   OTHERS                        = 17
            .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*
*CALL FUNCTION 'BDC_OPEN_GROUP'
* EXPORTING
*   CLIENT                    = SY-MANDT
**   DEST                      = FILLER8
*   GROUP                     = FILLER12
**   HOLDDATE                  = FILLER8
**   KEEP                      = FILLER1
**   USER                      = FILLER12
**   RECORD                    = FILLER1
**   PROG                      = SY-CPROG
**   DCPFM                     = '%'
**   DATFM                     = '%'
** IMPORTING
**   QID                       =
** EXCEPTIONS
**   CLIENT_INVALID            = 1
**   DESTINATION_INVALID       = 2
**   GROUP_INVALID             = 3
**   GROUP_IS_LOCKED           = 4
**   HOLDDATE_INVALID          = 5
**   INTERNAL_ERROR            = 6
**   QUEUE_ERROR               = 7
**   RUNNING                   = 8
**   SYSTEM_LOCK_ERROR         = 9
**   USER_INVALID              = 10
**   OTHERS                    = 11
*          .
*IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.





*PERFORM getdata.
PERFORM bdc.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  BDC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BDC .
*SAPLCPDI 1010  X

*                                                 BDC_CURSOR  RC27M-WERKS
*                                                 BDC_OKCODE  /00
*                                                 RC27M-MATNR SRT400-26CAM
*                                                 RC27M-WERKS ta02
*                                                 RC271-STTAG 15.12.2012
*SAPLCPDI 1400  X

*

*  CONCATENATE 'RF05L-ANZDT' '(' XITEM ')' INTO yserial.
LOOP at it_final INTO wa_final.
     PERFORM bdc_dynpro      USING 'SAPLCPDI' '1010'.
     PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RC27M-WERKS'.
     PERFORM bdc_field       USING 'BDC_OKCODE'
                                   '/00'.
     PERFORM bdc_field       USING 'RC27M-MATNR'
                                   WA_FINAL-MATNR.
     PERFORM bdc_field       USING 'RC27M-WERKS'
                                   WA_FINAL-WERKS.
*   PERFORM bdc_field       USING 'RC271-STTAG'
*                                  WA_FINAL-sttag.

*    BDC_CURSOR  PLPOD-VGW01(01)
*                                                 BDC_OKCODE  =BU
*                                                 RC27X-ENTRY_ACT 1
*                                                 PLPOD-ARBPL(01) WC900
*                                                 PLPOD-LTXA1(01) FITTING02
*                                                 PLPOD-VGW01(01) 2.50

*  do count times.
      PERFORM bdc_dynpro      USING 'SAPLCPDI' '1400'.

      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'PLPOD-VGW01(01)'  .

      PERFORM bdc_field       USING 'BDC_OKCODE' '=BU'.
*  enddo.
*do count times.


*LOOP AT IT_fINAL INTO WA_FINAL.
BREAK 10115.
*V_COUNT1 = V_COUNT1 + 1.
*
*V_COUNT = V_COUNT1.
*
*CONDENSE V_COUNT.
*
*CONCATENATE 'WA_FINAL-ENTRY_ACT' '(' V_COUNT ')' INTO V_CHAR.

*DO  v_count TIMES.
    BREAK 10115.
*    PERFORM bdc_field       USING 'RC27X-ENTRY_ACT'
*                                 WA_FINAL-ENTRY_ACT.
*    CLEAR V_CHAR.
      CONCATENATE 'WA_FINAL-ARBPL' '(' V_COUNT' )' INTO V_CHAR.

   IF WA_final-ITEM EQ '10'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(01)'
                                   WA_FINAL-ARBPL.
      CLEAR V_CHAR.

*perform bdc_field   using 'BDC_OKCODE'
*                               '=BU'.
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
      PERFORM bdc_field       USING 'PLPOD-LTXA1(01)'
                                    WA_FINAL-LTXA1.
*     CLEAR V_CHAR.

*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
       PERFORM bdc_field       USING 'PLPOD-VGW01(01)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.

   ENDIF.



     IF WA_final-ITEM EQ '20'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(02)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.



*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(02)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.

        CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(02)'
                                WA_FINAL-VGW01.
       CLEAR V_CHAR.
     ENDIF.


   IF WA_final-ITEM EQ '30'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(03)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.



*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(03)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.

*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(03)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.




        IF WA_final-ITEM EQ '20'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(03)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.



*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(03)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(03)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.




        IF WA_final-ITEM EQ '40'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(04)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.



*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(04)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.

*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(04)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.




        IF WA_final-ITEM EQ '50'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(05)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.



*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(05)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.

*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(05)'
                                WA_FINAL-VGW01.
       CLEAR V_CHAR.
     ENDIF.




   IF WA_final-ITEM EQ '60'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(06)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(06)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(06)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.

   IF WA_final-ITEM EQ '70'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(07)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(07)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(07)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.



   IF WA_final-ITEM EQ '80'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(08)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(08)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(08)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.


   IF WA_final-ITEM EQ '80'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(08)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(08)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(08)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.


   IF WA_final-ITEM EQ '90'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(09)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(09)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(09)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.

   IF WA_final-ITEM EQ '0100'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(10)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(10)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(10)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.


   IF WA_final-ITEM EQ '0110'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(11)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(11)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-VGW01(11)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.


   IF WA_final-ITEM EQ '0120'.
      PERFORM bdc_field       USING 'PLPOD-ARBPL(12)'
                                   WA_FINAL-ARBPL.
*     CLEAR V_CHAR.
*
*
*
*       CONCATENATE 'WA_FINAL-LTXA1' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field       USING 'PLPOD-LTXA1(12)'
                                    WA_FINAL-LTXA1.
*      CLEAR V_CHAR.
*
*       CONCATENATE 'WA_FINAL-VGW01' '(' V_COUNT ')' INTO V_CHAR.
        PERFORM bdc_field      USING 'PLPOD-VGW01(12)'
                                WA_FINAL-VGW01.
*      CLEAR V_CHAR.
     ENDIF.




perform bdc_field   using 'BDC_OKCODE'
                                '=BU'.

*  ENDDO.
*
*IF V_COUNT1 = 24.
*
*   V_COUNT1 = 1.
*
*perform bdc_field   using 'BDC_OKCODE'
*                               '=BU'.

*ENDIF.
*ENDLOOP.
BREAK 10115.
*CALL FUNCTION 'BDC_INSERT'
* EXPORTING
*   TCODE                  = 'CA02'
**   POST_LOCAL             = NOVBLOCAL
**   PRINTING               = NOPRINT
**   SIMUBATCH              = ' '
**   CTUPARAMS              = ' '
*  TABLES
*    DYNPROTAB              = it_BDCDATA
** EXCEPTIONS
**   INTERNAL_ERROR         = 1
**   NOT_OPEN               = 2
**   QUEUE_ERROR            = 3
**   TCODE_INVALID          = 4
**   PRINTING_INVALID       = 5
**   POSTING_INVALID        = 6
**   OTHERS                 = 7
*          .
*IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.





*
*   lv_opt-defsize = 'X'.
*    lv_opt-dismode = c_ctum.
**    lv_opt-RACOMMIT = 'X'.
*    lv_opt-updmode = c_cupd.

*------ Call the Tcode for the data upload
      CALL TRANSACTION 'CA02'
           USING it_bdcdata
           OPTIONS FROM lv_opt
           MESSAGES INTO it_bdcmsgcoll.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
*perform bdc_field   using 'BDC_OKCODE'
*                               '=BU'.
      REFRESH it_bdcdata.
ENDLOOP.




COMMIT WORK.
*------ Looping at BDCMSGCOLL to Track the Errors
    LOOP AT it_bdcmsgcoll.
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          id        = it_bdcmsgcoll-msgid
          lang      = it_bdcmsgcoll-msgspra
          no        = it_bdcmsgcoll-msgnr
          v1        = it_bdcmsgcoll-msgv1
          v2        = it_bdcmsgcoll-msgv2
          v3        = it_bdcmsgcoll-msgv3
          v4        = it_bdcmsgcoll-msgv4
        IMPORTING
          msg       = lv_messg
        EXCEPTIONS
          not_found = 1
          OTHERS    = 2.
      IF sy-subrc <> 0.                                       "#EC
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSE.
        WRITE:/ it_bdcmsgcoll-msgtyp, lv_messg.
      ENDIF.
    ENDLOOP.





ENDFORM.                    " BDC
*&---------------------------------------------------------------------*
**&      Form  BDC_DYNPRO
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->P_0323   text
**      -->P_0324   text
**----------------------------------------------------------------------*
FORM bdc_dynpro  USING  program dynpro.
*                          value(p_0324).
    CLEAR it_bdcdata.
    it_bdcdata-program  = program.
    it_bdcdata-dynpro   = dynpro.
    it_bdcdata-dynbegin = 'X'.
    APPEND it_bdcdata.
ENDFORM.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0328   text
*      -->P_0329   text
*----------------------------------------------------------------------*
FORM bdc_field  USING   fnam fval.
    "  value(p_0328)
    "value(p_0329).
    IF fval <> c_nodata.
      CLEAR it_bdcdata.
      it_bdcdata-fnam = fnam.
      it_bdcdata-fval = fval.
      APPEND it_bdcdata.
    ENDIF.




**
**  CALL FUNCTION 'BDC_CLOSE_GROUP'
** EXCEPTIONS
**   NOT_OPEN          = 1
**   QUEUE_ERROR       = 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.


ENDFORM.