report z. constants: c_rows(2) type n value '18', " rows in view selection " window c_linen(20) type c value 'MSICHTAUSW-KZSEL( )'. data: w_tcode like sy-tcode, " Transaction code w_tkstatus like t130m-pstat, " SAP Transaction status w_anzgstatus like t130m-pstat, " Summary Display status w_t130m like t130m, " Transaction control: mat.master w_bilds like t133a-bilds, " Screen sequence w_dytxt like t133b-dytxt, " View description w_linex like sy-tabix, " View # in table w_line like sy-tabix, " View # on selection screen w_num like sy-tabix, w_matnr like mara-matnr, " Material w_mtart like mara-mtart, " Material type w_vpsta like mara-vpsta, " Material maintenance status w_pstat like t134-pstat. " Material type maintenance status data: begin of it_views occurs 30. include structure mbildtab. " Selection Views data: end of it_views. data: w_alnum(20) type c, " TC line f_pgdn. " PgDn Flag data: begin of i_bdc occurs 0. include structure bdcdata. data: end of i_bdc. parameters: material like mara-matnr obligatory memory id mat, view like t133a-auswg obligatory default '21', mm01 radiobutton group radi, mm02 radiobutton group radi, show_bdc as checkbox, showview as checkbox. ******************* start-of-selection. ******************* if not mm01 is initial. w_tcode = 'MM01'. "Create view else. w_tcode = 'MM02'. "Change view endif. * 1. Get Transaction Status and Transaction Screen Reference call function 'MATERIAL_INIT' exporting tcode = w_tcode kz_berprf = 'X' importing it130m = w_t130m tkstatus = w_tkstatus exceptions no_authority = 1 wrong_call = 2 kstatus_empty = 3 tkstatus_empty = 4 aktyp_tcode_mismatch = 5 tcode_not_found = 6 material_article_mismatch = 7 others = 8. if sy-subrc <> 0. write: 'MATERIAL_INIT error code =', sy-subrc. exit. endif. * 2. Get Material type and maintenance statuses select single matnr mtart vpsta from mara into (w_matnr, w_mtart, w_vpsta) where matnr = material. if sy-subrc <> 0. write: 'Material', material, 'not in material master'. exit. endif. select single pstat from t134 into w_pstat where mtart = w_mtart. if sy-subrc <> 0. write: 'Material type', w_mtart, 'not found'. endif. * 3. Get Screen Sequence for Tcode/Material call function 'BILDSEQUENZ_IDENTIFY' exporting materialart = w_mtart tcode_ref = w_t130m-trref importing bildsequenz = w_bilds exceptions wrong_call = 1 not_found = 2 others = 3. if sy-subrc <> 0. write: 'BILDSEQUENZ_IDENTIFY error code =', sy-subrc. exit. endif. * 4. Get Summary status (Transaction+Material+Material Type) call function 'ANZGSTATUS_SETZEN' exporting aktyp = w_t130m-aktyp marastatus = w_vpsta t134status = w_pstat tkstatus = w_tkstatus importing anzgstatus = w_anzgstatus exceptions anzgstatus_empty = 1 wrong_call = 2 others = 3. if sy-subrc <> 0. write: 'ANZGSTATUS_SETZEN error code =', sy-subrc. exit. endif. * 5. Get all selection views: call function 'SELECTION_VIEWS_FIND' exporting bildsequenz = w_bilds pflegestatus = w_anzgstatus tables bildtab = it_views exceptions call_wrong = 1 empty_selection = 2 others = 3. if sy-subrc <> 0. write: 'SELECTION_VIEWS_FIND error code =', sy-subrc. exit. endif. * 5. Get view #: read table it_views with key auswg = view. if sy-subrc = 0. w_linex = sy-tabix. else. write: 'View', view, 'not found'. exit. endif. * 6. Prepare BDC: if w_linex gt c_rows. w_line = w_linex - c_rows. f_pgdn = 'X'. endif. w_alnum = c_linen. w_alnum+17(2) = w_line. if not mm01 is initial. perform bdc_mm01. else. perform bdc_mm02. endif. ******************* end-of-selection. ******************* select single dytxt into w_dytxt from t133b where spras = sy-langu and bilds = w_bilds and auswg = view. if sy-subrc <> 0. clear w_dytxt. endif. describe table it_views lines w_num. write: / 'Screen sequence =', w_bilds, / 'Selection view', view, w_dytxt, / 'View Number = ', w_linex, / 'Selection views:', w_num. if not showview is initial. write: / '********* Table of views: *********'. loop at it_views. write / it_views. endloop. endif. if not show_bdc is initial. write: / '********* Table of BDC: *********'. loop at i_bdc. write / i_bdc. endloop. endif. *&---------------------------------------------------------------------* *& Form bdc_mm02 *&---------------------------------------------------------------------* form bdc_mm02. * for example, Accounting View 1 (21) perform dynpro using: *goto MM02 - Change Mateial (Initial screen) 'X' 'SAPLMGMM' '0060', ' ' 'BDC_CURSOR' 'RMMG1-MATNR', ' ' 'RMMG1-MATNR' w_matnr, *goto Select View(s) screen ' ' 'BDC_OKCODE' '=AUSW'. if f_pgdn = 'X'. perform dynpro using: *goto Select View(s) screen 'X' 'SAPLMGMM' '0070', *scroll down ' ' 'BDC_OKCODE' '=P+'. endif. perform dynpro using: *goto Select View(s) screen 'X' 'SAPLMGMM' '0070', ' ' w_alnum 'X', *Select Accounting1 view ' ' 'BDC_OKCODE' '=ENTR'. perform dynpro using: *goto Select Plant screen 'X' 'SAPLMGMM' '0080', ' ' 'BDC_CURSOR' 'RMMG1-WERKS', ' ' 'RMMG1-WERKS' 'P123', "for example ' ' 'BDC_OKCODE' '=ENTR'. perform dynpro using: *goto Accounting1 view 'X' 'SAPLMGMM' '4000', * * change data fields here .... * *save ' ' 'BDC_OKCODE' 'BU'. endform. " bdc_mm02 *&---------------------------------------------------------------------* *& Form bdc_mm01 *&---------------------------------------------------------------------* form bdc_mm01. * for example, Accounting View 1 (21) perform dynpro using: *goto MM01 - Create Mateial (Initial screen) 'X' 'SAPLMGMM' '0060', ' ' 'RMMG1-MATNR' w_matnr, ' ' 'RMMG1-MBRSH' 'H', "for example ' ' 'RMMG1-MTART' w_mtart, *goto Select View(s) screen ' ' 'BDC_OKCODE' '=AUSW'. * Selection of views perform dynpro using: 'X' 'SAPLMGMM' '70', ' ' 'BDC_OKCODE' '=RESA', "Deselect all 'X' 'SAPLMGMM' '70'. "continue selection screen if f_pgdn = 'X'. perform dynpro using: ' ' 'BDC_OKCODE' '=P+', "Page select screen forward 'X' 'SAPLMGMM' '70'. "continue selection screen endif. perform dynpro using: ' ' w_alnum 'X', "Accounting 1 ' ' 'USRM1-SISEL' 'X', "Create Views ' ' 'BDC_OKCODE' '=ENTR'. perform dynpro using: *goto Select Plant screen 'X' 'SAPLMGMM' '080', ' ' 'RMMG1-WERKS' 'P123', "for example ' ' 'BDC_OKCODE' '=ENTR'. perform dynpro using: *goto Accounting1 view 'X' 'SAPLMGMM' '4000', * * populate data fields here .... * *Save ' ' 'BDC_OKCODE' '=BU'. endform. " bdc_mm01 *---------------------------------------------------------------------* * FORM DYNPRO * *---------------------------------------------------------------------* * Fills BDC data table * *---------------------------------------------------------------------* * --> PI_DYNBEGIN Screen start flag in * * --> PI_NAME Field name in * * --> PI_VALUE Field value in * *---------------------------------------------------------------------* form dynpro using pi_dynbegin pi_name pi_value. clear i_bdc. if pi_dynbegin = 'X'. move: pi_name to i_bdc-program, pi_value to i_bdc-dynpro, 'X' to i_bdc-dynbegin. else. move: pi_name to i_bdc-fnam, pi_value to i_bdc-fval. endif. "pi_dynbegin append i_bdc. endform. "dynpro