BW: Query 跨系统 Copy

朋友推荐的,于是就转到这里来啦~~~还不错,对于生产机和开发机Query不一致的情况很有效,特别是开发机被改的面目全非的说。。。

 

两个 function,非常重要:

RSZ_X_COMPONENT_GET

RSZ_X_COMPONENT_SET

*&---------------------------------------------------------------------*

*& Report YUPG_QUERY_COPY

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT YUPG_QUERY_COPY.

 

TABLES:RSZCOMPDIR,

RFCDISPLAY,

RSZELTTXT. "Texts of reporting component elements

DATA: C_T_ELTDIR LIKE RSZ_X_ELTDIR OCCURS 0 WITH HEADER LINE.

DATA: C_T_ELTPROP LIKE RSZ_X_ELTPROP OCCURS 0 WITH HEADER LINE.

DATA: C_T_ELTPRIO LIKE RSZ_X_ELTPRIO OCCURS 0 WITH HEADER LINE.

DATA: C_T_ELTATTR LIKE RSZ_X_ELTATTR OCCURS 0 WITH HEADER LINE.

DATA: C_T_ELTXREF LIKE RSZ_X_ELTXREF OCCURS 0 WITH HEADER LINE.

DATA: C_T_COMPDIR LIKE RSZ_X_COMPDIR OCCURS 0 WITH HEADER LINE.

DATA: C_T_COMPIC LIKE RSZ_X_COMPIC OCCURS 0 WITH HEADER LINE.

DATA: C_T_SELECT LIKE RSZ_X_SELECT OCCURS 0 WITH HEADER LINE.

DATA: C_T_RANGE LIKE RSZ_X_RANGE OCCURS 0 WITH HEADER LINE.

DATA: C_T_CALC LIKE RSZ_X_CALC OCCURS 0 WITH HEADER LINE.

DATA: C_T_CELL LIKE RSZ_X_CEL OCCURS 0 WITH HEADER LINE.

DATA: C_T_VAR LIKE RSZ_X_VAR OCCURS 0 WITH HEADER LINE.

DATA: C_T_UID_SERVER LIKE RSZ_X_UID_SERVER OCCURS 0 WITH HEADER LINE.

DATA: C_T_ELTTXT LIKE RSZELTTXT OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF LT_RE_UID OCCURS 0,

O_UID LIKE RSZ_X_ELTDIR-ELTUID,

O_TNAME LIKE RSZ_X_COMPDIR-COMPID,

N_UID LIKE RSZ_X_ELTDIR-ELTUID,

N_TNAME LIKE RSZ_X_COMPDIR-COMPID,

END OF LT_RE_UID.

DATA: E_SUBRC LIKE SY-SUBRC.

SELECTION-SCREEN BEGIN OF BLOCK FILE WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS:S_COMPID FOR RSZCOMPDIR-COMPID DEFAULT 'Z_RPT_COPY_QUERY'.

PARAMETERS :P_DESTIN LIKE RFCDISPLAY-RFCDEST OBLIGATORY DEFAULT 'BWP_30B_UNIX'.

PARAMETERS :DC_FILE LIKE RLGRAP-FILENAME.

SELECTION-SCREEN END OF BLOCK FILE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR DC_FILE.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

DEF_PATH = ''

MASK = ',*.*,*.*.'

MODE = 'O'

IMPORTING

FILENAME = DC_FILE

EXCEPTIONS

INV_WINSYS = 1

NO_BATCH = 2

SELECTION_CANCEL = 3

SELECTION_ERROR = 4

OTHERS = 5.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

START-OF-SELECTION.

PERFORM UPLOAD_MAPPING.

LOOP AT S_COMPID.

PERFORM GET_QUERY_FROM_30B..

IF E_SUBRC EQ 0.

PERFORM GLOBE_UID_REPLACE.

PERFORM SET_QUERY_TO_35B.

ENDIF.

ENDLOOP.

END-OF-SELECTION.

*&---------------------------------------------------------------------*

*& Form UPLOAD_MAPPING

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM UPLOAD_MAPPING.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

* CODEPAGE = ' '

FILENAME = DC_FILE

FILETYPE = 'DAT'

* HEADLEN = ' '

* LINE_EXIT = ' '

* TRUNCLEN = ' '

* USER_FORM = ' '

* USER_PROG = ' '

* IMPORTING

* FILELENGTH =

TABLES

DATA_TAB = LT_RE_UID

EXCEPTIONS

CONVERSION_ERROR = 1

FILE_OPEN_ERROR = 2

FILE_READ_ERROR = 3

INVALID_TABLE_WIDTH = 4

INVALID_TYPE = 5

NO_BATCH = 6

UNKNOWN_ERROR = 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.

ENDIF.

ENDFORM. "UPLOAD_MAPPING

*&---------------------------------------------------------------------*

*& Form GET_QUERY

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM GET_QUERY_FROM_30B.

CALL FUNCTION 'RSZ_X_COMPONENT_GET'

DESTINATION P_DESTIN

EXPORTING

* I_GENUNIID =

I_COMPID = S_COMPID-LOW

* I_COMPUID =

I_OBJVERS = 'A'

* I_WITH_TEMPLATES = ' '

* I_BY_INFOCUBE =

I_TEMPLATE_TYPE = 'NIL'

* I_VARIABLE_TYPES =

* I_VARIABLE_INFOOBJECT =

I_LANGUAGE = SY-LANGU

* I_USE_BUFFER =

IMPORTING

* E_COMPUID =

E_SUBRC = E_SUBRC

TABLES

C_T_ELTDIR = C_T_ELTDIR

C_T_ELTPROP = C_T_ELTPROP

C_T_ELTPRIO = C_T_ELTPRIO

C_T_ELTATTR = C_T_ELTATTR

C_T_ELTXREF = C_T_ELTXREF

C_T_COMPDIR = C_T_COMPDIR

C_T_COMPIC = C_T_COMPIC

C_T_SELECT = C_T_SELECT

C_T_RANGE = C_T_RANGE

C_T_CALC = C_T_CALC

C_T_CELL = C_T_CELL

C_T_VAR = C_T_VAR

C_T_UID_SERVER = C_T_UID_SERVER

C_T_ELTTXT = C_T_ELTTXT

.

BREAK-POINT.

ENDFORM. "GET_QUERY

*&---------------------------------------------------------------------*

*& Form GLOBE_UID_REPLACE

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM GLOBE_UID_REPLACE.

LOOP AT C_T_ELTDIR.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTDIR-ELTUID.

MOVE LT_RE_UID-N_UID TO C_T_ELTDIR-ELTUID.

MODIFY C_T_ELTDIR.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTPROP.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTPROP-ELTUID.

MOVE LT_RE_UID-N_UID TO C_T_ELTPROP-ELTUID.

MODIFY C_T_ELTPROP.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTPROP.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTPROP-HIENM.

MOVE LT_RE_UID-N_UID TO C_T_ELTPROP-HIENM.

MODIFY C_T_ELTPROP.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTPRIO.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTPRIO-COMPUID.

MOVE LT_RE_UID-N_UID TO C_T_ELTPRIO-COMPUID.

MODIFY C_T_ELTPRIO.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTPRIO.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTPRIO-ELTUID.

MOVE LT_RE_UID-N_UID TO C_T_ELTPRIO-ELTUID.

MODIFY C_T_ELTPRIO.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTATTR.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTATTR-ELTUID.

MOVE LT_RE_UID-N_UID TO C_T_ELTATTR-ELTUID.

MODIFY C_T_ELTATTR.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTXREF.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTXREF-SELTUID.

MOVE LT_RE_UID-N_UID TO C_T_ELTXREF-SELTUID.

MODIFY C_T_ELTXREF.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTXREF.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_ELTXREF-TELTUID.

MOVE LT_RE_UID-N_UID TO C_T_ELTXREF-TELTUID.

MODIFY C_T_ELTXREF.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_COMPDIR.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_COMPDIR-COMPUID.

MOVE LT_RE_UID-N_UID TO C_T_COMPDIR-COMPUID.

MODIFY C_T_COMPDIR.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_COMPIC.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_COMPIC-COMPUID.

MOVE LT_RE_UID-N_UID TO C_T_COMPIC-COMPUID.

MODIFY C_T_COMPIC.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_SELECT.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_SELECT-ELTUID.

MOVE LT_RE_UID-N_UID TO C_T_SELECT-ELTUID.

MODIFY C_T_SELECT.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_RANGE.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_RANGE-ELTUID.

MOVE LT_RE_UID-N_UID TO C_T_RANGE-ELTUID.

MODIFY C_T_RANGE.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_RANGE.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_RANGE-LOW.

MOVE LT_RE_UID-N_UID TO C_T_RANGE-LOW.

MODIFY C_T_RANGE.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_CALC.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_CALC-ELTUID.

MOVE LT_RE_UID-N_UID TO C_T_CALC-ELTUID.

MODIFY C_T_CALC.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_CALC.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_CALC-OPER1.

MOVE LT_RE_UID-N_UID TO C_T_CALC-OPER1.

MODIFY C_T_CALC.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_CALC.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_CALC-OPER2.

MOVE LT_RE_UID-N_UID TO C_T_CALC-OPER2.

MODIFY C_T_CALC.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_VAR.

LOOP AT LT_RE_UID WHERE O_UID EQ C_T_VAR-VARUNIID.

MOVE LT_RE_UID-N_UID TO C_T_VAR-VARUNIID.

MODIFY C_T_VAR.

ENDLOOP.

ENDLOOP.

LOOP AT C_T_ELTDIR.

SELECT SINGLE TXTLG INTO C_T_ELTDIR-TXTLG

FROM RSZELTTXT

WHERE ELTUID EQ C_T_ELTDIR-ELTUID

AND OBJVERS EQ 'A'

AND LANGU EQ 'E'.

MODIFY C_T_ELTDIR.

ENDLOOP.

LOOP AT C_T_COMPDIR.

LOOP AT LT_RE_UID WHERE O_TNAME EQ C_T_COMPDIR-COMPID.

MOVE LT_RE_UID-N_TNAME TO C_T_COMPDIR-COMPID.

MODIFY C_T_COMPDIR.

ENDLOOP.

ENDLOOP.

ENDFORM. "GLOBE_UID_REPLACE

*&---------------------------------------------------------------------*

*& Form SET_QUERY

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM SET_QUERY_TO_35B.

CALL FUNCTION 'RSZ_X_COMPONENT_SET'

EXPORTING

I_COMPUID = '123'

I_OBJVERS = 'A'

I_COPY_MODE = 'X'

* I_ROLE =

* I_NODE =

I_LANGUAGE = SY-LANGU

IMPORTING

* E_GENUNIID =

E_SUBRC = E_SUBRC

TABLES

C_T_ELTDIR = C_T_ELTDIR

C_T_ELTPROP = C_T_ELTPROP

C_T_ELTPRIO = C_T_ELTPRIO

C_T_ELTATTR = C_T_ELTATTR

C_T_ELTXREF = C_T_ELTXREF

C_T_COMPDIR = C_T_COMPDIR

C_T_COMPIC = C_T_COMPIC

C_T_SELECT = C_T_SELECT

C_T_RANGE = C_T_RANGE

C_T_CALC = C_T_CALC

C_T_CELL = C_T_CELL

C_T_VAR = C_T_VAR

C_T_UID_SERVER = C_T_UID_SERVER

C_T_ELTTXT = C_T_ELTTXT

.

IF E_SUBRC NE 0.

WRITE : 'ERROR:',

E_SUBRC.

ELSE.

WRITE : 'SUCCESSFUL!'.

ENDIF.

ENDFORM. "SET_QUERY

 

源文档 <http://afalcon.bokee.com/viewdiary.181272717.html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值