Skip to Content
0
Former Member
Mar 06, 2008 at 10:12 AM

BDC for profitability segment VA02 (sales order)

364 Views

Hi all,

I'm creating a BDC to update the prof.segment from account assignment on a sales item.

Everything works fine when I run it into the foreground, but when I turn the program in the background, there seems to be an error when opening program 'SAPLKACB' screen '0002'.

He stops at the screen, and the user has to press on a key to 'push' the program forward.

Anyone has an idea on how to solve this ?

This is my code,

problem lays between the opening of the program, and the start of BDC_OKCODE =COBL_XERGO

DATA : i_bdcdata            TYPE TABLE OF bdcdata,
         wa_bdcdata TYPE bdcdata,
         wa_pos TYPE posnr_va,
         I_TAB TYPE TABLE OF BDCMSGCOLL,
         wa_tab type BDCMSGCOLL,
         wa_params type CTU_PARAMS.
refresh i_bdcdata.
wa_params-dismode = 'A'.
wa_params-defsize = 'X'.
  CLEAR   wa_bdcdata.
  wa_bdcdata-program  = 'SAPMV45A'.
  wa_bdcdata-dynpro   = '0102'.
  wa_bdcdata-dynbegin = 'X'.
  APPEND wa_bdcdata TO i_bdcdata.

  PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                           'VBAK-VBELN'.
  PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                    '/00'.
  PERFORM add_line TABLES i_bdcdata USING 'VBAK-VBELN'
                                           '0070040656'.

  CLEAR wa_bdcdata.
  wa_bdcdata-program  = 'SAPMV45A'.
  wa_bdcdata-dynpro   = '4001'.
  wa_bdcdata-dynbegin = 'X'.
  APPEND wa_bdcdata TO i_bdcdata.
*  CLEAR wa_salesorder.
*loop at the items
  CLEAR wa_pos.

clear wa_pos.
*  loop at i_salesorder into wa_salesorder.
do 2 times.
*  LOOP AT i_salesorder INTO wa_salesorder.
    wa_pos = wa_pos + 10.

 PERFORM add_line TABLES i_bdcdata USING
'BDC_OKCODE'
    '=POPO'.
*    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
*    'R45A-MABNR(03)'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPMV45A'.
    wa_bdcdata-dynpro   = '0251'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
    'RV45A-POSNR'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
    '=POSI'.
    PERFORM add_line TABLES i_bdcdata USING 'RV45A-POSNR'
    wa_pos.
clear wa_bdcdata.
    wa_bdcdata-program  = 'SAPMV45A'.
    wa_bdcdata-dynpro   = '4001'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
    '=ITEM'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
    'RV45A-MABNR(01)'.
    wa_bdcdata-program  = 'SAPMV45A'.
    wa_bdcdata-dynpro   = '4003'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
    '=T\06'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPMV45A'.
    wa_bdcdata-dynpro   = '4003'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.

*perform bdc_dynpro      using 'SAPMV45A' '4003'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                              '/EBACK'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                              'VBAP-KALSM_K'.
    PERFORM add_line TABLES i_bdcdata USING 'DKACB-FMORE'
                              'X'.
                              wa_bdcdata-program  = 'SAPLKACB'.
    wa_bdcdata-dynpro   = '0002'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                              'DKACB-XERGO'.
PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                              '=COBL_XERGO'.
PERFORM add_line TABLES i_bdcdata USING 'DKACB-XERGO'
                              'X'
.

*perform bdc_dynpro      using 'SAPLKACB' '0002'.
*PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
*                              'COBL-PS_POSID'.



*    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
*                                  '/EBACK'.
*    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
*                              'VBAP-KALSM_K'.
*    PERFORM add_line TABLES i_bdcdata USING 'DKACB-FMORE'
*                              'X'.
*    CLEAR wa_bdcdata.
*    wa_bdcdata-program  = 'SAPLKACB'.
*    wa_bdcdata-dynpro   = '0002'.
*    wa_bdcdata-dynbegin = 'X'.
*    APPEND wa_bdcdata TO i_bdcdata.
*    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
*                                  '=COBL_XERGO'.
**PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
**                              'COBL-AUFNR'.



*COBL-PS_POSID

    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPLKEAK'.
    wa_bdcdata-dynpro   = '0300'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.

    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                  'RKEAK-FIELD(15)'.

    PERFORM add_line TABLES i_bdcdata USING 'RKEAK-FIELD(15)'
                                  'A1224'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                  '=P+'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPLKEAK'.
    wa_bdcdata-dynpro   = '0300'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.

    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                  'RKEAK-FIELD(03)'.
    PERFORM add_line TABLES i_bdcdata USING 'RKEAK-FIELD(03)'
                                  'OTH'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                  '=P+'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPLKEAK'.
    wa_bdcdata-dynpro   = '0300'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.

    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                  'RKEAK-FIELD(07)'.
    PERFORM add_line TABLES i_bdcdata USING 'RKEAK-FIELD(07)'
                                  'BE'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                  '=P+'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPLKEAK'.
    wa_bdcdata-dynpro   = '0300'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                  'RKEAK-FIELD(09)'.
    PERFORM add_line TABLES i_bdcdata USING 'RKEAK-FIELD(09)'
                                  'BE'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                  '=P+'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPLKEAK'.
    wa_bdcdata-dynpro   = '0300'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                  'RKEAK-FIELD(10)'.
    PERFORM add_line TABLES i_bdcdata USING 'RKEAK-FIELD(10)'
                                  'BE'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                  '=P+'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPLKEAK'.
    wa_bdcdata-dynpro   = '0300'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                  'RKEAK-FIELD(11)'.
    PERFORM add_line TABLES i_bdcdata USING 'RKEAK-FIELD(11)'
                                  'REPMC'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                  '=WEIT'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPLKACB'.
    wa_bdcdata-dynpro   = '0002'.
    wa_bdcdata-dynbegin = 'X'.
    APPEND wa_bdcdata TO i_bdcdata.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
                                  'COBL-AUFNR'.
    PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                                  '=ENTE'.
    CLEAR wa_bdcdata.
    wa_bdcdata-program  = 'SAPMV45A'.
    wa_bdcdata-dynpro   = '4001'.
    wa_bdcdata-dynbegin = 'X'.
       APPEND wa_bdcdata TO i_bdcdata.

**PERFORM add_line TABLES i_bdcdata USING 'BDC_CURSOR'
**                              'RV45A-MABNR(03)'.
**                                  CLEAR wa_bdcdata.
**    wa_bdcdata-program  = 'SAPLSPO2'.
**    wa_bdcdata-dynpro   = '0101'.
**    wa_bdcdata-dynbegin = 'X'.
**       APPEND wa_bdcdata TO i_bdcdata.
**PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
**                              '=OPT1'.
**
**
*  ENDLOOP.
enddo.

  PERFORM add_line TABLES i_bdcdata USING 'BDC_OKCODE'
                            '=SICH'.

  CALL TRANSACTION 'VA02'  USING i_bdcdata
                           options from wa_params
                            MESSAGES INTO i_tab.
break-point.
FORM add_line TABLES   i_bdcdata STRUCTURE bdcdata
              USING    bdc
                       value.
  DATA : lw_bdcdata    TYPE bdcdata.
  CLEAR lw_bdcdata.
  lw_bdcdata-fnam     = bdc.
  lw_bdcdata-fval     = value.
  APPEND lw_bdcdata TO i_bdcdata.


ENDFORM.                    " add_line