*&---------------------------------------------------------------------*
*& INCLUDE ZBCC0003 BDC reuse form routine
*&---------------------------------------------------------------------*
DATA: %ctumode LIKE ctu_params-dismode VALUE 'N'.
"A: show all dynpros
"E: show dynpro on error only
"N: do not display dynpro
DATA: %cupdate LIKE ctu_params-updmode VALUE 'L'.
"S: synchronously
"A: asynchronously
"L: local
DATA: %racommit LIKE ctu_params-racommit.
DATA: %nobinpt LIKE ctu_params-nobinpt.
*----------------------------------------------------------------------*
* data definition
*----------------------------------------------------------------------*
* Batchinputdata of single transaction
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
* error session opened (' ' or 'X')
DATA: e_group_opened.
* message texts
TABLES: t100.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
* IF FVAL <> NODATA.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
* ENDIF.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdc_transaction USING tcode
f_type " message type
f_msg.
DATA: l_mstring(480).
DATA: l_ctu_params TYPE ctu_params .
* call transaction using
REFRESH messtab.
* CALL TRANSACTION tcode USING bdcdata
* MODE %ctumode
* UPDATE %cupdate
* MESSAGES INTO messtab.
l_ctu_params-dismode = %ctumode.
l_ctu_params-updmode = %cupdate.
l_ctu_params-defsize = 'X'.
l_ctu_params-racommit = %racommit.
l_ctu_params-nobinpt = %nobinpt.
CALL TRANSACTION tcode USING bdcdata
OPTIONS FROM l_ctu_params
MESSAGES INTO messtab.
IF sy-subrc <> 0.
f_type = 'E'.
* f_msg = tcode && ` BDC Error`.
LOOP AT messtab.
MESSAGE ID messtab-msgid
TYPE messtab-msgtyp
NUMBER messtab-msgnr
INTO l_mstring
WITH messtab-msgv1
messtab-msgv2
messtab-msgv3
messtab-msgv4.
IF f_msg IS INITIAL.
f_msg = l_mstring.
ELSE.
f_msg = f_msg && '/' && l_mstring.
ENDIF.
ENDLOOP.
ELSE.
f_type = 'S'.
ENDIF.
ENDFORM. "BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form bdc_transaction_create
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdc_transaction_create USING tcode
f_type " message type
f_msg " error message
f_mess LIKE messtab. " success message
DATA: l_mstring(480).
DATA: l_ctu_params TYPE ctu_params .
DATA: l_lines TYPE i.
************
CLEAR: f_type, f_msg, f_mess.
* call transaction using
REFRESH messtab.
* CALL TRANSACTION tcode USING bdcdata
* MODE %ctumode
* UPDATE %cupdate
* MESSAGES INTO messtab.
l_ctu_params-dismode = %ctumode.
l_ctu_params-updmode = %cupdate.
l_ctu_params-defsize = 'X'.
CALL TRANSACTION tcode USING bdcdata
OPTIONS FROM l_ctu_params
MESSAGES INTO messtab.
IF sy-subrc <> 0.
f_type = 'E'.
f_msg = tcode && ` BDC Error`.
LOOP AT messtab.
MESSAGE ID messtab-msgid
TYPE messtab-msgtyp
NUMBER messtab-msgnr
INTO l_mstring
WITH messtab-msgv1
messtab-msgv2
messtab-msgv3
messtab-msgv4.
f_msg = f_msg && '/' && l_mstring.
ENDLOOP.
* READ TABLE messtab WITH KEY msgtyp = 'E'.
* IF sy-subrc = 0.
* SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
* AND arbgb = messtab-msgid
* AND msgnr = messtab-msgnr.
* IF sy-subrc = 0.
* l_mstring = t100-text.
* IF l_mstring CS '&1'.
* REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
* REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
* REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
* REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
* ELSE.
* REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
* REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
* REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
* REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
* ENDIF.
* CONDENSE l_mstring.
* f_msg = l_mstring.
* ELSE.
* CONCATENATE tcode ' BDC error!'(005) INTO f_msg.
* ENDIF.
* ELSE.
* CONCATENATE tcode ' BDC error!'(005) INTO f_msg.
* ENDIF.
ELSE.
*** read last message
f_type = 'S'.
l_lines = lines( messtab ).
READ TABLE messtab INTO f_mess
INDEX l_lines.
ENDIF.
ENDFORM. "bdc_transaction_create
*&---------------------------------------------------------------------*
*& Form BDC_MODE_SWITCH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM bdc_mode_switch .
CASE sy-ucomm.
WHEN 'BDCA'.
%ctumode = 'A'.
MESSAGE 'BDC change to Display all mode' TYPE 'S'.
WHEN 'BDCN'.
%ctumode = 'N'.
MESSAGE 'BDC change to Background mode' TYPE 'S'.
WHEN 'BDCE'.
%ctumode = 'E'.
MESSAGE 'BDC change to Error mode' TYPE 'S'.
ENDCASE.
ENDFORM.