Documente Academic
Documente Profesional
Documente Cultură
JordiCalopaBosch
Revisin151006
Ejemplos Abap Jordi Calopa Bosch
ndice
1. Introduccin....................................................................................................................................3
2. El lenguaje Abap.............................................................................................................................4
2.1 Parte DECLARATIVA del programa.....................................................................................4
2.2 Parte OPERATIVA del programa ........................................................................................ 4
2.3 Operadores Relacionales....................................................................................................... 6
2.4 Campos del Sistema...............................................................................................................6
2.5 Tipos de Datos Predefinidos..................................................................................................8
2.6 Tablas Internas....................................................................................................................... 9
3. Ejemplos....................................................................................................................................... 12
3.1 Tratamiento de Strings.........................................................................................................12
3.2 Clculos............................................................................................................................... 15
3.3 Tablas de Base de Datos (SQL Open)..................................................................................17
3.4 Varios................................................................................................................................... 19
3.5 Programas ........................................................................................................................... 27
2 / 51
Ejemplos Abap Jordi Calopa Bosch
1.Introduccin
EllenguajeABAP,cuyassiglassignificanAdvancedBusinessApplicationProgramming,esunlenguajede
programacinimplementadonicamentedentrodelentornodeSAP;Esdecir,quenodisponedecompilador
independiente, sino que los programas se ejecutan mediante un runtime incorporado al entorno de
desarrollodeSAP.
ABAPesunlenguajedeprogramacinqueamalgamacaractersticasdeotrosmsantiguoscomoCOBOL,
RPG y Assembler. En los entornos host fue desarrollado en lenguaje assembler de dichos entornos y
funcionaba como un subprograma del monitor de teleproceso CICS. Es un lenguaje que dispone de los
elementosnecesariosparalaprogramacinestructuradayesespecialmenteprcticoparaprogramacinpor
refinamientossucesivos.
3 / 51
Ejemplos Abap Jordi Calopa Bosch
2.EllenguajeAbap
Adentrndonosenlaestructuradellenguaje,cabedestacarqueunprogramaABAP,constadedosgrandes
bloques:unaparteDECLARATIVA,enlaquepodemosdefinirtodaslastablas,estructuras,vistas,variables,
constantes,parmetrosyopcionesdeseleccin,entreotros,yunasegundaparteOPERATIVAenlaquese
codificanlassentenciasquemarcarnelflujodelproceso.
2.1ParteDECLARATIVAdelprograma
CONSTANTS Definicindeconstantes
DATA Definicindevariables:camposinternos,strings,tablasyreasdetrabajo
INCLUDE Includedeestructurasotipos
PARAMETERS Definicindecamposinternosinicializablesporelusuario
PROGRAM Iniciodeprograma
REPORT Iniciodeprograma(EquivalenteaPROGRAM)
SELECTOPTIONS Definicindeloscriteriosdeseleccininicializablesporelusuario
STATICS Definicindedatosestticosparasubrutinas
TABLES DefinicindetablasdeSAP(tablasdeBD,estructurasetc)
TYPES Definicindetipos
2.2ParteOPERATIVAdelprograma
Eventos
INITIALIZATION Antesdelasalidadelapantalladeseleccin(soloOnLine)
ATSELECTIONSCREENDespusdelaentradadedatosdelapantalladeseleccin
STARTOFSELECTION Alprincipiodelprograma(parteoperativa)
GET DespusdeleerunregistrovaBDlgica
ENDOFSELECTION Alfinaldelaseleccin/programa
TOPOFPAGE Alprincipiodeunanuevapgina
ENDOFPAGE Despusdelasalidadelaltimalneadelapgina
ATLINESELECTION Despusdeseleccionarunalnea
ATPfn Despusdepulsarunatecladefuncin
ATUSERCOMMAND Despusdelaentradadedatosenelcampodecomandos
SQLOpen(TratamientodetablasdeBD)
COMMITWORK FinalizaLUWyRealizaloscambiosenlaBD
DELETE BorradoderegistrosdetablasdeBD
FETCH LeeregistrodetabladeBD(OPEN/CLOSECURSOR)
INSERT InsercinderegistrosentablasdeBD
MODIFY SiexisteUPDATE;sinoexisteINSERT
ROLLBACK DeshaceractualizacionesdeBDhastaelltimoCOMMIT
SELECTENDSELECT SeleccinderegistrosdetablasdeBD
SELECTSINGLE LeeregistrodetabladeBD
UPDATE ActualizaunregistrodeunatabladeBD
4 / 51
Ejemplos Abap Jordi Calopa Bosch
Tratamientodeficherossecuenciales(Linux)
CLOSEDATASET Cierredeunficherosecuencial
OPENDATASET Aperturadeunficherosecuencial
READDATASET Lecturadeunficherosecuencial
TRANSFER Grabacinderegistroenficherosecuencial
Tratamientodeficherosinternos
XTRACT Grabacindeunregistroenunficherointerno
FIELDGROUPS Definicindegruposdecampos
INSERT Asociarcamposaundeterminadogrupo
LOOPENDLOOP Loopdeunficherointerno
SORT Ordenarunficherointerno
Tratamientodetablasdinmicasenmemoriaprincipal
APPEND Aadirentradaenunatablainterna
COLLECT Aadirentradaenunatablainterna(Sinoexiste,laaade)
CONTINUE ReiniciodelLOOP
DELETE Deletederegistrosdetablasinternas
DESCRIBETABLE Devuelveinformacindeunatablainterna
EXIT Salirdeloopsysubrutinas
LOOPATENDLOOP Loopdeunatablainterna
MODIFY Modificacinderegistrosdetablasinternas
READ LecturadetablasinternasydeBD
REFRESH Limpiar(vaciar)unatablainterna
SORT Ordenarunatablainterna
Operacionesaritmticas
ADD Suma
COMPUTE Calcular
DIVIDE Divisin
MULTIPLY Multiplicacin
SUBTRACT Resta
Tratamientodestrings
CONDENSE Eliminaespaciosenblancodeunacadenadecaracteres
CONCATENATE Concatenavariosstringsovariables(enunasola)
OVERLAY Enmascaraunacadenaconotracadenadecaracteres
REPLACE Remplazaunstringporotro(dentrodeunavariable)
SEARCH Bsquedadecaracteres
SHIFT Mover(shiftar)elcontenidodeuncampo
SPLIT Separaunstringovariable(envarias)
TRANSLATE ConversinMaysculas/minsculas
5 / 51
Ejemplos Abap Jordi Calopa Bosch
2.3OperadoresRelacionales
EQ,= Igual
NE,>< NoIgual
GT,> Mayorque
LT,< Menorque
GE,>=,=> MayoroIgual
LE,<=,=< MenoroIgual
CO ComparacindeStrings:ContainsOnly
CN ComparacindeStrings:ContainsNOTOnly
CA ComparacindeStrings:ContainsAny
NA ComparacindeStrings:ContainsNOTAny
CS ComparacindeStrings:ContainsString
NS ComparacindeStrings:ContainsNOString
CP ComparacindeStrings:ContainsPattern
NP ComparacindeStrings:ContainsNOPattern
O Ciertosic1contiene1enlasposicionesindicadasporc2
Z Ciertosic1contiene0enlasposicionesindicadasporc2
M Ciertosic1contiene10enalgunadelasposicionesindicadasporc2
BETWEEN...AND Compruebasielvalorestdentrodeunrango
ISINITIAL Compruebasielvaloreselinicialdelcampo
IN Compruebasielvalorestdentrodelrangodelaselectoptions
*EjemplodeutilizacindeloperadorCO
programzjcbxxx.
data:var1(10)typecvalue'A1B2C3D4E5',
var3(10)typecvalue'ABCABCABCA'.
STARTOFSELECTION.
ifvar1CO'ABC'.ImprimeNO
write:/01'SI'.
else.
write:/01'NO'.
endif.
ifvar3CO'ABC'.ImprimeSI
write:/01'SI'.
else.
write:/01'NO'.
endif.
2.4CamposdelSistema
Seguidamente se detallan algunas variables del sistema y los contenidos que son accesibles desde un
programaABAP.
6 / 51
Ejemplos Abap Jordi Calopa Bosch
SYABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ
SYBATCH Informasilaejecucinesenbatch
SYCPROG Nombredelprogramaprincipal
SYCUCOL Columnaseleccionada
SYCUROW Filaseleccionada
SYDATLO Fechadelda(AAAAMMDD)local
SYDATUM Fechadelda(AAAAMMDD)delservidor
SYDBCNT cantidadderegistrosseleccionados(select)
SYDBSYS NombredelSistemadegestindeBasedeDatos
SYFDPOS Posicinencontradaenelstring(despusdelaconsulta)
SYHOST Nombredelhost
SYINDEX Cantidaddepasesdentrodeunloop(do)
SYLANGU Lenguajepordefecto
SYLINSZ Tamaodelalneadesalida(write)
SYLISEL Contenidodelalneaseleccionada
SYLSIND Niveldeentradasenlistasinteractivas
SYMANDT Mandante
SYMSGID Identificadordemensajes
SYOPSYS SistemaOperativo
SYPAGNO Nmerodepgina
SYREPID Nombredelprograma(Inexistenteennuevasversiones)
SYSAPRL ReleasedeSAP
SYSCOLS Cantidaddecolumnasenpantalla
SYSROWS Cantidaddefilasenpantalla
SYSTACO Columnainicialdelapantallaencurso
SYSTARO Filainicialdelapantallaencurso
SYSUBRC Cdigoderetorno
SYSYSID Identificacindelsistema(xxx,yyy..)
SYTABIX Indicedeunatablainterna
SYTCODE NombredelaTransaccin
SYTIMLO Horalocal(HHMMSS)
SYTITLE TtulodelListado
SYTZONE Zonahorariadelservidor
SYUCOMM CampoOKcode
SYULINE
SYUNAME Nombredeusuario
SYUZEIT Horadelservidor(HHMMSS)
SYVLINE |
SYWAERS Moneda(PTS,DM.)
SYZONLO Zonahorarialocal
*Ejemplo:ListaelcontenidodetodoslosSystemFields
programyxxxxxxx.
tables:dd03l.
data:nomcamp(8)typecvalue'SY',
valcamp(50)typec.
startofselection.
select*fromdd03lwheretabnameeq'SYST'.
nomcamp+3=dd03lfieldname.
write(nomcamp)tovalcamp.
write:/01nomcampcolorcol_key,
valcampcolorcol_normal.
7 / 51
Ejemplos Abap Jordi Calopa Bosch
endselect.
2.5TiposdeDatosPredefinidos
5.5.1Numricos
PEmpaquetado
IEntero
FComaflotante
5.5.2NoNumricos
CTexto
DFechaYYYYMMDD
THoraHHMMSS
XHexadecimal
5.5.3Especiales
NAlfanumricoquesoloadmiteNmeros
5.5.4Ejemplos
*Ejemplodeutilizacindecamposnumricos
programzxxxxxx.
data:var01typepvalue99,"Packed
var02typei,"Integer
var03typef,"Float
var04(11)typen."NumricoSINSIGNO
startofselection.
write:/01'PackedIntegerFlo'nogap,
'atNumeric'.
write:/01'....+....1....+.....+....1.....+....1.'nogap,
'...+....2......+....1.'.
formatintensifiedoff.
do16times.
var04=var03=var02=var01.
write:/01var01colorcol_normal,
var02colorcol_normal,
var03colorcol_normal,
var04colorcol_normal.
var01=var011.
enddo.
*EjemplodeutilizacindecamposAlfanumricos
8 / 51
Ejemplos Abap Jordi Calopa Bosch
programZJCBxxx.
data:var1(15)typecvalue'123456789ABCDEF'.
startofselection.
write:/01var1."Imprime123456789ABCDEF
write:/01var1+09(05)."ImprimeABCDEFvariable+offset(longitud)
2.6TablasInternas
Una tabla interna esun conjuntodedatos,en forma de matriz, que se graban en memoria interna (en
principioRAM)ysobreloscualespodemosejecutarpotentessentencias,queelpropiolenguajeAbapnos
facilita.Podramosafirmarquesetratadeunficherotemporalenmemoriainterna,tratablemedianteAcceso
DirectooSecuencial.
***DEFINICION***
Para definir tablas interna utilizaremos la instruccin genrica de definicin de datos, con el formato
especficoparatablas:
Ejemplos
data:beginofmitabla1occursN,(DondeNeslacantidadderegistrosprevistos)
campo1(10)typeC,
campo2typeP,
endofmitabla1.
data:beginofmitabla2occursN.
includestructuremitabla1.
data:endofmitabla2.
En este punto realizaremos algunas observaciones al respecto. En primer lugar que la cantidad (N) de
registrosesaproximadaporquelareservadelespaciodememoriaserealizadeformadinmica,tomando
progresivamentetantoespaciocomoseanecesario.
***CARGADEDATOSENTABLAS***
Existen varias formas de cargar datos en una tabla interna; la primera y ms elemental consiste en ir
aadiendodatosporlacola,comoharamosenunficherodetiposecuencial,mediantelasentenciaAPPEND.
NtesequeconlautilizacindelasentenciaAPPENDesposiblecargarregistrosduplicados.
Ejemplo
move'ABCDEFGHIJ'tomitabla1campo1.
move1000tomitabla1campo2.
appendmitabla1.(Aadimosregistro)
move'ABCDEFGHIJ'tomitabla1campo1.
move1000tomitabla1campo2.
appendmitabla1.(Aadimosotroregistro)
9 / 51
Ejemplos Abap Jordi Calopa Bosch
OtraformadecargardatosenunatablaconsisteenutilizarlasentenciaCOLLECT,lacualadiferenciade
APPEND,noaaderegistrosduplicadossinoquesumaelcontenidodeloscamposnumricos,cuandoel
contenido de los alfanumricos es igual. Lgicamente si el contenido de los campos alfanumricos es
diferente,entoncesaadelosregistrosaligualquelohacelasentenciaAPPEND.
Ejemplo
move'ABCDEFGHIJ'tomitabla1campo1.
move1000tomitabla1campo2.
collectmitabla1.(Aadimosregistro)
move'ABCDEFGHIJ'tomitabla1campo1.
move1000tomitabla1campo2.
collectmitabla1.(Sumamosalprimerregistro)
Porltimo,cuandodostablasinternastienenelmismoformato,esposiblecopiartodoelcontenidodeuna
sobreotra.
Ejemplo
tabla2[]=tabla1[]. (CopiatodalaTabla1sobrelaTabla2,
borrandoelanteriorcontenidodeTabla2)
***CALSIFICARDATOSENTABLASINTERNAS***
SORTOrdenarunatablainterna
***PROCESARELCONTENIDODEUNATABLA***
CONTINUE ReiniciodelLOOP
DELETE Deletederegistrosdetablasinternas
DESCRIBETABLE Devuelveinformacindeunatablainterna
EXIT Salirdeloopsysubrutinas
LOOPATENDLOOP Loopdeunatablainterna
MODIFY Modificacindergistrosdetablasinternas
READ LecturadetablasinternasydeBD
***BORRARELCONTENIDODEUNATABLA***
REFRESHLimpiar(vaciar)unatablainterna
10 / 51
Ejemplos Abap Jordi Calopa Bosch
Programadeejemplo:
programzjcbxxx.
****DefinicindelaTabladinmicaenmemoriaInterna***
data:beginofTabla1occurs30,
campo1(3)typeN,
campo2(7)typeC,
endofTabla1.
startofselection.
****Cargadetresregistrosenlatablainterna***
Tabla1Campo1='001'.
Tabla1Campo2='ABCDEFG'.
appendTabla1."Aadimosprimerregistro
*
Tabla1Campo1='002'.
Tabla1Campo2='HIJKLMN'.
appendTabla1."Aadimossegundoregistro
*
Tabla1Campo1='003'.
Tabla1Campo2='NOPQRST'.
appendTabla1."Aadimostercerregistro
endofselection.
****Bucleparalistarelcontenidodelatablainterna***
loopattabla1.
write:/01Tabla1Campo1,
Tabla1Campo2.
endloop.
==================================
elresultadoimpresoeselsiguiente:
001ABCDEFG
002HIJKLMN
003NOPQRST
11 / 51
Ejemplos Abap Jordi Calopa Bosch
3.Ejemplos
3.1TratamientodeStrings
*BUSCARUNSTRING
reportyxxxxxxx.
data:a(10)typecvalue'aeioujklmn'. 'campoenelcualsebusca
data:b(01)typecvalue'j'. 'valorabuscar
startofselection.
searchaforb.
write:sysubrc,syfdpos. 'syfdposcontienevalordeloffset
dondesehaencontradoelstring
buscado(ennuestroejemplo,el5)
*CONDENSARELCONTENIDODEUNAESTRUCTURA.
reportyxxxxxxx.
data:beginofnombre_struc,
a(10),b(7),c(12),d(10),e(14),
endofnombre_struc.
startofselection.
nombre_struca='uno'.
nombre_strucb='dos'.
nombre_strucc='tres'.
nombre_strucd='cuatro'.
nombre_struce='cinco'.
condensenombre_struc. 'concatena
write:/01nombre_struc. 'imprimeunodostrescuatrocinco
*CONVERTIRMAYUSCULAS/MINUSCULAS
programzxxxxxx.
data:campotypestringvalue'abcd'.
startofselection.
write:/01Campo.
performMayMinusingCAMPO'U'. 'ConvertiraMaysculas
write:/01Campo.
performMayMinusingCAMPO'L'. 'ConvertiraMinsculas
write:/01Campo.
*
formMayMinusingstringtipo.
iftipo='U'.
translatestringtouppercase.
else.
translatestringtolowercase.
12 / 51
Ejemplos Abap Jordi Calopa Bosch
endif.
endform.
*CONVERTIRUNTIPOPACKEDCONDECIMALESACHARACTER
reportyxxxxxxx.
data:campo1typepdecimals2value'123,45',
campo2(10)typec.
writecampo1tocampo2nosign. 'convertimostipo
translatecampo2using'0'. 'cambiamosblancosporceros
write:/campo1,campo2."
*Alobjetodefacilitarlautilizacindedecimales,esposiblerealizartodoslosclculosencomaflotantey
posteriormenteconvertirelcampoalformatorequerido.
reportyxxxxxxx.
data:c1(8)typec.
data:a(8)typecvalue'3'.
data:b(10)typepdecimals2.
data:ftypef.
f=100/a.
writefexponent0decimals2toc1. '<conversinalformato
movec1tob. '<requerido.
write:/a,f,b,c1."
*JUSTIFICARALADERECHAUNCAMPODETIPOCHARACTER
programysux0800.
parameters:inp(10)typec.
data:out(10)typec.
startofselection.
writeinptooutrightjustified.
write:/01inp,
/01out.
Nota:EstasentenciaactacorrectamentesiloscamposhansidodefinidoscomoTYPEC,peronofunciona
correctamentecuandosedefinencomoLIKEdeuncampoCHAR.Paraeste ltimocasovaselasentencia
SHIFT.
*OBTENERLALONGITUDDEUNCAMPO
reportyxxxxxxx.
data:campo(15)typecvalue'0123456789',
longitypei.
longi=strlen(campo).
write:/01longi.'Imprimeelvalor10
*QUITARLOSBLANCOSDEUNCAMPOTIPOSTRING.
reportymltest.
data:beginofnombre_struc,
a(10),
endofnombre_struc.
startofselection.
nombre_struca='abc'.
condensenombre_strucnogaps. 'nogapsquitalosblancos
13 / 51
Ejemplos Abap Jordi Calopa Bosch
write:/01nombre_struc. 'imprimeelliteralabc
*ROMPER(SPLIT)ELCONTENIDODEUNAVARIABLE
reportyxxxxxxx.
data:a(40)typecvalue'PRIMEROSEGUNDOTERCEROCUARTOQUINTO',
b(10)typec,
c(20)typec,
d(30)typec.
startofselection.
splitaatspaceintobcd.
write:/01b, 'b=PRIMERO
/01c, 'c=SEGUNDO
/01d. 'd=TERCERO;CUARTO;QUINTO
*SHIFTARELCONTENIDODEUNCAMPO
reportyxxxxxxx.
data:campo(20)typec.
startofselection.
campo='.+.1.+.2'.
do20times.
shiftcampo. 'DesplazastringhacialaIzquierda
write:/01campo.
enddo.
campo='.+.1.+.2'.
do20times.
shiftcamporight. 'DesplazastringhacialaDerecha
write:/01campo.
enddo.
*TRUNCARUNVALOR
reportyxxxxxxx.
data:valor1typefvalue'123.45',
valor2typef.
computevalor2=trunc(valor1).
write:/01valor1, Imprime;1,2.345E+16
valor2. Imprime;1,2.3E+16
*UTILIZAROFFSETS
reportyxxxxxxx.
data:a(10)typecvalue'abcdefghij'.
data:b(10)typec.
data:offsettypeivalue1,
longitypeivalue2.
startofselection.
movea+offset(longi)tob.
write:/01a, 'Imprimeabcdefghij
/01b. 'Imprimebc
14 / 51
Ejemplos Abap Jordi Calopa Bosch
3.2Clculos
*CALCULARLARAIZCUADRADADEUNNUMERO
reportyxxxxxxx.
data:ind2(3)typenvalue100,
raiztypef.
raiz=sqrt(ind2).
write:/'larazcuadradade',ind2,'es',raiz.
*CALCULARELFACTORIALDEUNNMERO
reportyxxxxxxx.
data:factorialtypefvalue1,
numero(02)typenvalue1.
whilenumerolt'51'.
write:/'elfactorialde',
numero,
'es',
factorial.
numero=numero+1.
factorial=factorial*numero.
endwhile.
*CALCULARELLOGARITMONEPERIANO
reportyxxxxxxx."
data:campo1typefvalue1,
campo2typefvalue0,
numero_etypefvalue0.
numero_e=exp(campo1).
write:/01'1elevadoae=',numero_ecolor5.
campo2=log(numero_e)."
write:/01'logaritmoneperianodee=',campo2color5.
*CALCULARELVALORABSOLUTODEUNNUMERO
reportyxxxxxxx.
data:valor1typepvalue'123',
valor2typep.
computevalor2=abs(valor1).
write:/01valor1, 'Imprime123
valor2. 'Imprime123
*CALCULARPOTENCIASDEBASEbase
reportyxxxxxxx.
data:ind1(2)typenvalue0,
15 / 51
Ejemplos Abap Jordi Calopa Bosch
potencia(10)typenvalue1,
base(01)typenvalue2."
whileind1lt'32'.
ind1=ind1+1.
potencia=potencia*base.
write:/'2elevadoa',ind1,'=',potenciacolor7"
endwhile.
*CALCULARLAINTEGRALDEFINIDADELAFUNCINY=2XENELINTERVALODEXDE0A10
reportyxxxxxxx.
data:y(5)typepdecimals2value'0,00',
x(5)typepdecimals2value'0,00',
incremen(5)typepdecimals2value'0,01',
maximo_de_x(5)typepdecimals2value'10,00',
mini_area(7)typepdecimals4value'0,0000',
integral_definida(7)typepdecimals4value'0,0000'.
startofselection.
whilexltmaximo_de_x.
x=x+incremen.
y=x+x.
mini_area=incremen*y.
integral_definida=integral_definida+mini_area.
endwhile.
*CALCULARLOSnTERMINOSDEUNAPROGRESINARITMTICA
reportymltest.
data:n typeivalue0, 'cantidaddeelementos
suma typefvalue0,
w1 typeivalue0.
parameters:a1 typeidefault1, 'primertrmino
an typeidefault9, 'ultimotrmino
increm typeidefault1. 'incremento
startofselection.
w1=a1.
whilew1lean.
w1=w1+increm.
n=n+1.
endwhile."
suma=(n*((a1+an)/2)). 'sumantrminosdeunap.a.
write:/01suma.
*MULTIPLICARSHIFTANDO
programzxxxxxx.
data:numero(8)typenvalue1,
enterotypei.
startofselection.
do7times.
movenumerotoentero.
write:/01entero.
shiftnumerocircular.
Enddo.
16 / 51
Ejemplos Abap Jordi Calopa Bosch
*SENO,COSENOYTANGENTE
formseno_coseno_tangente.
data:ind2(3)typenvalue0,
ind3typefvalue0,
pitypefvalue'3.14159',
senotypefvalue0,
cosenotypefvalue0,
tangentetypefvalue0.
do360times.
ind2=ind2+1.
ind3=(ind2*2*pi)/360. Convertiraradianes
seno=sin(ind3).
coseno=cos(ind3).
tangente=seno/coseno.
write:/ind2,'>',
senocolor1,
cosenocolor2,
tangentecolor3.
enddo.
endform.
3.3TablasdeBasedeDatos(SQLOpen)
EllenguajeAbaptambindisponedepotentessentenciasparaeltratamientodetablas,clasificadasendos
grandesgruposdenominados'SQLNativo'y'SQLOpen'.Elprimero(SQLNativo)eselconjuntodesentencias
detratamientodetablasquedependedelSGBD(SisteadeGestindeBasedeDatos)instaladoyquepuede
variardeunentornoaotro.Elsegundo,denominado'SQLOpen'sonsentenciasstandarddeAbap,queel
propio'interpretador'transcribeallenguajenativo.Esteconjuntoeselmsrecomendable,puestoqueencaso
demigracindelSGBDnoseranecesarioreescribirelcdigofuentedelosprogramas.
*TRATAMIENTODEUNATABLADECLARADAENTIEMPODEEJECUCIN(SINSENTENCIATABLES).
reportyxxxxxxx.
data:nombre(10)typecvalue'T9JCB',
work_area(100).
startofselection.
selectdescr1from(nombre)intowork_area.
write:/01work_area.
endselect."
*SELECCINUTILIZANDOELWILDCARD%
programyxxxxxxx.
tables:t9jcb.
select*fromt9jcb
wheredescr1like'REVIS%'.'LoqueempiezaporREVIS
extractdatos.
endselect.
17 / 51
Ejemplos Abap Jordi Calopa Bosch
*SELECCINUTILIZANDOLOSWILDCARD_Y%.
programysux0800.
tables:ekko.
select*fromekko
whereebelnlike'_4%'.'Loquetenga4enlasegundapos.
write:/01ekkoebeln.
endselect.
*UTILIZANDOLACLUSULAGROUPBY
reportyxxxxxxx.
tables:t9jcb.
data:codiliket9jcbcodigo,
actiliket9jcbactividad.
startofselection."
selectcodigoactividadinto(codi,acti)fromt9jcb
groupbyactividadcodigo.'AgruparyOrdenar
write:/01codi,acti.
endselect.
write:/01sydbcnt.
*SELECCINRPIDASOBREUNATABLAINTERNA(INICIALIZNDOLA)
reportyxxxxxxx.
tables:usr03.
data:beginoft1occurs1000,
bnamelikeusr03bname, 'cdigodeusuario
name1likeusr03name1, 'nombreprimero
endoft1.
startofselection.
selectbnamename1intotablet1fromusr03. 'Refresht1
sortt1.
loopatt1.
write:/01t1bname,
t1name1.
endloop.
*SELECCINRPIDASOBREUNATABLAINTERNA(SININICIALIZAR)
reportyxxxxxxx.
tables:usr03.
data:beginoft1occurs1000,
bnamelikeusr03bname, 'cdigodeusuario
name1likeusr03name1, 'nombreprimero
endoft1.
startofselection.
select*appendingcorrespondingfields 'appendt1
oftablet1fromusr03.
sortt1.
loopatt1.
write:/01t1bname,
t1name1.
endloop.
18 / 51
Ejemplos Abap Jordi Calopa Bosch
*UTILIZARROLLBACK
programyxxxxxxx.
tables:t9jcb.
startofselection.
selectsingleforupdate*fromt9jcbwherecodigoeq'ZZZZZ'.
ifsysubrceq0.
move'primeramodificacin'tot9jcbdescr1.
updatet9jcb.
commitwork.
move'segundamodificacin'tot9jcbdescr1.
updatet9jcb.
rollbackwork. 'Deshacesolamentelasegundamodificacin
endif.
*INSERTARUNREGISTROENUNATABLA
reportyxxxxxxx.
tables:tvarv.
startofselection.
tvarvname='FI_NUEVA_VARIABLE'. 'informamosloscamposclave
tvarvtype='P'.
tvarvnumb='0000'.
insertintotvarvvaluestvarv. 'insertamosregistro
*UTILIZARAVERAGE
reportyxxxxxxx.
data:cantidadtypei, 'cantidad
mediatypepdecimals2, 'Media
tecnicliket9jcbtecnic.
startofselection.
selecttecniccount(*)avg(horasd)
into(tecnic,cantidad,media)
fromt9jcb
wheretecniceqsyuname
groupbytecnic.
endselect.
Endofselection.
write:/tecnic,cantidad,media.
3.4Varios
*ARRANCARUNPROGRAMACONCRETODESDENUESTROPROGRAMAABAP
reportyxxxxxxx.
submitnombre_del_programa.
19 / 51
Ejemplos Abap Jordi Calopa Bosch
*ARRANCARUNLPROGRAMACUYONOMBREESTCONTENIDOENLAVARIABLENOMBRE
reportyxxxxxxx.
data:nombre(8)typecvalue'nombre_de_programa'.
submit(nombre).
*BLOQUEARLAENTRADADEUNCRITERIODESELECCION
.
selectoptions:socfort001bukrs,
cenfort001wwerks.
.
.
initialization.
socsign='i'.
socoption='bt'.
soclow='0200'.
sochigh='0299'.
appendsoc.
censign='i'.
cenoption='bt'.
cenlow='01b1'.
cenhigh='01c1'.
appendcen.
*
loopatscreen.
ifscreenname+00(3)eq'SOC'.
screeninput=0. 'BloqueamoslaentradaSOC
screenintensified=1.
modifyscreen.
endif.
endloop.
*BORRARTODOSLOSVALORESPERSONALESDEUNMATCHCODE
programzjcbxxx.
includeradshmac.
typepools:SHLP.
data:campoTYPEshlp_descr_t.
camposhlpname='ZSAKO1'. NombredelMatchCode
camposhlptype='SH'.
performpersonal_values_del_all(saplsdsd)usingcampo.
*
Nota:tambinpodemosaccederdirectamentealatablaDDSHPVAL50oDDSHPVALUE
*CAMBIARDEPASSWORDTANTASVECESCOMOSEPRECISE
Programyxxxxxxx.
tables:usr02.
startofselection.
*ejecutaresteprogramaantesdecambiarelpassword
selectsingle*fromusr02
wherebnameeqsyuname.
ifsysubrceq0.
20 / 51
Ejemplos Abap Jordi Calopa Bosch
usr02ocod1='00000000'.
usr02bcda1='99991231'.
usr02ocod2='00000000'.
usr02bcda1='99991231'.
usr02ocod3='00000000'.
usr02bcda3='99991231'.
usr02ocod4='00000000'.
usr02bcda4='99991231'.
usr02ocod5='00000000'.
usr02bcda5='99991231'.
usr02trdat=sydatum1.
updateusr02.
endif.
*DETECTARUNAOBISIESTO(Funcinexterna)
FunctionY_BISIESTO.
DATA:ANYTYPEIVALUE0,
ENTEROTYPEP,
RESTOTYPEP.
*
IFPARAM1CO'0123456789'.Validamosenvalordeentrada
MOVEPARAM1TOANY.
ELSE.
PARAM2='E'.E=Error
EXIT.Salidadelafuncin,conerror
ENDIF.
*
RESTO=ANYMOD4.
IFRESTONE0.
PARAM2='N'.N=Nobisiesto
EXIT.
ELSE.
RESTO=ANYMOD100.
IFRESTONE0.
PARAM2='S'.S=Sibisiesto
EXIT.
ELSE.
RESTO=ANYMOD400.
IFRESTO=0.
PARAM2='S'.S=Sibisiesto
ELSE.
PARAM2='N'.N=Nobisiesto
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
*EJECUTARCOMANDOSDELINUX
reportyxxxxxxx
linesize250
nostandardpageheading.
data:beginoft1occurs100,
line(200),
endoft1.
21 / 51
Ejemplos Abap Jordi Calopa Bosch
data:w_comando_unix(250)typec.
parameters:wcom(70)typeclowercaseobligatory.
startofselection.
performejecuta_comando.
performlistar_t1.
endofselection.
*
formejecuta_comando.
concatenatewcom''intow_comando_unixseparatedbyspace.
refresht1.
CALL'SYSTEM'ID'COMMAND'FIELDW_COMANDO_UNIX
ID'TAB'FIELDT1*SYS*.
endform.
*
formlistar_t1.
formatintensifiedon.
formatcolorcol_heading.
uline.
loopatt1.
write:/01syvline,
t1line,
atsylinszsyvline.
endloop.
uline.
endform.
*ENVIARMENSAJESAUNUSUARIO(Conectadoalsistema)
programzxxxxxxx.
data:opcode_send_pop_up(1)typexvalue31,
longitudlikesyindex,
loc_cut_blankstypexvalue1,
wuserlikesyuname.
selectionscreen:beginofblockb1withframetitletext001.
selectionscreen:skip.
parameters:mensaje(128)typeclowercase.
parameters:usuariolikesyunamedefaultsyuname,
mandantelikesymandtdefaultsymandt.
selectionscreen:skip.
selectionscreen:endofblockb1.
*
initialization.
mensaje='escribaaquisumensaje'.
startofselection."
describefieldmensajelengthlongitud.
performfuncion_enviar_mensaje.
*
formfuncion_enviar_mensaje.
CALL'ThUsrInfo'ID'OPCODE'FIELDOPCODE_SEND_POP_UP
ID'CLIENT'FIELDMANDANTE
ID'USR'FIELDUSUARIO
ID'MSG'FIELDMENSAJE
ID'MSG_LEN'FIELDLONGITUD
ID'CUT_BLANKS'FIELDLOC_CUT_BLANKS.
endform.
22 / 51
Ejemplos Abap Jordi Calopa Bosch
*EVITARQUECADUQUELACONSTRASEAPERIODICAMENTE
reportzxxxxxxx.
tables:usr02.
startofselection.
selectsingleforupdate*fromusr02
wherebnameeqsyuname.
ifsysubrceq0.
usr02bcda1='99991231'.
updateusr02.
endif.
*GENERARUNPROGRAMADINAMICAMENTE
programzxxxxxxx.
data:NomProglikesyrepidvalue'ZJCB018'.
data:beginoft1occurs999,
reg(255)typec,
endoft1.
startofselection.
t1reg='**********************************************'.appendt1.
t1reg='****Autor:****'.appendt1.
t1reg='**********************************************'.appendt1.
t1reg='programZJCB018.'.appendt1.
t1reg='startofselection.'.appendt1.
t1reg='write:/01''Programageneradodinmicamente''.'.appendt1.
INSERTREPORTNomProgFROMT1.
*GENERARYBORRARUNATABLADEBD(utilizandoSQLNativo)
execsql.
createtabletabla_work(
campo1char(20)notnull,
primarykey(campo1)
)
endexec.
*
execsql.
droptabletabla_work
endexec.
*GENERARMENUDINAMICAMENTE(ApartirdelasFORMsdelpropioprograma)
programzxxxxxx.
data:beginoft1occurs3000,
reg(255)typec,
endoft1.
data:beginoft2occurs5,
mnu(30)typec,
endoft2.
data:selecclikesytabix,
longitypei.
startofselection.
readreportsyrepidintot1.
loopatt1.
23 / 51
Ejemplos Abap Jordi Calopa Bosch
ift1reg+00(04)='form'.
longi=strlen(t1reg)5.
movet1reg+04(longi)tot2mnu.
appendt2.
endif.
endloop.
CALLFUNCTION'POPUP_WITH_TABLE_DISPLAY'
EXPORTING
ENDPOS_COL=70
ENDPOS_ROW=21
STARTPOS_COL=41
STARTPOS_ROW=3
TITLETEXT='JCBTOOLS'
IMPORTING
CHOISE=selecc
TABLES
VALUETAB=t2
EXCEPTIONS
BREAK_OFF=1
OTHERS=2.
ifsysubrceq0.
performseleccOFsubrutina1subrutina2subrutina3.
endif.
formsubrutina1.
write:/01'UNO'.
endform. "subrutina1
formsubrutina2.
write:/01'DOS'.
endform. "subrutina2
formsubrutina3.
write:/01'TRES'.
endform. "subrutina3
*INSERTARREGISTROSENTABLAINTERNA
Inicializndola
reportyxxxxxxx.
tables:usr03.
data:beginoft1occurs1000,
bnamelikeusr03bname, 'cdigodeusuario
name1likeusr03name1, 'nombreprimero
endoft1.
startofselection.
selectbnamename1intotablet1fromusr03. '=Refresht1
sortt1.
loopatt1.
write:/01t1bname,
t1name1.
endloop.
SINInicializarla
reportyxxxxxxx.
tables:usr03.
data:beginoft1occurs1000,
bnamelikeusr03bname, 'cdigodeusuario
name1likeusr03name1, 'nombreprimero
24 / 51
Ejemplos Abap Jordi Calopa Bosch
endoft1.
startofselection.
select*appendingcorrespondingfields '=appendt1
oftablet1fromusr03.
sortt1.
loopatt1.
write:/01t1bname,
t1name1.
endloop.
*LISTARLOSCOLORESSTANDARD
programzcolors.
data:variable_colortypeivalue0.
startofselection.
do8times.
formatintensifiedoncolor=variable_color.
write:/01'intensifiedON;color',
variable_color.
formatintensifiedoffcolor=variable_color.
write:/01'intensifiedOFF;color',
variable_color.
variable_color=syindex.
enddo.
*OBTENERINFORMACIONDELSISTEMA
programyxxxxxxx.
data:nombre_del_sistema(100)typec,
sistema_gestion_bd(100)typec.
startofselection.
*Lalistacompletadetodoslosparmetrosdisponiblessepuedeobtener
*medianteelreportRSPARAM,facilitadoporSAP.
*
****IdentificacindelSistema***
call'C_SAPGPARAM'id'NAME'field'SAPSYSTEMNAME'
id'VALUE'fieldnombre_del_sistema.
write:/01nombre_del_sistema.
****SistemadeGestindeBD***
call'C_SAPGPARAM'id'NAME'field'dbms/type'
id'VALUE'fieldsistema_gestion_bd.
write:/01sistema_gestion_bd.
*PROVOCARUNTIEMPODEESPERA(entre1y5segundos)
reportyxxxxxxx.
data:int_secondstypeivalue5.
startofselection."
gettime.
write:/01syuzeit.
call'ALERTS'id'ADMODE'field50
id'STORAGE_OPCODE'field'SLEEP'
id'TIME'fieldint_seconds.
gettime.
write:/01syuzeit.
25 / 51
Ejemplos Abap Jordi Calopa Bosch
*TRATARHEXADECIMALES
programZJCBxxx.
data:oper1(2)typeX, "(2)==>de0000aFFFF
oper2(2)typeX,
total(2)typeX.
parameters:num1(4)typeN,
num2(4)typeN.
startofselection.
oper1=num1.
oper2=num2.
total=oper1+oper2.
write:/01total.
*UTILIZARSENTENCIAHIDE
reportyxxxxxxx"
nostandardpageheading.
data:campo(3)typec.
startofselection.
write:/01'primeralinea'.
campo='111'.
hidecampo.'asociamosvalor111alalineaescritaanteriormente.
write:/01'segundalinea'.
campo='222'."
hidecampo.'asociamosvalor222alalineaescritaanteriormente.
atlineselection.
write:/01campo. 'campovaldr111siseseleccionalaprimeralnea
'ovaldr222siseseleccionalasegunda
*VISUALIZARLISTADEUSUARIOSCONECTADOS
reportzxxxxxxx
linesize120
nostandardpageheading.
data:beginoft1occurs1.
includestructureuinfo.
data:endoft1.
data:w_conectstypei.
startofselection.
refresht1.
CALLFUNCTION'THUSRINFO'
TABLES
USR_TABL=T1
EXCEPTIONS
OTHERS=1.
describetablet1linesw_conects.
sortt1bymandtbname.
formatcolorcol_heading.
formatintensifiedoff.
uline.
loopatt1.
write:/01syvline,
t1mandtintensifiedon,
26 / 51
Ejemplos Abap Jordi Calopa Bosch
t1bname,
t1tcodeintensifiedon,
t1zeit,
t1extmodiintensifiedon,
t1hostadr,
t1termintensifiedon,
t1tid,
atsylinszsyvline.
endloop.
uline.
formatcolorcol_positive.
write:/01syvline,
'usuariosconectadosalsistema',
w_conectscolorcol_normal,
atsylinszsyvline.
uline.
3.5Programas
****************************************************************
*Autor...........................JordiCalopaBosch(JCB)*
*Ultimaactualizacin............09.10.2002*
*Entornodedesarrollo...........SAP/R3(31I)bajoUnix*
*Lenguajedeprogramacin........ABAP/4*
**
*BackupAutomticodeProgramasdelUseractivo.Esteprograma*
*revisalatablaTRDIRycuandoencuentraunprogramagenerado*
*y/omodificadoporelusuarioactivo,lovuelcaaPC,*
*aadindolelaextensinTXT*
**
****************************************************************
programzxxxxxxx
linesize120
nostandardpageheading.
includezjcb_include.
****DeclaracindetablasyVistasdeBasedeDatos****
TABLES:TRDIR.
****Declaracindetablasdinmicasdememoriainterna****
DATA:BEGINOFt1OCCURS5000,"Tabladevolcado
reg(255)typec,
endoft1.
DATA:BEGINOFt2OCCURS10000,"Tabladirectorio
nameliketrdirname,
clasliketrdirclas,
cnamliketrdircnam,
cdatliketrdircdat,
unamliketrdirunam,
udatliketrdirudat,
27 / 51
Ejemplos Abap Jordi Calopa Bosch
seculiketrdirsecu,
applliketrdirappl,
endoft2.
****Declaracindevariablesglobales****
data:wdirtypestring,
tipo(10)typecvalue'ASC',
foundstypeivalue0,
longitypeivalue0,
campotypec,
numero(4)typen.
****DefinicindelosCriteriosdeSeleccin****
SELECTIONSCREEN:BEGINOFBLOCKBL1WITHFRAMETITLETEXT001.
SELECTIONSCREEN:SKIP.
PARAMETERS:DIRPC(25)TYPECOBLIGATORY.
SELECTIONSCREEN:SKIP.
SELECTOPTIONS:WMODIFFORsydatlo
NOEXTENSION.
SELECTIONSCREEN:SKIP.
SELECTIONSCREEN:ENDOFBLOCKBL1.
INITIALIZATION.
DIRPC='c:\temp\'.
WMODIFSIGN='I'.
WMODIFOPTION='EQ'.
WMODIFLOW=sydatlo1.
WMODIFHIGH=sydatlo.
APPENDWMODIF.
STARTOFSELECTION.
cleart2.
refresht2.
*SeleccindeProgramas
SELECTNAMECLASCNAMCDATUNAMUDATSECUAPPL
INTOTABLEt2
FROMTRDIR
WHERE(CNAMEQsyunameORUNAMEQsyuname)AND
UDATINWMODIFand
(namelike'Y%'or
namelike'Z%'or
namelike'SAPMY%'or
namelike'MY%')
ORDERBYNAME.
****Procesodelatablainternaconlosprogramasseleccionados
FORMATINTENSIFIEDOFF.
FORMATCOLORCOL_NORMAL.
ULINE.
loopatt2.
numero=sytabix.
CALLFUNCTION'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE=sytabix
TEXT=Numero.
28 / 51
Ejemplos Abap Jordi Calopa Bosch
CHECKt2+00(01)GE'A'ANDt2+00(01)LE'Z'.
LONGI=STRLEN(DIRPC).
LONGI=LONGI1.
MOVEDIRPC+LONGI(01)TOCAMPO.
IFCAMPOEQ'\'.
CONCATENATEDIRPCt2NAME'.txt'INTOWDIR.
ELSE.
CONCATENATEDIRPC'\'t2NAME'.txt'INTOWDIR.
ENDIF.
readreportt2nameintot1.
CALLFUNCTION'GUI_DOWNLOAD'
EXPORTING
filename=wdir
FILETYPE=tipo
TABLES
data_tab=t1
EXCEPTIONS
FILE_WRITE_ERROR=1
NO_BATCH=2
GUI_REFUSE_FILETRANSFER=3
INVALID_TYPE=4
NO_AUTHORITY=5
UNKNOWN_ERROR=6
HEADER_NOT_ALLOWED=7
SEPARATOR_NOT_ALLOWED=8
FILESIZE_NOT_ALLOWED=9
HEADER_TOO_LONG=10
DP_ERROR_CREATE=11
DP_ERROR_SEND=12
DP_ERROR_WRITE=13
UNKNOWN_DP_ERROR=14
ACCESS_DENIED=15
DP_OUT_OF_MEMORY=16
DISK_FULL=17
DP_TIMEOUT=18
FILE_NOT_FOUND=19
DATAPROVIDER_EXCEPTION=20
CONTROL_FLUSH_ERROR=21
OTHERS=22.
CASESYSUBRC.
WHEN'0'.
WRITE:/01SYVLINE,
'Volcadodelfichero'(002),
WDIRCOLORCOL_POSITIVE,
ATSYLINSZSYVLINE.
WHENOTHERS.
WRITE:/01SYVLINE,
'ERRORALVOLCAR...'(003)COLORCOL_NEGATIVE,
WDIRCOLORCOL_NEGATIVE,
ATSYLINSZSYVLINE.
ENDCASE.
29 / 51
Ejemplos Abap Jordi Calopa Bosch
ENDLOOP.
ULINE.
ENDOFSELECTION.
****Cabecerasdellistado****
topofpage.
WRITE:/01'BackupAutomticodeProgramasdelUser:',
SYUNAME.
***************************************************************
*Autor...........................JordiCalopaBosch(JCB)*
*Ultimaactualizacin............16.01.2001*
*Entornodedesarrollo...........SAP/R3(31H)bajoUnix*
*Lenguajedeprogramacin........ABAP/4*
**
*Esteejemplomuestracomorealizarunprogramaenelcualla*
*pantalladesalidaserefresqueautomticamentecadasegundo*
**
**************************************************************
PROGRAMZxxxxxxx
LINESIZE250
NOSTANDARDPAGEHEADING.
CONSTANTS:COMANDO(4)TYPECVALUE'XXXX'.
**"
*STARTOFSELECTION*"
**"
STARTOFSELECTION.
PERFORMPROCESO_PRINCIPAL.
SETUSERCOMMANDCOMANDO.
**"
*FORMPROCESO_PRINCIPAL*"
**"
FORMPROCESO_PRINCIPAL.
Skip10.
WRITE:/30SYULINE(23).
WRITE:50SYULINE(21).
WRITE:/30SYVLINE,'Host:',SYHOST,SPACE,SYVLINE.
WRITE:50SYVLINE,'Fecha:',SYDATUMINTENSIFIEDOFF,
SYVLINE.
WRITE:/30SYVLINE,'Entorno:',SYSYSID,SPACE,SYVLINE.
WRITE:50SYULINE(21).
WRITE:/30SYVLINE,'S.O.:',SYOPSYS,SYVLINE.
WRITE:50SYVLINE,'Hora:',SYUZEITINTENSIFIEDOFF,
'',SYVLINE.
WRITE:/30SYULINE(23).
WRITE:50SYULINE(21).
30 / 51
Ejemplos Abap Jordi Calopa Bosch
SKIP."
ENDFORM.
**"
*ATUSERCOMMAND*"
**"
ATUSERCOMMAND.
SYLSIND=0.
IFSYUCOMMEQCOMANDO.
PERFORMPROCESO_PRINCIPAL.
CALLFUNCTION'Y_DUMMY'
STARTINGNewTASK'IF'
PERFORMINGREFRESCARONENDOFTASK.
ENDIF.
**"
*FORMREFRESCAR*"
**"
FORMREFRESCARUSINGTASKNAME.
DATA:INT_SECONDSTYPEIVALUE1.
CALL'ALERTS'ID'ADMODE'FIELD50
ID'STORAGE_OPCODE'FIELD'SLEEP'
ID'TIME'FIELDINT_SECONDS.
SETUSERCOMMANDCOMANDO.
ENDFORM.
***************************************************************
*Autor...........................JordiCalopaBosch(JCB)*
*Ultimaactualizacin............16.01.2001*
*Entornodedesarrollo...........SAP/R3(31H)bajoUnix*
*Lenguajedeprogramacin........ABAP/4*
**
*EsteprogramapermiteVisualizar,Renombrar,Copiar,*
*Borrar,Bloquear,Desbloquear,Regenerar,Imprimir*
*VolcaraPCy/oEjecutar(enlocal)unreport*
*existenteenlatabladeprogramasTRDIR.*
**
**************************************************************
REPORTYxxxxxxx
linesize120
NOSTANDARDPAGEHEADING.
INCLUDE<LIST>.
INCLUDEYSU0000.
TABLES:TRDIR,DD02L,DD03L,USR03.
DATA:NOMPROGLIKESYREPID,
NOMPNEWLIKESYREPID,
NUMLINESTYPEI,
RESP(01)TYPEC,
NAMETAB(10)TYPEC,
31 / 51
Ejemplos Abap Jordi Calopa Bosch
FOUNFLD(01)TYPECVALUE'F',
FIELD_CLASIF(30)TYPEC,
RETCODELIKESYSUBRC.
DATA:BEGINOFT0OCCURS5000,
C(72)TYPEC,
ENDOFT0.
DATA:BEGINOFT1OCCURS1,
TABNAMELIKEDD03LTABNAME,
FIELDNAMELIKEDD03LFIELDNAME,
ENDOFT1.
DATA:BEGINOFT2OCCURS1,
r(72)typec,
ENDOFT2.
DATA:BEGINOFT3OCCURS50.
INCLUDESTRUCTURETEXTPOOL.
DATA:ENDOFT3.
**"
*STARTOFSELECTION*"
**"
STARTOFSELECTION."
SYTITLE='ProgramManager'.
PERFORMPEDIR_NOMBRE_PGM.
IFRETCODENE0.
EXIT.
ENDIF.
IFNOMPROGEQSYREPID.
EXIT.
ENDIF.
READREPORTNOMPROGINTOT0.
IFSYSUBRCNE0.
EXIT.
ENDIF.
DESCRIBETABLET0LINESNUMLINES.
PERFORMTRATAMIENTO_GRAL.
IFRETCODENE0.
EXIT.
ENDIF.
ENDOFSELECTION.
**"
*FORMPEDIR_NOMBRE_PGM*"
**"
FORMPEDIR_NOMBRE_PGM.
DATA:VALOR_INPLIKENOMPROG,
VALOR_OUTLIKENOMPROG,
VALOR_RES.
32 / 51
Ejemplos Abap Jordi Calopa Bosch
CLEAR:NOMPROG.
CALLFUNCTION'POPUP_TO_GET_VALUE'
EXPORTING
FIELDNAME='NAME'
TABNAME='TRDIR'
TITEL='IndiqueelNombredel'
VALUEIN=VALOR_INP
IMPORTING
ANSWER=VALOR_RES
VALUEOUT=VALOR_OUT
EXCEPTIONS
FIELDNAME_NOT_FOUND=1
OTHERS=2.
IFVALOR_OUTISINITIAL.
RETCODE=4.
ELSE.
SELECTSINGLE*FROMTRDIR
WHERENAMEEQVALOR_OUT.
RETCODE=SYSUBRC.
IFRETCODEEQ0.
NOMPROG=VALOR_OUT.
ENDIF.
ENDIF.
ENDFORM.
**"
*FORMTRATAMIENTO_GRAL*"
**"
FORMTRATAMIENTO_GRAL.
REFRESHT3.
CLEAR:T3.
READTEXTPOOLNOMPROGINTOT3LANGUAGE'S'.
READTABLET3WITHKEY'R'.
FORMATINTENSIFIEDOFF.
FORMATCOLORCOL_HEADING.
ULINE.
WRITE:/01SYVLINE,
120syvline.
WRITE:/01SYVLINE,
NOMPROGCOLORCOL_NORMAL,
T3ENTRY(70),
120syvline.
WRITE:/01SYVLINE,
120SYVLINE,
/01SYVLINE,
'Grupoautorizaciones..',TRDIRSECUCOLORCOL_NORMAL,
40'Autor..',TRDIRCNAMCOLORCOL_NORMAL,
80'Fechageneracin',TRDIRCDATCOLORCOL_NORMAL,
120SYVLINE,
/01SYVLINE,
'Versin',TRDIRVERNCOLORCOL_NORMAL,
40'Modificador..',TRDIRUNAMCOLORCOL_NORMAL
33 / 51
Ejemplos Abap Jordi Calopa Bosch
INTENSIFIEDOFF,
80'Fechamodificacin.',TRDIRUDATCOLORCOL_NORMAL,
120SYVLINE,
/01SYVLINE,
'Proteccinfuente.',TRDIRSQLXCOLORCOL_NORMAL,
40'Proteccinedicin',TRDIREDTXCOLORCOL_NORMAL,
80'Mayusculas/minusculas.',TRDIRVARCLCOLORCOL_NORMAL,
120SYVLINE,
/01SYVLINE,
'Generadoautomtico',TRDIROCCURSCOLORCOL_NORMAL,
40'Tipodeprograma',TRDIRSUBCCOLORCOL_NORMAL,
80'BasedeDatosLgica..',TRDIRDBNACOLORCOL_NORMAL,
TRDIRDBAPLCOLORCOL_NORMAL,
120SYVLINE,
/01SYVLINE,
'Nivel..',TRDIRLEVLCOLORCOL_NORMAL,
40'Status.',TRDIRRSTATCOLORCOL_NORMAL,
80'Mandante..',TRDIRRMANDCOLORCOL_NORMAL,
120SYVLINE,
/01SYVLINE,
'Idiomamaestro..',TRDIRRLOADCOLORCOL_NORMAL,
40'Comafija.',TRDIRFIXPTCOLORCOL_NORMAL,
80'Soloconvariante..',TRDIRSSETCOLORCOL_NORMAL,
120SYVLINE.
WRITE:/01SYVLINE,
'CantidadLneas',NUMLINESCOLORCOL_NORMAL,
120syvline.
WRITE:/01SYVLINE,
120syvline.
WRITE:/01SYVLINE,
10ICON_DISPLAYASICON,
20ICON_RENAMEASICON,
30ICON_COPY_OBJECTASICON,
40ICON_DELETEASICON,
50ICON_LOCKEDASICON,
60ICON_UNLOCKEDASICON,
70ICON_GENERATEASICON,
80ICON_PRINTASICON,
90ICON_MOVEASICON,
100ICON_EXECUTE_OBJECTASICON,
120SYVLINE.
WRITE:/01SYVLINE,
120SYVLINE.
ULINE.
ENDFORM.
**"
*ATLINESELECTION*"
**"
ATLINESELECTION.
SYLSIND=0.
IFSYCUROWEQ13.
IFSYCUCOLEQ11ORSYCUCOLEQ12.
34 / 51
Ejemplos Abap Jordi Calopa Bosch
PERFORMDISPLAY_PGM.
ELSEIFSYCUCOLEQ21ORSYCUCOLEQ22.
PERFORMRENAME_PGM.
PERFORMTRATAMIENTO_GRAL.
ELSEIFSYCUCOLEQ31ORSYCUCOLEQ32.
PERFORMCOPY_PGM.
PERFORMTRATAMIENTO_GRAL.
ELSEIFSYCUCOLEQ41ORSYCUCOLEQ42.
PERFORMDELETE_PGM.
IFRETCODE=0.
LEAVETOSCREEN0.
ENDIF.
ELSEIFSYCUCOLEQ51ORSYCUCOLEQ52.
PERFORMLOCKED_PGM.
PERFORMTRATAMIENTO_GRAL.
ELSEIFSYCUCOLEQ61ORSYCUCOLEQ62.
PERFORMUNLOCKED_PGM.
PERFORMTRATAMIENTO_GRAL.
ELSEIFSYCUCOLEQ71ORSYCUCOLEQ72.
PERFORMGENERATE_PGM.
ELSEIFSYCUCOLEQ81ORSYCUCOLEQ82.
PERFORMPRINT_PGM.
ELSEIFSYCUCOLEQ91ORSYCUCOLEQ92.
PERFORMVOLCADO_PGM.
ELSEIFSYCUCOLEQ101ORSYCUCOLEQ102.
SUBMIT(NOMPROG)ANDRETURNVIASELECTIONSCREEN.
ENDIF.
ENDIF.
**"
*FORMDISPLAY_PGM*"
**"
FORMDISPLAY_PGM.
CALLFUNCTION'RS_SOURCE_STRUCTURE'
EXPORTING
Source=NOMPROG
EXCEPTIONS
OTHERS=1.
ENDFORM.
**"
*FORMRENAME_PGM*"
**"
FORMRENAME_PGM.
CALLFUNCTION'RS_RENAME_PROGRAM'
EXPORTING
SOURCE_PROGRAM=NOMPROG
IMPORTING
PROGRAM=NOMPNEW
EXCEPTIONS
ENQUEUE_LOCK=1
OBJECT_NOT_FOUND=2
PERMISSION_FAILURE=3
REJECT_COPY=4
35 / 51
Ejemplos Abap Jordi Calopa Bosch
REJECT_DELETION=5
OTHERS=6.
IFSYSUBRCEQ0.
NOMPROG=NOMPNEW.
ENDIF.
ENDFORM.
**"
*FORMCOPY_PGM*"
**"
FORMCOPY_PGM.
CALLFUNCTION'RS_COPY_PROGRAM'
EXPORTING
SOURCE_PROGRAM=NOMPROG
IMPORTING
PROGRAM=NOMPNEW"
EXCEPTIONS
ENQUEUE_LOCK=1
OBJECT_NOT_FOUND=2
PERMISSION_FAILURE=3
REJECT_COPY=4
OTHERS=5.
IFSYSUBRCEQ0.
NOMPROG=NOMPNEW.
ENDIF.
ENDFORM.
**"
*FORMDELETE_PGM*"
**"
FORMDELETE_PGM.
CALLFUNCTION'RS_DELETE_PROGRAM'
EXPORTING
PROGRAM=NOMPROG
EXCEPTIONS
ENQUEUE_LOCK=1
OBJECT_NOT_FOUND=2
PERMISSION_FAILURE=3
REJECT_DELETION=4
OTHERS=5.
RETCODE=SYSUBRC.
ENDFORM.
**"
*FORMLOCKED_PGM*"
**"
FORMLOCKED_PGM.
SELECTSINGLE*FROMTRDIR
WHERENAMEEQNOMPROG.
36 / 51
Ejemplos Abap Jordi Calopa Bosch
IFSYSUBRCEQ0.
TRDIREDTX='X'.
UPDATETRDIR.
COMMITWORK.
ENDIF.
ENDFORM.
**"
*FORMUNLOCKED_PGM*"
**"
FORMUNLOCKED_PGM.
SELECTSINGLE*FROMTRDIR
WHERENAMEEQNOMPROG.
IFSYSUBRCEQ0.
TRDIREDTX=SPACE.
UPDATETRDIR.
COMMITWORK.
ENDIF.
ENDFORM.
*"
*FORMGENERATE_PGM*"
**"
FORMGENERATE_PGM.
GENERATEREPORTNOMPROG.
ENDFORM.
**"
*FORMPRINT_PGM*"
**"
FORMPRINT_PGM.
CALLFUNCTION'RS_PROGRAM_PRINT'
EXPORTING
DIALOG='X'
PROGRAMM=NOMPROG
EXCEPTIONS
CANCELED=1
OPEN_FORM_ERROR=2
PROGRAM_NOT_FOUND=3
NO_AUTHORITY=4
OTHERS=5.
ENDFORM.
**"
*FORMVOLCADO_PGM*"
**"
FORMVOLCADO_PGM.
DATA:PATHNAME(128)TYPEC.
37 / 51
Ejemplos Abap Jordi Calopa Bosch
CONCATENATE'c:\datos\'NOMPROGINTOPATHNAME.
CALLFUNCTION'WS_DOWNLOAD'
EXPORTING
filename=PATHNAME
FILETYPE='ASC'
TABLES
DATA_TAB=T0
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.
IFSYSUBRCEQ0.
MESSAGEID38TYPE'I'NUMBER016
WITH'ProgramavolcadocorrectamenteaPC'.
ENDIF.
ENDFORM.
**"
*FORMCABECERA_REPORT*"
**"
FORMCABECERA_REPORT.
DATA:NOMBRE(40).
SELECTSINGLE*FROMUSR03WHEREBNAMEEQSYUNAME.
IFSYSUBRCEQ0.
CONCATENATEUSR03NAME1USR03NAME2'('SYUNAME')'
INTONOMBRESEPARATEDBY''.
ELSE.
NOMBRE=SYUNAME.
ENDIF.
REFRESHT2.
PERFORMR_BLANCO.
T2R+00='*Autor:'.
T2R+14=NOMBRE.APPENDT2.
T2R+00='*Fecha:'.
T2R+14=SYDATUM.APPENDT2.
T2R+00='*Hora:'.
T2R+14=SYUZEIT.APPENDT2.
T2R+00='*Host:'.
T2R+14=SYHOST.APPENDT2.
T2R+00='*Sistema:'.
T2R+14=SYOPSYS.APPENDT2.
performr_blanco.
t2r+00='REPORT'.
t2r+08=nomprog.appendt2.
T2R='linesize94'.APPENDT2.
T2R='nostandardpageheading.'.APPENDT2.
T2R=''.APPENDT2.
ENDFORM.
38 / 51
Ejemplos Abap Jordi Calopa Bosch
**"
*FORMR_BLANCO*"
**"
formr_blanco.
T2R='**'.
APPENDT2.
ENDFORM.
**"
*FORMINSERTAR_PGM*"
**"
FORMINSERTAR_PGM.
CALLFUNCTION'RKD_INSERT_REPORT'
EXPORTING
COMMIT='X'
ENQUEUE_FLAG='X'
REPORT_NAME=NOMPROG
REPORT_NAMEH=NOMPROG
REPORT_NAMEL=NOMPROG
TADIR_DEVCLASS='$TMP'
TEXT='Nuevoprograma'
TRDIR_APPL='S'
TRDIR_CLAS='$TMP'
TRDIR_DBAPL='S'
TRDIR_DBNA='D$'
TRDIR_FIXPT='X'
TRDIR_RSTAT='T'
TRDIR_SQLX='R'
TRDIR_SUBC='1'
TABLES
CODE_TAB=T2
EXCEPTIONS
NO_FREE_NUMBER=1
SYNTAX_CHECK=2
TRDIR_LOCKED=3
OTHERS=4.
IFSYSUBRCEQ0.
SELECTSINGLE*FROMTRDIR
WHERENAMEEQNOMPROG.
IFSYSUBRCEQ0.
TRDIRRLOAD='S'.
TRDIREDTX='X'.
TRDIRSECU='YSGNI'.
UPDATETRDIR.
COMMITWORK.
ENDIF.
ENDIF.
ENDFORM.
*********************************************************************
*Autor...........................JordiCalopaBosch(JCB)*
*Ultimaactualizacin............16.02.2001*
39 / 51
Ejemplos Abap Jordi Calopa Bosch
*Entornodedesarrollo...........SAP/R3(31H)bajoUnix*
*Lenguajedeprogramacin........ABAP/4*
**
*Descripcin:EstautilidadsirveparasubmitirprogramasAbap*
*residentesenlaworkstation(PC).*
**
********************************************************************
REPORTYxxxxxxx.
INCLUDEYSU0000.
****DeclaracindeVariablesGlobales****
DATA:RESPUESTA(01)TYPEC,
RETCODELIKESYSUBRC,
TXT120(120)TYPEC.
****DeclaracindeConstantesGlobales****
CONSTANTS:MARCA(01)TYPECVALUE'X',
SKELETON(8)TYPECVALUE'YZZZZZZZ'.
****Definicindetablasdinmicasdememoriainterna****
DATA:BEGINOFTBLPGMOCCURS5000,
C(72),
ENDOFTBLPGM.
****DefinicindeCriteriosdeSeleccin****
SELECTIONSCREEN:BEGINOFBLOCK1WITHFRAMETITLETEXT001.
SELECTIONSCREEN:SKIP.
PARAMETERS:PROGRAMALIKESYREPID.
SELECTIONSCREEN:SKIP.
SELECTIONSCREEN:BEGINOFBLOCK2WITHFRAME.
PARAMETERS:VISUALRADIOBUTTONGROUPG1,
EDITARRADIOBUTTONGROUPG1,
LANZARRADIOBUTTONGROUPG1.
SELECTIONSCREEN:ENDOFBLOCK2.
SELECTIONSCREEN:BEGINOFBLOCK3WITHFRAME.
SELECTIONSCREEN:SKIP.
PARAMETERS:RESTOREASCHECKBOX.
SELECTIONSCREEN:SKIP.
PARAMETERS:RESTPAT(128)TYPECDEFAULT'C:\DATOS\'.
SELECTIONSCREEN:ENDOFBLOCK3.
SELECTIONSCREEN:ENDOFBLOCK1.
**"
*ATSELECTIONSCREEN*"
**"
ATSELECTIONSCREEN.
IFPROGRAMAISINITIAL.
PROGRAMA=SKELETON.
ENDIF.
IFLANZAREQMARCA.
PROGRAMA=SKELETON.
ENDIF.
**"
40 / 51
Ejemplos Abap Jordi Calopa Bosch
*STARTOFSELECTION*"
**"
STARTOFSELECTION.
****ELSIGUIENTEIFNODEBESERELIMINADOJAMAS***
IFPROGRAMAEQ'SAPMSYST'.
MESSAGEID38TYPE'I'NUMBER16
WITH'ElprogramaInformadoNOescorrecto'.
STOP.
ENDIF.
****
IFEDITAREQMARCA.
PERFORMRUTINA_EDITAR.
ELSEIFLANZAREQMARCA.
PERFORMRUTINA_LANZAR.
ELSE.
PERFORMRUTINA_VISUALIZAR.
ENDIF.
ENDOFSELECTION.
**"
*FORMRUTINA_VISUALIZAR*"
**"
FORMRUTINA_VISUALIZAR.
IFRESTORE=MARCA.
PERFORMRESTAURAR_DESDE_PC.
ELSE.
READREPORTPROGRAMAINTOTBLPGM.
RETCODE=SYSUBRC.
ENDIF.
IFRETCODEEQ0.
EDITORCALLFORTBLPGMDISPLAYMODE.
ENDIF.
ENDFORM.
**"
*FORMRUTINA_EDITAR*"
**"
FORMRUTINA_EDITAR.
PERFORMRUTINA_AVISO1.
IFRESPUESTAEQ'1'.
IFRESTOREEQMARCA.
PERFORMRESTAURAR_DESDE_PC.
ELSE.
READREPORTPROGRAMAINTOTBLPGM.
RETCODE=SYSUBRC.
ENDIF.
IFRETCODEEQ0.
EDITORCALLFORTBLPGM.
41 / 51
Ejemplos Abap Jordi Calopa Bosch
ENDIF.
PERFORMCOMPROBAR_SINTAXIS.
IFRETCODEEQ0.
INSERTREPORTPROGRAMAFROMTBLPGM.
ELSE.
MESSAGEID38TYPE'I'NUMBER016
WITH'ELPROGRAMATIENEERRORESDESINTAXIS'.
INSERTREPORTPROGRAMAFROMTBLPGM.
ENDIF.
ENDIF.
ENDFORM.
**"
*FORMRUTINA_LANZAR*"
**"
FORMRUTINA_LANZAR.
IFRESTOREEQMARCA.
PERFORMRESTAURAR_DESDE_PC.
INSERTREPORTPROGRAMAFROMTBLPGM.
SUBMIT(PROGRAMA)ANDRETURNVIASELECTIONSCREEN.
ELSE.
SUBMIT(PROGRAMA)ANDRETURNVIASELECTIONSCREEN.
ENDIF.
ENDFORM.
**"
*FORMRUTINA_AVISO1*"
**"
FORMRUTINA_AVISO1.
CALLFUNCTION'POPUP_FOR_INTERACTION'
EXPORTING"
HEADLINE='***ATENCION***'
TEXT1='EsteesunEditormuyespecialysuuso'
TEXT2='conllevaunelevadoriesgo.Sinoest'
TEXT3='Ud.muysegurodeloquedeseamodificar'
TEXT4='esmejorpulseelbotndeCANCELAR.'
TEXT5=''
TEXT6=''
TICON='W'
BUTTON_1='Continuar'
BUTTON_2='CANCELAR'
BUTTON_3=''
IMPORTING
BUTTON_PRESSED=RESPUESTA
EXCEPTIONS
OTHERS=1.
ENDFORM.
**"
*FORMRESTAURAR_DESDE_PC*"
42 / 51
Ejemplos Abap Jordi Calopa Bosch
**"
FORMRESTAURAR_DESDE_PC.
CALLFUNCTION'WS_UPLOAD'
EXPORTING
filename=RESTPAT
FILETYPE='ASC'
TABLES
DATA_TAB=TBLPGM
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.
RETCODE=SYSUBRC.
ENDFORM.
**"
*FORMCOMPROBAR_SINTAXIS*"
**"
FORMCOMPROBAR_SINTAXIS.
CLEAR:RETCODE.
.
.
.
ENDFORM.
*********************************************************************
*Autor...........................JordiCalopaBosch(JCB)*
*Ultimaactualizacin............16.02.2001*
*Entornodedesarrollo...........SAP/R3(31I)bajoUnix*
*Lenguajedeprogramacin........ABAP/4*
**
*Descripcin:GeneradosdeskeletonsPlantillasdeprogramas*
**
********************************************************************
programzxxxxxxx
LINESIZE120
NOSTANDARDPAGEHEADING.
includezxxxxxxx.
****DeclaracindetablasyVistasdebasedeDatos****
TABLES:DD02L,DD03L,USR03,TRDIR.
****DeclaracindevariablesGlobalesdelPrograma****
DATA:RESP(01)TYPEC,
NAMETAB(10)TYPEC,
43 / 51
Ejemplos Abap Jordi Calopa Bosch
FOUNFLD(01)TYPECVALUE'F',
FIELD_CLASIF(30)TYPEC,
SKTLIKESYCPROGVALUE'Z'.
DATA:BEGINOFT1OCCURS1,
TABNAMELIKEDD03LTABNAME,
FIELDNAMELIKEDD03LFIELDNAME,
ENDOFT1.
DATA:BEGINOFT2OCCURS1,
R(255)TYPEC,
ENDOFT2.
**
*STARTOFSELECTION*
**
STARTOFSELECTION.
skt+01(08)=syuname.
skt+09(01)='_'.
PERFORMGENERADOR_PROGRAMAS.
ENDOFSELECTION.
IFRETCODEEQ0.
FORMATINTENSIFIEDON.
FORMATCOLORCOL_HEADING.
ULINE.
WRITE:/01SYVLINE,
ATSYLINSZSYVLINE.
WRITE:/01SYVLINE,
'Generadoelskelectoncorrectamente.Nombre',
SKTCOLORCOL_NORMAL,
ATSYLINSZSYVLINE.
WRITE:/01SYVLINE,
ATSYLINSZSYVLINE.
ULINE.
ELSE.
FORMATINTENSIFIEDON.
FORMATCOLORCOL_NEGATIVE.
ULINE.
WRITE:/01SYVLINE,
'NOSEHAGENERADONINGUNSKELETON',
ATSYLINSZSYVLINE.
ULINE.
ENDIF.
**
*FORMGENERADOR_PROGRAMAS*
**
FORMGENERADOR_PROGRAMAS.
DATA:BEGINOFTMOCCURS9,
C1(01),
C2(80),
ENDOFTM.
44 / 51
Ejemplos Abap Jordi Calopa Bosch
TMC1=''.
TMC2='SkeletondeunProgramaBatch'.APPENDTM.
TMC2='SkeletondeunaListaInteractiva'.APPENDTM.
TMC2='SkeletonparaListarunaTabladeBD'.APPENDTM.
TMC2='SkeletonProgramaNuevo'.APPENDTM.
CALLFUNCTION'K_POPUP_TO_DECIDE'
EXPORTING
PAR_TEXT1=''
PAR_TITLE='GENERADORDESKELETONS'
IMPORTING
PAR_REPLY=RESP
TABLES
TAB_LINES=TM
EXCEPTIONS
NOT_ENOUGH_LINES=1
TOO_MANY_LINES=2.
RETCODE=SYSUBRC.
IFRESP='A'.
RETCODE=4.
EXIT.
ENDIF.
IFRETCODEEQ0.
IFRESPEQ'1'.
skt+10(05)='BATCH'.
PERFORMRPG_SKELETON_BATCH.
ELSEIFRESPEQ'2'.
skt+10(05)='LISTA'.
PERFORMRPG_SKELETON_LISTA.
ELSEIFRESPEQ'3'.
skt+10(05)='TABLA'.
PERFORMRPG_TABLAS.
ELSEIFRESPEQ'4'.
skt+10(05)='NUEVO'.
PERFORMRPG_NEWPGM.
ELSE.
RETCODE=4.
ENDIF.
ENDIF.
ENDFORM."GENERADOR_PROGRAMAS
**
*FORMRPG_SKELETON_BATCH*
**
FORMRPG_SKELETON_BATCH.
PERFORMCABECERA_REPORT.
PERFORMR_BLANCO.
45 / 51
Ejemplos Abap Jordi Calopa Bosch
T2R='*DeclaracindeTablasyVistasdeBD'.APPENDT2.
PERFORMR_BLANCO.
T2R='tables:t001.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoANTESDELAPANTALLADESELECCION'.APPENDT2.
PERFORMR_BLANCO.
T2R='initialization.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoDESPUESDELAPANTALLADESELECCION'.APPENDT2.
PERFORMR_BLANCO.
T2R='atselectionscreen.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALPRINCIPIODELPROGRAMA'.APPENDT2.
PERFORMR_BLANCO.
T2R='startofselection.'.APPENDT2.
T2R=''.APPENDT2.
T2R='callfunction''Y_UPD_T9S00'''.APPENDT2.
T2R='exceptions'.APPENDT2.
T2R='others=1.'.APPENDT2.
T2R=''.APPENDT2.
T2R='write''SKELETONBATCH''.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALFINALDELPROGRAMA'.APPENDT2.
PERFORMR_BLANCO.
T2R='endofselection.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALPRINCIPIODEPAGINA'.APPENDT2.
PERFORMR_BLANCO.
T2R='topofpage.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALFINALDEPAGINA'.APPENDT2.
PERFORMR_BLANCO.
T2R='endofpage.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMINSERTAR_PGM.
ENDFORM."RPG_SKELETON_BATCH
**
*FORMRPG_SKELETON_LISTA*
**
FORMRPG_SKELETON_LISTA.
46 / 51
Ejemplos Abap Jordi Calopa Bosch
PERFORMCABECERA_REPORT.
PERFORMR_BLANCO.
T2R='*DeclaracindeTablasyVistasdeBD'.APPENDT2.
PERFORMR_BLANCO.
T2R='tables:t001.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoANTESDELAPANTALLADESELECCION'.APPENDT2.
PERFORMR_BLANCO.
T2R='initialization.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoDESPUESDELAPANTALLADESELECCION'.APPENDT2.
PERFORMR_BLANCO.
T2R='atselectionscreen.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALPRINCIPIODELPROGRAMA'.APPENDT2.
PERFORMR_BLANCO.
T2R='startofselection.'.APPENDT2.
T2R=''.APPENDT2.
T2R='callfunction''Y_UPD_T9S00'''.APPENDT2.
T2R='exceptions'.APPENDT2.
T2R='others=1.'.APPENDT2.
T2R=''.APPENDT2.
T2R='write''Hagadobleclicksobreestalnea''.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALFINALDELPROGRAMA'.APPENDT2.
PERFORMR_BLANCO.
T2R='endofselection.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALPRINCIPIODELAPRIMERAPAGINA'.APPENDT2.
PERFORMR_BLANCO.
T2R='topofpage.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALPRINCIPIODELASPAGINASSIGUIENTES'.APPENDT2.
PERFORMR_BLANCO.
T2R='topofpageduringlineselection.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALFINALDEPAGINA'.APPENDT2.
PERFORMR_BLANCO.
T2R='endofpage.'.APPENDT2.
T2R=''.APPENDT2.
T2R=''.APPENDT2.
PERFORMR_BLANCO.
T2R='*EventoALSELECCIONARUNALINEA'.APPENDT2.
PERFORMR_BLANCO.
47 / 51
Ejemplos Abap Jordi Calopa Bosch
T2R='atlineselection.'.APPENDT2.
T2R='ifsycuroweq1.'.APPENDT2.
T2R='write''EstoesunaLISTAINTERACTIVA''.'.APPENDT2.
T2R='write/''Hagadobleclicksobreestalnea''.'.APPENDT2.
T2R='sylsind=0.'.APPENDT2.
T2R='else.'.APPENDT2.
T2R='write''Hagadobleclicksobreestalnea''.'.APPENDT2.
T2R='endif.'.APPENDT2.
T2R=''.APPENDT2.
PERFORMINSERTAR_PGM.
ENDFORM."RPG_SKELETON_LISTA
**
*FORMRPG_TABLAS*
**
FORMRPG_TABLAS.
IFNAMETABISINITIAL.
CALLFUNCTION'POPUP_TO_GET_VALUE'
EXPORTING
FIELDNAME='TABNAME'
TABNAME='DD02L'
TITEL='Nombredela'
VALUEIN=NAMETAB
IMPORTING
VALUEOUT=NAMETAB
EXCEPTIONS
FIELDNAME_NOT_FOUND=1
OTHERS=2.
ENDIF.
TRANSLATENAMETABTOUPPERCASE.
SELECTSINGLE*FROMDD02LWHERETABNAMEEQNAMETABAND
AS4LOCALEQ'A'AND
AS4VERSEQ'0000'.
IFSYSUBRCNE0.
FORMATINTENSIFIEDOFF.
WRITE:/01'TablaNOencontrada',NAMETABCOLOR6.
RETCODE=4.
STOP.
ENDIF.
REFRESHT1.
SELECT*FROMDD03LWHERETABNAMEEQDD02LTABNAMEAND
AS4LOCALEQDD02LAS4LOCAL.
IFDD03LFIELDNAMENE'.INCLUDE'.
MOVECORRESPONDINGDD03LTOT1.
COLLECTT1.
MOVE'T'TOFOUNFLD.
ENDIF.
ENDSELECT.
MOVET1FIELDNAMETOFIELD_CLASIF.
48 / 51
Ejemplos Abap Jordi Calopa Bosch
IFFOUNFLDEQ'F'.
FORMATINTENSIFIEDOFF.
WRITE:/01'CamposNOencontrados',NAMETABCOLOR6.
RETCODE=4.
STOP.
ENDIF.
PERFORMCABECERA_REPORT.
t2r+00='TABLES:'.
t2r+10=nametab.
T2R+25='.'.APPENDT2.
performr_blanco.
T2R='data:lincab1(40)TYPEC.'.APPENDT2.
performr_blanco.
T2R='DATA:BEGINOFTABLA01OCCURS1.'.APPENDT2.
t2r='includestructure'.
t2r+25=nametab.
T2R+50='.'.APPENDT2.
T2R='DATA:ENDOFTABLA01.'.APPENDT2.
performr_blanco.
T2R='startofselection.'.APPENDT2.
performr_blanco.
T2R='move''Listadotabla''tolincab1.'.
T2R+20=NAMETAB(10).
T2R+33='''tolincab1.'.APPENDT2.
performr_blanco.
t2r='SELECT*FROM'.
t2r+15=nametab.
T2R+30='.'.APPENDT2.
t2r='MOVECORRESPONDING'.
t2r+25=nametab.
T2R+40='TOTABLA01.'.APPENDT2.
T2R='APPENDTABLA01.'.APPENDT2.
T2R='ENDSELECT.'.APPENDT2.
performr_blanco.
T2R='ENDOFSELECTION.'.APPENDT2.
performr_blanco.
T2R='*formatintensifiedoff.'.APPENDT2.
T2R='*formatcolorcol_normal.'.APPENDT2.
performr_blanco.
T2R='LOOPATTABLA01.'.APPENDT2.
T2R='write:/01'.APPENDT2.
LOOPATT1.
t2r='TABLA01'.
movet1fieldnametot2r+16.
MOVE','TOT2R+47.APPENDT2.
ENDLOOP.
T2R='space.'.APPENDT2.
T2R='ENDLOOP.'.APPENDT2.
T2R='uline.'.APPENDT2.
performr_blanco.
T2R='TOPOFPAGE.'.APPENDT2.
T2R='WRITE:/03LINCAB1.'.APPENDT2.
T2R='ULINE.'.APPENDT2.
PERFORMINSERTAR_PGM.
49 / 51
Ejemplos Abap Jordi Calopa Bosch
ENDFORM."RPG_TABLAS
**
*FORMRPG_NEWPGM*
**
FORMRPG_NEWPGM.
PERFORMCABECERA_REPORT.
PERFORMINSERTAR_PGM.
ENDFORM."RPG_NEWPGM
*&*
*&FormCABECERA_REPORT
*&*
*text
**
FORMCABECERA_REPORT.
DATA:NOMBRE(40).
SELECTSINGLE*FROMUSR03
WHEREBNAMEEQSYUNAME.
IFSYSUBRCEQ0.
CONCATENATEUSR03NAME1USR03NAME2'('SYUNAME')'
INTONOMBRESEPARATEDBY''.
ELSE.
NOMBRE=SYUNAME.
ENDIF.
REFRESHT2.
T2R+00='*******************************************************'.
APPENDT2.
T2R+00='*Autor:'.
T2R+14=NOMBRE.APPENDT2.
T2R+00='*Fecha:'.
T2R+14=sydatlo.APPENDT2.
T2R+00='*Hora:'.
T2R+14=sytimlo.APPENDT2.
T2R+00='*Host:'.
T2R+14=SYHOST.APPENDT2.
T2R+00='*Sistema:'.
T2R+14=SYOPSYS.APPENDT2.
T2R+00='*******************************************************'.
APPENDT2.
T2R+00='Program'.
T2R+09=SKT.APPENDT2.
T2R='linesize255'.APPENDT2.
T2R='nostandardpageheading.'.APPENDT2.
T2R=''.APPENDT2.
ENDFORM."CABECERA_REPORT
*&*
*&Formr_blanco
50 / 51
Ejemplos Abap Jordi Calopa Bosch
*&*
*text
**
formr_blanco.
T2R='*'.
APPENDT2.
ENDFORM."r_blanco
*&*
*&FormINSERTAR_PGM
*&*
*text
**
FORMINSERTAR_PGM.
insertreportsktfromt2.
ENDFORM."INSERTAR_PGM
**********************************************************************
****FINDEPROGRAMA****
**********************************************************************
51 / 51