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

PS data extraction using LDB PSJ

Former Member
0 Likes
1,990

This post is just for help in case you intend to extract data from the logical database PSJ. It could be very helpful in your way.

The program is part of an interfase I developed and the input is a work area(structure) with the fields you normaly fill when you call the PSJ LDB. The structure of this import you can replace it with values you put in the selection screen for your testing, for example:

Replace this code (comment the code):

IMPORT wa_master_data FROM MEMORY ID sy-uname.

cn_profd = wa_master_data-profile.

cn_imtp-sign = wa_master_data-sign.

cn_imtp-option = wa_master_data-option.

cn_imtp-low = wa_master_data-prog_inversiones.

APPEND cn_imtp.

cn_imprp = wa_master_data-id_de_posicion.

cn_imtpj = wa_master_data-a_autoriz.

With this code:

cn_profd = '000000000005'. "wa_master_data-profile.

cn_imtp-sign = 'I'. "wa_master_data-sign.

cn_imtp-option = 'EQ'. "wa_master_data-option.

cn_imtp-low = 'PRO2005'. "wa_master_data-prog_inversiones.

APPEND cn_imtp.

cn_imprp = 'ALAMBRICO'. "wa_master_data-d_de_posicion.

cn_imtpj = '2005'. "wa_master_data-a_autoriz.

At the end the interfase fill an internal table which it's going to be exported to the calling program. The internal table name is itdata and contain the following information:

cod_proj = WBS element short identification

descrip = PS: Short description

inv_real = actual

dispuesto = assigned

disponible = available

presupuesto = budget

comprometido = commitment

POC = porcent of completion

cod_proj LIKE prps_r-poski

descrip LIKE prps_r-post1 "project description

inv_real LIKE cosp1-wkg005,"actual

dispuesto LIKE cosp1-wkg005,"

disponible LIKE cosp1-wkg005,

presupuesto LIKE cosp1-wkg005,

comprometido LIKE cosp1-wkg005,

poc LIKE ev_poc-meg007,

Just go to the fields description in the ABAP dictionary to see the details and descriptions in english.

You can put other fields in this table if you need it and modify the program as you like in order to extract the desired data.

This is the entire code:

-

-


*&----


*

REPORT zcharli_project_system .

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

  • INFORMACION GENERAL

  • Nombre programa :

  • Título : Genera archivo proyectos alámbricos

  • Autor : Charli Florimón

  • Fecha Elaboración : 10/2005

  • Tipo : Interfase

  • Copia de :

  • Propósito : Crea archivos interfase "Proyectos Alámbricos"

  • Módulo : <PS> Project System

*

  • ABAP´s Includes :

  • Restricciones :

  • Modificacion :

  • Fecha Modificación:

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

*-Nodes to be used by the program

NODES: ev_poc.

*- Selection tables

RANGES: r_jerar FOR prps_r-objnr,

st_object FOR onr00-objnr.

*- Tables that are going to be used

TABLES: rsthie, proj, prps_r, aufk, act01,

psdypd, psdypr, psdynp, psdynv,

cosp1, pstx, tcndb, tcnds, impr, coss1, rpsco1, onr00, bpja1,

tcnt, sscrfields, pstat.

*-Data objects declarations

DATA:

presupuesto LIKE rpsco1-wlp00,

real LIKE cosp1-wkg005,

comprometido LIKE cosp1-wkg005,

dispuesto LIKE cosp1-wkg005,

disponible LIKE cosp1-wkg005,

presupuesto_total LIKE cosp1-wkg005,

real_total LIKE cosp1-wkg005,

comprometido_total LIKE cosp1-wkg005,

dispuesto_total LIKE cosp1-wkg005,

disponible_total LIKE cosp1-wkg005,

proyecto1 LIKE prps-posid,

descripcion LIKE prps-post1,

contador1 LIKE bkpf-monat,

contador2 LIKE bkpf-monat,

contador3 LIKE bkpf-monat,

poc LIKE ev_poc-meg007,

aux_cod_proj LIKE prps_r-poski,

aux_objnr LIKE rpsco1-objnr,

vmes(17).

*-Field symbols declarations

FIELD-SYMBOLS .

*-Types definitions

TYPES:

*--CO Object: Cost Totals for External Postings

BEGIN OF it,

objnr LIKE cosp1-objnr,

wrttp LIKE cosp1-wrttp,

kstar LIKE cosp1-kstar,

vrgng LIKE cosp1-vrgng,

wkg001 LIKE cosp1-wkg001,

wkg002 LIKE cosp1-wkg002,

wkg003 LIKE cosp1-wkg003,

wkg004 LIKE cosp1-wkg004,

wkg005 LIKE cosp1-wkg005,

wkg007 LIKE cosp1-wkg007,

wkg008 LIKE cosp1-wkg008,

wkg009 LIKE cosp1-wkg009,

wkg010 LIKE cosp1-wkg010,

wkg011 LIKE cosp1-wkg011,

wkg012 LIKE cosp1-wkg012,

wkg013 LIKE cosp1-wkg013,

wkg014 LIKE cosp1-wkg014,

wkg015 LIKE cosp1-wkg015,

wkg016 LIKE cosp1-wkg016,

END OF it,

*--Project Hierarchy Reporting Structure

BEGIN OF itab,

objnr LIKE prps_r-objnr, "número de objeto

posid LIKE prps_r-posid, "Proyecto sin guiones

post1 LIKE prps_r-post1, "Descripción proyecto

poski LIKE prps_r-poski, "Proyecto con guiones

stufe LIKE prps_r-stufe, "Herarquía posiciones

psphi LIKE prps_r-psphi, "Nivel principal en jerarquía

END OF itab,

*--Project definition

BEGIN OF itpr,

pspid LIKE proj-pspid,

post1 LIKE proj-post1,

END OF itpr,

*--Structure for PDB PSJ (Percentage of Completion)

BEGIN OF t_poc,

proyecto LIKE prps_r-poski,

objnr LIKE ev_poc-objnr,

meg007 LIKE ev_poc-meg007,

wrttp LIKE ev_poc-wrttp,

acpos LIKE ev_poc-acpos,

END OF t_poc,

*--Internal Table with totals

BEGIN OF t_data,

cod_proj LIKE prps_r-poski,

descrip LIKE prps_r-post1,

inv_real LIKE cosp1-wkg005,

dispuesto LIKE cosp1-wkg005,

disponible LIKE cosp1-wkg005,

presupuesto LIKE cosp1-wkg005,

comprometido LIKE cosp1-wkg005,

poc LIKE ev_poc-meg007,

END OF t_data,

*--CO Object: Cost Totals for Internal Postings

BEGIN OF t_coss1,

objnr LIKE coss1-objnr, "Object number

wrttp LIKE coss1-wrttp,

versn LIKE coss1-versn,

kstar LIKE coss1-kstar, "Cost Element

twaer LIKE coss1-twaer,

perbl LIKE coss1-perbl,

vrgng LIKE coss1-vrgng, "CO Business Transaction

wkg001 LIKE coss1-wkg001, "Total Value in Controlling Area Currency

wkg002 LIKE coss1-wkg002,

wkg003 LIKE coss1-wkg003,

wkg004 LIKE coss1-wkg004,

wkg005 LIKE coss1-wkg005,

wkg007 LIKE coss1-wkg007,

wkg008 LIKE coss1-wkg008,

wkg009 LIKE coss1-wkg009,

wkg010 LIKE coss1-wkg010,

wkg011 LIKE coss1-wkg011,

wkg012 LIKE coss1-wkg012,

wkg013 LIKE coss1-wkg013,

wkg014 LIKE coss1-wkg014,

wkg015 LIKE coss1-wkg015,

wkg016 LIKE coss1-wkg016,

beltp LIKE coss1-beltp,

END OF t_coss1,

*--Tabla interna con los Object Numbers

BEGIN OF t_onr00,

posid LIKE prps_r-posid,

objnr LIKE onr00-objnr,

END OF t_onr00,

*--Summarization Table for Project Reporting

BEGIN OF t_rpsco1,

psphi LIKE prps_r-psphi,

objnr LIKE rpsco1-objnr, "número de objeto

poski LIKE prps_r-poski,

posid LIKE prps_r-posid,

lednr LIKE rpsco1-lednr,

wrttp LIKE rpsco1-wrttp,

trgkz LIKE rpsco1-trgkz,

gjahr LIKE rpsco1-gjahr,

acpos LIKE rpsco1-acpos, "Categoría de valor

vorga LIKE rpsco1-vorga, "Clase presupuesto presupuestación/planificación

versn LIKE rpsco1-versn,

abkat LIKE rpsco1-abkat,

geber LIKE rpsco1-geber,

twaer LIKE rpsco1-twaer, "moneda de transacción

perbl LIKE rpsco1-perbl,

beltp LIKE rpsco1-beltp,

wlp00 LIKE rpsco1-wlp00, "Valor de período en moneda de ledger

wlp01 LIKE rpsco1-wlp00,

wlp02 LIKE rpsco1-wlp00,

wlp03 LIKE rpsco1-wlp00,

wlp04 LIKE rpsco1-wlp00,

wlp05 LIKE rpsco1-wlp00,

wlp06 LIKE rpsco1-wlp00,

wlp07 LIKE rpsco1-wlp00,

wlp08 LIKE rpsco1-wlp00,

wlp09 LIKE rpsco1-wlp00,

wlp10 LIKE rpsco1-wlp00,

wlp11 LIKE rpsco1-wlp00,

wlp12 LIKE rpsco1-wlp00,

wlp13 LIKE rpsco1-wlp00,

wlp14 LIKE rpsco1-wlp00,

wlp15 LIKE rpsco1-wlp00,

wlp16 LIKE rpsco1-wlp00,

wtp00 LIKE rpsco1-wtp00, "Valor anual en moneda de transacción

wtp01 LIKE rpsco1-wtp00,

wtp02 LIKE rpsco1-wtp00,

wtp03 LIKE rpsco1-wtp00,

wtp04 LIKE rpsco1-wtp00,

wtp05 LIKE rpsco1-wtp00,

wtp06 LIKE rpsco1-wtp00,

wtp07 LIKE rpsco1-wtp00,

wtp08 LIKE rpsco1-wtp00,

wtp09 LIKE rpsco1-wtp00,

wtp10 LIKE rpsco1-wtp00,

wtp11 LIKE rpsco1-wtp00,

wtp12 LIKE rpsco1-wtp00,

wtp13 LIKE rpsco1-wtp00,

wtp14 LIKE rpsco1-wtp00,

wtp15 LIKE rpsco1-wtp00,

wtp16 LIKE rpsco1-wtp00,

poc LIKE ev_poc-meg007,

sttxt_int LIKE pstat-sttxt_int, "status del sistema

END OF t_rpsco1,

BEGIN OF t_pstat,

objnr LIKE pstat-objnr,

sttxt_int LIKE pstat-sttxt_int,

sttxt_ext LIKE pstat-sttxt_ext,

astex LIKE pstat-astex,

END OF t_pstat.

*Parámetros que vienen del programa principal

*----


*

TYPES: BEGIN OF t_master_data,

profile LIKE zfps_params-profile,

prog_inversiones LIKE zfps_params-prog_inversiones,

id_de_posicion LIKE zfps_params-id_de_posicion,

a_autoriz LIKE zfps_params-a_autoriz,

sign TYPE c,

option TYPE c LENGTH 2,

END OF t_master_data.

DATA: it_master_data TYPE TABLE OF t_master_data,

wa_master_data LIKE LINE OF it_master_data.

DATA: aux_id TYPE c LENGTH 8,

aux_id2 TYPE c LENGTH 8,

aux_pstat_objnr LIKE pstat-objnr,

awx_sttxt_int LIKE pstat-sttxt_int.

*----


*

*-Internal table declarations

DATA:itcosp1 TYPE TABLE OF it WITH DEFAULT KEY INITIAL SIZE 0,

itprps TYPE TABLE OF itab WITH DEFAULT KEY INITIAL SIZE 0,

itproj TYPE TABLE OF itpr WITH DEFAULT KEY INITIAL SIZE 0,

itev_poc TYPE TABLE OF t_poc WITH DEFAULT KEY INITIAL SIZE 0,

itdata TYPE TABLE OF t_data WITH DEFAULT KEY INITIAL SIZE 0,

itjerar TYPE TABLE OF itab WITH DEFAULT KEY INITIAL SIZE 0,

itcoss1 TYPE TABLE OF t_coss1 WITH DEFAULT KEY INITIAL SIZE 0,

itpstat TYPE TABLE OF t_pstat WITH DEFAULT KEY INITIAL SIZE 0,

itrpsco1 TYPE TABLE OF t_rpsco1,

itonr00 TYPE TABLE OF t_onr00,

*-Work area declarations

itcosp1_wa TYPE it,

itprps_wa TYPE itab,

itprps_wa2 TYPE itab,

itproj_wa TYPE itpr,

itev_poc_wa TYPE t_poc,

itdata_wa TYPE t_data,

itjerar_wa TYPE itab,

itcoss1_wa TYPE t_coss1,

itrpsco1_wa LIKE LINE OF itrpsco1,

itonr00_wa LIKE LINE OF itonr00,

itpstat_wa LIKE LINE OF itpstat.

****----


Get data from Logical Database----


******

INITIALIZATION.

*Llenado de los parámetros que necesita el perfíl

*de la base de datos lógica PSJ.

*----


*

IMPORT wa_master_data FROM MEMORY ID sy-uname.

cn_profd = wa_master_data-profile.

cn_imtp-sign = wa_master_data-sign.

cn_imtp-option = wa_master_data-option.

cn_imtp-low = wa_master_data-prog_inversiones.

APPEND cn_imtp.

cn_imprp = wa_master_data-id_de_posicion.

cn_imtpj = wa_master_data-a_autoriz.

*----


*

*Inicio de lógica para extraer la data de proyectos

*----


*

GET pstat.

itpstat_wa-objnr = pstat-objnr.

itpstat_wa-sttxt_int = pstat-sttxt_int.

itpstat_wa-sttxt_ext = pstat-sttxt_ext.

itpstat_wa-astex = pstat-astex.

APPEND itpstat_wa TO itpstat.

GET proj.

  • WRITE: / 'PROJ', proj-pspid.

GET proj LATE.

  • WRITE: / 'PROJ LATE', proj-pspid.

GET prps_r.

itprps_wa-poski = prps_r-poski.

itprps_wa-objnr = prps_r-objnr.

itprps_wa-posid = prps_r-posid.

itprps_wa-post1 = prps_r-post1.

itprps_wa-psphi = prps_r-psphi.

itprps_wa-stufe = prps_r-stufe.

APPEND itprps_wa TO itprps.

itjerar_wa-poski = prps_r-poski.

itjerar_wa-objnr = prps_r-objnr.

itjerar_wa-posid = prps_r-posid.

itjerar_wa-post1 = prps_r-post1.

itjerar_wa-psphi = prps_r-psphi.

itjerar_wa-stufe = prps_r-stufe.

APPEND itjerar_wa TO itjerar.

  • WRITE: / 'PRPS', prps_r-posid, prps_r-post1.

GET prps_r LATE.

  • WRITE: / 'PRPS LATE', prps_r-posid.

GET pstx.

  • WRITE: / 'PSTX', pstx-pstxtky.

GET pstx LATE.

  • WRITE: / 'PSTX LATE', pstx-pstxtky.

GET aufk.

  • WRITE: / 'AUFK', aufk-aufnr.

GET aufk LATE.

  • WRITE: / 'AUFK LATE', aufk-aufnr.

GET act01.

  • WRITE: / 'ACT01', act01-aufpl, act01-aplzl.

GET act01 LATE.

  • WRITE: / 'ACT01 LATE', act01-aufpl, act01-aplzl.

*

GET impr.

  • WRITE:/ 'IMPR', impr-posid, impr-prnam, impr-parnr.

GET psdypd.

GET psdypr.

GET psdynp.

GET psdynv.

GET onr00.

itonr00_wa-posid = prps_r-posid.

itonr00_wa-objnr = onr00-objnr.

APPEND itonr00_wa TO itonr00.

GET rpsco1.

*-De aquí obtenemos el presupuesto, real, comprometido por proyecto

itrpsco1_wa-objnr = rpsco1-objnr. "número de objeto

itrpsco1_wa-psphi = prps_r-psphi. "Número actual del proyecto correspondiente

itrpsco1_wa-posid = prps_r-posid. "(elemento PEP)

itrpsco1_wa-poski = prps_r-poski.

itrpsco1_wa-lednr = rpsco1-lednr.

itrpsco1_wa-wrttp = rpsco1-wrttp.

itrpsco1_wa-trgkz = rpsco1-trgkz.

itrpsco1_wa-gjahr = rpsco1-gjahr.

itrpsco1_wa-acpos = rpsco1-acpos. "Categoría de valor

itrpsco1_wa-vorga = rpsco1-vorga. "Clase presupuesto presupuestación/planificación

itrpsco1_wa-versn = rpsco1-versn.

itrpsco1_wa-abkat = rpsco1-abkat.

itrpsco1_wa-geber = rpsco1-geber.

itrpsco1_wa-twaer = rpsco1-twaer. "moneda de transacción

itrpsco1_wa-perbl = rpsco1-perbl.

itrpsco1_wa-beltp = rpsco1-beltp.

itrpsco1_wa-wlp00 = rpsco1-wlp00. "Valor de período en moneda de ledger

itrpsco1_wa-wlp01 = rpsco1-wlp01.

itrpsco1_wa-wlp02 = rpsco1-wlp02.

itrpsco1_wa-wlp03 = rpsco1-wlp03.

itrpsco1_wa-wlp04 = rpsco1-wlp04.

itrpsco1_wa-wlp05 = rpsco1-wlp05.

itrpsco1_wa-wlp06 = rpsco1-wlp06.

itrpsco1_wa-wlp07 = rpsco1-wlp07.

itrpsco1_wa-wlp08 = rpsco1-wlp08.

itrpsco1_wa-wlp09 = rpsco1-wlp09.

itrpsco1_wa-wlp10 = rpsco1-wlp10.

itrpsco1_wa-wlp11 = rpsco1-wlp11.

itrpsco1_wa-wlp12 = rpsco1-wlp12.

itrpsco1_wa-wlp13 = rpsco1-wlp13.

itrpsco1_wa-wlp14 = rpsco1-wlp14.

itrpsco1_wa-wlp15 = rpsco1-wlp15.

itrpsco1_wa-wlp16 = rpsco1-wlp16.

itrpsco1_wa-wtp00 = rpsco1-wtp00. "Valor anual en moneda de transacción

itrpsco1_wa-wtp01 = rpsco1-wtp01.

itrpsco1_wa-wtp02 = rpsco1-wtp02.

itrpsco1_wa-wtp03 = rpsco1-wtp03.

itrpsco1_wa-wtp04 = rpsco1-wtp04.

itrpsco1_wa-wtp05 = rpsco1-wtp05.

itrpsco1_wa-wtp06 = rpsco1-wtp06.

itrpsco1_wa-wtp07 = rpsco1-wtp07.

itrpsco1_wa-wtp08 = rpsco1-wtp08.

itrpsco1_wa-wtp09 = rpsco1-wtp09.

itrpsco1_wa-wtp10 = rpsco1-wtp10.

itrpsco1_wa-wtp11 = rpsco1-wtp11.

itrpsco1_wa-wtp12 = rpsco1-wtp12.

itrpsco1_wa-wtp13 = rpsco1-wtp13.

itrpsco1_wa-wtp14 = rpsco1-wtp14.

itrpsco1_wa-wtp15 = rpsco1-wtp15.

itrpsco1_wa-wtp16 = rpsco1-wtp16.

itrpsco1_wa-poc = ev_poc-meg007. "Percent of Completion

  • variables auxiliares que pueden utilizarse en el futuro

  • aux_pstat_objnr = pstat-objnr.

  • awx_sttxt_int = pstat-sttxt_int.

READ TABLE itpstat INTO itpstat_wa WITH KEY objnr = itrpsco1_wa-objnr.

IF sy-subrc = 0.

itrpsco1_wa-sttxt_int = itpstat_wa-sttxt_int.

ELSE.

itrpsco1_wa-sttxt_int = 'N/A'.

ENDIF.

APPEND itrpsco1_wa TO itrpsco1.

GET cosp1.

itcosp1_wa-objnr = cosp1-objnr.

itcosp1_wa-wrttp = cosp1-wrttp.

itcosp1_wa-kstar = cosp1-kstar.

itcosp1_wa-vrgng = cosp1-vrgng.

itcosp1_wa-wkg001 = cosp1-wkg001.

itcosp1_wa-wkg002 = cosp1-wkg002.

itcosp1_wa-wkg003 = cosp1-wkg003.

itcosp1_wa-wkg004 = cosp1-wkg004.

itcosp1_wa-wkg005 = cosp1-wkg005.

itcosp1_wa-wkg007 = cosp1-wkg007.

itcosp1_wa-wkg008 = cosp1-wkg008.

itcosp1_wa-wkg009 = cosp1-wkg009.

itcosp1_wa-wkg010 = cosp1-wkg010.

itcosp1_wa-wkg011 = cosp1-wkg011.

itcosp1_wa-wkg012 = cosp1-wkg012.

itcosp1_wa-wkg013 = cosp1-wkg013.

itcosp1_wa-wkg014 = cosp1-wkg014.

itcosp1_wa-wkg015 = cosp1-wkg015.

itcosp1_wa-wkg016 = cosp1-wkg016.

APPEND itcosp1_wa TO itcosp1.

GET coss1.

itcoss1_wa-objnr = coss1-objnr. "Object number

itcoss1_wa-wrttp = coss1-wrttp. "Tipo de valor

itcoss1_wa-versn = coss1-versn. "Versión

itcoss1_wa-kstar = coss1-kstar. "Cost Element

itcoss1_wa-vrgng = coss1-vrgng. "CO Business Transaction

itcoss1_wa-twaer = coss1-twaer.

itcoss1_wa-perbl = coss1-perbl.

itcoss1_wa-wkg001 = coss1-wkg001. "Total Value in Controlling Area Currency

itcoss1_wa-wkg002 = coss1-wkg002.

itcoss1_wa-wkg003 = coss1-wkg003.

itcoss1_wa-wkg004 = coss1-wkg004.

itcoss1_wa-wkg005 = coss1-wkg005.

itcoss1_wa-wkg007 = coss1-wkg007.

itcoss1_wa-wkg008 = coss1-wkg008.

itcoss1_wa-wkg009 = coss1-wkg009.

itcoss1_wa-wkg010 = coss1-wkg010.

itcoss1_wa-wkg011 = coss1-wkg011.

itcoss1_wa-wkg012 = coss1-wkg012.

itcoss1_wa-wkg013 = coss1-wkg013.

itcoss1_wa-wkg014 = coss1-wkg014.

itcoss1_wa-wkg015 = coss1-wkg015.

itcoss1_wa-wkg016 = coss1-wkg016.

itcoss1_wa-beltp = coss1-beltp. "Tipo de cargo

APPEND itcoss1_wa TO itcoss1.

GET ev_poc.

itev_poc_wa-objnr = ev_poc-objnr.

itev_poc_wa-meg007 = ev_poc-meg007.

itev_poc_wa-wrttp = ev_poc-wrttp.

itev_poc_wa-acpos = ev_poc-acpos.

itev_poc_wa-proyecto = prps_r-poski.

APPEND itev_poc_wa TO itev_poc.

END-OF-SELECTION.

*-- Inicio lógica principal

  • LOOP AT itprps INTO itprps_wa WHERE stufe = '1'.

  • CLEAR itcosp1_wa.

  • SORT itcosp1 BY objnr.

**---Busca todos los niveles de la jerarquía para un proyecto específico

  • PERFORM llena_jerarquia.

*-- Obtener montos del proyecto

CLEAR: presupuesto, real, comprometido, poc,

contador1, contador2, contador3.

CLEAR: itdata_wa.

SORT itrpsco1 BY psphi.

LOOP AT itrpsco1 INTO itrpsco1_wa.

aux_cod_proj = itrpsco1_wa-poski+0(10).

itdata_wa-cod_proj = aux_cod_proj.

aux_objnr = itrpsco1_wa-objnr.

AT NEW psphi.

      • validar cierre del sistema no es "CERR"

    • este chequeo puede ser utilizado en el futuro

  • check itrpsco1_wa-sttxt_int+0(4) <> 'CERR'.

CLEAR: presupuesto, real, comprometido, poc,

contador1, contador2, contador3.

REPLACE ALL OCCURRENCES OF '-' IN itdata_wa-cod_proj WITH ' '.

SELECT post1 FROM prps INTO itdata_wa-descrip

WHERE posid = itdata_wa-cod_proj.

ENDSELECT.

  • Poner el valor original al código del proyecto

itdata_wa-cod_proj = aux_cod_proj.

  • Buscar Porciento de Completación

READ TABLE itev_poc INTO itev_poc_wa WITH KEY

  • objnr = aux_objnr

proyecto = aux_cod_proj

wrttp = 'P2'

acpos = 'PROGRESO2'.

IF sy-subrc = 0.

itdata_wa-poc = itev_poc_wa-meg007.

ELSE.

itdata_wa-poc = 0.

ENDIF.

ENDAT.

  • Accede la tabla interna itrpsco1 y busca el presupuesto del

  • proyecto

*----


*

IF itrpsco1_wa-versn = '000'

AND itrpsco1_wa-lednr = '0001'

AND itrpsco1_wa-wrttp = '41'

AND itrpsco1_wa-trgkz = 'P'

AND itrpsco1_wa-beltp = '1'.

  • Sumarizar las columnas

CLEAR contador1.

contador1 = '00'.

AT NEW psphi.

CLEAR presupuesto.

ENDAT.

WHILE contador1 .

contador1 = contador1 + 1.

ENDWHILE.

AT END OF psphi.

itdata_wa-presupuesto = presupuesto.

ENDAT.

ENDIF.

*--Nota:

  • Este valor de Presupuesto sumarizado lo podemos obtener de las tablas:

  • BPEG1 y BPJA1

  • Rutina que extrae la inversión real del proyecto

*----


*

*clave busqueda para REAL en tabla RPSCO1

*LEDNR WRTTP TRGKZ VERSN BELTP

*1 4 P 0 1

* 11 1-9

*----


*

IF itrpsco1_wa-versn = '000'

AND itrpsco1_wa-lednr = '0001'

AND ( itrpsco1_wa-wrttp = '04' OR itrpsco1_wa-wrttp = '11')

AND ( itrpsco1_wa-trgkz BETWEEN '1' AND '9' OR itrpsco1_wa-trgkz = 'P')

AND itrpsco1_wa-beltp = '1'.

  • Sumarizar las columnas

CLEAR contador2.

contador2 = '00'.

AT NEW psphi.

CLEAR real.

ENDAT.

WHILE contador2 .

contador2 = contador2 + 1.

ENDWHILE.

AT END OF psphi.

itdata_wa-inv_real = real.

ENDAT.

ENDIF.

*----


*

  • Rutina que extrae la inversión real del proyecto

*----


*

*clave busqueda para COMPROMETIDO en tabla RPSCO1

*LEDNR WRTTP TRGKZ VERSN BELTP

*1 21-24, 26 P 0 1

* 5A,58 1-9

*----


*

IF itrpsco1_wa-versn = '000'

AND itrpsco1_wa-lednr = '0001'

AND ( itrpsco1_wa-wrttp BETWEEN '21' AND '24' OR

itrpsco1_wa-wrttp = '26' OR itrpsco1_wa-wrttp = '5A' OR

itrpsco1_wa-wrttp BETWEEN '54' AND '58')

AND ( itrpsco1_wa-trgkz BETWEEN '1' AND '9' OR itrpsco1_wa-trgkz = 'P')

AND itrpsco1_wa-beltp = '1'.

  • Sumarizar las columnas

CLEAR contador3.

contador3 = '00'.

AT NEW psphi.

CLEAR comprometido.

ENDAT.

WHILE contador3 .

contador3 = contador3 + 1.

ENDWHILE.

AT END OF psphi.

itdata_wa-comprometido = comprometido.

ENDAT.

ENDIF.

AT END OF psphi.

itdata_wa-inv_real = real.

itdata_wa-comprometido = comprometido.

itdata_wa-dispuesto = real + comprometido.

itdata_wa-disponible = presupuesto - itdata_wa-dispuesto.

itdata_wa-presupuesto = presupuesto.

APPEND itdata_wa TO itdata.

CLEAR itdata_wa.

ENDAT.

ENDLOOP.

  • LOOP AT itcosp1 INTO itcosp1_wa WHERE objnr IN st_object. "r_jerar.

**----- Buscar monto real y comprometido

    • PERFORM sumarizar_datos.

*

  • ENDLOOP.

  • ENDLOOP.

**---impresión de la data "TEST"

  • CLEAR itdata_wa.

  • LOOP AT itdata INTO itdata_wa.

*

  • WRITE: / 'Proyecto: ', itdata_wa-cod_proj,

  • 'Descripción: ', itdata_wa-descrip,

  • 'POC: ', itdata_wa-poc,

  • / 'Presupuesto: ', itdata_wa-presupuesto,

  • / 'Real: ', itdata_wa-inv_real,

  • / 'Comprometido: ', itdata_wa-comprometido,

  • / 'Dispuesto: ', itdata_wa-dispuesto,

  • / 'Disponible: ', itdata_wa-disponible.

  • SKIP.

*

  • ENDLOOP.

CONCATENATE sy-uname2(4) sy-uzeit2(4) INTO aux_id2.

EXPORT itdata FROM itdata TO MEMORY ID sy-uname+2(5).

*&----


*

*& Form sumarizar_datos

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM sumarizar_datos .

*--Anteriormente lo usé para buscar el presupuesto de un proyecto

  • IF itcosp1_wa-vrgng = 'RKP1'. "RKP1 = Presupuestado en tabla COSP

  • CLEAR contador.

  • contador = '01'.

  • DO 16 TIMES.

  • CONCATENATE 'itcosp1_wa-wkg0' contador INTO vmes.

  • ASSIGN (vmes) TO <f>.

  • presupuesto = presupuesto + <f>.

  • contador = contador + 1.

  • ENDDO.

**--Buscar real del proyecto

  • IF itcosp1_wa-vrgng = 'COIN' OR itcosp1_wa-vrgng = 'COIE'. "COIN = real en tabla COSP

  • CLEAR contador.

  • contador = '01'.

  • DO 16 TIMES.

  • CONCATENATE 'itcosp1_wa-wkg0' contador INTO vmes.

  • ASSIGN (vmes) TO <f>.

  • real = real + <f>.

  • contador = contador + 1.

  • ENDDO.

**--Buscar comprometido del proyecto

  • ELSEIF itcosp1_wa-vrgng = 'RMBE' OR itcosp1_wa-vrgng = 'RMBA'. "RMBE = comprometido en tabla COSP

  • CLEAR contador.

  • contador = '01'.

  • DO 16 TIMES.

  • CONCATENATE 'itcosp1_wa-wkg0' contador INTO vmes.

  • ASSIGN (vmes) TO <f>.

  • comprometido = comprometido + <f>.

  • contador = contador + 1.

  • ENDDO.

*

  • ENDIF.

ENDFORM. " sumarizar_datos

*&----


*

*& Form llena_jerarquia

*&----


*

  • Carga la jerarquía completa para un proyecto específico

*----


*

FORM llena_jerarquia .

CLEAR itprps_wa2. REFRESH r_jerar.

LOOP AT itprps INTO itprps_wa2 WHERE psphi = itprps_wa-psphi.

r_jerar-sign = 'I'.

r_jerar-option = 'EQ'.

r_jerar-low = itprps_wa2-objnr.

APPEND r_jerar.

ENDLOOP.

LOOP AT itonr00 INTO itonr00_wa.

st_object-sign = 'I'.

st_object-option = 'EQ'.

st_object-low = itonr00_wa-objnr.

APPEND st_object.

ENDLOOP.

ENDFORM. " llena_jerarquia

2 REPLIES 2
Read only

Former Member
0 Likes
1,120

Hi Charli,

I'm doing some preliminary research on the cash extractors (for BW) 0PS_CSH_WBS and 0PS_CSH_NWA. My main questions are what modules I need turned on to use these extractors and if they're not available to me how can i go about getting the information provided by the extractors into BW.

I came across your post and I think it could be helpful to me down the road. Since we're working in two different areas could you explain to me what you mean by working with just the logical database PSJ?

Thanks,

Chris

Read only

0 Likes
1,120

Hi Christopher,

Your Question:

<b>could you explain to me what you mean by working with just the logical database PSJ?</b>

My Response: The PSJ logical database is intended to work for data extraction from the Project System module. You can go to SE36 transaction and put PSJ and visualize the structure of this Logical Database. It's enormous but you have the documentation available. Just select the documentation radio button on transaction SE36 and write PSJ and click visualize. If you want to extract WBS, project information or any other data related to projects this LDB will help you a lot.