This document contains code for a program that loads material assignments for routings. It includes sections for internal tables, global variables, selection screens, and forms to load an input file, create BDC records to populate screens, insert the records into a BDC session, and close the session. The main logic is to load data, populate BDC tables to fill screens for a transaction code, insert the BDC, and close the session.
This document contains code for a program that loads material assignments for routings. It includes sections for internal tables, global variables, selection screens, and forms to load an input file, create BDC records to populate screens, insert the records into a BDC session, and close the session. The main logic is to load data, populate BDC tables to fill screens for a transaction code, insert the BDC, and close the session.
Copyright:
Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online from Scribd
This document contains code for a program that loads material assignments for routings. It includes sections for internal tables, global variables, selection screens, and forms to load an input file, create BDC records to populate screens, insert the records into a BDC session, and close the session. The main logic is to load data, populate BDC tables to fill screens for a transaction code, insert the BDC, and close the session.
Copyright:
Attribution Non-Commercial (BY-NC)
Available Formats
Download as TXT, PDF, TXT or read online from Scribd
*&---------------------------------------------------------------------* *& Module : PP | *& Application : The program loads the Material Assignment of Routings | *& | *&---------------------------------------------------------------------* REPORT zpp0122 NO STANDARD PAGE HEADING MESSAGE-ID z0 LINE-SIZE 132 LINE-COUNT 65(2). *----------------------------------------------------------------------* * Internal Tables * *----------------------------------------------------------------------* *Internal table for the Routing fields. DATA: BEGIN OF i_rout OCCURS 0, plnnr(8), plnal(2), matnr(18), werks(4), END OF i_rout. DATA: g_my_rec_in LIKE i_rout. ** Declare internal table for Call Transaction and BDC Session DATA: i_bdc_table LIKE bdcdata OCCURS 0 WITH HEADER LINE. *----------------------------------------------------------------------* * Global Variables * *----------------------------------------------------------------------* * DATA: g_counter(2) TYPE n, g_field_name(18) TYPE c, zc_yes TYPE syftype VALUE 'X'. *----------------------------------------------------------------------* * Selection Screen * *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001. PARAMETERS: p_fname1 TYPE localfile . SELECTION-SCREEN SKIP 1. SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002. PARAMETERS: p_rloc1 AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-005. PARAMETERS p_group(12) OBLIGATORY DEFAULT 'ZROUTING'. SELECTION-SCREEN END OF BLOCK c. SELECTION-SCREEN END OF BLOCK b. SELECTION-SCREEN END OF BLOCK a. **WRITE the report header TOP-OF-PAGE. INCLUDE zheading. *----------------------------------------------------------------------* * Start of selection * *----------------------------------------------------------------------* START-OF-SELECTION. * Load Input file PERFORM f_load_input_file. * Create BDC records. PERFORM create_bdc_records . *&---------------------------------------------------------------------* *& Form Create_BDC_records *&---------------------------------------------------------------------* * perform the BDC for the records in the internal table *----------------------------------------------------------------------* FORM create_bdc_records . IF NOT i_rout[] IS INITIAL. ** Open BDC session PERFORM open_bdc_session. LOOP AT i_rout. g_my_rec_in = i_rout. AT NEW plnnr. CLEAR i_bdc_table[]. PERFORM insert_screen_header. ENDAT. CONCATENATE 'MAPL-PLNAL(' g_counter ')' INTO g_field_name. PERFORM bdc_field USING g_field_name i_rout-plnal. CONCATENATE 'MAPL-MATNR(' g_counter ')' INTO g_field_name. PERFORM bdc_field USING g_field_name i_rout-matnr. CONCATENATE 'MAPL-WERKS(' g_counter ')' INTO g_field_name. PERFORM bdc_field USING g_field_name i_rout-werks. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. g_counter = g_counter + 1. * Page Down for further entries IF g_counter = 19. PERFORM bdc_field USING 'BDC_OKCODE' '=P+'. PERFORM bdc_dynpro USING 'SAPLCZDI' '1010'. g_counter = 2. ENDIF. AT END OF plnnr. PERFORM bdc_field USING 'BDC_OKCODE' '=BACK'. PERFORM bdc_dynpro USING 'SAPLCPDI' '1200'. PERFORM bdc_field USING 'BDC_OKCODE' '=BU'. PERFORM insert_bdc_new. ENDAT. ENDLOOP. CLEAR i_rout[]. PERFORM close_bdc_session. ** Release the BDC sessions created PERFORM release_bdc. ENDIF. ENDFORM. " open_group *&---------------------------------------------------------------------* *& Form bdc_dynpro_start *&---------------------------------------------------------------------* * Call the screen for the input of fields *----------------------------------------------------------------------* * -->P_G_PROGRAM_1 * -->P_G_SCREEN *----------------------------------------------------------------------* FORM bdc_dynpro USING p_g_program_1 p_g_screen. CLEAR i_bdc_table. i_bdc_table-program = p_g_program_1. i_bdc_table-dynpro = p_g_screen. i_bdc_table-dynbegin = 'X'. APPEND i_bdc_table. ENDFORM. " bdc_dynpro_start *&---------------------------------------------------------------------* *& Form bdc_field *----------------------------------------------------------------------* * Insert field * *----------------------------------------------------------------------* FORM bdc_field USING f_name f_value. * IF f_value <> space. CLEAR i_bdc_table. i_bdc_table-fnam = f_name. i_bdc_table-fval = f_value. APPEND i_bdc_table. * ENDIF. ENDFORM. "bdc_insert_field *&--------------------------------------------------------------------* *& Form open_bdc_session *&--------------------------------------------------------------------* * Create the BDC session *---------------------------------------------------------------------* FORM open_bdc_session . ** Open BDC session and creat and update condition records CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING client = sy-mandt * DEST = FILLER8 group = p_group * HOLDDATE = FILLER8 keep = 'X' user = sy-uname * RECORD = FILLER1 * PROG = SY-CPROG * IMPORTING * QID = EXCEPTIONS client_invalid = 1 destination_invalid = 2 group_invalid = 3 group_is_locked = 4 holddate_invalid = 5 internal_error = 6 queue_error = 7 running = 8 system_lock_error = 9 user_invalid = 10 OTHERS = 11 . 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. " create_bdc_session *&---------------------------------------------------------------------* *& Form insert_screen_header *&---------------------------------------------------------------------* * Header Data inserted *----------------------------------------------------------------------* FORM insert_screen_header . g_counter = 1. * First screen PERFORM bdc_dynpro USING 'SAPLCPDI' '1010'. PERFORM bdc_field USING 'BDC_CURSOR' 'RC271-PLNNR'. PERFORM bdc_field USING 'BDC_OKCODE' '=ALUE'. PERFORM bdc_field USING 'RC271-PLNNR' g_my_rec_in-plnnr. PERFORM bdc_field USING 'RC27M-MATNR' ' '. PERFORM bdc_field USING 'RC27M-WERKS' ' '. PERFORM bdc_field USING 'RC271-PLNAL' ' '. *next screen PERFORM bdc_dynpro USING 'SAPLCPDI' '1200'. PERFORM bdc_field USING 'BDC_OKCODE' '=MTUE'. *next screen PERFORM bdc_dynpro USING 'SAPLCZDI' '1010'. ENDFORM. " insert_screen_header *&---------------------------------------------------------------------* *& Form insert_bdc *&---------------------------------------------------------------------* * Insert the BDC for the transaction *----------------------------------------------------------------------* FORM insert_bdc_new . CALL FUNCTION 'BDC_INSERT' EXPORTING tcode = 'CA02' * POST_LOCAL = NOVBLOCAL * PRINTING = NOPRINT * SIMUBATCH = ' ' * CTUPARAMS = ' ' TABLES dynprotab = i_bdc_table EXCEPTIONS internal_error = 1 not_open = 2 queue_error = 3 tcode_invalid = 4 printing_invalid = 5 posting_invalid = 6 OTHERS = 7 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. CLEAR i_bdc_table[]. ENDFORM. " insert_bdc *&---------------------------------------------------------------------* *& Form close_bdc_session *&---------------------------------------------------------------------* * Close the session *----------------------------------------------------------------------* FORM close_bdc_session . CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS not_open = 1 queue_error = 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. " close_bdc_session *&---------------------------------------------------------------------* *& Form f_load_input_file *&---------------------------------------------------------------------* * Load the data file *----------------------------------------------------------------------* FORM f_load_input_file. * The data file is from Presentation server IF p_rloc1 = zc_yes. CALL FUNCTION 'WS_UPLOAD' EXPORTING filename = p_fname1 filetype = 'DAT' TABLES data_tab = i_rout EXCEPTIONS conversion_error = 1 file_open_error = 2 file_read_error = 3 invalid_type = 4 no_batch = 5 unknown_error = 6 invalid_table_width = 7 gui_refuse_filetransfer = 8 customer_error = 9 OTHERS = 10. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. EXIT. ENDIF. ENDIF. ENDFORM. " f_load_input_file *&---------------------------------------------------------------------* *& Form release_bdc *&---------------------------------------------------------------------* * Release BDC session *----------------------------------------------------------------------* FORM release_bdc. SUBMIT rsbdcsub WITH mappe EQ p_group WITH von EQ sy-datum WITH bis EQ sy-datum WITH fehler EQ '.' EXPORTING LIST TO MEMORY AND RETURN. ENDFORM. Labels parameters