tag:blogger.com,1999:blog-203222447089889112024-03-19T06:02:34.572-06:00ABAPTMAN - SAP / R3ESTE ES EL BLOG DE RESPALDO DE CÓDIGO, PARA FUNCIONES Y EXTRACTOS QUE PARECEN INTERESANTES PARA DARLE UNA MEJOR PRESENTACIÓN A NUESTROS TRABAJOS O PROYECTOS, YA SEA EN REPORTE O EN DYNPRO, ESPERO RESULTE DE UTILIDAD.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.comBlogger34125tag:blogger.com,1999:blog-20322244708988911.post-55912229179481353872009-01-05T09:21:00.005-06:002009-01-20T12:59:04.685-06:00Tabla Interna Dinamica<p><br />Codigo para la generacion de una tabla interna de forma dinamica en tiempo de ejecucion, cuando no se conocen los campos que esta va a contener en tiempo de diseño.<br /><br />En este caso solo lo hice para guardar los meses del año, pero segun la logica de programacion de cada situacion, esto puede ser ajustado a las necesidades del desarrollo.<br /><br /><br />Espero sea de utilidad.<br /><br />*&---------------------------------------------------------------------*<br />*& Report ZPRUEBAS_ABAP<br />*&---------------------------------------------------------------------*<br />*& reporte para la creacion de una tabla interna dinamica.<br />*&---------------------------------------------------------------------*<br /><br />REPORT ZPRUEBAS_ABAP.<br />DATA: t_fieldcat TYPE lvc_t_fcat,<br />t_fieldcat_wa TYPE LINE OF lvc_t_fcat.<br /><br />DATA: tabla TYPE REF TO data,<br /> EP_TABLE TYPE REF TO data,<br /> EP_line TYPE REF TO data.<br /><br />DATA: BEGIN OF MESES OCCURS 0,<br /> MES(12) TYPE C,<br />END OF MESES.<br /><br />TYPE-POOLS: slis.<br /><br />FIELD-SYMBOLS: <br /> <l_table> TYPE STANDARD TABLE <br /> <l_line> TYPE ANY <br /> <l_field> TYPE ANY <br /><br /><br />START-OF-SELECTION.<br /><br /> MESES-MES = 'ENERO'. APPEND MESES.<br /> MESES-MES = 'FEBRERO'. APPEND MESES.<br /> MESES-MES = 'MARZO'. APPEND MESES.<br /> MESES-MES = 'ABRIL'. APPEND MESES.<br /> MESES-MES = 'MAYO'. APPEND MESES.<br /> MESES-MES = 'JUNIO'. APPEND MESES.<br /> MESES-MES = 'JULIO'. APPEND MESES.<br /> MESES-MES = 'AGOSTO'. APPEND MESES.<br /> MESES-MES = 'SEPTIEMBRE'. APPEND MESES.<br /> MESES-MES = 'OCTUBRE'. APPEND MESES.<br /> MESES-MES = 'NOVIEMBRE'. APPEND MESES.<br /> MESES-MES = 'DICIEMBRE'. APPEND MESES.<br /><br /> LOOP AT MESES.<br /> t_fieldcat_wa-col_pos = SY-TABIX.<br /> t_fieldcat_wa-fieldname = MESES-MES.<br /> APPEND t_fieldcat_wa TO t_fieldcat.<br /> ENDLOOP.<br /><br /> CALL METHOD cl_alv_table_create=>create_dynamic_table<br /> EXPORTING<br /> it_fieldcatalog = t_fieldcat<br /> IMPORTING<br /> ep_table = tabla<br /> EXCEPTIONS<br /> GENERATE_SUBPOOL_DIR_FULL = 1<br /> others = 2<br /> .<br /> IF sy-subrc = 0.<br />* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO<br />* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.<br /> ENDIF.<br /><br /> ASSIGN tabla->* TO <l_table>.<br /> CREATE DATA ep_line LIKE LINE OF <l_table>.<br /> ASSIGN ep_line->* TO <l_line>.<br /><br /><br /> LOOP AT MESES.<br /> assign component MESES-MES of structure <l_line> to <l_field>.<br /> <l_field> = SY-TABIX.<br /> ENDLOOP.<br /> insert <l_line> into table <l_table>.<br /><br /> LOOP AT MESES.<br /> assign component meses-mes of structure <l_line> to <l_field>.<br /> write: / MESES-MES, ': ', <l_field>.<br /> ENDLOOP.<br /></p>Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com1tag:blogger.com,1999:blog-20322244708988911.post-25266543494802630992008-09-01T09:46:00.000-05:002008-09-01T09:47:08.345-05:00Conexion a Bases de Datos ExternasAveces es necesario hacer operaciones con bases de datos externas a SAP, ya sea para interfases o para datos complementarios, aunque no es recomendable por licenciamientos de SAP, esta es la forma de hacerlo.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgznPTuU7Bc24m_xJcNMyglkxt3inwzGPcDrQNJFhovrtVEsbybJhcMPERpcZok-bVkePB_GSzlkSrBS4GWaBDtLM4Up1KxoOBBcs5gM2skH4KGuysgrjCdGWWGMwv1nfZwNCg-EU1GXZU/s1600-h/BDS1.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgznPTuU7Bc24m_xJcNMyglkxt3inwzGPcDrQNJFhovrtVEsbybJhcMPERpcZok-bVkePB_GSzlkSrBS4GWaBDtLM4Up1KxoOBBcs5gM2skH4KGuysgrjCdGWWGMwv1nfZwNCg-EU1GXZU/s320/BDS1.JPG" alt="" id="BLOGGER_PHOTO_ID_5241063355791453250" border="0" /></a>Primero que nada, es necesario realizar una coneccion hacia la base de datos externa, esto lo hacemos mediante la transaccion DBCO.<br /><br />hacemos clic en el boton "NEW ENTRY" y tecleamos los datos correspondientes a la base de damos los datos necesarios para la coneccion.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ7B6UF0RbD4Hq2Rn8Hbdpysqd_NHaUX51_D3DfZVtg04_i2QM2tfdevIysdCijOxN9MG3yTFttuweof8CoQSjJd96KpBrI6zusCfVXS2cd5IBxvQOy4mGv-Q0dkT1Zij8t6VZae4Plqs/s1600-h/BDS.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 126px; height: 214px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ7B6UF0RbD4Hq2Rn8Hbdpysqd_NHaUX51_D3DfZVtg04_i2QM2tfdevIysdCijOxN9MG3yTFttuweof8CoQSjJd96KpBrI6zusCfVXS2cd5IBxvQOy4mGv-Q0dkT1Zij8t6VZae4Plqs/s320/BDS.JPG" alt="" id="BLOGGER_PHOTO_ID_5241063628990859266" border="0" /></a>Existe una lista de bases de datos a las que podemos acceder:<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />ya teniendo la conexion, este el el fragmento de codigo que debemos insertar.<br /><br />*<span>Abrimos</span> conexion<br />EXEC SQL.<br />CONNECT TO 'CONEX01' AS 'R'<br />ENDEXEC.<br /><br />EXEC SQL.<br />SET CONNECTION 'R'<br />ENDEXEC.<br /><br />*<span>borramos</span> <span>el</span> <span>contenido</span> <span>de</span> <span>la</span> <span>tabla</span> alumnos<br />EXEC SQL.<br />DELETE CE.ALUMNOS@DESAR<br />ENDEXEC.<br /><br />IF sy-subrc = 0.<br />*<span>insertamos</span> <span>el</span> <span>valor</span> <span>ANTONIO</span> LOPEZ <span>en</span> <span>la</span> <span>tabla</span> alumnos<br />EXEC SQL.<br /> INSERT INTO CE.ALUMNOS@DESAR (NOMBRE)<br /> VALUES (:'<span>ANTONIO</span> LOPEZ')<br />ENDEXEC.<br />ENDIF.<br /><br />*<span>Cerramos</span> <span>conexion</span><br />EXEC SQL.<br />SET CONNECTION DEFAULT<br />ENDEXEC.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-40716249764080511542008-08-21T17:02:00.003-05:002008-08-21T17:39:19.140-05:00Ejecucion de programa de windows desde sapFuncion para ejecutar una aplicacion win32 por medio de sap, se pueden pasar parametros a la funcion por medio del COMMANDLINE.<br /><br /><br />*&---------------------------------------------------------------------*<br />*& Form EJECUTA_EXE<br />*&---------------------------------------------------------------------*<br />* text<br />*----------------------------------------------------------------------*<br /><br />* FORM EJECUTA_EXE। CALL FUNCTION 'WS_EXECUTE' EXPORTING * DOCUMENT = ' ' * CD = ' ' * COMMANDLINE = ' ' * INFORM = ' ' PROGRAM = 'CALC।EXE' * EXCEPTIONS FRONTEND_ERROR = 1 NO_BATCH = 2 PROG_NOT_FOUND = 3 ILLEGAL_OPTION = 4 GUI_REFUSE_EXECUTE = 5 OTHERS = 6.<br />IF sy-subrc <> 0.<br /><br /> TEXT-01 = 'EL ARCHIVO NO PUEDE SER GENERADO'.<br /> CASE sy-subrc.<br /> WHEN 1.<br /> TEXT-02 = 'ERROR DE EJECUCION DE SAM'.<br /> perform f_mensaje_informa using text-01 text-02.<br /> WHEN 2.<br /> TEXT-02 = 'NO EJECUCION EN SAM'.<br /> perform f_mensaje_informa using text-01 text-02.<br /> WHEN 3.<br /> TEXT-02 = 'PROGRAMA "SAM" A EJECUTAR NO ENCONTRADO'.<br /> perform f_mensaje_informa using text-01 text-02.<br /> WHEN 4.<br /> TEXT-02 = 'OPCION NO APMITIDA PARA EJECUCION EN SAM'.<br /> perform f_mensaje_informa using text-01 text-02.<br /> WHEN 5.<br /> TEXT-02 = 'EJECUCION RECHAZADA EN SAP'.<br /> perform f_mensaje_informa using text-01 text-02.<br /> WHEN 6.<br /> TEXT-02 = 'ERROR DESCONOCIDO'.<br /> perform f_mensaje_informa using text-01 text-02.<br /> ENDCASE.<br />ENDIF.<br />ENDFORM. " EJECUTA_EXE<br /><br />*&---------------------------------------------------------------------*<br />*& Form F_MENSAJE_INFORMA<br />*&---------------------------------------------------------------------*<br />FORM F_MENSAJE_INFORMA USING P_TEXT_01<br /> P_TEXT_02.<br /> CALL FUNCTION 'POPUP_TO_INFORM'<br /> EXPORTING<br /> TXT1 = P_TEXT_01<br /> TXT2 = P_TEXT_02<br /> TITEL = 'WARNING Ventana informativa!!!!'.<br />ENDFORM. " F_MENSAJE_INFORMAAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-4559949059923540402008-08-21T15:59:00.003-05:002008-08-21T16:59:01.466-05:00FTP, Carga y Descarga de archivos.Este es el reporte para subir y bajar un archivo de texto desde una ubicacion ftp,<br /><br />Es importante mencionar que el ftp tiene que estar protegido con contraseña, ya que esta se manda a encriptar primero mediante CALL 'AB_RFC_X_SCRAMBLE_STRING' y despues se conecta al ftp, si no lleva contraseña, este nuca se conecta o muestra mensaje de error de privilegios no validos.<br /><br /><br />DATA:<br />* VARIABLES PARA CONECCION <span>FTP</span><br /> USER(64) TYPE C value 'usuario',<br /> PWD(64) TYPE C value 'password',<br /> HOST(64) TYPE C value 'host',<br /> FILENAME(80) TYPE C value 'carga/archivo।txt', <br /> DEST LIKE RFCDES-RFCDEST VALUE 'SAPFTP',<br /> HDL TYPE I,<br /> KEY TYPE I VALUE 26101957,<br /> DSTLEN TYPE I,<br /> BLOB_LENGTH TYPE I,<br /> BND1(18) TYPE C,<br /> BND2(1) TYPE C,<br /><br />* TABLAS INTERNAS<br /> BEGIN OF BLOB OCCURS 0,<br /> LINE(82) TYPE c,<br /> END OF BLOB,<br /><br /> BEGIN OF IT_<span>TABLE </span>OCCURS 0,<br /> PROVEEDOR(10),<br /> MATERIAL(18),<br /> ORG(4),<br /> END OF IT_TABLE.<br /><br /><br />*--- Inicio de Programa<br /> PERFORM TRY_UPLOAD_FILE.<br /> PERFORM TRY_DOWNLOAD_FILE.<br />*--- Fin de Programa<br /><br /><br />*&---------------------------------------------------------------------*<br />*& Form TRY_UPLOAD_FILE<br />*&---------------------------------------------------------------------*<br />FORM TRY_UPLOAD_FILE.<br /><br /> DESCRIBE FIELD PWD LENGTH DSTLEN.<br /> CALL 'AB_RFC_X_SCRAMBLE_STRING'<br /> ID 'SOURCE' FIELD PWD ID 'KEY' FIELD KEY<br /> ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD PWD<br /> ID 'DSTLEN' FIELD DSTLEN. <br /><br />*BLOB_LENGTH = 77.<br />*este campo es el que le dice al sap de que longuitud es cada renglon que traeremos del ftp<br /><br /><br /> CALL FUNCTION 'FTP_SERVER_TO_R3'<br /> EXPORTING<br /> HANDLE = HDL<br /> FNAME = FILENAME<br /> IMPORTING<br /> BLOB_LENGTH = BLOB_LENGTH<br /> TABLES<br /> BLOB = BLOB.<br /><br /> CALL FUNCTION 'FTP_DISCONNECT'<br /> EXPORTING<br /> HANDLE = HDL.<br /><br />*como el archivo lo insertamos en una cadena, loopeamos la tabla y la separamos.<br /> loop at blob.<br /> IT_TABLE-proveedor = blob-line+0(10).<br /> <span>IT</span>_<span>TABLE</span>-material = blob-line+10(18).<br /> <span>IT</span>_<span>TABLE</span>-org = blob-line+28(4).<br /> append <span>IT</span>_<span>TABLE</span>.<br /> endloop.<br />ENDFORM. " TRY_UPLOAD_FILE<br /><br /><br />*&---------------------------------------------------------------------*<br />*& Form TRY_DOWNLOAD_FILE<br />*&---------------------------------------------------------------------*<br />FORM TRY_DOWNLOAD_FILE.<br /> DESCRIBE FIELD PWD LENGTH DSTLEN.<br /> CALL 'AB_RFC_X_SCRAMBLE_STRING'<br /> ID 'SOURCE' FIELD PWD ID 'KEY' FIELD KEY<br /> ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD PWD<br /> ID 'DSTLEN' FIELD DSTLEN.<br /><br /> CALL FUNCTION 'FTP_CONNECT'<br /> EXPORTING<br /> USER = USER<br /> PASSWORD = PWD<br /> HOST = HOST<br /> RFC_DESTINATION = DEST<br /> IMPORTING<br /> HANDLE = HDL.<br /><br />DESCRIBE TABLE it_datos1 LINES lines.<br />blob_length = lines * 75 .<br /> CALL FUNCTION 'FTP_R3_TO_SERVER'<br /> EXPORTING<br /> HANDLE = HDL<br /> FNAME = FILENAME2<br /> BLOB_LENGTH = BLOB_LENGTH<br /> TABLES<br /> BLOB = IT_TABLE.<br /><br /> CALL FUNCTION 'FTP_DISCONNECT'<br /> EXPORTING<br /> HANDLE = HDL.<br />ENDFORM. " TRY_DOWNLOAD_FILEAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-69184852400848466162008-03-25T17:10:00.002-06:002008-03-25T17:11:51.722-06:00Iconos para ReportesREPORT ZICONS .<br />TABLES: ICON.<br />INCLUDE <ICON>.<br />FIELD-SYMBOLS: <F>.<br /><br />SELECT * FROM ICON.<br /> ASSIGN (ICON-NAME) TO <F>.<br /> WRITE: /(5) <F>, 20 '@',21 ICON-ID+1(2),23 '@',ICON-OLENG,<br /> ICON-BUTTON,ICON-STATUS,ICON-MESSAGE,ICON-FUNCTION,<br /> ICON-NAME.<br />ENDSELECT.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-72910348809823608222008-03-25T16:21:00.003-06:002008-03-25T16:33:09.601-06:00Graficos de Abap<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBzk-fts3RgSkTAIYQt9AsDh3nFSFXMjTJrz6wKBjND_4AebWLbZvfFe0pklMTvFD1m5gsk4WYf2RfeN_OJWyiB7j48haPDmyV9WpNI3568Db_yvJ9UjR_VZ5JjGrJxKuFQfhmaX51SA/s1600-h/sap+graph.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBzk-fts3RgSkTAIYQt9AsDh3nFSFXMjTJrz6wKBjND_4AebWLbZvfFe0pklMTvFD1m5gsk4WYf2RfeN_OJWyiB7j48haPDmyV9WpNI3568Db_yvJ9UjR_VZ5JjGrJxKuFQfhmaX51SA/s320/sap+graph.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5181810750698505058" /></a><br /><br />REPORT ZGRAPH .<br /><br />DATA: BEGIN OF ITAB_DATA OCCURS 0,<br /> DATANAME(15),<br /> QUANTITY1 TYPE I,<br /> QUANTITY2 TYPE I,<br /> QUANTITY3 TYPE I,<br /> END OF ITAB_DATA,<br /> BEGIN OF ITAB_OPTIONS OCCURS 0,<br /> OPTION(20),<br /> END OF ITAB_OPTIONS.<br /><br /> ITAB_DATA-DATANAME = 'Electricidad'.<br /> ITAB_DATA-QUANTITY1 = 55.<br /> ITAB_DATA-QUANTITY2 = 62.<br /> ITAB_DATA-QUANTITY3 = 59.<br /> APPEND ITAB_DATA.<br /><br /> ITAB_DATA-DATANAME = 'Gas'.<br /> ITAB_DATA-QUANTITY1 = 35.<br /> ITAB_DATA-QUANTITY2 = 52.<br /> ITAB_DATA-QUANTITY3 = 44.<br /> APPEND ITAB_DATA.<br /><br /> ITAB_DATA-DATANAME = 'Agua'.<br /> ITAB_DATA-QUANTITY1 = 18.<br /> ITAB_DATA-QUANTITY2 = 22.<br /> ITAB_DATA-QUANTITY3 = 19.<br /> APPEND ITAB_DATA.<br /><br /> CALL FUNCTION 'GRAPH_MATRIX_3D'<br /> EXPORTING<br /> COL1 = 'Ene'<br /> COL2 = 'Feb'<br /> COL3 = 'Mar'<br /> TITL = 'Gastos'<br /> TABLES<br /> DATA = ITAB_DATA<br /> OPTS = ITAB_OPTIONS<br /> EXCEPTIONSAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-67981564554019791902008-03-25T15:40:00.000-06:002008-03-25T15:42:59.492-06:00Principales Funciones abapCálculos<br />CALCULATE_DATE: Calcula la fecha futura basada en la entrada.<br /><br />DATE_TO_DAY: Vuelve el día para la fecha incorporada. <br /><br />DATE_COMPUTE_DAY: Vuelve el día laborable por una fecha<br /><br />DATE_GET_WEEK: Vuelve la semana por una fecha<br /><br />Los módulos de la función se relacionaron con (ALV) AVANZARON EL ESPECTADOR de la LISTA<br />REUSE_ALV_LIST_DISPLAY : Espectador de la lista de ABAP (EXHIBICIÓN de la LISTA)<br /><br />REUSE_ALV_GRID_DISPLAY : Pantalla completa de ALV GridControl<br /><br />REUSE_ALV_FIELDCATALOG_MERGE : Cree el catálogo del campo de la estructura del diccionario o de la tabla interna<br /><br />El módulo de la función se relacionó para cambiar seguir<br />CHANGEDOCUMENT_READ_HEADERS : Documentos leída y del formato del cambio<br /><br />DAY_ATTRIBUTES_GET: Cualidades de las vueltas para una gama de las fechas especificadas<br /><br />MONTHS_BETWEEN_TWO_DATES : Para conseguir el número de meses entre las dos fechas.<br /><br />END_OF_MONTH_DETERMINE_2 : Determina el final de un mes.<br /><br />HR_HK_DIFF_BT_2_DATES : Encuentre la diferencia entre dos fechas en años, meses y días.<br /><br />FIMA_DAYS_AND_MONTHS_AND_YEARS : Encuentre la diferencia entre dos fechas en años, meses y días.<br /><br />MONTH_NAMES_GET: Consiga los nombres del mes<br /><br />WEEK_GET_FIRST_DAY: Consiga el primer día de la semana<br /><br />HRGPBS_HESA_DATE_FORMAT : Ajuste a formato la fecha en formato de dd/mm/yyyy<br /><br />SD_CALC_DURATION_FROM_DATETIME : Encuentre la diferencia entre dos fechas/horas y divulgue la diferencia sobre horas<br /><br />L_MC_TIME_DIFFERENCE: Encuentre la diferencia del tiempo entre dos fechas/horas<br /><br />HR_99S_INTERVAL_BETWEEN_DATES : Diferencia entre dos fechas en los días, semanas, meses<br /><br />LAST_DAY_OF_MONTHS: Vuelve el día pasado del mes<br /><br />DATE_CHECK_PLAUSIBILITY :Compruebe para saber si hay la fecha inválida.<br /><br />DATE_2D_TO_4D_CONVERSION :Entrada del año: carácter 2 al carácter 4.<br /><br />DAY_IN_WEEK:Entre la fecha y dará el nombre del día el lunes 2 1 - martes….<br /><br />Módulos de la función relacionados con el formato<br /><br />CLOI_PUT_SIGN_IN_FRONT : Exhibe la muestra negativa delante del número<br /><br />RKD_WORD_WRAP: Envuelva el texto en varias líneas<br /><br />CONVERSION_EXIT_ALPHA_INPUT : Rellene los ceros al número en la izquierda<br /><br />CONVERSION_EXIT_ALPHA_OUTPUT : Elimine los ceros al número en la izquierda<br /><br />Los módulos de la función se relacionaron con los avisos del diálogo<br />POPUP_TO_CONFIRM: Exhibe un diálogo del popup con un mensaje definido por el usario para la confirmación<br /><br />POPUP_TO_GET_VALUE: Exhibe un diálogo del popup que solicita un valor para una tabla-fieldname particular<br /><br />SAPGUI_PROGRESS_INDICATOR : Exhibe una barra del progreso con el texto para denotar el porcentaje de la terminación y del estado<br /><br />FILENAME_GET: Exhibe un diálogo del popup para conseguir el nombre de fichero del servidor de la presentación<br /><br />F4_DATE: Exhibe un diálogo del popup para elegir la fecha<br /><br />GUI_UPLOAD: Upload un archivo del servidor de la presentación<br /><br />POPUP_TO_SELECT_MONTH : Exhiba un pop-up para seleccionar un mes<br /><br />Módulos de la función relacionados con la comunicación del RFC<br />RFC_CONNECTION_CLOSE: Cierre una conexión del RFC<br /><br />RFC_GET_SYSTEM_INFO: Dé la información del sistema de un sistema alejado<br /><br />Los módulos de la función se relacionaron con los archivos de la lectura/de la escritura <br />FILE_READ_AND_CONVERT_SAP_DATA: Uploads el archivo de la presentación o del servidor del uso en una tabla interna <br /><br />SUBST_GET_FILE_LIST: Para conseguir la lista de archivos del servidor del uso.<br /><br />ALSM_EXCEL_TO_INTERNAL_TABLE : Transferencia de datos de la herencia con Excel<br /><br />Módulos de la función relacionados con enviar email<br />SO_NEW_DOCUMENT_ATT_SEND_API1 - Envía email con los textos y los accesorios<br />SO_NEW_DOCUMENT_SEND_API1 - Envía email con los textos.<br /><br />Los módulos de la función se relacionaron con la ayuda F4<br />F4IF_INT_TABLE_VALUE_REQUEST - Ayuda F4 también que vuelve el valor que se exhibirá en tabla internaAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com1tag:blogger.com,1999:blog-20322244708988911.post-27972424719334309832008-03-12T12:38:00.002-06:002008-03-12T12:51:31.730-06:00Campos repetidos en dos tablas...<div xmlns='http://www.w3.org/1999/xhtml'>Continuando con mis posts con programas simples pero útiles, ahora les<br />traigo un que recibe dos tablas y devuelve todos los campos que<br />comparten ambas tablas (Comparando los dominios y no los nombres claro<br />está...)<br/><br/><a href='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMeecu3EohGKZIys_Gh8xCPQUS8oWpWrwe4XGz3mHrZv5VPlwULvYlWwGJ0Pw7lqMIvA3f_BDaFA7DyfU5xPt2JG5V2UR3f39Eax4agj6s6Z26IvnX43kpAUr-bu97DSaEMy13_HLlug/s1600-h/ZREPEATED_1.JPG' onblur='try {parent.deselectBloggerImageGracefully();} catch(e) {}'><img border='0' id='BLOGGER_PHOTO_ID_5163181006306546978' alt='' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMeecu3EohGKZIys_Gh8xCPQUS8oWpWrwe4XGz3mHrZv5VPlwULvYlWwGJ0Pw7lqMIvA3f_BDaFA7DyfU5xPt2JG5V2UR3f39Eax4agj6s6Z26IvnX43kpAUr-bu97DSaEMy13_HLlug/s400/ZREPEATED_1.JPG' style='margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;'/></a><br/><a href='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifwa7atNgNANg_z728O3Mo2i9-t1-OXE_YwGMsTrA8lJfuQ1akVvIjbN6zLSLSHhnRIq9eFyWZ9qn3sbNRuuP_-lR2fMGRCQcWNo9Z1PdojLGm-DsykXdTTNKw7M7QaPkkW509Uy1ZxQ/s1600-h/ZREPEATED_2.JPG' onblur='try {parent.deselectBloggerImageGracefully();} catch(e) {}'><img border='0' id='BLOGGER_PHOTO_ID_5163181096500860210' alt='' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifwa7atNgNANg_z728O3Mo2i9-t1-OXE_YwGMsTrA8lJfuQ1akVvIjbN6zLSLSHhnRIq9eFyWZ9qn3sbNRuuP_-lR2fMGRCQcWNo9Z1PdojLGm-DsykXdTTNKw7M7QaPkkW509Uy1ZxQ/s400/ZREPEATED_2.JPG' style='margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;'/></a><br/><code><br/>REPORT ydummy_atg NO STANDARD PAGE HEADING.<br/><br/>TYPES: BEGIN OF ty_repeated,<br/> fieldname TYPE dd03p-fieldname,<br/> ddtext TYPE dd03p-ddtext,<br/> END OF ty_repeated.<br/><br/>DATA: dd03p_table1 TYPE STANDARD TABLE OF dd03p,<br/> dd03p_table2 TYPE STANDARD TABLE OF dd03p,<br/> t_repeated TYPE STANDARD TABLE OF ty_repeated<br/> WITH HEADER LINE.<br/><br/>DATA: long_1 TYPE i,<br/> long_2 TYPE i,<br/> w_title TYPE string.<br/><br/>FIELD-SYMBOLS: &lt;fs_dd03p&gt; LIKE LINE OF dd03p_table1,<br/> &lt;fs_dd03p_aux&gt; LIKE LINE OF dd03p_table1,<br/> &lt;fs_repeated&gt; LIKE LINE OF t_repeated.<br/><br/>SELECTION-SCREEN BEGIN OF BLOCK test.<br/>PARAMETERS:<br/> p_tab_1 TYPE dd17s-sqltab,<br/> p_tab_2 TYPE dd17s-sqltab.<br/>SELECTION-SCREEN END OF BLOCK test.<br/><br/>START-OF-SELECTION.<br/><br/> CONCATENATE p_tab_1 p_tab_2 INTO<br/> w_title SEPARATED BY '-'.<br/><br/> sy-title = w_title.<br/><br/> CALL FUNCTION 'DDIF_TABL_GET'<br/> EXPORTING<br/> name = p_tab_1<br/> state = 'A'<br/> langu = sy-langu<br/> TABLES<br/> dd03p_tab = dd03p_table1<br/> EXCEPTIONS<br/> illegal_input = 1<br/> OTHERS = 2.<br/><br/> DELETE dd03p_table1 WHERE rollname EQ space.<br/><br/> CALL FUNCTION 'DDIF_TABL_GET'<br/> EXPORTING<br/> name = p_tab_2<br/> state = 'A'<br/> langu = sy-langu<br/> TABLES<br/> dd03p_tab = dd03p_table2<br/> EXCEPTIONS<br/> illegal_input = 1<br/> OTHERS = 2.<br/><br/> DELETE dd03p_table2 WHERE rollname EQ space.<br/><br/> DESCRIBE TABLE dd03p_table1 LINES long_1.<br/> DESCRIBE TABLE dd03p_table2 LINES long_2.<br/><br/> IF long_1 GT long_2.<br/> LOOP AT dd03p_table1 ASSIGNING &lt;fs_dd03p&gt;.<br/> READ TABLE dd03p_table2 ASSIGNING &lt;fs_dd03p_aux&gt;<br/> WITH KEY rollname = &lt;fs_dd03p&gt;-rollname.<br/> IF sy-subrc EQ 0.<br/> MOVE &lt;fs_dd03p_aux&gt;-fieldname TO t_repeated-fieldname.<br/> MOVE &lt;fs_dd03p_aux&gt;-ddtext TO t_repeated-ddtext.<br/> APPEND t_repeated.<br/> ENDIF.<br/> ENDLOOP.<br/> ELSE.<br/> LOOP AT dd03p_table2 ASSIGNING &lt;fs_dd03p&gt;.<br/> READ TABLE dd03p_table1 ASSIGNING &lt;fs_dd03p_aux&gt;<br/> WITH KEY rollname = &lt;fs_dd03p&gt;-rollname.<br/> IF sy-subrc EQ 0.<br/> MOVE &lt;fs_dd03p_aux&gt;-fieldname TO t_repeated-fieldname.<br/> MOVE &lt;fs_dd03p_aux&gt;-ddtext TO t_repeated-ddtext.<br/> APPEND t_repeated.<br/> ENDIF.<br/> ENDLOOP.<br/> ENDIF.<br/><br/> LOOP AT t_repeated ASSIGNING &lt;fs_repeated&gt;.<br/> WRITE:/ &lt;fs_repeated&gt;-fieldname,&lt;fs_repeated&gt;-ddtext.<br/> ENDLOOP.</code></div>Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-17550148337121575812008-03-12T12:33:00.002-06:002008-03-12T12:53:02.488-06:00Tablas por Modulo y Precedencia<div xmlns='http://www.w3.org/1999/xhtml'><div>Tablas en FI y sus relaciones.</div><div> </div><img border='0' src='http://3.bp.blogspot.com/_-GVRLC2t5Bs/R9fqeMGtZ0I/AAAAAAAAABU/OG4gmYcJrts/s400/tables2.gif' alt='' style='margin: 0px auto 10px; display: block; text-align: center;' id='BLOGGER_PHOTO_ID_5176864101052016450'/> <img border='0' src='http://2.bp.blogspot.com/_-GVRLC2t5Bs/R9fq-8GtZ1I/AAAAAAAAABc/dhhocpuCLPI/s400/tables3.gif' alt='' style='margin: 0px auto 10px; display: block; text-align: center;' id='BLOGGER_PHOTO_ID_5176864663692732242'/> <img border='0' src='http://1.bp.blogspot.com/_-GVRLC2t5Bs/R9frHsGtZ2I/AAAAAAAAABk/XW-LmpA6igc/s400/tables4.gif' alt='' style='margin: 0px auto 10px; display: block; text-align: center;' id='BLOGGER_PHOTO_ID_5176864814016587618'/> <img border='0' src='http://3.bp.blogspot.com/_-GVRLC2t5Bs/R9frVMGtZ3I/AAAAAAAAABs/LFH1WtmLu_0/s400/tables5.gif' alt='' style='margin: 0px auto 10px; display: block; text-align: center;' id='BLOGGER_PHOTO_ID_5176865045944821618'/> <img border='0' src='http://4.bp.blogspot.com/_-GVRLC2t5Bs/R9frfcGtZ4I/AAAAAAAAAB0/CvIpgldMFLs/s400/tables6.gif' alt='' style='margin: 0px auto 10px; display: block; text-align: center;' id='BLOGGER_PHOTO_ID_5176865222038480770'/><br/><br/></div>Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-55529927465227269392008-03-07T18:11:00.010-06:002008-03-14T18:14:12.505-06:00Introduccion<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNA4hZjmzQUl21V5tzsbyyOwNWvVXsKYRMxxPVodFxX39gDmUKzuI5o4KuHWjQb3-ZAjhRsKKMrxyFvLxigJRLt0q5J8trnfaHJ4NSKuHxUcughHY2I_RbOjIqBmVnyEs-2xhsyZhm8g/s1600-h/sapabaptman.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNA4hZjmzQUl21V5tzsbyyOwNWvVXsKYRMxxPVodFxX39gDmUKzuI5o4KuHWjQb3-ZAjhRsKKMrxyFvLxigJRLt0q5J8trnfaHJ4NSKuHxUcughHY2I_RbOjIqBmVnyEs-2xhsyZhm8g/s320/sapabaptman.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5177753105431885218" /></a><br /><br />Este es un Blog de codigo ABAP, en el se encuentran extractos de programas que resultan utiles.<br />Este Blog fue creado apenas en este año, espero poder segui haciendolo crecer para brindar un recurso util en procesos de programacion, Las categorias se encuentran en la parte derecha.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix8KBN680yRcWoCTG1UVxQ097qF5LR2-L0blcvhgIFdEm31_5-v4YTPzWQPCkzNMC4H2ENIsgJAyb3bvpe7_vasdgxobP9roW8gmwCLjehoKFH0Dt-SUTFEZbI08OU0D7NfFl1uLY8sQ/s1600-h/sap_foto.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix8KBN680yRcWoCTG1UVxQ097qF5LR2-L0blcvhgIFdEm31_5-v4YTPzWQPCkzNMC4H2ENIsgJAyb3bvpe7_vasdgxobP9roW8gmwCLjehoKFH0Dt-SUTFEZbI08OU0D7NfFl1uLY8sQ/s400/sap_foto.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5175165434880685378" /></a><br /><br />SAP AG (Systeme, Anwendungen und Produkte) (Sistemas, Aplicaciones y Productos), con sede en Walldorf (Alemania), es el primer proveedor de software empresarial en el mundo. Como empresa, comercializa un conjunto de aplicaciones de software para soluciones integradas de negocios, entre ellas mySAP Business Suite, que provee soluciones escalables que permiten mejorar continuamente, con más de 1.000 procesos de negocio consideradas las mejores prácticas empresariales.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9eJktfsgbbY_3OUJf_iDjh0ftXOQkjXNju5ZFinpCvjWAeasYIDscRJ52qQJBtPZh3hLdoO9GRIn5o0Au9m2i3PCyEMQVYYMusiuLHq0B2dFL2qSvAzGNsTPUdhPTk2PIeI29hc90iA/s1600-h/sap.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9eJktfsgbbY_3OUJf_iDjh0ftXOQkjXNju5ZFinpCvjWAeasYIDscRJ52qQJBtPZh3hLdoO9GRIn5o0Au9m2i3PCyEMQVYYMusiuLHq0B2dFL2qSvAzGNsTPUdhPTk2PIeI29hc90iA/s320/sap.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5175165580909573458" /></a><br />SAP es considerada como el tercer proveedor independiente de software del mundo y el mayor fabricante europeo de software. Con 12 millones de usuarios, 100.700 instalaciones, y más de 1.500 socios, es la compañía más grande de software Inter-empresa. A finales de 2005, SAP empleaba a 35.873 personas (fuente empleados) en más de 50 países y sus ingresos anuales fueron de 8.513 millones de euros.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR-wsw17Cfw8qYdKZSit9y_nh7S-k72FtQjkoE7iEWKtcVFeU1xkG_lgMb8G0U-G95xg-pgDGuHa7eXCTvaDJMOHm_8I90q0TJ4bvydV5s9XgoipiCQyNwRMtqr0wnLqp3EhKY3bRabQ/s1600-h/abap4.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR-wsw17Cfw8qYdKZSit9y_nh7S-k72FtQjkoE7iEWKtcVFeU1xkG_lgMb8G0U-G95xg-pgDGuHa7eXCTvaDJMOHm_8I90q0TJ4bvydV5s9XgoipiCQyNwRMtqr0wnLqp3EhKY3bRabQ/s320/abap4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5175166130665387378" /></a><br />ABAP (Advanced Business Application Programming) es un lenguaje de cuarta generación, propiedad de SAP, que se utiliza para programar la mayoría de sus productos (R/3, mySAP Business suite...). Utiliza sentencias de Open SQL para conectarse con prácticamente cualquier base de datos. Cuenta con miles de funciones para el manejo de archivos, bases de datos, fechas, etc... Permite conexiones RFC (Remote Function Calls) para conectar a los sistemas SAP con cualquier otro sistema o lenguaje de programación.<br /><br />SAP suministra de manera casi gratuita una instalación limitada de R/3 llamada MiniSAP para la práctica de la programación en ABAP.<br /><br />*source WikipediaAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-10613218372737891282008-03-07T11:23:00.003-06:002008-03-07T11:32:34.661-06:00ALV ROBOT.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY_sH-G2NDwn8Sq8hxEtxbNtNX8IIOr_0-phanaZrz_NnTEbk3tNS_1kKiBkn31oEsksBjOKqsq4GMMq7QRN_mF7EcmH1L9z5shJ7a7Ia01R51BgQ0Dmjw5Q0iak_AQ123k2SSo6RkRA/s1600-h/alvrobot.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY_sH-G2NDwn8Sq8hxEtxbNtNX8IIOr_0-phanaZrz_NnTEbk3tNS_1kKiBkn31oEsksBjOKqsq4GMMq7QRN_mF7EcmH1L9z5shJ7a7Ia01R51BgQ0Dmjw5Q0iak_AQ123k2SSo6RkRA/s320/alvrobot.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5175053954709550194" /></a><br />Este es un reporte que muestra un tipo de ALV sin necesidad de usar dynpro, es solo un simple reporte, en el cual me apoyo de una tabla llamada ZRF_t0002, contiene entre otros campos:<br />zrf_t0002-id_cliente, zrf_t0002-nombre, zrf_t0002-apellido1, zrf_t0002-apellido2.<br />es facil de impelementar y le da una vista mas profesional a nuetros reportes, espero sea de utilidad.<br /><br />REPORT zalv_robot .<br /><br />TABLES: ddshretval,<br /> zrf_t0002.<br /><br />TYPE-POOLS: slis.<br /><br />DATA: BEGIN OF it_cliente OCCURS 0,<br /> cliente LIKE zrf_t0002-id_cliente,<br /> END OF it_cliente.<br /><br />DATA: BEGIN OF it_match OCCURS 0, " Esta tabla nos devuelve la ayuda<br /> shlpname LIKE ddshretval-shlpname,<br /> fieldname LIKE ddshretval-fieldname,<br /> recordpos LIKE ddshretval-recordpos,<br /> fieldval LIKE ddshretval-fieldval,<br /> retfield LIKE ddshretval-retfield,<br /> END OF it_match.<br /><br /><br />TYPES: BEGIN OF tp_data,<br /> cliente LIKE zrf_t0002-id_cliente,<br /> nombre LIKE zrf_t0002-nombre,<br /> apellido1 LIKE zrf_t0002-apellido1,<br /> apellido2 LIKE zrf_t0002-apellido2,<br />END OF tp_data,<br />tp_tbl_data TYPE STANDARD TABLE OF tp_data.<br /><br /><br /><br />* Report data to be shown.<br />DATA: it_data TYPE STANDARD TABLE OF tp_data.<br /><br />* Heading of the report.<br />DATA: t_heading TYPE slis_t_listheader.<br /><br />*======================= Selection Screen ==========================*<br />DATA: vcliente LIKE zrf_t0002-id_cliente,<br /> vnombre LIKE zrf_t0002-nombre.<br />SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.<br />SELECT-OPTIONS id_cli FOR zrf_t0002-id_cliente.<br />SELECTION-SCREEN: END OF BLOCK b1.<br /><br />*======================== Event Blocks =============================*<br />AT SELECTION-SCREEN ON VALUE-REQUEST FOR id_cli-low.<br /> SELECT id_cliente<br /> FROM zrf_t0002<br /> INTO TABLE it_cliente<br /> WHERE id_cliente IN id_cli.<br /> SORT it_cliente BY cliente.<br /><br /><br /> CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'<br /> EXPORTING<br /> retfield = 'CLIENTE'<br /> window_title = 'CLIENTE'<br /> value_org = 'S'<br /> TABLES<br /> value_tab = it_cliente<br /> return_tab = it_match<br /> EXCEPTIONS<br /> parameter_error = 1<br /> no_values_found = 2<br /> OTHERS = 3.<br /><br /> IF sy-subrc EQ 0.<br /> READ TABLE it_match INDEX 1.<br /> vcliente = it_match-fieldval.<br /> MOVE vcliente TO id_cli-low.<br /> SELECT SINGLE nombre FROM zrf_t0002<br /> INTO vnombre WHERE id_cliente IN id_cli.<br /> ENDIF.<br /><br />AT SELECTION-SCREEN ON VALUE-REQUEST FOR id_cli-high.<br /> SELECT id_cliente<br /> FROM zrf_t0002<br /> INTO TABLE it_cliente<br /> WHERE id_cliente IN id_cli.<br /> SORT it_cliente BY cliente.<br /><br /><br /> CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'<br /> EXPORTING<br /> retfield = 'ID_CLIENTE'<br /> window_title = 'CLIENTE'<br /> value_org = 'S'<br /> TABLES<br /> value_tab = it_cliente<br /> return_tab = it_match<br /> EXCEPTIONS<br /> parameter_error = 1<br /> no_values_found = 2<br /> OTHERS = 3.<br /><br /> IF sy-subrc EQ 0.<br /> READ TABLE it_match INDEX 1.<br /> vcliente = it_match-fieldval.<br /> MOVE vcliente TO id_cli-high.<br /> SELECT SINGLE nombre FROM zrf_t0002<br /> INTO vnombre WHERE id_cliente IN id_cli.<br /><br /> ENDIF.<br /><br />START-OF-SELECTION.<br /> PERFORM get_data USING it_data.<br /><br /><br />END-OF-SELECTION.<br /> PERFORM build_alv USING it_data t_heading.<br /><br />*======================== Subroutines ==============================*<br /><br />*&------------------------------------------------------------------*<br />*& Form get_data<br />*&------------------------------------------------------------------*<br />* Gets the information to be shown in the report.<br />*-------------------------------------------------------------------*<br />FORM get_data USING t_data TYPE tp_tbl_data.<br /><br /> SELECT zrf_t0002~id_cliente<br /> zrf_t0002~nombre<br /> zrf_t0002~apellido1<br /> zrf_t0002~apellido2<br /><br /> INTO TABLE t_data<br /> FROM zrf_t0002<br /> WHERE zrf_t0002~id_cliente IN id_cli.<br /><br />ENDFORM. " get_data<br /><br /><br />*&------------------------------------------------------------------*<br />*& Form build_alv<br />*&------------------------------------------------------------------*<br />* Builds and display the ALV Grid.<br />*-------------------------------------------------------------------*<br />FORM build_alv USING t_data TYPE tp_tbl_data<br /> t_heading TYPE slis_t_listheader.<br /><br />* ALV required data objects.<br /> DATA: w_title TYPE lvc_title,<br /> w_repid TYPE syrepid,<br /> w_comm TYPE slis_formname,<br /> w_status TYPE slis_formname,<br /> x_layout TYPE slis_layout_alv,<br /> t_event TYPE slis_t_event,<br /> t_fieldcat TYPE slis_t_fieldcat_alv,<br /> t_sort TYPE slis_t_sortinfo_alv.<br /><br /><br /><br /> REFRESH t_fieldcat.<br /> REFRESH t_event.<br /> REFRESH t_sort.<br /> CLEAR x_layout.<br /> CLEAR w_title.<br /><br />* Field Catalog<br /> PERFORM set_fieldcat2 USING:<br />1 'CLIENTE' 'CLIENTE' 'ZRF_T0002' 7 space 'CLIENTE'<br />'CLIENTE' 'CLIENTE' 'CLIENTE' space space space space space<br />space t_fieldcat ,<br />3 'NOMBRE' 'NOMBRE' 'ZRF_T0002' 15 space 'NOMBRE' 'NOMBRE'<br />'NOMBRE' 'NOMBRE' space space space space space space t_fieldcat ,<br />4 'APELLIDO1' 'APELLIDO1' 'ZPM_T0004' 25 space 'APELLIDO1'<br />'APELLIDO1' 'APELLIDO1' 'APELLIDO1' space<br />space space space space space t_fieldcat ,<br />5 'APELLIDO2' 'APELLIDO2' 'ZPM_T0004' 25 space 'APELLIDO2'<br />'APELLIDO2' 'APELLIDO2' 'APELLIDO2' space<br />space space space space space t_fieldcat .<br /><br /><br />* Layout<br /> x_layout-zebra = 'X'.<br /><br />* Top of page heading<br /> PERFORM set_top_page_heading USING t_heading t_event.<br /><br />* Events<br /> PERFORM set_events USING t_event.<br /><br />* GUI Status<br /> w_status = ''.<br /> w_repid = sy-repid.<br /><br />* Title<br /><br />* User commands<br /> w_comm = 'USER_COMMAND'.<br /><br /><br />* Displays the ALV grid<br /> CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'<br /> EXPORTING<br /> i_callback_program = w_repid<br /> it_fieldcat = t_fieldcat<br /> is_layout = x_layout<br /> it_sort = t_sort<br /> i_callback_pf_status_set = w_status<br /> i_callback_user_command = w_comm<br /> i_save = 'X'<br /> it_events = t_event<br /> i_grid_title = w_title<br /> TABLES<br /> t_outtab = t_data<br /> EXCEPTIONS<br /> program_error = 1<br /> OTHERS = 2.<br /> IF sy-subrc <> 0.<br /> MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno<br /> WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.<br /> ENDIF.<br /><br />ENDFORM. " build_alv.<br /><br /><br />*&------------------------------------------------------------------*<br />*& Form set_top_page_heading<br />*&------------------------------------------------------------------*<br />* Creates the report headings.<br />*-------------------------------------------------------------------*<br />FORM set_top_page_heading USING t_heading TYPE slis_t_listheader<br /> t_events TYPE slis_t_event.<br /><br /> DATA: x_heading TYPE slis_listheader,<br /> x_event TYPE LINE OF slis_t_event.<br /><br />* Report title<br /> CLEAR t_heading[].<br /> CLEAR x_heading.<br /> x_heading-typ = 'H'.<br /> x_heading-info = ''(001).<br /> APPEND x_heading TO t_heading.<br /><br />* Date of execution<br /> CLEAR x_heading.<br /> x_heading-typ = 'S'.<br /> x_heading-key = 'Date: '.<br /> WRITE sy-datum TO x_heading-info.<br /> APPEND x_heading TO t_heading.<br /><br />* Time of execution<br /> CLEAR x_heading.<br /> x_heading-typ = 'S'.<br /> x_heading-key = 'Time: '.<br /> WRITE sy-uzeit TO x_heading-info.<br /> APPEND x_heading TO t_heading.<br /><br />* Top of page event<br /> x_event-name = slis_ev_top_of_page.<br /> x_event-form = 'TOP_OF_PAGE'.<br /> APPEND x_event TO t_events.<br /><br />ENDFORM.<br /><br />*&------------------------------------------------------------------*<br />*& Form set_events<br />*&------------------------------------------------------------------*<br />* Sets the events for ALV.<br />* The TOP_OF_PAGE event is alredy being registered in<br />* the set_top_page_heading subroutine.<br />*-------------------------------------------------------------------*<br />FORM set_events USING t_events TYPE slis_t_event.<br /><br /> DATA: x_event TYPE LINE OF slis_t_event.<br /><br />ENDFORM.<br /><br />*&------------------------------------------------------------------*<br />*& Form set_order<br />*&------------------------------------------------------------------*<br />* Adds an entry to the order table.<br />*-------------------------------------------------------------------*<br />FORM set_order USING p_fieldname p_tabname p_up p_down p_subtot<br /> t_sort TYPE slis_t_sortinfo_alv.<br /><br /> DATA: x_sort TYPE slis_sortinfo_alv.<br /><br /> CLEAR x_sort.<br /> x_sort-fieldname = p_fieldname.<br /> x_sort-tabname = p_tabname.<br /> x_sort-up = p_up.<br /> x_sort-down = p_down.<br /> x_sort-subtot = p_subtot.<br /> APPEND x_sort TO t_sort.<br /><br /><br />ENDFORM. "set_order<br /><br />*-------------------------------------*<br />FORM set_fieldcat2 USING<br /> p_colpos p_fieldname p_ref_fieldname p_ref_tabname<br /> p_outputlen p_noout<br /> p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt<br /> p_hotspot p_showasicon p_checkbox p_edit<br /> p_dosum<br /> t_fieldcat TYPE slis_t_fieldcat_alv.<br /><br /> DATA: wa_fieldcat TYPE slis_fieldcat_alv.<br /><br /> CLEAR wa_fieldcat.<br /><br />* General settings<br /> wa_fieldcat-fieldname = p_fieldname.<br /> wa_fieldcat-col_pos = p_colpos.<br /> wa_fieldcat-no_out = p_noout.<br /> wa_fieldcat-hotspot = p_hotspot.<br /> wa_fieldcat-checkbox = p_checkbox.<br /> wa_fieldcat-icon = p_showasicon.<br /> wa_fieldcat-do_sum = p_dosum.<br /><br /> IF p_ref_tabname IS INITIAL.<br /> wa_fieldcat-rollname = p_ref_fieldname.<br /> ELSE.<br /> wa_fieldcat-ref_tabname = p_ref_tabname.<br /> IF p_ref_fieldname EQ space.<br /> wa_fieldcat-ref_fieldname = wa_fieldcat-fieldname.<br /> ELSE.<br /> wa_fieldcat-ref_fieldname = p_ref_fieldname.<br /> ENDIF.<br /> ENDIF.<br /><br />* Set output length.<br /> IF NOT p_outputlen IS INITIAL.<br /> wa_fieldcat-outputlen = p_outputlen.<br /> ENDIF.<br /><br />* Set text headers.<br /> IF NOT p_seltext_m IS INITIAL.<br /> wa_fieldcat-seltext_m = p_seltext_m.<br /> ENDIF.<br /><br /> IF NOT p_seltext_l IS INITIAL.<br /> wa_fieldcat-seltext_l = p_seltext_l.<br /> ENDIF.<br /><br /> IF NOT p_seltext_s IS INITIAL.<br /> wa_fieldcat-seltext_s = p_seltext_s.<br /> ENDIF.<br /><br /> IF NOT p_reptext_ddic IS INITIAL.<br /> wa_fieldcat-reptext_ddic = p_reptext_ddic.<br /> ENDIF.<br /><br /> IF NOT p_ddictxt IS INITIAL.<br /> wa_fieldcat-ddictxt = p_ddictxt.<br /> ENDIF.<br /><br />* Set as editable or not.<br /> IF NOT p_edit IS INITIAL.<br /> wa_fieldcat-input = 'X'.<br /> wa_fieldcat-edit = 'X'.<br /> ENDIF.<br /><br /> APPEND wa_fieldcat TO t_fieldcat.<br /><br />ENDFORM. "set_fieldcat2<br /><br />*======================== Subroutines called by ALV ================*<br /><br />*&------------------------------------------------------------------*<br />*& Form top_of_page<br />*&------------------------------------------------------------------*<br />* Called on top_of_page ALV event.<br />* Prints the heading.<br />*-------------------------------------------------------------------*<br />FORM top_of_page.<br /> CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'<br /> EXPORTING<br /> it_list_commentary = t_heading.<br />ENDFORM. " alv_top_of_page<br /><br />*&------------------------------------------------------------------*<br />*& Form user_command<br />*&------------------------------------------------------------------*<br />* Called on user_command ALV event.<br />* Executes custom commands.<br />*-------------------------------------------------------------------*<br />FORM user_command USING r_ucomm LIKE sy-ucomm<br /> rs_selfield TYPE slis_selfield.<br /><br /><br />ENDFORM. "user_commandAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-61410714677797548582008-02-29T13:01:00.003-06:002008-03-07T11:48:49.644-06:00Creacion de un TextBox en Dynpro<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtsGUig389HdkBiskZ_KeWLcndVZ_0jZzJP5JVZ9VtoPTfvhQoMUEUvEtaXyFltFFsyuBkrc-FBAv8sukUFWyL5tIscjZcenmZeVllQax4iRtGm2un9BczWzGTx0fWxXMypqq39VZlFw/s1600-h/textbox.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtsGUig389HdkBiskZ_KeWLcndVZ_0jZzJP5JVZ9VtoPTfvhQoMUEUvEtaXyFltFFsyuBkrc-FBAv8sukUFWyL5tIscjZcenmZeVllQax4iRtGm2un9BczWzGTx0fWxXMypqq39VZlFw/s320/textbox.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5175058120827827346" /></a><br />Codigo para insertar un ComboBox en un Dynpro parecido a los de Visual Basic, Debemos tener un input/output field en la pantalla, llamado "mes", etse field debe tener la propiedad "DropDown" en "ListBox".<br /><br />********************<br />FLOW LOGIC DYNPROO<br />-----------------------<br />PROCESS BEFORE OUTPUT.<br />MODULE PBO. "STATUS_0100.<br /><br />PROCESS AFTER INPUT.<br />MODULE PAI. "USER_COMMAND_0100.<br /><br />PROCESS ON VALUE-REQUEST.<br />FIELD MES MODULE SET_DATA_MES.<br /><br /><br /><br /><br />Codigo:<br />***********************<br />*INCLUDE TOP<br />***********************<br />DATA:<br /> itabitems like listitem occurs 0 with header line,<br /><br /><br />*****************<br />*INCLUDE OUTPUT<br />*****************<br />*----------------------------------------------------------------------*<br />* INCLUDE ZRF_0009O01 *<br />*----------------------------------------------------------------------*<br />*&---------------------------------------------------------------------*<br />*& Module PBO OUTPUT<br />*&---------------------------------------------------------------------*<br />* text<br />*----------------------------------------------------------------------*<br />MODULE pbo OUTPUT.<br /> SET PF-STATUS '009'.<br /> SET TITLEBAR 'MAINTITLE '.<br /><br />ENDMODULE. " PBO OUTPUT<br /><br /><br />************************<br />*INCLUDE INPUT<br />************************<br />*----------------------------------------------------------------------*<br />* INCLUDE ZRF_0009I01 *<br />*----------------------------------------------------------------------*<br />*&---------------------------------------------------------------------*<br />*& Module PAI INPUT<br />*&---------------------------------------------------------------------*<br />* text<br />*----------------------------------------------------------------------*<br />MODULE pai INPUT.<br /> CASE sy-ucomm.<br /> WHEN 'BACK' OR 'EXIT' OR 'CANC'.<br /> PERFORM leave_program.<br /> ENDCASE.<br /><br />ENDMODULE. " PAI INPUT<br />*&---------------------------------------------------------------------*<br />*& Module SET_DATA_MES INPUT<br />*&---------------------------------------------------------------------*<br />* text<br />*----------------------------------------------------------------------*<br />MODULE set_data_mes INPUT.<br /> IF CONT = 0.<br /> CONT = 1.<br /> itabitems-item = 'ENERO'. APPEND itabitems.<br /> itabitems-item = 'FEBRERO'. APPEND itabitems.<br /> itabitems-item = 'MARZO'. APPEND itabitems.<br /> itabitems-item = 'ABRIL'. APPEND itabitems.<br /> itabitems-item = 'MAYO'. APPEND itabitems.<br /> itabitems-item = 'JUNIO'. APPEND itabitems.<br /> itabitems-item = 'JULIO'. APPEND itabitems.<br /> itabitems-item = 'AGOSTO'. APPEND itabitems.<br /> itabitems-item = 'SEPTIEMBRE'. APPEND itabitems.<br /> itabitems-item = 'OCTUBRE'. APPEND itabitems.<br /> itabitems-item = 'NOVIEMBRE'. APPEND itabitems.<br /> itabitems-item = 'DICIEMBRE'. APPEND itabitems.<br /><br /> CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'<br /> EXPORTING<br /> retfield = 'CARRID'<br /> value_org = 'S'<br /> TABLES<br /> value_tab = itabitems<br /> EXCEPTIONS<br /> parameter_error = 1<br /> no_values_found = 2<br /> OTHERS = 3.<br /> IF sy-subrc <> 0.<br /> MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno<br /> WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.<br /> ENDIF.<br />ENDIF.<br />ENDMODULE. " SET_DATA_MES INPUT<br /><br /><br /><br />******************************<br />*INCLUDE FORMS<br />******************************<br />*----------------------------------------------------------------------*<br />* INCLUDE ZRF_0009F01 *<br />*----------------------------------------------------------------------*<br />*&---------------------------------------------------------------------*<br />*& Form LEAVE_PROGRAM<br />*&---------------------------------------------------------------------*<br />FORM leave_program.<br /> LEAVE PROGRAM.<br />ENDFORM. " LEAVE_PROGRAMAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com1tag:blogger.com,1999:blog-20322244708988911.post-20670786082092795792008-02-29T11:36:00.004-06:002008-03-07T11:55:53.992-06:00ALV TREE<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjumRpf93hwz8On2xVwF4_dkH4Ytc_sCYMJ5mZrffnYVLCO53FWF9hshv3AxA94214fHFZPNpew81z0nitWskHzDCKLZQRNKIHdChErH2OkGFM2-_lEAPiK7Lys4WgB-RZ9Taeubq68Tg/s1600-h/alv+tree.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjumRpf93hwz8On2xVwF4_dkH4Ytc_sCYMJ5mZrffnYVLCO53FWF9hshv3AxA94214fHFZPNpew81z0nitWskHzDCKLZQRNKIHdChErH2OkGFM2-_lEAPiK7Lys4WgB-RZ9Taeubq68Tg/s320/alv+tree.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5175059941893960866" /></a><br />Este Programa permite crear un ALV TREE en un customcontrol, debemos tener customcontrol en nuestra dynproo llamado "CCONTAINER". <br /><br />En este ejemplo utilizo una tabla llamada zrf_t0000, cuya estructura es la siguiente.<br />MANDT-----------MANDT<br />ID--------------NUMC<br />DEPARTAMENTOS---CHAR<br />PANTALLAS-------CHAR<br />TRANSACCIONES---CHAR<br /><br /><br /><br />CODIGO:<br />********************************<br />Screen Flow Logic:<br />********************************<br />PROCESS BEFORE OUTPUT.<br />MODULE STATUS_0100.<br /> <br />PROCESS AFTER INPUT.<br />MODULE USER_COMMAND_0100.<br />--------------------------------<br /><br /><br />**********************<br />*INCLUDE TOP<br />**********************<br />*&---------------------------------------------------------------------*<br />*& Include ZALVTREETOP *<br />*& *<br />*&---------------------------------------------------------------------*<br />PROGRAM ZALVTREE.<br /><br />tables:<br /> ZRF_T0000.<br /><br />include <icon>.<br /><br />DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree,<br /> g_custom_container TYPE REF TO cl_gui_custom_container.<br /><br />DATA: gt_TONO TYPE ZRF_T0000 OCCURS 0, "Output-Table<br /> ok_code LIKE sy-ucomm,<br /> save_ok LIKE sy-ucomm, "OK-Code<br /> g_max type i value 255,<br /> lztono like line of GT_tono.<br /><br />DATA:<br /> CAT_CAMPOS TYPE LVC_T_FCAT,<br /> LCAT_CAMPOS LIKE LINE OF CAT_CAMPOS.<br /><br /><br /><br />*---------------------------------------------------------------<br />* LOCAL CLASSES<br />*---------------------------------------------------------------<br />*§1. Define a (local) class for event handling<br /><br />CLASS lcl_tree_event_receiver DEFINITION.<br /><br /> PUBLIC SECTION.<br />*§2. Define an event handler method for each event you want to react to.<br /> METHODS handle_node_double_click<br /> FOR EVENT node_double_click OF cl_gui_alv_tree<br /> IMPORTING node_key sender.<br />* 'sender' is an implicit event parameter that is provided by<br />* ABAP Objects runtime system. It contains a reference to the<br />* object that fired the event. You may directly use it to<br />* call methods of this instance.<br /><br />ENDCLASS.<br />******************************************************************<br />CLASS lcl_tree_event_receiver IMPLEMENTATION.<br />*§3. Implement your event handler methods.<br /><br /> METHOD handle_node_double_click.<br /> data: lt_children type lvc_t_nkey.<br /> data temp type p.<br /> DATA: e_node_text type LVC_VALUE.<br /> DATA: TRANSACCION(10) TYPE C.<br />*first check if the node is a leaf, i.e. can not be expanded<br /><br /> call method sender->get_children<br /> exporting i_node_key = node_key<br /> importing et_children = lt_children.<br /><br /> if lt_children is initial.<br />****************************************************************<br />CALL METHOD sender->get_outtab_line<br /> EXPORTING i_node_key = node_key<br /> IMPORTING e_node_text = e_node_text.<br /><br /> SELECT TRANSACCIONES INTO TRANSACCION<br /> FROM ZRF_T0000<br /> WHERE PANTALLAS = e_node_text.<br /> ENDSELECT.<br /> CALL TRANSACTION TRANSACCION.<br />****************************************************************<br /> endif.<br /> ENDMETHOD.<br />ENDCLASS.<br /><br /><br /><br />**********************<br />* INCLUDE OUTPUT<br />**********************<br />*----------------------------------------------------------------------*<br />* INCLUDE ZALVTREEO01 *<br />*----------------------------------------------------------------------*<br />*&---------------------------------------------------------------------*<br />*& Module STATUS_0100 OUTPUT<br />*&---------------------------------------------------------------------*<br />* text<br />*----------------------------------------------------------------------*<br />MODULE status_0100 OUTPUT.<br /> SET PF-STATUS 'GUI'.<br /> SET TITLEBAR 'MAINTITLE'.<br /><br /> IF g_alv_tree IS INITIAL.<br /> PERFORM init_tree.<br /><br /> CALL METHOD cl_gui_cfw=>flush<br /> EXCEPTIONS cntl_system_error = 1<br /> cntl_error = 2.<br /> IF sy-subrc NE 0.<br /> CALL FUNCTION 'POPUP_TO_INFORM'<br /> EXPORTING<br /> titel = 'Automation Queue failure'(801)<br /> txt1 = 'Internal error:'(802)<br /> txt2 = 'A method in the automation queue'(803)<br /> txt3 = 'caused a failure.'(804).<br /> ENDIF.<br /> ENDIF.<br /><br />ENDMODULE. " STATUS_0100 OUTPUT<br /><br /><br />******************<br />*INCLUDE IN<br />******************<br />*----------------------------------------------------------------------*<br />* INCLUDE ZALVTREEI01 *<br />*----------------------------------------------------------------------*<br />*&---------------------------------------------------------------------*<br />*& Module USER_COMMAND_0100 INPUT<br />*&---------------------------------------------------------------------*<br />* text<br />*----------------------------------------------------------------------*<br />module USER_COMMAND_0100 input.<br /> CASE SY-UCOMM.<br /> WHEN 'CANC' OR 'EXIT' OR 'BACK'.<br /> LEAVE PROGRAM.<br /> WHEN OTHERS.<br />* §6. Call dispatch to process toolbar functions<br /> CALL METHOD cl_gui_cfw=>dispatch.<br /> ENDCASE.<br /> CALL METHOD cl_gui_cfw=>flush.<br />endmodule. " USER_COMMAND_0100 INPUT<br /><br /><br />***********************<br />*INCLUDE FORMS<br />***********************<br />*----------------------------------------------------------------------*<br />* INCLUDE ZALVTREEF01 *<br />*----------------------------------------------------------------------*<br />*&---------------------------------------------------------------------*<br />*& Form init_tree<br />*&---------------------------------------------------------------------*<br />* INICIALIZACION DEL TREE<br />*----------------------------------------------------------------------*<br />* --> p1 text<br />* <-- p2 text<br />*----------------------------------------------------------------------*<br />form init_tree.<br />* create container for alv-tree<br />* DATA: l_tree_container_name(30) TYPE c.<br /><br /><br /> CREATE OBJECT g_custom_container<br /> EXPORTING<br /> container_name = 'CCONTAINER'<br /> EXCEPTIONS<br /> cntl_error = 1<br /> cntl_system_error = 2<br /> create_error = 3<br /> lifetime_error = 4<br /> lifetime_dynpro_dynpro_link = 5.<br /> IF sy-subrc <> 0.<br /> MESSAGE x208(00) WITH 'ERROR'(100).<br /> ENDIF.<br /><br />* create tree control<br /> CREATE OBJECT g_alv_tree<br /> EXPORTING<br /> parent = g_custom_container<br /> node_selection_mode = cl_gui_column_tree=>node_sel_mode_single<br /> item_selection = 'X'<br /> no_html_header = 'X'<br /> no_toolbar = ''<br /> EXCEPTIONS<br /> cntl_error = 1<br /> cntl_system_error = 2<br /> create_error = 3<br /> lifetime_error = 4<br /> illegal_node_selection_mode = 5<br /> failed = 6<br /> illegal_column_name = 7.<br /> IF sy-subrc <> 0.<br /> MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT<br /> ENDIF.<br /><br />* §2. Create Hierarchy-header<br />* The simple ALV Tree uses the text of the fields which were used<br />* for sorting to define this header. When you use<br />* the 'normal' ALV Tree the hierarchy is build up freely<br />* by the programmer this is not possible, so he has to define it<br />* himself.<br /> DATA l_hierarchy_header TYPE treev_hhdr.<br /> PERFORM build_hierarchy_header CHANGING l_hierarchy_header.<br /><br />* §3. Create empty Tree Control<br />* IMPORTANT: Table 'gt_sflight' must be empty. Do not change this table<br />* (even after this method call). You can change data of your table<br />* by calling methods of CL_GUI_ALV_TREE.<br />* Furthermore, the output table 'gt_outtab' must be global and can<br />* only be used for one ALV Tree Control.<br /><br />PERFORM CATCAMPOS.<br /><br />* create info-table for html-header<br /> data: lt_list_commentary type slis_t_listheader,<br /> l_logo type sdydo_value.<br /> perform build_comment using<br /> lt_list_commentary<br /> l_logo.<br /><br /> data: ls_variant type disvariant.<br /> ls_variant-report = sy-repid.<br /><br /> CALL METHOD g_alv_tree->set_table_for_first_display<br /> EXPORTING<br /> i_structure_name = 'ZRF_T0000'<br /> is_hierarchy_header = l_hierarchy_header<br /> it_list_commentary = lt_list_commentary<br /> i_logo = l_logo<br /> i_background_id = 'ALV_BACKGROUND'<br /> is_variant = ls_variant<br /> i_save = 'A'<br /> CHANGING<br /> it_outtab = gt_TONO "table must be empty !<br /> it_fieldcatalog = CAT_CAMPOS.<br /><br />* §4. Create hierarchy (nodes and leaves)<br /> PERFORM create_hierarchy.<br /> PERFORM register_events.<br />* §5. Send data to frontend.<br /> CALL METHOD g_alv_tree->frontend_update.<br />* wait for automatic flush at end of pbo<br />ENDFORM. " init_tree<br /><br />FORM CATCAMPOS.<br />REFRESH CAT_CAMPOS.<br />CLEAR LCAT_CAMPOS.<br />LCAT_CAMPOS-FIELDNAME = 'DEPARTAMENTOS'.<br />LCAT_CAMPOS-REF_TABLE = 'ZRF_T0000'.<br />LCAT_CAMPOS-COLTEXT = 'DEPARTAMENTO'.<br />LCAT_CAMPOS-OUTPUTLEN = 10.<br />LCAT_CAMPOS-EMPHASIZE = 'C200'.<br />*LCAT_CAMPOS-NO_OUT = 'X'.<br />APPEND LCAT_CAMPOS TO CAT_CAMPOS.<br /><br />CLEAR LCAT_CAMPOS.<br />LCAT_CAMPOS-FIELDNAME = 'PANTALLAS'.<br />LCAT_CAMPOS-REF_TABLE = 'ZRF_T0000'.<br />LCAT_CAMPOS-COLTEXT = 'PROCESO'.<br />LCAT_CAMPOS-OUTPUTLEN = 10.<br />LCAT_CAMPOS-EMPHASIZE = 'C200'.<br />*LCAT_CAMPOS-NO_OUT = 'X'.<br />APPEND LCAT_CAMPOS TO CAT_CAMPOS.<br /><br />CLEAR LCAT_CAMPOS.<br />LCAT_CAMPOS-FIELDNAME = 'ID'.<br />LCAT_CAMPOS-REF_TABLE = 'ZRF_T0000'.<br />LCAT_CAMPOS-COLTEXT = 'ID'.<br />LCAT_CAMPOS-OUTPUTLEN = 10.<br />LCAT_CAMPOS-EMPHASIZE = 'C200'.<br />*LCAT_CAMPOS-NO_OUT = 'X'.<br />APPEND LCAT_CAMPOS TO CAT_CAMPOS.<br /><br />CLEAR LCAT_CAMPOS.<br />LCAT_CAMPOS-FIELDNAME = 'TRANSACCIONES'.<br />LCAT_CAMPOS-REF_TABLE = 'ZRF_T0000'.<br />LCAT_CAMPOS-COLTEXT = 'TRANSACCION'.<br />LCAT_CAMPOS-OUTPUTLEN = 10.<br />LCAT_CAMPOS-EMPHASIZE = 'C200'.<br />*LCAT_CAMPOS-NO_OUT = 'X'.<br />APPEND LCAT_CAMPOS TO CAT_CAMPOS.<br /><br />endform. " init_tree<br /><br /><br />**&---------------------------------------------------------------------<br />**<br />**& Form build_hierarchy_header<br />**&---------------------------------------------------------------------<br />**<br />** build hierarchy-header-information<br />**----------------------------------------------------------------------<br />**<br />** -->P_L_HIERARCHY_HEADER strucxture for hierarchy-header<br />**----------------------------------------------------------------------<br />**<br />FORM build_hierarchy_header CHANGING<br /> p_hierarchy_header TYPE treev_hhdr.<br /><br /> p_hierarchy_header-heading = 'DEPARTAMENTOS'(300).<br /> p_hierarchy_header-tooltip = 'Escoga un departamento...'(400).<br /> p_hierarchy_header-width = 10.<br /> p_hierarchy_header-width_pix = ' '.<br /><br />ENDFORM. " build_hierarchy_header<br />*&---------------------------------------------------------------------*<br />*& Form build_comment<br />*&---------------------------------------------------------------------*<br />* text<br />*----------------------------------------------------------------------*<br />* -->P_LT_LIST_COMMENTARY text<br />* -->P_L_LOGO text<br />*----------------------------------------------------------------------*<br />form build_comment using<br /> pt_list_commentary type slis_t_listheader<br /> p_logo type sdydo_value.<br /><br /> data: ls_line type slis_listheader.<br /> GET TIME.<br />* LIST HEADING LINE: TYPE H<br /> clear ls_line.<br /> ls_line-typ = 'H'.<br />* LS_LINE-KEY: NOT USED FOR THIS TYPE<br /> ls_line-info = 'Rodocletas Feliz S.A. de C.V.'. "#EC NOTEXT<br /> append ls_line to pt_list_commentary.<br />* STATUS LINE: TYPE S<br /> clear ls_line.<br /> ls_line-typ = 'S'.<br /> ls_line-key = 'valid until'. "#EC NOTEXT<br /> ls_line-info = SY-DATUM. "#EC NOTEXT<br /> append ls_line to pt_list_commentary.<br /> ls_line-key = 'time'.<br /> ls_line-info = SY-UZEIT. "#EC NOTEXT<br /> append ls_line to pt_list_commentary.<br />* ACTION LINE: TYPE A<br /> clear ls_line.<br /> ls_line-typ = 'A'.<br />* LS_LINE-KEY: NOT USED FOR THIS TYPE<br /> ls_line-info = 'Seleccione un departamento y su transaccion'."NOTEXT<br /> append ls_line to pt_list_commentary.<br /><br /> p_logo = 'ENJOYSAP_LOGO'.<br /><br /><br />endform. " build_comment<br />*&---------------------------------------------------------------------*<br />*& Form create_hierarchy<br />*&---------------------------------------------------------------------*<br />* CREACION DE JERARQUIA<br />*----------------------------------------------------------------------*<br />* --> p1 text<br />* <-- p2 text<br />*----------------------------------------------------------------------*<br />form create_hierarchy.<br /> DATA: ls_TONO TYPE ZRF_T0000,<br /> lt_TONO TYPE ZRF_T0000 OCCURS 0,<br /> ldepartamento type ZRF_T0000-departamentos,<br /> ldepartamento_anterior type ZRF_T0000-departamentos,<br /> lpantalla type ZRF_T0000-pantallas,<br /> lpantalla_anterior type ZRF_T0000-pantallas.<br /><br /> DATA: l_VISTA TYPE lvc_nkey,<br /> l_DEPARTAMENTO_key TYPE lvc_nkey,<br /> l_PANTALLA_key TYPE lvc_nkey,<br /> l_last_key TYPE lvc_nkey.<br /><br />* §4a. Select data<br /> SELECT * FROM ZRF_T0000 INTO TABLE lt_TONO up to g_max rows.<br /><br />* §4b. Sort output table according to your conceived hierarchy<br />* We sort in this order:<br />* departamento and pantalla (top level nodes)<br />* carrier id (next level)<br /><br /> SORT lt_TONO BY DEPARTAMENTOS pantallas.<br /><br />* Note: The top level nodes do not correspond to a field of the<br />* output table. Instead we use data of the table to invent another<br />* hierarchy level above the levels that can be build by sorting.<br /><br />* §4c. Add data to tree<br /><br /> LOOP AT lt_TONO INTO ls_TONO.<br />* Prerequesite: The table is sorted.<br />* You add a node everytime the values of a sorted field changes.<br />* Finally, the complete line is added as a leaf below the last<br />* node.<br /><br /> ldepartamento = ls_TONO-departamentos.<br /> lpantalla = ls_tono-pantallas.<br /><br />* Top level nodes:<br /> IF ldepartamento <> ldepartamento_anterior.<br /> ldepartamento_anterior = ldepartamento.<br /><br />*Providing no key means that the node is added on top level:<br /> PERFORM add_depto USING ldepartamento<br /> ''<br /> CHANGING l_departamento_key.<br />* The departament changed, thus, there is no predecessor carrier<br /> ENDIF.<br /><br />* pantalla nodes:<br />* (always inserted as child of the last depto<br />* which is identified by 'l_departamento_key')<br /> IF lpantalla <> lpantalla_anterior. "on change of l_carrid<br /> lpantalla_anterior = lpantalla.<br /> PERFORM add_pantalla_line USING ls_tono<br /> l_departamento_key<br /> CHANGING l_pantalla_key.<br /> ENDIF.<br /><br />*add the related information of each row into each nodo.<br /> PERFORM add_complete_line USING ls_tono<br /> l_pantalla_key<br /> CHANGING l_last_key.<br /> ENDLOOP.<br /><br />ENDFORM. " create_hierarchy<br /><br />**&---------------------------------------------------------------------<br />**& Form add_depto<br />**&---------------------------------------------------------------------<br />FORM add_depto USING depto TYPE c<br /> p_relat_key TYPE lvc_nkey<br /> CHANGING p_node_key TYPE lvc_nkey.<br /><br /> DATA: l_node_text TYPE lvc_value,<br /> ls_tono TYPE ZRF_T0000,<br /> l_month(15) TYPE c. "output string for depto<br /><br />* get depto name for node text<br /> l_node_text = depto.<br /><br />* add node:<br />* ALV Tree firstly inserts this node as a leaf if you do not provide<br />* IS_NODE_LAYOUT with field ISFOLDER set. In form 'add_carrid_line'<br />* the leaf gets a child and thus ALV converts it to a folder<br />* automatically.<br />*<br /> CALL METHOD g_alv_tree->add_node<br /> EXPORTING<br /> i_relat_node_key = p_relat_key<br /> i_relationship = cl_gui_column_tree=>relat_last_child<br /> i_node_text = l_node_text<br /> is_outtab_line = ls_tono<br /> IMPORTING<br /> e_new_node_key = p_node_key.<br /><br />ENDFORM. " add_month<br />**--------------------------------------------------------------------<br /><br />FORM add_pantalla_line USING ps_TONO TYPE ZRF_T0000<br /> p_relat_key TYPE lvc_nkey<br /> CHANGING p_node_key TYPE lvc_nkey.<br /><br /> DATA: l_node_text TYPE lvc_value,<br /> ls_TONO TYPE ZRF_T0000.<br /><br />* add node<br />* ALV Tree firstly inserts this node as a leaf if you do not provide<br />* IS_NODE_LAYOUT with field ISFOLDER set. In form 'add_carrid_line'<br />* the leaf gets a child and thus ALV converts it to a folder<br />* automatically.<br />*<br /> l_node_text = ps_TONO-pantallas.<br /> CALL METHOD g_alv_tree->add_node<br /> EXPORTING<br /> i_relat_node_key = p_relat_key<br /> i_relationship = cl_gui_column_tree=>relat_last_child<br /> i_node_text = l_node_text<br /> is_outtab_line = ls_TONO<br /> IMPORTING<br /> e_new_node_key = p_node_key.<br /><br />ENDFORM. " add_carrid_line<br />*&---------------------------------------------------------------------<br />*<br />*& Form add_complete_line<br />*&---------------------------------------------------------------------<br />*<br />FORM add_complete_line USING ps_tono TYPE ZRF_T0000<br /> p_relat_key TYPE lvc_nkey<br /> CHANGING p_node_key TYPE lvc_nkey.<br /><br /> DATA: l_node_text TYPE lvc_value.<br /><br /> write PS_TONO-pantallas to l_node_text.<br /><br />* add leaf:<br />* ALV Tree firstly inserts this node as a leaf if you do not provide<br />* IS_NODE_LAYOUT with field ISFOLDER set.<br />* Since these nodes will never get children they stay leaves<br />* (as intended).<br />*<br /> CALL METHOD g_alv_tree->add_node<br /> EXPORTING<br /> i_relat_node_key = p_relat_key<br /> i_relationship = cl_gui_column_tree=>relat_last_child<br /> is_outtab_line = ps_tono<br /> i_node_text = l_node_text<br /> IMPORTING<br /> e_new_node_key = p_node_key.<br /><br />ENDFORM. " add_complete_line<br /><br />*&---------------------------------------------------------------------*<br />*& Form register_events<br />*&---------------------------------------------------------------------*<br />* text<br /><br />form register_events.<br /> DATA: lt_events TYPE cntl_simple_events,<br /> l_event TYPE cntl_simple_event,<br /> l_event_receiver TYPE REF TO lcl_tree_event_receiver.<br /><br />call method g_alv_tree->get_registered_events<br /> importing events = lt_events.<br /><br /> l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.<br /> APPEND l_event TO lt_events.<br /><br /> CALL METHOD g_alv_tree->set_registered_events<br /> EXPORTING<br /> events = lt_events<br /> EXCEPTIONS<br /> cntl_error = 1<br /> cntl_system_error = 2<br /> illegal_event_combination = 3.<br /> IF sy-subrc <> 0.<br /> MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT<br /> ENDIF.<br /><br /> CREATE OBJECT l_event_receiver.<br /> SET HANDLER l_event_receiver->handle_node_double_click FOR g_alv_tree.<br /><br /><br />endform. " register_eventsAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com1tag:blogger.com,1999:blog-20322244708988911.post-51712500132161242432008-02-29T11:28:00.004-06:002008-02-29T11:36:24.308-06:00Reporte Generador de Datos para BC_TRAVELPara Generar los datos del modelo BC_TRAVEL es necesario llenar las tablas SPFLI, SLIGHT, SBOOK, esto lo podemos hacer mediante el programa/reporte S_FLIGHT_MODEL_DATA_GENERATOR.<br /><br /><br />Cuando lo ejecutemos nos pedira seleccionar una opcion de 5 disponibles:<br />* Borrar datos de las tablas<br />* Establecer datos minimos <br />* Establecer datos estandar <br />* Establecer datos maximos<br />* Establecer datos gigantes/monstruosos<br /><br />Seleccionamos la opcion que queremos hacer y listo... tenemos llena nuestra base de datos para los ejemplos tanto de la clase de desarrollo SLIS como de la transaccion DWDM.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-1225121429444604242008-02-22T09:18:00.001-06:002008-02-22T09:22:59.403-06:00AUTHORITY CHECKDefinición
<br />Esta sentencia nos permite comprobar las autorizaciones de un usuario. Recordemos que dichas autorizaciones forman parte del perfil de usuario y el sistema las guarda en el maestro de usuarios.
<br />
<br />Sintaxis:
<br />AUTHORITY-CHECK OBJECT '<objeto>'
<br /> ID 'campo1> { FIELD <valor1> | DUMMY }
<br /> ID 'campo2> { FIELD <valor2> | DUMMY }
<br /> ...
<br /> ID 'campon> { FIELD <valorn> | DUMMY }
<br />
<br /><objeto> es el nombre del objeto de autorización que hay que comprobar.
<br />Un objeto de autorización esta compuesto de campos de autorización, todos ellos deben estar especificados a continuación de las cláusulas ID (<campo1>, <campo2> ..., <campon>).
<br />
<br /><valor1, <valor2>, ..., <valorn> son los valores de autorización que hay que comprobar. <valorx> puede ser un literal o una variable. El sistema busca en el perfil del usuario el objeto especificado en la sentencia, y comprueba si el usuario tiene autorización para todos los campos del objeto.
<br />
<br />Se puede saltar la comprobación de un campo sustituyendo la cláusula FIELD por DUMMY. Si SY-SUBRC vale 0, el usuario esta autorizado, en caso contrario, SY-SUBRC toma un valor distinto de 0.
<br />
<br />Ejemplo 1:
<br />AUTHORITY-CHECK OBJECT 'M_EINF_WRK'
<br /> ID 'WERKS' FIELD '0002'
<br /> ID 'ACTVT' FIELD '02'.
<br />AUTHORITY-CHECK OBJECT 'M_EINF_WRK'
<br /> ID 'WERKS' DUMMY
<br /> ID 'ACTVT' FIELD '01'.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com1tag:blogger.com,1999:blog-20322244708988911.post-42625843795503068692008-02-22T09:15:00.002-06:002008-02-22T09:17:21.468-06:00AT USER-COMMANDDefinición<br />Para permitir que el programa reaccione a las funciones que el usuario active se utiliza el evento AT USER-COMMAND.<br /><br />Sintaxis:<br />AT USER-COMMAND.<br /> <bloque-de-proceso><br /><br />Este evento define un bloque de proceso que se activa cuando seleccionamos un comando. Los comandos se pueden seleccionar a través de los botones proporcionados en el programa, o a través del campo OK-CODE. Este evento se utiliza en los informes interactivos cuando generan salidas secundarias.<br /><br />El bloque de proceso del evento AT USER-COMMAND se ejecuta cuando el usuario activa un código de función presente en el status activo en ese momento. Este evento no se activa por los códigos de función predefinido del sistema o por el código de función PICK que, como ya hemos visto, activa el evento AT LINE-SELECTION. El campo del sistema SY-UCOMM nos permite saber qué código de función ha activado el usuario.<br /><br />Ejemplo 1:<br />DATA: NUMBER1 TYPE I VALUE 20,<br /> NUMBER2 TYPE I VALUE 5,<br /> RESULT TYPE I.<br /><br />START-OF-SELECTION.<br /> WRITE: / NUMBER1, '?', NUMBER2.<br /> AT USER-COMMAND.<br /> CASE SY-UCOMM.<br /> WHEN 'ADD'.<br /> RESULT = NUMBER1 + NUMBER2.<br /> WHEN 'SUBT'.<br /> RESULT = NUMBER1 - NUMBER2.<br /> WHEN 'MULT'.<br /> RESULT = NUMBER1 * NUMBER2.<br /> WHEN 'DIVI'.<br /> RESULT = NUMBER1 / NUMBER2.<br /> WHEN OTHERS.<br /> WRITE 'Unknown function code'.<br /> EXIT.<br /> ENDCASE.<br /> WRITE: / 'Result:', RESULT.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-39364507529320682152008-02-22T09:01:00.002-06:002008-02-22T09:05:34.950-06:00AT .. ENDATDefinición<br />La sentencia AT <fg> .. ENDAT sólo puede ser utilizada dentro de un bucle LOOP .. ENDLOOP para extractos, e identifica un bloque de proceso. La sentencia se ejecuta cuando se detecta que cambia algún valor en el field-group.<br /><br />Sintaxis:<br />AT <zfg> { WITH <fg1> }.<br /> <bloque-sentencias><br />ENDAT.<br /><br />La setencia AT <fg> se cierra con ENDAT, identificando de esta forma un bloque de proceso.<br /><br />La cláusula WITH se utiliza para indicar que la sentencia AT se debe ejecutar si para el field-group <fg> le<br />sigue el field-group <fg1>.<br /><br />Ejemplo 1:<br />DATA: NAME(30),<br /> SALES TYPE I.<br />FIELD-GROUPS: HEADER, INFOS.<br />INSERT: NAME INTO HEADER,<br /> SALES INTO INFOS.<br />...<br />LOOP.<br /> AT NEW NAME.<br /> NEW-PAGE.<br /> ENDAT.<br />...<br /> AT END OF NAME.<br /> WRITE: / NAME, SUM(SALES).<br /> ENDAT.<br />ENDLOOP.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-38724069562221542372008-02-19T15:48:00.000-06:002008-02-19T16:22:00.573-06:00SDEste es resumen de las transacciones del módulo de ventas y distribución (SD)<br />de la versión 3.x del sistema SAP R/3:<br />Cód Descripción<br />OLSD Configuración de SD<br />VB21 Volumen de ventas y compras<br />VK15 Múltiples condiciones de ventas.<br />VA01 Sol. Material Almacén. Crear<br />VA02 Sol. Material Almacén. Modificar<br />VA03 Sol. Material Almacén. Visualizar<br />VA05 Sol. Material Almacén. Lista<br />VA11 Crear solicitud de venta<br />VA12 Modificar solicitud de venta<br />VA13 Visualizar solicitud de venta<br />VA15 Lista solicitud de venta<br />VL02 EntregaAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com2tag:blogger.com,1999:blog-20322244708988911.post-87062497440679269582008-02-19T15:47:00.002-06:002008-02-19T16:22:08.102-06:00RHEste es resumen de las transacciones del módulo de recursos humanos (HR) de<br />la versión 3.x del sistema SAP R/3:<br />Cód Descripción<br />PA03 Cambia el registro de control de nóminas<br />PA20 Visualiza infotipo PA<br />PA30 Crearo modifica infotipos PA.<br />PP02 Entrada rápida para objetos de tipo PD<br />PU00 Borra infotipo PA de un empleado.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-89942726534902017502008-02-19T15:47:00.001-06:002008-02-19T16:22:13.937-06:00LOGISTICAEste es resumen amplio de las transacciones del módulo de logística (MM) de<br />la versión 3.x del sistema SAP R/3:<br /><br />Cód Descripción<br />ME00 Gestión Materiales. Compras<br />MB00 Gestión Materiales. Gestión de Stocks<br />MR00 Gestión Materiales. Verificar Facturas<br />MRBE Gestión Materiales. Valoración<br />LPRO Gestión Materiales. Pronostico de Material<br />MD00 Gestión Materiales. Planificación Necesidades<br />MI00 Gestión Materiales. Inventario<br />MM00 Gestión Materiales. Maestro Materiales<br />CL00 Gestión Materiales. Clasificación<br />VA00 Gestión comercial. Ventas<br />VL00 Gestión Materiales. Expedición<br />MCE9 Sistema Info. Compras.<br />MCC2 Sistema Info. Gestión Stocks<br />MCT2 Sistema Info. Comercial<br />MC01 Sistema Info. Buscar vía Set Info.<br />MC02 Sistema Info. Buscar vía Texto<br />MCB1 Sistema Info. Controlling Stocks<br />ME90 Imprimir Orden de Entrega<br />MBSF Conformidad. Liberar Recepción<br />MK03 Entorno. Consulta de Proveedores<br />ME3N Entorno. Consulta Contratos<br />MM03 Entorno. Consulta de maestro de materiales<br />MR03 Entorno. Consulta Facturas<br />MMBE Entorno. Resumen de Stocks<br />MB51 Entorno. Consulta Mov. Material<br />MB01 Mvtos. Almacén. Entrada por pedido<br />MB1A Mvtos. Almacén. Salida de material<br />MBST Mvtos. Almacén. Anular documento<br />MBRL Mvtos. Almacén. Devolución a Proveedor<br />MB03 Mvtos. Almacén. Visualizar documento<br />ME56 Solicitud de Pedido. Asignar contrato.<br />ME5A Sol. Pedido. Listados. Generalidades<br />ME5K Sol. Pedido. Listados. Por imputación<br />ME5W Sol. Pedido. Listados. Nueva presentación<br />ME56 Sol. Pedido. Funciones siguiente. Asignar<br />ME57 Sol. Pedido. Funciones siguientes. Asignar y tratar<br />ME52 Sol. Pedido. SolP generadas. MRP. Modificar<br />ME53 Sol. Pedido. SolP generadas MRP. Visualizar<br />ME4L Pet. Ofertas/Oferta. Listados. Por proveedor<br />ME4M Pet. Ofertas/Oferta. Listados. Por material<br />ME4S Pet. Ofertas/Oferta. Listados. Por licitación<br />ME4C Pet. Ofertas/Oferta. Listados. Por grupo artículos<br />ME4N Pet. Ofertas/Oferta. Listados. Por petición oferta<br />ME2L Pet. Ofertas/Oferta. Listados. Por proveedor.<br />ME41 Pet. Ofertas/Oferta. Crear<br />ME42 Pet. Ofertas/Oferta. Modificar<br />ME43 Pet. Ofertas/Oferta. Visualizar<br />ME47 Pet. Ofertas/Oferta. Actualizar<br />ME48 Pet. Ofertas/Oferta. Visualizar<br />ME49 Pet. Ofertas/Oferta. Comparación precios<br />ME21 Pedido/Contrato. Crear<br />ME58 Pedido/Contrato. Mediante sol. pedido<br />ME22 Pedido/Contrato. Modificar<br />ME23 Pedido/Contrato. Visualizar<br />ME28 Pedido/Contrato. Liberar<br />ME2L Pedido/Contrato. Listados. Por proveedor<br />ME2M Pedido/Contrato. Listados. Por material<br />ME2K Pedido/Contrato. Listados. Por imputación<br />ME2C Pedido/Contrato. Listados. Por grupo de artículos<br />ME2N Pedido/Contrato. Listados. Por número de pedido<br />ME31 Pedido/Contrato. Pedido Abierto. Crear<br />ME32 Pedido/Contrato. Pedido Abierto. Modificar<br />ME33 Pedido/Contrato. Pedido Abierto. Visualizar<br />ME58 Pedido/Contrato. Pedido de Baremo. Mediante sol. Pedido<br />MB01 Conformidad. Crear<br />MB02 Conformidad. Modificar<br />MB03 Conformidad. Visualizar<br />ME11 Conformidad. Registro Info. Crear<br />ME12 Conformidad. Registro Info. Modificar<br />ME13 Conformidad. Registro Info. Visualizar<br />ME14 Conformidad. Registro Info. Modificaciones<br />ME15 Conformidad. Registro Info. Petición de borrado<br />ME01 Conformidad. Libro de Pedidos. Actualizar<br />ME03 Conformidad. Libro de Pedidos. Visualizar<br />ME04 Conformidad. Libro de Pedidos. Modificaciones<br />MEQ1 Conformidad. Regulación por cuota. Actualizar<br />MEQ3 Conformidad. Regulación por cuota. Visualizar<br />MEQ4 Conformidad. Regulación por cuota. Modificaciones<br />MEQM Conformidad. Regulación por cuota. Listado por material<br />ME61 Conformidad. Evaluación proveedor. Actualizar<br />ME62 Conformidad. Evaluación proveedor. Visualizar<br />ME63 Conformidad. Evaluación proveedor. Reevaluación autom.<br />ME64 Conformidad. Evaluación proveedor. Comparación evaluac.<br />ME6A Conformidad. Evaluación proveedor. Modificaciones<br />ME6H Conformidad. Evaluación proveedor. Análisis estándar<br />ME1l Conformidad. Listados. Por proveedor<br />ME1M Conformidad. Listados. Por material<br />ME1W Conformidad. Listados. Por grupo artículos<br />ME1P Conformidad. Listados. Histor. precio-pedido<br />ME1E Conformidad. Listados. Histor. precio-oferta.<br />ME0M Conformidad. Visualizar listado. Por material.<br />SU53 Visualiza los objetos de autorización de un usuario.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-1392266585786880242008-02-19T15:45:00.000-06:002008-02-19T16:22:21.645-06:00CONTROL DE ACCESOSEste es resumen de las transacciones del módulo de control accesos (CA) de la<br />versión 3.x del sistema SAP R/3:<br /><br />Cód Descripción<br />SU01 Administración de usuarios<br />SU02 Administración de perfiles<br />SU03 Administración de autorizaciones<br />PFCG Generador automático de perfiles<br />SUIM Sistema de informaciónAntonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-55214103014019753322008-02-19T15:36:00.002-06:002008-07-03T15:31:34.886-05:00ABAPEste es resumen de las transacciones del entorno de programación y de administración del sistema más utilizadas de la versión 3.x del sistema SAP R/3:<br /><br />Cód Descripcion<br />BMV0 Gestión de los log de direct input.<br />OY19 Comparación del contenido de una tabla entre dos sistemas SAP R/3<br />SCAM CATT Management<br />SCAT Computer Aided Test Tool<br />SE01 Sistema de gestión de transportes<br />SE07 Estatus de las ordenes de transporte<br />SE09 Órdenes de transporte Workbench<br />SE10 Órdenes de transporte Customizong<br />SE11 Mantenimiento del diccionario de datos<br />SE12 Visualización del diccionario de datos<br />SE13 Mantenimiento de tablas<br />SE14 Diccionario de datos, utilidad para bases de datos<br />SE15 Sistema del repositorio<br />SE16 Visor de datos (Datos Browser)<br />SE17 Visor de tablas<br />SE30 Análisis de tiempos de ejecución<br />SE32 Mantenimiento de elementos de texto.<br />SE35 Mantenimiento de módulos de diálogo<br />SE36 Mantenimiento de bases de datos lógicas<br />SE37 Mantenimiento de módulos de función<br />SE38 Mantenimiento de programas (editor ABAP/4)<br />SE39 Editor split screen<br />SE41 Manteniemiento de menús (menú Painter)<br />SE43 Mantenimiento de menús de área.<br />SE51 Mantenimiento de dynpros (screen painter)<br />SE54 Mantenimiento de vistas<br />SE61 Gestión de la documentación<br />SE62 Utilidad ramo industrial<br />SE63 Traductor<br />SE65 Documentación estadística de textos breves<br />SE66 Documentación estadística de textos explicativos<br />SE68 Gestión del departamento de traducción<br />SE71 SAPscript layout set<br />SE72 SAPscript estilos<br />SE73 SAPscript fonts<br />SE74 SAPscript conversión de formato<br />SE75 SAPscript settings<br />SE76 SAPscript traductor Layout Sets<br />SE77 SAPscript traductor estilos<br />SE80 Visor de objetos (object browsers)<br />SE81 Jerarquía de aplicación (SAP)<br />SE82 Jerarquía de aplicación (cliente)<br />SE84 Sistema de información del repositorio.<br />SE85 Sistema de información del repositorio.<br />SE86 Sistema de información del repositorio.<br />SE87 Gestión del modelo de datos (data modeler)<br />SE88 Sistema de información<br />SE91 Gestión de mensajes<br />SE92 Gestión de mensajes del log del sistema<br />SE93 Gestión de códigos de transacción<br />SEU Gestión de objetos (object browser)<br />SO32 Gestión de usuarios SAPOffice<br />SHDO Mantenimiento de variantes<br />SQ00 ABAP/4 Query: queries<br />SQ01 ABAP/4 Query: mantenimiento de queries<br />SQ02 ABAP/4 Query: mantenimiento de areas funcionales<br />SQ03 ABAP/4 Query: mantenimiento de grupos de usuarios<br />SQ07 ABAP/4 Query: comparación del lenguaje<br />SM35 Gestión de juegos de datos (Batch-Input)<br />SM37 Mantenimiento de JOBS<br />SM21 Ver el log del sistema. Se utiliza para ver más información cuando ocurre<br />un DUMP.<br />SHD0 Mantenimiento de transacciones de variante.<br />SO00 Envia un mensaje a través de SAP. El destinatario puede ser de Internet,<br />X400, etc..<br />SMOD Gestión de User-exits.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com2tag:blogger.com,1999:blog-20322244708988911.post-60972010914918957402008-02-18T18:14:00.003-06:002008-02-19T16:34:42.862-06:00REPORTES - ALV - TEXTEDIT (CUSTOM CONTROL)PROGRAMA PARA HACER UN TEXTO EDITABLE EN UN CUSTOM CONTROL, IMPLEMENTANDO METODOS DE EVENTOS (F1 Y F4), EL LAYOUT DE LA PANTALLA DEBE SER UN CUSTOM CONTROL LLAMADO "textedit" Y UN CAMPO DE SALIDA LLAMADO "field", SU FLUJO LOGICO ES:<br /><br />PROCESS BEFORE OUTPUT.<br /> MODULE status_0100.<br /><br />PROCESS AFTER INPUT.<br /> MODULE cancel AT EXIT-COMMAND.<br /> MODULE user_command_0100.<br /><br /><br /><br /><br />REPORT demo_custom_control .<br /><br />* Declarations *****************************************************<br /><br />CLASS event_handler DEFINITION.<br /> PUBLIC SECTION.<br /> METHODS: handle_f1 FOR EVENT f1 OF cl_gui_textedit<br /> IMPORTING sender,<br /> handle_f4 FOR EVENT f4 OF cl_gui_textedit<br /> IMPORTING sender.<br />ENDCLASS.<br /><br />DATA: ok_code LIKE sy-ucomm,<br /> save_ok LIKE sy-ucomm.<br /><br />DATA: init,<br /> container TYPE REF TO cl_gui_custom_container,<br /> editor TYPE REF TO cl_gui_textedit.<br /><br />DATA: event_tab TYPE cntl_simple_events,<br /> event TYPE cntl_simple_event.<br /><br />DATA: line(256) TYPE c,<br /> text_tab LIKE STANDARD TABLE OF line,<br /> field LIKE line.<br /><br />DATA handle TYPE REF TO event_handler.<br /><br />* Reporting Events ***************************************************<br /><br />START-OF-SELECTION.<br /> line = 'First line in TextEditControl'.<br /> APPEND line TO text_tab.<br /> line = '--------------------------------------------------'.<br /> APPEND line TO text_tab.<br /> line = '...'.<br /> APPEND line TO text_tab.<br /> CALL SCREEN 100.<br /><br />* Dialog Modules *****************************************************<br /><br />MODULE status_0100 OUTPUT.<br /> SET PF-STATUS 'SCREEN_100'.<br /> IF init is initial.<br /> init = 'X'.<br /> CREATE OBJECT: <br /> container EXPORTING container_name = 'TEXTEDIT',<br /> editor EXPORTING parent = container,<br /> handle.<br /> event-eventid = cl_gui_textedit=>event_f1.<br /> event-appl_event = ' '. "system event<br /> APPEND event TO event_tab.<br /> event-eventid = cl_gui_textedit=>event_f4.<br /> event-appl_event = 'X'. "application event<br /> APPEND event TO event_tab.<br /> CALL METHOD: editor->set_registered_events<br /> EXPORTING events = event_tab.<br /> SET HANDLER handle->handle_f1<br /> handle->handle_f4 FOR editor.<br /> ENDIF.<br /> CALL METHOD editor->set_text_as_stream <br /> EXPORTING text = text_tab.<br />ENDMODULE.<br /><br />MODULE cancel INPUT.<br /> LEAVE PROGRAM.<br />ENDMODULE.<br /><br />MODULE user_command_0100 INPUT.<br /> save_ok = ok_code.<br /> CLEAR ok_code.<br /> CASE save_ok.<br /> WHEN 'INSERT'.<br /> CALL METHOD editor->get_text_as_stream <br /> IMPORTING text = text_tab.<br /> WHEN 'F1'.<br /> MESSAGE i888(sabapdocu) WITH text-001.<br /> WHEN OTHERS.<br /> MESSAGE i888(sabapdocu) WITH text-002.<br /> CALL METHOD cl_gui_cfw=>dispatch.<br /> ENDCASE.<br /> SET SCREEN 100.<br />ENDMODULE.<br /><br />* Class Implementations **********************************************<br /><br />CLASS event_handler IMPLEMENTATION.<br /> METHOD handle_f1.<br /> DATA row TYPE i.<br /> MESSAGE i888(sabapdocu) WITH text-003.<br /> CALL METHOD sender->get_selection_pos<br /> IMPORTING from_line = row.<br /> CALL METHOD sender->get_line_text<br /> EXPORTING line_number = row<br /> IMPORTING text = field.<br /> CALL METHOD cl_gui_cfw=>set_new_ok_code <br /> EXPORTING new_code = 'F1'. <br /> CALL METHOD cl_gui_cfw=>flush.<br /> ENDMETHOD.<br /><br /> METHOD handle_f4.<br /> DATA row TYPE i.<br /> MESSAGE i888(sabapdocu) WITH text-004.<br /> CALL METHOD sender->get_selection_pos<br /> IMPORTING from_line = row.<br /> CALL METHOD sender->get_line_text<br /> EXPORTING line_number = row<br /> IMPORTING text = field.<br /> CALL METHOD cl_gui_cfw=>flush.<br /> ENDMETHOD.<br />ENDCLASS.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-14024640976262658192008-02-12T16:53:00.001-06:002008-03-07T11:59:19.374-06:00Pop-up para recibir un dato del usuario<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-5YfC9P95cWsTPNxZm_qgNP60r1VsYbLD6OX1onjXB8dyTZMcYDxh4_79FOb9Khr4pZFuqMoYutILWllqRVbbCp0tfq_QBeGw7vT3pO3wfNvlvpOzMWbvTusaIdb4480lUhfBb4V4pw/s1600-h/pop+up+pedir.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-5YfC9P95cWsTPNxZm_qgNP60r1VsYbLD6OX1onjXB8dyTZMcYDxh4_79FOb9Khr4pZFuqMoYutILWllqRVbbCp0tfq_QBeGw7vT3pO3wfNvlvpOzMWbvTusaIdb4480lUhfBb4V4pw/s320/pop+up+pedir.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5175060822362256562" /></a><br />CALL FUNCTION 'POPUP_TO_GET_ONE_VALUE'<br /> EXPORTING<br /> textline1 = 'Introduce el nombre!!'<br /> textline2 = 'Nombre del Transportista: '<br /> titel = 'Alta de material en almacen'<br /> valuelength = 80<br /> IMPORTING<br /> value1 = l_texto<br /> EXCEPTIONS<br /> titel_too_long = 1<br /> OTHERS = 2.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com0tag:blogger.com,1999:blog-20322244708988911.post-35507489751899350582008-02-11T09:17:00.000-06:002008-02-19T16:32:00.707-06:00Simple Module Pool* Este module pool pretende introducirnos al mundo<br />* de la programacion, no es nada elaborado pero <br />* contiene las sentencias basicas SELECT, INSERT,<br />* DELETE para una tabla de nombre ZRF_T0024, cuyos<br />* campos son: ZRF_T0024-ID_CODIGO, <br />* ZRF_T0024-DESCRIPCION ZRF_T0024-DIAS. Necesitaremos<br />* crear una screen, con tres input/output fields de<br />* nombre igual que la tabla:<br />* ZRF_T0024-ID_CODIGO, ZRF_T0024-DESCRIPCION ZRF_T0024-DIAS.<br />* Este es el codigo.<br /><br /><br /><br />*&--------------------------------------*<br />*& Include ZRF_602TOP *<br />*&--------------------------------------*<br />PROGRAM ZRF_0602.<br />TABLES:<br /> ZRF_T0024. "CODIGOS DE MTTO<br /><br /><br />*&--------------------------------------*<br />*& screen *<br />*&--------------------------------------*<br />PROCESS BEFORE OUTPUT.<br />MODULE PBO.<br />*<br />PROCESS AFTER INPUT.<br />FIELD ZRF_T0024-ID_CODIGO MODULE DESPLIEGA_CODIGOS_MTTO.<br />MODULE PAI.<br /><br /><br /><br />*&-------------------------------------*<br />*& Module PAI INPUT *<br />*&-------------------------------------*<br />module PAI input.<br /><br />CASE SY-UCOMM.<br />WHEN 'ADD'.<br /> PERFORM NUEVO_602.<br />WHEN 'DELT'.<br /> PERFORM BORRAR_602.<br />WHEN 'CLEAN'.<br /> PERFORM LIMPIAR_602.<br />WHEN 'SAVE'.<br /> PERFORM GUARDAR_602.<br />WHEN 'EXIT' OR 'BACK' OR 'CANC'.<br /> PERFORM exit_program.<br />ENDCASE.<br /><br />endmodule. " PAI INPUT<br /><br />*&-----------------------------------------*<br />*& Module PBO OUTPUT *<br />*&-----------------------------------------*<br />module PBO output.<br /> SET PF-STATUS 'ZRF_602GUI'.<br /> SET TITLEBAR 'MAINTITLE'.<br />endmodule. " PBO OUTPUT<br /><br />*--------------------------------------*<br />* INCLUDE ZRF_602F01 *<br />*--------------------------------------*<br />*&----------------------*<br />*& Form NUEVO_602<br />*&----------------------*<br />form NUEVO_602.<br /> DATA: TEMPO LIKE ZRF_T0024-ID_CODIGO.<br /> SELECT MAX( ID_CODIGO ) FROM ZRF_T0024 INTO TEMPO.<br /> ZRF_T0024-ID_CODIGO = TEMPO + 1.<br />endform. " NUEVO_602<br />*&------------------------*<br />*& Form BORRAR_602<br />*&------------------------*<br />form BORRAR_602.<br />DATA L_RESP.<br /> CALL FUNCTION 'POPUP_TO_CONFIRM'<br /> EXPORTING<br /> TITLEBAR = 'Eliminacion de registros!!!'<br /> DIAGNOSE_OBJECT = ' '<br /> text_question = '¿Desea eliminar el registro actual?'<br />TEXT_BUTTON_1 = 'si'(001)<br />ICON_BUTTON_1 = ' '<br />TEXT_BUTTON_2 = 'no'(002)<br />ICON_BUTTON_2 = ' '<br />IMPORTING<br />ANSWER = L_RESP.<br />IF L_RESP <> 'A'.<br /> IF L_RESP = 1. "Sí<br /> DELETE FROM ZRF_T0024 WHERE ID_CODIGO = ZRF_T0024-ID_CODIGO.<br /> PERFORM LIMPIAR_602.<br /> ENDIF.<br />ENDIF.<br />endform. " BORRAR_602<br />*&-------------------------*<br />*& Form LIMPIAR_602<br />*&-------------------------*<br />form LIMPIAR_602.<br /> ZRF_T0024-ID_CODIGO = ''.<br /> ZRF_T0024-DESCRIPCION = ''.<br /> ZRF_T0024-DIAS = ''.<br />endform. " LIMPIAR_602<br />*&---------------------------*<br />*& Form GUARDAR_602<br />*&---------------------------*<br />form GUARDAR_602.<br /> INSERT INTO ZRF_T0024 VALUES ZRF_T0024.<br /> PERFORM LIMPIAR_602.Antonio Lopezhttp://www.blogger.com/profile/13416300895318457011noreply@blogger.com2