Video Entrevista con Andre Labahn
Si les gustan los Lenguajes Script y SAP no pueden perderse esta entrevista -;)
Saludos,
Blag.
Si les gustan los Lenguajes Script y SAP no pueden perderse esta entrevista -;)
Saludos,
Blag.
REPORT Z_TEST_RUNTIME.
DATA: T1 TYPE I,
T2 TYPE I,
T TYPE P DECIMALS 2,
N TYPE I VALUE 1000.
DATA: NUM TYPE I.
NUM = 10.
T = 0.
DO N TIMES.
GET RUN TIME FIELD T1.
*—–Inicio código a validar—–*
WHILE NUM GT 0.
WRITE:/ NUM.
NUM = NUM - 1.
ENDWHILE.
*—–Fín código a validar—–*
GET RUN TIME FIELD T2.
T2 = T2 - T1.
T = T + T2 / N.
ENDDO.
SKIP 1.
WRITE:/ ‘Tiempo de Ejecución: ‘, T, ‘microsegundos’.
El resultado en mi sistema…
10
9
8
7
6
5
4
3
2
1
Tiempo de Ejecución: 0.17 microsegundos
Saludos,
Blag.
REPORT Z_PROGRESS_CLOCK.
DATA: A LIKE SY-UCOMM.
DO 100 TIMES.
DO 300 TIMES.
GET TIME.
ENDDO.
A(3) = SY-INDEX.A+3 = ‘%’.
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
PERCENTAGE = SY-INDEX
TEXT = A.
ENDDO.
Saludos,
Blag.
**************************************************************
* Programa : Z_PROGRAMS_DOWNLOAD. *
* Módulo : BC - Basis. *
* Consultor ABAP : Alvaro Tejada Galindo. *
* February 14, 2006 12:33:22 PM *
**************************************************************
REPORT Z_DUMMY_ATG NO STANDARD PAGE HEADING.
*=============================================================
* VARIABLES
*=============================================================
DATA: FULLNAME(30) TYPE C,
ONE LIKE PCFILE-DRIVE,
TWO LIKE PCFILE-PATH,
FILEPATH(128) TYPE C.
DATA: APP_NAME TYPE STRING,
DDTEXT_NAME TYPE STRING,
DUMMY TYPE STRING,
INCLUDE_NAME TYPE STRING.
*=============================================================
* TABLAS INTERNAS
*=============================================================
DATA: BEGIN OF SOURCE_TABLE OCCURS 0,
LINEA(150) TYPE C.
DATA: END OF SOURCE_TABLE.
DATA: BEGIN OF INCLUDE_TABLE OCCURS 0,
LINEA(150) TYPE C.
DATA: END OF INCLUDE_TABLE.
DATA: BEGIN OF DYNPRO_TABLE OCCURS 0,
LINEA(250) TYPE C.
DATA: END OF DYNPRO_TABLE.
DATA: BEGIN OF T_TRDIR OCCURS 0,
NAME LIKE TRDIR-NAME,
END OF T_TRDIR.
DATA: BEGIN OF T_LOG OCCURS 0,
ERROR TYPE STRING,
END OF T_LOG.
DATA: DATA_DDTEXT TYPE STANDARD TABLE OF TEXTPOOL
WITH HEADER LINE.
*=============================================================
* SELECTION-SCREEN
*=============================================================
SELECTION-SCREEN BEGIN OF BLOCK TEST WITH FRAME.
PARAMETERS:
PRGNAME LIKE TRDIR-NAME,
LISTNAME LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK TEST.
*=============================================================
* AT SELECTION-SCREEN
*=============================================================
AT SELECTION-SCREEN ON VALUE-REQUEST FOR LISTNAME.
PERFORM GET_FILENAME CHANGING LISTNAME.
*=============================================================
* START-OF-SELECTION
*=============================================================
START-OF-SELECTION.
PERFORM LOAD_DATA.
IF NOT T_LOG[] IS INITIAL.
WRITE: ‘Se encontraron los siguientes errores: ‘.
ENDIF.
ULINE.
SKIP 1.
LOOP AT T_LOG.
WRITE:/ T_LOG-ERROR.
ENDLOOP.
*———————————————————–*
* FORM GET_FILENAME *
*———————————————————–*
FORM GET_FILENAME CHANGING LISTNAME.
CALL FUNCTION ‘WS_FILENAME_GET’
EXPORTING
DEF_FILENAME = LISTNAME
DEF_PATH = ‘C:\downloads\lista’
MASK = ‘,*.*,*.*. ‘
MODE = ‘S’
TITLE = ‘Guardar en’
IMPORTING
FILENAME = LISTNAME
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
ENDFORM. “GET_FILENAME
*———————————————————–*
* FORM LOAD_DATA *
*———————————————————–*
FORM LOAD_DATA.
DATA: W_FILE LIKE PCFILE-PATH.
W_FILE = LISTNAME.
CALL FUNCTION ‘PC_SPLIT_COMPLETE_FILENAME’
EXPORTING
COMPLETE_FILENAME = W_FILE
IMPORTING
DRIVE = ONE
PATH = TWO
EXCEPTIONS
INVALID_DRIVE = 1
INVALID_EXTENSION = 2
INVALID_NAME = 3
INVALID_PATH = 4
OTHERS = 5.
CONCATENATE ONE ‘:’ TWO INTO FILEPATH.
CONCATENATE PRGNAME ‘%’ INTO FULLNAME.
SELECT NAME
INTO TABLE T_TRDIR
FROM TRDIR
WHERE NAME LIKE FULLNAME.
IF SY-SUBRC EQ 0.
PERFORM FILL_LIST.
PERFORM DOWNLOAD_APPS.
ENDIF.
ENDFORM. “LOAD_DATA
*———————————————————–*
* FORM FILL_LIST *
*———————————————————–*
FORM FILL_LIST.
CALL FUNCTION ‘WS_DOWNLOAD’
EXPORTING
FILENAME = FILEPATH
FILETYPE = ‘ASC’
TABLES
DATA_TAB = T_TRDIR
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 02
INVALID_FILESIZE = 03
INVALID_TABLE_WIDTH = 04
INVALID_TYPE = 05
NO_BATCH = 06
UNKNOWN_ERROR = 07.
ENDFORM. “FILL_LIST
*———————————————————–*
* FORM FILL_LIST *
*———————————————————–*
FORM FILL_LIST_INCLUDE.
CONCATENATE FILEPATH ‘Includes.txt’ INTO LISTNAME.
CALL FUNCTION ‘WS_DOWNLOAD’
EXPORTING
FILENAME = LISTNAME
FILETYPE = ‘ASC’
MODE = ‘A’
TABLES
DATA_TAB = INCLUDE_TABLE
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 02
INVALID_FILESIZE = 03
INVALID_TABLE_WIDTH = 04
INVALID_TYPE = 05
NO_BATCH = 06
UNKNOWN_ERROR = 07.
ENDFORM. “FILL_LIST_INCLUDE
*&———————————————————-*
*& Form DOWNLOAD_APPS *
*&———————————————————-*
FORM DOWNLOAD_APPS.
LOOP AT T_TRDIR.
CLEAR: APP_NAME, INCLUDE_NAME.
REFRESH: SOURCE_TABLE.
CLEAR: SOURCE_TABLE.
READ REPORT T_TRDIR-NAME INTO SOURCE_TABLE.
READ TEXTPOOL T_TRDIR-NAME INTO DATA_DDTEXT LANGUAGE SY-LANGU.
CONCATENATE FILEPATH T_TRDIR-NAME ‘.abp’ INTO APP_NAME.
CONCATENATE FILEPATH T_TRDIR-NAME ‘_DDTEXT.txt’
INTO DDTEXT_NAME.
PERFORM DOWNLOAD_FORM USING APP_NAME.
PERFORM DOWNLOAD_DDTEXT USING DDTEXT_NAME.
LOOP AT SOURCE_TABLE.
SEARCH SOURCE_TABLE-LINEA FOR ‘INCLUDE’.
IF SY-SUBRC EQ 0.
IF SOURCE_TABLE-LINEA+0(8) NE ‘INCLUDE’.
CONTINUE.
ENDIF.
CLEAR INCLUDE_NAME.
SPLIT SOURCE_TABLE-LINEA AT SPACE
INTO DUMMY INCLUDE_NAME.
SPLIT INCLUDE_NAME AT ‘.’
INTO INCLUDE_NAME DUMMY.
REFRESH: SOURCE_TABLE.
CLEAR: SOURCE_TABLE.
MOVE INCLUDE_NAME TO INCLUDE_TABLE.
READ TABLE INCLUDE_TABLE WITH KEY LINEA = INCLUDE_TABLE.
IF SY-SUBRC NE 0.
APPEND INCLUDE_TABLE.
ENDIF.
READ REPORT INCLUDE_TABLE INTO SOURCE_TABLE.
IF SY-SUBRC EQ 0.
CONCATENATE FILEPATH INCLUDE_NAME ‘.abp’
INTO INCLUDE_NAME.
PERFORM DOWNLOAD_FORM USING INCLUDE_NAME.
PERFORM FILL_LIST_INCLUDE.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. “DOWNLOAD_APPS
*———————————————————–*
* FORM DOWNLOAD_FORM *
*———————————————————–*
FORM DOWNLOAD_FORM USING APP_NAME.
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
FILENAME = APP_NAME
FILETYPE = ‘ASC’
TABLES
DATA_TAB = SOURCE_TABLE
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
FILE_NOT_FOUND = 19
OTHERS = 22.
IF SY-SUBRC NE 0.
T_LOG-ERROR = APP_NAME.
APPEND T_LOG.
ENDIF.
ENDFORM. “DOWNLOAD_FORM
*———————————————————–*
* FORM DOWNLOAD_DDTEXT *
*———————————————————–*
FORM DOWNLOAD_DDTEXT USING DDTEXT_NAME.
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
FILENAME = DDTEXT_NAME
FILETYPE = ‘ASC’
TABLES
DATA_TAB = DATA_DDTEXT
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
FILE_NOT_FOUND = 19
OTHERS = 22.
IF SY-SUBRC NE 0.
T_LOG-ERROR = DDTEXT_NAME.
APPEND T_LOG.
ENDIF.
ENDFORM. “DOWNLOAD_DDTEXT
Saludos,
Blag.
*&———————————————————–*
*& Form OCURRENCIAS_TEXTO *
*&———————————————————–*
* Encuentra la cantidad de occurencias de un texto *
*————————————————————*
FORM OCURRENCIA_TEXTO USING L_TEXTO CHAR_OCCUR
CHANGING L_OCURRENCIAS.
DATA: L_TEXT TYPE STRING.
L_TEXT = L_TEXTO.
FLAG = ‘X’.
LONG = STRLEN( L_TEXT ).
WHILE FLAG EQ ‘X’.
SEARCH L_TEXT FOR CHAR_OCCUR.
IF SY-SUBRC NE 0.
FLAG = ”.
ELSE.
COUNTER = COUNTER + 1.
POS = SY-FDPOS + 1.
NEW_POS = LONG - POS.
LONG = NEW_POS.
L_TEXT = L_TEXT+POS(NEW_POS).
ENDIF.
ENDWHILE.
L_OCURRENCIAS = COUNTER.
ENDFORM. “OCURRENCIA_TEXTO
Saludos,
Blag.
REPORT Z_DECIMAL_TO_ROMAN.
DATA: BEGIN OF T_ROMAN_TABLE OCCURS 0,
KEY TYPE I,
VALUE TYPE STRING,
END OF T_ROMAN_TABLE.
DATA: RESULTADO TYPE STRING.
SELECTION-SCREEN BEGIN OF BLOCK TEST.
PARAMETERS:
DEC_NUM TYPE I.
SELECTION-SCREEN END OF BLOCK TEST.
T_ROMAN_TABLE-KEY = 1000.
T_ROMAN_TABLE-VALUE = ‘M’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 900.
T_ROMAN_TABLE-VALUE = ‘CM’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 500.
T_ROMAN_TABLE-VALUE = ‘D’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 400.
T_ROMAN_TABLE-VALUE = ‘CD’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 100.
T_ROMAN_TABLE-VALUE = ‘C’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 90.
T_ROMAN_TABLE-VALUE = ‘XC’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 50.
T_ROMAN_TABLE-VALUE = ‘L’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 40.
T_ROMAN_TABLE-VALUE = ‘XL’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 10.
T_ROMAN_TABLE-VALUE = ‘X’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 9.
T_ROMAN_TABLE-VALUE = ‘IX’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 5.
T_ROMAN_TABLE-VALUE = ‘V’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 4.
T_ROMAN_TABLE-VALUE = ‘IV’.
APPEND T_ROMAN_TABLE.
T_ROMAN_TABLE-KEY = 1.
T_ROMAN_TABLE-VALUE = ‘I’.
APPEND T_ROMAN_TABLE.
WHILE DEC_NUM GT 0.
LOOP AT T_ROMAN_TABLE.
IF DEC_NUM GE T_ROMAN_TABLE-KEY.
CONCATENATE RESULTADO T_ROMAN_TABLE-VALUE INTO RESULTADO.
DEC_NUM = DEC_NUM - T_ROMAN_TABLE-KEY.
EXIT.
ENDIF.
ENDLOOP.
ENDWHILE.
WRITE:/ ‘El número en Romanos es: ‘, RESULTADO.
Saludos,
Blag.
REPORT Z_ATG_DUMMY.
DATA: BEGIN OF PSKEY OCCURS 1.
INCLUDE STRUCTURE PSKEY.
DATA: END OF PSKEY.
DATA: INFOTYPE_TEXT LIKE HRWPC_S_INFOTYPE_TEXT
OCCURS 0 WITH HEADER LINE.
PSKEY-PERNR = ‘00000003′.
PSKEY-INFTY = ‘0001′.
PSKEY-BEGDA = ‘20050201′.
PSKEY-ENDDA = ‘99991231′.
CALL FUNCTION ‘HRWPC_RFC_IT0XXX_TEXT_GET’
EXPORTING
PSKEY = PSKEY
TABLES
INFOTYPE_TEXT = INFOTYPE_TEXT.
LOOP AT INFOTYPE_TEXT.
WRITE:/ INFOTYPE_TEXT-TEXTLINE.
ENDLOOP.
Saludos,
Blag.
*”———————————————————-
*”*”Interfase local
*” IMPORTING
*” REFERENCE(FILENAME) TYPE STRING
*”———————————————————-
SELECT RQIDENT
INTO (T_TSP01-RQIDENT)
FROM TSP01
WHERE RQOWNER EQ SY-UNAME
AND RQCLIENT EQ SY-MANDT.
APPEND T_TSP01.
ENDSELECT.
SORT T_TSP01 DESCENDING.
CALL FUNCTION ‘CONVERT_OTFSPOOLJOB_2_PDF’
EXPORTING
SRC_SPOOLID = T_TSP01-RQIDENT
NO_DIALOG = ”
IMPORTING
PDF_BYTECOUNT = NUMBYTES
PDF_SPOOLID = PDFSPOOLID
BTC_JOBNAME = JOBNAME
BTC_JOBCOUNT = JOBCOUNT
TABLES
PDF = PDF
EXCEPTIONS
ERR_NO_OTF_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DSTDEVICE = 5
USER_CANCELLED = 6
ERR_SPOOLERROR = 7
ERR_TEMSEERROR = 8
ERR_BTCJOB_OPEN_FAILED = 9
ERR_BTCJOB_SUBMIT_FAILED = 10
ERR_BTCJOB_CLOSE_FAILED = 11
OTHERS = 12.
IF SY-SUBRC EQ 0.
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
BIN_FILESIZE = NUMBYTES
FILENAME = FILENAME
FILETYPE = ‘BIN’
TABLES
DATA_TAB = PDF
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6.
IF SY-SUBRC EQ 0.
DELETE FROM TSP01 WHERE RQIDENT EQ T_TSP01-RQIDENT.
ENDIF.
ENDIF.
ENDFUNCTION.
Saludos,
Blag.
REPORT ZDECIMAL_A_BINARIO.
DATA: SUMA TYPE I,
EXPONENTE TYPE I,
DIGITO TYPE I,
SUMA_TEXT(50) TYPE C.
SELECTION-SCREEN BEGIN OF BLOCK DEC_TO_BIN WITH FRAME.
PARAMETERS:
P_NUMERO TYPE I.
SELECTION-SCREEN END OF BLOCK DEC_TO_BIN.
START-OF-SELECTION.
SUMA = 0.
EXPONENTE = 1.
CATCH SYSTEM-EXCEPTIONS ARITHMETIC_ERRORS = 5.
WHILE P_NUMERO GT 0.
DIGITO = P_NUMERO MOD 2.
P_NUMERO = P_NUMERO DIV 2.
SUMA = SUMA + DIGITO * EXPONENTE.
EXPONENTE = EXPONENTE * 10.
ENDWHILE.
ENDCATCH.
IF SY-SUBRC = 5.
WRITE / ‘Número demasiado grande!’.
ELSE.
SUMA_TEXT = SUMA.
REPLACE ‘.’ WITH SPACE INTO SUMA_TEXT.
REPLACE ‘,’ WITH SPACE INTO SUMA_TEXT.
CONDENSE SUMA_TEXT NO-GAPS.
WRITE: ‘El numero binario es: ‘, SUMA_TEXT.
ENDIF.
Saludos,
Blag.