<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sap - primi passi e dintorni</title>
	<atom:link href="http://www.sapblog.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sapblog.it</link>
	<description>Programmazione Abap e temi riguardanti il mondo SAP</description>
	<lastBuildDate>Sun, 20 Feb 2011 17:47:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Debug oltre ogni limite</title>
		<link>http://www.sapblog.it/debug-oltre-ogni-limite/</link>
		<comments>http://www.sapblog.it/debug-oltre-ogni-limite/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 09:32:19 +0000</pubDate>
		<dc:creator>Alberto</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[debug]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=108</guid>
		<description><![CDATA[Senza un po&#8217; di sana pratica di debug, nessuno può dirsi uno sviluppatore ABAP.. Ecco qui un trucchetto molto utile, quando ad esempio non si riesce a entrare in debug con il classico /H, come nel caso di una popup oppure di un menu contestuale al tasto destro del mouse. Si crea un file di [...]]]></description>
			<content:encoded><![CDATA[<p>Senza un po&#8217; di sana pratica di debug, nessuno può dirsi uno sviluppatore ABAP..</p>
<p>Ecco qui un trucchetto molto utile, quando ad esempio non si riesce a entrare in debug con il classico /H, come nel caso di una popup oppure di un menu contestuale al tasto destro del mouse.</p>
<p>Si crea un file di testo (privo di estensione) con il seguente codice:</p>
<blockquote>
<pre>*********************
[FUNCTION]
Command=/HS
Title=Debugger
Type=SystemCommand
*Type=Report
*Type=Transaction
********************* LOOK AT MESS DS-016
</pre>
</blockquote>
<p>Tale file va poi messo in luogo comodo come il desktop; al momento di debaggare l&#8217;impossibile è sufficiente trascinare il file sul modo sap aperto che si desidera approfondire. E buon F5 a tutti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/debug-oltre-ogni-limite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutto quello che c&#8217;è dentro un report</title>
		<link>http://www.sapblog.it/tutto-quello-che-ce-dentro-un-report/</link>
		<comments>http://www.sapblog.it/tutto-quello-che-ce-dentro-un-report/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 16:18:47 +0000</pubDate>
		<dc:creator>Alberto</dc:creator>
				<category><![CDATA[ABAP]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=102</guid>
		<description><![CDATA[Purtroppo è facile creare report mastodontici pieni di include, chiamate a funzioni, moduli PAI e PBO&#8230; E almeno una volta nella vita può capitare di dover andare a ripescare tutti questi elementi, anche solo per  avere la certezza che una CR contenga tutto il necessario. In questo ci viene d&#8217;aiuto il report standard RSINCL00, tramite [...]]]></description>
			<content:encoded><![CDATA[<p>Purtroppo è facile creare report mastodontici pieni di include, chiamate a funzioni, moduli PAI e PBO&#8230; E almeno una volta nella vita può capitare di dover andare a ripescare tutti questi elementi, anche solo per  avere la certezza che una CR contenga tutto il necessario.</p>
<p>In questo ci viene d&#8217;aiuto il report standard <code><strong>RSINCL00</strong></code>, tramite il quale, dato il nome di un report da analizzare, possiamo ricavare di tutto e di più: oggetti interni, chiamate esterne, operazioni tabelle interne e operazioni database.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/tutto-quello-che-ce-dentro-un-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AA(A) &#8211; Creazione Cespiti</title>
		<link>http://www.sapblog.it/aaa-creazione-cespiti/</link>
		<comments>http://www.sapblog.it/aaa-creazione-cespiti/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 15:36:41 +0000</pubDate>
		<dc:creator>Alberto</dc:creator>
				<category><![CDATA[AA - cespiti]]></category>
		<category><![CDATA[ABAP]]></category>
		<category><![CDATA[BAPI]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=94</guid>
		<description><![CDATA[Ci troviamo nel fantastico mondo dei cespiti (detti anche fixed assets) e vorremmo procedere alla creazione da report, sentendoci superiori agli inaffidabili batch input. Ecco qui uno schema pratico tramite bapi: -Qualche dichiarazione: DATA:  ls_general_data TYPE bapi1022_feglg001, ls_key TYPE bapi1022_key, ls_general_data_x TYPE bapi1022_feglg001x, ls_inventory TYPE bapi1022_feglg011, ls_inventory_x TYPE bapi1022_feglg011x, ls_posting_information TYPE bapi1022_feglg002, ls_posting_information_x TYPE bapi1022_feglg002x, ls_time_dependent_data TYPE bapi1022_feglg003, ls_time_dependent_data_x TYPE bapi1022_feglg003x, ls_allocations TYPE bapi1022_feglg004, ls_allocations_x TYPE bapi1022_feglg004x, [...]]]></description>
			<content:encoded><![CDATA[<p>Ci troviamo nel fantastico mondo dei cespiti (detti anche fixed assets) e vorremmo procedere alla creazione da report, sentendoci superiori agli inaffidabili batch input.</p>
<p>Ecco qui uno schema pratico tramite bapi:</p>
<p>-Qualche dichiarazione:</p>
<pre><span><span>DATA</span>:  ls_general_data <span>TYPE</span> bapi1022_feglg001,
 ls_key <span>TYPE</span> bapi1022_key,
 ls_general_data_x <span>TYPE</span> bapi1022_feglg001x,
 ls_inventory <span>TYPE</span> bapi1022_feglg011,
 ls_inventory_x <span>TYPE</span> bapi1022_feglg011x,
 ls_posting_information <span>TYPE</span> bapi1022_feglg002,
 ls_posting_information_x <span>TYPE</span> bapi1022_feglg002x,
 ls_time_dependent_data <span>TYPE</span> bapi1022_feglg003,
 ls_time_dependent_data_x <span>TYPE</span> bapi1022_feglg003x,
 ls_allocations <span>TYPE</span> bapi1022_feglg004,
 ls_allocations_x <span>TYPE</span> bapi1022_feglg004x,
 ls_origin <span>TYPE</span> bapi1022_feglg009,
 ls_origin_x <span>TYPE</span> bapi1022_feglg009x,
 ls_invest_acct_assignmnt <span>TYPE</span> bapi1022_feglg010,
 ls_invest_acct_assignmnt_x <span>TYPE</span> bapi1022_feglg010x,
 ls_real_estate <span>TYPE</span> bapi1022_feglg007,
 ls_real_estate_x <span>TYPE</span> bapi1022_feglg007x,
 ls_return <span>TYPE</span> bapiret2.</span></pre>
<p><span><br />
Fondamentalmente è sufficiente compilare nel modo giusto le strutture sopracitate con i dati giusti al posto giusto, e poi richiamare la seguente bapi (ricordarsi di riempire sia le strutture con i dati, che le rispettive strutture flag con gli &#8216;X&#8217; corrispondenti..)<br />
</span></p>
<pre><span><span> </span>
 </span><span><span>CALL</span> <span>FUNCTION</span> <span>'BAPI_FIXEDASSET_CREATE1'</span>
 <span>EXPORTING</span>
 <span>key</span> = ls_key
 createsubnumber             =        createsub
 postcap               = postcap
 <span>*       testrun              = 'X'           "TEST</span>
 generaldata          = ls_general_data
 generaldatax         = ls_general_data_x
 <span>*       inventory            = ls_inventory</span>
 <span>*       inventoryx           = ls_inventory_x</span>
 postinginformation   = ls_posting_information
 postinginformationx  = ls_posting_information_x
 timedependentdata    = ls_time_dependent_data
 timedependentdatax   = ls_time_dependent_data_x
 allocations          = ls_allocations
 allocationsx         = ls_allocations_x
 origin               = ls_origin
 originx              = ls_origin_x
 <span>*       investacctassignmnt  = ls_invest_acct_assignmnt</span>
 <span>*       investacctassignmntx = ls_invest_acct_assignmnt_x</span>
 <span>*       realestate           = ls_real_estate</span>
 <span>*       realestatex          = ls_real_estate_x</span>
 <span>IMPORTING</span>
 assetcreated         = ps_ls_asset_created
 <span>return</span> = ls_return.

 <span>IF</span> ls_return-type = <span>'S'</span>.
 <span>COMMIT</span> <span>WORK</span> <span>AND</span> <span>WAIT</span>.
 <span>ELSE</span>.
 <span>CLEAR</span>: ps_ls_asset_created.
 ps_ws_error = ls_return-message.
 <span>ENDIF</span>.</span><span> </span></pre>
<p><span><span><br />
</span></span></p>
<p><span>A seconda del customizing e della classe cespiti possono accadere diverse cose.</span></p>
<p><span>Sicuramente i campi </span><span>ls_key-companycode (società/BUKRS) e </span><span><span>ls_general_data-assetclass (classe cespiti/ANKL) sono obbligatori.</span></span></p>
<p><span><span>A seconda del customizing, per ogni classe cespiti abbiamo range di numerazione diversi: </span></span></p>
<p><span><span>- Se il range è esterno, sarà necessario compilare anche il campo Numero Cespite ( </span></span><span>ls_key-</span>ASSET ) e il campo Numero Cespite Secondario (<span><span> </span></span><span>ls_key-</span>SUBNUMBER)</p>
<p><span>- Altrimenti se c&#8217;è numerazione interna, è necessario pescare sull&#8217;ANLA l&#8217;ultimo numero generato per la classe cespite desiderata.</span></p>
<p><span>Comunque ricordiamoci che se vogliamo generare un cespite secondario, è necessario flaggare il parametro </span><!-- SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } --> <span>CREATESUBNUMBER.</span></p>
<p><span>Se vogliamo creare un cespite a partire da oggetti già esistenti, possono essere utili le funzioni *MAP* del gruppo funzioni 1022, pescando i dati dalle anagrafiche ANLA e ANLZ e mapparli nelle strutture ad hoc della bapi.</span></p>
<p><span>Buon divertimento!<br />
</span></p>
<p><span><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/aaa-creazione-cespiti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduzione a SAP XI PI</title>
		<link>http://www.sapblog.it/introduzione-a-sap-xi-pi/</link>
		<comments>http://www.sapblog.it/introduzione-a-sap-xi-pi/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 16:13:04 +0000</pubDate>
		<dc:creator>Damiano</dc:creator>
				<category><![CDATA[XI PI]]></category>
		<category><![CDATA[Integration Engine]]></category>
		<category><![CDATA[PI]]></category>
		<category><![CDATA[XI]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=88</guid>
		<description><![CDATA[Introduzione a XI-PI. Ruolo di XML e integration engine.]]></description>
			<content:encoded><![CDATA[<p><strong>Sap XI</strong> (PI è il nome dato da SAP alla nuova versione di XI) è un sistema che permette la gestione del passaggio dati da un sistema ad un altro in maniera il più uniforme possibile e facendo in modo di avere il controllo sul dato e sulla codifica trasmessa e ricevuta.<br />
L&#8217;installazione di XI ha senso nel caso in cui si abbiano molti sistemi SAP o di terze parti (chiamati anche sistemi legacy o comunque non SAP) che devono comunicare.<br />
Sap indica chiaramente che &#8216;lo scopo di XI è di fornire una piattaforma che permetta a diverse interfacce di comunicare in una tecnologia uniforme. Questo approccio aumenta la chiarezza e riduce la manutenzione&#8217;.<br />
La tecnologia uniforme alla quale si fa riferimento è la codifica XML. Il cuore di XI è infatti un <strong>Integration engine</strong> che elabora dati in formato XML. I dati inviati in altri formati o con altre codifiche vengono infatti sempre tradotti in XML prima di passare nell&#8217;integration engine ed eventualmente ritradotti nel formato di uscita!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/introduzione-a-sap-xi-pi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log per all&#8217;interno di un report custom SAP (visualizzabile da SLG1).</title>
		<link>http://www.sapblog.it/log-per-allinterno-di-un-report-custom-sap-visualizzabile-da-slg1/</link>
		<comments>http://www.sapblog.it/log-per-allinterno-di-un-report-custom-sap-visualizzabile-da-slg1/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 21:19:55 +0000</pubDate>
		<dc:creator>Alberto</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[SLG1]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=70</guid>
		<description><![CDATA[Questi sono i passi da seguire per inserire il log standard all&#8217;interno di un report custom SAP. Il log una volta creato sarà visualizzabile tramite la transazione SLG1. 1) Creazione tramite la transazione SLG0 di un nuovo &#8220;tipo oggetto&#8221; di log. 2) Inizializzazione variabili * Dati per log tramite SLG0 data: gs_log type bal_s_log, gs_log_handle [...]]]></description>
			<content:encoded><![CDATA[<p>Questi sono i passi da seguire per inserire il log standard all&#8217;interno di un report custom SAP.<br />
Il log una volta creato sarà visualizzabile tramite la transazione SLG1.</p>
<ul>
<li>1) Creazione tramite la transazione SLG0 di un nuovo &#8220;tipo oggetto&#8221; di log.</li>
<li>2) Inizializzazione variabili<br />
<code>*   Dati per log tramite SLG0<br />
  data: gs_log              type bal_s_log,<br />
        gs_log_handle       type balloghndl,<br />
        gt_log_handle       type bal_t_logh,<br />
        gs_msg            type bal_s_msg,<br />
        gt_new_lognumbers   type bal_t_lgnm.</code></li>
<li>3) Chiamata a function  BAL_LOG_CREATE all&#8217;inizio dell&#8217;esecuzione.</li>
<li>4) Aggiunta di messaggi al log tramite la function BAL_LOG_MSG_ADD.</li>
<li>5) Come ultimo step del report inserire la function BAL_DB_SAVE che sostanzialmente effettua un commit dei messaggi di log aggiunti.</li>
<li>6) Una volta eseguito il report si possono verificare i risultati dalla transazione SLG1.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/log-per-allinterno-di-un-report-custom-sap-visualizzabile-da-slg1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spedire mail con allegato</title>
		<link>http://www.sapblog.it/spedire-mail-con-allegato/</link>
		<comments>http://www.sapblog.it/spedire-mail-con-allegato/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 15:11:46 +0000</pubDate>
		<dc:creator>Alberto</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[function]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=76</guid>
		<description><![CDATA[Ecco come spedire in modo automatico mail con diverse impostazioni. Utilizziamo la funzione standard SO_NEW_DOCUMENT_ATT_SEND_API1, non proprio ben commentata. Ecco dell&#8217;ottimo sample code commentato come si deve . Cominciamo con un po&#8217; di definizioni DATA: lt_att_content_hex TYPE TABLE OF solix, lf_lines  TYPE i, la_mailpack TYPE sopcklsti1, lt_mailpack TYPE TABLE OF sopcklsti1, la_maildata TYPE sodocchgi1, lt_receiver TYPE TABLE OF somlreci1, ls_receiver TYPE somlreci1, lt_mailhead TYPE [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco come spedire in modo automatico <strong>mail</strong> con diverse impostazioni. Utilizziamo la funzione  <!-- SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } --> standard <span>SO_NEW_DOCUMENT_ATT_SEND_API1, non proprio ben commentata.</span></p>
<p>Ecco dell&#8217;ottimo <em>sample code</em> commentato come si deve .</p>
<p>Cominciamo con un po&#8217; di definizioni</p>
<p><code><!-- SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S52 { color: #0000FF; } --> <span> <span class="L1S52">DATA</span>: lt_att_content_hex <span class="L1S52">TYPE</span> <span class="L1S52">TABLE</span> <span class="L1S52">OF</span> solix,<br />
lf_lines  <span class="L1S52">TYPE</span> <span class="L1S52">i</span>,<br />
la_mailpack <span class="L1S52">TYPE</span> sopcklsti1,<br />
lt_mailpack <span class="L1S52">TYPE</span> <span class="L1S52">TABLE</span> <span class="L1S52">OF</span> sopcklsti1,<br />
la_maildata <span class="L1S52">TYPE</span> sodocchgi1,<br />
lt_receiver <span class="L1S52">TYPE</span> <span class="L1S52">TABLE</span> <span class="L1S52">OF</span> somlreci1,<br />
ls_receiver <span class="L1S52">TYPE</span> somlreci1,<br />
lt_mailhead <span class="L1S52">TYPE</span> <span class="L1S52">TABLE</span> <span class="L1S52">OF</span> solisti1,<br />
ls_mailhead <span class="L1S52">TYPE</span> solisti1,<br />
lt_mailtxt  <span class="L1S52">TYPE</span> <span class="L1S52">TABLE</span> <span class="L1S52">OF</span> solisti1,<br />
ls_mailtxt <span class="L1S52">TYPE</span> solisti1.</span></code></p>
<p>Qui ci sta l&#8217;<strong>oggetto</strong> della mail:</p>
<p><code> la_maildata-obj_name = 'nome oggetto'.<br />
la_maildata-obj_descr = 'Invio OdA'.</code></p>
<p>Qui mettiamo il <strong>testo</strong> della mail: da notare la necessità di ricavare la  lunghezza del testo</p>
<p><code>ls_mailtxt = 'vd. allegato'.<br />
APPEND ls_mailtxt TO lt_mailtxt.</code></p>
<p><code>DESCRIBE TABLE lt_mailtxt LINES lf_lines.<br />
READ TABLE lt_mailtxt INTO ls_mailtxt INDEX lf_lines.</code></p>
<p><code>la_maildata-doc_size = ( lf_lines - 1 ) * 255 + STRLEN( ls_mailtxt ).</code></p>
<p><code>CLEAR la_mailpack-transf_bin.<br />
la_mailpack-head_start = 1.<br />
la_mailpack-head_num = 0.<br />
la_mailpack-body_start = 1.<br />
la_mailpack-body_num = lf_lines.<br />
la_mailpack-doc_type = 'RAW'.<br />
APPEND la_mailpack TO lt_mailpack.</code></p>
<p>Aggiungiamo i <strong>destinatari</strong> della mail</p>
<p><code> ls_receiver-receiver = 'ciccio@pasticcio.it'.<br />
ls_receiver-rec_type = 'U'. "tipo indirizzo-&gt;mail<br />
APPEND ls_receiver TO lt_receiver.</code></p>
<p>Ora da qualche parte, per esempio nella generazione di un pdf, abbiamo riempito la tabellina <code>lt_att_content_hex</code> del sorgente binario dell&#8217;<strong>allegato</strong> desiderato.</p>
<p><code> DESCRIBE TABLE lt_att_content_hex LINES lf_lines.<br />
la_maildata-doc_size = lf_lines * 255."( lf_lines - 1 ) * 255 + STRLEN( ls_mailtxt ).</code></p>
<p><code> la_mailpack-transf_bin = 'X'.<br />
la_mailpack-head_start = 1.<br />
la_mailpack-head_num = 0.<br />
la_mailpack-body_start = 1.<br />
la_mailpack-doc_type = 'PDF'.<br />
la_mailpack-body_num = lf_lines.<br />
la_mailpack-doc_size = lf_lines * 255.<br />
la_mailpack-obj_descr = 'the allegat'.<br />
la_mailpack-obj_name = 'Allegato'.<br />
APPEND la_mailpack TO lt_mailpack.</code></p>
<p>Possiamo allo stesso modo aggiungere altri allegati, ora <strong>lanciamo</strong> la mail:</p>
<p><code> CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'<br />
EXPORTING<br />
document_data = la_maildata<br />
put_in_outbox = 'X'<br />
commit_work = 'X'<br />
TABLES<br />
packing_list = lt_mailpack<br />
contents_txt = lt_mailtxt<br />
contents_hex = lt_att_content_hex<br />
receivers = lt_receiver .</code></p>
<p>Ora se tutto è andato bene, possiamo andare nella SOST per vedere l&#8217;anteprima della mail generata e inviata a seconda della configurazione.</p>
<p>Mi raccomando, occhio allo spam!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/spedire-mail-con-allegato/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debug su USER EXIT</title>
		<link>http://www.sapblog.it/debug-su-user-exit/</link>
		<comments>http://www.sapblog.it/debug-su-user-exit/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 21:42:46 +0000</pubDate>
		<dc:creator>Damiano</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[SM50]]></category>
		<category><![CDATA[user exit]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=29</guid>
		<description><![CDATA[Nelle user exit non è consentito inserire break-point. Se è necessario effettuare il debug esiste una semplice tecnica: si inserisce il seguente codice prima della parte di programma che si vuole analizzare, ovviamente mettendo al posto di username il proprio user. if sy-uname = 'mio_username'. data: pippo type char1. do. check pippo EQ 'X'. exit. [...]]]></description>
			<content:encoded><![CDATA[<p>Nelle user exit non è consentito inserire break-point.<br />
Se è necessario effettuare il debug esiste una semplice tecnica:<br />
si inserisce il seguente codice prima della parte di programma che si vuole analizzare, ovviamente mettendo al posto di username il proprio user.</p>
<p><code>if sy-uname = 'mio_username'.<br />
  data: pippo type char1.<br />
do.<br />
  check pippo EQ 'X'.<br />
  exit.<br />
enddo.<br />
ENDIF.</code></p>
<p>Una volta lanciata la transazione che scatena la exit:</p>
<ul>
<li>1) si lancia la transazione SM50</li>
<li>2) si seleziona la riga che rappresenta il processo.</li>
<li>3) dal menu : Programma/sessione-&gt; Programma-&gt; Debugging.</li>
</ul>
<p>A questo punto basta modificare a mano il valore della variabile pippo a &#8216;X&#8217; e<br />
diventa quindi possibile debuggare il programma passo passo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/debug-su-user-exit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDF nelle Web-Dynpro &#8211; parte 2</title>
		<link>http://www.sapblog.it/pdf-nelle-web-dynpro-parte-2/</link>
		<comments>http://www.sapblog.it/pdf-nelle-web-dynpro-parte-2/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 16:45:23 +0000</pubDate>
		<dc:creator>Alberto</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[web dynpro]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=63</guid>
		<description><![CDATA[Precedentemente abbiamo avuto cura di riempire un attributo del context con il sorgente esadecimale del pdf. Ora pensiamo al layout: creiamo una view che chiamiamo V_PDF, in cui inseriamo un unico elemento, di tipo InteractiveForm; nel context mappiamo dal ComponentController il nodo contenente il PDF; Nella view dove vogliamo inserire il PDF inseriamo un elemento [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;">Precedentemente abbiamo avuto cura di riempire un attributo del context con il sorgente esadecimale del pdf.<br />
Ora pensiamo al layout:</p>
<ul style="padding-left: 30px;">
<li>creiamo una view che chiamiamo V_PDF, in cui inseriamo un unico elemento, di tipo InteractiveForm; nel context mappiamo dal ComponentController il nodo contenente il PDF;</li>
<li>Nella view dove vogliamo inserire il PDF inseriamo un elemento di tipo ViewContainerUIElement;</li>
<li>Nella window clicchiamo con il tasto destro nelle view principale dove vediamo il tale ViewContainerUIElement e includiamo la V_PDF;</li>
<li>Infine è buona norma, per non impallare il browser, togliere il flag dalla proprietà &#8220;Enabled&#8221; del ViewContainerUIElement;</li>
</ul>
<p style="padding-left: 30px;">A questo punto il gioco è fatto; al momento del riempimento del nodo PDF, verrà riempita la sottoschermata con il nostro documento visualizzato tramite un&#8217;istanza del nostro PDF Viewer preferito.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/pdf-nelle-web-dynpro-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trovare una BADI</title>
		<link>http://www.sapblog.it/trovare-una-badi/</link>
		<comments>http://www.sapblog.it/trovare-una-badi/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 15:35:11 +0000</pubDate>
		<dc:creator>Damiano</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[BADI]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/?p=36</guid>
		<description><![CDATA[TROVARE UNA BADI IN UN MINUTO 1. Andare alla transazione SE24 e inserire CL_EXITHANDLER come classe. 2. In &#8216;Display&#8217; mode, andare al tab &#8216;Methods&#8217;. 3. Doppio click sul metodo &#8216;Get Instance&#8217; per visualizzare il codice sorgente. 4. Mettere un breakpoint nella &#8216;CALL METHOD cl_exithandler=&#62;get_class_name_by_interface&#8217;. 5. Lanciare la tua transazione. 6. Lo screen si fermerá sul [...]]]></description>
			<content:encoded><![CDATA[<p>TROVARE UNA BADI IN UN MINUTO</p>
<p>1. Andare alla transazione  SE24 e inserire CL_EXITHANDLER come classe.<br />
2. In &#8216;Display&#8217; mode, andare al tab &#8216;Methods&#8217;.<br />
3. Doppio click sul metodo &#8216;Get Instance&#8217; per visualizzare il codice sorgente.<br />
4. Mettere un breakpoint nella &#8216;CALL METHOD cl_exithandler=&gt;get_class_name_by_interface&#8217;.<br />
5. Lanciare la tua transazione.<br />
6. Lo screen si fermerá sul breakpoint del punto 4.<br />
7. Guardare il valore del parametro &#8216;EXIT_NAME&#8217;. Ci sará il nome della  BADI per questa transazione.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/trovare-una-badi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDF nelle Web-Dynpro &#8211; parte 1</title>
		<link>http://www.sapblog.it/pdf-nelle-web-dynpro-parte-1/</link>
		<comments>http://www.sapblog.it/pdf-nelle-web-dynpro-parte-1/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 14:44:07 +0000</pubDate>
		<dc:creator>Alberto</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[web dynpro]]></category>

		<guid isPermaLink="false">http://www.sapblog.it/pdf-nelle-web-dynpro-parte-1/</guid>
		<description><![CDATA[Come utilizzare le Web-Dynpro per visualizzare PDF, che possono provenire da smartforms oppure da file salvati nel server? Lo vedremo ora. Come prima cosa è necessario ricavare il sorgente esadecimale del PDF. Nel context costruiamo un nodo di cardinalità 1 che chiamiamo PDF, con un attributo SOURCE di tipo XSTRING. Se non abbiamo a disposizione [...]]]></description>
			<content:encoded><![CDATA[<p>Come utilizzare le Web-Dynpro per visualizzare PDF, che possono provenire da smartforms oppure da file salvati nel server?<br />
Lo vedremo ora.<br />
Come prima cosa è necessario ricavare il sorgente esadecimale del PDF. Nel context costruiamo un nodo di cardinalità 1 che chiamiamo PDF, con un attributo SOURCE di tipo XSTRING.<br />
Se non abbiamo a disposizione il sorgente del PDF, utilizziamo lo smartform nel seguente modo:</p>
<blockquote>
<pre> DATA:</pre>
<pre> lv_function_name        TYPE rs38l_fnam,
 ls_control_parameters   TYPE ssfctrlop,</pre>
<pre> ls_output_options       TYPE ssfcompop,
 ls_document_output_info TYPE ssfcrespd,</pre>
<pre> ls_job_output_info      TYPE ssfcrescl,</pre>
<pre> ls_job_output_options   TYPE ssfcresop.</pre>
<pre>DATA:
 lt_pdf_lines             TYPE TABLE OF tline,
 lv_bin_filesize          TYPE i,
 lv_mimetype(30)          TYPE c.</pre>
<pre>ls_control_parameters-getotf = 'X'.
 ls_output_options-tdimmed = space.
 ls_output_options-tdnewid = space.
 ls_control_parameters-no_dialog = 'X'.</pre>
<pre>CALL FUNCTION lv_function_name
 EXPORTING
 control_parameters   = ls_control_parameters
 output_options       = ls_output_options
 *     ... = ...
 IMPORTING
 document_output_info = ls_document_output_info
 job_output_info      = ls_job_output_info
 job_output_options   = ls_job_output_options
 EXCEPTIONS
 FORMATTING_ERROR     = 1
 INTERNAL_ERROR       = 2
 SEND_ERROR           = 3
 USER_CANCELED        = 4
 OTHERS               = 5.</pre>
<pre>CALL FUNCTION 'CONVERT_OTF'
 EXPORTING
 format                = 'PDF'
 IMPORTING
 bin_filesize          = lv_bin_filesize
 bin_file              = lv_source
 TABLES
 otf                   = ls_job_output_info-otfdata
 lines                 = lt_pdf_lines
 EXCEPTIONS
 err_max_linewidth     = 1
 err_format            = 2
 ERR_CONV_NOT_POSSIBLE = 3
 ERR_BAD_OTF           = 4.</pre>
</blockquote>
<p>A questo punto in LV_SOURCE abbiamo il sorgente del PDF (sempre che non ci siano stati errori, che è meglio gestire&#8230; ma ne parleremo un&#8217;altra volta)</p>
<p>Alla prossima puntata per vedere come visualizzare l&#8217;anteprima&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapblog.it/pdf-nelle-web-dynpro-parte-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

