Mensagem Dinâmica Com Assign

download Mensagem Dinâmica Com Assign

If you can't read please download the document

description

afsdfsdfsdfsd

Transcript of Mensagem Dinâmica Com Assign

DATA: idetails TYPE abap_compdescr_tab, xdetails TYPE abap_compdescr. DATA: ref_table_des TYPE REF TO cl_abap_structdescr." Dados da mensagem LOOP AT idetails INTO xdetails. CONCATENATE p_estrutura '-' xdetails-name INTO vl_campo. ASSIGN (vl_campo) TO . IF sy-subrc = 0. CASE xdetails-name. WHEN 'AGCREDTD'. = p_but0bk-bankl+4(4). WHEN 'AGDEBTD'. = p_t012-bankl+4(4). WHEN 'ANOMESCOMPTC13'. = p_bseg-zzanomes13. WHEN 'CANPGTO'. = '1'. WHEN 'CHASEL'. WHEN 'CNPJ_CPF'. = p_pessoa-cnpj_cpf_deb. WHEN 'CNPJ_CPFCED'. = p_pessoa-cnpj_cpf_cre. WHEN 'CNPJ_CPFCLICRED1'. = p_pessoa-cnpj_cpf_cre. WHEN 'CNPJ_CPFCLICRED2'. WHEN 'CNPJ_CPFCLIDEBTD'. = p_pessoa-cnpj_cpf_deb. WHEN 'CNPJ_CPFCTRAPART'. WHEN 'CNPJ_CPFREMET'. = p_pessoa-cnpj_cpf_deb. WHEN 'CNPJ_CPFSACD'. = p_pessoa-cnpj_cpf_deb. WHEN 'CODDEVTRANSF'. = p_bseg-zzcoddevtr. WHEN 'CODGPS'. = p_bseg-zzcodgps. WHEN 'CODIDENTDLIQUID'. = p_bseg-zzcodidliq. WHEN 'CODIDENTDTES'. = p_bseg-zzcodidtes. WHEN 'CODIDENTDTRANSF'. = p_bseg-zzidtran. WHEN 'CODMSG'. = p_codmsg. WHEN 'CODOPSEL'. WHEN 'CODRECEITATES'. = p_bseg-zzcodretes. WHEN 'CODRECOLHTTES'. = p_bseg-zzcodrctes. WHEN 'CODUNIDDGEST'. = p_bseg-zzcodunges. WHEN 'CTCED'. = p_bseg-zzctced. WHEN 'CTCES'. = p_bseg-zzctces. WHEN 'CTCREDTD'. = p_but0bk-bankn. WHEN 'CTDEBTD'. WHEN 'DESCATV'. WHEN 'DTAGENDT'. WHEN 'DTARREC'. WHEN 'DTHRSIT'. WHEN 'DTINILIQUIDCOMPR'. WHEN 'DTLIQUID'. = p_bseg-zzdtliq. WHEN 'DTMOVTO'. = p_doccomp-budat. WHEN 'DTOP'. = p_bseg-zfbdt. WHEN 'DTOPOR'. WHEN 'DTOPRET'. WHEN 'DTREF'. = p_bseg-zzdtref. WHEN 'DTVENC'. = p_bseg-zzdtvenc. WHEN 'FINLDDCORRESP'. = cl_finlddcorresp. WHEN 'FINLDDIF'. = p_bseg-zzfinal. WHEN 'HIST'. = p_bseg-zzhist. WHEN 'HRAGENDT'. WHEN 'IDENTCDEP'. = p_bseg-zzidentdep. WHEN 'IDENTDCONTRIBT'. = p_bseg-zzidecontr. WHEN 'IDENTDTITSEL'. = p_bseg-zziditsel. WHEN 'IFLIQDANT'. WHEN 'ISPBIF'. = p_banco-ispb_deb. WHEN 'ISPBIFCREDTD'. = p_banco-ispb_cre. WHEN 'ISPBIFDEBTD'. = p_banco-ispb_deb. WHEN 'ISPBLDL'. = p_banco-ispb_cre. WHEN 'ISPBLTR'. = p_banco-ispb_cre. WHEN 'ISPBPART'. = p_banco-ispb_deb. WHEN 'LDL0004_RESULTLIQD'. ASSIGN (vl_campo) TO . CALL FUNCTION 'ZFI_F_BUSCA_LIQ_LDL0004' EXPORTING i_ldlorig = zfi_e_ldl0004-numctrlldlor IMPORTING e_result = zztt_ldl0004_resultliqd.* APPEND zfi_e_ldl0004_resultliqd TO . = zztt_ldl0004_resultliqd. WHEN 'LDL0014_DEP'. ASSIGN (vl_campo) TO . CALL FUNCTION 'ZFI_F_BUSCA_LIQ_LDL0014' EXPORTING i_ldlorig = zfi_e_ldl0014-numctrlldlor IMPORTING e_result = zztt_ldl0014_dep.* APPEND zfi_e_ldl0004_resultliqd TO . = zztt_ldl0014_dep. WHEN 'NIVELPREF'. WHEN 'NOM'. = p_pessoa-nomclidebt. WHEN 'NOMCLICREDT1'. = p_pessoa-nomclicred. WHEN 'NOMCLICREDT2'. WHEN 'NOMCLIDEBTD'. = p_pessoa-nomclidebt. WHEN 'NOMCONTRIBT'. = p_bseg-zznomcontr. WHEN 'NOMREMET'. = p_pessoa-nomclidebt. WHEN 'NUMCODBARRAS'. = p_banco-barcode(44). WHEN 'NUMCONTRTOOPCRED'. WHEN 'NUMCTRLIF'. CLEAR wa_bseg_key. MOVE-CORRESPONDING p_bseg TO wa_bseg_key. CALL FUNCTION 'ZFI_F_GERA_NUMCTRLIF' EXPORTING i_modulo = p_frmpagspb-modulo+4(1) i_bseg_key = wa_bseg_key IMPORTING e_numctrlif = vl_numctrlif. = vl_numctrlif. WHEN 'NUMCTRLLDLOR'. = p_bseg-zznldlor. WHEN 'NUMCTRLLTROR'. = p_bseg-zzltrorig. WHEN 'NUMCTRLPART'. CLEAR wa_bseg_key. MOVE-CORRESPONDING p_bseg TO wa_bseg_key. CALL FUNCTION 'ZFI_F_GERA_NUMCTRLIF' EXPORTING i_modulo = p_frmpagspb-modulo+4(1) i_bseg_key = wa_bseg_key IMPORTING e_numctrlif = vl_numctrlif. = vl_numctrlif. WHEN 'NUMCTRLSLBOR'. = p_bseg-zzslborig. WHEN 'NUMCTRLSTR'. WHEN 'NUMCTRLSTROR'. = p_bseg-zzctrlsor. WHEN 'NUMCTRLTESOR'. = p_bseg-zzctrltor. WHEN 'NUMOPSEL'. = p_bseg-zznumopsel. WHEN 'NUMOPSELOR'. = p_bseg-zzopselor. WHEN 'NUMOPSELRET'. WHEN 'NUMORDEMNEGC'. WHEN 'NUMPROMS'. WHEN 'NUMREFDARF'. = p_bseg-zznumredar. WHEN 'NUMREFGRU'. = p_bseg-zznumrefgr. WHEN 'PERCRECEITABRUTACUM'. WHEN 'PERCVLRPAR'. WHEN 'PERCVLRPARINTMDC'. WHEN 'PU'. = p_bseg-zzpu. WHEN 'PUINTMDC'. WHEN 'PUINTMDCRET'. WHEN 'PURET'. WHEN 'QTDTIT'. = p_bseg-zzqtdtit. WHEN 'SITOPSEL'. WHEN 'STR0040_CTCREDTD'. zfi_e_str0040_ctcredtd-ctcredtd = p_but0bk-bankn. zfi_e_str0040_ctcredtd-cnpjcredtd = p_pessoa-cnpjcredtd. APPEND zfi_e_str0040_ctcredtd TO zfi_e_str0040-str0040_ctcredtd. WHEN 'SUBTPATV'. = p_bseg-zzsubtpatv. WHEN 'TPCOMPR'. WHEN 'TPCTCREDTD'. IF p_but0bk-accname(2) = 'CP'. = p_but0bk-accname(2). ELSE. = 'CC'. ENDIF. WHEN 'TPDARF'. = cl_tpdarf. WHEN 'TPDEB_CRED'. CASE p_codmsg. WHEN 'SEL1007' OR 'SEL1066' OR 'SEL1069'. = cl_tpcred. WHEN OTHERS. IF p_bseg-shkzg = 'H'. "Crdito = cl_tpcred. ELSEIF p_bseg-shkzg = 'S'. "Dbito = cl_tpdeb. ENDIF. ENDCASE. WHEN 'TPDOCBARRAS'. = '1'. WHEN 'TPIDENTDCONTRIBT'. = p_bseg-zztpidcont. WHEN 'TPINFEVTSEL'. WHEN 'TPLEI'. = p_bseg-zztpleilao. WHEN 'TPLIQUIDDFN'. = cl_tpliquiddfn. WHEN 'TPPESSOA'. = p_pessoa-tppessoa_deb. WHEN 'TPPESSOACED'. = p_pessoa-tppessoa_cre. WHEN 'TPPESSOACREDTD'. = p_pessoa-tppessoa_cre. WHEN 'TPPESSOADEBTD'. = p_pessoa-tppessoa_deb. WHEN 'TPPESSOAREMET'. = p_pessoa-tppessoa_deb. WHEN 'TPPESSOASACD'. = p_pessoa-tppessoa_deb. WHEN 'TPREPFINANC'. = p_bseg-zztprepass. WHEN 'TPRETCOMPR'. WHEN 'TPTRANSFLDL'. WHEN 'TPUNILATRDD'. WHEN 'VLRCHEQDEVLD'. WHEN 'VLRDESCT_ABATT'. = p_bseg-zzdescabat. WHEN 'VLRDOC'. = p_bseg-zzdevlprin. WHEN 'VLRENCARGO'. = p_bseg-zzvlrenca. WHEN 'VLRFINANC'.* XXXXX IF p_codmsg = 'SEL1052' OR p_codmsg = 'SEL3052'. = p_bseg-dmbtr. ELSE. = p_doccomp-nebtr. ENDIF. WHEN 'VLRFINANCRET'. WHEN 'VLRINSS'. = p_bseg-zzvlrinss. WHEN 'VLRJUROS'. = p_bseg-zzdevljur. WHEN 'VLRLANC'. = p_doccomp-nebtr. WHEN 'VLRMULTA'. = p_bseg-zzdevlmult. WHEN 'VLROTRACRESC'. = p_bseg-zzacrescim. WHEN 'VLROTRDEDUC'. = p_bseg-zzotrdeduc. WHEN 'VLROTRENT'. = p_bseg-zzvlroent. WHEN 'VLRPRINCIPAL'. = p_bseg-zzdevlprin. WHEN 'VLRRECEITABRUTACUM'. WHEN 'VLRREP'. = p_doccomp-nebtr. WHEN 'VLRTAR'. ENDCASE. UNASSIGN :,. ENDIF. ENDLOOP.*&---------------------------------------------------------------------**& Form F_SET_DADOS*&---------------------------------------------------------------------*FORM f_set_dados USING p_modulo_origem TYPE zzde_modulo_origem p_codmsg TYPE zzde_codmsg p_estrutura TYPE typename p_frmpagspb TYPE zfi_t_frmpagspb p_bkpf TYPE y_bkpf p_bseg TYPE bseg p_banco TYPE y_banco_fi p_but0bk TYPE y_but0bk p_pessoa TYPE y_pessoa p_t012 TYPE y_t012 p_doccomp TYPE y_doccomp CHANGING p_msgspb_cab TYPE zfi_t_msgspb_cab p_dados TYPE any. CONSTANTS: cl_finlddcorresp TYPE zzde_finalidadecorresp VALUE '00001', cl_tpdarf TYPE zzde_tpdarf VALUE 'N', cl_tpdeb TYPE zzde_tipodebitocredito VALUE 'D', cl_tpcred TYPE zzde_tipodebitocredito VALUE 'C', cl_tpliquiddfn TYPE zzde_tbliquiddef VALUE '01'. DATA: idetails TYPE abap_compdescr_tab, xdetails TYPE abap_compdescr. DATA: ref_table_des TYPE REF TO cl_abap_structdescr. DATA: vl_campo TYPE string, vl_numctrlif TYPE zzde_numctrlif. FIELD-SYMBOLS: TYPE ANY, TYPE STANDARD TABLE. " Cabealho da mensagem SPB p_msgspb_cab-modulo_origem = p_modulo_origem. p_msgspb_cab-documento = p_bseg-belnr. p_msgspb_cab-bukrs = p_bseg-bukrs. p_msgspb_cab-gjahr = p_bseg-gjahr. p_msgspb_cab-buzei = p_bseg-buzei. p_msgspb_cab-codmsg = p_codmsg.* Get the structure of the table. ref_table_des ?= cl_abap_typedescr=>describe_by_name( p_estrutura ). idetails[] = ref_table_des->components[].*----------------------------------------------------------------------* " Por enquanto esto relacionados os campos das estruturas abaixo:*----------------------------------------------------------------------* "ZFI_E_SEL1003* "ZFI_E_SEL1007 "ZFI_E_SEL1013* "ZFI_E_SEL1023* "ZFI_E_SEL1052 "ZFI_E_SEL1054* "ZFI_E_SEL1056 "ZFI_E_SEL1066 "ZFI_E_SEL1069 "ZFI_E_SEL1611* "ZFI_E_SEL3052 "ZFI_E_STR0004 "ZFI_E_STR0007 "ZFI_E_STR0010 "ZFI_E_STR0025 "ZFI_E_STR0026 "ZFI_E_STR0033 "ZFI_E_STR0040 "ZFI_E_TES0001 "ZFI_E_TES0017 "ZFI_E_TES0018 "ZFI_E_TES0034 "ZFI_E_SLB0002 "ZFI_E_LTR0004 "ZFI_E_LDL0004 "ZFI_E_LDL0014*----------------------------------------------------------------------* " Dados da mensagem LOOP AT idetails INTO xdetails. CONCATENATE p_estrutura '-' xdetails-name INTO vl_campo. ASSIGN (vl_campo) TO . IF sy-subrc = 0. CASE xdetails-name. WHEN 'AGCREDTD'. = p_but0bk-bankl+4(4). WHEN 'AGDEBTD'. = p_t012-bankl+4(4). WHEN 'ANOMESCOMPTC13'. = p_bseg-zzanomes13. WHEN 'CANPGTO'. = '1'. WHEN 'CHASEL'. WHEN 'CNPJ_CPF'. = p_pessoa-cnpj_cpf_deb. WHEN 'CNPJ_CPFCED'. = p_pessoa-cnpj_cpf_cre. WHEN 'CNPJ_CPFCLICRED1'. = p_pessoa-cnpj_cpf_cre. WHEN 'CNPJ_CPFCLICRED2'. WHEN 'CNPJ_CPFCLIDEBTD'. = p_pessoa-cnpj_cpf_deb. WHEN 'CNPJ_CPFCTRAPART'. WHEN 'CNPJ_CPFREMET'. = p_pessoa-cnpj_cpf_deb. WHEN 'CNPJ_CPFSACD'. = p_pessoa-cnpj_cpf_deb. WHEN 'CODDEVTRANSF'. = p_bseg-zzcoddevtr. WHEN 'CODGPS'. = p_bseg-zzcodgps. WHEN 'CODIDENTDLIQUID'. = p_bseg-zzcodidliq. WHEN 'CODIDENTDTES'. = p_bseg-zzcodidtes. WHEN 'CODIDENTDTRANSF'. = p_bseg-zzidtran. WHEN 'CODMSG'. = p_codmsg. WHEN 'CODOPSEL'. WHEN 'CODRECEITATES'. = p_bseg-zzcodretes. WHEN 'CODRECOLHTTES'. = p_bseg-zzcodrctes. WHEN 'CODUNIDDGEST'. = p_bseg-zzcodunges. WHEN 'CTCED'. = p_bseg-zzctced. WHEN 'CTCES'. = p_bseg-zzctces. WHEN 'CTCREDTD'. = p_but0bk-bankn. WHEN 'CTDEBTD'. WHEN 'DESCATV'. WHEN 'DTAGENDT'. WHEN 'DTARREC'. WHEN 'DTHRSIT'. WHEN 'DTINILIQUIDCOMPR'. WHEN 'DTLIQUID'. = p_bseg-zzdtliq. WHEN 'DTMOVTO'. = p_doccomp-budat. WHEN 'DTOP'. = p_bseg-zfbdt. WHEN 'DTOPOR'. WHEN 'DTOPRET'. WHEN 'DTREF'. = p_bseg-zzdtref. WHEN 'DTVENC'. = p_bseg-zzdtvenc. WHEN 'FINLDDCORRESP'. = cl_finlddcorresp. WHEN 'FINLDDIF'. = p_bseg-zzfinal. WHEN 'HIST'. = p_bseg-zzhist. WHEN 'HRAGENDT'. WHEN 'IDENTCDEP'. = p_bseg-zzidentdep. WHEN 'IDENTDCONTRIBT'. = p_bseg-zzidecontr. WHEN 'IDENTDTITSEL'. = p_bseg-zziditsel. WHEN 'IFLIQDANT'. WHEN 'ISPBIF'. = p_banco-ispb_deb. WHEN 'ISPBIFCREDTD'. = p_banco-ispb_cre. WHEN 'ISPBIFDEBTD'. = p_banco-ispb_deb. WHEN 'ISPBLDL'. = p_banco-ispb_cre. WHEN 'ISPBLTR'. = p_banco-ispb_cre. WHEN 'ISPBPART'. = p_banco-ispb_deb. WHEN 'LDL0004_RESULTLIQD'. ASSIGN (vl_campo) TO . CALL FUNCTION 'ZFI_F_BUSCA_LIQ_LDL0004' EXPORTING i_ldlorig = zfi_e_ldl0004-numctrlldlor IMPORTING e_result = zztt_ldl0004_resultliqd.* APPEND zfi_e_ldl0004_resultliqd TO . = zztt_ldl0004_resultliqd. WHEN 'LDL0014_DEP'. ASSIGN (vl_campo) TO . CALL FUNCTION 'ZFI_F_BUSCA_LIQ_LDL0014' EXPORTING i_ldlorig = zfi_e_ldl0014-numctrlldlor IMPORTING e_result = zztt_ldl0014_dep.* APPEND zfi_e_ldl0004_resultliqd TO . = zztt_ldl0014_dep. WHEN 'NIVELPREF'. WHEN 'NOM'. = p_pessoa-nomclidebt. WHEN 'NOMCLICREDT1'. = p_pessoa-nomclicred. WHEN 'NOMCLICREDT2'. WHEN 'NOMCLIDEBTD'. = p_pessoa-nomclidebt. WHEN 'NOMCONTRIBT'. = p_bseg-zznomcontr. WHEN 'NOMREMET'. = p_pessoa-nomclidebt. WHEN 'NUMCODBARRAS'. = p_banco-barcode(44). WHEN 'NUMCONTRTOOPCRED'. WHEN 'NUMCTRLIF'. CLEAR wa_bseg_key. MOVE-CORRESPONDING p_bseg TO wa_bseg_key. CALL FUNCTION 'ZFI_F_GERA_NUMCTRLIF' EXPORTING i_modulo = p_frmpagspb-modulo+4(1) i_bseg_key = wa_bseg_key IMPORTING e_numctrlif = vl_numctrlif. = vl_numctrlif. WHEN 'NUMCTRLLDLOR'. = p_bseg-zznldlor. WHEN 'NUMCTRLLTROR'. = p_bseg-zzltrorig. WHEN 'NUMCTRLPART'. CLEAR wa_bseg_key. MOVE-CORRESPONDING p_bseg TO wa_bseg_key. CALL FUNCTION 'ZFI_F_GERA_NUMCTRLIF' EXPORTING i_modulo = p_frmpagspb-modulo+4(1) i_bseg_key = wa_bseg_key IMPORTING e_numctrlif = vl_numctrlif. = vl_numctrlif. WHEN 'NUMCTRLSLBOR'. = p_bseg-zzslborig. WHEN 'NUMCTRLSTR'. WHEN 'NUMCTRLSTROR'. = p_bseg-zzctrlsor. WHEN 'NUMCTRLTESOR'. = p_bseg-zzctrltor. WHEN 'NUMOPSEL'. = p_bseg-zznumopsel. WHEN 'NUMOPSELOR'. = p_bseg-zzopselor. WHEN 'NUMOPSELRET'. WHEN 'NUMORDEMNEGC'. WHEN 'NUMPROMS'. WHEN 'NUMREFDARF'. = p_bseg-zznumredar. WHEN 'NUMREFGRU'. = p_bseg-zznumrefgr. WHEN 'PERCRECEITABRUTACUM'. WHEN 'PERCVLRPAR'. WHEN 'PERCVLRPARINTMDC'. WHEN 'PU'. = p_bseg-zzpu. WHEN 'PUINTMDC'. WHEN 'PUINTMDCRET'. WHEN 'PURET'. WHEN 'QTDTIT'. = p_bseg-zzqtdtit. WHEN 'SITOPSEL'. WHEN 'STR0040_CTCREDTD'. zfi_e_str0040_ctcredtd-ctcredtd = p_but0bk-bankn. zfi_e_str0040_ctcredtd-cnpjcredtd = p_pessoa-cnpjcredtd. APPEND zfi_e_str0040_ctcredtd TO zfi_e_str0040-str0040_ctcredtd. WHEN 'SUBTPATV'. = p_bseg-zzsubtpatv. WHEN 'TPCOMPR'. WHEN 'TPCTCREDTD'. IF p_but0bk-accname(2) = 'CP'. = p_but0bk-accname(2). ELSE. = 'CC'. ENDIF. WHEN 'TPDARF'. = cl_tpdarf. WHEN 'TPDEB_CRED'. CASE p_codmsg. WHEN 'SEL1007' OR 'SEL1066' OR 'SEL1069'. = cl_tpcred. WHEN OTHERS. IF p_bseg-shkzg = 'H'. "Crdito = cl_tpcred. ELSEIF p_bseg-shkzg = 'S'. "Dbito = cl_tpdeb. ENDIF. ENDCASE. WHEN 'TPDOCBARRAS'. = '1'. WHEN 'TPIDENTDCONTRIBT'. = p_bseg-zztpidcont. WHEN 'TPINFEVTSEL'. WHEN 'TPLEI'. = p_bseg-zztpleilao. WHEN 'TPLIQUIDDFN'. = cl_tpliquiddfn. WHEN 'TPPESSOA'. = p_pessoa-tppessoa_deb. WHEN 'TPPESSOACED'. = p_pessoa-tppessoa_cre. WHEN 'TPPESSOACREDTD'. = p_pessoa-tppessoa_cre. WHEN 'TPPESSOADEBTD'. = p_pessoa-tppessoa_deb. WHEN 'TPPESSOAREMET'. = p_pessoa-tppessoa_deb. WHEN 'TPPESSOASACD'. = p_pessoa-tppessoa_deb. WHEN 'TPREPFINANC'. = p_bseg-zztprepass. WHEN 'TPRETCOMPR'. WHEN 'TPTRANSFLDL'. WHEN 'TPUNILATRDD'. WHEN 'VLRCHEQDEVLD'. WHEN 'VLRDESCT_ABATT'. = p_bseg-zzdescabat. WHEN 'VLRDOC'. = p_bseg-zzdevlprin. WHEN 'VLRENCARGO'. = p_bseg-zzvlrenca. WHEN 'VLRFINANC'.* XXXXX IF p_codmsg = 'SEL1052' OR p_codmsg = 'SEL3052'. = p_bseg-dmbtr. ELSE. = p_doccomp-nebtr. ENDIF. WHEN 'VLRFINANCRET'. WHEN 'VLRINSS'. = p_bseg-zzvlrinss. WHEN 'VLRJUROS'. = p_bseg-zzdevljur. WHEN 'VLRLANC'. = p_doccomp-nebtr. WHEN 'VLRMULTA'. = p_bseg-zzdevlmult. WHEN 'VLROTRACRESC'. = p_bseg-zzacrescim. WHEN 'VLROTRDEDUC'. = p_bseg-zzotrdeduc. WHEN 'VLROTRENT'. = p_bseg-zzvlroent. WHEN 'VLRPRINCIPAL'. = p_bseg-zzdevlprin. WHEN 'VLRRECEITABRUTACUM'. WHEN 'VLRREP'. = p_doccomp-nebtr. WHEN 'VLRTAR'. ENDCASE. UNASSIGN :,. ENDIF. ENDLOOP.ENDFORM. " F_SET_DADOS