miércoles, 29 de diciembre de 2010

Transformation routines

1.- El clásico delete DELETE DATA_PACKAGE es ahora

DATA: l_tabix TYPE sy-tabix,
wa_source_package TYPE _ty_s_sc_1.

LOOP AT source_package
INTO wa_source_package.
l_tabix = sy-tabix.

IF ( wa_source_package-processkey NE '001' AND
wa_source_package-processkey NE '011' AND
wa_source_package-processkey NE '021' AND
wa_source_package-processkey NE '002' AND
wa_source_package-processkey NE '012' AND
wa_source_package-processkey NE '022' ) OR
wa_source_package-CPQUAOU EQ 0 OR
wa_source_package-numerator EQ 0 OR
wa_source_package-denomintr EQ 0.
DELETE
source_package
INDEX
l_tabix.

ENDIF.

ENDLOOP.
Ex: completar un dato en las subida
clear result.
select single /BIC/Z_GROUP
into result
from /BI0/PPROD_HIER
where PROD_HIER = SOURCE_FIELDS-PRDHA
and OBJVERS eq 'A'.




Ex.: 0COSTCENTER-->Cost center hierarchy

select single * from rshiedir into hier_wa where
objvers eq 'A' and
hietype eq '1' and
hienm eq hier_name and
dateto ge sy-datum .
if sy-subrc ne 0 .
raise invalid_hierarchy .
endif .

clear hier_detail .
move: hier_wa-hieid to hier_detail-hieid ,
hier_wa-objvers to hier_detail-objvers .


call function 'RSSH_HIERARCHY_READ'
exporting
i_rshiedirkey = hier_detail
* I_RSHIEDIRLOG =
i_date = sy-datum
importing
e_rshiedir = e_rshiedir
e_t_rsnodes = e_t_rsnodes
e_th_rsinterval = e_th_rsinterval
e_duplicate_leafs = e_duplicate_leafs
e_t_rsnodes_lnk = e_t_rsnodes_lnk
exceptions
invalid_hierarchy = 1
name_error = 2
iobj_not_found = 3
others = 4 .
case sy-subrc .

martes, 28 de diciembre de 2010

Atajo a SAP

Standard SAP GUI doesn’t allows to save password in the shortcuts. This can be achieved by doing these two steps.

1.) Executing sapshcut.exe which normally exists at C:\Program Files\SAP\FrontEnd\SAPgui.
Once this step is done then the variables which needs to be modified in REGEDIT are available for editing.

2.) Go to Command Prompt and type in REGEDIT -> HKEY_CURRENT_USER –> Software –> SAP –> SAPShortcut –> Security, Change the variable Enable Password from O to 1.

martes, 21 de diciembre de 2010

Obtener el año a partir de una fecha y restar 2 años

Coger la fecha de un prompt y restarle para conseguir en año n-2:

FormatNumber((Year(ToDate(UserResponse("Data fixada");""))-2);"####")

A partir del mes-año del prompt y restarle para conseguir en año n-2:

FormatNumber(ToNumber(Right(UserResponse("Mes analise (MMYYYY)");4))-2;"####")

Como extraer la clasificación del lote

Si sacaramos esto con código tendría que ser algo así:
* DATA:
* ld_tabix LIKE sy-tabix,
* v_matlot(28) TYPE c,
* v_atwrt LIKE ausp-atwrt,
* v_cuobj LIKE inob-cuobj,
* v_atinn LIKE cabn-atinn,
* v_clint LIKE klah-clint.

clear: v_atwrt, v_matlot, v_cuobj, v_atinn.
if not r_mc12vc0itm-charg is initial.
if not r_mc12vc0itm-matnr is initial.

CONCATENATE r_mc12vc0itm-matnr r_mc12vc0itm-charg INTO v_matlot.

SELECT SINGLE cuobj FROM inob INTO v_cuobj
WHERE klart = '023'
AND objek = v_matlot.

CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
input = 'CENTRO'
IMPORTING
output = v_atinn.

SELECT atwrt FROM ausp INTO v_atwrt UP TO 1 ROWS
WHERE objek = v_cuobj
AND atinn = v_atinn
AND klart = '023'
AND atzhl = 1.
ENDSELECT.

r_mc12vc0itm-zzwerks_fb = v_atwrt.
endif.
endif.


Se trata de evitar todo esto y sacar estos datos utilizando el standar:
Bases:
Datos del maestro del lote: MCH1.
Datos de clase maesro para el lote (023): CL03.

A diferencia del material, el lote no tiene el correspondiente extractor _ATTR.
Entonces:
Paso 1) crear un extractor de atributos para el lote en la RSO2, si se quiere derectamente sobre la tabla (MCH1 o MCHA) o se puede hacer una vista más personal
Paso 2) crear el extractor para la clasificación en la CTBW
Paso 3) crear el correspondiente infoobjeto en BW

jueves, 16 de diciembre de 2010

Movimientos de materiales

Problemas típicos:

2lis_03_BF
* los campos BW* estan a cero, ej. el BWMNG --> solución:
Activar la determinación del process KEY: MCB_
Activar el flag de BW en la BF11

Note 353042 - Howto: Activate transaction key (PROCESSKEY)
Note 352344 -> Process key + reversals in Inventory Management(Consulting note). 

miércoles, 15 de diciembre de 2010

Codigo para obtener "Sourrce System R/3 Entty

CALL FUNCTION 'RSDG_ID_GET_FROM_LOGSYS'
EXPORTING
i_source_system = G_S_MINFO-LOGSYS
IMPORTING
e_soursysid = RESULT
EXCEPTIONS
id_not_found = 1.

miércoles, 8 de diciembre de 2010

Codigo para extraer las rubricas salariales

Este es un codigo curioso de como obtener las rubricas salariales, aunque al final se utilizó la call function de más abajo.

DATA: zpa0001 TYPE TABLE OF p0001 WITH HEADER LINE.
DATA: zpa0008 TYPE TABLE OF p0008 WITH HEADER LINE,
zpa0007 TYPE TABLE OF p0007 WITH HEADER LINE,
zpa0014 TYPE TABLE OF p0014 WITH HEADER LINE,
ZPPBWLA TYPE TABLE OF PBWLA WITH HEADER LINE.


* CALL FUNCTION 'HR_READ_INFOTYPE'
* EXPORTING
* pernr = wa_c_t_data-pernr
* infty = '0008'
* begda = '18000101'
* endda = '99991231'
* TABLES
* infty_tab = zpa0008.
*
* LOOP AT zpa0008.
* IF zpa0008-BEGDA <= wa_c_t_data-BEGDA * and zpa0008-endda >= wa_c_t_data-ENDDA.
* DO 40 TIMES VARYING LGA FROM ZPa0008-LGA01 NEXT ZPa0008-LGA02
* VARYING BTE FROM ZPa0008-BET01 NEXT ZPa0008-BET02.
* IF LGA eq '0001'.
* wa_c_t_data-Z_VB_0001 = bte.
* ELSEIF LGA eq '0004'.
* wa_c_t_data-Z_IHT_0004 = bte.
* ELSEIF LGA eq '0005'.
* wa_c_t_data-Z_CH_0005 = bte.
* ELSEIF LGA eq '0006'.
* wa_c_t_data-Z_TU_0006 = bte.
* ELSEIF LGA eq '0007'.
* wa_c_t_data-Z_AS_0007 = bte.
* ENDIF.
* ENDDO.
* endif.
* endloop.



CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE_EXT'
EXPORTING
* APPLI = 'E'
begda = wa_c_t_data-BEGDA
endda = wa_c_t_data-ENDDA
INFTY = '0008'
PERNR = wa_c_t_data-PERNR
* SUBTY = '0 '
TABLES
PP0001 = zpa0001
PP0007 = zpa0007
PP0008 = zpa0008
PPBWLA = zPPBWLA .
EXCEPTIONS
ERROR_AT_INDIRECT_EVALUATION = 1 .
IF SY-SUBRC <> 0.
ENDIF.


LOOP AT zPPBWLA.
IF zPPBWLA-BEGDA <= wa_c_t_data-BEGDA and zPPBWLA-endda >= wa_c_t_data-ENDDA.
IF zPPBWLA-LGARt eq '0001'.
wa_c_t_data-Z_VB_0001 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0004'.
wa_c_t_data-Z_IHT_0004 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0005'.
wa_c_t_data-Z_CH_0005 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0006'.
wa_c_t_data-Z_TU_0006 = zPPBWLA-betrg.
ELSEIF zPPBWLA-LGARt eq '0007'.
wa_c_t_data-Z_AS_0007 = zPPBWLA-betrg.
ENDIF.
endif.
endloop.


CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE_EXT'
EXPORTING
* APPLI = 'E'
begda = wa_c_t_data-BEGDA
endda = wa_c_t_data-ENDDA
INFTY = '0014'
PERNR = wa_c_t_data-PERNR
SUBTY = '3001'
TABLES
PP0001 = zpa0001
PP0007 = zpa0007
PP0008 = zpa0008
PPBWLA = zPPBWLA
PP0014 = zpa0014 .
EXCEPTIONS
ERROR_AT_INDIRECT_EVALUATION = 1 .
IF SY-SUBRC <> 0.
ENDIF.
LOOP AT zPPBWLA.
if zPPBWLA-BEGDA <= wa_c_t_data-BEGDA and zPPBWLA-endda >= wa_c_t_data-ENDDA
and zPPBWLA-LGART EQ '3001'.
wa_c_t_data-Z_PJ_3001 = zPPBWLA-betrg.
endif.
endloop.

CO-PA Mapping

He aquí el mapeo de CO-PA
Síntese de objetos
Campo InfoObjeto Elem.dds. Tp.dados Compr.int.

1_CO_PA_CCA

Caracts.

Centro de custo emissor SKOST 0ME_CSTCNT SKOST CHAR 20
Centro de lucro parceiro PPRCTR 0PART_PRCTR PPRCTR CHAR 20
Chart of accounts KTOPL 0CHRT_ACCTS KTOPL CHAR 8
Chave do país LAND1 0COUNTRY LAND1_GP CHAR 6
Classe de custo KSTAR 0COSTELMNT KSTAR CHAR 20
Ctg.valor para reporting WRTTP 0VTYPE RSVTYPE NUMC 6
Currency Type CURTYPE 0CURTYPE RSCURTYPE CHAR 4
Customer number KNDNR 0CUSTOMER KUNDE_PA CHAR 20
Código da empresa BUKRS 0COMP_CODE BUKRS CHAR 8
Data de faturamento/liquidação FADAT 0ME_BILL_D FADAT DATS 16
Data de saída da mercadoria WADAT 0GI_DATE WADAT DATS 16
Distribution Channel VTWEG 0DISTR_CHAN VTWEG CHAR 4
Division SPART 0DIVISION SPART CHAR 4
Emissor processo empresarial PRZNR 0ME_ABCPRC SEPRZ CHAR 24
Material ARTNR 0MATERIAL ARTNR CHAR 36
Nº ordem RKAUFNR 0COORDER AUFNR CHAR 24
Objeto de custo KSTRG 0COSTOBJ KSTRG CHAR 24
Perspectiva de avaliação VALUTYP 0VALUATION VALUTYP_ACT NUMC 2
Plant WERKS 0PLANT WERKS_D CHAR 8
Posting date in the document BUDAT 0PSTNG_DATE DAERF DATS 16
Profit Center PRCTR 0PROFIT_CTR PRCTR CHAR 20
Sales Organization VKORG 0SALESORG VKORG CHAR 8
Tipo de operação VRGAR 0REC_TYPE RKE_VRGAR CHAR 2
Tipo documento de faturamento FKART 0BILL_TYPE FKART CHAR 8
Versão VERSI 0VERSION RKEVERSI CHAR 6
Área de contabilidade KOKRS 0CO_AREA KOKRS CHAR 8
Área de negócios GSBER 0BUS_AREA GSBER CHAR 8

Índices

Contribuição marginal 1 COPAMRGN1 0COPAMRGN1 COPAMRGN1 CURR 8
Contribuição marginal 2 COPAMRGN2 0COPAMRGN2 COPAMRGN2 CURR 8
Contribuição marginal 3 COPAMRGN3 0COPAMRGN3 COPAMRGN3 CURR 8
Custos de vendas COPACOGS 0COPACOGS COPACOGS CURR 8
Desconto KWSKTO 0CASH_DSCNT RKESKWSKTO CURR 8
Faturamento líquido COPANETSL 0COPANETSL COPANETSL CURR 8
Promoção COPASPROM 0COPASPROM COPASPROM CURR 8
Quantidade de vendas COPASLQTY 0COPASLQTY COPASLQTY QUAN 8
Receita COPAREVEN 0COPAREVEN COPAREVEN CURR 8
Resultado empresarial operativo COPAPROFT 0COPAPROFT COPAPROFT CURR 8
Total custos de produção fixos COPACOGSF 0COPACOGSF COPACOGSF CURR 8
Total custos indiretos COPAOVHDC 0COPAOVHDC COPAOVHDC CURR 8
Total desvios COPAVRNCS 0COPAVRNCS COPAVRNCS CURR 8
Total reduções de receita COPADISCT 0COPADISCT COPADISCT CURR 8

Características temporais

Exercício GJAHR 0FISCYEAR GJAHR NUMC 8
Exercício / período PERIO 0FISCPER JAHRPER NUMC 14
Variante de exercício PERIV 0FISCVARNT PERIV CHAR 4

Unidades

Código da moeda REC_WAERS 0CURRENCY RKE_REC_WAERS CUKY 10
Unidade de venda COPASLQTU 0COPASLQTU COPASLQTU UNIT 6

Outros campos

WW004 RKEG_WW004 CHAR 4
WW003 RKEG_WW003 CHAR 4
WW002 RKEG_WW002 CHAR 4
WW001 RKEG_WW001 CHAR 4
VV004 RKE2_VV004 CURR 8
VV003 RKE2_VV003 CURR 8
VV002 RKE2_VV002 CURR 8
VV001 RKE2_VV001 CURR 8
VRPRS RKE2_VRPRS CURR 8
STO_POSNR RKE_STO_POSNR CHAR 12
STO_BELNR RKE_STO_BELNR CHAR 20
RPOSN RKERFPOSNR CHAR 12
RBELN RKERFBELNR CHAR 20
POSNR RKE_POSNR CHAR 12
COPAOHSLS COPAOHSLS CURR 8
COPAOHRND COPAOHRND CURR 8
COPAOHOTH COPAOHOTH CURR 8
COPAOHMRK COPAOHMRK CURR 8
COPAOHLOG COPAOHLOG CURR 8
COPAOHADM COPAOHADM CURR 8
COPAODSCN COPAODSCN CURR 8
COPANETRV COPANETRV CURR 8
COPAMATOH COPAMATOH CURR 8
COPAFRGTC COPAFRGTC CURR 8
COPADMATC COPADMATC CURR 8
COPADIRSL COPADIRSL CURR 8
COPACOGSV COPACOGSV CURR 8
COPACDSCN COPACDSCN CURR 8
COPACASHD COPACASHD CURR 8
BELNR RKE_BELNR CHAR 20
ABSMG_ME RKE3_ABSMG UNIT 6
ABSMG RKE2_ABSMG QUAN 8
COPAPDSCN COPAPDSCN CURR 8
ERLOS RKE2_ERLOS CURR 8
COPAUSR09 COPAUSR09 CURR 8
COPAUSR08 COPAUSR08 CURR 8
COPAUSR07 COPAUSR07 CURR 8
COPAUSR06 COPAUSR06 CURR 8
COPAUSR05 COPAUSR05 CURR 8
COPAUSR04 COPAUSR04 CURR 8
COPAUSR03 COPAUSR03 CURR 8
COPAUSR02 COPAUSR02 CURR 8
COPAUSR01 COPAUSR01 CURR 8
COPASDIRS COPASDIRS CURR 8
COPASCOMM COPASCOMM CURR 8
COPAREBAT COPAREBAT CURR 8
COPAQDSCN COPAQDSCN CURR 8
COPAPRDCV COPAPRDCV CURR 8
COPAPRDCF COPAPRDCF CURR 8
Item ord.cliente KDPOS KDPOS NUMC 12
Ordem do cliente KAUFN KDAUF CHAR 20