Table of Contents:
*@--------------------------------------------------------------------- *@ PROGRAM ID : ZF_VENDOR_PAY_METHOD_CHG *@ Program Desc : This Program creates a BDC session that alters *@ payment methods for vendors *@ *@ Input file : ID - *@ Output file : ID - *@ Tables Updated: Table LFB1 - *@ Transaction Code - *@ This program creates a BDC Session that simulates the *@ change of Payment Method on the Vendor master LFB1. *@ The table is not updated directly. Transaction FK02 *@ is called and data is put in the paramters on the *@ screen and transaction is run to save the data. *@ *@ Created by Ibrahim Jadalowen. December 27, 2001. *@---------------------------------------------------------------------- ** Change History: ** ************************************************************************ * REPORT zf_vendor_pay_method_chg NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 65. TABLES: lfb1. DATA: counter TYPE i, counta LIKE counter, countb LIKE counta. DATA: BEGIN OF itab OCCURS 0, lifnr LIKE lfb1-lifnr, bukrs LIKE lfb1-bukrs, zwels LIKE lfb1-zwels, "Payment method END OF itab. DATA: BEGIN OF bdcdel OCCURS 0. INCLUDE STRUCTURE bdcdata. DATA: END OF bdcdel. SELECTION-SCREEN: BEGIN OF BLOCK sel WITH FRAME TITLE box1. SELECT-OPTIONS: vendor FOR lfb1-lifnr, company FOR lfb1-bukrs OBLIGATORY. SELECTION-SCREEN: END OF BLOCK sel. SELECTION-SCREEN: SKIP 2. SELECTION-SCREEN: BEGIN OF BLOCK payment WITH FRAME TITLE box2. PARAMETERS: pay1 LIKE lfb1-zwels OBLIGATORY, pay2 LIKE lfb1-zwels OBLIGATORY. SELECTION-SCREEN: END OF BLOCK payment. SELECTION-SCREEN: SKIP 2. SELECTION-SCREEN: BEGIN OF BLOCK bdc WITH FRAME TITLE box3. PARAMETERS: name LIKE apqi-groupid OBLIGATORY DEFAULT sy-cprog. SELECTION-SCREEN: SKIP. PARAMETERS: bdc_updt RADIOBUTTON GROUP rad1 DEFAULT 'X'. PARAMETERS: bdc_test RADIOBUTTON GROUP rad1. SELECTION-SCREEN: END OF BLOCK bdc. INITIALIZATION. box1 = 'Select by '. box2 = 'Payment Methods'. box3 = 'BDC Session '. END-OF-SELECTION. PERFORM get_data. SORT itab BY lifnr. counter = 0. FORMAT COLOR COL_NORMAL INTENSIFIED OFF. LOOP AT itab. ULINE AT (44). WRITE:/1 sy-vline, 2 itab-lifnr NO-GAP, 12 sy-vline, 13 itab-bukrs NO-GAP, 20 sy-vline, 21 itab-zwels NO-GAP, 32 sy-vline, 33 pay2 NO-GAP, 44 sy-vline. ADD 1 TO counter. ENDLOOP. ULINE AT (44). IF counter = 0. SKIP 4. WRITE: 'NO DATA EXISTS FOR THE SELECTED CRITERIA; NO SESSION CREATED'. ENDIF. IF bdc_updt = 'X' AND counter GT 0. SKIP 3. CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING client = sy-mandt group = name keep = 'X' user = sy-uname. SORT itab BY lifnr. LOOP AT itab. PERFORM generate_bdc_data. CALL FUNCTION 'BDC_INSERT' EXPORTING tcode = 'FK02' TABLES dynprotab = bdcdel. REFRESH bdcdel. ENDLOOP. CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: / 'BDC session generated:', name, '. Time: ', sy-uzeit. WRITE: / 'Please run Batch session in SM35'. SKIP. WRITE: / 'Number of records to be processed:', counter. ENDIF. IF bdc_updt IS INITIAL. WRITE: / 'This is a test run. No BDC session was generated'. ENDIF. *********************************************************************** FORM get_data. SELECT lifnr bukrs zwels FROM lfb1 INTO TABLE itab WHERE lifnr IN vendor AND bukrs IN company AND zwels = pay1. ENDFORM. *---------------------------------------------------------------------* * FORM GENERATE_BDC_DATA * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM generate_bdc_data. PERFORM bdc_dynpro(zvbatch4) TABLES bdcdel USING 'SAPMF02K' '0106'. PERFORM bdc_field(zvbatch4) TABLES bdcdel USING 'RF02K-LIFNR' itab-lifnr. PERFORM bdc_field(zvbatch4) TABLES bdcdel USING 'RF02K-BUKRS' itab-bukrs. PERFORM bdc_field(zvbatch4) TABLES bdcdel USING 'RF02K-D0215' 'X'. PERFORM bdc_field(zvbatch4) TABLES bdcdel USING 'BDC_OKCODE' '/00'. PERFORM bdc_dynpro(zvbatch4) TABLES bdcdel USING 'SAPMF02K' '0215'. PERFORM bdc_field(zvbatch4) TABLES bdcdel USING 'LFB1-ZWELS' pay2. PERFORM bdc_field(zvbatch4) TABLES bdcdel USING 'BDC_OKCODE' '/11'. ENDFORM. ************************************************************************ TOP-OF-PAGE. CALL FUNCTION 'Z_REPORT_HEADING' EXPORTING progtitle = 'Payment Method changes for Vendors' progname = sy-cprog user = sy-uname EXCEPTIONS OTHERS = 1. SKIP. ULINE AT (44). WRITE:/1 sy-vline, 2 'Vendor' NO-GAP, 12 sy-vline, 13 'Company' NO-GAP, 20 sy-vline, 21 'Payment' NO-GAP, 32 sy-vline, 33 'Payment' NO-GAP, 44 sy-vline. WRITE:/1 sy-vline, 2 'Number' NO-GAP, 12 sy-vline, 13 'Code' NO-GAP, 20 sy-vline, 21 'Method From' NO-GAP, 32 sy-vline, 33 'Method To' NO-GAP, 44 sy-vline.