Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

save/download program to client-pc

Former Member
0 Likes
1,986

hi,

is there an easy way to save/download abap-programs to your own desktop? to get it on your own pc?

at least the sources of reports and module pools? i doubt that there is a way to include dictionary objects, too.

thanx for hints, matthias

1 ACCEPTED SOLUTION
Read only

christian_wohlfahrt
Active Contributor
0 Likes
1,178

Hi Matthias!

With this <a href="http://www.dalestech.com/Media/files/Enterprise/dde/dd_enterprise_1.3.1.zip">tool</a> you can download even dynpros and included DDIC objects (as list of fields with definition, like display in SE11).

Regards,

Christian

4 REPLIES 4
Read only

Former Member
0 Likes
1,178

For the source code download, you can use SE38, menu, Utilities>More utilities>Download

Read only

Former Member
0 Likes
1,178

REPORT ZBACKUP06.

$$********************************************************************

$$* parametros

$$********************************************************************

SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TITLE1.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_NOME FOR FIELD NOME.

PARAMETERS: NOME LIKE RS38M-PROGRAMM DEFAULT '*'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_PATH FOR FIELD PATH.

PARAMETERS: PATH(250) TYPE C DEFAULT 'C:'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_EXPORT FOR FIELD EXPORT.

PARAMETERS: EXPORT RADIOBUTTON GROUP RAD2 DEFAULT 'X'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_IMPORT FOR FIELD IMPORT.

PARAMETERS: IMPORT RADIOBUTTON GROUP RAD2.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK SEL.

SELECTION-SCREEN BEGIN OF BLOCK CHK WITH FRAME TITLE TITLE2.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_RELA FOR FIELD RELATOR.

PARAMETERS: RELATOR RADIOBUTTON GROUP RADI.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_ONLINE FOR FIELD ON_LINE.

PARAMETERS: ON_LINE RADIOBUTTON GROUP RADI.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_SAPSCP FOR FIELD SAP_SCRP.

PARAMETERS: SAP_SCRP RADIOBUTTON GROUP RADI.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_TABELA FOR FIELD TABELA.

PARAMETERS: TABELA RADIOBUTTON GROUP RADI.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK CHK.

************************************************************************

SELECTION-SCREEN: BEGIN OF SCREEN 9001 TITLE TITLE_1 AS WINDOW.

SELECTION-SCREEN BEGIN OF BLOCK BLOQUE WITH FRAME TITLE TITLE3.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_OBJ FOR FIELD OBJECT.

PARAMETERS: OBJECT LIKE TADIR-OBJECT DEFAULT 'FORM'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_OBJ_N FOR FIELD OBJ_NAME.

PARAMETERS: OBJ_NAME(40) DEFAULT 'Z*'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_DATA FOR FIELD DATASET.

PARAMETERS: DATASET(250) TYPE C DEFAULT 'C:'.

SELECTION-SCREEN END OF LINE.

PARAMETERS: MODE(6) NO-DISPLAY.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) C_LSTF FOR FIELD LISTFILE.

PARAMETERS: LISTFILE AS CHECKBOX DEFAULT SPACE.

SELECTION-SCREEN END OF LINE.

PARAMETERS: PLANGVEC(60) DEFAULT SPACE NO-DISPLAY.

SELECTION-SCREEN END OF BLOCK BLOQUE.

SELECTION-SCREEN: END OF SCREEN 9001.

$$********************************************************************

$$ Tabelas

$$********************************************************************

TABLES: D020T,

TITLE.

$$********************************************************************

$$ Variaveis

$$********************************************************************

DATA : LIM_LINHA TYPE I,

LIM_PORCENT TYPE I,

ADM LIKE RSMPE_ADM,

TRKEY LIKE TRKEY,

LAST LIKE RSEU1_LST,

I TYPE I,

SLASH(1) TYPE C,

ITAB2(300) TYPE C ,

POSICAO(2) TYPE N,

BEGIN OF DR_READNAME,

PROG LIKE D020S-PROG,

DNUM LIKE D020S-DNUM,

END OF DR_READNAME,

FNAM(30) TYPE C,

DIDX(10) TYPE C,

FLG1(10) TYPE C,

FLG2(10) TYPE C,

FLG3(10) TYPE C,

FILL(10) TYPE C,

FMB1(10) TYPE C,

FMB2(10) TYPE C,

COLR(10) TYPE C,

LENG(10) TYPE C,

LINE(10) TYPE C,

COLN(10) TYPE C,

LTYP(10) TYPE C,

LANF(10) TYPE C,

LBLK(10) TYPE C,

LREP(10) TYPE C,

FMKY(10) TYPE C,

PAID(10) TYPE C,

UCNV(10) TYPE C,

TYPE(10) TYPE C,

AUTH(10) TYPE C,

WNAM(30) TYPE C,

DMAC(31) TYPE C,

GRP1(10) TYPE C,

GRP2(10) TYPE C,

GRP3(10) TYPE C,

GRP4(10) TYPE C,

ITYP(10) TYPE C,

AGLT(10) TYPE C,

ADEZ(10) TYPE C,

STXT(132) TYPE C,

BEGIN OF HC,

PROG(08),

DNUM(4),

TYPE(1),

FNUM(4),

DGRP(4),

BZMX(3),

BZBR(3),

MILI(3),

MICO(3),

MALI(3),

MACO(3),

NOLI(3),

NOCO(3),

VALP(3),

CUAN(1),

HDAT(1),

SPRA(1),

CUPO(30),

DGEN(6),

TGEN(6),

END OF HC,

N_MARCA TYPE I,

FLAG_MARC(4) TYPE C,

NOME2 LIKE RS38M-PROGRAMM,

NOME_TELA(60) TYPE C.

$$********************************************************************

$$ Tabelas internas

$$********************************************************************

DATA: BEGIN OF ITRDIR OCCURS 0,

NAME LIKE TRDIRT-NAME,

TEXT LIKE TRDIRT-TEXT,

END OF ITRDIR.

DATA : STA LIKE RSMPE_STAT OCCURS 0 WITH HEADER LINE,

FUN LIKE RSMPE_FUNT OCCURS 0 WITH HEADER LINE,

MEN LIKE RSMPE_MEN OCCURS 0 WITH HEADER LINE,

MTX LIKE RSMPE_MNLT OCCURS 0 WITH HEADER LINE,

ACT LIKE RSMPE_ACT OCCURS 0 WITH HEADER LINE,

BUT LIKE RSMPE_BUT OCCURS 0 WITH HEADER LINE,

PFK LIKE RSMPE_PFK OCCURS 0 WITH HEADER LINE,

SET LIKE RSMPE_STAF OCCURS 0 WITH HEADER LINE,

DOC LIKE RSMPE_ATRT OCCURS 0 WITH HEADER LINE,

TIT LIKE RSMPE_TITT OCCURS 0 WITH HEADER LINE,

PROGRAMAS LIKE RS38M-PROGRAMM OCCURS 0 WITH HEADER LINE,

PROGRAMAS2 LIKE RS38M-PROGRAMM OCCURS 0 WITH HEADER LINE,

TEXTOS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE,

REPORT(72) TYPE C OCCURS 0 WITH HEADER LINE,

ITAB(300) TYPE C OCCURS 0 WITH HEADER LINE,

E LIKE D022S OCCURS 0 WITH HEADER LINE,

H LIKE D020S OCCURS 0 WITH HEADER LINE,

F LIKE D021S OCCURS 0 WITH HEADER LINE,

M LIKE D023S OCCURS 0 WITH HEADER LINE,

DNUM LIKE D020S-DNUM OCCURS 0 WITH HEADER LINE,

H_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE, " Dados da transação

MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

$$********************************************************************

$$* Variaveis de Sapscript.

$$********************************************************************

DATA: ACTIVATE_OBJECT, "tried to activate object

ACTIVATE_OBJECT_OK. "activate o.k.

DATA:

BINFILE(1),

INDICE TYPE I,

  • i type i,

  • slash(1) type c,

BINFILE_CODEPAGE LIKE TCP02-CPCODEPAGE VALUE '0000',

TRUE(01) TYPE C VALUE 'X',

FALSE(01) TYPE C VALUE ' ',

NAME(89) TYPE C, "B20K016101

NAME_LEN LIKE SY-INDEX VALUE 88, "B20K016101

RC LIKE SY-SUBRC,

EXPORT_FLAG,

IMPORT_OK,

NOTHING,

END_OF_DATA,

FUNC_ACTIVATE(4) VALUE 'ACTV',

FUNC_OLANGUAGE(4) VALUE 'OLAN',

FUNC_NOTHING(4) VALUE 'NONE',

FUNC_DEL_PAPER(4) VALUE 'DPAP',

FUNC_DEL_FORM(4) VALUE 'DFOR', "B20K022630

FUNC_DEL_STYL(4) VALUE 'DSTY', "B20K022630

LANGUAGE_VECTOR(60) TYPE C,

CUSTOM_LANGUAGE_VECTOR(60) TYPE C,

CUSTOM_LANGUAGE_VECTOR_VALID(8) TYPE C VALUE SPACE,

CUSTOM_LANGUAGE_VECTOR_MAGIC(8) TYPE C VALUE 'LangVect',

NLP_LV1(1) TYPE C VALUE '1',

NLP_LV2(1) TYPE C VALUE '2',

NLP_LV3(1) TYPE C VALUE '3',

NLP_ERR(1) TYPE C VALUE 'E', "error

NLP_WAR(1) TYPE C VALUE 'W', "warning

NLP_INF(1) TYPE C VALUE ' ', "info

NLP_LAN(1) TYPE C VALUE 'E', "default message language

NLP_MID(2) TYPE C VALUE 'TD', "message id

NLP_NOB(1) TYPE C VALUE ' ', "no new object?

SYSTEM_CODEPAGE LIKE TCP02-CPCODEPAGE,

OBJECT_STYLE LIKE THEAD-TDOBJECT VALUE 'STYLE ',

OBJECT_FORM LIKE THEAD-TDOBJECT VALUE 'FORM ',

OBJECT_DOKU LIKE THEAD-TDOBJECT VALUE 'DOKU ',

OBJECT_DSYS LIKE THEAD-TDOBJECT VALUE 'DSYS ',

OBJECT_TEXT LIKE THEAD-TDOBJECT VALUE 'TEXT ',

BINARY_FILE_FORMAT_VALID(7) TYPE C VALUE SPACE,

BINARY_FILE_FORMAT_MAGIC(7) TYPE C VALUE 'BinFile',

END_OF_OBJDATA(01) TYPE C,

END_OF_CLIPBOARD(01) TYPE C,

FILENAME(60),

COUNT_ERROR(3) TYPE N,

COUNT_WARNING(3) TYPE N,

SUBRC LIKE SY-SUBRC,

CLIPBOARD(01) TYPE C,

LIST_FILE_CONTENTS(1) TYPE C,

TEXTNAME(70) VALUE 'TEXT,*,ST,&',

SUFFIX(4),

FILE(60),

DATASET_AUX(50),

TAB_NOME(30) TYPE C OCCURS 0 WITH HEADER LINE,

CORRECTION_CHECK(1).

TABLES : *TADIR, TCP00, STXH, TSP0A, TSP09, TFO03, TFO06, T022D,

TSP06, TSP1D, TFO04, ITCRS, T100.

DATA : BEGIN OF TAB_PC OCCURS 100,

LINHA(1024) TYPE C,

END OF TAB_PC.

DATA BEGIN OF PAPER.

DATA PDPAPER LIKE TSP06-PDPAPER.

DATA PDPTYPE LIKE TSP06-PDPTYPE.

DATA END OF PAPER.

DATA:BEGIN OF TSP06_LINE,

PDLFDNR(3) TYPE N,

PDDATALEN(3) TYPE N,

ALL(240),

END OF TSP06_LINE.

DATA:BEGIN OF TFO03_LINE,

CPI(10),

ALL(240),

END OF TFO03_LINE.

DATA :

BEGIN OF RECORD OCCURS 0,

TYP(1),

COMMAND(4),

DATA(507), "B20K043010

END OF RECORD.

DATA BEGIN OF HEADER_TAB OCCURS 20.

INCLUDE STRUCTURE THEAD.

DATA END OF HEADER_TAB.

DATA:

BEGIN OF TEXTLOW,

TDOBJECT LIKE THEAD-TDOBJECT,

TDNAME LIKE THEAD-TDNAME,

TDID LIKE THEAD-TDID,

TDSPRAS LIKE THEAD-TDSPRAS,

END OF TEXTLOW.

DATA BEGIN OF HEADER_DEF.

INCLUDE STRUCTURE THEAD.

DATA END OF HEADER_DEF.

DATA BEGIN OF HEADER.

INCLUDE STRUCTURE THEAD.

DATA END OF HEADER.

DATA BEGIN OF LINES OCCURS 50.

INCLUDE STRUCTURE TLINE.

DATA END OF LINES.

DATA:

TRANSLATION_WANTED LIKE ITCDA-TDTRANSTAT VALUE 0,

TRANSLATION_NOT_WANTED LIKE ITCDA-TDTRANSTAT VALUE 1.

DATA: FC_FULL_TAB_LINES LIKE SY-TABIX.

DATA: BEGIN OF FC_FULL_TAB OCCURS 0,

RECORD(512),

END OF FC_FULL_TAB.

DATA: BEGIN OF FC_COMP_TAB OCCURS 0,

RECORD(1024),

END OF FC_COMP_TAB.

DATA: FC_COMP_TAB_LINES LIKE SY-TABIX.

DATA:

ID_STANDARD LIKE THEAD-TDID VALUE 'ST ',

ID_DEF LIKE THEAD-TDID VALUE 'DEF',

ID_TXT LIKE THEAD-TDID VALUE 'TXT'.

DATA:

STATUS_ACTIVE LIKE ITCDA-TDSTATUS VALUE ' ',

STATUS_SAP LIKE ITCDA-TDSTATUS VALUE 'SAP',

STATUS_CUSTOMER LIKE ITCDA-TDSTATUS VALUE 'CUS'.

DATA BEGIN OF BUF_T022D OCCURS 50.

INCLUDE STRUCTURE T022D.

DATA END OF BUF_T022D.

DATA BEGIN OF BUF_TSP06 OCCURS 200.

INCLUDE STRUCTURE TSP06.

DATA END OF BUF_TSP06.

DATA BEGIN OF BUF_TFO03 OCCURS 20.

INCLUDE STRUCTURE TFO03.

DATA END OF BUF_TFO03.

DATA BEGIN OF BUF_TFO04 OCCURS 1000.

INCLUDE STRUCTURE TFO04.

DATA END OF BUF_TFO04.

DATA BEGIN OF BUF_TFO06 OCCURS 10.

INCLUDE STRUCTURE TFO06.

DATA END OF BUF_TFO06.

FIELD-SYMBOLS:

.

DATA NAME_POS LIKE SY-INDEX.

CONSTANTS:

BINARY_FILE_HEADER_BYTE1(2) VALUE '52', "R

BINARY_FILE_HEADER_BYTE2(2) VALUE '53', "S

BINARY_FILE_HEADER_BYTE3(2) VALUE '54', "T

BINARY_FILE_HEADER_BYTE4(2) VALUE '58', "X

BINARY_FILE_HEADER_BYTE5(2) VALUE '40'. "@

CONSTANTS: FC_FULL_TAB_MAXLINES LIKE SY-TABIX VALUE 5000.

$$********************************************************************

$$*Constantes

$$********************************************************************

CONSTANTS: SEPARADOR(50) TYPE C VALUE

'*** Agora vem o Programa ***'.

$$********************************************************************

$$*Inicialização

$$********************************************************************

INITIALIZATION.

TITLE2 = 'Tipo de PRG'.

TITLE3 = TITLE1 = 'Parametros de Import e Export'.

C_OBJ_N = C_NOME = 'Nome do PRG :'.

C_DATA = C_PATH = 'Caminho :'.

C_IMPORT = 'Importar'.

C_EXPORT = 'Exportar'.

C_ONLINE = 'On Line'.

TITLE_1 = C_SAPSCP = 'Sapscript'.

C_TABELA = 'Tabelas'.

C_RELA = 'Relatórios'.

C_OBJ = 'Categoria'.

C_LSTF = 'Listar'.

$$********************************************************************

$$*Macros

$$********************************************************************

DEFINE MENSSAGEM.

IF &4 = ' '.

DESCRIBE TABLE &1 LINES LIM_LINHA.

LIM_PORCENT = ( 100 * &2 ) / LIM_LINHA.

ELSE.

LIM_PORCENT = &2.

ENDIF.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

PERCENTAGE = LIM_PORCENT

TEXT = &3

EXCEPTIONS

OTHERS = 0.

END-OF-DEFINITION.

$$********************************************************************

$$ inicio do codigo

$$********************************************************************

START-OF-SELECTION.

MESSTAB[] = MESSTAB[].

MESSTAB = MESSTAB.

IF RELATOR = 'X'.

CASE IMPORT.

WHEN ' '. " EXPORTAR

PERFORM EXPORT_RELATORIO.

WHEN: 'X'. " IMPORTAR

PERFORM IMPORT_RELATORIO.

ENDCASE.

ELSEIF ON_LINE = 'X'.

CASE IMPORT.

WHEN ' '. " EXPORTAR

PERFORM EXPORT_ON_LINE.

WHEN: 'X'. " IMPORTAR

PERFORM IMPORT_ON_LINE.

ENDCASE.

ELSEIF SAP_SCRP = 'X'.

CASE IMPORT.

WHEN ' '. " EXPORTAR

TITLE_1 = 'Sapscript - Exportar'.

WHEN: 'X'. " IMPORTAR

TITLE_1 = 'Sapscript - Importar'.

ENDCASE.

DATASET = PATH.

CALL SELECTION-SCREEN 9001 STARTING AT 5 6.

CHECK SY-SUBRC EQ 0.

CHECK NOT OBJ_NAME IS INITIAL.

PERFORM Z_SAPSCRIPT.

ELSEIF TABELA = 'X'.

CASE IMPORT.

WHEN ' '. " EXPORTAR

  • Incluir

WHEN: 'X'. " IMPORTAR

  • Incluir

ENDCASE.

ENDIF.

END-OF-SELECTION.

*----


*

  • FORM DOWNLOAD *

*----


*

FORM DOWNLOAD.

DATA: NOMBRE LIKE RLGRAP-FILENAME.

CONCATENATE PATH PROGRAMAS '.TXT' INTO NOMBRE.

MENSSAGEM STA[] 50 'Exportando Programa' 'X'.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = NOMBRE

FILETYPE = 'ASC'

TABLES

DATA_TAB = ITAB

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

OTHERS = 3.

CASE SY-SUBRC.

WHEN 0.

WRITE: / 'Abaixou : ', NOMBRE .

WHEN 1.

WRITE: / 'FILE_OPEN_ERROR: ', NOMBRE.

WHEN 2.

WRITE: / 'FILE_WRITE_ERROR: ', NOMBRE.

ENDCASE.

ENDFORM.

*&----


*

*& Form UPLOAD

*&----


*

FORM UPLOAD.

DATA: C_AUX LIKE RLGRAP-FILENAME.

CONCATENATE PATH NOME '.TXT' INTO C_AUX.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = C_AUX

FILETYPE = 'ASC'

TABLES

DATA_TAB = ITAB

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

OTHERS = 8.

IF SY-SUBRC = 0. ENDIF.

ENDFORM. " UPLOAD

*&----


*

*& Form INSERT_LINE

*&----


*

FORM INSERT_LINE USING LC_START TYPE C LC_NAME TYPE C LC_VALUE TYPE ANY.

CLEAR H_BDC.

MOVE LC_START TO H_BDC-DYNBEGIN.

IF LC_START = 'X'.

MOVE:

LC_NAME TO H_BDC-PROGRAM,

LC_VALUE TO H_BDC-DYNPRO.

ELSE.

MOVE:

LC_NAME TO H_BDC-FNAM,

LC_VALUE TO H_BDC-FVAL.

ENDIF.

APPEND H_BDC.

ENDFORM. " INSERT_LINE

*&----


*

*& Form EXPORT_ON_LINE

*&----


*

FORM EXPORT_ON_LINE.

TRANSLATE NOME USING '*%?_'.

I = STRLEN( PATH ) - 1.

MOVE PATH+I(1) TO SLASH.

IF SLASH <> ''.

CONCATENATE PATH '' INTO PATH.

ENDIF.

REFRESH: PROGRAMAS, PROGRAMAS2.

SELECT NAME FROM TRDIR INTO TABLE PROGRAMAS

WHERE NAME LIKE NOME.

IF SY-SUBRC <> 0.

MESSAGE S208(00) WITH 'Programa Não Encontrado na Biblioteca'.

STOP.

ENDIF.

REFRESH: REPORT, TEXTOS, ITAB.

LOOP AT PROGRAMAS.

ITAB = PROGRAMAS .

APPEND ITAB.

READ REPORT PROGRAMAS INTO REPORT.

CONCATENATE '###PROG##' PROGRAMAS INTO ITAB.

MESSAGE S208(00) WITH 'Exportando Programa Principal'.

APPEND ITAB.

LOOP AT REPORT INTO ITAB.

ITAB2 = ITAB.

APPEND ITAB.

CONDENSE ITAB2 NO-GAPS.

SEARCH ITAB2 FOR 'include'.

IF SY-SUBRC = 0.

POSICAO = 7 + SY-FDPOS.

PROGRAMAS2 = ITAB2+POSICAO(30).

TRANSLATE PROGRAMAS2 USING '. '.

APPEND PROGRAMAS2.

ENDIF.

ENDLOOP.

ITAB = '###FIM##'.

APPEND ITAB.

CONCATENATE '###TEXT##' PROGRAMAS INTO ITAB.

APPEND ITAB.

MESSAGE S208(00) WITH 'Exportando Textos'.

READ TEXTPOOL PROGRAMAS INTO TEXTOS LANGUAGE 'P'.

LOOP AT TEXTOS.

ITAB = TEXTOS.

APPEND ITAB.

ENDLOOP.

ITAB = '###FIM##'.

APPEND ITAB.

DATA LC_MENS(50) TYPE C.

LOOP AT PROGRAMAS2.

CLEAR LC_MENS.

CONCATENATE 'Exportando Include :' PROGRAMAS2 INTO LC_MENS

SEPARATED BY SPACE.

MENSSAGEM PROGRAMAS2[] SY-TABIX LC_MENS ' '.

READ TEXTPOOL PROGRAMAS2 INTO TEXTOS LANGUAGE 'P'.

READ REPORT PROGRAMAS2 INTO REPORT.

CONCATENATE '###INCL##' PROGRAMAS2 INTO ITAB.

APPEND ITAB.

LOOP AT REPORT INTO ITAB.

APPEND ITAB.

ENDLOOP.

ITAB = '###FIM##'.

APPEND ITAB.

ENDLOOP.

ENDLOOP.

SELECT DNUM FROM D020S INTO TABLE DNUM

WHERE PROG = NOME.

LOOP AT DNUM.

DR_READNAME-DNUM = DNUM.

DR_READNAME-PROG = NOME.

CLEAR LC_MENS.

CONCATENATE 'Exportando Tela :' DNUM INTO LC_MENS

SEPARATED BY SPACE.

MENSSAGEM DNUM[] SY-TABIX LC_MENS ' '.

IMPORT DYNPRO H F E M ID DR_READNAME.

CONCATENATE '###Tela###' DR_READNAME INTO ITAB.

APPEND ITAB.

SELECT SINGLE * FROM D020T WHERE PROG = NOME

AND DYNR = DNUM

AND LANG = SY-LANGU.

CONCATENATE '###NP###' D020T-DTXT INTO ITAB.

APPEND ITAB.

CONCATENATE '###H###' DR_READNAME INTO ITAB.

APPEND ITAB.

HC-PROG = H-PROG.

HC-DNUM = H-DNUM.

HC-TYPE = H-TYPE.

HC-FNUM = H-FNUM.

HC-DGRP = H-DGRP.

HC-BZMX = H-BZMX.

HC-BZBR = H-BZBR.

HC-MILI = H-MILI.

HC-MICO = H-MICO.

HC-MALI = H-MALI.

HC-MACO = H-MACO.

HC-NOLI = H-NOLI.

HC-NOCO = H-NOCO.

HC-VALP = H-VALP.

HC-CUAN = H-CUAN.

HC-HDAT = H-HDAT.

HC-SPRA = H-SPRA.

HC-CUPO = H-CUPO.

HC-DGEN = H-DGEN.

HC-TGEN = H-TGEN.

ITAB = HC.

APPEND ITAB.

CONCATENATE '###F###' DR_READNAME INTO ITAB.

APPEND ITAB.

LOOP AT F. " into itab.

FNAM = F-FNAM.

DIDX = F-DIDX.

FLG1 = F-FLG1.

FLG2 = F-FLG2.

FLG3 = F-FLG3.

FILL = F-FILL.

FMB1 = F-FMB1.

FMB2 = F-FMB2.

COLR = F-COLR.

LENG = F-LENG.

LINE = F-LINE.

COLN = F-COLN.

LTYP = F-LTYP.

LANF = F-LANF.

LBLK = F-LBLK.

LREP = F-LREP.

FMKY = F-FMKY.

PAID = F-PAID.

UCNV = F-UCNV.

TYPE = F-TYPE.

AUTH = F-AUTH.

WNAM = F-WNAM.

DMAC = F-DMAC.

GRP1 = F-GRP1.

GRP2 = F-GRP2.

GRP3 = F-GRP3.

GRP4 = F-GRP4.

ITYP = F-ITYP.

AGLT = F-AGLT.

ADEZ = F-ADEZ.

STXT = F-STXT.

CONCATENATE

FNAM '|' DIDX '|' FLG1 '|' FLG2 '|' FLG3 '|' FILL '|'

FMB1 '|' FMB2 '|' COLR '|' LENG '|' LINE '|' COLN '|'

LTYP '|' LANF '|' LBLK '|' LREP '|' FMKY '|' PAID '|'

UCNV '|' TYPE '|' AUTH '|' WNAM '|' DMAC '|' GRP1 '|'

GRP2 '|' GRP3 '|' GRP4 '|' ITYP '|' AGLT '|' ADEZ '|' STXT

INTO ITAB.

APPEND ITAB.

ENDLOOP.

CONCATENATE '###E###' DR_READNAME INTO ITAB.

APPEND ITAB.

LOOP AT E INTO ITAB.

APPEND ITAB.

ENDLOOP.

CONCATENATE '###M###' DR_READNAME INTO ITAB.

APPEND ITAB.

LOOP AT M INTO ITAB.

APPEND ITAB.

ENDLOOP.

ITAB = '###FIM##'.

APPEND ITAB.

ENDLOOP.

CONCATENATE '###TITLE##' PROGRAMAS INTO ITAB.

APPEND ITAB.

SELECT * FROM TITLE

WHERE DDLANGUAGE = SY-LANGU

AND PROGNAME = PROGRAMAS.

CONCATENATE TITLE-DDNR '|' TITLE-TEXT_LINE INTO ITAB.

APPEND ITAB.

ENDSELECT.

ITAB = '###FIM##'.

APPEND ITAB.

CALL FUNCTION 'RS_CUA_INTERNAL_FETCH'

EXPORTING

PROGRAM = PROGRAMAS

IMPORTING

ADM = ADM

TABLES

STA = STA

FUN = FUN

MEN = MEN

MTX = MTX

ACT = ACT

BUT = BUT

PFK = PFK

SET = SET

DOC = DOC

TIT = TIT

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC = 0. ENDIF.

ITAB = '*INIC_LAST*'.

APPEND ITAB.

ITAB = LAST.

APPEND ITAB.

ITAB = '*FIM_LAST*'.

APPEND ITAB.

MENSSAGEM STA[] 10 'Exportando Gui-Status 10%' 'X'.

ITAB = '*INIC_STA*'.

APPEND ITAB.

LOOP AT STA.

ITAB = STA.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_STA*'.

APPEND ITAB.

ITAB = '*INIC_FUN*'.

APPEND ITAB.

LOOP AT FUN.

ITAB = FUN.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_FUN*'.

APPEND ITAB.

MENSSAGEM STA[] 20 'Exportando Gui-Status 20%' 'X'.

ITAB = '*INIC_MTX*'.

APPEND ITAB.

LOOP AT MTX.

ITAB = MTX.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_MTX*'.

APPEND ITAB.

MENSSAGEM STA[] 30 'Exportando Gui-Status 30%' 'X'.

ITAB = '*INIC_DOC*'.

APPEND ITAB.

LOOP AT DOC.

ITAB = DOC.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_DOC*'.

APPEND ITAB.

MENSSAGEM STA[] 40 'Exportando Gui-Status 40%' 'X'.

ITAB = '*INIC_TIT*'.

APPEND ITAB.

LOOP AT TIT.

ITAB = TIT.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_TIT*'.

APPEND ITAB.

MENSSAGEM STA[] 50 'Exportando Gui-Status 50%' 'X'.

ITAB = '*INIC_MEN*'.

APPEND ITAB.

LOOP AT MEN.

ITAB = MEN.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_MEN*'.

APPEND ITAB.

MENSSAGEM STA[] 60 'Exportando Gui-Status 60%' 'X'.

ITAB = '*INIC_ACT*'.

APPEND ITAB.

LOOP AT ACT.

ITAB = ACT.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_ACT*'.

APPEND ITAB.

MENSSAGEM STA[] 70 'Exportando Gui-Status 70%' 'X'.

ITAB = '*INIC_ADM*'.

APPEND ITAB.

ITAB = ADM.

APPEND ITAB.

ITAB = '*FIM_ADM*'.

APPEND ITAB.

MENSSAGEM STA[] 80 'Exportando Gui-Status 80%' 'X'.

ITAB = '*INIC_BUT*'.

APPEND ITAB.

LOOP AT BUT.

ITAB = BUT.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_BUT*'.

APPEND ITAB.

MENSSAGEM STA[] 90 'Exportando Gui-Status 90%' 'X'.

ITAB = '*INIC_PFK*'.

APPEND ITAB.

LOOP AT PFK.

ITAB = PFK.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_PFK*'.

APPEND ITAB.

MENSSAGEM STA[] 100 'Exportando Gui-Status 100%' 'X'.

ITAB = '*INIC_SET*'.

APPEND ITAB.

LOOP AT SET.

ITAB = SET.

APPEND ITAB.

ENDLOOP.

ITAB = '*FIM_SET*'.

APPEND ITAB.

PERFORM DOWNLOAD.

ENDFORM. " EXPORT_ON_LINE

*&----


*

*& Form IMPORT_ON_LINE

*&----


*

FORM IMPORT_ON_LINE.

CLEAR N_MARCA.

CLEAR FLAG_MARC.

IF NOME CS '*' OR NOME CS '?'.

MESSAGE S208(00) WITH 'Erro importar Um a Um'.

STOP.

ENDIF.

REFRESH: REPORT, TEXTOS, ITAB.

CLEAR I.

PERFORM UPLOAD.

DATA FLAG(4) TYPE C.

CLEAR FLAG.

LOOP AT ITAB.

IF ITAB CS '###PROG##'.

MESSAGE S208(00) WITH 'Importando Programa Principal'.

FLAG = 'PROG'.

ENDIF.

IF ITAB CS '###FIM##' AND FLAG = 'PROG'.

INSERT REPORT NOME FROM REPORT. " CRIA PROGRAMA

REFRESH REPORT.

COMMIT WORK.

ENDIF.

IF ITAB CS '###TITLE##'.

FLAG = 'TITL'.

ENDIF.

IF ITAB CS '###FIM##' AND FLAG = 'TITL'.

INSERT TEXTPOOL NOME FROM TEXTOS." CRIA TEXTOS

REFRESH TEXTOS.

COMMIT WORK.

ENDIF.

IF ITAB CS '###TEXT##'.

MESSAGE S208(00) WITH 'Importando Textos'.

FLAG = 'TEXT'.

ENDIF.

IF ITAB CS '###FIM##' AND FLAG = 'TEXT'.

INSERT TEXTPOOL NOME FROM TEXTOS." CRIA TEXTOS

REFRESH TEXTOS.

COMMIT WORK.

ENDIF.

IF ITAB CS '###INCL##'.

NOME2 = ITAB+15(8).

FLAG = 'INCL'.

ENDIF.

IF ITAB CS '###FIM##' AND FLAG = 'INCL'.

MESSAGE S368(00) WITH 'Importando Include :' NOME2.

INSERT REPORT NOME2 FROM REPORT. " CRIA PROGRAMA

REFRESH REPORT.

COMMIT WORK.

ENDIF.

IF ITAB CS '###Tela###'.

FLAG = 'TELA'.

DR_READNAME = ITAB+16.

MESSAGE S368(00) WITH 'Importando Tela :' DR_READNAME-DNUM.

ENDIF.

IF ITAB CS '###FIM##' AND FLAG = 'M'.

EXPORT DYNPRO H F E M ID DR_READNAME.

CLEAR : H, F, E, M.

REFRESH : H, F, E, M.

COMMIT WORK.

REFRESH H_BDC.

N_MARCA = N_MARCA + 1.

PERFORM INSERT_LINE USING:

'X' 'SAPMSEUS' '0100',

' ' 'RS37A-DYNPROG' DR_READNAME-PROG,

' ' 'FELD-DYNNR' DR_READNAME-DNUM,

' ' 'RS37A-FUNHD' 'X',

' ' 'BDC_OKCODE' 'AEND',

'X' 'SAPMSEUS' '0150',

' ' 'RS37A-DTXT' NOME_TELA,

' ' 'BDC_OKCODE' '/11'.

IF N_MARCA = 1.

PERFORM INSERT_LINE USING:

'X' 'SAPLSTRD' '0100',

' ' 'BDC_OKCODE' '/7'.

ENDIF.

PERFORM INSERT_LINE USING:

'X' 'SAPMSEUS' '0150',

' ' 'BDC_OKCODE' 'UPD',

'X' 'SAPMSEUS' '0150',

' ' 'BDC_OKCODE' '/3',

'X' 'SAPMSEUS' '0100',

' ' 'BDC_OKCODE' '/3'.

CALL TRANSACTION 'SE51'

USING H_BDC

MODE 'E'

UPDATE 'S'

MESSAGES INTO MESSTAB.

ENDIF.

IF ITAB CS '###NP###'.

CLEAR NOME_TELA.

NOME_TELA = ITAB+14(60).

ENDIF.

IF ITAB CS '###H###'.

FLAG = 'H'.

ENDIF.

IF ITAB CS '###F###'.

FLAG = 'F'.

ENDIF.

IF ITAB CS '###E###'.

FLAG = 'E'.

ENDIF.

IF ITAB CS '###M###'.

FLAG = 'M'.

ENDIF.

CASE FLAG.

WHEN : 'PROG'.

CHECK NOT ITAB CS '###PROG##'.

CHECK NOT ITAB CS '###FIM##'.

REPORT = ITAB.

APPEND REPORT.

WHEN : 'INCL'.

CHECK NOT ITAB CS '###INCL##'.

CHECK NOT ITAB CS '###FIM##'.

REPORT = ITAB.

APPEND REPORT.

WHEN : 'TITL'.

CHECK NOT ITAB CS '###TITLE##'.

CHECK NOT ITAB CS '###FIM##'.

REFRESH H_BDC.

PERFORM INSERT_LINE USING:

'X' 'SAPMSEU0' '0200',

' ' 'RSEUX-CP' 'X',

' ' 'RSEUX-CP_VALUE' NOME,

' ' 'BDC_OKCODE' 'OBJA',

'X' 'SAPMSSY0' '0120',

' ' 'BDC_OKCODE' '/5',

'X' 'SAPMSEU0' '0220',

' ' 'RSEUX-EP_VALUE' NOME,

' ' 'RSEUX-CPZ' 'X',

' ' 'RSEUX-CPZ_VALUE' ITAB+0(3),

' ' 'BDC_OKCODE' '/5',

'X' 'SAPLSEU0' '0302',

' ' 'RSEU1-TIT_TEXT' ITAB+4(60),

' ' 'BDC_OKCODE' 'SAVE',

'X' 'SAPLSTRD' '0100',

' ' 'KO007-L_DEVCLASS' ' ',

' ' 'BDC_OKCODE' 'TEMP',

'X' 'SAPMSSY0' '0120',

' ' 'BDC_OKCODE' 'TRRT',

'X' 'SAPMSEU0' '0200',

' ' 'BDC_OKCODE' '/3'.

CALL TRANSACTION 'SE80'

USING H_BDC

MODE 'N'

UPDATE 'S'

MESSAGES INTO MESSTAB.

WHEN : 'TEXT'.

CHECK NOT ITAB CS '###TEXT##'.

CHECK NOT ITAB CS '###FIM##'.

TEXTOS = ITAB.

APPEND TEXTOS.

WHEN : 'H'.

CHECK NOT ITAB CS '###H###'.

CHECK NOT ITAB CS '###FIM##'.

HC = ITAB.

H-PROG = HC-PROG.

H-DNUM = HC-DNUM.

H-TYPE = HC-TYPE.

H-FNUM = HC-FNUM.

H-DGRP = HC-DGRP.

H-BZMX = HC-BZMX.

H-BZBR = HC-BZBR.

H-MILI = HC-MILI.

H-MICO = HC-MICO.

H-MALI = HC-MALI.

H-MACO = HC-MACO.

H-NOLI = HC-NOLI.

H-NOCO = HC-NOCO.

H-VALP = HC-VALP.

H-CUAN = HC-CUAN.

H-HDAT = HC-HDAT.

H-SPRA = HC-SPRA.

H-CUPO = HC-CUPO.

H-DGEN = HC-DGEN.

H-TGEN = HC-TGEN.

APPEND H.

WHEN : 'F'.

CHECK NOT ITAB CS '###F###'.

CHECK NOT ITAB CS '###FIM##'.

SPLIT ITAB AT '|' INTO

FNAM DIDX FLG1 FLG2 FLG3 FILL FMB1 FMB2 COLR

LENG LINE COLN LTYP LANF LBLK LREP FMKY PAID

UCNV TYPE AUTH WNAM DMAC GRP1 GRP2 GRP3 GRP4

ITYP AGLT ADEZ STXT.

F-FNAM = FNAM.

F-DIDX = DIDX.

F-FLG1 = FLG1.

F-FLG2 = FLG2.

F-FLG3 = FLG3.

F-FILL = FILL.

F-FMB1 = FMB1.

F-FMB2 = FMB2.

F-COLR = COLR.

F-LENG = LENG.

F-LINE = LINE.

F-COLN = COLN.

F-LTYP = LTYP.

F-LANF = LANF.

F-LBLK = LBLK.

F-LREP = LREP.

F-FMKY = FMKY.

F-PAID = PAID.

F-UCNV = UCNV.

F-TYPE = TYPE.

F-AUTH = AUTH.

F-WNAM = WNAM.

F-DMAC = DMAC.

F-GRP1 = GRP1.

F-GRP2 = GRP2.

F-GRP3 = GRP3.

F-GRP4 = GRP4.

F-ITYP = ITYP.

F-AGLT = AGLT.

F-ADEZ = ADEZ.

F-STXT = STXT.

APPEND F.

CLEAR F.

WHEN : 'E'.

CHECK NOT ITAB CS '###E###'.

CHECK NOT ITAB CS '###FIM##'.

E = ITAB.

APPEND E.

WHEN : 'M'.

CHECK NOT ITAB CS '###M###'.

CHECK NOT ITAB CS '###FIM##'.

M = ITAB.

APPEND M.

ENDCASE.

IF ITAB CS '*INIC_LAST*'.

FLAG_MARC = 'LAST'.

ENDIF.

IF ITAB CS '*FIM_LAST*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'LAST' AND

NOT ITAB CS '*INIC_LAST*' AND

NOT ITAB CS '*FIM_LAST*'.

LAST = ITAB.

ENDIF.

IF ITAB CS '*INIC_STA*'.

MESSAGE S208(00) WITH 'Importando Gui-Status'.

FLAG_MARC = 'STA'.

ENDIF.

IF ITAB CS '*FIM_STA*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'STA' AND

NOT ITAB CS '*INIC_STA*' AND

NOT ITAB CS '*FIM_STA*'.

STA = ITAB.

APPEND STA.

ENDIF.

IF ITAB CS '*INIC_FUN*'.

FLAG_MARC = 'FUN'.

ENDIF.

IF ITAB CS '*FIM_FUN*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'FUN' AND

NOT ITAB CS '*INIC_FUN*' AND

NOT ITAB CS '*FIM_FUN*'.

FUN = ITAB.

APPEND FUN.

ENDIF.

IF ITAB CS '*INIC_MTX*'.

FLAG_MARC = 'MTX'.

ENDIF.

IF ITAB CS '*FIM_MTX*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'MTX' AND

NOT ITAB CS '*INIC_MTX*' AND

NOT ITAB CS '*FIM_MTX*'.

MTX = ITAB.

APPEND MTX.

ENDIF.

IF ITAB CS '*INIC_DOC*'.

FLAG_MARC = 'DOC'.

ENDIF.

IF ITAB CS '*FIM_DOC*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'DOC' AND

NOT ITAB CS '*INIC_DOC*' AND

NOT ITAB CS '*FIM_DOC*'.

DOC = ITAB.

APPEND DOC.

ENDIF.

IF ITAB CS '*INIC_TIT*'.

FLAG_MARC = 'TIT'.

ENDIF.

IF ITAB CS '*FIM_TIT*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'TIT' AND

NOT ITAB CS '*INIC_TIT*' AND

NOT ITAB CS '*FIM_TIT*'.

TIT = ITAB.

APPEND TIT.

ENDIF.

IF ITAB CS '*INIC_MEN*'.

FLAG_MARC = 'MEN'.

ENDIF.

IF ITAB CS '*FIM_MEN*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'MEN' AND

NOT ITAB CS '*INIC_MEN*' AND

NOT ITAB CS '*FIM_MEN*'.

MEN = ITAB.

APPEND MEN.

ENDIF.

IF ITAB CS '*INIC_ACT*'.

FLAG_MARC = 'ACT'.

ENDIF.

IF ITAB CS '*FIM_ACT*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'ACT' AND

NOT ITAB CS '*INIC_ACT*' AND

NOT ITAB CS '*FIM_ACT*'.

ACT = ITAB.

APPEND ACT.

ENDIF.

IF ITAB CS '*INIC_ADM*'.

FLAG_MARC = 'ADM'.

ENDIF.

IF ITAB CS '*FIM_ADM*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'ADM' AND

NOT ITAB CS '*INIC_ADM*' AND

NOT ITAB CS '*FIM_ADM*'.

ADM = ITAB.

ENDIF.

IF ITAB CS '*INIC_BUT*'.

FLAG_MARC = 'BUT'.

ENDIF.

IF ITAB CS '*FIM_BUT*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'BUT' AND

NOT ITAB CS '*INIC_BUT*' AND

NOT ITAB CS '*FIM_BUT*'.

BUT = ITAB.

APPEND BUT.

ENDIF.

IF ITAB CS '*INIC_PFK*'.

FLAG_MARC = 'PFK'.

ENDIF.

IF ITAB CS '*FIM_PFK*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'PFK' AND

NOT ITAB CS '*INIC_PFK*' AND

NOT ITAB CS '*FIM_PFK*'.

PFK = ITAB.

APPEND PFK.

ENDIF.

IF ITAB CS '*INIC_SET*'.

FLAG_MARC = 'SET'.

ENDIF.

IF ITAB CS '*FIM_SET*'.

CLEAR FLAG_MARC.

ENDIF.

IF FLAG_MARC = 'SET' AND

NOT ITAB CS '*INIC_SET*' AND

NOT ITAB CS '*FIM_SET*'.

SET = ITAB.

APPEND SET.

ENDIF.

ENDLOOP.

TRKEY-DEVCLASS = '$TMP'.

TRKEY-OBJ_TYPE = 'PROG'.

TRKEY-OBJ_NAME = NOME.

TRKEY-SUB_TYPE = 'CUAD'.

TRKEY-SUB_NAME = NOME.

CALL FUNCTION 'RS_CUA_INTERNAL_WRITE'

EXPORTING

PROGRAM = NOME

LANGUAGE = SY-LANGU

TR_KEY = TRKEY

ADM = ADM

TABLES

STA = STA

FUN = FUN

MEN = MEN

MTX = MTX

ACT = ACT

BUT = BUT

PFK = PFK

SET = SET

DOC = DOC

TIT = TIT

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC = 0. ENDIF.

ENDFORM. " IMPORT_ON_LINE

*&----


*

*& Form EXPORT_RELATORIO

*&----


*

FORM EXPORT_RELATORIO.

TRANSLATE NOME USING '*%?_'.

I = STRLEN( PATH ) - 1.

MOVE PATH+I(1) TO SLASH.

IF SLASH <> ''.

CONCATENATE PATH '' INTO PATH.

ENDIF.

REFRESH: PROGRAMAS.

SELECT NAME FROM TRDIR INTO TABLE PROGRAMAS

WHERE NAME LIKE NOME.

LOOP AT PROGRAMAS.

REFRESH: REPORT, TEXTOS, ITAB.

READ TEXTPOOL PROGRAMAS INTO TEXTOS LANGUAGE 'P'.

ITAB[] = TEXTOS[].

READ REPORT PROGRAMAS INTO REPORT.

ITAB = SEPARADOR.

APPEND ITAB.

LOOP AT REPORT INTO ITAB.

APPEND ITAB.

ENDLOOP.

CHECK SY-SUBRC = 0.

PERFORM DOWNLOAD.

ENDLOOP.

PERFORM DOWN_LOAD_CATALOGO.

ENDFORM. " EXPORT_RELATORIO

*&----


*

*& Form IMPORT_RELATORIO

*&----


*

FORM IMPORT_RELATORIO.

REFRESH: REPORT, TEXTOS, ITAB.

CLEAR I.

PERFORM UPLOAD.

LOOP AT ITAB.

IF ITAB = SEPARADOR.

I = 1.

ENDIF.

CASE I.

WHEN 0.

APPEND ITAB TO TEXTOS.

WHEN 1.

APPEND ITAB TO REPORT.

ENDCASE.

ENDLOOP.

DELETE REPORT INDEX 1.

INSERT TEXTPOOL NOME FROM TEXTOS. " CRIA TEXTOS

INSERT REPORT NOME FROM REPORT. " CRIA PROGRAMA

ENDFORM. " IMPORT_RELATORIO

*&----


*

*& Form Z_EXPORTA_SAPSCRIPT

*&----


*

FORM Z_EXPORTA_SAPSCRIPT.

ENDFORM. " Z_EXPORTA_SAPSCRIPT

*&----


*

*& Form Z_IMPORTA_SAPSCRIPT

*&----


*

FORM Z_IMPORTA_SAPSCRIPT.

ENDFORM. " Z_IMPORTA_SAPSCRIPT

*&----


*

*& Form DOWN_LOAD_CATALOGO

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM DOWN_LOAD_CATALOGO.

DATA : BEGIN OF PRG OCCURS 0,

NOME LIKE RS38M-PROGRAMM,

END OF PRG.

PRG[] = PROGRAMAS[].

SELECT NAME TEXT FROM TRDIRT INTO TABLE ITRDIR

FOR ALL ENTRIES IN PRG

WHERE SPRSL EQ SY-LANGU

AND NAME = PRG-NOME.

DATA: NOMBRE LIKE RLGRAP-FILENAME.

CONCATENATE PATH 'catalogo.TXT' INTO NOMBRE.

MENSSAGEM STA[] 50 'Exportando Programa' 'X'.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = NOMBRE

FILETYPE = 'ASC'

TABLES

DATA_TAB = ITRDIR

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

OTHERS = 3.

IF SY-SUBRC = 0. ENDIF.

ENDFORM. " DOWN_LOAD_CATALOGO

*&----


*

*& Form Z_SAPSCRIPT

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM Z_SAPSCRIPT.

REFRESH: TAB_NOME.

IF NOT IMPORT IS INITIAL.

MODE = 'IMPORT'.

IF DATASET CS '%' OR DATASET CS '?'.

MESSAGE E002(TD) WITH OBJ_NAME.

ENDIF.

TAB_NOME = OBJ_NAME.

APPEND TAB_NOME.

ELSE.

TRANSLATE OBJ_NAME USING '*%?_'.

MODE = 'EXPORT'.

SELECT OBJ_NAME FROM *TADIR INTO TABLE TAB_NOME

WHERE OBJECT = OBJECT AND OBJ_NAME LIKE OBJ_NAME.

DATASET_AUX = DATASET.

I = STRLEN( DATASET_AUX ) - 1.

MOVE DATASET_AUX+I(1) TO SLASH.

IF SLASH <> ''.

CONCATENATE DATASET_AUX '' INTO DATASET_AUX.

ENDIF.

ENDIF.

LOOP AT TAB_NOME.

OBJ_NAME = TAB_NOME.

CONDENSE OBJ_NAME NO-GAPS.

  • check OBJECT

CASE OBJECT.

WHEN 'PRIN'. SUFFIX = '.PRI'.

WHEN 'TEXT'. SUFFIX = '.TXT'.

WHEN 'STYL'. SUFFIX = '.STY'.

WHEN 'FORM'. SUFFIX = '.FOR'.

WHEN OTHERS.

WRITE: /

'Fehler, als Objekt ist nur TEXT,STYL,FORM,PRIN möglich'.

EXIT.

ENDCASE.

IF IMPORT IS INITIAL.

CONCATENATE DATASET_AUX TAB_NOME SUFFIX INTO DATASET.

ENDIF.

  • check MODE

CASE MODE.

WHEN 'EXPORT'.

CORRECTION_CHECK = SPACE. "no check when exporting

WHEN 'IMPORT'.

IF SY-BATCH <> 'X'.

CORRECTION_CHECK = 'X'. "do check when importing

ELSE.

CORRECTION_CHECK = SPACE. "no check in batch

ENDIF.

WHEN 'IMPOR!'.

CORRECTION_CHECK = SPACE.

MODE = 'IMPORT'.

WHEN OTHERS.

WRITE: /

'Fehler, als Modus ist nur EXPORT oder IMPORT möglich'.

EXIT.

ENDCASE.

  • move DATASET into FILE

  • if filename is still ********..., replace ******** with obj_name

IF DATASET CS '********'.

REPLACE '********' WITH OBJ_NAME(8) INTO DATASET.

CONDENSE DATASET NO-GAPS.

ENDIF.

  • if filename is still ....&&&&, replace &&&& with SUFFIX

IF DATASET CS '&&&&'.

REPLACE '&&&&' WITH SUFFIX INTO DATASET.

CONDENSE DATASET NO-GAPS.

ENDIF.

FILE = DATASET.

CONDENSE FILE NO-GAPS.

  • special treatment for object TEXT, the proper format for a TEXT object

  • (standard text in this case) is TEXT,<name>,ST,<language>

IF OBJECT = 'TEXT'.

REPLACE '&' WITH SY-LANGU INTO TEXTNAME.

REPLACE '*' WITH OBJ_NAME INTO TEXTNAME.

CONDENSE TEXTNAME NO-GAPS.

  • no correction check for TEXT

PERFORM RSTXSCRP(ZBACKUP3) USING OBJECT TEXTNAME MODE FILE LISTFILE

PLANGVEC BINFILE.

  • perform rstxscrp(rstxr3tr) using object textname mode file listfile

  • plangvec binfile.

ELSE.

  • correction check

IF CORRECTION_CHECK <> SPACE.

PERFORM CORRECTION_ASK_UPDATE USING OBJECT OBJ_NAME.

CHECK SY-SUBRC = 0.

ENDIF.

PERFORM RSTXSCRP USING OBJECT OBJ_NAME MODE FILE LISTFILE

PLANGVEC BINFILE.

ENDIF.

  • ask correction system to change printer/form/style

  • SY-SUBRC: 0 o.k.

  • 1 not o.k.

ENDLOOP.

ENDFORM. " Z_SAPSCRIPT

*&----


*

*& Form CORRECTION_ASK_UPDATE

*&----


*

  • text

*----


*

  • -->P_OBJECT text *

  • -->P_OBJ_NAME text *

*----


*

FORM CORRECTION_ASK_UPDATE USING VALUE(OBJECT) VALUE(NAME).

TABLES: E071, TADIR, DDERR.

DATA: OBJNAME(16).

OBJNAME = NAME.

CLEAR TADIR.

CASE OBJECT.

WHEN 'TEXT'.

SY-SUBRC = 0. EXIT.

WHEN 'FORM'.

  • SELECT SINGLE * FROM TADIR WHERE PGMID = 'R3TR'

  • AND OBJECT = OBJECT

  • AND OBJ_NAME = OBJNAME.

  • IF SY-SUBRC = 0. "object exists already, check devclass

  • IF TADIR-DEVCLASS(1) NA 'YZ'.

  • IF SY-MANDT <> '000'.

  • SY-SUBRC = 0. EXIT. "its a SAP object, no check in client>0

  • ENDIF.

  • ENDIF.

  • ENDIF.

WHEN 'STYL'.

  • SELECT SINGLE * FROM TADIR WHERE PGMID = 'R3TR'

  • AND OBJECT = OBJECT

  • AND OBJ_NAME = OBJNAME.

  • IF SY-SUBRC = 0. "object exists already, check devclass

  • IF TADIR-DEVCLASS(1) NA 'YZ'.

  • IF SY-MANDT <> '000'.

  • SY-SUBRC = 0. EXIT. "its a SAP object, no check in client>0

  • ENDIF.

  • ENDIF.

  • ENDIF.

WHEN 'PRIN'.

WHEN OTHERS.

SY-SUBRC = 1. EXIT.

ENDCASE.

  • ask correction system

E071-PGMID = 'R3TR'.

E071-OBJECT = OBJECT.

E071-OBJ_NAME = OBJNAME.

PERFORM FCOMMEDITCHECK(RDDINSYS) USING E071 TADIR DDERR.

CASE DDERR-SEVERITY.

WHEN 'N'.

SY-SUBRC = 0.

WHEN OTHERS.

  • display message

WRITE: / 'Das Objekt darf nicht überschrieben werden'.

SY-SUBRC = 1.

ENDCASE.

ENDFORM. " CORRECTION_ASK_UPDATE

*&----


*

*& Form RSTXSCRP

*&----


*

  • text

*----


*

  • -->P_OBJECT text *

  • -->P_OBJ_NAME text *

  • -->P_MODE text *

  • -->P_FILE text *

  • -->P_LISTFILE text *

  • -->P_PLANGVEC text *

  • -->P_BINFILE text *

*----


*

FORM RSTXSCRP USING OBJECT OBJ_NAME MODE FILE LIST_FILE LANG_VEC

BINFILE_FLAG.

DATA RC LIKE SY-SUBRC.

  • set list file mode...

IF LIST_FILE = 'X'.

LIST_FILE_CONTENTS = 'X'.

ELSE.

LIST_FILE_CONTENTS = SPACE.

ENDIF.

  • set file format

CLIPBOARD = TRUE.

IF BINFILE_FLAG = 'X'.

PERFORM SET_BINARY_FILE_FORMAT USING TRUE.

PERFORM FC_INIT. "init compress tables

ELSE.

PERFORM SET_BINARY_FILE_FORMAT USING FALSE.

ENDIF.

  • set custom langvec...

PERFORM SET_CUSTOM_LANGUAGE_VECTOR USING LANG_VEC.

SUBRC = 0.

END_OF_OBJDATA = FALSE.

END_OF_CLIPBOARD = FALSE.

FILENAME = FILE.

WRITE: / TEXT-019. "Start of SAPscript transporter RSTXR3TR

CASE MODE.

WHEN 'EXPORT'.

                                                    • E X P O R T ***************

PERFORM GET_BINARY_FILE_FORMAT_FLAG.

IF SY-SUBRC = 0.

                                      • BINARY FORMAT export *********

  • OPEN DATASET FILENAME FOR OUTPUT IN BINARY MODE.

SY-SUBRC = 0.

IF SY-SUBRC NE 0.

WRITE: / TEXT-017, FILENAME. "error opening dataset for writing

EXIT.

ENDIF.

  • write binary header

PERFORM EXPORT_CLIPBOARD_BIN_HEADER.

ELSE.

                                  • old TEXT FORMAT export *********

  • OPEN DATASET FILENAME FOR OUTPUT IN TEXT MODE.

SY-SUBRC = 0.

IF SY-SUBRC NE 0.

WRITE: / TEXT-017, FILENAME. "error opening dataset for writing

EXIT.

ENDIF.

ENDIF.

  • write header entry S...with object key

PERFORM EXPORT_SAPSCRIPT USING OBJECT OBJ_NAME.

  • export object

PERFORM EXPORT USING OBJECT OBJ_NAME.

  • close file

PERFORM GET_BINARY_FILE_FORMAT_FLAG.

IF SY-SUBRC = 0.

PERFORM FC_FLUSH_BUFFER USING FILENAME.

ENDIF.

  • CLOSE DATASET FILENAME.

NOME = FILENAME.

DATA: NOME_100 LIKE RLGRAP-FILENAME.

NOME_100 = NOME.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = NOME_100

FILETYPE = 'ASC'

TABLES

DATA_TAB = TAB_PC

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

INVALID_FILESIZE = 3

INVALID_TABLE_WIDTH = 4

INVALID_TYPE = 5

NO_BATCH = 6

UNKNOWN_ERROR = 7

OTHERS = 8.

                                                    • I M P O R T ***************

WHEN 'IMPORT'.

END_OF_CLIPBOARD = FALSE.

PERFORM GET_BINARY_FILE_FORMAT_FLAG.

IF SY-SUBRC = 0.

                                      • BINARY FORMAT import *********

  • OPEN DATASET FILENAME FOR INPUT IN BINARY MODE.

PERFORM UPLOAD_SAPSCRIPT USING FILENAME.

IF SY-SUBRC NE 0.

WRITE: / TEXT-018, FILENAME. "error opening dataset for reading

EXIT.

ENDIF.

  • read binary header, get file codepage

PERFORM IMPORT_CLIPBOARD_BIN_HEADER USING BINFILE_CODEPAGE.

CASE SY-SUBRC.

WHEN 0.

WRITE: / TEXT-060, BINFILE_CODEPAGE. "contains data in cp..

WHEN 1.

WRITE: / TEXT-061. "no valid binary format

EXIT.

WHEN 2.

WRITE: / TEXT-062, BINFILE_CODEPAGE. "unknown codepage

EXIT.

ENDCASE.

ELSE.

                                  • old TEXT FORMAT import *********

  • OPEN DATASET FILENAME FOR INPUT IN TEXT MODE.

PERFORM UPLOAD_SAPSCRIPT USING FILENAME.

IF SY-SUBRC NE 0.

WRITE: / TEXT-018, FILENAME. "error opening dataset for reading

EXIT.

ENDIF.

ENDIF.

  • read header entry S...with object key

PERFORM IMPORT_SAPSCRIPT USING OBJECT OBJ_NAME RC. "QVN

IF RC <> 0. "QVN

  • CLOSE DATASET FILENAME. "QVN

EXIT. "QVN

ENDIF. "QVN

  • loop over import objects

WHILE END_OF_CLIPBOARD = FALSE.

PERFORM IMPORT USING SY-SUBRC.

ENDWHILE.

  • close file

  • CLOSE DATASET FILENAME.

  • inform spooler

IF OBJECT = 'PRIN'.

PERFORM RESET_RSPOGET2_BY_TYPE(SAPMSPAD) USING OBJ_NAME.

WRITE: / 'Der Spooler wurde über die Änderung informiert'.

ENDIF.

ENDCASE.

ENDFORM.

*&----


*

*& Form UPLOAD_SAPSCRIPT

*&----


*

  • text

*----


*

  • -->P_FILENAME text *

*----


*

FORM UPLOAD_SAPSCRIPT USING FILE2 TYPE C.

DATA : FILE LIKE RLGRAP-FILENAME.

FILE = FILE2.

REFRESH TAB_PC.

CLEAR TAB_PC.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = FILE

FILETYPE = 'ASC'" ARQTYPE

TABLES

DATA_TAB = TAB_PC

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

OTHERS = 8.

CLEAR : INDICE.

ENDFORM. " UPLOAD_SAPSCRIPT

*&----


*

*& Form IMPORT_CLIPBOARD_BIN_HEADER

*&----


*

  • text

*----


*

  • -->P_BINFILE_CODEPAGE text *

*----


*

FORM IMPORT_CLIPBOARD_BIN_HEADER USING CODEPAGE.

STATICS: CP LIKE TCP02-CPCODEPAGE,

HEXCHAR(2) TYPE C,

EOF(1) TYPE C.

PERFORM FC_READ_RECORD USING FILENAME RECORD EOF.

IF EOF = TRUE.

SUBRC = 4.

ENDIF.

IF SUBRC NE 0.

END_OF_CLIPBOARD = TRUE. SY-SUBRC = 3. EXIT.

ENDIF.

  • check binary header

PERFORM CONV_BIN_2_HEX USING RECORD-TYP HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE1.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING RECORD-COMMAND(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE2.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING RECORD-COMMAND+1(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE3.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING RECORD-COMMAND+2(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE4.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING RECORD-COMMAND+3(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE5.

SY-SUBRC = 1. EXIT.

ENDIF.

  • get codepage

PERFORM CONVERT_BYTE_TO_DIGIT USING RECORD-DATA(1) CP(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING RECORD-DATA1(1) CP1(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING RECORD-DATA2(1) CP2(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING RECORD-DATA3(1) CP3(1).

SELECT SINGLE * FROM TCP00 WHERE CPCODEPAGE = CP.

IF SY-SUBRC = 0.

CODEPAGE = CP.

ELSE.

SY-SUBRC = 2. EXIT.

ENDIF.

ENDFORM. " IMPORT_CLIPBOARD_BIN_HEADER

*&----


*

*& Form CONVERT_BYTE_TO_DIGIT

*&----


*

  • text

*----


*

  • -->P_RECORD_DATA(1) text *

  • -->P_CP(1) text *

*----


*

FORM CONVERT_BYTE_TO_DIGIT USING VALUE(BYTE) DIGIT.

STATICS: HEX_CHAR(2) TYPE C.

PERFORM CONV_BIN_2_HEX USING BYTE HEX_CHAR.

CASE HEX_CHAR.

WHEN '31'. DIGIT = '1'.

WHEN '32'. DIGIT = '2'.

WHEN '33'. DIGIT = '3'.

WHEN '34'. DIGIT = '4'.

WHEN '35'. DIGIT = '5'.

WHEN '36'. DIGIT = '6'.

WHEN '37'. DIGIT = '7'.

WHEN '38'. DIGIT = '8'.

WHEN '39'. DIGIT = '9'.

WHEN OTHERS. DIGIT = '0'.

ENDCASE.

ENDFORM. " CONVERT_BYTE_TO_DIGIT

*&----


*

*& Form CONV_BIN_2_HEX

*&----


*

  • text

*----


*

  • -->P_RECORD_TYP text *

  • -->P_HEXCHAR text *

*----


*

FORM CONV_BIN_2_HEX USING VALUE(BYTECHAR) CHARFIELD.

DATA C2(2) TYPE C.

DATA: BEGIN OF HEXBYTE,

X TYPE X,

END OF HEXBYTE.

DATA: BEGIN OF CHARBYTE,

C TYPE C,

END OF CHARBYTE.

CHARBYTE-C = BYTECHAR.

HEXBYTE = CHARBYTE.

CHARFIELD = HEXBYTE-X.

ENDFORM. " CONV_BIN_2_HEX

*&----


*

*& Form EXPORT

*&----


*

  • text

*----


*

  • -->P_OBJECT text *

  • -->P_OBJ_NAME text *

*----


*

FORM EXPORT USING EXPORT_OBJECT EXPORT_NAME.

EXPORT_FLAG = TRUE.

SUBRC = 0.

COUNT_ERROR = 0.

COUNT_WARNING = 0.

NOTHING = FALSE.

END_OF_OBJDATA = FALSE.

OBJECT = EXPORT_OBJECT.

NAME = EXPORT_NAME.

  • object ... ... is presently at work

PERFORM NEWPROT USING NLP_INF NLP_LV2 NLP_MID '093'

OBJECT NAME SPACE SPACE.

  • check for generic object key

IF NAME CS '*' AND OBJECT NE 'TEXT'.

  • generic key with * only possible with object TEXT

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '056'

SPACE SPACE SPACE SPACE.

EXIT.

ENDIF.

  • check object

CASE OBJECT.

WHEN 'FORM'.

PERFORM EXPORT_FORMSTYL USING OBJECT_FORM FALSE. "complete object

WHEN 'FORT'.

PERFORM EXPORT_FORMSTYL USING OBJECT_FORM TRUE. "languages only

WHEN 'PRIN'.

PERFORM EXPORT_PRINTER.

WHEN 'STYL'.

PERFORM EXPORT_FORMSTYL USING OBJECT_STYLE FALSE. "complete object

WHEN 'STYT'.

PERFORM EXPORT_FORMSTYL USING OBJECT_STYLE TRUE. "languages only

WHEN 'TEXT'.

PERFORM EXPORT_TEXTS.

WHEN OTHERS.

  • the transport object .. is unknown

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '057'

OBJECT SPACE SPACE SPACE.

EXIT.

ENDCASE.

IF NOTHING = FALSE.

IF COUNT_ERROR = 0.

  • export was o.k.

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '052'

SPACE SPACE SPACE SPACE.

ELSE.

  • export encountered x fatal errors

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '058'

COUNT_ERROR SPACE SPACE SPACE.

ENDIF.

IF COUNT_WARNING NE 0.

  • export encountered x warnings

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '059'

COUNT_WARNING SPACE SPACE SPACE.

ENDIF.

ENDIF.

ENDFORM. " EXPORT

*&----


*

*& Form EXPORT_CLIPBOARD_BIN_HEADER

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM EXPORT_CLIPBOARD_BIN_HEADER.

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE1

RECORD-TYP.

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE2

RECORD-COMMAND(1).

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE3

RECORD-COMMAND+1(1).

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE4

RECORD-COMMAND+2(1).

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE5

RECORD-COMMAND+3(1).

  • now write system codepage

PERFORM CONVERT_DIGIT_TO_BYTE USING SYSTEM_CODEPAGE(1)

RECORD-DATA(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING SYSTEM_CODEPAGE+1(1)

RECORD-DATA+1(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING SYSTEM_CODEPAGE+2(1)

RECORD-DATA+2(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING SYSTEM_CODEPAGE+3(1)

RECORD-DATA+3(1).

RECORD-DATA+4 = SPACE.

PERFORM EXPORT_CLIPBOARD USING FALSE."not end_of_obj

ENDFORM. " EXPORT_CLIPBOARD_BIN_HEADER

*&----


*

*& Form CONVERT_DIGIT_TO_BYTE

*&----


*

  • text

*----


*

  • -->P_SYSTEM_CODEPAGE(1) text *

  • -->P_RECORD_DATA(1) text *

*----


*

FORM CONVERT_DIGIT_TO_BYTE USING VALUE(DIGIT) BYTE.

STATICS: HEX_CHAR(2) TYPE C.

CASE DIGIT.

WHEN '1'. HEX_CHAR = '31'.

WHEN '2'. HEX_CHAR = '32'.

WHEN '3'. HEX_CHAR = '33'.

WHEN '4'. HEX_CHAR = '34'.

WHEN '5'. HEX_CHAR = '35'.

WHEN '6'. HEX_CHAR = '36'.

WHEN '7'. HEX_CHAR = '37'.

WHEN '8'. HEX_CHAR = '38'.

WHEN '9'. HEX_CHAR = '39'.

WHEN OTHERS. HEX_CHAR = '30'.

ENDCASE.

PERFORM CONV_HEX_2_BIN USING HEX_CHAR BYTE.

ENDFORM. " CONVERT_DIGIT_TO_BYTE

*&----


*

*& Form CONV_HEX_2_BIN

*&----


*

  • text

*----


*

  • -->P_BINARY_FILE_HEADER_BYTE1 text *

  • -->P_RECORD_TYP text *

*----


*

FORM CONV_HEX_2_BIN USING VALUE(CHARFIELD) BYTECHAR.

DATA: BEGIN OF HEXBYTE,

X TYPE X,

END OF HEXBYTE.

DATA: BEGIN OF CHARBYTE,

C TYPE C,

END OF CHARBYTE.

HEXBYTE-X = CHARFIELD.

CHARBYTE = HEXBYTE.

BYTECHAR = CHARBYTE-C.

ENDFORM. " CONV_HEX_2_BIN

*&----


*

*& Form EXPORT_CLIPBOARD

*&----


*

  • text

*----


*

  • -->P_FALSE text *

*----


*

FORM EXPORT_CLIPBOARD USING VALUE(END_OF_OBJ).

PERFORM GET_BINARY_FILE_FORMAT_FLAG.

IF SY-SUBRC = 0.

  • binary mode + compress

PERFORM FC_WRITE_RECORD USING FILENAME RECORD END_OF_OBJ.

ELSE.

  • text mode

  • TRANSFER RECORD TO FILENAME.

  • CONCATENATE RECORD-TYP RECORD-COMMAND RECORD-DATA INTO TAB_PC-LINHA.

TAB_PC-LINHA = RECORD.

APPEND TAB_PC.

CLEAR TAB_PC.

ENDIF.

IF LIST_FILE_CONTENTS = 'X'.

WRITE: / RECORD.

ENDIF.

ENDFORM. " EXPORT_CLIPBOARD

*&----


*

*& Form EXPORT_FORMSTYL

*&----


*

  • text

*----


*

  • -->P_OBJECT_FORM text *

  • -->P_FALSE text *

*----


*

FORM EXPORT_FORMSTYL USING VALUE(OBJECT_TYPE) VALUE(LANGUAGE_ONLY).

DATA: OLANG LIKE THEAD-TDOSPRAS,

RC LIKE SY-SUBRC,

TRANSTAT LIKE THEAD-TDTRANSTAT,

TDNAME LIKE THEAD-TDNAME,

TDOBJECT LIKE THEAD-TDOBJECT.

CASE OBJECT_TYPE.

WHEN OBJECT_FORM.

TDOBJECT = OBJECT_FORM. TDNAME = NAME(16).

WHEN OBJECT_STYLE.

TDOBJECT = OBJECT_STYLE. TDNAME = NAME(8).

WHEN OTHERS.

NOTHING = TRUE. EXIT.

ENDCASE.

PERFORM GET_LANGUAGE_VECTOR USING LANGUAGE_VECTOR.

IF SY-SUBRC <> 0. "exit if language vector cannot be read

NOTHING = TRUE. EXIT.

ENDIF.

  • always get DEF part, we need TDTRANSTAT for FORT,STYT

CLEAR HEADER_DEF.

SELECT * FROM STXH WHERE TDOBJECT = TDOBJECT

AND TDNAME = TDNAME

AND TDID = ID_DEF.

MOVE-CORRESPONDING STXH TO HEADER_DEF.

ENDSELECT.

IF SY-DBCNT = 1. "only one DEF part allowed

MOVE-CORRESPONDING STXH TO HEADER_DEF.

OLANG = HEADER_DEF-TDSPRAS. "get original language

TRANSTAT = HEADER_DEF-TDTRANSTAT. "get translation-allowed flag

ELSE. "inconsistent: no or several DEF parts

  • the object does not exist or is damaged and was not exported

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '074'

SPACE SPACE SPACE SPACE.

PERFORM EXPORT_NOTHING. EXIT.

ENDIF.

  • get TXT part(s)

REFRESH HEADER_TAB.

SELECT * FROM STXH WHERE TDOBJECT = TDOBJECT

AND TDNAME = TDNAME

AND TDID = ID_TXT.

MOVE-CORRESPONDING STXH TO HEADER_TAB. APPEND HEADER_TAB.

ENDSELECT.

  • check for consistency of FORM/STYL and use LANGUAGE_VECTOR

PERFORM CHECK_FORMSTYL_FOR_EXPORT USING LANGUAGE_ONLY

OLANG

LANGUAGE_VECTOR

TRANSTAT

RC.

CASE RC.

WHEN 0. " o.k.

WHEN 4. " LANGVEC prohibits export/import

PERFORM EXPORT_NOTHING. EXIT.

WHEN 8. " inconsistent object

  • the object does not exist or is damaged and was not exported

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '074'

SPACE SPACE SPACE SPACE.

PERFORM EXPORT_NOTHING. EXIT.

ENDCASE.

PERFORM EXPORT_HEADER.

IF LANGUAGE_ONLY = FALSE. "if complete layout set is exported ...

  • set olanguage in target system

PERFORM EXPORT_DATA USING FUNC_OLANGUAGE OLANG.

  • delete form in target system if no translations wanted

IF TRANSTAT = TRANSLATION_NOT_WANTED.

IF OBJECT_TYPE = OBJECT_FORM.

PERFORM EXPORT_DATA USING FUNC_DEL_FORM TDNAME.

ELSE.

PERFORM EXPORT_DATA USING FUNC_DEL_STYL TDNAME.

ENDIF.

ENDIF.

  • export DEF part

PERFORM EXPORT_TXT USING HEADER_DEF-TDOBJECT

HEADER_DEF-TDID

HEADER_DEF-TDNAME

HEADER_DEF-TDSPRAS

LANGUAGE_ONLY

RC.

IF RC = 0. "export o.k.

  • definition ... was exported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '062'

HEADER_DEF-TDSPRAS SPACE SPACE SPACE.

ELSE. "error during export

  • object ... was not exported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '094'

HEADER_DEF-TDOBJECT HEADER_DEF-TDNAME

HEADER_DEF-TDID HEADER_DEF-TDSPRAS.

EXIT.

ENDIF.

ENDIF.

  • export TXT parts

LOOP AT HEADER_TAB.

PERFORM EXPORT_TXT USING HEADER_TAB-TDOBJECT

HEADER_TAB-TDID

HEADER_TAB-TDNAME

HEADER_TAB-TDSPRAS

LANGUAGE_ONLY

RC.

IF RC = 0. "export o.k.

  • export was o.k.

IF LANGUAGE_ONLY = FALSE AND HEADER_TAB-TDSPRAS = OLANG.

  • original language ... was exported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '061'

HEADER_TAB-TDSPRAS SPACE SPACE SPACE.

ELSE.

  • language ... was exported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '063'

HEADER_TAB-TDSPRAS SPACE SPACE SPACE.

ENDIF.

ELSE. "error during export

  • object ... was not exported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '094'

HEADER_TAB-TDOBJECT HEADER_TAB-TDNAME

HEADER_TAB-TDID HEADER_TAB-TDSPRAS.

ENDIF.

ENDLOOP.

IF LANGUAGE_ONLY = FALSE.

  • activate object in target system if complete transport

PERFORM EXPORT_FUNCTION USING FUNC_ACTIVATE.

ENDIF.

PERFORM EXPORT_END.

ENDFORM. " EXPORT_FORMSTYL

*&----


*

*& Form CHECK_FORMSTYL_FOR_EXPORT

*&----


*

  • text

*----


*

  • -->P_LANGUAGE_ONLY text *

  • -->P_OLANG text *

  • -->P_LANGUAGE_VECTOR text *

  • -->P_TRANSTAT text *

  • -->P_RC text *

*----


*

FORM CHECK_FORMSTYL_FOR_EXPORT USING VALUE(LANGUAGE_ONLY)

VALUE(OLANG)

VALUE(LANGVEC)

VALUE(TRANSTAT)

RC.

DATA: NUMOTXT LIKE SY-INDEX, "number of TXT parts in olang

NUMTXT LIKE SY-INDEX. "number of TXT parts allowed by LANGVEC

RC = 0.

NUMTXT = 0.

IF LANGUAGE_ONLY = TRUE.

  • FORT/STYT export, only TXT parts must be exported

IF TRANSTAT = TRANSLATION_NOT_WANTED.

  • no language export since object is not language dependent

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '049'

HEADER_TAB-TDSPRAS SPACE SPACE SPACE.

RC = 4. EXIT.

ENDIF.

LOOP AT HEADER_TAB.

IF LANGVEC CA HEADER_TAB-TDSPRAS."spras in LANGVEC

ADD 1 TO NUMTXT.

ELSE. "spras not in LANGVEC

  • language vector prohibits translation export/import

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '083'

HEADER_TAB-TDSPRAS SPACE SPACE SPACE.

DELETE HEADER_TAB.

ENDIF.

ENDLOOP.

ELSE.

  • FORM/STYL export, complete DEF and TXT export

IF TRANSTAT = TRANSLATION_NOT_WANTED. "no translations wanted

  • language vector is ignored since object not for translation

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '054'

SPACE SPACE SPACE SPACE.

ELSE. "translations wanted

IF LANGVEC NA OLANG. "DEF part not in LANGVEC

  • language vector prohibits OLANG export/import

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '082'

OLANG SPACE SPACE SPACE.

RC = 4. EXIT.

ENDIF.

ENDIF.

NUMOTXT = 0.

LOOP AT HEADER_TAB.

IF HEADER_TAB-TDSPRAS = OLANG.

ADD 1 TO NUMOTXT.

ENDIF.

IF TRANSTAT = TRANSLATION_NOT_WANTED. "no translations wanted

IF HEADER_TAB-TDSPRAS = OLANG. "TXT in OSPRAS

ADD 1 TO NUMTXT.

ELSE. "TXT other than OSPRAS

DELETE HEADER_TAB.

ENDIF.

ELSE. "translations wanted

IF LANGVEC CA HEADER_TAB-TDSPRAS. "spras in LANGVEC

ADD 1 TO NUMTXT.

ELSE. "spras not in LANGVEC

  • language vector prohibits export

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '083'

HEADER_TAB-TDSPRAS SPACE SPACE SPACE.

DELETE HEADER_TAB.

ENDIF.

ENDIF.

ENDLOOP.

IF NUMOTXT <> 1.

RC = 8. EXIT. "0 or several TXT parts in olang

ENDIF.

ENDIF.

IF NUMTXT = 0. "no TXT parts to export

RC = 4. EXIT.

ENDIF.

ENDFORM. " CHECK_FORMSTYL_FOR_EXPORT

*&----


*

*& Form EXPORT_DATA

*&----


*

  • text

*----


*

  • -->P_FUNC_OLANGUAGE text *

  • -->P_OLANG text *

*----


*

FORM EXPORT_DATA USING COMMAND DATA.

CLEAR RECORD.

RECORD-COMMAND = COMMAND.

RECORD-DATA = DATA.

IF CLIPBOARD = TRUE.

PERFORM EXPORT_CLIPBOARD USING FALSE. "not end_of_obj

ELSE.

PERFORM EXPDATA(RDDDIC00) USING RECORD.

ENDIF.

ENDFORM. " EXPORT_DATA

*&----


*

*& Form EXPORT_END

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM EXPORT_END.

CLEAR RECORD.

RECORD-TYP = 'E'.

IF CLIPBOARD = TRUE.

PERFORM EXPORT_CLIPBOARD USING TRUE. "end_of_obj

ELSE.

PERFORM EXPDATA(RDDDIC00) USING RECORD.

ENDIF.

ENDFORM. " EXPORT_END

*&----


*

*& Form EXPORT_FUNCTION

*&----


*

  • text

*----


*

  • -->P_FUNC_ACTIVATE text *

*----


*

FORM EXPORT_FUNCTION USING FUNCTION.

RECORD-TYP = SPACE.

RECORD-COMMAND = FUNCTION.

RECORD-DATA = STATUS_SAP. "QVN always use SAP, never CUS

IF CLIPBOARD = TRUE.

PERFORM EXPORT_CLIPBOARD USING FALSE. "not end_of_obj

ELSE.

PERFORM EXPDATA(RDDDIC00) USING RECORD.

ENDIF.

ENDFORM. " EXPORT_FUNCTION

*&----


*

*& Form EXPORT_HEADER

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM EXPORT_HEADER.

RECORD-TYP = 'H'.

RECORD-COMMAND = OBJECT.

RECORD-DATA = NAME.

IF CLIPBOARD = TRUE.

PERFORM EXPORT_CLIPBOARD USING FALSE. "not end_of_obj

ELSE.

PERFORM EXPDATA(RDDDIC00) USING RECORD.

ENDIF.

ENDFORM. " EXPORT_HEADER

*&----


*

*& Form EXPORT_NOTHING

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM EXPORT_NOTHING.

NOTHING = TRUE.

  • don't send a message it's done by caller of EXPORT_NOTHING

PERFORM EXPORT_HEADER.

PERFORM EXPORT_FUNCTION USING FUNC_NOTHING.

PERFORM EXPORT_END.

ENDFORM. " EXPORT_NOTHING

*&----


*

*& Form EXPORT_PRINTER

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM EXPORT_PRINTER.

  • TSP0A Printer

SELECT SINGLE * FROM TSP0A WHERE PATYPE = NAME(8).

IF SY-SUBRC NE 0.

  • the object does not exist or is damaged and was not exported

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '074'

SPACE SPACE SPACE SPACE.

PERFORM EXPORT_NOTHING. EXIT.

ENDIF.

  • Driver

SELECT SINGLE * FROM TSP09 WHERE DRIVER = TSP0A-DRIVER.

IF SY-SUBRC NE 0.

  • SAPscript driver ... is missing in table TSP09

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '064'

TSP0A-DRIVER SPACE SPACE SPACE.

EXIT.

ENDIF.

PERFORM EXPORT_HEADER.

PERFORM EXPORT_DATA USING 'SP09' TSP09.

PERFORM EXPORT_DATA USING 'SP0A' TSP0A.

  • TFO03 Printer-Fonts

SELECT * FROM TFO03 WHERE TDPRINTER = NAME(8).

TFO03_LINE-CPI = TFO03-TDCPI.

TFO03_LINE-ALL = TFO03.

TFO03_LINE-ALL+21(3) = SPACE. " TFO03-TDCPI NE ASCII

PERFORM EXPORT_DATA USING 'FO03' TFO03_LINE.

ENDSELECT.

  • TFO01 Font-Families

  • do not transport TFO01 any more B20K022408

  • TFO06 Printer-Barcodes

SELECT * FROM TFO06 WHERE TDPRINTER = NAME(8).

PERFORM EXPORT_DATA USING 'FO06' TFO06.

ENDSELECT.

  • TFO05 system barcodes

  • do not transport TFO05 any more B20K022408

  • T022D Print-Controls

SELECT * FROM T022D WHERE TYP = NAME(8).

PERFORM EXPORT_DATA USING '022D' T022D.

ENDSELECT.

  • spooler formats

CLEAR PAPER.

SELECT * FROM TSP06 WHERE PDPTYPE = NAME(8).

IF PAPER-PDPAPER NE TSP06-PDPAPER.

PAPER-PDPTYPE = TSP06-PDPTYPE.

PAPER-PDPAPER = TSP06-PDPAPER.

PERFORM EXPORT_DATA USING FUNC_DEL_PAPER PAPER.

SELECT SINGLE * FROM TSP1D WHERE PAPART = PAPER-PDPAPER.

IF SY-SUBRC = 0.

PERFORM EXPORT_DATA USING 'SP1D' TSP1D.

  • do not export texts any longer B20K022408

  • SELECT * FROM TSP1T WHERE PAPART = PAPER-PDPAPER.

  • PERFORM EXPORT_DATA USING 'SP1T' TSP1T.

  • ENDSELECT.

ELSE.

CLEAR PAPER.

ENDIF.

ENDIF.

CHECK PAPER NE SPACE.

TSP06_LINE-PDLFDNR = TSP06-PDLFDNR.

TSP06_LINE-PDDATALEN = TSP06-PDDATALEN.

TSP06_LINE-ALL = TSP06.

TSP06_LINE-ALL+32(2) = SPACE. " PDLFDNR,PDDATALEN ne ASCII

PERFORM EXPORT_DATA USING 'SP06' TSP06_LINE.

ENDSELECT.

  • TFO04 Printer-Metrics

SELECT * FROM TFO04 WHERE TDPRINTER = NAME(8).

PERFORM EXPORT_DATA USING 'FO04' TFO04.

ENDSELECT.

PERFORM EXPORT_END.

ENDFORM. " EXPORT_PRINTER

*&----


*

*& Form EXPORT_SAPSCRIPT

*&----


*

  • text

*----


*

  • -->P_OBJECT text *

  • -->P_OBJ_NAME text *

*----


*

FORM EXPORT_SAPSCRIPT USING OBJECT OBJ_NAME.

RECORD-TYP = 'S'.

RECORD-COMMAND = OBJECT.

RECORD-DATA = OBJ_NAME.

PERFORM EXPORT_CLIPBOARD USING FALSE. "not end_of_obj

ENDFORM. " EXPORT_SAPSCRIPT

*&----


*

*& Form EXPORT_TEXTS

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM EXPORT_TEXTS.

DATA: FILL LIKE SY-TFILL,

RC LIKE SY-SUBRC.

PERFORM GET_LANGUAGE_VECTOR USING LANGUAGE_VECTOR.

IF SY-SUBRC <> 0. "exit if language vector cannot be read

NOTHING = TRUE. EXIT.

ENDIF.

PERFORM NAME_TO_TEXTKEY. "get text key components into TEXTLOW-...

REFRESH HEADER_TAB.

CALL FUNCTION 'SELECT_TEXT'

EXPORTING

  • CLIENT = SY-MANDT

DATABASE_ONLY = 'X'

ID = TEXTLOW-TDID

LANGUAGE = TEXTLOW-TDSPRAS

NAME = TEXTLOW-TDNAME

OBJECT = TEXTLOW-TDOBJECT

  • TEXTMEMORY_ONLY = ' '

  • ARCHIVE_HANDLE = 0

IMPORTING

ENTRIES = FILL

TABLES

SELECTIONS = HEADER_TAB

EXCEPTIONS

WRONG_ACCESS_TO_ARCHIVE = 1

OTHERS = 2.

  • eliminate some entries...

LOOP AT HEADER_TAB.

IF HEADER_TAB-TDOBJECT = OBJECT_FORM OR

HEADER_TAB-TDOBJECT = OBJECT_STYLE.

DELETE HEADER_TAB.

ELSE.

IF LANGUAGE_VECTOR NA HEADER_TAB-TDSPRAS.

  • language vector prohibits OLANG export/import

PERFORM NEWPROT USING NLP_WAR NLP_LV2 NLP_MID '082'

HEADER_TAB-TDSPRAS SPACE SPACE SPACE.

DELETE HEADER_TAB.

ENDIF.

ENDIF.

ENDLOOP.

DESCRIBE TABLE HEADER_TAB LINES FILL.

IF FILL = 0.

  • the object does not exist or is damaged and was not exported

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '074'

SPACE SPACE SPACE SPACE.

PERFORM EXPORT_NOTHING. EXIT.

ENDIF.

PERFORM EXPORT_HEADER.

LOOP AT HEADER_TAB.

  • export TEXT object

PERFORM EXPORT_TXT USING HEADER_TAB-TDOBJECT

HEADER_TAB-TDID

HEADER_TAB-TDNAME

HEADER_TAB-TDSPRAS

FALSE RC.

IF RC = 0.

  • text object ... was exported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '086'

HEADER_TAB-TDOBJECT

HEADER_TAB-TDNAME

HEADER_TAB-TDID

HEADER_TAB-TDSPRAS.

ELSE.

  • text object ... was not exported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '091'

HEADER_TAB-TDOBJECT

HEADER_TAB-TDNAME

HEADER_TAB-TDID

HEADER_TAB-TDSPRAS.

ENDIF.

ENDLOOP.

PERFORM EXPORT_END.

ENDFORM. " EXPORT_TEXTS

*&----


*

*& Form EXPORT_TXT

*&----


*

  • text

*----


*

  • -->P_HEADER_DEF_TDOBJECT text *

  • -->P_HEADER_DEF_TDID text *

  • -->P_HEADER_DEF_TDNAME text *

  • -->P_HEADER_DEF_TDSPRAS text *

  • -->P_LANGUAGE_ONLY text *

  • -->P_RC text *

*----


*

FORM EXPORT_TXT USING VALUE(OBJECT) VALUE(ID)

VALUE(NAME) VALUE(LANGUAGE)

VALUE(LANGUAGE_ONLY) RC.

CALL FUNCTION 'READ_TEXT'

EXPORTING OBJECT = OBJECT

ID = ID

NAME = NAME

LANGUAGE = LANGUAGE

IMPORTING HEADER = HEADER

TABLES LINES = LINES

EXCEPTIONS ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

OTHERS = 7.

IF SY-SUBRC = 0.

  • READ_TEXT o.k.

IF HEADER-TDOBJECT = OBJECT_STYLE OR

HEADER-TDOBJECT = OBJECT_FORM. "this is a style/layout set

IF LANGUAGE_ONLY = TRUE.

HEADER-TDNAME+16(3) = SPACE. "export and import ACT state

ELSE.

HEADER-TDNAME+16(3) = STATUS_SAP. "export and import MOD state

ENDIF.

ELSE. "this is a text

IF HEADER-TDTEXTTYPE <> SPACE.

  • convert LINES data from binary to ascii

PERFORM CONVERT_LINES_BIN_2_ASCII.

ENDIF.

ENDIF.

PERFORM EXPORT_DATA USING 'HEAD' HEADER.

LOOP AT LINES.

PERFORM EXPORT_DATA USING 'LINE' LINES.

ENDLOOP.

PERFORM EXPORT_DATA USING 'END ' SPACE.

RC = 0.

ELSE.

  • READ_TEXT(...) failed

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '090'

OBJECT NAME ID LANGUAGE.

  • get sapscript's error message number and pass it on

CALL FUNCTION 'SAPSCRIPT_MESSAGE_GET_NO'

IMPORTING NO = ITCRS-MSGNO

V1 = ITCRS-MSGV1

V2 = ITCRS-MSGV2

V3 = ITCRS-MSGV3

V4 = ITCRS-MSGV4.

PERFORM NEWPROT USING NLP_INF NLP_LV2 NLP_MID ITCRS-MSGNO

ITCRS-MSGV1 ITCRS-MSGV2

ITCRS-MSGV3 ITCRS-MSGV4.

RC = 1.

ENDIF.

ENDFORM. " EXPORT_TXT

*&----


*

*& Form CONVERT_LINES_BIN_2_ASCII

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM CONVERT_LINES_BIN_2_ASCII.

DATA BEGIN OF L OCCURS 100.

INCLUDE STRUCTURE TLINE.

DATA END OF L.

FIELD-SYMBOLS

.

REFRESH L.

LOOP AT LINES.

  • convert format

CLEAR L.

PERFORM CONV_BIN_2_HEX USING LINES-TDFORMAT(1) L-TDFORMAT.

ASSIGN L-TDLINE(2) TO

.
PERFORM CONV_BIN_2_HEX USING LINES-TDFORMAT+1(1)

.

  • convert line(1..65)

DO 65 TIMES.

ASSIGN

+2(2) TO

.
PERFORM CONV_BIN_2_HEX USING LINES-TDLINE(1)

.

SHIFT LINES-TDLINE.

ENDDO.

APPEND L. CLEAR L.

  • convert line(66)

PERFORM CONV_BIN_2_HEX USING LINES-TDLINE(1) L-TDFORMAT.

SHIFT LINES-TDLINE.

  • convert line(67)

ASSIGN L-TDLINE(2) TO

.
PERFORM CONV_BIN_2_HEX USING LINES-TDLINE(1)

.

SHIFT LINES-TDLINE.

  • convert line(68..132)

DO 65 TIMES.

ASSIGN

+2(2) TO

.
PERFORM CONV_BIN_2_HEX USING LINES-TDLINE(1)

.

SHIFT LINES-TDLINE.

ENDDO.

APPEND L.

ENDLOOP.

REFRESH LINES.

LOOP AT L.

LINES = L. APPEND LINES.

ENDLOOP.

FREE L.

ENDFORM. " CONVERT_LINES_BIN_2_ASCII

*&----


*

*& Form FC_FLUSH_BUFFER

*&----


*

  • text

*----


*

  • -->P_FILENAME text *

*----


*

FORM FC_FLUSH_BUFFER USING VALUE(DATASET_NAME).

IF FC_FULL_TAB_LINES > 0.

PERFORM FC_COMPRESS_TAB.

PERFORM FC_OUTPUT_COMP_TAB USING DATASET_NAME.

FC_FULL_TAB_LINES = 0. REFRESH FC_FULL_TAB.

ENDIF.

ENDFORM. " FC_FLUSH_BUFFER

*&----


*

*& Form FC_COMPRESS_TAB

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM FC_COMPRESS_TAB.

CALL FUNCTION 'TABLE_COMPRESS'

  • IMPORTING

  • COMPRESSED_SIZE =

TABLES

IN = FC_FULL_TAB

OUT = FC_COMP_TAB

EXCEPTIONS

COMPRESS_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

WRITE: / 'Fehler bei TABLE_COMPRESS'(200), SY-SUBRC.

STOP.

ENDIF.

DESCRIBE TABLE FC_COMP_TAB LINES FC_COMP_TAB_LINES.

ENDFORM. " FC_COMPRESS_TAB

*&----


*

*& Form FC_INIT

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM FC_INIT.

REFRESH FC_FULL_TAB. FREE FC_FULL_TAB.

FC_FULL_TAB_LINES = 0.

REFRESH FC_COMP_TAB. FREE FC_COMP_TAB.

FC_COMP_TAB_LINES = 0.

ENDFORM. " FC_INIT

*&----


*

*& Form FC_OUTPUT_COMP_TAB

*&----


*

  • text

*----


*

  • -->P_DATASET_NAME text *

*----


*

FORM FC_OUTPUT_COMP_TAB USING VALUE(DATASET_NAME).

DESCRIBE TABLE FC_COMP_TAB LINES FC_COMP_TAB_LINES.

CHECK FC_COMP_TAB_LINES > 0.

PERFORM FC_WRITE_COMPHEADER USING DATASET_NAME FC_COMP_TAB_LINES.

LOOP AT FC_COMP_TAB.

  • TRANSFER FC_COMP_TAB-RECORD TO DATASET_NAME.

TAB_PC-LINHA = FC_COMP_TAB-RECORD.

APPEND TAB_PC.

CLEAR TAB_PC.

ENDLOOP.

FC_COMP_TAB_LINES = 0.

REFRESH FC_COMP_TAB. FREE FC_COMP_TAB.

ENDFORM. " FC_OUTPUT_COMP_TAB

*&----


*

*& Form FC_READ_RECORD

*&----


*

  • text

*----


*

  • -->P_FILENAME text *

  • -->P_RECORD text *

  • -->P_EOF text *

*----


*

FORM FC_READ_RECORD USING VALUE(DATASET_NAME) REC EOF.

IF FC_FULL_TAB_LINES = 0.

  • read next block

PERFORM FC_INPUT_COMP_TAB USING DATASET_NAME EOF.

IF EOF = TRUE.

EXIT.

ENDIF.

PERFORM FC_DECOMPRESS_TAB.

ENDIF.

READ TABLE FC_FULL_TAB INDEX 1.

IF SY-SUBRC <> 0.

WRITE: / 'Fehler: Entkomprimierte Tabelle ist leer'(204). STOP.

ENDIF.

REC = FC_FULL_TAB-RECORD.

DELETE FC_FULL_TAB INDEX 1.

FC_FULL_TAB_LINES = FC_FULL_TAB_LINES - 1.

ENDFORM.

*&----


*

*& Form FC_DECOMPRESS_TAB

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM FC_DECOMPRESS_TAB.

CHECK FC_COMP_TAB_LINES > 0.

CALL FUNCTION 'TABLE_DECOMPRESS'

TABLES

IN = FC_COMP_TAB

OUT = FC_FULL_TAB

EXCEPTIONS

COMPRESS_ERROR = 1

TABLE_NOT_COMPRESSED = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

WRITE: / 'Fehler bei TABLE_DECOMPRESS'(201), SY-SUBRC.

STOP.

ENDIF.

DESCRIBE TABLE FC_FULL_TAB LINES FC_FULL_TAB_LINES.

ENDFORM. " FC_DECOMPRESS_TAB

*&----


*

*& Form FC_INPUT_COMP_TAB

*&----


*

  • text

*----


*

  • -->P_DATASET_NAME text *

  • -->P_EOF text *

*----


*

FORM FC_INPUT_COMP_TAB USING VALUE(DATASET_NAME) EOF.

EOF = FALSE.

REFRESH FC_COMP_TAB.

PERFORM FC_READ_COMPHEADER USING DATASET_NAME FC_COMP_TAB_LINES.

IF SY-SUBRC <> 0.

WRITE: / 'Fehler: Ungültige Blockkennung, falsches Dateiformat'(202).

STOP.

ENDIF.

IF FC_COMP_TAB_LINES = 0.

EOF = TRUE. EXIT.

ENDIF.

DO FC_COMP_TAB_LINES TIMES.

  • READ DATASET DATASET_NAME INTO FC_COMP_TAB-RECORD.

ADD 1 TO INDICE.

READ TABLE TAB_PC INDEX INDICE INTO FC_COMP_TAB-RECORD.

  • ADD 1 TO INDICE.

IF SY-SUBRC = 0.

APPEND FC_COMP_TAB.

ELSE.

WRITE: /

'Fehler: Zu wenige komprimierte Blöcke, Datei unvollständig'(203).

WRITE: /

'Soll-Anzahl:', FC_COMP_TAB_LINES.

DESCRIBE TABLE FC_COMP_TAB LINES FC_COMP_TAB_LINES.

WRITE: /

'Ist-Anzahl:', FC_COMP_TAB_LINES.

STOP.

ENDIF.

ENDDO.

DESCRIBE TABLE FC_COMP_TAB LINES FC_COMP_TAB_LINES.

ENDFORM. " FC_INPUT_COMP_TAB

*&----


*

*& Form FC_READ_COMPHEADER

*&----


*

  • text

*----


*

  • -->P_DATASET_NAME text *

  • -->P_FC_COMP_TAB_LINES text *

*----


*

FORM FC_READ_COMPHEADER USING VALUE(DATASET_NAME) NUMRECORDS.

STATICS: COMPHEADER(50),

NUMREC(6) TYPE N,

HEXCHAR(2) TYPE C.

*READ DATASET DATASET_NAME INTO COMPHEADER.

ADD 1 TO INDICE.

READ TABLE TAB_PC INDEX INDICE INTO COMPHEADER.

*ADD 1 TO INDICE.

IF SY-SUBRC <> 0.

NUMRECORDS = 0. SY-SUBRC = 0. EXIT.

ENDIF.

  • read binary header id

PERFORM CONV_BIN_2_HEX USING COMPHEADER(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE1.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING COMPHEADER+1(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE2.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING COMPHEADER+2(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE3.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING COMPHEADER+3(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE4.

SY-SUBRC = 1. EXIT.

ENDIF.

PERFORM CONV_BIN_2_HEX USING COMPHEADER+4(1) HEXCHAR.

IF HEXCHAR <> BINARY_FILE_HEADER_BYTE5.

SY-SUBRC = 1. EXIT.

ENDIF.

  • read block size

PERFORM CONVERT_BYTE_TO_DIGIT USING COMPHEADER+5(1) NUMREC(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING COMPHEADER6(1) NUMREC1(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING COMPHEADER7(1) NUMREC2(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING COMPHEADER8(1) NUMREC3(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING COMPHEADER9(1) NUMREC4(1).

PERFORM CONVERT_BYTE_TO_DIGIT USING COMPHEADER10(1) NUMREC5(1).

NUMRECORDS = NUMREC.

ENDFORM. " FC_READ_COMPHEADER

*&----


*

*& Form FC_WRITE_COMPHEADER

*&----


*

  • text

*----


*

  • -->P_DATASET_NAME text *

  • -->P_FC_COMP_TAB_LINES text *

*----


*

FORM FC_WRITE_COMPHEADER USING VALUE(DATASET_NAME) VALUE(NUMRECORDS).

STATICS: COMPHEADER(50),

NUMREC(6) TYPE N.

NUMREC = NUMRECORDS.

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE1

COMPHEADER(1).

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE2

COMPHEADER+1(1).

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE3

COMPHEADER+2(1).

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE4

COMPHEADER+3(1).

PERFORM CONV_HEX_2_BIN USING BINARY_FILE_HEADER_BYTE5

COMPHEADER+4(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING NUMREC(1) COMPHEADER+5(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING NUMREC1(1) COMPHEADER6(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING NUMREC2(1) COMPHEADER7(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING NUMREC3(1) COMPHEADER8(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING NUMREC4(1) COMPHEADER9(1).

PERFORM CONVERT_DIGIT_TO_BYTE USING NUMREC5(1) COMPHEADER10(1).

COMPHEADER+11 = SPACE.

*TRANSFER COMPHEADER TO DATASET_NAME.

TAB_PC-LINHA = COMPHEADER.

APPEND TAB_PC.

CLEAR TAB_PC.

ENDFORM. " FC_WRITE_COMPHEADER

*&----


*

*& Form FC_WRITE_RECORD

*&----


*

  • text

*----


*

  • -->P_FILENAME text *

  • -->P_RECORD text *

  • -->P_END_OF_OBJ text *

*----


*

FORM FC_WRITE_RECORD USING VALUE(DATASET_NAME) VALUE(REC)

VALUE(END_OF_OBJ).

FC_FULL_TAB-RECORD = REC.

APPEND FC_FULL_TAB.

ADD 1 TO FC_FULL_TAB_LINES.

IF FC_FULL_TAB_LINES >= FC_FULL_TAB_MAXLINES AND END_OF_OBJ = TRUE.

PERFORM FC_COMPRESS_TAB.

REFRESH FC_FULL_TAB.

FC_FULL_TAB_LINES = 0.

PERFORM FC_OUTPUT_COMP_TAB USING DATASET_NAME.

ENDIF.

ENDFORM. " FC_WRITE_RECORD

*&----


*

*& Form GET_BINARY_FILE_FORMAT_FLAG

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM GET_BINARY_FILE_FORMAT_FLAG.

IF BINARY_FILE_FORMAT_VALID = BINARY_FILE_FORMAT_MAGIC.

SY-SUBRC = 0.

ELSE.

SY-SUBRC = 1.

ENDIF.

ENDFORM. " GET_BINARY_FILE_FORMAT_FLAG

*&----


*

*& Form GET_LANGUAGE_VECTOR

*&----


*

  • text

*----


*

  • -->P_LANGUAGE_VECTOR text *

*----


*

FORM GET_LANGUAGE_VECTOR CHANGING LANGVEC.

  • do we have a custom langvec that overrides system vector?

IF CUSTOM_LANGUAGE_VECTOR_VALID = CUSTOM_LANGUAGE_VECTOR_MAGIC.

LANGVEC = CUSTOM_LANGUAGE_VECTOR.

SY-SUBRC = 0.

ELSE.

CALL FUNCTION 'SYSTEM_INSTALLED_LANGUAGES'

IMPORTING

LANGUAGES = LANGVEC

EXCEPTIONS

SAPGPARAM_ERROR = 01.

ENDIF.

IF SY-SUBRC = 0.

  • used language vector: ...

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '080'

LANGVEC SPACE SPACE SPACE.

SY-SUBRC = 0.

ELSE.

  • error when reading language vector

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '098'

SPACE SPACE SPACE SPACE.

SY-SUBRC = 1.

ENDIF.

ENDFORM. " GET_LANGUAGE_VECTOR

*&----


*

*& Form IMPORT

*&----


*

  • text

*----


*

  • -->P_SY_SUBRC text *

*----


*

FORM IMPORT USING IMPORT_SUBRC.

DATA MSGNO LIKE T100-MSGNR.

EXPORT_FLAG = FALSE.

SUBRC = 0.

COUNT_ERROR = 0.

COUNT_WARNING = 0.

NOTHING = FALSE.

END_OF_DATA = FALSE.

END_OF_OBJDATA = FALSE.

ACTIVATE_OBJECT = FALSE.

ACTIVATE_OBJECT_OK = FALSE.

IMPORT_OK = TRUE.

  • read header entry of transport object

  • sets OBJECT, NAME

PERFORM IMPORT_HEADER. "may set SUBRC > 0 if error

IF SUBRC <> 0.

  • skip remaining records

PERFORM SKIP_UNREAD_RECORDS.

IMPORT_SUBRC = 4.

EXIT.

ENDIF.

  • call IMPORT subroutines depending on object

CASE OBJECT.

WHEN 'FORM'.

PERFORM IMPORT_FORMSTYL USING OBJECT_FORM FALSE. "complete object

WHEN 'FORT'.

PERFORM IMPORT_FORMSTYL USING OBJECT_FORM TRUE. "languages only

WHEN 'PRIN'.

PERFORM IMPORT_PRIN.

WHEN 'STYL'.

PERFORM IMPORT_FORMSTYL USING OBJECT_STYLE FALSE. "complete object

WHEN 'STYT'.

PERFORM IMPORT_FORMSTYL USING OBJECT_STYLE TRUE. "languages only

WHEN 'TEXT'.

PERFORM IMPORT_TEXT.

ENDCASE.

  • save SUBRC

IMPORT_SUBRC = SUBRC.

  • skip remaining records...

PERFORM SKIP_UNREAD_RECORDS.

  • send final message about success, errors or warnings...

IF NOTHING = FALSE.

IF IMPORT_OK = TRUE.

IF ACTIVATE_OBJECT = FALSE.

  • the object was imported successfully

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '071'

SPACE SPACE SPACE SPACE.

ELSE.

IF ACTIVATE_OBJECT_OK = TRUE.

  • the object was imported and activated successfully

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '088'

SPACE SPACE SPACE SPACE.

ELSE.

  • the object was imported successfully but not activated

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '089'

SPACE SPACE SPACE SPACE.

ENDIF.

ENDIF.

ENDIF.

IF COUNT_ERROR > 0.

  • ... fatal errors were encountered during import

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '072'

COUNT_ERROR SPACE SPACE SPACE.

ENDIF.

IF COUNT_WARNING > 0.

  • ... warnings were encountered during import

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '073'

COUNT_WARNING SPACE SPACE SPACE.

ENDIF.

ENDIF.

ENDFORM. " IMPORT

*&----


*

*& Form IMPORT_FORMSTYL

*&----


*

  • text

*----


*

  • -->P_OBJECT_FORM text *

  • -->P_FALSE text *

*----


*

FORM IMPORT_FORMSTYL USING VALUE(OBJECT_TYPE) VALUE(LANGUAGE_ONLY).

DATA: RC LIKE SY-SUBRC,

OLANG LIKE THEAD-TDOSPRAS,

TRANSTAT LIKE THEAD-TDTRANSTAT.

PERFORM GET_LANGUAGE_VECTOR USING LANGUAGE_VECTOR.

IF SY-SUBRC <> 0. "exit if language vector cannot be read

NOTHING = TRUE. SUBRC = 4. EXIT.

ENDIF.

  • invalidate HEADER,LINES

CLEAR HEADER. REFRESH LINES.

CLEAR OLANG.

TRANSTAT = TRANSLATION_WANTED. "default

PERFORM IMPORT_RECORD.

WHILE END_OF_OBJDATA = FALSE AND SUBRC = 0.

CASE RECORD-COMMAND.

  • header data

WHEN 'HEAD'.

HEADER = RECORD-DATA. REFRESH LINES.

  • lines data

WHEN 'LINE'.

LINES = RECORD-DATA. APPEND LINES.

  • end of header & lines

WHEN 'END'.

  • check if LANGVEC allows import

PERFORM CHECK_FORMSTYL_FOR_IMPORT USING HEADER

LANGUAGE_ONLY

OLANG

LANGUAGE_VECTOR

TRANSTAT

RC.

CASE RC.

WHEN 0. "o.k. to import

PERFORM SAVE_TEXT USING RC.

CASE RC.

WHEN 0. "SAVE_TEXT o.k.

WHEN 2. "BAD_LANGUAGE

IF HEADER-TDSPRAS = HEADER-TDOSPRAS.

IMPORT_OK = FALSE. "suppress 'successful import' message

ENDIF.

WHEN OTHERS. "other error

IMPORT_OK = FALSE. "should not happen

ENDCASE.

WHEN 4. "TXT not in langvec -> cannot import language

  • no action, only info

WHEN 8. "DEF not in langvec -> cannot import complete object

IMPORT_OK = FALSE.

NOTHING = TRUE. "no final message on warnings/errors/success

ENDCASE.

  • invalidate HEADER,LINES

CLEAR HEADER. REFRESH LINES.

  • delete command FORM

WHEN FUNC_DEL_FORM.

IF LANGUAGE_ONLY = FALSE. "complete import

PERFORM DELETE_OBJECT USING OBJECT_FORM RECORD-DATA(16).

ENDIF.

  • delete command STYLE

WHEN FUNC_DEL_STYL.

IF LANGUAGE_ONLY = FALSE. "complete import

PERFORM DELETE_OBJECT USING OBJECT_STYLE RECORD-DATA(8).

ENDIF.

  • activate command

WHEN FUNC_ACTIVATE.

IF LANGUAGE_ONLY = FALSE. "complete import

IF IMPORT_OK = TRUE. "DEF was imported

PERFORM ACTIVATE_OBJECT.

ENDIF.

ENDIF.

  • set original language command

WHEN FUNC_OLANGUAGE.

OLANG = RECORD-DATA(1).

IF LANGUAGE_ONLY = FALSE. "complete import

PERFORM SET_OLANGUAGE USING OBJECT_TYPE OLANG LANGUAGE_VECTOR.

ENDIF.

  • nothing data (dummy export)

WHEN FUNC_NOTHING.

  • nothing was imported

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '069'

SPACE SPACE SPACE SPACE.

NOTHING = TRUE.

  • unknown command

WHEN OTHERS.

  • format ... is unknown and will be ignored

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '070'

RECORD-COMMAND SPACE SPACE SPACE.

ENDCASE.

PERFORM IMPORT_RECORD.

ENDWHILE.

ENDFORM. " IMPORT_FORMSTYL

*&----


*

*& Form ACTIVATE_OBJECT

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM ACTIVATE_OBJECT.

DATA: STYLE LIKE ITCDA-TDSTYLE,

FORM LIKE ITCTA-TDFORM.

ACTIVATE_OBJECT = TRUE.

CASE OBJECT.

WHEN 'STYL'. STYLE = NAME(8).

CALL FUNCTION 'ACTIVATE_STYLE'

EXPORTING STYLE = STYLE

STATUS = STATUS_SAP

IMPORTING RESULT = ITCRS.

WHEN 'FORM'. FORM = NAME(16).

CALL FUNCTION 'ACTIVATE_FORM'

EXPORTING FORM = FORM

STATUS = STATUS_SAP

IMPORTING RESULT = ITCRS.

WHEN OTHERS. EXIT.

ENDCASE.

  • check result of activating object...

IF ITCRS-SUBRC = 0.

ACTIVATE_OBJECT_OK = TRUE.

ELSE.

  • object could not be activated

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '081'

SPACE SPACE SPACE SPACE.

  • pass on error message from ITCRS structure, ID is 'TD'

PERFORM NEWPROT USING NLP_INF NLP_LV3 'TD' ITCRS-MSGNO

ITCRS-MSGV1 ITCRS-MSGV2

ITCRS-MSGV3 ITCRS-MSGV4.

ACTIVATE_OBJECT_OK = FALSE.

ENDIF.

ENDFORM. " ACTIVATE_OBJECT

*&----


*

*& Form CHECK_FORMSTYL_FOR_IMPORT

*&----


*

  • text

*----


*

  • -->P_HEADER text *

  • -->P_LANGUAGE_ONLY text *

  • -->P_OLANG text *

  • -->P_LANGUAGE_VECTOR text *

  • -->P_TRANSTAT text *

  • -->P_RC text *

*----


*

FORM CHECK_FORMSTYL_FOR_IMPORT USING VALUE(HEADER) STRUCTURE THEAD

VALUE(LANGUAGE_ONLY)

VALUE(OLANG)

VALUE(LANGVEC)

TRANSTAT

RC.

RC = 0.

IF LANGUAGE_ONLY = TRUE.

  • FORT/STYT import, import only TXT parts, do NOT import anything if

  • object is language independent!!!

  • check if DEF exists

SELECT * FROM STXH WHERE TDOBJECT = HEADER-TDOBJECT

AND TDNAME = HEADER-TDNAME

AND TDID = ID_DEF.

ENDSELECT.

IF SY-DBCNT = 1. "o.k., one DEF part exists, check TDTRANSTAT

IF STXH-TDTRANSTAT = TRANSLATION_NOT_WANTED. "not language dependent

  • language .. not imported since object is language independent

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '050'

HEADER-TDSPRAS SPACE SPACE SPACE.

RC = 4. EXIT.

ENDIF.

ELSE. "no or several DEF parts -> no import

  • language .. not imported since DEF is missing

PERFORM NEWPROT USING NLP_WAR NLP_LV2 NLP_MID '055'

HEADER-TDSPRAS SPACE SPACE SPACE.

RC = 4. EXIT.

ENDIF.

IF LANGVEC NA HEADER-TDSPRAS.

  • language vector prohibits translation export/import

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '083'

HEADER-TDSPRAS SPACE SPACE SPACE.

RC = 4. EXIT.

ENDIF.

ELSE.

  • FORM/STYL import, import DEF and TXT parts

IF HEADER-TDID = ID_DEF. "def part contains transtat info, use it

TRANSTAT = HEADER-TDTRANSTAT.

IF TRANSTAT = TRANSLATION_NOT_WANTED.

  • language vector is ignored since object not for translation

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '054'

SPACE SPACE SPACE SPACE.

ENDIF.

ENDIF.

IF TRANSTAT = TRANSLATION_NOT_WANTED. "no translation

  • no action, always import

ELSE. "translations wanted

IF LANGVEC NA OLANG. "DEF not in langvec

  • language vector prohibits OLANG export/import

PERFORM NEWPROT USING NLP_WAR NLP_LV2 NLP_MID '082'

OLANG SPACE SPACE SPACE.

RC = 8. EXIT.

ENDIF.

IF LANGVEC NA HEADER-TDSPRAS. "TXT not in langvec

  • language vector prohibits translation export/import

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '083'

HEADER-TDSPRAS SPACE SPACE SPACE.

RC = 4. EXIT.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " CHECK_FORMSTYL_FOR_IMPORT

*&----


*

*& Form DELETE_OBJECT

*&----


*

  • text

*----


*

  • -->P_OBJECT_FORM text *

  • -->P_RECORD_DATA(16) text *

*----


*

FORM DELETE_OBJECT USING VALUE(OBJECT) VALUE(NAME).

DATA: FORMNAME LIKE ITCTA-TDFORM,

STYLENAME LIKE ITCDA-TDSTYLE,

FOUND.

FOUND = FALSE.

CASE OBJECT.

WHEN OBJECT_FORM.

FORMNAME = NAME.

CALL FUNCTION 'DELETE_FORM'

EXPORTING FORM = FORMNAME

LANGUAGE = '*'

IMPORTING FOUND = FOUND.

WHEN OBJECT_STYLE.

STYLENAME = NAME.

CALL FUNCTION 'DELETE_STYLE'

EXPORTING STYLE = STYLENAME

LANGUAGE = '*'

IMPORTING FOUND = FOUND.

ENDCASE.

IF FOUND = TRUE.

  • object ... ... was deleted

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '097'

OBJECT NAME SPACE SPACE.

ENDIF.

ENDFORM. " DELETE_OBJECT

*&----


*

*& Form IMPORT_HEADER

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM IMPORT_HEADER.

  • invalidate transport object, we are looking for a new one

CLEAR OBJECT. CLEAR NAME.

IF CLIPBOARD = TRUE.

PERFORM IMPORT_CLIPBOARD.

ELSE.

PERFORM CALL_IMPDATA USING RECORD SUBRC.

ENDIF.

IF SUBRC NE 0.

  • ???

  • illegal end of transportfile

  • PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '078'

  • SPACE SPACE SPACE SPACE.

EXIT.

ENDIF.

IF RECORD-TYP NE 'H'.

  • SAPscript transport header (HTEXT,HSTYL, ...) was not found

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '085'

RECORD-TYP 'H' SPACE SPACE.

EXIT.

ENDIF.

OBJECT = RECORD-COMMAND.

NAME = RECORD-DATA.

CASE OBJECT.

WHEN 'PRIN'.

WHEN 'STYL'.

WHEN 'STYT'. "style languages only

WHEN 'FORM'.

WHEN 'FORT'. "form languages only

WHEN 'TEXT'.

WHEN OTHERS.

  • the transport object ... is invalid

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '077'

OBJECT SPACE SPACE SPACE.

EXIT.

ENDCASE.

  • object ... ... is presently at work

PERFORM NEWPROT USING NLP_INF NLP_LV2 NLP_MID '093'

OBJECT NAME SPACE SPACE.

ENDFORM. " IMPORT_HEADER

*&----


*

*& Form CALL_IMPDATA

*&----


*

  • text

*----


*

  • -->P_RECORD text *

  • -->P_SUBRC text *

*----


*

FORM CALL_IMPDATA USING REC RC.

PERFORM IMPDATA(RDDDIC10) USING REC RC.

IF RC <> 0.

END_OF_DATA = TRUE.

ENDIF.

ENDFORM. " CALL_IMPDATA

*&----


*

*& Form IMPORT_CLIPBOARD

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM IMPORT_CLIPBOARD.

STATICS: EOF.

IF BINARY_FILE_FORMAT_VALID = BINARY_FILE_FORMAT_MAGIC.

  • binary and compressed file

PERFORM FC_READ_RECORD USING FILENAME RECORD EOF.

IF EOF = TRUE.

SUBRC = 4.

END_OF_CLIPBOARD = TRUE.

EXIT.

ENDIF.

  • codepage conversion...

IF BINFILE_CODEPAGE <> SYSTEM_CODEPAGE.

TRANSLATE RECORD FROM CODE PAGE BINFILE_CODEPAGE.

ENDIF.

ELSE.

  • text mode file

  • READ DATASET FILENAME INTO RECORD.

ADD 1 TO INDICE.

READ TABLE TAB_PC INDEX INDICE INTO RECORD.

SUBRC = SY-SUBRC.

IF SUBRC NE 0.

END_OF_CLIPBOARD = TRUE.

EXIT.

ENDIF.

ENDIF.

IF LIST_FILE_CONTENTS = 'X'.

WRITE: / RECORD.

ENDIF.

ENDFORM. " IMPORT_CLIPBOARD

*&----


*

*& Form IMPORT_PRIN

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM IMPORT_PRIN.

DATA: VERSION LIKE TSP0A-PVERS,

PRINTER LIKE TSP0A-PATYPE,

ALLCLIENTS LIKE SY-MANDT VALUE '* '.

  • refresh buffer tables

REFRESH: BUF_T022D, BUF_TSP06, BUF_TFO03, BUF_TFO04, BUF_TFO06.

PERFORM IMPORT_RECORD.

WHILE END_OF_OBJDATA = FALSE AND SUBRC = 0.

CASE RECORD-COMMAND.

  • print controls T022D (REPLACE ALL)

WHEN '022D'.

  • T022D = RECORD-DATA.

  • INSERT T022D. IF SY-SUBRC > 0. UPDATE T022D. ENDIF.

BUF_T022D = RECORD-DATA.

APPEND BUF_T022D.

  • font families TFO01 (REPLACE ONLY TRANSPORTED)

WHEN 'FO01'.

  • do not transport TFO01 any more B20K022408

  • printer fonts TFO03 (REPLACE ALL)

WHEN 'FO03'.

TFO03_LINE = RECORD-DATA.

  • TFO03 = TFO03_LINE-ALL.

  • TFO03-TDCPI = TFO03_LINE-CPI.

  • INSERT TFO03. IF SY-SUBRC > 0. UPDATE TFO03. ENDIF.

BUF_TFO03 = TFO03_LINE-ALL.

BUF_TFO03-TDCPI = TFO03_LINE-CPI.

APPEND BUF_TFO03.

  • printer font metrics TFO04 (REPLACE ALL)

WHEN 'FO04'.

  • TFO04 = RECORD-DATA.

  • INSERT TFO04. IF SY-SUBRC > 0. UPDATE TFO04. ENDIF.

BUF_TFO04 = RECORD-DATA.

APPEND BUF_TFO04.

  • system barcodes TFO05 (REPLACE ONLY TRANSPORTED)

WHEN 'FO05'.

  • do not transport TFO05 any more B20K022408

  • printer barcodes TFO06 (REPLACE ALL)

WHEN 'FO06'.

  • TFO06 = RECORD-DATA.

  • INSERT TFO06. IF SY-SUBRC > 0. UPDATE TFO06. ENDIF.

BUF_TFO06 = RECORD-DATA.

APPEND BUF_TFO06.

  • printer aufbereitung TSP06 (REPLACE ALL)

WHEN 'SP06'.

TSP06_LINE = RECORD-DATA.

  • TSP06 = TSP06_LINE-ALL.

  • TSP06-PDLFDNR = TSP06_LINE-PDLFDNR.

  • TSP06-PDDATALEN = TSP06_LINE-PDDATALEN.

  • INSERT TSP06.

BUF_TSP06 = TSP06_LINE-ALL.

BUF_TSP06-PDLFDNR = TSP06_LINE-PDLFDNR.

BUF_TSP06-PDDATALEN = TSP06_LINE-PDDATALEN.

APPEND BUF_TSP06.

  • spooler formats TSP1D (REPLACE ONLY TRANSPORTED)

WHEN 'SP1D'.

TSP1D = RECORD-DATA.

INSERT TSP1D. IF SY-SUBRC > 0. UPDATE TSP1D. ENDIF.

  • spooler format texts TSP1T (REPLACE ONLY TRANSPORTED)

WHEN 'SP1T'.

  • do NOT import texts any more B20K022408

  • printer type TSP0A (REPLACE 1 ENTRY)

WHEN 'SP0A'.

TSP0A = RECORD-DATA.

PRINTER = TSP0A-PATYPE.

  • increment printer version

SELECT SINGLE * FROM TSP0A WHERE PATYPE = PRINTER.

IF SY-SUBRC = 0. "printer exists, increment existing version

VERSION = TSP0A-PVERS.

IF VERSION = 99999. VERSION = 0. ENDIF.

ELSE.

VERSION = 0.

ENDIF.

TSP0A = RECORD-DATA.

TSP0A-PVERS = VERSION + 1.

  • the printer, font, style, form load is deleted in FORM IMPORT

INSERT TSP0A. IF SY-SUBRC > 0. UPDATE TSP0A. ENDIF.

  • SAPscript drivers (INSERT 1 ENTRY)

WHEN 'SP09'.

TSP09 = RECORD-DATA.

INSERT TSP09.

  • do nothing, if driver exists already, no update!

  • we do not want to change the ABAP/C flag

WHEN FUNC_DEL_PAPER.

PAPER = RECORD-DATA.

DELETE FROM TSP06 WHERE PDPTYPE = PAPER-PDPTYPE

AND PDPAPER = PAPER-PDPAPER.

WHEN FUNC_NOTHING.

  • nothing was imported

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '069' "QVN

SPACE SPACE SPACE SPACE. "QVN

NOTHING = TRUE.

WHEN OTHERS.

  • format ... is unknown and will be ignored

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '070' "QVN

RECORD-COMMAND SPACE SPACE SPACE. "QVN

ENDCASE.

PERFORM IMPORT_RECORD.

ENDWHILE.

  • update database tables from buffers

PERFORM UPDATE_PRIN_TABLES_FROM_BUFFER USING PRINTER.

  • delete complete load

  • this will take longer if a single object is imported, but saves a

  • lot of time if several objects are imported in a put

CALL FUNCTION 'SAPSCRIPT_DELETE_LOAD'

EXPORTING ALL = 'X'

CLIENT = ALLCLIENTS

DELETE = 'X'

WRITE = ' '.

ENDFORM. " IMPORT_PRIN

*&----


*

*& Form IMPORT_RECORD

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM IMPORT_RECORD.

DATA: RC LIKE SY-SUBRC.

CHECK SUBRC = 0 AND END_OF_OBJDATA = FALSE.

IF CLIPBOARD = TRUE.

PERFORM IMPORT_CLIPBOARD.

ELSE.

PERFORM CALL_IMPDATA USING RECORD SUBRC.

ENDIF.

IF SUBRC NE 0.

  • ???

  • illegal end of transportfile

  • PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '078' "QVN

  • SPACE SPACE SPACE SPACE. "QVN

EXIT.

ENDIF.

IF RECORD-TYP = 'E'.

  • we have read our own "end marker" in the transport file

END_OF_OBJDATA = TRUE.

  • if this is the "official" transporter, make sure that this is the

  • end of the data

IF CLIPBOARD <> TRUE.

PERFORM CALL_IMPDATA USING RECORD RC.

IF RC = 0. "there is some data left...

  • end of transportfile was expected

PERFORM NEWPROT USING NLP_WAR NLP_LV2 NLP_MID '079' "QVN

SPACE SPACE SPACE SPACE. "QVN

ELSE.

  • there is no data left, that's what we expected

ENDIF.

ELSE.

  • no action necessary for clipboard import

ENDIF.

ENDIF.

SUBRC = 0.

ENDFORM. " IMPORT_RECORD

*&----


*

*& Form IMPORT_SAPSCRIPT

*&----


*

  • text

*----


*

  • -->P_OBJECT text *

  • -->P_OBJ_NAME text *

  • -->P_RC text *

*----


*

FORM IMPORT_SAPSCRIPT USING OBJECT OBJ_NAME RC.

RC = 0.

PERFORM IMPORT_CLIPBOARD.

IF SUBRC NE 0.

  • illegal end of transportfile

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '078'

RECORD-TYP RECORD-COMMAND SPACE SPACE.

RC = 1.

EXIT.

ENDIF.

IF RECORD-TYP NE 'S' OR RECORD-COMMAND NE OBJECT.

  • illegal header: ... instead of ...

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '084'

RECORD-TYP RECORD-COMMAND 'S' OBJECT.

RC = 1.

EXIT.

ENDIF.

IF RECORD-DATA NE OBJ_NAME.

  • transport object ... and content of file ... differ

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '092'

OBJ_NAME RECORD-DATA SPACE SPACE.

RC = 1.

EXIT.

ENDIF.

ENDFORM. " IMPORT_SAPSCRIPT

*&----


*

*& Form IMPORT_TEXT

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM IMPORT_TEXT.

DATA: RC LIKE SY-SUBRC.

PERFORM GET_LANGUAGE_VECTOR USING LANGUAGE_VECTOR.

IF SY-SUBRC <> 0. "exit if language vector cannot be read

NOTHING = TRUE. SUBRC = 4. EXIT.

ENDIF.

  • invalidate HEADER,LINES

CLEAR HEADER.

REFRESH LINES.

PERFORM IMPORT_RECORD.

WHILE END_OF_OBJDATA = FALSE AND SUBRC = 0.

CASE RECORD-COMMAND.

WHEN 'HEAD'.

HEADER = RECORD-DATA. REFRESH LINES.

WHEN 'LINE'.

LINES = RECORD-DATA. APPEND LINES.

WHEN 'END'.

IF LANGUAGE_VECTOR CA HEADER-TDSPRAS.

PERFORM SAVE_TEXT USING RC.

CASE RC.

WHEN 0. "SAVE_TEXT o.k.

WHEN 2. "BAD_LANGUAGE

IMPORT_OK = FALSE. "suppress 'successful import' message

WHEN OTHERS. "other ERROR

IMPORT_OK = FALSE. "should not happen

ENDCASE.

ELSE.

  • language vector prohibits OLANG export/import

PERFORM NEWPROT USING NLP_WAR NLP_LV2 NLP_MID '082'

HEADER-TDSPRAS SPACE SPACE SPACE.

IMPORT_OK = FALSE. "suppress 'successful import' message

ENDIF.

  • invalidate HEADER,LINES

CLEAR HEADER. REFRESH LINES.

WHEN FUNC_NOTHING.

  • nothing was imported

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '069'

SPACE SPACE SPACE SPACE.

NOTHING = TRUE.

WHEN OTHERS.

  • format ... is unknown and will be ignored

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '070'

RECORD-COMMAND SPACE SPACE SPACE.

ENDCASE.

PERFORM IMPORT_RECORD.

ENDWHILE.

ENDFORM. " IMPORT_TEXT

*&----


*

*& Form NAME_TO_TEXTKEY

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM NAME_TO_TEXTKEY.

ASSIGN NAME(1) TO .

NAME_POS = 1.

PERFORM TEXTKEY USING 10 TEXTLOW-TDOBJECT.

PERFORM TEXTKEY USING 70 TEXTLOW-TDNAME.

PERFORM TEXTKEY USING 4 TEXTLOW-TDID.

PERFORM TEXTKEY USING 1 TEXTLOW-TDSPRAS.

ENDFORM. " NAME_TO_TEXTKEY

*&----


*

*& Form NEWPROT

*&----


*

  • text

*----


*

  • -->P_NLP_INF text *

  • -->P_NLP_LV2 text *

  • -->P_NLP_MID text *

  • -->P_5041 text *

  • -->P_OBJECT text *

  • -->P_NAME text *

  • -->P_SPACE text *

  • -->P_SPACE text *

*----


*

FORM NEWPROT USING VALUE(SEVERITY) VALUE(LEVEL) VALUE(MESGID)

VALUE(NUM) VALUE(P1) VALUE(P2) VALUE(P3) VALUE(P4).

CASE SEVERITY.

WHEN NLP_ERR. ADD 1 TO COUNT_ERROR. SUBRC = 4. IMPORT_OK = FALSE.

WHEN NLP_WAR. ADD 1 TO COUNT_WARNING.

WHEN OTHERS. SEVERITY = NLP_INF.

ENDCASE.

CASE LEVEL.

WHEN NLP_LV1. "ok

WHEN NLP_LV2. "ok

WHEN NLP_LV3. "ok

WHEN OTHERS. LEVEL = NLP_LV3. "default is level 3

ENDCASE.

IF CLIPBOARD = TRUE.

  • transport online via RSTXR3TR

WRITE: / SPACE.

DO LEVEL TIMES.

WRITE ' '.

ENDDO.

PERFORM WRITE_MSG USING MESGID NUM P1 P2 P3 P4.

ELSE.

  • transport via official TRANSPORT

IF EXPORT_FLAG = TRUE.

PERFORM NEW_LOGPROT(RDDDIC00) USING LEVEL SEVERITY NLP_LAN

MESGID NUM NLP_NOB

P1 P2 P3 P4.

ELSE.

PERFORM NEW_LOGPROT(RDDDIC10) USING LEVEL SEVERITY NLP_LAN

MESGID NUM NLP_NOB

P1 P2 P3 P4.

ENDIF.

ENDIF.

ENDFORM. " NEWPROT

*&----


*

*& Form SAVE_TEXT

*&----


*

  • text

*----


*

  • -->P_RC text *

*----


*

FORM SAVE_TEXT USING RC.

IF HEADER-TDOBJECT = OBJECT_STYLE OR

HEADER-TDOBJECT = OBJECT_FORM. "this is a style/layout set

  • no action

ELSE. "this is a text

IF HEADER-TDTEXTTYPE <> SPACE.

  • convert LINES data from ascii to binary

PERFORM CONVERT_LINES_ASCII_2_BIN.

ENDIF.

ENDIF.

  • call SAVE_TEXT

CALL FUNCTION 'SAVE_TEXT'

EXPORTING HEADER = HEADER

SAVEMODE_DIRECT = 'X'

TABLES LINES = LINES

EXCEPTIONS ID = 1

LANGUAGE = 2

NAME = 3

OBJECT = 4

OTHERS = 5.

RC = SY-SUBRC.

CASE RC.

WHEN 0.

  • SAVE_TEXT o.k.

IF HEADER-TDOBJECT = OBJECT_FORM OR HEADER-TDOBJECT = OBJECT_STYLE.

  • style/layout set

CASE HEADER-TDID.

WHEN ID_DEF.

  • definition ... was imported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '066'

HEADER-TDSPRAS SPACE SPACE SPACE.

WHEN ID_TXT.

IF HEADER-TDSPRAS = HEADER-TDOSPRAS.

  • original language ... was imported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '065'

HEADER-TDSPRAS SPACE SPACE SPACE.

ELSE.

  • language ... was imported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '067'

HEADER-TDSPRAS SPACE SPACE SPACE.

ENDIF.

ENDCASE.

ELSE.

  • normal text

  • TEXT object ..... was imported

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '087'

HEADER-TDOBJECT HEADER-TDNAME

HEADER-TDID HEADER-TDSPRAS.

ENDIF.

WHEN 2.

  • BAD_LANGUAGE exception

IF HEADER-TDOBJECT = OBJECT_FORM OR HEADER-TDOBJECT = OBJECT_STYLE.

  • style/layout set: WARNING

IF HEADER-TDSPRAS = HEADER-TDOSPRAS.

  • object not imported since language & does not exist

PERFORM NEWPROT USING NLP_WAR NLP_LV2 NLP_MID '095'

HEADER-TDSPRAS SPACE SPACE SPACE.

ELSE.

  • language & not imported since language does not exist

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '096'

HEADER-TDSPRAS SPACE SPACE SPACE.

ENDIF.

ELSE.

  • normal text: WARNING

  • object not imported since language & does not exist

PERFORM NEWPROT USING NLP_WAR NLP_LV3 NLP_MID '095'

HEADER-TDSPRAS SPACE SPACE SPACE.

ENDIF.

WHEN OTHERS.

  • get sapscript's error message number+parameters into ITCRS

CALL FUNCTION 'SAPSCRIPT_MESSAGE_GET_NO'

IMPORTING NO = ITCRS-MSGNO

V1 = ITCRS-MSGV1

V2 = ITCRS-MSGV2

V3 = ITCRS-MSGV3

V4 = ITCRS-MSGV4.

  • SAVE_TEXT(...) failed

PERFORM NEWPROT USING NLP_ERR NLP_LV2 NLP_MID '068'

HEADER-TDOBJECT HEADER-TDNAME

HEADER-TDID HEADER-TDSPRAS.

  • pass on error message from SAVE_TEXT

PERFORM NEWPROT USING NLP_INF NLP_LV2 NLP_MID ITCRS-MSGNO

ITCRS-MSGV1 ITCRS-MSGV2

ITCRS-MSGV3 ITCRS-MSGV4.

ENDCASE.

ENDFORM. " SAVE_TEXT

*&----


*

*& Form CONVERT_LINES_ASCII_2_BIN

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM CONVERT_LINES_ASCII_2_BIN.

DATA BEGIN OF L OCCURS 100.

INCLUDE STRUCTURE TLINE.

DATA END OF L.

FIELD-SYMBOLS

.

DATA L_OFFS TYPE I.

REFRESH L.

L_OFFS = 0.

LOOP AT LINES.

IF L_OFFS = 0. "begin of a L-line

CLEAR L.

  • convert l-format

PERFORM CONV_HEX_2_BIN USING LINES-TDFORMAT L-TDFORMAT(1).

PERFORM CONV_HEX_2_BIN USING LINES-TDLINE(2) L-TDFORMAT+1(1).

SHIFT LINES-TDLINE BY 2 PLACES.

  • convert l-line(1..65)

ASSIGN L-TDLINE(1) TO

.
DO 65 TIMES.
PERFORM CONV_HEX_2_BIN USING LINES-TDLINE(2)

.
SHIFT LINES-TDLINE BY 2 PLACES.
ASSIGN

+1(1) TO

.
ENDDO.
L_OFFS = 65.
ELSE. "middle of a l-line
ASSIGN L-TDLINE+65(1) TO

.

  • convert LINES-TDFORMAT

PERFORM CONV_HEX_2_BIN USING LINES-TDFORMAT

.

  • convert LINES-TDLINE

DO 66 TIMES.

ASSIGN

+1(1) TO

.
PERFORM CONV_HEX_2_BIN USING LINES-TDLINE(2)

.

SHIFT LINES-TDLINE BY 2 PLACES.

ENDDO.

APPEND L.

L_OFFS = 0.

ENDIF.

ENDLOOP.

REFRESH LINES.

LOOP AT L.

LINES = L. APPEND LINES.

ENDLOOP.

FREE L.

ENDFORM. " CONVERT_LINES_ASCII_2_BIN

*&----


*

*& Form SET_BINARY_FILE_FORMAT

*&----


*

  • text

*----


*

  • -->P_TRUE text *

*----


*

FORM SET_BINARY_FILE_FORMAT USING VALUE(BINFILE_FLAG).

STATICS: CP_C4(4),

APPL_SYSCP LIKE TCP00-CPCODEPAGE.

IF BINFILE_FLAG = TRUE.

CALL FUNCTION 'SYSTEM_CODEPAGE'

IMPORTING

CODEPAGE = APPL_SYSCP.

CALL 'CUR_LCL' ID 'CODEPAGE' FIELD CP_C4. "B30K010965

SYSTEM_CODEPAGE = CP_C4.

IF APPL_SYSCP <> SYSTEM_CODEPAGE.

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '048'

SYSTEM_CODEPAGE APPL_SYSCP SPACE SPACE.

ENDIF.

BINFILE_CODEPAGE = '0000'.

BINARY_FILE_FORMAT_VALID = BINARY_FILE_FORMAT_MAGIC.

ELSE.

BINARY_FILE_FORMAT_VALID = SPACE.

ENDIF.

ENDFORM. " SET_BINARY_FILE_FORMAT

*&----


*

*& Form SET_CUSTOM_LANGUAGE_VECTOR

*&----


*

  • text

*----


*

  • -->P_LANG_VEC text *

*----


*

FORM SET_CUSTOM_LANGUAGE_VECTOR USING VALUE(LANGVEC).

STATICS: LEN LIKE SY-FDPOS.

IF LANGVEC = SPACE.

CUSTOM_LANGUAGE_VECTOR_VALID = SPACE. "invalidate custom langvec

ELSE.

CONDENSE LANGVEC NO-GAPS. "no blanks in langvec

CUSTOM_LANGUAGE_VECTOR = LANGVEC.

CUSTOM_LANGUAGE_VECTOR_VALID = CUSTOM_LANGUAGE_VECTOR_MAGIC.

LEN = STRLEN( CUSTOM_LANGUAGE_VECTOR ).

IF LEN = 1.

SET LOCALE LANGUAGE CUSTOM_LANGUAGE_VECTOR(1). "B30K011012

ENDIF.

ENDIF.

ENDFORM. " SET_CUSTOM_LANGUAGE_VECTOR

*&----


*

*& Form SET_OLANGUAGE

*&----


*

  • text

*----


*

  • -->P_OBJECT_TYPE text *

  • -->P_OLANG text *

  • -->P_LANGUAGE_VECTOR text *

*----


*

FORM SET_OLANGUAGE USING VALUE(OBJECT) VALUE(OLANG) VALUE(LANGVEC).

DATA: TDNAME LIKE THEAD-TDNAME,

TDOBJECT LIKE THEAD-TDOBJECT,

TDOLANG LIKE THEAD-TDSPRAS.

CASE OBJECT.

WHEN OBJECT_STYLE. TDOBJECT = OBJECT_STYLE. TDNAME = NAME(8).

WHEN OBJECT_FORM. TDOBJECT = OBJECT_FORM. TDNAME = NAME(16).

WHEN OTHERS. EXIT.

ENDCASE.

TDOLANG = OLANG.

IF LANGVEC CA TDOLANG. "if OLANG in langvec...

CALL FUNCTION 'SAPSCRIPT_CHANGE_OLANGUAGE'

EXPORTING FORCED = TRUE

OBJECT = TDOBJECT

NAME = TDNAME

OLANGUAGE = TDOLANG

EXCEPTIONS OTHERS = 1.

IF SY-SUBRC = 0.

  • original language was changed to ...

PERFORM NEWPROT USING NLP_INF NLP_LV3 NLP_MID '053'

TDOLANG SPACE SPACE SPACE.

ENDIF.

ENDIF.

ENDFORM. " SET_OLANGUAGE

*&----


*

*& Form SKIP_UNREAD_RECORDS

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM SKIP_UNREAD_RECORDS.

DATA: COUNT LIKE SY-INDEX.

IF CLIPBOARD <> TRUE.

COUNT = 0.

WHILE END_OF_DATA = FALSE AND COUNT < 9000.

  • PERFORM IMPDATA(RDDDIC10) USING RECORD RC.

PERFORM CALL_IMPDATA USING RECORD RC. "QVN B20K005546

ADD 1 TO COUNT.

ENDWHILE.

ELSE.

  • no action necessary for CLIPBOARD import

ENDIF.

ENDFORM. " SKIP_UNREAD_RECORDS

*&----


*

*& Form TEXTKEY

*&----


*

  • text

*----


*

  • -->P_10 text *

  • -->P_TEXTLOW_TDOBJECT text *

*----


*

FORM TEXTKEY USING VALUE(LEN) LOW.

DATA N LIKE NAME.

FIELD-SYMBOLS . ADD 1 TO NAME_POS.

ENDIF.

LOW = N.

ENDFORM. " TEXTKEY

*&----


*

*& Form UPDATE_PRIN_TABLES_FROM_BUFFER

*&----


*

  • text

*----


*

  • -->P_PRINTER text *

*----


*

FORM UPDATE_PRIN_TABLES_FROM_BUFFER USING VALUE(PRINTER).

  • I use abap's array insert. this will give a runtime-error if any

  • record exists already in the db table. so I better make sure

  • that the keys for delete and insert match!

DELETE FROM T022D WHERE TYP = PRINTER.

LOOP AT BUF_T022D. "avoid runtime-error from ARRAY INSERT

BUF_T022D-TYP = PRINTER. MODIFY BUF_T022D.

ENDLOOP.

INSERT T022D FROM TABLE BUF_T022D.

DELETE FROM TFO03 WHERE TDPRINTER = PRINTER.

LOOP AT BUF_TFO03. "avoid runtime-error from ARRAY INSERT

BUF_TFO03-TDPRINTER = PRINTER. MODIFY BUF_TFO03.

ENDLOOP.

INSERT TFO03 FROM TABLE BUF_TFO03.

DELETE FROM TFO04 WHERE TDPRINTER = PRINTER.

LOOP AT BUF_TFO04. "avoid runtime-error from ARRAY INSERT

BUF_TFO04-TDPRINTER = PRINTER. MODIFY BUF_TFO04.

ENDLOOP.

INSERT TFO04 FROM TABLE BUF_TFO04.

DELETE FROM TFO06 WHERE TDPRINTER = PRINTER.

LOOP AT BUF_TFO06. "avoid runtime-error from ARRAY INSERT

BUF_TFO06-TDPRINTER = PRINTER. MODIFY BUF_TFO06.

ENDLOOP.

INSERT TFO06 FROM TABLE BUF_TFO06.

DELETE FROM TSP06 WHERE PDPTYPE = PRINTER.

LOOP AT BUF_TSP06. "avoid runtime-error from ARRAY INSERT

BUF_TSP06-PDPTYPE = PRINTER. MODIFY BUF_TSP06.

ENDLOOP.

INSERT TSP06 FROM TABLE BUF_TSP06.

ENDFORM. " UPDATE_PRIN_TABLES_FROM_BUFFER

*&----


*

*& Form WRITE_MSG

*&----


*

  • text

*----


*

  • -->P_MESGID text *

  • -->P_NUM text *

  • -->P_P1 text *

  • -->P_P2 text *

  • -->P_P3 text *

  • -->P_P4 text *

*----


*

FORM WRITE_MSG USING VALUE(ABG) VALUE(NUM)

VALUE(P1) VALUE(P2) VALUE(P3) VALUE(P4).

DATA LN(250) TYPE C.

SELECT SINGLE * FROM T100 WHERE SPRSL = SY-LANGU

AND ARBGB = ABG

AND MSGNR = NUM.

IF SY-SUBRC = 0.

  • message exists

LN = T100-TEXT.

REPLACE '&' WITH P1 INTO LN. CONDENSE LN.

REPLACE '&' WITH P2 INTO LN. CONDENSE LN.

REPLACE '&' WITH P3 INTO LN. CONDENSE LN.

REPLACE '&' WITH P4 INTO LN. CONDENSE LN.

WRITE LN(120).

ELSE.

  • message not found, write info message

LN = 'Die Nachricht & Nummer & Sprache & ist nicht gepflegt'.

REPLACE '&' WITH ABG INTO LN. CONDENSE LN.

REPLACE '&' WITH NUM INTO LN. CONDENSE LN.

REPLACE '&' WITH SY-LANGU INTO LN. CONDENSE LN.

WRITE LN(120).

ENDIF.

ENDFORM. " WRITE_MSG

Message was edited by: Alexandre Nogueira

Read only

0 Likes
1,178

hi, this report won't start - although i disabled unicode-checks i get errors unicode ability...

i just set up a report and activated... the report won't run...

matthias

Read only

christian_wohlfahrt
Active Contributor
0 Likes
1,179

Hi Matthias!

With this <a href="http://www.dalestech.com/Media/files/Enterprise/dde/dd_enterprise_1.3.1.zip">tool</a> you can download even dynpros and included DDIC objects (as list of fields with definition, like display in SE11).

Regards,

Christian