REPORT ZTRBCHIP.
************************************************************************
* This program converts an online transaction run to a batch input
* program. The input parameters are the transaction code and the output
* program name (has to be in the customer name range)
* First the program runs the transaction as normal, and records all the
* screens, fields, input data in the CATT tables. The user has to leave
* the transaction at the end with the green arrow completely. Then, from
* the data in the CATT tables the program creates the source code of the
* batch input program and saves it with the specified name. Later this
* code can be further enhanced.
************************************************************************
TABLES: TSTC.
TABLES: CATF, CATR, CATG, CATV, CATU, CATP, CATX, CATA.
PARAMETERS: TR_CODE LIKE TSTC-TCODE OBLIGATORY DEFAULT 'SU01',
PR_NAME(8) OBLIGATORY DEFAULT 'ZTTTEEE'.
DATA: TRNAM LIKE CATF-TCODE, ABLNR LIKE CATF-ABLNR,
FIRST(2), SECOND(2), FNAM(30), FVAL(50), I TYPE I.
DATA: BEGIN OF PROGRAM OCCURS 50,
LINE(72),
END OF PROGRAM.
* Call the transaction and create the CATT data
CALL FUNCTION 'RS_CATT_MAINTAIN'
EXPORTING
AKTION = 'GENR'
CONFIRMATION = ' '
TCODE = TR_CODE
IMPORTING
ABLNR = ABLNR.
* Create the program source of the bdc creator program
PROGRAM = 'PROGRAM .'. PROGRAM+8(8) = PR_NAME. APPEND PROGRAM.
PROGRAM = ' '. APPEND PROGRAM.
PROGRAM = 'data: begin of bdc_tab occurs 100.'. APPEND PROGRAM.
PROGRAM = ' include structure bdcdata.'. APPEND PROGRAM.
PROGRAM = 'data: end of bdc_tab.'. APPEND PROGRAM.
PROGRAM = ' '. APPEND PROGRAM.
*
SELECT * FROM CATF WHERE ABLNR = ABLNR.
IF NOT CATF-TCODE IS INITIAL.
TRNAM = CATF-TCODE.
ENDIF.
*
PROGRAM = 'PERFORM BDC_FILL USING ''X'''.
APPEND PROGRAM.
*
PROGRAM = ' '''. PROGRAM+6 = CATF-MPOOL.
I = STRLEN( PROGRAM ). PROGRAM+I = ''''.
APPEND PROGRAM.
*
PROGRAM = ' '''. PROGRAM+6 = CATF-DYNNR.
I = STRLEN( PROGRAM ). PROGRAM+I = '''.'.
APPEND PROGRAM.
*
DO.
FIRST = CATF-VARF1.
SHIFT CATF-VARF1 LEFT BY 2 PLACES.
SECOND = CATF-VARF1.
SHIFT CATF-VARF1 LEFT BY 2 PLACES.
IF FIRST IS INITIAL.EXIT. ENDIF.
FNAM = CATF-VARF1(FIRST).
SHIFT CATF-VARF1 LEFT BY FIRST PLACES.
FVAL = CATF-VARF1(SECOND).
SHIFT CATF-VARF1 LEFT BY SECOND PLACES.
*
PROGRAM = 'PERFORM BDC_FILL USING '' '''.
APPEND PROGRAM.
*
PROGRAM = ' '''. PROGRAM+6 = FNAM.
I = STRLEN( PROGRAM ). PROGRAM+I = ''''.
APPEND PROGRAM.
*
PROGRAM = ' '''.
IF FVAL = ''' '''.
I = STRLEN( PROGRAM ). PROGRAM+I = '''.'.
ELSE.
PROGRAM+6 = FVAL.
I = STRLEN( PROGRAM ). PROGRAM+I = '''.'.
ENDIF.
APPEND PROGRAM.
*
ENDDO.
ENDSELECT.
*
PROGRAM = ' '. APPEND PROGRAM.
PROGRAM = 'call transaction '''.PROGRAM+18 = TR_CODE.
I = STRLEN( PROGRAM ). PROGRAM+I = ''''. APPEND PROGRAM.
PROGRAM = 'using bdc_tab mode ''N''.'. APPEND PROGRAM.
PROGRAM = 'if sy-subrc = 0.'. APPEND PROGRAM.
PROGRAM = ' write: / ''ok''.'. APPEND PROGRAM.
PROGRAM = 'else.'. APPEND PROGRAM.
PROGRAM = ' write: / ''error''.'. APPEND PROGRAM.
PROGRAM = 'endif.'. APPEND PROGRAM.
PROGRAM = ' '. APPEND PROGRAM.
*
PROGRAM = ' '. APPEND PROGRAM.
PROGRAM = 'FORM BDC_FILL USING P1 P2 P3.'. APPEND PROGRAM.
PROGRAM = ' clear bdc_tab.'. APPEND PROGRAM.
PROGRAM = ' if p1 = ''X''.'. APPEND PROGRAM.
PROGRAM = ' bdc_tab-dynbegin = p1.'. APPEND PROGRAM.
PROGRAM = ' bdc_tab-program = p2.'. APPEND PROGRAM.
PROGRAM = ' bdc_tab-dynpro = p3.'. APPEND PROGRAM.
PROGRAM = ' else.'. APPEND PROGRAM.
PROGRAM = ' bdc_tab-dynbegin = p1.'. APPEND PROGRAM.
PROGRAM = ' bdc_tab-fnam = p2.'. APPEND PROGRAM.
PROGRAM = ' bdc_tab-fval = p3.'. APPEND PROGRAM.
PROGRAM = ' endif.'. APPEND PROGRAM.
PROGRAM = ' append bdc_tab.'. APPEND PROGRAM.
PROGRAM = 'ENDFORM.'. APPEND PROGRAM.
* Clean the CATT tables
DELETE FROM CATF WHERE ABLNR = ABLNR.
DELETE FROM CATR WHERE ABLNR = ABLNR.
DELETE FROM CATG WHERE ABLNR = ABLNR.
DELETE FROM CATV WHERE ABLNR = ABLNR.
DELETE FROM CATU WHERE ABLNR = ABLNR.
DELETE FROM CATP WHERE ABLNR = ABLNR.
DELETE FROM CATX WHERE ABLNR = ABLNR.
DELETE FROM CATA WHERE ABLNR = ABLNR.
COMMIT WORK.
* Insert the program
INSERT REPORT PR_NAME FROM PROGRAM.