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

bdc usage.

Former Member
0 Likes
411

hi gurus,

iam new to bdc. now i want to call a transaction from alv and the transaction should automatically select some fields after populating the data from the alv.

so please tell me about bdc's

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
374

Try this bit of code and implement in yours


*&---------------------------------------------------------------------* 
*& Report  Z_TEST001 
*& 
*&---------------------------------------------------------------------* 

REPORT  Z_TEST001. 
TYPE-POOLS:  slis. 
tables: rseg. 

DATA: begin of TAB_ARSEG occurs 0. 
        INCLUDE STRUCTURE RSEG. 
DATA: END OF TAB_ARSEG. 
DATA: T_FIELDCAT TYPE slis_t_fieldcat_alv. 
DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'. 

START-OF-SELECTION. 

*********  <<<  YOUR CODE  >>> *********************** 
select * from rseg into table tab_arseg where BELNR = '5300000022'. 

END-OF-SELECTION. 

perform build_fieldcat. 

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
 EXPORTING 
    i_buffer_active                   = space 
    i_callback_program                = sy-repid 
   I_CALLBACK_USER_COMMAND            = c_user_command 
*   I_STRUCTURE_NAME                  = 
*   IS_LAYOUT                         = 
   IT_FIELDCAT                        = T_FIELDCAT[] 
  TABLES 
    T_OUTTAB                          = TAB_ARSEG 
 EXCEPTIONS 
   PROGRAM_ERROR                      = 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. 

**&------------------------------------------------------------------ 
---* 
**&      Form  USER_COMMAND 
**&------------------------------------------------------------------ 
---* 
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM 
                I_SELFIELD TYPE SLIS_SELFIELD. 

  DATA: F_SUBRC LIKE SY-SUBRC, 
        s_arseg like tab_arseg. 
  READ TABLE tab_arseg INDEX i_selfield-tabindex INTO s_arseg. 

    CASE F_UCOMM. 
        WHEN '&IC1'. 
        CASE i_SELFIELD-SEL_TAB_FIELD. 
        WHEN 'TAB_ARSEG-BELNR'. 
          CHECK NOT S_ARSEG-BELNR IS INITIAL. 
          SET PARAMETER ID 'RBN' FIELD S_ARSEG-BELNR. 
          SET PARAMETER ID 'GJR' FIELD S_ARSEG-GJAHR. 
          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN. 
        ENDCASE. 
    ENDCASE. 
ENDFORM. 

**&------------------------------------------------------------------ 
---* 
**&      Form  build_fieldcat 
**&------------------------------------------------------------------ 
---* 

FORM build_fieldcat . 
 DATA: FIELDCAT TYPE SLIS_FIELDCAT_ALV. 
  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'BELNR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'BELNR'. 
  fieldcat-hotspot   = 'X'. 
  FIELDCAT-COL_POS       = 1. 
  APPEND FIELDCAT TO t_fieldcat. 

  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'GJAHR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'GJAHR'. 
  FIELDCAT-COL_POS       = 2. 
  APPEND FIELDCAT TO t_fieldcat. 

ENDFORM.                    " build_fieldcat 

Please award points

3 REPLIES 3
Read only

Former Member
0 Likes
374

You need to activate the event USER_COMMAND , so that you will be able to perform what ever you want.

Gather all the data in the user command event and perform BDC.

Read only

Former Member
0 Likes
375

Try this bit of code and implement in yours


*&---------------------------------------------------------------------* 
*& Report  Z_TEST001 
*& 
*&---------------------------------------------------------------------* 

REPORT  Z_TEST001. 
TYPE-POOLS:  slis. 
tables: rseg. 

DATA: begin of TAB_ARSEG occurs 0. 
        INCLUDE STRUCTURE RSEG. 
DATA: END OF TAB_ARSEG. 
DATA: T_FIELDCAT TYPE slis_t_fieldcat_alv. 
DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'. 

START-OF-SELECTION. 

*********  <<<  YOUR CODE  >>> *********************** 
select * from rseg into table tab_arseg where BELNR = '5300000022'. 

END-OF-SELECTION. 

perform build_fieldcat. 

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
 EXPORTING 
    i_buffer_active                   = space 
    i_callback_program                = sy-repid 
   I_CALLBACK_USER_COMMAND            = c_user_command 
*   I_STRUCTURE_NAME                  = 
*   IS_LAYOUT                         = 
   IT_FIELDCAT                        = T_FIELDCAT[] 
  TABLES 
    T_OUTTAB                          = TAB_ARSEG 
 EXCEPTIONS 
   PROGRAM_ERROR                      = 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. 

**&------------------------------------------------------------------ 
---* 
**&      Form  USER_COMMAND 
**&------------------------------------------------------------------ 
---* 
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM 
                I_SELFIELD TYPE SLIS_SELFIELD. 

  DATA: F_SUBRC LIKE SY-SUBRC, 
        s_arseg like tab_arseg. 
  READ TABLE tab_arseg INDEX i_selfield-tabindex INTO s_arseg. 

    CASE F_UCOMM. 
        WHEN '&IC1'. 
        CASE i_SELFIELD-SEL_TAB_FIELD. 
        WHEN 'TAB_ARSEG-BELNR'. 
          CHECK NOT S_ARSEG-BELNR IS INITIAL. 
          SET PARAMETER ID 'RBN' FIELD S_ARSEG-BELNR. 
          SET PARAMETER ID 'GJR' FIELD S_ARSEG-GJAHR. 
          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN. 
        ENDCASE. 
    ENDCASE. 
ENDFORM. 

**&------------------------------------------------------------------ 
---* 
**&      Form  build_fieldcat 
**&------------------------------------------------------------------ 
---* 

FORM build_fieldcat . 
 DATA: FIELDCAT TYPE SLIS_FIELDCAT_ALV. 
  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'BELNR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'BELNR'. 
  fieldcat-hotspot   = 'X'. 
  FIELDCAT-COL_POS       = 1. 
  APPEND FIELDCAT TO t_fieldcat. 

  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'GJAHR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'GJAHR'. 
  FIELDCAT-COL_POS       = 2. 
  APPEND FIELDCAT TO t_fieldcat. 

ENDFORM.                    " build_fieldcat 

Please award points