Diquinha de Hoje
" Para executar um Module Pool criás-tes uma transação, rs"
sexta-feira, 15 de abril de 2011
Figura no Module Pool
" Radical esse código heim, hahaii !!
" Foi como disse o meu amigo que passou este esqueminha pra mim,
" o Nicholas procurou muito na internet e naum achou porisso estou postando
" espero que ajude algum junior, vamos por passos :
" Passo 1 - Criar uma 'Custom Control no Layout da tela
" Passo 2 - Dentro do 'Before OutPut (PBO) tem o Modulo de Status da tela,
" Passo 3 - Dentro deste modulo (por Bouas praticas) crie um 'Perform para
" chamar a imagem
" Passo 4 - Agora coloque o codigo abaixo não esquecendo de relacionar o
" o 'Custom Control com o container e colocar o nome do figurinha no 'Method
" É Voala (é Assim que escreve?) agora seu 'Module Pool vai ter uma imagem a
" maioria da vezes serve pra coloca o logo do cliente (por favor não erre a
" imagem )
*&---------------------------------------------------------------------*
*& Include MZ_NCPROGRAMAF01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form Z_FIGURA_1
*&---------------------------------------------------------------------*
FORM z_figura_1 .
DATA: w_lines TYPE i.
TYPES pict_line(256) TYPE c.
DATA : container TYPE REF TO cl_gui_custom_container,
editor TYPE REF TO cl_gui_textedit,
picture TYPE REF TO cl_gui_picture,
pict_tab TYPE TABLE OF pict_line,
url(255) TYPE c.
DATA: graphic_url(255).
DATA: BEGIN OF graphic_table OCCURS 0,
line(255) TYPE x,
END OF graphic_table.
DATA: l_graphic_conv TYPE i.
DATA: l_graphic_offs TYPE i.
DATA: graphic_size TYPE i.
DATA: l_graphic_xstr TYPE xstring.
CALL METHOD cl_gui_cfw=>flush.
* Aqui é declarado o container onde a imagem vai aparecer.
CREATE OBJECT: container EXPORTING container_name = 'CUSTOM_CONTROL_1', picture EXPORTING parent = container.
* Metodo que carrega a imagem do SAP.
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = 'GRAPHICS'
p_name = 'SUA_IMAGEM_AKI'
p_id = 'BMAP'
p_btype = 'BCOL'
RECEIVING
p_bmp = l_graphic_xstr
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
graphic_size = XSTRLEN( l_graphic_xstr ).
l_graphic_conv = graphic_size.
l_graphic_offs = 0.
WHILE l_graphic_conv > 255.
graphic_table-line = l_graphic_xstr+l_graphic_offs(255).
APPEND graphic_table.
l_graphic_offs = l_graphic_offs + 255.
l_graphic_conv = l_graphic_conv - 255.
ENDWHILE.
graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).
APPEND graphic_table.
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = 'IMAGE'
subtype = 'X-UNKNOWN'
size = graphic_size
lifetime = 'T'
TABLES
data = graphic_table
CHANGING
url = url.
CALL METHOD picture->load_picture_from_url
EXPORTING
url = url.
CALL METHOD picture->set_display_mode
EXPORTING
display_mode = picture->display_mode_fit_center.
ENDFORM. " Z_FIGURA_1
" Foi como disse o meu amigo que passou este esqueminha pra mim,
" o Nicholas procurou muito na internet e naum achou porisso estou postando
" espero que ajude algum junior, vamos por passos :
" Passo 1 - Criar uma 'Custom Control no Layout da tela
" Passo 2 - Dentro do 'Before OutPut (PBO) tem o Modulo de Status da tela,
" Passo 3 - Dentro deste modulo (por Bouas praticas) crie um 'Perform para
" chamar a imagem
" Passo 4 - Agora coloque o codigo abaixo não esquecendo de relacionar o
" o 'Custom Control com o container e colocar o nome do figurinha no 'Method
" É Voala (é Assim que escreve?) agora seu 'Module Pool vai ter uma imagem a
" maioria da vezes serve pra coloca o logo do cliente (por favor não erre a
" imagem )
*&---------------------------------------------------------------------*
*& Include MZ_NCPROGRAMAF01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form Z_FIGURA_1
*&---------------------------------------------------------------------*
FORM z_figura_1 .
DATA: w_lines TYPE i.
TYPES pict_line(256) TYPE c.
DATA : container TYPE REF TO cl_gui_custom_container,
editor TYPE REF TO cl_gui_textedit,
picture TYPE REF TO cl_gui_picture,
pict_tab TYPE TABLE OF pict_line,
url(255) TYPE c.
DATA: graphic_url(255).
DATA: BEGIN OF graphic_table OCCURS 0,
line(255) TYPE x,
END OF graphic_table.
DATA: l_graphic_conv TYPE i.
DATA: l_graphic_offs TYPE i.
DATA: graphic_size TYPE i.
DATA: l_graphic_xstr TYPE xstring.
CALL METHOD cl_gui_cfw=>flush.
* Aqui é declarado o container onde a imagem vai aparecer.
CREATE OBJECT: container EXPORTING container_name = 'CUSTOM_CONTROL_1', picture EXPORTING parent = container.
* Metodo que carrega a imagem do SAP.
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = 'GRAPHICS'
p_name = 'SUA_IMAGEM_AKI'
p_id = 'BMAP'
p_btype = 'BCOL'
RECEIVING
p_bmp = l_graphic_xstr
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
graphic_size = XSTRLEN( l_graphic_xstr ).
l_graphic_conv = graphic_size.
l_graphic_offs = 0.
WHILE l_graphic_conv > 255.
graphic_table-line = l_graphic_xstr+l_graphic_offs(255).
APPEND graphic_table.
l_graphic_offs = l_graphic_offs + 255.
l_graphic_conv = l_graphic_conv - 255.
ENDWHILE.
graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).
APPEND graphic_table.
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = 'IMAGE'
subtype = 'X-UNKNOWN'
size = graphic_size
lifetime = 'T'
TABLES
data = graphic_table
CHANGING
url = url.
CALL METHOD picture->load_picture_from_url
EXPORTING
url = url.
CALL METHOD picture->set_display_mode
EXPORTING
display_mode = picture->display_mode_fit_center.
ENDFORM. " Z_FIGURA_1
quinta-feira, 14 de abril de 2011
terça-feira, 12 de abril de 2011
Só uma letra
Diquinha de hoje
" Nunca declare nada com um único caractér, pois eh mou treta selecionar isso Debuggando"
" Nunca declare nada com um único caractér, pois eh mou treta selecionar isso Debuggando"
Programinha Orientado a Objeto
" Este programa Mostra como eh dahora trabalha com Orientação a Objeto,
" eh dificil mas eh dahora pegando o conceito vc consegue pelomenos entender
" os programas orientado a objeto que vc for dar manutenção, pq vc vê que o
" Código e mais estruturado e organizado
" Extra - Quem me deu aula de OO foi o Flavio Furlan do (abap101.com) e
" o Mauricio Cruz da (www.abapzombie.blog.br) portanto qualquer coisa vcs
" falem com eles rsrsrsrsrs e/ou comentem aqui.
*&---------------------------------------------------------------------*
*& Report ZMJ_PROG_OO.
*&
*&---------------------------------------------------------------------*
REPORT zmj_prog_oo.
" Tela de Seleção .....
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME.
PARAMETERS: s_c TYPE i OBLIGATORY .
SELECTION-SCREEN END OF BLOCK a.
" A 'Definition serve para declaração de tudo que será usado
*----------------------------------------------------------------------*
* CLASS c1 DEFINITION
*----------------------------------------------------------------------*
CLASS c1 DEFINITION.
" 'Public Section conterá atributos visiveis pra todos ( progs, functions, etc)
PUBLIC SECTION.
" Olhando bem com o method eh, faz vc lembra de algo ne, e claro parece
" uma função a ideia eh essa mesmo, contem os importing changing e exporting
METHODS: set IMPORTING value(set_value) TYPE i,
add,
get EXPORTING value(get_value) TYPE i.
" Caso ela vire uma 'SuperClass (classe Mãe) no 'Protected Section os atributos
" e metodos seram somente usados nas subclasses e nela mesma
PROTECTED SECTION.
" 'Private section conterá atributos visiveis somente dentro da classe.
PRIVATE SECTION.
DATA contador TYPE i .
ENDCLASS. "c1 DEFINITION
" A 'Implementation serve para mostrar o q tudo que foi declarado faz,
" dica - Toda vez que abrir uma classe ou metodo ja fecha pra visualizar
" melhor oq está Fazendo.
*----------------------------------------------------------------------*
* CLASS c1 IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
" 'Method que compara a variavel 'Contador com o variavel definida do 'Method
METHOD set.
contador = set_value.
ENDMETHOD. "set
" 'Method que adiciona +2 na variavel 'Contador
METHOD add.
ADD 2 TO contador.
ENDMETHOD. "add
" 'Method que compara variavel definida do 'Method com a varival 'Contador
METHOD get.
get_value = contador.
ENDMETHOD. "get
ENDCLASS. "c1 IMPLEMENTATION
" Daki pra baixo estaremos trabalhando com tudo que declaramos acima.
" Data cnt com referencia a classe criada dando assim acesso a tudo da classe.
DATA obj_1 TYPE REF TO c1.
DATA n TYPE i .
" Inicio da seleção ....
START-OF-SELECTION.
" Para estar trabalhando com ele ainda vc precisa cria-lo como objeto
CREATE OBJECT obj_1.
" Chama o 'Method set para o objeto 'obj_1 onde o valor exportado é a variável
" declarada como tipo inteiro (linha 75)
CALL METHOD obj_1->set
EXPORTING
set_value = n.
" Faz n vezes a chamada no 'Method add conforme imput na tela de seleção.
DO s_c TIMES.
CALL METHOD obj_1->add.
ENDDO.
" Chama o 'Method set para o objeto 'obj_1 onde o valor importado é a variável
CALL METHOD obj_1->get
IMPORTING
get_value = n.
" Mostra a variável pra 6 vê que funciona.
WRITE n.
" eh dificil mas eh dahora pegando o conceito vc consegue pelomenos entender
" os programas orientado a objeto que vc for dar manutenção, pq vc vê que o
" Código e mais estruturado e organizado
" Extra - Quem me deu aula de OO foi o Flavio Furlan do (abap101.com) e
" o Mauricio Cruz da (www.abapzombie.blog.br) portanto qualquer coisa vcs
" falem com eles rsrsrsrsrs e/ou comentem aqui.
*&---------------------------------------------------------------------*
*& Report ZMJ_PROG_OO.
*&
*&---------------------------------------------------------------------*
REPORT zmj_prog_oo.
" Tela de Seleção .....
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME.
PARAMETERS: s_c TYPE i OBLIGATORY .
SELECTION-SCREEN END OF BLOCK a.
" A 'Definition serve para declaração de tudo que será usado
*----------------------------------------------------------------------*
* CLASS c1 DEFINITION
*----------------------------------------------------------------------*
CLASS c1 DEFINITION.
" 'Public Section conterá atributos visiveis pra todos ( progs, functions, etc)
PUBLIC SECTION.
" Olhando bem com o method eh, faz vc lembra de algo ne, e claro parece
" uma função a ideia eh essa mesmo, contem os importing changing e exporting
METHODS: set IMPORTING value(set_value) TYPE i,
add,
get EXPORTING value(get_value) TYPE i.
" Caso ela vire uma 'SuperClass (classe Mãe) no 'Protected Section os atributos
" e metodos seram somente usados nas subclasses e nela mesma
PROTECTED SECTION.
" 'Private section conterá atributos visiveis somente dentro da classe.
PRIVATE SECTION.
DATA contador TYPE i .
ENDCLASS. "c1 DEFINITION
" A 'Implementation serve para mostrar o q tudo que foi declarado faz,
" dica - Toda vez que abrir uma classe ou metodo ja fecha pra visualizar
" melhor oq está Fazendo.
*----------------------------------------------------------------------*
* CLASS c1 IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS c1 IMPLEMENTATION.
" 'Method que compara a variavel 'Contador com o variavel definida do 'Method
METHOD set.
contador = set_value.
ENDMETHOD. "set
" 'Method que adiciona +2 na variavel 'Contador
METHOD add.
ADD 2 TO contador.
ENDMETHOD. "add
" 'Method que compara variavel definida do 'Method com a varival 'Contador
METHOD get.
get_value = contador.
ENDMETHOD. "get
ENDCLASS. "c1 IMPLEMENTATION
" Daki pra baixo estaremos trabalhando com tudo que declaramos acima.
" Data cnt com referencia a classe criada dando assim acesso a tudo da classe.
DATA obj_1 TYPE REF TO c1.
DATA n TYPE i .
" Inicio da seleção ....
START-OF-SELECTION.
" Para estar trabalhando com ele ainda vc precisa cria-lo como objeto
CREATE OBJECT obj_1.
" Chama o 'Method set para o objeto 'obj_1 onde o valor exportado é a variável
" declarada como tipo inteiro (linha 75)
CALL METHOD obj_1->set
EXPORTING
set_value = n.
" Faz n vezes a chamada no 'Method add conforme imput na tela de seleção.
DO s_c TIMES.
CALL METHOD obj_1->add.
ENDDO.
" Chama o 'Method set para o objeto 'obj_1 onde o valor importado é a variável
CALL METHOD obj_1->get
IMPORTING
get_value = n.
" Mostra a variável pra 6 vê que funciona.
WRITE n.
Perform's
" Este tipo de código e muito usado em Batch Imput, Alimentando fieldcat,
" e muitas outras coisas, O perform e usado pra organizar e pra trabalhar
" com rotinas.
" Testem aih pessoal, daki por diante soh estarei mandando os posts
" prontos pra testar eh soh copiar e colar aih assim vcs podem debuggar
" e ver como funciona pro sistema e tambem caso vc tenham que usa o codigo
" pra algum trampo rsrs.
*&---------------------------------------------------------------------*
*& Report ZMJ_PROG_FORMS.
*&
*&---------------------------------------------------------------------*
REPORT zmj_prog_forms.
" Tipos ......
types : begin of ty_mara,
matnr type mara-matnr,
ernam type mara-ernam,
pstat type mara-pstat,
end of ty_mara
.
" Estruturas ......
DATA : st_itteste type ty_mara
.
" Tabelas Internas .....
DATA : it_itteste type table of ty_mara
.
" Variaveis .....
DATA : vg_repid TYPE sy-repid
.
" inicialization
vg_repid = sy-repid
.
" Inicio do processo ....
PERFORM : z_alimenta,
z_alimenta2
.
*&---------------------------------------------------------------------*
*& Form Z_ALIMENTA
*&---------------------------------------------------------------------*
" Aqui é imput de dados na tabela interna da forma mais simples possivel,
" onde eh usado um form normal.
form Z_ALIMENTA .
clear : it_itteste. " limpa a tabela para receber os dados
st_itteste-matnr = '88988298839'. " Dados do primeiro registro
st_itteste-ernam = 'EU MESMO'.
st_itteste-pstat = 'REGISTRO 1'.
APPEND st_itteste TO it_itteste. " Coloca o registro na tabela
st_itteste-matnr = '90889878787'. " Dados do segundo registro
st_itteste-ernam = 'EU MESMO2'.
st_itteste-pstat = 'REGISTRO 2'.
APPEND st_itteste TO it_itteste. " Coloca o registro na tabela
endform. " Z_ALIMENTA
*&---------------------------------------------------------------------*
*& Form Z_ALIMENTA2
*&---------------------------------------------------------------------*
FORM z_alimenta2.
clear : it_itteste. " limpa a tabela para receber os dados
" O 'Perform declarado aki estah informando que estará usando os dados
" abaixo, eh muito importante a sequencia de dados pois eh pela sequencia
" que o 'Form se relaciona com os dados do 'Perform
PERFORM z_alimenta_itteste USING :
'88988298839' 'EU MESMO' 'REGISTRO 1', " Dados do registro 1
'90889878787' 'EU MESMO2' 'REGISTRO 2' " Dados do registro 2
.
ENDFORM. " Z_ALIMENTA2
*&---------------------------------------------------------------------*
*& Form Z_ALIMENTA_ITTESTE
*&---------------------------------------------------------------------*
" O 'Form foi declado onde o primeiro dado do registro que tah no
" 'Perform eh a variavel p_matnr que tem o tipo mara-matnr essa variável
" poderia ter qualquer nome e qualquer tipo
FORM z_alimenta_itteste USING p_matnr TYPE mara-matnr
p_ernam TYPE mara-ernam
p_pstat type mara-pstat.
st_itteste-matnr = p_matnr. " Relaciona a variavel com o campo da estr.
st_itteste-ernam = p_ernam.
st_itteste-pstat = p_pstat.
APPEND st_itteste TO it_itteste. " Coloca o registro na tabela
ENDFORM. " Z_ALIMENTA_ITTESTE.
" e muitas outras coisas, O perform e usado pra organizar e pra trabalhar
" com rotinas.
" Testem aih pessoal, daki por diante soh estarei mandando os posts
" prontos pra testar eh soh copiar e colar aih assim vcs podem debuggar
" e ver como funciona pro sistema e tambem caso vc tenham que usa o codigo
" pra algum trampo rsrs.
*&---------------------------------------------------------------------*
*& Report ZMJ_PROG_FORMS.
*&
*&---------------------------------------------------------------------*
REPORT zmj_prog_forms.
" Tipos ......
types : begin of ty_mara,
matnr type mara-matnr,
ernam type mara-ernam,
pstat type mara-pstat,
end of ty_mara
.
" Estruturas ......
DATA : st_itteste type ty_mara
.
" Tabelas Internas .....
DATA : it_itteste type table of ty_mara
.
" Variaveis .....
DATA : vg_repid TYPE sy-repid
.
" inicialization
vg_repid = sy-repid
.
" Inicio do processo ....
PERFORM : z_alimenta,
z_alimenta2
.
*&---------------------------------------------------------------------*
*& Form Z_ALIMENTA
*&---------------------------------------------------------------------*
" Aqui é imput de dados na tabela interna da forma mais simples possivel,
" onde eh usado um form normal.
form Z_ALIMENTA .
clear : it_itteste. " limpa a tabela para receber os dados
st_itteste-matnr = '88988298839'. " Dados do primeiro registro
st_itteste-ernam = 'EU MESMO'.
st_itteste-pstat = 'REGISTRO 1'.
APPEND st_itteste TO it_itteste. " Coloca o registro na tabela
st_itteste-matnr = '90889878787'. " Dados do segundo registro
st_itteste-ernam = 'EU MESMO2'.
st_itteste-pstat = 'REGISTRO 2'.
APPEND st_itteste TO it_itteste. " Coloca o registro na tabela
endform. " Z_ALIMENTA
*&---------------------------------------------------------------------*
*& Form Z_ALIMENTA2
*&---------------------------------------------------------------------*
FORM z_alimenta2.
clear : it_itteste. " limpa a tabela para receber os dados
" O 'Perform declarado aki estah informando que estará usando os dados
" abaixo, eh muito importante a sequencia de dados pois eh pela sequencia
" que o 'Form se relaciona com os dados do 'Perform
PERFORM z_alimenta_itteste USING :
'88988298839' 'EU MESMO' 'REGISTRO 1', " Dados do registro 1
'90889878787' 'EU MESMO2' 'REGISTRO 2' " Dados do registro 2
.
ENDFORM. " Z_ALIMENTA2
*&---------------------------------------------------------------------*
*& Form Z_ALIMENTA_ITTESTE
*&---------------------------------------------------------------------*
" O 'Form foi declado onde o primeiro dado do registro que tah no
" 'Perform eh a variavel p_matnr que tem o tipo mara-matnr essa variável
" poderia ter qualquer nome e qualquer tipo
FORM z_alimenta_itteste USING p_matnr TYPE mara-matnr
p_ernam TYPE mara-ernam
p_pstat type mara-pstat.
st_itteste-matnr = p_matnr. " Relaciona a variavel com o campo da estr.
st_itteste-ernam = p_ernam.
st_itteste-pstat = p_pstat.
APPEND st_itteste TO it_itteste. " Coloca o registro na tabela
ENDFORM. " Z_ALIMENTA_ITTESTE.
domingo, 20 de março de 2011
Range's
Bem,
Estava eu fazendo um programinha de boua mas meu "select" não funcionava pq eu tava colocando "and" e "or" na clausula "where" do "Select e meu chefe falow pra usar o famoso "Range" mas era pra mim usar o "Range" usando "data" pq o "Range" está obsoleto, portanto caso queiram fazer um "select" onde tenham intervalo de dados ou campos com dois ou mais valores usem este codigo como exemplo :
report zrange_001.
DATA : r_taxtyp1 TYPE RANGE OF j_1bnfstx-taxtyp, " Como se fosse um tabela Interna
rl_taxtyp1 LIKE LINEOF r_taxtyp1. " Como se fosse uma estrutura
PERFORM z_preenche_r_taxtyp1. " Perform's para preenchimento do range.
FORM z_preenche_r_taxtyp1 .
rl_taxtyp1-sign = ' I '. " Inclui os valores do intervalo
rl_taxtyp1-option = 'EQ'. " Tipo como 'NE' 'BT' e por aih vai
rl_taxtyp1-low = 'ICOQ'. " Informação que esta sendo incluida
APPEND rl_taxtyp1 TO r_taxtyp1. " Alimenta a tabela pela estrutura
CLEAR rl_taxtyp1-low. " Limpa o campo "LOW" da estrutura
rl_taxtyp1-low = 'ICOW'.
APPEND rl_taxtyp1 TO r_taxtyp1.
CLEAR rl_taxtyp1-low.
rl_taxtyp1-low = 'ICOZ'.
APPEND rl_taxtyp1 TO r_taxtyp1.
CLEAR rl_taxtyp1-low.
Dá pra usa isso pra um monte de coisas..... espero que tenha ajudado......
Estava eu fazendo um programinha de boua mas meu "select" não funcionava pq eu tava colocando "and" e "or" na clausula "where" do "Select e meu chefe falow pra usar o famoso "Range" mas era pra mim usar o "Range" usando "data" pq o "Range" está obsoleto, portanto caso queiram fazer um "select" onde tenham intervalo de dados ou campos com dois ou mais valores usem este codigo como exemplo :
report zrange_001.
DATA : r_taxtyp1 TYPE RANGE O
rl_taxtyp1 LIKE LINE
PERFORM z_preenche_r_taxtyp1.
rl_taxtyp1-sign = ' I '. " Inclui os valores do intervalo
rl_taxtyp1-option = 'EQ'. " Tipo como 'NE' 'BT' e por aih vai
rl_taxtyp1-low = 'ICOQ'. " Informação que esta sendo incluida
APPEND rl_taxtyp1 TO r_
rl_taxtyp1-low = 'ICOW'.
APPEND rl_taxtyp1 TO r_
rl_taxtyp1-low = 'ICOZ'.
APPEND rl_taxtyp1 TO r_
Dá pra usa isso pra um monte de coisas..... espero que tenha ajudado......
quarta-feira, 16 de março de 2011
Vivendo e aprendendo
Galera,
Com o Pouco tempo de ABAP que eu tenho percebi uma coisa, Saiba se comunicar, não fique invergonhado em perguntar pois na maioria das vezes a sua duvida pode ser de outra gente e melhor essa duvida já foi duvida da pessoa que irá te ajudar e que com certeza ela irá responder em prontidão, Uma coisa tenham certeza seu atual chefe um dia foi Junior Também, portanto, pergunta mesmo porque ele deve ter enchido o saco de muita gente pra ser chefe hoje,. rsrsrs.
Com o Pouco tempo de ABAP que eu tenho percebi uma coisa, Saiba se comunicar, não fique invergonhado em perguntar pois na maioria das vezes a sua duvida pode ser de outra gente e melhor essa duvida já foi duvida da pessoa que irá te ajudar e que com certeza ela irá responder em prontidão, Uma coisa tenham certeza seu atual chefe um dia foi Junior Também, portanto, pergunta mesmo porque ele deve ter enchido o saco de muita gente pra ser chefe hoje,. rsrsrs.
Assinar:
Postagens (Atom)