SY-SUBRC vs SYST-SUBRC

Hi,
Is there a difference between using SY-SUBRC or SYST-SUBRC?
That is, is that a difference between the following?...
IF sy-subrc <> 0.
ENDIF.
and
IF syst-subrc <> 0.
ENDIF.
If there is a differenc,whice is hte preferred/recommended method?
I have see both used and I have not noticed any difference.   Just want an opinion from the ABAP community.
Thanks,
Naing

Hi Naing,
There is a difference, not in it's usage, but conceptually.
SYST is an ABAP Dictionary Structure which you can view in SE11.
During the execution of any ABAP program, the runtime environment creates a structure 'sy' from this structure SYST. Hence in programs, you address the individuals fields of the SYST structure as SY-<field> name.
Hope this has answered your question.
Regards
Anil Madhavan

Similar Messages

  • MULTIPLE ITEM PROBLEM IN VL31N BDC

    hI FRIENDS ,
        I AM POSTING A BDC OF TRANSACTION VL31N ,ie FOR SCHEDULE AGREEMENT INBOUND DELIVERY.I CREATE A FUNCTIONAL MODULE OF THE SAME AND CALL IT FROM AN ASP PAGE,IN THAT THERE IS PO NUMBER 5500000986 WHICH HAS TWO ITEMES 62 AND 95 RESPECTIVLY OF SAME MATARIAL NUMBER R010230123041002 AND DIE NUMBER 2304P,NOW THE PROBLEM IS THIS BDC IS WORKING WHEN THERE IS ONLY ONE ITEM BUT GIVES AN ERROR "CANT CREAT INBOUND DELIVERY FOR PO NO ...' WNEN IT HAS MULTIPLE ITEM.WHAT SHOULD I DO ? I ALSO USED LOOP BUT IT ALSO DOSENT WORK AS IT WILL ADD ALL OPEN QTY OF PO 986 AND UPDATE AGAINST ITEM NO 95.
    CODE IS AS FOLLOWS:.........
    FUNCTION y_synie_bdcinbdly.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
    *"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
    *"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
    *"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
    *"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
    *"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
    *"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
    *"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
    *"     VALUE(EXTNID) LIKE  MAKT-MAKTG
    *"     VALUE(VENDORNO) LIKE  LFA1-LIFNR
    *"     VALUE(PONUMBER) LIKE  EKKO-EBELN
    *"     VALUE(ITEMNUMBER) LIKE  LIPS-VGPOS
    *"     VALUE(MATERIAL) LIKE  MAKT-MAKTG
    *"     VALUE(DLYQTY) LIKE  LIPS-LFIMG
    *"     VALUE(BTCHNO) LIKE  LIPS-CHARG
    *"     VALUE(POSLR) LIKE  EKES-EBELP OPTIONAL
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"     VALUE(INDELYNO) LIKE  SY-MSGV2
    *"     VALUE(MSG1) LIKE  SY-MSGV1
    *"     VALUE(MSG2) LIKE  SY-MSGV2
    *"     VALUE(MSG3) LIKE  SY-MSGV3
    *"     VALUE(MSG4) LIKE  SY-MSGV4
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL
    *"      ERRTAB STRUCTURE  YSYNERRMSGS
    *"      INDLYTAB STRUCTURE  YSYN_QTYTAB
    Updated by ANAND SYNISE 19.1.2007
      DATA: BEGIN OF bdctab OCCURS 0.
              INCLUDE STRUCTURE bdcdata.
      DATA: END OF bdctab.
      DATA: datenow(10) TYPE c,
            fldvar(30)  TYPE c,
            fldno       TYPE i,
            flditoc(6)  TYPE c,
            qty(13)     TYPE c.
      DATA maxposnr LIKE lips-posnr.
      DATA testposnr TYPE posnr.
      DATA itemnoint TYPE i.
      CONCATENATE sy-datum6(2) '.' sy-datum4(2) '.' sy-datum+0(4) INTO datenow.
      CLEAR bdctab.
      REFRESH bdctab.
      PERFORM open_group      USING group user keep holddate ctu.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '4007'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'RV50A-VERUR_LA'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '/00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-LIFNR'.
           bdctab-fval = vendorno.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LV50C-BSTNR'.
           bdctab-fval = ponumber.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-VERUR_LA'.
           bdctab-fval = extnid.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=MKAL_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIKP-BLDAT'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=POPO_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-POSNR(01)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '0111'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'RV50A-PO_MATNR'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = 'WEIT'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-PO_MATNR'.
           bdctab-fval = material.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=POLO_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-POSNR(01)'.
           APPEND bdctab.
    *ADDED BY ANAND ON 22-01-2007
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval =  ITEMNUMBER .     "ITEMNUMBER = LIPS-VGPOS
           APPEND bdctab.
    ************ENDED***********************
    ADDED BY MILIND 19.01.2007
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval =  poslr .
           APPEND bdctab.
    *    ENDED * *
       CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LIPS_SELKZ(01)'.
           bdctab-fval = ''.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '/00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-CHARG(01)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
          QTY = INDLYTAB-DLYQTY.
            qty = dlyqty.
           bdctab-fnam = 'LIPSD-G_LFIMG(01)'.
           bdctab-fval = QTY.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIPS-CHARG(01)'.
    *     BDCTAB-FVAL = INDLYTAB-BTCHNO.
           bdctab-fval = btchno.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
       CLEAR bdctab.
           bdctab-program = 'SAPMV50A'.
           bdctab-dynpro = '1000'.
           bdctab-dynbegin = 'X'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_OKCODE'.
           bdctab-fval = '=SICH_T'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'LIKP-BLDAT'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_CURSOR'.
           bdctab-fval = 'LIPS-MATNR(02)'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFDAT_LA'.
           bdctab-fval = datenow.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'RV50A-LFUHR_LA'.
           bdctab-fval = '00:00'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
           CLEAR bdctab.
           bdctab-fnam = 'BDC_SUBSCR'.
           bdctab-fval = 'SAPMV50A'.
           APPEND bdctab.
      CALL TRANSACTION 'VL31N' USING bdctab MODE 'N'  MESSAGES INTO messtab.
      subrc = sy-subrc.
      PERFORM close_group USING     ctu.
      CLEAR bdctab.
      REFRESH bdctab.
      IF sy-subrc EQ 0.
        indelyno = sy-msgv2.
      ENDIF.
      LOOP AT messtab.
        MOVE: messtab-msgid TO errtab-msgid,
              messtab-msgnr TO errtab-msgnr,
              messtab-msgv1 TO errtab-msg1,
              messtab-msgv2 TO errtab-msg2,
              messtab-msgv3 TO errtab-msg3,
              messtab-msgv4 TO errtab-msg4.
        APPEND ERRtab.
      ENDLOOP.
      LOOP AT errtab.
        SELECT SINGLE text FROM t100
          INTO errtab-errmsg
          WHERE msgnr EQ errtab-msgnr AND arbgb EQ errtab-msgid
          AND sprsl EQ sy-langu.
        MODIFY errtab.
      ENDLOOP.
    ENDFUNCTION.

    Hi,
    Check this code:
    REPORT Z_CUSTOMER_UPLOAD .
                  D A T A         D E C L A R A T I O N S                *
    DATA:BEGIN OF IT_CUSTOMER OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_CUSTOMER.
    DATA:BEGIN OF IT_success OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_success.
    DATA:BEGIN OF IT_error OCCURS 0,
         KUNNR LIKE MV10A-KUNNR,
         VKORG LIKE MV10A-VKORG,
         VTWEG LIKE MV10A-VTWEG,
         MATNR LIKE MV10A-MATNR,
         KDMAT LIKE MV10A-KDMAT,
         MEGRU LIKE MV10A-MEGRU,
         SELKZ TYPE C value 'X',
         LPRIO LIKE MV10A-LPRIO,
         ANTLF LIKE MV10A-ANTLF,
         END OF IT_error.
    DATA: L_INDEX TYPE SY-TABIX.
    DATA:IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
    IT_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    ERROR MESSAGE TABLE
    DATA:IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA : C_S TYPE C VALUE 'S',
            C_E TYPE C VALUE 'E'.
    *DATA: IT_SUCCESS LIKE IT_CUSTOMER OCCURS 0,
         IT_ERROR LIKE IT_CUSTOMER  OCCURS 0.
    DATA : V_RECTOT TYPE I,
            V_RECERR TYPE I,
            V_RECSUC TYPE I.
                  S E L E C T I O N  -  S C R E E N                      *
    SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETER        : P_FILE LIKE RLGRAP-FILENAME .
    SELECTION-SCREEN : END OF BLOCK B1.
               A T  S E L E C T I O N  -  S C R E E N                    *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    to get F4 help for p_file
      PERFORM F4_FILENAME USING P_FILE.
                S T A R T   O F   S E L E C T I O N                      *
    START-OF-SELECTION.
    Uploading data from flat file into it_tab
      PERFORM BDC_UPLOAD USING P_FILE.
      PERFORM PROCESS_DATA.
      PERFORM POPULATE_BDC.
                E N D  O F   S E L E C T I O N                           *
    *END-OF-SELECTION.
    PERFORM DISPLAY_REPORT.
    *&      Form  F4_FILENAME
          text
         -->P_P_FILE  text
    FORM F4_FILENAME USING    P_P_FILE.
    DATA:L_FILE TYPE IBIPPARMS-PATH.
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      PROGRAM_NAME        = SYST-CPROG
      DYNPRO_NUMBER       = SYST-DYNNR
      FIELD_NAME          = ' '
    IMPORTING
       FILE_NAME           = L_FILE .
       P_P_FILE = L_FILE.
    ENDFORM.                    " F4_FILENAME
    *&      Form  BDC_UPLOAD
          text
         -->P_P_FILE  text
    FORM BDC_UPLOAD USING    P_P_FILE.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        FILENAME                      = P_P_FILE
        I_BEGIN_COL                   = 1
        I_BEGIN_ROW                   = 1
        I_END_COL                     = 8
        I_END_ROW                     = 1000
      TABLES
        INTERN                        = IT_DATA
    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.
    ENDFORM.                    " BDC_UPLOAD
    *&      Form  PROCESS_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM PROCESS_DATA.
    SORT IT_DATA BY ROW COL.
      LOOP AT IT_DATA.
    CASE IT_DATA-COL.
    WHEN 1.
    IT_CUSTOMER-KUNNR   = IT_DATA-VALUE.
    WHEN 2.
    IT_CUSTOMER-VKORG   = IT_DATA-VALUE.
    WHEN 3.
    IT_CUSTOMER-VTWEG   = IT_DATA-VALUE.
    WHEN 4.
    IT_CUSTOMER-MATNR   = IT_DATA-VALUE.
    WHEN 5.
    IT_CUSTOMER-KDMAT   = IT_DATA-VALUE.
    WHEN 6.
    IT_CUSTOMER-MEGRU   = IT_DATA-VALUE.
    WHEN 7.
    IT_CUSTOMER-LPRIO   = IT_DATA-VALUE.
    WHEN 8.
    IT_CUSTOMER-ANTLF   = IT_DATA-VALUE.
    APPEND IT_CUSTOMER.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    " PROCESS_DATA
    *&      Form  POPULATE_BDC
          text
    -->  p1        text
    <--  p2        text
    FORM POPULATE_BDC.
    DATA:L_COUNTER TYPE N,
             L_STRING TYPE STRING.
    LOOP AT IT_CUSTOMER.
    AT NEW KUNNR.
    CLEAR L_COUNTER.
          L_INDEX = SY-TABIX.
          READ TABLE IT_CUSTOMER INDEX L_INDEX.
    perform bdc_dynpro      using 'SAPMV10A' '0100'.
    perform bdc_field       using 'MV10A-KUNNR'
                                  IT_CUSTOMER-KUNNR.
    perform bdc_field       using 'MV10A-VKORG'
                                  IT_CUSTOMER-VKORG.
    perform bdc_field       using 'MV10A-VTWEG'
                                  IT_CUSTOMER-VTWEG.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    ENDAT.
    L_COUNTER = L_COUNTER + 1.
        CLEAR L_STRING.
    perform bdc_dynpro      using 'SAPMV10A' '0200'.
    CONCATENATE 'MV10A-MATNR(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using L_STRING
                            IT_CUSTOMER-MATNR.
    CONCATENATE 'MV10A-KDMAT(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using     L_STRING
                                     IT_CUSTOMER-KDMAT.
    CONCATENATE 'MV10A-MEGRU(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using   L_STRING
                                    IT_CUSTOMER-MEGRU.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    *-- For Page down in Call Transaction Mode
        IF L_COUNTER = 14.
          CLEAR L_COUNTER.
          PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
          PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                                '=P+'.
        ENDIF.
    perform bdc_dynpro      using 'SAPMV10A' '0200'.
    CONCATENATE 'MV10A-SELKZ(' L_COUNTER ')' INTO L_STRING.
    perform bdc_field       using L_STRING
                              IT_CUSTOMER-SELKZ.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SELE'.
    perform bdc_dynpro      using 'SAPMV10A' '0300'.
    perform bdc_field       using 'MV10A-KDMAT'
                                  IT_CUSTOMER-KDMAT.
    perform bdc_field       using 'MV10A-LPRIO'
                                  IT_CUSTOMER-LPRIO.
    perform bdc_field       using 'MV10A-ANTLF'
                                  IT_CUSTOMER-ANTLF.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                        '/EBACK'.
    at end of kunnr.
    READ TABLE IT_CUSTOMER INDEX L_INDEX.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SICH'.
    CALL TRANSACTION 'VD51' USING IT_BDC MODE 'A' UPDATE 'S'
          MESSAGES INTO IT_MESSAGES.
          CLEAR IT_BDC.
          REFRESH IT_BDC.
    ENDAT.
      IF NOT IT_MESSAGES[] IS INITIAL.
        PERFORM FORMAT_MESSAGE.
      ENDIF.
    ENDLOOP.
    ENDFORM.                    " POPULATE_BDC
    *&      Form  bdc_dynpro
          text
         -->P_0273   text
         -->P_0274   text
    FORM bdc_dynpro USING    VALUE(P_0273)
                             VALUE(P_0274).
    IT_BDC-PROGRAM = P_0273.
    IT_BDC-DYNPRO = P_0274.
    IT_BDC-DYNBEGIN = 'X'.
      APPEND IT_BDC.
      CLEAR IT_BDC.
    ENDFORM.                    " bdc_dynpro
    *&      Form  bdc_field
          text
         -->P_0278   text
         -->P_RECORD_KUNNR_001  text
    FORM bdc_field USING    VALUE(P_0278)
                           VALUE(P_0279).
    IT_BDC-FNAM = P_0278.
      IT_BDC-FVAL = P_0279.
      APPEND IT_BDC.
      CLEAR IT_BDC.
    ENDFORM.                    " bdc_field
    *&      Form  FORMAT_MESSAGE
          text
    -->  p1        text
    <--  p2        text
    FORM FORMAT_MESSAGE.
    DATA: L_MSG(100).
      LOOP AT IT_MESSAGES.
      READ TABLE IT_CUSTOMER INDEX L_INDEX.
        CALL FUNCTION 'FORMAT_MESSAGE'
             EXPORTING
                  ID        = IT_MESSAGES-MSGID
                  LANG      = SY-LANGU
                  NO        = IT_MESSAGES-MSGNR
                  V1        = IT_MESSAGES-MSGV1
                  V2        = IT_MESSAGES-MSGV2
                  V3        = IT_MESSAGES-MSGV3
                  V4        = IT_MESSAGES-MSGV4
             IMPORTING
                  MSG       = L_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:/ l_msg.
      ENDLOOP.
    ENDFORM.                    " FORMAT_MESSAGE
    reward if helpful,
    keerthi

  • Couldn't upload

    Hi,
    Pls fin the error in this program. I am unable to upload.
    Regards,
    Karthik
    Program ID       : ZRFC_RUSHORDER
    Transaction Code : Z*
    Description      : RFC For Sales Process using        Transaction Method calling
                       3 Transactions VA01,VL23 & VF06
    Change History
        Date   |   Programmer   |   Corr. #   |   Description
               |                |             |
               |                |             |
    FUNCTION ZRFC_RUSHORDER .
    ""Local interface:
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    *"      RO_HEADER STRUCTURE  ZSD_HEADER
    *"      RO_ITEM STRUCTURE  ZSD_ITEM
           INTERNAL TABLES,STRUCTURES & VARIABLES
    *TABLES : ZSO_CREATE_TEXT.
      DATA: CTU      LIKE  APQI-PUTACTIVE,
            MODE     LIKE  APQI-PUTACTIVE,
            UPDATE   LIKE  APQI-PUTACTIVE,
            GROUP    LIKE  APQI-GROUPID,
            USER     LIKE  APQI-USERID,
            KEEP     LIKE  APQI-QERASE,
            HOLDDATE LIKE  APQI-STARTDATE,
            NODATA   LIKE  APQI-PUTACTIVE.
      DATA: T_VBELN LIKE VBFA-VBELN.
    data: MESSTAB1  LIKE TABLE OF BDCMSGCOLL  WITH HEADER LINE.
    DATA: NODATA_CHARACTER VALUE ' '.
      DATA : SORDER_FINAL LIKE VBAK-VBELN,
             SORDER(15)   TYPE C,
             V_CODE(2)    TYPE C,
             V_PLANT     LIKE EKPO-WERKS,
           YEAR_CONVERSION(1) TYPE C.
      DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
      DATA : V_DATE LIKE SY-DATUM,
             V_TIME LIKE SY-UZEIT.
      DATA : SESSION_NAM(30) TYPE C.
      CTU = ' '.
      MODE = 'N'.
      USER = SY-UNAME.
      CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
                                              SESSION_NAM.
      GROUP = 'RUSH_ORDER'.
      KEEP = 'X'.
      UPDATE = 'L'.
      HOLDDATE = ''.
      NODATA = '/'.
      SUBRC = 0.
    *CREATING SESSSION
      PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
      LOOP AT RO_HEADER.
        MOVE RO_HEADER-SORDER TO SORDER.
        V_PLANT = SORDER+0(4).
        SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
        IF SORDER+4(4) = '2005'.
          YEAR_CONVERSION = 'E'.
        ELSEIF SORDER+4(4) = '2006'.
          YEAR_CONVERSION = 'F'.
        ELSEIF SORDER+4(4) = '2007'.
          YEAR_CONVERSION = 'G'.
        ELSEIF SORDER+4(4) = '2008'.
          YEAR_CONVERSION = 'H'.
        ELSEIF SORDER+4(4) = '2009'.
          YEAR_CONVERSION = 'J'.
        ELSEIF SORDER+4(4) = '2010'.
          YEAR_CONVERSION = 'K'.
        ELSEIF SORDER+4(4) = '2011'.
          YEAR_CONVERSION = 'L'.
        ELSEIF SORDER+4(4) = '2012'.
          YEAR_CONVERSION = 'M'.
        ELSEIF SORDER+4(4) = '2013'.
          YEAR_CONVERSION = 'N'.
        ELSEIF SORDER+4(4) = '2014'.
          YEAR_CONVERSION = 'P'.
        ELSEIF SORDER+4(4) = '2015'.
          YEAR_CONVERSION = 'Q'.
        ELSEIF SORDER+4(4) = '2016'.
          YEAR_CONVERSION = 'R'.
        ELSEIF SORDER+4(4) = '2017'.
          YEAR_CONVERSION = 'S'.
        ELSEIF SORDER+4(4) = '2018'.
          YEAR_CONVERSION = 'T'.
        ELSEIF SORDER+4(4) = '2019'.
          YEAR_CONVERSION = 'U'.
        ELSEIF SORDER+4(4) = '2020'.
          YEAR_CONVERSION = 'V'.
        ELSEIF SORDER+4(4) = '2021'.
          YEAR_CONVERSION = 'W'.
        ELSEIF SORDER+4(4) = '2022'.
          YEAR_CONVERSION = 'X'.
        ELSEIF SORDER+4(4) = '2023'.
          YEAR_CONVERSION = 'Y'.
        ELSEIF SORDER+4(4) = '2024'.
          YEAR_CONVERSION = 'Z'.
        ELSEIF SORDER+4(4) = '2025'.
          YEAR_CONVERSION = 'A'.
        ELSEIF SORDER+4(4) = '2026'.
          YEAR_CONVERSION = 'B'.
        ELSEIF SORDER+4(4) = '2027'.
          YEAR_CONVERSION = 'C'.
        ENDIF.
        CONCATENATE  YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
        CLEAR YEAR_CONVERSION.
        CLEAR V_CODE.
        CLEAR V_PLANT.
    Text Element Creation for Sales order.
        ZSO_CREATE_TEXT-SORDER      = SORDER_FINAL.
        ZSO_CREATE_TEXT-LR_NUMBER   = RO_HEADER-LR_NUMBER.
        ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
        ZSO_CREATE_TEXT-Z003        = RO_HEADER-Z003.
        ZSO_CREATE_TEXT-Z004        = RO_HEADER-Z004.
        INSERT ZSO_CREATE_TEXT.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '0101'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'VBAK-SPART'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'VBAK-AUART'
                                      'ZKSO'.                   "AUART_001.
        PERFORM BDC_FIELD       USING 'VBAK-VKORG'
                                      RO_HEADER-VKORG.          "VKORG_002.
        PERFORM BDC_FIELD       USING 'VBAK-VTWEG'
                                      RO_HEADER-VTWEG.          "VTWEG_003.
        PERFORM BDC_FIELD       USING 'VBAK-SPART'
                                      RO_HEADER-SPART.          "SPART_004.
    Sales Order Date insertion.......
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=KKAU'.
        PERFORM BDC_FIELD       USING 'VBAK-VBELN'
                                      SORDER_FINAL.
        PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                      RO_HEADER-SP.
        PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                      RO_HEADER-SH.
        PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                      RO_HEADER-REF_PO.
        PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                      RO_HEADER-ZTERM.
        WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4002'.
        perform bdc_field       using 'BDC_OKCODE'
                                    '=T\03'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'VBAK-AUDAT'.
        PERFORM BDC_FIELD       USING 'VBAK-AUDAT'
                                      RO_HEADER-SODATE.  "Document Date
        PERFORM BDC_FIELD       USING 'VBKD-PRSDT'
                                      RO_HEADER-SODATE.  "Pricing Date
    Billing Screen    ***********************
        perform bdc_dynpro      using 'SAPMV45A' '4002'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/EBACK'.
        perform bdc_field       using 'BDC_CURSOR'
                                    'VBKD-FKDAT'.
        PERFORM BDC_FIELD       USING 'VBKD-FKDAT'
                                      RO_HEADER-SODATE.  "Billing date
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=KKO1'.
        PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                      RO_HEADER-SP.             "KUNNR_006.
        PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                      RO_HEADER-SH.             "KUNNR_007.
        PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                      RO_HEADER-REF_PO.         "BSTKD_008.
        PERFORM BDC_FIELD       USING 'RV45A-KETDAT'
                                      RO_HEADER-SODATE. "Delivery Date.
        PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                      RO_HEADER-ZTERM.          "ZTERM_011.
    ************************Added for test 25-02******************
        PERFORM BDC_FIELD       USING 'RV45A-KETDAT'        " CNGD FROM 'KEDAT' TO 'KETDAT'.
                                      RO_HEADER-SODATE.     "REQ DELVY DATE.
        PERFORM BDC_FIELD       USING 'VBKD-PRSDT'          "CNGD FROM 'RV45A' TO 'VBKD'.
                                      RO_HEADER-SODATE.     "PRICING DATE.
    ************************Added for test 25-02******************
    *Dont DELETE, For Future Use of Inco terms 1 & 2.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                 'VBKD-INCO2'.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO1'
                                 RO_HEADER-INCO1.  "INCO1_012.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO2'
                                 RO_HEADER-INCO2.  "INCO2_013.
    Header condition types......................................
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5002'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(05)'.
        IF RO_HEADER-KSCHL1 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR1.
        ENDIF.
        IF RO_HEADER-KSCHL2 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR2.
        ENDIF.
        IF RO_HEADER-KSCHL3 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR3.
        ENDIF.
    *change on 11.04.2006 for adding rounding off condition type.
        IF RO_HEADER-KSCHL4 IS NOT INITIAL.
          PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
          PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                         '=V69A_KOAN'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KSCHL(04)'.
          PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                         'KOMV-KBETR(02)'.
          PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
          PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR4.
        ENDIF.
        PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
        PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                       '/EBACK'.
    Dont DELETE, For Future Use  of : Sales Person Data.................
    *PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    *PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                   '=HEAD'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=T\08'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=PAAN'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                  'PARALL'. "GV_FILTER_024.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARVW(09)'
                                  'VE'."REC-PARVW_09_025.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARTNER(09)'
                                  '0'. "REC-PARTNER_09_026.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/EBACK'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                 'PARALL'. "GV_FILTER_027.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=POAN'.
        PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                      RO_HEADER-SP.             "KUNNR_006.
        PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                      RO_HEADER-SH.             "KUNNR_007.
        PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                      RO_HEADER-REF_PO.         "BSTKD_008.
    *FETCHING LINE ITEM DATA.
        LOOP AT RO_ITEM WHERE  SORDER =  RO_HEADER-SORDER.
          PERFORM BDC_DYNPRO   USING   'SAPMV45A'     '4001'.
          PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=POAN'.
          PERFORM BDC_FIELD    USING    'RV45A-MABNR(02)'  RO_ITEM-MATNR.
          PERFORM BDC_FIELD    USING    'RV45A-KWMENG(02)' RO_ITEM-QTY.
         PERFORM BDC_FIELD    USING    'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
          PERFORM BDC_FIELD    USING    'VBAP-WERKS(02)'  RO_ITEM-PLANT.
          PERFORM BDC_FIELD    USING    'VBAP-LGORT(02)'  RO_ITEM-SLOC.
          PERFORM BDC_FIELD    USING    'VBAP-CHARG(02)'  RO_ITEM-BATCH.
    *FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
          IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
            PERFORM BDC_FIELD       USING 'VBAP-PSTYV(02)'
                                          'ZANN'.
          ELSE.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
    Condition Types For The Items
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                           '=PKO1'.
            PERFORM BDC_FIELD       USING 'RV45A-VBAP_SELKZ(01)' 'X'.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=V69A_KOAN'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'KOMV-KSCHL(02)'.
    Condition Type 1...........
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
            PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
    Condition Type 2...........
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=V69A_KOAN'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'KOMV-KSCHL(02)'.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
            PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
    Condition Type 3.............
            IF RO_ITEM-KSCHL3 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
            ENDIF.
    Condition Type 4..............
            IF RO_ITEM-KSCHL4 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
            ENDIF.
    Condition Type 5...............
            IF RO_ITEM-KSCHL5 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
            ENDIF.
    Condition Type 6...............
            IF RO_ITEM-KSCHL6 IS NOT INITIAL.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '=V69A_KOAN'.
              PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                            'KOMV-KSCHL(02)'.
              PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
              PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                            '/00'.
              PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
              PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
            ENDIF.
            PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/EBACK'.
          ENDIF.
       ENDLOOP.
    Saving The Sales Document
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
        PERFORM BDC_FIELD      USING 'BDC_OKCODE'   '=SICH'.
       PERFORM BDC_TRANSACTION TABLES MESSTAB
       USING                          'VA01'
                                       CTU
                                       MODE
                                       UPDATE.
    *CALL TRANSACTION 'VA01' USING BDCDATA1
                                 MODE
                                 MODE 'A'
                                  UPDATE
                                 UPDATE 'A'
                                 MESSAGES INTO MESSTAB.
      ENDLOOP.
      CALL TRANSACTION 'VA01' USING BDCDATA1
                                  MODE 'A'
                                  UPDATE 'A'
                                  MESSAGES INTO MESSTAB1.
    APPEND MESSTAB1.
    *SELECT SINGLE VBELN INTO T_VBELN FROM VBFA
           WHERE VBELV = RO_HEADER-SORDER." AND VBTYP_N = 'J'.
       perform bdc_dynpro      using 'SAPMV50A' '4004'.
       perform bdc_field       using 'BDC_CURSOR'                              'LIKP-VBELN'.
       perform bdc_field       using 'BDC_OKCODE'                              '/00'.
       perform bdc_field       using 'LIKP-VBELN'     T_VBELN.                  "'7012000733'.
       perform bdc_dynpro      using 'SAPMV50A' '1000'.
       perform bdc_field       using 'BDC_OKCODE'         '=WABU_T'.   "'=SICH_T'.
    **perform bdc_field       using 'LIKP-BLDAT'       RO_HEADER-SODATE.     '27.06.2006'.
       perform bdc_field       using 'BDC_CURSOR'                              'LIKP-WADAT_IST'.
       perform bdc_field       using 'LIKP-WADAT'   RO_HEADER-SODATE.  "       '26.05.2006'.
    **perform bdc_field       using 'LIKP-WAUHR'                             '00:00:00'.
       perform bdc_field       using 'LIKP-BTGEW'                              '10'.
       perform bdc_field       using 'LIKP-GEWEI'                              'KG'.
       perform bdc_field       using 'LIKP-WADAT_IST' RO_HEADER-SODATE."      '26.05.2006'.
       PERFORM BDC_TRANSACTION TABLES MESSTAB
       USING                          'VL02N'
                                       CTU
                                       MODE
                                       UPDATE.
      ENDLOOP.
      IF SY-SUBRC <> 0.
        SUBRC = SY-SUBRC.
        EXIT.
    *else.
    update zrush_order set PROCESSED = 'X'.
            where sorder = SORDER_FINAL and
            sodate       = RO_HEADER-SODATE.
      ENDIF.
    PROCESSING OUT BOUND DELIVERY
    *PERFORM BDC_DYNPRO   USING   'SAPMSSY0'     '0120'.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR' '06/09'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=IMED' .
    *PERFORM BDC_DYNPRO   USING   'SAPMSSY0'     '0120'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=BACK'.
    PROCESSING INVOICE DELIVERY
    *PERFORM BDC_DYNPRO   USING   'RV60SBAT'     '1000'.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR' 'IMMEDI'.
    **SELECTION SCREEN PARAMETER FOR VF06
    *PERFORM BDC_FIELD    USING    'VKOR1' '1000'.
    *PERFORM BDC_FIELD    USING    'FKDAB' ' '.
    *PERFORM BDC_FIELD    USING    'ALLEA' 'X'.
    *PERFORM BDC_FIELD    USING    'ALLEL' 'X'.
    *WRITE SY-DATUM TO V_DATE.
    *WRITE SY-UZEIT TO V_TIME.
    *ADD '03' TO V_TIME+2(02).
    *PERFORM BDC_FIELD    USING    'EXDATE' V_DATE. "V_DATE.
    *PERFORM BDC_FIELD    USING    'EXTIME' V_TIME. "V_TIME.
    *PERFORM BDC_FIELD    USING    'IMMEDI' 'X'.
    *PERFORM BDC_FIELD    USING    'NUMBJOBS' ' '.
    *PERFORM BDC_FIELD    USING    'MAX_CUST' ' '.
    *PERFORM BDC_FIELD    USING    'UTASY' 'X'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=ONLI'.
    *PERFORM BDC_DYNPRO   USING   'SAPMSSY0'     '0120'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=BACK'.
    *PERFORM BDC_DYNPRO   USING   'RV60SBAT'     '1000'.
    *PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '/E'.
    *PERFORM BDC_TRANSACTION TABLES MESSTAB
    *USING                          'VF06'
                                   CTU
                                   MODE
                                   UPDATE.
    PERFORM CLOSE_GROUP USING     CTU.
    wait up to 2 seconds.
    submit ZVF06_SCHEDULE and return.
    wait up to 2 seconds.
    ENDFUNCTION.

    y u are unable to Upload?

  • Help: How to add serial number data into Delivery Order document

    Dear Gurus,
    I am creating an interface program and I have problem in attaching the serial number data to the corresponding material code for a certain delivery order document in R/3 4.6C SP22 system.
    The serial number can be attached either during the creation of the Delivery Order itself or in the subsequent step after creating the Delivery Order (i.e.: create the D/O document first, and then update the D/O data).
    The BAPI_OUTB_DELIVERY_CONFIRM_DEC FM does not provide any input parameter to let me put the serial number in this R/3 version.
    By tracing in SE30 the standard program VL02N --> Menu --> Extras --> Serial Number --> Continue (Enter) --> Save (Ctrl+S), I found out that the serial attachment 'might' be done during sub-routine SERIAL_LISTE_POST_LS in program SAPLIPW1. It will in turn executes FM SERIAL_LISTE_POST_LS. The commit to database table will be done in update task by FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS.
    <b>My question:</b>
    ============
    1. Is FM SERNR_ADD_TO_LS can be used to attach the serial number to D/O?
    If yes, how to do it please because I already tried it I can not see the serial information in VL02N after that. There is no any insert or update to database in this function module. Should I call other FM after this? I want to try to call FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS but I do not know how I can retrieve the global object such as XOBJK_ALL that is necessary for the input parameter.
    2. If SERNR_ADD_TO_LS can not be used, what other FM can I use? Can I call SERIAL_LISTE_POST_LS instead? Is there any reliable way to generate the import parameter for this FM, such as XSER00, XSER01, XOBJK_ALL and XEQUI?
    Thank you in advanced for your kind assistance.
    Best Regards,
    Hiroshi

    Try something similar to this below...
    Afterwards you should do a call transaction to VL02N and immediately SAVE. This is sufficient to ensure the status on the serial numbers is updated correctly.
    FUNCTION z_mob_serialnr_update_ls.
    ""Local interface:
    *" IMPORTING
    *" VALUE(VBELN_I) LIKE LIKP-VBELN
    *" TABLES
    *" SERNO_TAB STRUCTURE RISERLS
    *" YSER00 STRUCTURE SER00 OPTIONAL
    *" YSER01 STRUCTURE RSERXX OPTIONAL
    *" YOBJK_ALL STRUCTURE RIPW0 OPTIONAL
    *" YEQUI STRUCTURE RIEQUI OPTIONAL
    *" YMASE STRUCTURE MASE OPTIONAL
    *" EXCEPTIONS
    *" NO_EQUIPMENT_FOUND
    The modified/confirmed table of serial numbers is supplied in
    SERNO_TAB.
    These are updated in the SAP tables
    YSER00 - General Header Table for Serial Number Management
    YSER01 - Document Header for Serial Numbers for Delivery
    YOBJK_ALL - Internal Table for Object List Editing/Serial Numbers
    YEQUI - Internal Structure for IEQUI
    local data
    DATA: BEGIN OF del_wa,
    vbeln LIKE likp-vbeln,
    posnr LIKE lips-posnr,
    matnr LIKE lips-matnr,
    lfimg LIKE lips-lfimg.
    DATA: END OF del_wa.
    DATA: del_tab LIKE del_wa OCCURS 0.
    DATA: _ct TYPE i.
    DATA: lastobknr LIKE objk-obknr.
    DATA: _debug.
    CLEAR: yser00, yser01, yobjk_all, yequi, ymase.
    REFRESH: yser00, yser01, yobjk_all, yequi, ymase.
    GET PARAMETER ID 'ZEDI_DEBUG' FIELD _debug.
    OBJECT KEYS
    read the delivery items with serial numbers to be processed
    SELECT * INTO CORRESPONDING FIELDS OF TABLE del_tab
    FROM lips
    WHERE vbeln = vbeln_i
    AND serail NE space.
    if nothing is relevant for serial numbers bailout
    DESCRIBE TABLE del_tab LINES _ct.
    IF _ct IS INITIAL.
    EXIT.
    ENDIF.
    ==== read the existing object keys for delivery items
    SELECT * INTO CORRESPONDING FIELDS OF TABLE yser01
    FROM ser01
    WHERE lief_nr = vbeln_i.
    IF sy-subrc = 0.
    yser01-dbknz = 'X'. "entry exists in db
    MODIFY yser01 TRANSPORTING dbknz WHERE dbknz = space.
    ENDIF.
    == check if there is a header entry for the delivery item
    LOOP AT del_tab INTO del_wa.
    READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
    posnr = del_wa-posnr.
    IF sy-subrc NE 0.
    create one
    CALL FUNCTION 'OBJECTLIST_NUMBER'
    IMPORTING
    obknr = yser01-obknr.
    yser00-mandt = sy-mandt.
    yser00-obknr = yser01-obknr.
    APPEND yser00.
    SELECT SINGLE kunnr INTO (yser01-kunde)
    FROM likp
    WHERE vbeln = vbeln_i.
    yser01-mandt = sy-mandt.
    yser01-lief_nr = del_wa-vbeln.
    yser01-posnr = del_wa-posnr.
    yser01-vorgang = 'SDLS'.
    yser01-vbtyp = 'J'.
    yser01-bwart = '601'.
    yser01-dbknz = space. "not in db
    yser01-loknz = space. "do not delete
    APPEND yser01.
    ENDIF.
    ENDLOOP.
    check if any entries should be deleted
    LOOP AT yser01.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr.
    IF sy-subrc NE 0.
    yser01-loknz = 'X'. "mark for delete
    MODIFY yser01.
    ENDIF.
    ENDLOOP.
    collect all the object keys for the delivery item with s/n's
    LOOP AT yser01.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr.
    IF sy-subrc = 0.
    READ TABLE yser00 WITH KEY obknr = yser01-obknr.
    IF sy-subrc NE 0.
    yser00-mandt = yser01-mandt.
    yser00-obknr = yser01-obknr.
    APPEND yser00.
    ENDIF.
    ENDIF.
    ENDLOOP.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    SERIAL NO OBJECTS
    ==== read the existing serial numbers from the database
    via object number into YOBJK_ALL
    LOOP AT yser00.
    SELECT * APPENDING CORRESPONDING FIELDS OF TABLE yobjk_all
    FROM objk
    WHERE obknr = yser00-obknr.
    ENDLOOP.
    yobjk_all-dbknz = 'X'.
    MODIFY yobjk_all TRANSPORTING dbknz WHERE dbknz = space.
    === add any new serial numbers
    LOOP AT serno_tab.
    READ TABLE yser01 WITH KEY lief_nr = serno_tab-vbeln
    posnr = serno_tab-posnr.
    READ TABLE yobjk_all WITH KEY sernr = serno_tab-sernr
    matnr = del_wa-matnr.
    IF sy-subrc NE 0.
    this is a new serial number
    yobjk_all-mandt = sy-mandt.
    yobjk_all-obknr = yser01-obknr.
    yobjk_all-obzae = 0.
    yobjk_all-equnr = yequi-equnr.
    yobjk_all-objvw = 'S'.
    yobjk_all-sernr = serno_tab-sernr.
    yobjk_all-matnr = del_wa-matnr.
    yobjk_all-datum = sy-datum.
    yobjk_all-taser = 'SER01'.
    yobjk_all-equpd = 'X'.
    yobjk_all-objnr = yequi-objnr.
    yobjk_all-dbknz = space.
    yobjk_all-loknz = space.
    APPEND yobjk_all.
    ENDIF.
    ENDLOOP.
    === mark any which are no longer confirmed as deleted
    LOOP AT yobjk_all.
    READ TABLE yser01 WITH KEY obknr = yobjk_all-obknr.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr
    sernr = yobjk_all-sernr.
    IF sy-subrc NE 0.
    yobjk_all-loknz = 'X'.
    MODIFY yobjk_all TRANSPORTING loknz.
    ENDIF.
    ENDLOOP.
    EQUIPMENT RECORDS
    == get the equipment records
    LOOP AT yobjk_all.
    SELECT SINGLE * INTO CORRESPONDING FIELDS OF yequi
    FROM equi
    WHERE sernr = yobjk_all-sernr
    AND matnr = yobjk_all-matnr.
    IF sy-subrc NE 0.
    CONTINUE.
    ENDIF.
    IF yobjk_all-dbknz = space AND
    yobjk_all-loknz = space.
    yequi-dbknz = 'X'.
    yequi-obknr = yobjk_all-obknr.
    yequi-j_vorgang = 'PMS3'. "add to delivery
    yequi-matnr_old = yequi-matnr.
    APPEND yequi.
    yobjk_all-equnr = yequi-equnr.
    MODIFY yobjk_all TRANSPORTING equnr.
    CONTINUE.
    ENDIF.
    IF yobjk_all-dbknz = 'X' AND
    yobjk_all-loknz = 'X'.
    yequi-dbknz = 'X'.
    yequi-j_vorgang = 'PMSA'. "delete from delivery
    yequi-matnr_old = yequi-matnr.
    APPEND yequi.
    CONTINUE.
    ENDIF.
    ENDLOOP.
    remove any Equipment records that do not need to be processed
    DELETE yequi WHERE j_vorgang IS initial.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    fill the object counter
    LOOP AT del_tab INTO del_wa.
    READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
    posnr = del_wa-posnr.
    DO del_wa-lfimg TIMES.
    READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
    obzae = sy-index.
    IF sy-subrc NE 0.
    READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
    obzae = 0.
    IF sy-subrc = 0.
    yobjk_all-obzae = sy-index.
    MODIFY yobjk_all INDEX sy-tabix TRANSPORTING obzae.
    ENDIF.
    ENDIF.
    ENDDO.
    ENDLOOP.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    ===========================================
    update the delivery
    ===========================================
    CALL FUNCTION 'SERIAL_LISTE_POST_LS'
    TABLES
    xser00 = yser00
    xser01 = yser01
    xobjk_all = yobjk_all
    xequi = yequi
    xmase = ymase.
    TAB_CUOBJ =
    XSER03 =
    CALL FUNCTION 'STATUS_BUFFER_EXPORT_TO_MEMORY'
    EXPORTING
    i_memory_id = memid_status.
    COMMIT WORK AND WAIT.
    CALL FUNCTION 'Z_MOB_SERIALNR_REFRESH_LS'
    EXPORTING
    ctu = 'X'
    mode = 'N'
    UPDATE = 'L'
    GROUP =
    USER =
    KEEP =
    HOLDDATE =
    NODATA = '/'
    vbeln_i = vbeln_i.
    IMPORTING
    SUBRC =
    TABLES
    MESSTAB =
    ENDFUNCTION.
    FUNCTION z_mob_serialnr_refresh_ls.
    ""Local interface:
    *" IMPORTING
    *" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
    *" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
    *" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
    *" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
    *" VALUE(USER) LIKE APQI-USERID OPTIONAL
    *" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
    *" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
    *" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
    *" VALUE(VBELN_I) LIKE LIKP-VBELN
    *" EXPORTING
    *" VALUE(SUBRC) LIKE SYST-SUBRC
    *" TABLES
    *" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
    DATA: vbeln_001 LIKE bdcdata-fval.
    vbeln_001 = vbeln_i.
    subrc = 0.
    PERFORM bdc_nodata USING nodata.
    PERFORM open_group USING group user keep holddate ctu.
    PERFORM bdc_dynpro USING 'SAPMV50A' '4004'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIKP-VBELN'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'LIKP-VBELN'
    vbeln_001.
    PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=PSER_T'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIPS-POSNR(01)'.
    PERFORM bdc_dynpro USING 'SAPLIPW1' '0200'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RIPW0-SERNR(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=RWS'.
    PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=SICH_T'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIPS-MATNR(02)'.
    PERFORM bdc_transaction TABLES messtab
    USING 'VL02N'
    ctu
    mode
    update.
    IF sy-subrc <> 0.
    subrc = sy-subrc.
    EXIT.
    ENDIF.
    PERFORM close_group USING ctu.
    ENDFUNCTION.
    INCLUDE bdcrecxy.

  • I want to covert the BDC to background process

    Hi,
    I want to change the BDC program to Background processing . I am posting the code below, can you change it.
    FUNCTION YFIIN_CRC_SET_FLG1.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
    *"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
    *"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
    *"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
    *"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
    *"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
    *"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
    *"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
    *"     VALUE(QMNUM_001) LIKE  VIQMEL-QMNUM
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    subrc = 0.
    perform bdc_nodata      using NODATA.
    perform open_group      using GROUP USER KEEP HOLDDATE CTU.
    perform bdc_dynpro      using 'SAPLIQS0' '0200'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RIWO00-QMNUM'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'RIWO00-QMNUM'
                                  QMNUM_001.
    perform bdc_dynpro      using 'SAPLIQS0' '7200'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=GNOK'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'VIQMEL-QMNUM'.
    perform bdc_dynpro      using 'SAPLIQS0' '7200'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BUCH'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'VIQMEL-QMNUM'.
    perform bdc_transaction tables messtab
    using                         'IQS2'
                                  CTU
                                  MODE
                                  UPDATE.
    if sy-subrc <> 0.
      subrc = sy-subrc.
      exit.
    endif.
    perform close_group using     CTU.
    ENDFUNCTION.
    ==================================
    ***INCLUDE BDCRECXY
          Batchinputdata of single transaction
    DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
          Nodata-Character
    DATA:   NODATA_CHARACTER VALUE '/'.
      create batchinput session                                          *
    FORM OPEN_GROUP
         USING P_GROUP    LIKE APQI-GROUPID
               P_USER     LIKE APQI-USERID
               P_KEEP     LIKE APQI-QERASE
               P_HOLDDATE LIKE APQI-STARTDATE
               P_CTU      LIKE APQI-PUTACTIVE.
      IF P_CTU <> 'X'.
        CALL FUNCTION 'BDC_OPEN_GROUP'
             EXPORTING  CLIENT   = SY-MANDT
                        GROUP    = P_GROUP
                        USER     = P_USER
                        KEEP     = P_KEEP
                        HOLDDATE = P_HOLDDATE.
       ENDIF.
    ENDFORM.
      end batchinput session                                             *
    FORM CLOSE_GROUP USING P_CTU LIKE APQI-PUTACTIVE.
      IF P_CTU <> 'X'.
    close batchinput group
        CALL FUNCTION 'BDC_CLOSE_GROUP'.
      ENDIF.
    ENDFORM.
           Start new transaction according to parameters                 *
    FORM BDC_TRANSACTION TABLES P_MESSTAB
                         USING  P_TCODE
                                P_CTU
                                P_MODE
                                P_UPDATE.
    DATA: L_SUBRC LIKE SY-SUBRC.
      IF P_CTU <> 'X'.
        CALL FUNCTION 'BDC_INSERT'
             EXPORTING  TCODE     = P_TCODE
             TABLES     DYNPROTAB = BDCDATA
             EXCEPTIONS OTHERS    = 1.
      ELSE.
        CALL TRANSACTION P_TCODE USING BDCDATA
                         MODE   P_MODE
                         UPDATE P_UPDATE
                         MESSAGES INTO P_MESSTAB.
      ENDIF.
      L_SUBRC = SY-SUBRC.
      REFRESH BDCDATA.
      SY-SUBRC = L_SUBRC.
    ENDFORM.
           Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR BDCDATA.
      BDCDATA-PROGRAM  = PROGRAM.
      BDCDATA-DYNPRO   = DYNPRO.
      BDCDATA-DYNBEGIN = 'X'.
      APPEND BDCDATA.
    ENDFORM.
           Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
      IF fval <> NODATA_CHARACTER.
        CLEAR BDCDATA.
        BDCDATA-FNAM = FNAM.
        BDCDATA-FVAL = FVAL.
        APPEND BDCDATA.
      ENDIF.
    ENDFORM.
           Insert field                                                  *
    FORM BDC_NODATA USING P_NODATA.
      NODATA_CHARACTER = P_NODATA.
    ENDFORM.

    Hi..
    Incase of Session method you have to Schedule the Program RSBDCSUB in backgroud using the Tcode SM36.
    This program Takes the Session Name as input and Process the Session in background.
    Note: Create a variant with the Session name for this program
    <b>Reward if Helpful</b>

  • DELIVERY & GI PROBLEM SD:ABAP PROGRAM

    HAI FRIENDS
      I HAVE CREATED ONE SALES ORDER. NOW I WANT DELIVERY(VL02N) AND GOODS ISSUER FOR THAT SALES ORDER. I WANT BDC RECORDING
    Program ID       : ZRFC_RUSHORDER
    Transaction Code : Z*
    Author           : Veerendra kumar E
    Description      : RFC For Sales Process using Session Method calling
                       3 Transactions VA01,VL23 & VF06
    Project          : KURLON
    Version          : 1.0
    Change History
        Date   |   Programmer   |   Corr. #   |   Description
               |                |             |
               |                |             |
    FUNCTION ZRFC_RUSHORDER .
    ""Local interface:
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    *"      RO_HEADER STRUCTURE  ZSD_HEADER
    *"      RO_ITEM STRUCTURE  ZSD_ITEM
           INTERNAL TABLES,STRUCTURES & VARIABLES
    *TABLES : ZSO_CREATE_TEXT.
    DATA: CTU      LIKE  APQI-PUTACTIVE,
          MODE     LIKE  APQI-PUTACTIVE,
          UPDATE   LIKE  APQI-PUTACTIVE,
          GROUP    LIKE  APQI-GROUPID,
          USER     LIKE  APQI-USERID,
          KEEP     LIKE  APQI-QERASE,
          HOLDDATE LIKE  APQI-STARTDATE,
          NODATA   LIKE  APQI-PUTACTIVE.
    DATA : SORDER_FINAL LIKE VBAK-VBELN,
           SORDER(15)   TYPE C,
           V_CODE(2)    TYPE C,
           V_PLANT     LIKE EKPO-WERKS,
           YEAR_CONVERSION(1) TYPE C.
    DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
    DATA : V_DATE LIKE SY-DATUM,
           V_TIME LIKE SY-UZEIT.
    DATA : SESSION_NAM(30) TYPE C.
           CTU = ' '.
           MODE = 'N'.
           USER = SY-UNAME.
           CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
                                                   SESSION_NAM.
           GROUP = 'RUSH_ORDER'.
           KEEP = 'X'.
           UPDATE = 'L'.
           HOLDDATE = ''.
           NODATA = '/'.
    SUBRC = 0.
    *CREATING SESSSION
    PERFORM OPEN_GROUP      USING GROUP USER KEEP HOLDDATE CTU.
    LOOP AT RO_HEADER.
    MOVE RO_HEADER-SORDER TO SORDER.
    V_PLANT = SORDER+0(4).
    SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
    IF SORDER+4(4) = '2005'.
         YEAR_CONVERSION = 'E'.
    ELSEIF SORDER+4(4) = '2006'.
         YEAR_CONVERSION = 'F'.
    ELSEIF SORDER+4(4) = '2007'.
         YEAR_CONVERSION = 'G'.
    ELSEIF SORDER+4(4) = '2008'.
         YEAR_CONVERSION = 'H'.
    ELSEIF SORDER+4(4) = '2009'.
         YEAR_CONVERSION = 'J'.
    ELSEIF SORDER+4(4) = '2010'.
         YEAR_CONVERSION = 'K'.
    ELSEIF SORDER+4(4) = '2011'.
         YEAR_CONVERSION = 'L'.
    ELSEIF SORDER+4(4) = '2012'.
         YEAR_CONVERSION = 'M'.
    ELSEIF SORDER+4(4) = '2013'.
         YEAR_CONVERSION = 'N'.
    ELSEIF SORDER+4(4) = '2014'.
         YEAR_CONVERSION = 'P'.
    ELSEIF SORDER+4(4) = '2015'.
         YEAR_CONVERSION = 'Q'.
    ELSEIF SORDER+4(4) = '2016'.
         YEAR_CONVERSION = 'R'.
    ELSEIF SORDER+4(4) = '2017'.
         YEAR_CONVERSION = 'S'.
    ELSEIF SORDER+4(4) = '2018'.
         YEAR_CONVERSION = 'T'.
    ELSEIF SORDER+4(4) = '2019'.
         YEAR_CONVERSION = 'U'.
    ELSEIF SORDER+4(4) = '2020'.
         YEAR_CONVERSION = 'V'.
    ELSEIF SORDER+4(4) = '2021'.
         YEAR_CONVERSION = 'W'.
    ELSEIF SORDER+4(4) = '2022'.
         YEAR_CONVERSION = 'X'.
    ELSEIF SORDER+4(4) = '2023'.
         YEAR_CONVERSION = 'Y'.
    ELSEIF SORDER+4(4) = '2024'.
         YEAR_CONVERSION = 'Z'.
    ELSEIF SORDER+4(4) = '2025'.
         YEAR_CONVERSION = 'A'.
    ELSEIF SORDER+4(4) = '2026'.
         YEAR_CONVERSION = 'B'.
    ELSEIF SORDER+4(4) = '2027'.
         YEAR_CONVERSION = 'C'.
    ENDIF.
    CONCATENATE  YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
    CLEAR YEAR_CONVERSION.
    CLEAR V_CODE.
    CLEAR V_PLANT.
    Text Element Creation for Sales order.
    ZSO_CREATE_TEXT-SORDER      = SORDER_FINAL.
    ZSO_CREATE_TEXT-LR_NUMBER   = RO_HEADER-LR_NUMBER.
    ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
    ZSO_CREATE_TEXT-Z003        = RO_HEADER-Z003.
    ZSO_CREATE_TEXT-Z004        = RO_HEADER-Z004.
    INSERT ZSO_CREATE_TEXT.
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '0101'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'VBAK-SPART'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'VBAK-AUART'
                                    'ZKSO'.  "AUART_001.
      PERFORM BDC_FIELD       USING 'VBAK-VKORG'
                                    RO_HEADER-VKORG.  "VKORG_002.
      PERFORM BDC_FIELD       USING 'VBAK-VTWEG'
                                    RO_HEADER-VTWEG.    "VTWEG_003.
      PERFORM BDC_FIELD       USING 'VBAK-SPART'
                                    RO_HEADER-SPART.    "SPART_004.
    Sales Order Date insertion.......
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=KKAU'.
      PERFORM BDC_FIELD       USING 'VBAK-VBELN'
                                    SORDER_FINAL.
      PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                    RO_HEADER-SP.
      PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                    RO_HEADER-SH.
      PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                    RO_HEADER-REF_PO.
      PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                    RO_HEADER-ZTERM.
      WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4002'.
      perform bdc_field       using 'BDC_OKCODE'
                                  '=T\03'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'VBAK-AUDAT'.
      PERFORM BDC_FIELD       USING 'VBAK-AUDAT'
                                    RO_HEADER-SODATE.  "Document Date
      PERFORM BDC_FIELD       USING 'VBKD-PRSDT'
                                    RO_HEADER-SODATE.  "Pricing Date
    Billing Screen    ***********************
      perform bdc_dynpro      using 'SAPMV45A' '4002'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/EBACK'.
      perform bdc_field       using 'BDC_CURSOR'
                                  'VBKD-FKDAT'.
      PERFORM BDC_FIELD       USING 'VBKD-FKDAT'
                                    RO_HEADER-SODATE.  "Billing date
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=KKO1'.
      PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                    RO_HEADER-SP.     "KUNNR_006.
      PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                    RO_HEADER-SH.     "KUNNR_007.
      PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                    RO_HEADER-REF_PO. "BSTKD_008.
      PERFORM BDC_FIELD       USING 'RV45A-KETDAT'
                                    RO_HEADER-SODATE. "Delivery Date.
      PERFORM BDC_FIELD       USING 'VBKD-ZTERM'
                                    RO_HEADER-ZTERM.     "ZTERM_011.
    ************************Added for test 25-02******************
      PERFORM BDC_FIELD       USING 'RV45A-KETDAT'        " CNGD FROM 'KEDAT' TO 'KETDAT'.
                                    RO_HEADER-SODATE.     "REQ DELVY DATE.
      PERFORM BDC_FIELD       USING 'VBKD-PRSDT'          "CNGD FROM 'RV45A' TO 'VBKD'.
                                    RO_HEADER-SODATE.     "PRICING DATE.
    ************************Added for test 25-02******************
    *Dont DELETE, For Future Use of Inco terms 1 & 2.
    *PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                 'VBKD-INCO2'.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO1'
                                 RO_HEADER-INCO1.  "INCO1_012.
    *PERFORM BDC_FIELD       USING 'VBKD-INCO2'
                                 RO_HEADER-INCO2.  "INCO2_013.
    Header condition types......................................
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'KOMV-KSCHL(05)'.
    IF RO_HEADER-KSCHL1 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR1.
    ENDIF.
    IF RO_HEADER-KSCHL2 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR2.
    ENDIF.
    IF RO_HEADER-KSCHL3 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR3.
    ENDIF.
    *change on 11.04.2006 for adding rounding off condition type.
    IF RO_HEADER-KSCHL4 IS NOT INITIAL.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '=V69A_KOAN'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KSCHL(04)'.
      PERFORM BDC_FIELD       USING  'BDC_CURSOR'
                                     'KOMV-KBETR(02)'.
      PERFORM BDC_FIELD       USING  'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
      PERFORM BDC_FIELD       USING  'KOMV-KBETR(02)' RO_HEADER-KBETR4.
    ENDIF.
      PERFORM BDC_DYNPRO      USING  'SAPMV45A' '5002'.
      PERFORM BDC_FIELD       USING  'BDC_OKCODE'
                                     '/EBACK'.
    Dont DELETE, For Future Use  of : Sales Person Data.................
    *PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    *PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                   '=HEAD'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=T\08'.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=PAAN'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                  'PARALL'. "GV_FILTER_024.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARVW(09)'
                                  'VE'."REC-PARVW_09_025.
    *perform bdc_field       using 'GVS_TC_DATA-REC-PARTNER(09)'
                                  '0'. "REC-PARTNER_09_026.
    *perform bdc_dynpro      using 'SAPMV45A' '4002'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/EBACK'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'GVS_TC_DATA-REC-PARTNER(09)'.
    *perform bdc_field       using 'GV_FILTER'
                                 'PARALL'. "GV_FILTER_027.
      PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=POAN'.
      PERFORM BDC_FIELD       USING 'KUAGV-KUNNR'
                                    RO_HEADER-SP.     "KUNNR_006.
      PERFORM BDC_FIELD       USING 'KUWEV-KUNNR'
                                    RO_HEADER-SH.     "KUNNR_007.
      PERFORM BDC_FIELD       USING 'VBKD-BSTKD'
                                    RO_HEADER-REF_PO. "BSTKD_008.
    *FETCHING LINE ITEM DATA.
        LOOP AT RO_ITEM WHERE  SORDER =  RO_HEADER-SORDER.
          PERFORM BDC_DYNPRO   USING   'SAPMV45A'     '4001'.
          PERFORM BDC_FIELD    USING   'BDC_OKCODE'   '=POAN'.
          PERFORM BDC_FIELD    USING    'RV45A-MABNR(02)'  RO_ITEM-MATNR.
          PERFORM BDC_FIELD    USING    'RV45A-KWMENG(02)' RO_ITEM-QTY.
         PERFORM BDC_FIELD    USING    'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
          PERFORM BDC_FIELD    USING    'VBAP-WERKS(02)'  RO_ITEM-PLANT.
          PERFORM BDC_FIELD    USING    'VBAP-LGORT(02)'  RO_ITEM-SLOC.
          PERFORM BDC_FIELD    USING    'VBAP-CHARG(02)'  RO_ITEM-BATCH.
    *FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
    IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
    PERFORM BDC_FIELD       USING 'VBAP-PSTYV(02)'
                                  'ZANN'.
    ELSE.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    Condition Types For The Items
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                   '=PKO1'.
    PERFORM BDC_FIELD       USING 'RV45A-VBAP_SELKZ(01)' 'X'.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=V69A_KOAN'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'KOMV-KSCHL(02)'.
    Condition Type 1...........
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
    PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
    Condition Type 2...........
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=V69A_KOAN'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'KOMV-KSCHL(02)'.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
    PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
    Condition Type 3.............
    IF RO_ITEM-KSCHL3 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
    ENDIF.
    Condition Type 4..............
    IF RO_ITEM-KSCHL4 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
    ENDIF.
    Condition Type 5...............
    IF RO_ITEM-KSCHL5 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
    ENDIF.
    Condition Type 6...............
    IF RO_ITEM-KSCHL6 IS NOT INITIAL.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=V69A_KOAN'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KOMV-KSCHL(02)'.
        PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
        PERFORM BDC_FIELD       USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
    ENDIF.
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '5003'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/EBACK'.
    ENDIF.
    ENDLOOP.
    Saving The Sales Document
    PERFORM BDC_DYNPRO      USING 'SAPMV45A' '4001'.
    PERFORM BDC_FIELD      USING 'BDC_OKCODE'   '=SICH'.
    PERFORM BDC_TRANSACTION TABLES MESSTAB
    USING                          'VA01'
                                    CTU
                                    MODE
                                    UPDATE.
    perform bdc_dynpro      using 'SAPMV50A' '4004'.
    perform bdc_field       using 'BDC_CURSOR'                              'LIKP-VBELN'.
    perform bdc_field       using 'BDC_OKCODE'                              '/00'.
    *perform bdc_field       using 'LIKP-VBELN'         LIKP-VBELN."         '7012000733'.
    perform bdc_dynpro      using 'SAPMV50A' '1000'.
    perform bdc_field       using 'BDC_OKCODE'                              '=SICH_T'.
    *perform bdc_field       using 'LIKP-BLDAT'       RO_HEADER-SODATE.      '27.06.2006'.
    perform bdc_field       using 'BDC_CURSOR'                              'LIKP-WADAT_IST'.
    perform bdc_field       using 'LIKP-WADAT'   RO_HEADER-SODATE.  "       '26.05.2006'.
    *perform bdc_field       using 'LIKP-WAUHR'                              '00:00:00'.
    perform bdc_field       using 'LIKP-BTGEW'                              '10'.
    perform bdc_field       using 'LIKP-GEWEI'                              'KG'.
    perform bdc_field       using 'LIKP-WADAT_IST' RO_HEADER-SODATE."       '26.05.2006'.
    PERFORM BDC_TRANSACTION TABLES MESSTAB
    USING                          'VL02N'
                                    CTU
                                    MODE
                                    UPDATE.

    Hi,
      From the explanation given, I think if you change the transaction from VL02N to VL01N this should work, because the delivery has not been created yet,
    Regards,

  • Bdc not working with workflow

    Hallo,
    I have an issue with a bdc FM i created not working with workflow.
    If I test the FM, it works ok.
    If i Test the method calling the FM it works ok.
    if i test the task calling the method it works ok.
    If I run the workflow it doesn't work, and i get the following messages:
    S     DC     1     Unable to initialise ABAP Control Framework ...             
    S     DC     1     Unable to initialise ABAP Control Framework ...          
    S     DC     6     Control Framework: Fatal error - GUI cannot be reached     
    A     SY     2     Exception condition "CNTL_ERROR" raised.
    What is the meaning of this??     
    Bdc is calling Me54n to set to click on reject button during Purchase Requisition Release,
    putting the PR processing state in status '08'
    I checked all the binding which are fine. No container parameter are passed a part from the business object.
    here is the FM coding:
    FUNCTION ZME_N_WF_REJ_PR.
    ""Local interface:
    *"  IMPORTING
    *"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
    *"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
    *"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
    *"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
    *"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
    *"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
    *"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
    *"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
    *"     VALUE(BANFN_003) LIKE  BDCDATA-FVAL
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    subrc = 0.
    perform bdc_nodata      using NODATA.
    perform open_group      using GROUP USER KEEP HOLDDATE CTU.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=MECHOB'.
    *perform bdc_field       using 'DYN_6000-LIST'
                                 LIST_001.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MEREQ3328-AFNAM'.
    *perform bdc_field       using 'MEREQ3328-EKGRP'
                                 EKGRP_002.
    perform bdc_dynpro      using 'SAPLMEGUI' '0002'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=MEOK'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MEPO_SELECT-BANFN'.
    perform bdc_field       using 'MEPO_SELECT-BANFN'
                                  BANFN_003.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=MEREJECT'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DYN_6000-LIST'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=MESAVE'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DYN_6000-LIST'.
    perform bdc_transaction tables messtab
    using                         'ME54N'
                                  CTU
                                  MODE
                                  UPDATE.
    if sy-subrc <> 0.
      subrc = sy-subrc.
      exit.
    endif.
    perform close_group using     CTU.
    ENDFUNCTION.
    INCLUDE BDCRECXY .
    I tries the same approach on ML81N to block a service entry sheet.(pressing the lock icon),
    I get exactly the same issue.
    Anybody knows how to resolve?
    Or how to do the same without using a bdc call?
    regards,
    marco

    Hi
    this is the Method callind the FM
    object is BUS2105 w delegation ZBUS2105.
    BEGIN_METHOD ZRELEASEREJECTED CHANGING CONTAINER.
    Data: CTU TYPE APQI-PUTACTIVE,      
          MODE TYPE APQI-PUTACTIVE,     
          UPDATE TYPE APQI-PUTACTIVE,
         NODATA TYPE APQI-PUTACTIVE.  
    CTU = 'X'.               
    MODE = 'N'.                
    UPDATE = 'L'.              
    NODATA = '/'.              
    iobjectkey = object-key.
       CALL FUNCTION 'ZME_N_WF_REJ_PR'             
         EXPORTING                                 
           BANFN_003 = iobjectkey                  
           NODATA = NODATA                                            
           UPDATE = UPDATE                         
           MODE = MODE                             
           CTU = CTU                               
         IMPORTING                                 
           SUBRC = SUBRC                           
         TABLES                                    
           MESSTAB = MESSAGE                       
         EXCEPTIONS                                
           OTHERS = 01.                            
       CASE SY-SUBRC.                              
         WHEN 0.            " OK                   
         WHEN OTHERS.       " to be implemented    
       ENDCASE.                                    
    SWC_SET_ELEMENT CONTAINER 'Subrc' SUBRC.                   
    SWC_SET_TABLE CONTAINER 'MESSAGE' MESSAGE.                                                                               
    END_METHOD.

  • Bdc not working with workflow - background task

    Hallo,
    I have an issue with a bdc FM i created not working with workflow.
    If I test the FM, it works ok.
    If i Test the method calling the FM it works ok.
    if i test the task calling the method it works ok.
    If I run the workflow it doesn't work, and i get the following messages:
    S DC 1 Unable to initialise ABAP Control Framework ...
    S DC 1 Unable to initialise ABAP Control Framework ...
    S DC 6 Control Framework: Fatal error - GUI cannot be reached
    A SY 2 Exception condition "CNTL_ERROR" raised.
    What is the meaning of this??
    Bdc is calling Me54n to set to click on reject button during Purchase Requisition Release,
    putting the PR processing state in status '08'
    I checked all the binding which are fine. No container parameter are passed a part from the business object.
    here is the FM coding:
    FUNCTION ZME_N_WF_REJ_PR.
    ""Local interface:
    *" IMPORTING
    *" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
    *" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
    *" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
    *" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
    *" VALUE(USER) LIKE APQI-USERID OPTIONAL
    *" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
    *" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
    *" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
    *" VALUE(BANFN_003) LIKE BDCDATA-FVAL
    *" EXPORTING
    *" VALUE(SUBRC) LIKE SYST-SUBRC
    *" TABLES
    *" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
    subrc = 0.
    perform bdc_nodata using NODATA.
    perform open_group using GROUP USER KEEP HOLDDATE CTU.
    perform bdc_dynpro using 'SAPLMEGUI' '0014'.
    perform bdc_field using 'BDC_OKCODE'
    '=MECHOB'.
    *perform bdc_field using 'DYN_6000-LIST'
    LIST_001.
    perform bdc_field using 'BDC_CURSOR'
    'MEREQ3328-AFNAM'.
    *perform bdc_field using 'MEREQ3328-EKGRP'
    EKGRP_002.
    perform bdc_dynpro using 'SAPLMEGUI' '0002'.
    perform bdc_field using 'BDC_OKCODE'
    '=MEOK'.
    perform bdc_field using 'BDC_CURSOR'
    'MEPO_SELECT-BANFN'.
    perform bdc_field using 'MEPO_SELECT-BANFN'
    BANFN_003.
    perform bdc_dynpro using 'SAPLMEGUI' '0014'.
    perform bdc_field using 'BDC_OKCODE'
    '=MEREJECT'.
    perform bdc_field using 'BDC_CURSOR'
    'DYN_6000-LIST'.
    perform bdc_dynpro using 'SAPLMEGUI' '0014'.
    perform bdc_field using 'BDC_OKCODE'
    '=MESAVE'.
    perform bdc_field using 'BDC_CURSOR'
    'DYN_6000-LIST'.
    perform bdc_transaction tables messtab
    using 'ME54N'
    CTU
    MODE
    UPDATE.
    if sy-subrc 0.
    subrc = sy-subrc.
    exit.
    endif.
    perform close_group using CTU.
    ENDFUNCTION.
    INCLUDE BDCRECXY .
    I tries the same approach on ML81N to block a service entry sheet.(pressing the lock icon),
    I get exactly the same issue.
    Anybody knows how to resolve?
    Or how to do the same without using a bdc call?
    regards,
    marco

    Hallo,
    I have an issue with a bdc FM i created not working with workflow.
    If I test the FM, it works ok.
    If i Test the method calling the FM it works ok.
    if i test the task calling the method it works ok.
    If I run the workflow it doesn't work, and i get the following messages:
    S DC 1 Unable to initialise ABAP Control Framework ...
    S DC 1 Unable to initialise ABAP Control Framework ...
    S DC 6 Control Framework: Fatal error - GUI cannot be reached
    A SY 2 Exception condition "CNTL_ERROR" raised.
    What is the meaning of this??
    Bdc is calling Me54n to set to click on reject button during Purchase Requisition Release,
    putting the PR processing state in status '08'
    I checked all the binding which are fine. No container parameter are passed a part from the business object.
    here is the FM coding:
    FUNCTION ZME_N_WF_REJ_PR.
    ""Local interface:
    *" IMPORTING
    *" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
    *" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
    *" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
    *" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
    *" VALUE(USER) LIKE APQI-USERID OPTIONAL
    *" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
    *" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
    *" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
    *" VALUE(BANFN_003) LIKE BDCDATA-FVAL
    *" EXPORTING
    *" VALUE(SUBRC) LIKE SYST-SUBRC
    *" TABLES
    *" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
    subrc = 0.
    perform bdc_nodata using NODATA.
    perform open_group using GROUP USER KEEP HOLDDATE CTU.
    perform bdc_dynpro using 'SAPLMEGUI' '0014'.
    perform bdc_field using 'BDC_OKCODE'
    '=MECHOB'.
    *perform bdc_field using 'DYN_6000-LIST'
    LIST_001.
    perform bdc_field using 'BDC_CURSOR'
    'MEREQ3328-AFNAM'.
    *perform bdc_field using 'MEREQ3328-EKGRP'
    EKGRP_002.
    perform bdc_dynpro using 'SAPLMEGUI' '0002'.
    perform bdc_field using 'BDC_OKCODE'
    '=MEOK'.
    perform bdc_field using 'BDC_CURSOR'
    'MEPO_SELECT-BANFN'.
    perform bdc_field using 'MEPO_SELECT-BANFN'
    BANFN_003.
    perform bdc_dynpro using 'SAPLMEGUI' '0014'.
    perform bdc_field using 'BDC_OKCODE'
    '=MEREJECT'.
    perform bdc_field using 'BDC_CURSOR'
    'DYN_6000-LIST'.
    perform bdc_dynpro using 'SAPLMEGUI' '0014'.
    perform bdc_field using 'BDC_OKCODE'
    '=MESAVE'.
    perform bdc_field using 'BDC_CURSOR'
    'DYN_6000-LIST'.
    perform bdc_transaction tables messtab
    using 'ME54N'
    CTU
    MODE
    UPDATE.
    if sy-subrc 0.
    subrc = sy-subrc.
    exit.
    endif.
    perform close_group using CTU.
    ENDFUNCTION.
    INCLUDE BDCRECXY .
    I tries the same approach on ML81N to block a service entry sheet.(pressing the lock icon),
    I get exactly the same issue.
    Anybody knows how to resolve?
    Or how to do the same without using a bdc call?
    regards,
    marco

  • Order quantity error in VA01 BDC please some one reply

    i have done a bdc  f.m for va01 with the items in import table but in all screen mode  when the values for order quantity is entered  it shows an information error to enter order quantity but as far as i know the coding is right...
    my code is..
    FUNCTION zfm_sales_ord_create2.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(I_HEADER_DETAILS) LIKE  ZVA01HEAD STRUCTURE  ZVA01HEAD
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    *"      IT_ITEM_DETAILS STRUCTURE  ZVA01ITEM
    DATA : ctu  LIKE  apqi-putactive  VALUE 'X',
              mode  LIKE  apqi-putactive VALUE  'A',
              update  LIKE  apqi-putactive  VALUE 'L',
              group LIKE  apqi-groupid          ,
              user  LIKE  apqi-userid            ,
              keep  LIKE  apqi-qerase             ,
              holddate  LIKE  apqi-startdate       ,
              nodata  LIKE  apqi-putactive  VALUE '',
              wa_item_details LIKE LINE OF it_item_details..
      subrc = 0.
      DATA : val TYPE i,
      val = 1.
      PERFORM bdc_nodata      USING nodata.
      PERFORM open_group      USING group user keep holddate ctu.
      PERFORM bdc_dynpro      USING 'SAPMV45A' '0101'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'VBAK-AUART'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM bdc_field       USING 'VBAK-AUART'
                                    i_header_details-order_type.
      PERFORM bdc_field       USING 'VBAK-VKORG'
                                    i_header_details-sales_org.
      PERFORM bdc_field       USING 'VBAK-VTWEG'
                                    i_header_details-distri_chann.
      PERFORM bdc_field       USING 'VBAK-SPART'
                                    i_header_details-division.
      LOOP AT it_item_details INTO wa_item_details .
        IF val = 1.
          PERFORM bdc_dynpro      USING 'SAPMV45A' '4001'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '=POAN'.
          PERFORM bdc_field       USING 'KUAGV-KUNNR'
                                        i_header_details-sold_to_party.
          PERFORM bdc_field       USING 'KUWEV-KUNNR'
                                        i_header_details-ship_to_party.
          PERFORM bdc_field       USING 'RV45A-KETDAT'
                                        i_header_details-req_deliv_date.
          PERFORM bdc_field       USING 'RV45A-KPRGBZ'
                                         i_header_details-delivery_date_type.
    *perform bdc_field       using 'VBKD-PRSDT'
                                 PRSDT_009.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'RV45A-KWMENG(01)'.
           PERFORM bdc_field       USING 'RV45A-MABNR(01)'
                                        wa_item_details-material_no.
    perform bdc_field       using 'RV45A-KWMENG(01)'
                                 wa_item_details-order_quantity.
                                    '22' .
        ELSE.
          PERFORM bdc_dynpro      USING 'SAPMV45A' '4001'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '=POAN'.
    *perform bdc_field       using 'KUAGV-KUNNR'
                                 KUNNR_012.
    *perform bdc_field       using 'KUWEV-KUNNR'
                                 KUNNR_013.
    *perform bdc_field       using 'RV45A-KETDAT'
                                 KETDAT_014.
    *perform bdc_field       using 'RV45A-KPRGBZ'
                                 KPRGBZ_015.
    *perform bdc_field       using 'VBKD-PRSDT'
                                 PRSDT_016.
    *perform bdc_field       using 'VBKD-ZTERM'
                                 ZTERM_017.
          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'RV45A-KWMENG(02)'.
          PERFORM bdc_field       USING 'RV45A-MABNR(02)'
                                        wa_item_details-material_no.
    **perform bdc_field       using 'BDC_CURSOR'
                                 'RV45A-KWMENG(02)'.
    perform bdc_field       using 'RV45A-KWMENG(02)'
                                  wa_item_details-order_quantity.
                                 '22'.
        ENDIF.
        val = val + 1.
      ENDLOOP.
      PERFORM bdc_dynpro      USING 'SAPMV45A' '4001'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=SICH'.
    *perform bdc_field       using 'KUAGV-KUNNR'
                                 KUNNR_020.
    *perform bdc_field       using 'KUWEV-KUNNR'
                                 KUNNR_021.
    *perform bdc_field       using 'RV45A-KETDAT'
                                 KETDAT_022.
    *perform bdc_field       using 'RV45A-KPRGBZ'
                                 KPRGBZ_023.
    *perform bdc_field       using 'VBKD-PRSDT'
                                 PRSDT_024.
    *perform bdc_field       using 'VBKD-ZTERM'
                                 ZTERM_025.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'RV45A-KWMENG(02)'.
    *perform bdc_field       using 'RV45A-MABNR(02)'
                                 MABNR_02_026.
    *perform bdc_field       using 'RV45A-KWMENG(02)'
                                 KWMENG_02_027.
      PERFORM bdc_transaction TABLES messtab
      USING                         'VA01'
                                    ctu
                                    mode
                                    update.
      IF sy-subrc <> 0.
        subrc = sy-subrc.
        EXIT.
      ENDIF.
      PERFORM close_group USING     ctu.
    ENDFUNCTION.
    if i   hard code that value '22' for RV45A-KWMENG its working fine, with out any error but when
    get it from the WA it shows an error....

    Hi,
    Check field length of 'RV45A-KWMENG and wa_item_details-order_quantity. Try changing wa_item_details-order_quantity to type CHAR. Alternatively use BAPI_SALESORDER_CREATE*
    Cheers.
    ...Reward if useful.

  • Error with Call Transaction or Session

    Hi All,
    I have written a BDC RFC for 'PO13' transaction which will create a position. When the BDC is run in the foreground mode and with all screens displyed then the BDC runs absolutely perfect but once this is made as a webservice it gives an error in the IE saying a CNTL_SYSTEM_ERROR.
    I tried my hand in making it as a session. If the BDC is scheduled as a session and executed in background it gives the exact same error message.
    The only way it works is making it as a foreground or make it a foreground but to display only error screens.
    Is there a way that we can change the properties of the BDC session to run it as "Show only Error screens" programatically ?
    Best Regards
    Sudhi.
    The function module code is as follows:
    FUNCTION ZHR_CREATE_POSN1.
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(SHORT017) LIKE  BDCDATA-FVAL
    *"     REFERENCE(STEXT018) LIKE  BDCDATA-FVAL
    *"     REFERENCE(SHORT021) LIKE  BDCDATA-FVAL
    *"     REFERENCE(STEXT022) LIKE  BDCDATA-FVAL
    *"     REFERENCE(ORGUNIT) LIKE  BDCDATA-FVAL
    *"  EXPORTING
    *"     REFERENCE(SUBRC) LIKE  SYST-SUBRC
    *"     REFERENCE(POSITIONID) LIKE  HRP1000-OBJID
      TABLES: USR01.
      DATA: CTU LIKE  APQI-PUTACTIVE VALUE ' ',
            MODE LIKE  APQI-PUTACTIVE VALUE 'N',
            UPDATE LIKE  APQI-PUTACTIVE VALUE 'L',
            GROUP LIKE  APQI-GROUPID VALUE 'SUDHI1',
            USER LIKE  APQI-USERID,
            KEEP LIKE  APQI-QERASE,
            HOLDDATE LIKE  APQI-STARTDATE,
            NODATA LIKE  APQI-PUTACTIVE VALUE '/',
            PLVAR_001 LIKE  BDCDATA-FVAL VALUE '01',
            SEARK_002 LIKE  BDCDATA-FVAL VALUE '',
            TIMR6_003 LIKE  BDCDATA-FVAL VALUE 'X',
            BEGDA_004 LIKE  BDCDATA-FVAL,
            ENDDA_005 LIKE  BDCDATA-FVAL,
            PLVAR_006 LIKE  BDCDATA-FVAL VALUE '01',
            TIMR6_007 LIKE  BDCDATA-FVAL VALUE 'X',
            BEGDA_008 LIKE  BDCDATA-FVAL,
            ENDDA_009 LIKE  BDCDATA-FVAL,
            MARKFELD_01_010 LIKE  BDCDATA-FVAL VALUE 'X',
            PLVAR_011 LIKE  BDCDATA-FVAL VALUE '01',
            TIMR6_012 LIKE  BDCDATA-FVAL VALUE 'X',
            BEGDA_013 LIKE  BDCDATA-FVAL,
            ENDDA_014 LIKE  BDCDATA-FVAL,
            BEGDA_015 LIKE  BDCDATA-FVAL,
            ENDDA_016 LIKE  BDCDATA-FVAL,
            BEGDA_019 LIKE  BDCDATA-FVAL,
            ENDDA_020 LIKE  BDCDATA-FVAL,
            EDATE(8) TYPE C VALUE '99991231'.
      USER = SY-UNAME.
    HOLDDATE = SY-DATUM.
      SELECT SINGLE * FROM USR01 WHERE BNAME = SY-UNAME.
      CASE USR01-DATFM.
        WHEN '1'.
          CONCATENATE SY-DATUM6(2) '.' SY-DATUM4(2) '.' SY-DATUM(4) INTO
      BEGDA_004.
          CONCATENATE EDATE6(2) '.' EDATE4(2) '.' EDATE(4) INTO
      ENDDA_005.
        WHEN '2'.
          CONCATENATE SY-DATUM4(2) '/' SY-DATUM6(2) '/' SY-DATUM(4) INTO
      BEGDA_004.
          CONCATENATE EDATE4(2) '/' EDATE6(2) '/' EDATE(4) INTO ENDDA_005.
        WHEN '3'.
          CONCATENATE SY-DATUM4(2) '-' SY-DATUM6(2) '-' SY-DATUM(4) INTO
      BEGDA_004.
          CONCATENATE EDATE4(2) '-' EDATE6(2) '-' EDATE(4) INTO ENDDA_005.
        WHEN '4'.
          CONCATENATE SY-DATUM(4) '.' SY-DATUM4(2) '.' SY-DATUM6(2) INTO
      BEGDA_004.
          CONCATENATE EDATE(4) '.' EDATE4(2) '.' EDATE6(2) INTO ENDDA_005.
        WHEN '5'.
          CONCATENATE SY-DATUM(4) '/' SY-DATUM4(2) '/' SY-DATUM6(2) INTO
      BEGDA_004.
          CONCATENATE EDATE(4) '/' EDATE4(2) '/' EDATE6(2) INTO ENDDA_005.
        WHEN '6'.
          CONCATENATE SY-DATUM(4) '-' SY-DATUM4(2) '-' SY-DATUM6(2) INTO
      BEGDA_004.
          CONCATENATE EDATE(4) '-' EDATE4(2) '-' EDATE6(2) INTO ENDDA_005.
      ENDCASE.
      BEGDA_008 = BEGDA_004.
      BEGDA_013 = BEGDA_004.
      BEGDA_015 = BEGDA_004.
      BEGDA_019 = BEGDA_004.
      ENDDA_009 = ENDDA_005.
      ENDDA_014 = ENDDA_005.
      ENDDA_016 = ENDDA_005.
      ENDDA_020 = ENDDA_005.
      DATA: L_OBJID LIKE HRP1000-OBJID OCCURS 0 WITH HEADER LINE.
      DATA : V_COUNT TYPE I,
             V_OBJID LIKE BDCDATA-FVAL,
             MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
      SUBRC = 0.
      PERFORM BDC_NODATA      USING NODATA.
      PERFORM OPEN_GROUP      USING GROUP USER KEEP HOLDDATE CTU.
      PERFORM BDC_DYNPRO      USING 'SAPMH5A0' '5100'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'PM0D1-SEARK'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'PPHDR-PLVAR'
                                    PLVAR_001.
      PERFORM BDC_FIELD       USING 'PM0D1-SEARK'
                                    SEARK_002.
      PERFORM BDC_FIELD       USING 'PM0D1-TIMR6'
                                    TIMR6_003.
      PERFORM BDC_FIELD       USING 'PPHDR-BEGDA'
                                    BEGDA_004.
      PERFORM BDC_FIELD       USING 'PPHDR-ENDDA'
                                    ENDDA_005.
      PERFORM BDC_DYNPRO      USING 'SAPMH5A0' '5100'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'PPHDR-PLVAR'
                                    PLVAR_006.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'TT_T777T-ITEXT(01)'.
      PERFORM BDC_FIELD       USING 'PM0D1-TIMR6'
                                    TIMR6_007.
      PERFORM BDC_FIELD       USING 'PPHDR-BEGDA'
                                    BEGDA_008.
      PERFORM BDC_FIELD       USING 'PPHDR-ENDDA'
                                    ENDDA_009.
      PERFORM BDC_FIELD       USING 'MARKFELD(01)'
                                    MARKFELD_01_010.
      PERFORM BDC_DYNPRO      USING 'SAPMH5A0' '5100'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=INSE'.
      PERFORM BDC_FIELD       USING 'PPHDR-PLVAR'
                                    PLVAR_011.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'TT_T777T-ITEXT(01)'.
      PERFORM BDC_FIELD       USING 'PM0D1-TIMR6'
                                    TIMR6_012.
      PERFORM BDC_FIELD       USING 'PPHDR-BEGDA'
                                    BEGDA_013.
      PERFORM BDC_FIELD       USING 'PPHDR-ENDDA'
                                    ENDDA_014.
      PERFORM BDC_DYNPRO      USING 'MP100000' '2000'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'P1000-STEXT'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM BDC_FIELD       USING 'P1000-BEGDA'
                                    BEGDA_015.
      PERFORM BDC_FIELD       USING 'P1000-ENDDA'
                                    ENDDA_016.
      PERFORM BDC_FIELD       USING 'P1000-SHORT'
                                    SHORT017.
      PERFORM BDC_FIELD       USING 'P1000-STEXT'
                                    STEXT018.
      PERFORM BDC_DYNPRO      USING 'MP100000' '2000'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'P1000-BEGDA'.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=UPD'.
      PERFORM BDC_FIELD       USING 'P1000-BEGDA'
                                    BEGDA_019.
      PERFORM BDC_FIELD       USING 'P1000-ENDDA'
                                    ENDDA_020.
      PERFORM BDC_FIELD       USING 'P1000-SHORT'
                                    SHORT021.
      PERFORM BDC_FIELD       USING 'P1000-STEXT'
                                    STEXT022.
      PERFORM BDC_TRANSACTION TABLES MESSTAB
      USING                         'PO13'
                                    CTU
                                    MODE
                                    UPDATE.
      IF SY-SUBRC <> 0.
        SUBRC = SY-SUBRC.
        EXIT.
      ENDIF.
      PERFORM CLOSE_GROUP USING     CTU.
      CALL FUNCTION 'ENQUE_SLEEP'
        EXPORTING
          SECONDS              = 1
    EXCEPTIONS
      SYSTEM_FAILURE       = 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.
    *-- Select the OBJID by Querying the table with Username,Object type,
    *-- Change Date
      SELECT OBJID FROM HRP1000
                   INTO TABLE L_OBJID
                   WHERE UNAME EQ SY-UNAME
                   AND   OTYPE EQ 'S'
                   AND   AEDTM EQ SY-DATUM.
    *-- Decribe the table to get the max count
      DESCRIBE TABLE L_OBJID LINES V_COUNT.
    *-- Read table to at the max count to get the last record
      READ TABLE L_OBJID INDEX V_COUNT.
    *--EXPORT the OBJID
      POSITIONID = L_OBJID.
      V_OBJID     = POSITIONID.
    ENDFUNCTION.
    INCLUDE BDCRECXY .

    Yes, change this line of code....
    MODE LIKE APQI-PUTACTIVE VALUE 'N',
    to this....
    MODE LIKE APQI-PUTACTIVE VALUE 'E',
    Regards,
    Rich Heilman

  • BDC not behaving as expected

    Hi all,
    I had done BDC for FB05. It was working fine.
    Now the requirement changed a bit and I need to pass one more field special gl indicator.
    So I added a line in the FM i created using the recording and expected that bdc should work fine. But it didn't . The filed get populated correctly but then the next screen data is not getting populated . Any Idea what could be the problem.
    perform bdc_field       using 'RF05A-NEWUM'
                                  SPL_GL_LINE_1.
    FUNCTION ZFM_FB05_BDC_BILL.
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
    *"     VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
    *"     VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
    *"     VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
    *"     VALUE(USER) LIKE  APQI-USERID OPTIONAL
    *"     VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
    *"     VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
    *"     VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
    *"     VALUE(BLDAT_001) LIKE  BDCDATA-FVAL DEFAULT '09/09/2010'
    *"     VALUE(BLART_002) LIKE  BDCDATA-FVAL DEFAULT 'sa'
    *"     VALUE(BUKRS_003) LIKE  BDCDATA-FVAL DEFAULT 'K101'
    *"     VALUE(BUDAT_004) LIKE  BDCDATA-FVAL DEFAULT '09/09/2010'
    *"     VALUE(MONAT_005) LIKE  BDCDATA-FVAL DEFAULT '9'
    *"     VALUE(WAERS_006) LIKE  BDCDATA-FVAL DEFAULT 'USD'
    *"     VALUE(DOCID_007) LIKE  BDCDATA-FVAL DEFAULT '*'
    *"     VALUE(NEWBS_008) LIKE  BDCDATA-FVAL DEFAULT '09'
    *"     VALUE(NEWKO_009) LIKE  BDCDATA-FVAL DEFAULT '1000021'
    *"     VALUE(SPL_GL_LINE_1) LIKE  BDCDATA-FVAL DEFAULT '2'
    *"     VALUE(WRBTR_010) LIKE  BDCDATA-FVAL DEFAULT '100'
    *"     VALUE(ZFBDT_011) LIKE  BDCDATA-FVAL DEFAULT '09/09/2010'
    *"     VALUE(AGBUK_012) LIKE  BDCDATA-FVAL DEFAULT 'K101'
    *"     VALUE(AGKON_013) LIKE  BDCDATA-FVAL DEFAULT '100000'
    *"     VALUE(AGKOA_014) LIKE  BDCDATA-FVAL DEFAULT 'D'
    *"     VALUE(AGUMS_015) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(XNOPS_016) LIKE  BDCDATA-FVAL DEFAULT ''
    *"     VALUE(ABPOS_017) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_018) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_019) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_020) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(XPOS1_01_021) LIKE  BDCDATA-FVAL DEFAULT ''
    *"     VALUE(XPOS1_03_022) LIKE  BDCDATA-FVAL DEFAULT 'X'
    *"     VALUE(SEL01_01_023) LIKE  BDCDATA-FVAL DEFAULT '100000002'
    *"     VALUE(ABPOS_024) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_025) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_026) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(PSZAH_01_027) LIKE  BDCDATA-FVAL DEFAULT '             50'
    *"     VALUE(ABPOS_028) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_029) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(XPOS1_01_030) LIKE  BDCDATA-FVAL DEFAULT ''
    *"     VALUE(XPOS1_03_031) LIKE  BDCDATA-FVAL DEFAULT 'X'
    *"     VALUE(SEL01_01_032) LIKE  BDCDATA-FVAL DEFAULT '100000000'
    *"     VALUE(ABPOS_033) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_034) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(ABPOS_035) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(PSZAH_01_036) LIKE  BDCDATA-FVAL DEFAULT '             50'
    *"     VALUE(ABPOS_037) LIKE  BDCDATA-FVAL DEFAULT '1'
    *"     VALUE(DOC_LIST) TYPE  ZTT_DOC_LIST
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    data wa_doc_list type zst_doc_list.
    subrc = 0.
    perform bdc_nodata      using NODATA.
    perform open_group      using GROUP USER KEEP HOLDDATE CTU.
    perform bdc_dynpro      using 'SAPMF05A' '0122'.
    perform bdc_field       using 'BKPF-BLDAT'
                                  BLDAT_001.
    perform bdc_field       using 'BKPF-BLART'
                                  BLART_002.
    perform bdc_field       using 'BKPF-BUKRS'
                                  BUKRS_003.
    perform bdc_field       using 'BKPF-BUDAT'
                                  BUDAT_004.
    perform bdc_field       using 'BKPF-MONAT'
                                  MONAT_005.
    perform bdc_field       using 'BKPF-WAERS'
                                  WAERS_006.
    perform bdc_field       using 'FS006-DOCID'
                                  DOCID_007.
    perform bdc_field       using 'RF05A-NEWBS'
                                  NEWBS_008.
    perform bdc_field       using 'RF05A-NEWKO'
                                  NEWKO_009.
    *perform bdc_field       using 'RF05A-NEWUM'
    *                              SPL_GL_LINE_1.  " Uncomment this line and the next screen '0301' values don't get populated.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWUM'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPMF05A' '0301'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'BSEG-WRBTR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SL'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  WRBTR_010.
    perform bdc_field       using 'BSEG-ZFBDT'
                                  ZFBDT_011.
    perform bdc_dynpro      using 'SAPMF05A' '0710'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-AGUMS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=PA'.
    perform bdc_field       using 'RF05A-AGBUK'
                                  AGBUK_012.
    perform bdc_field       using 'RF05A-AGKON'
                                  AGKON_013.
    perform bdc_field       using 'RF05A-AGKOA'
                                  AGKOA_014.
    perform bdc_field       using 'RF05A-AGUMS'
                                  AGUMS_015.
    perform bdc_field       using 'RF05A-XNOPS'
                                  XNOPS_016.
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=PART'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-ABPOS'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_017.
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=OMX'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-ABPOS'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_018.
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=Z-'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-ABPOS'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_019.
    * here !!
    loop at doc_list into wa_doc_list.
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=OSU'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-ABPOS'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_020.
    perform bdc_dynpro      using 'SAPDF05X' '2000'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-XPOS1(03)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=GO'.
    perform bdc_field       using 'RF05A-XPOS1(01)'
                                  XPOS1_01_021.
    perform bdc_field       using 'RF05A-XPOS1(03)'
                                  XPOS1_03_022.
    perform bdc_dynpro      using 'SAPDF05X' '0731'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-SEL01(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=GO'.
    perform bdc_field       using 'RF05A-SEL01(01)'
    *                              SEL01_01_023.
                                   wa_doc_list-belnr.
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=OMX'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-ABPOS'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_024.
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=Z+'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-ABPOS'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_025.
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DF05B-PSZAH(01)'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_026.
    perform bdc_field       using 'DF05B-PSZAH(01)'
    *                              PSZAH_01_027.
                                  wa_doc_list-WRBTR.
    "here
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=OSE'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DF05B-PSZAH(01)'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_028.
    endloop.
    *perform bdc_dynpro      using 'SAPDF05X' '3100'.
    *perform bdc_field       using 'BDC_OKCODE'
    *                              '=OSU'.
    *perform bdc_field       using 'BDC_CURSOR'
    *                              'RF05A-ABPOS'.
    *perform bdc_field       using 'RF05A-ABPOS'
    *                              ABPOS_029.
    *perform bdc_dynpro      using 'SAPDF05X' '2000'.
    *perform bdc_field       using 'BDC_CURSOR'
    *                              'RF05A-XPOS1(03)'.
    *perform bdc_field       using 'BDC_OKCODE'
    *                              '=GO'.
    *perform bdc_field       using 'RF05A-XPOS1(01)'
    *                              XPOS1_01_030.
    *perform bdc_field       using 'RF05A-XPOS1(03)'
    *                              XPOS1_03_031.
    *perform bdc_dynpro      using 'SAPDF05X' '0731'.
    *perform bdc_field       using 'BDC_CURSOR'
    *                              'RF05A-SEL01(01)'.
    *perform bdc_field       using 'BDC_OKCODE'
    *                              '=GO'.
    *perform bdc_field       using 'RF05A-SEL01(01)'
    **                              SEL01_01_032.
    *                              wa_doc_list-WRBTR.
    *perform bdc_dynpro      using 'SAPDF05X' '3100'.
    *perform bdc_field       using 'BDC_OKCODE'
    *                              '=OMX'.
    *perform bdc_field       using 'BDC_CURSOR'
    *                              'RF05A-ABPOS'.
    *perform bdc_field       using 'RF05A-ABPOS'
    *                              ABPOS_033.
    *perform bdc_dynpro      using 'SAPDF05X' '3100'.
    *perform bdc_field       using 'BDC_OKCODE'
    *                              '=Z+'.
    *perform bdc_field       using 'BDC_CURSOR'
    *                              'RF05A-ABPOS'.
    *perform bdc_field       using 'RF05A-ABPOS'
    *                              ABPOS_034.
    *perform bdc_dynpro      using 'SAPDF05X' '3100'.
    *perform bdc_field       using 'BDC_OKCODE'
    *                              '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
    *                              'DF05B-PSZAH(01)'.
    *perform bdc_field       using 'RF05A-ABPOS'
    *                              ABPOS_035.
    *perform bdc_field       using 'DF05B-PSZAH(01)'
    *                              PSZAH_01_036.
    *"here
    perform bdc_dynpro      using 'SAPDF05X' '3100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DF05B-PSZAH(01)'.
    perform bdc_field       using 'RF05A-ABPOS'
                                  ABPOS_037.
    perform bdc_transaction tables messtab
    using                         'FB05'
                                  CTU
                                  MODE
                                  UPDATE.
    if sy-subrc <> 0.
      subrc = sy-subrc.
      exit.
    endif.
    perform close_group using     CTU.
    ENDFUNCTION.
    INCLUDE BDCRECXY .

    I agree with Sujay.......redo recording...
    The reason of error maight be the GL Indicator.....
    Check the combination of Posting Key & GL Indicator exits or not.......by posting directly thru txn FB05....
    With the GL indicator & Posting key...might be the next screen no. changes.....just check...wild guess....
    If so....Redo the recording for each combination of PK & GL Ind.
    Thnx
    RK

  • Message table type strcture bdcmcgcoll problem

    Hi experts,
    I have done recording for sm 62 screen for creating events.
    i have created events for that using "create" button from screen sm 62.
    after recording i have created a functionmodule using recorded bdc.
    In that i have used one
    TABLES
    *"              MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL.
    In output i am getting thios error.
    Message id:00.
    Message NO:255.
    Message :Function code cannot be selected.
    Can you tell me how to solve this one.
    Thanks.
    Sailu

    ""Local interface:
    *"       IMPORTING
    *"             VALUE(CTU) LIKE  APQI-PUTACTIVE DEFAULT 'X'
    *"             VALUE(MODE) LIKE  APQI-PUTACTIVE DEFAULT 'N'
    *"             VALUE(UPDATE) LIKE  APQI-PUTACTIVE DEFAULT 'L'
    *"             VALUE(GROUP) LIKE  APQI-GROUPID OPTIONAL
    *"             VALUE(USER) LIKE  APQI-USERID OPTIONAL
    *"             VALUE(KEEP) LIKE  APQI-QERASE OPTIONAL
    *"             VALUE(HOLDDATE) LIKE  APQI-STARTDATE OPTIONAL
    *"             VALUE(NODATA) LIKE  APQI-PUTACTIVE DEFAULT '/'
    *"             VALUE(EDIT_SYSEV_001) LIKE  BDCDATA-FVAL DEFAULT ''
    *"             VALUE(SHOW_SYSEV_002) LIKE  BDCDATA-FVAL DEFAULT '.'
    *"             VALUE(EDIT_USREV_003) LIKE  BDCDATA-FVAL DEFAULT 'X'
    *"             VALUE(SHOW_USREV_004) LIKE  BDCDATA-FVAL DEFAULT '.'
    *"             VALUE(EVENTID_005) LIKE  BDCDATA-FVAL
    *"         DEFAULT 'Eventid'
    *"             VALUE(DESCRIPT_006) LIKE  BDCDATA-FVAL
    *"         DEFAULT 'Description'
    *"       EXPORTING
    *"             VALUE(SUBRC) LIKE  SYST-SUBRC
    *"       TABLES
    *"              MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
    subrc = 0.
    perform bdc_nodata      using NODATA.
    perform open_group      using GROUP USER KEEP HOLDDATE CTU.
    perform bdc_dynpro      using 'SAPLBTCH' '1080'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'BTCH1080-EDIT_USREV'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=DOIT'.
    perform bdc_field       using 'BTCH1080-EDIT_SYSEV'
                                  EDIT_SYSEV_001.
    perform bdc_field       using 'BTCH1080-SHOW_SYSEV'
                                  SHOW_SYSEV_002.
    perform bdc_field       using 'BTCH1080-EDIT_USREV'
                                  EDIT_USREV_003.
    perform bdc_field       using 'BTCH1080-SHOW_USREV'
                                  SHOW_USREV_004.
    perform bdc_dynpro      using 'SAPMSSY0' '0120'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=NEW'.
    perform bdc_dynpro      using 'SAPLBTCH' '1090'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'BTCH1090-DESCRIPT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SAVS'.
    perform bdc_field       using 'BTCH1090-EVENTID'
                                  EVENTID_005.
    perform bdc_field       using 'BTCH1090-DESCRIPT'
                                  DESCRIPT_006.
    perform bdc_transaction tables messtab
    using                         'SM62'
                                  CTU
                                  MODE
                                  UPDATE.
    if sy-subrc <> 0.
      subrc = sy-subrc.
      exit.
    endif.
    perform close_group using     CTU.
    ENDFUNCTION.

  • Wrapping a Transaction as an RFC

    Hello everyone:
    I have created RFC's on R/3 in order to invoke them from Java Webdynpro, however, I don't have RFC's now, I have pure transactions.... is there a way to call the transaction inside the RFC? Thanks
    Alejandro

    As you can see here.....  This RFC function module does a BDC - CALL TRANSACTION to update delivery schedules.
    function z_ep_update_delv_sched.
    *"*"Local interface:
    *"  IMPORTING
    *"     VALUE(EBELN) TYPE  EKET-EBELN
    *"     VALUE(EBELP) TYPE  EKET-EBELP
    *"     VALUE(EINDT) TYPE  EKET-EINDT
    *"     VALUE(MENGE) TYPE  EKET-MENGE
    *"  EXPORTING
    *"     VALUE(SUBRC) LIKE  SYST-SUBRC
    *"  TABLES
    *"      MESSTAB STRUCTURE  BDCMSGCOLL OPTIONAL
      data: mode   type c value 'N',
            update type c value 'S'.
      data: begin of bdc_data,
              ebeln(10) type c,
              ebelp(5) type c,
              lpein(1) type c,
              eindt(10) type c,
              menge(10) type c,
             end of bdc_data.
      clear bdcdata. refresh bdcdata.
      clear messtab. refresh messtab.
      clear bdc_data.
      bdc_data-ebeln = ebeln.
      bdc_data-ebelp = ebelp.
      bdc_data-lpein = 'D'.
      bdc_data-menge = menge.
      call function 'CONVERT_DATE_TO_EXTERNAL'
           exporting
                date_internal = eindt
           importing
                date_external = bdc_data-eindt.
      perform bdc_dynpro      using 'SAPMM06E' '0205'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RM06E-EVRTN'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'RM06E-EVRTN'
                          bdc_data-ebeln.
      perform bdc_dynpro      using 'SAPMM06E' '0222'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RM06E-EBELP'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'RM06E-EBELP'
                          bdc_data-ebelp.
      perform bdc_dynpro      using 'SAPMM06E' '0222'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RM06E-EVRTP(01)'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=ET'.
      perform bdc_field       using 'RM06E-EBELP'
                          bdc_data-ebelp.
      perform bdc_field       using 'RM06E-TCSELFLAG(01)'
                                    'X'.
      perform bdc_dynpro      using 'SAPMM06E' '1117'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RM06E-ETNR1'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'RM06E-ETNR1'
                           '9999'.
      perform bdc_dynpro      using 'SAPMM06E' '1117'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'EKET-MENGE(03)'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'RM06E-LPEIN(03)'
                          bdc_data-lpein.
      perform bdc_field       using 'RM06E-EEIND(03)'
                          bdc_data-eindt.
      perform bdc_field       using 'EKET-MENGE(03)'
                          bdc_data-menge.
      perform bdc_dynpro      using 'SAPMM06E' '1117'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RM06E-ETNR1'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=BU'.
    <b>  call transaction 'ME38' using bdcdata mode mode
                                            update update
                                            messages into</b> messtab.
    endfunction.
    *        Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR BDCDATA.
      BDCDATA-PROGRAM  = PROGRAM.
      BDCDATA-DYNPRO   = DYNPRO.
      BDCDATA-DYNBEGIN = 'X'.
      APPEND BDCDATA.
    ENDFORM.
    *        Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
        CLEAR BDCDATA.
        BDCDATA-FNAM = FNAM.
        BDCDATA-FVAL = FVAL.
        APPEND BDCDATA.
    ENDFORM.
    REgards,
    Rich Heilman

  • Error Passing subrc to Fuinction

    Hi All ,
    I Am getting this error in an upgrade environment testing
    Passing the formal parameter "SUBRC" to the field SY-SUBRC is not appropriate .
    since SY-SUBRC is set by the statement,
    This is  while calling FM 'HR_READ_INFOTYPE'.
    Thanks in advance for any input on the reason for error .
    Vinay

    Hello Vinay
    You try to fetch the value of EXPORTING parameter SUBRC into sy-subrc  which is not correct because the sy-subrc will be set by the fm (either = 0 or in case of an exception = 1).
    Not correct:
      data: gt_pa0001     type STANDARD TABLE OF pa0001.
      CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
    *     TCLAS                 = 'A'
          pernr                 = '12345678'
          infty                 = '0001'
    *     BEGDA                 = '18000101'
    *     ENDDA                 = '99991231'
    *     BYPASS_BUFFER         = ' '
    *     LEGACY_MODE           = ' '
        IMPORTING
          SUBRC                 = sy-subrc
        tables
          infty_tab             = gt_pa0001
        EXCEPTIONS
          INFTY_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.
    Correct:
      data: gt_pa0001     type STANDARD TABLE OF pa0001,
            gd_rc         type syst-subrc.
      CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
    *     TCLAS                 = 'A'
          pernr                 = '12345678'
          infty                 = '0001'
    *     BEGDA                 = '18000101'
    *     ENDDA                 = '99991231'
    *     BYPASS_BUFFER         = ' '
    *     LEGACY_MODE           = ' '
        IMPORTING
          SUBRC                 = gd_rc
        tables
          infty_tab             = gt_pa0001
        EXCEPTIONS
          INFTY_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.
    Regards
      Uwe

  • How to schedule a job in another system.

    Hi,
    Now i have an ABAP program, which run in system ABC, client 001. i want to schedule a job in the program, with the function modules JOB_OPEN, JOB_SUBMIT, and JOB_CLOSE. But this job should run in ABC/002.
    How to write code?
    Who can help me on the requirement, or provide me another new solution except event trigger?
    Thanks & Best Regards,
    Johnney

    Here is the code. It works fine..
    FUNCTION Z_F_TRIGGER_REPORT.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(I_PROG) TYPE  D010SINF-PROG
    *"     VALUE(I_VARIANT) TYPE  VARIS-VARIANT
    *"     VALUE(I_MODE) TYPE  CHAR01
    *"  EXPORTING
    *"     VALUE(E_SUBRC) TYPE  SYST-SUBRC
    *"     VALUE(E_MSG) TYPE  CHAR80
    Functio ID :  Z_F_TRIGGER_REPORT
    TITLE      :  Report Trigger Tool
    Create Date:  15.03.2004
    Author     :  Denis Vieira
    Ownership : For the exclusive use of the Procter & Gamble Company
    Description:
    The purpose of this function module is to trigger programs
    requested remotely.
    AUTHORIZATION CHECKS
    OBJECT               AUTHORITY FIELDS         ABAP FIELDS
                     |                       |
    CHANGE HISTORY                                                      *
      DATE      |  Name  | Description                       | Reference *
    29.Jun.2006 | BA4513 | Unicode conversion and upgrade    | SPK290606
                |        | to My SAP ERP                     |
    **eject.
    Check if selected program exists in the destination file
      SELECT SINGLE  SUBC
             FROM    D010SINF
             INTO    D010SINF-SUBC
             WHERE   PROG    EQ  I_PROG
             AND     R3STATE EQ  C_A.
      IF SY-SUBRC NE C_0.
        MOVE  C_2                                               TO E_SUBRC.
        MOVE 'Report does not exist in destination system'(M01) TO E_MSG.
        EXIT.
      ENDIF.
    Check if program request is an executable program
      IF D010SINF-SUBC NE C_1.
        MOVE  C_2                                               TO E_SUBRC.
        MOVE 'Report is not an executable program'(M02)         TO E_MSG.
        EXIT.
      ENDIF.
    Check if selected variant exists in the destination file
      SELECT COUNT( * )
           FROM  VARIS
           INTO  W_COUNT
           WHERE REPORT  EQ I_PROG
           AND   VARIANT EQ I_VARIANT
           AND   DYNNR   EQ C_1000.
      IF W_COUNT EQ C_0.
        MOVE  C_2                                                TO E_SUBRC.
        MOVE 'Variant does not exist in destination system'(M03) TO E_MSG.
        EXIT.
      ENDIF.
      IF I_MODE EQ C_B.
        PERFORM 0100_BACKGROUND USING     I_PROG I_VARIANT
                                CHANGING  E_MSG  E_SUBRC.
      ELSE.
        PERFORM 0200_FOREGROUND USING     I_PROG I_VARIANT
                                CHANGING  E_MSG  E_SUBRC.
      ENDIF.
    ENDFUNCTION.
    *eject
    *&      Form  0100_background
    Executes Selected program in BackGround Mode VIA JOB
    *Block commented from here SPK290606
    *FORM 0100_BACKGROUND USING     L_PROG L_VARIANT
                        CHANGING  L_MSG  L_SUBRC.
    *Block commented till here SPK290606
    *Block added from here SPK290606
    FORM 0100_BACKGROUND USING    L_PROG    LIKE D010SINF-PROG
                                  L_VARIANT LIKE VARIS-VARIANT
                         CHANGING L_MSG     TYPE  CHAR80
                                  L_SUBRC   TYPE  SYST-SUBRC.
    *Block added till here SPK290606
      CONCATENATE C_AREA
                  C_UND
                  L_PROG
                  C_UND
                  SY-DATUM
                  C_UND
                  SY-UZEIT
                  INTO W_JOBNAME.
    Create a JOB and Get the Number for further execution
      CALL FUNCTION 'JOB_OPEN'
           EXPORTING
                JOBNAME  = W_JOBNAME
           IMPORTING
                JOBCOUNT = W_JOBCOUNT.
      IF SY-SUBRC NE C_0.
        MOVE  C_2                       TO L_SUBRC.
        MOVE 'Error opening job'(M07)   TO L_MSG.
        EXIT.
      ENDIF.
    Submit program
      SUBMIT (L_PROG)
        USING SELECTION-SET L_VARIANT
        VIA JOB W_JOBNAME NUMBER W_JOBCOUNT
        AND RETURN.
      IF SY-SUBRC NE C_0.
        MOVE  C_2                        TO L_SUBRC.
        MOVE 'Error Submitting Job'(M06) TO L_MSG.
        EXIT.
      ENDIF.
    Closes job to start its processing
      CALL FUNCTION 'JOB_CLOSE'
           EXPORTING
                JOBCOUNT  = W_JOBCOUNT
                JOBNAME   = W_JOBNAME
                STRTIMMED = 'X'.
      IF SY-SUBRC NE C_0.
        MOVE  C_2                       TO L_SUBRC.
        MOVE 'Error closing job'(M08)   TO L_MSG.
        EXIT.
      ENDIF.
      MOVE  C_0                                          TO L_SUBRC.
      MOVE 'Program Submitted in Background Mode'(M09)   TO L_MSG.
    ENDFORM.
    *eject
    *&      Form  0200_foreground
    Executes Selected program in ForeGround Mode VIA Submit
    *Block commented from here SPK290606
    *FORM 0200_FOREGROUND USING     L_PROG L_VARIANT
                        CHANGING  L_MSG  L_SUBRC.
    *Block commented till here SPK290606
    *Block added from here SPK290606
    FORM 0200_FOREGROUND USING    L_PROG    LIKE D010SINF-PROG
                                  L_VARIANT LIKE VARIS-VARIANT
                         CHANGING L_MSG     TYPE  CHAR80
                                  L_SUBRC   TYPE  SYST-SUBRC.
    *Block added till here SPK290606
      SUBMIT (L_PROG) USING SELECTION-SET L_VARIANT
             EXPORTING LIST TO MEMORY AND RETURN.
      IF SY-SUBRC EQ C_0.
        MOVE  C_0                                 TO L_SUBRC.
        MOVE 'Report submitted successfully'(M04) TO L_MSG.
      ELSE.
        MOVE  C_2                                 TO L_SUBRC.
        MOVE 'Error submitting report'(M05)       TO L_MSG.
      ENDIF.
    ENDFORM.

Maybe you are looking for

  • HT204088 what can I do if the billing item is wrong?

    I have bought a sticker from LINE but the list of purchase appears two items as below, what can i do to cancel one of them? LINE, Don't Lose Your Soul! Report a Problem     NAVER JAPAN     In App Purchase    NT$ 60 LINE, Don't Lose Your Soul! Report

  • Place photo in table cell

    I have a table of mainly cells with text but I am reserving one cell for a head shot. How to place a photo in a table cell or what is a workaround?

  • Report painter use for CO-PA

    Hi Gurus, I would like to set up segment reporting using Report painter. The format I would like is the segments going across at the top, with my accounts at the bottom. Can anyone help me with this Regards Johan

  • Issue in concat function

    Hi All, I have a requirement like all the input variable of BPEL Notification process have to be sent in the mail body. But when i use concat function I am getting error as 'Invalid XQuery Expression'. I have used concat like Concat('Hi the of the Cu

  • Since the latest iphone 5.1 update I get 42404 error in itunes

    Hi, My iPhone 4 updated the latest software iOS 5.0.1 via the phone, and now itunes cannot read the iPhone info and says there is an 42404 error. Can anybody help please. I have uninstalled itunes and reninstalled, but the problem was stiil there. Th