﻿<?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>MagdaQ &#187; searchhelp</title>
	<atom:link href="http://www.programistka.eu/blog/lang/pl-pl/tag/searchhelp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.programistka.eu/blog</link>
	<description>Bo w IT pracują również kobiety</description>
	<lastBuildDate>Thu, 16 Feb 2012 23:21:28 +0000</lastBuildDate>
	<language>pl-pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Pomoc wyszukiwania dla PCHOBJID w raporcie z PNP</title>
		<link>http://www.programistka.eu/blog/lang/pl-pl/2010/02/03/pomoc-wyszukiwania-dla-pchobjid-w-raporcie-z-pnp</link>
		<comments>http://www.programistka.eu/blog/lang/pl-pl/2010/02/03/pomoc-wyszukiwania-dla-pchobjid-w-raporcie-z-pnp#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:33:49 +0000</pubDate>
		<dc:creator>MagdaQ</dc:creator>
				<category><![CDATA[SAP]]></category>
		<category><![CDATA[ABAP]]></category>
		<category><![CDATA[pch]]></category>
		<category><![CDATA[pnp]]></category>
		<category><![CDATA[searchhelp]]></category>

		<guid isPermaLink="false">http://www.programistka.eu/blog/?p=77</guid>
		<description><![CDATA[Spotkałam się ostatnio z problemem w programie w SAP HR, konkretniej w HR-PA. Piszę aplikację, która w założeniu opiera się na bazie PNP, ale pewna jej funkcjonalność korzysta ze struktury organizacyjnej, czyli z bazy PCH. Wygenerowanie pól ekranu selekcji, takiego jak w programie opartym na bazie PCH nie stanowi większego problemu. Kłopot pojawia się dopiero, [...]]]></description>
			<content:encoded><![CDATA[<p><span lang="pl-pl">Spotkałam się ostatnio z problemem w programie w SAP HR, konkretniej w HR-PA. Piszę aplikację, która w założeniu opiera się na bazie PNP, ale pewna jej funkcjonalność korzysta ze struktury organizacyjnej, czyli z bazy PCH. Wygenerowanie pól ekranu selekcji, takiego jak w programie opartym na bazie PCH nie stanowi większego problemu. Kłopot pojawia się dopiero, kiedy chcemy dodać pomoc wyszukiwania do pola ID obiektu &#8211; standardową dla ekranu selekcji raportu ze struktury. </span><br />
<br />
<span id="more-77"></span><img class="aligncenter" title="Pomoc wyszukiwania dla obiektu OBJID z ekranu selekji PCH" src="/images/f4objid.jpg" alt="Pomoc wyszukiwania dla obiektu OBJID z ekranu selekji PCH" width="558" height="455" /></p>
<p><span lang="pl-pl">Po krótkim google&#8217;owaniu odpowiedź znajduje się np. w tym <a href="http://www.saptechnical.com/Tips/ABAP/F4/ObjID.htm">poście</a>. Krótko mówiąc należy użyć makra rhxmacro dodając poniższe cztery linijki:  <em> </em></span><br />
</p>
<p><span lang="pl-pl"><em>Na początku programu&#8230;</em></span><br />
</p>
<p>INCLUDE rhxmacro.</p>
<p><span lang="pl-pl"><em>&#8230;w sekcji INITIALIZATION&#8230;</em></span><br />
</p>
<p>rhx-f4-objid-data.</p>
<p><span lang="pl-pl"><em>&#8230;i jeszcze&#8230;</em></span><br />
</p>
<p>AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_obj_o-low.</p>
<p>rhx-f4-objid-low pchplvar pchotype so_obj_o &#8221; &#8221;.</p>
<p><span lang="pl-pl">Wszystko byłoby pięknie, gdyby nie to, że w makrze rhxmacro jest błąd powodujący niekompilowanie się kodu (ach, ten SAP..). Ostatnia zmiana wprowadzana przez SAPa jest z marca 2009 roku i wygląda na to, że ktoś wprowadzał zmiany do makra, ale pracy nie skończył. Potem prawdopodobnie z którąś z not &#8216;poprawka&#8217; poszła do użytkowników. Błąd powodujący niekompilowanie się kodu makra jest bardzo prosty &#8211; aby go naprawić należy usunąć jedną linijkę, która próbuje wyczyścić nieistniejącą zmienną (usuniętą w trakcie &#8216;poprawiania&#8217; makra).</span><br />
</p>
<p><span lang="pl-pl">Zatem finalnie, aby móc cieszyć się pięknym search helpem należy utworzyć nowe klienckie makro (niestety) będące poprawioną (już definitywnie) i okrojoną do naszych potrzeb wersją rhxmacro. Kod poniżej. </span><br />
<br />
*INCLUDE ZRHXMACRO</p>
<p>DEFINE RHX-F4-OBJID-DATA.<br />
TABLES PLOGI.<br />
DATA : %F4_REPID LIKE SY-REPID.<br />
DATA : %F4_DYNNR LIKE SY-DYNNR.<br />
DATA : %F4_LINES TYPE I.<br />
DATA : %F4_SUBRC LIKE SY-SUBRC. &#8220;XMK E-MSG<br />
DATA : %F4_T77EO LIKE T77EO.    &#8220;XMK #431960<br />
DATA : BEGIN OF %F4_MACO_TAB OCCURS 1,<br />
PLVAR LIKE PLOG-PLVAR,<br />
OTYPE LIKE PLOG-OTYPE,<br />
OBJID LIKE OBJEC-REALO,<br />
END   OF %F4_MACO_TAB.<br />
DATA : %F4_PCHOBJID_LINES TYPE I.<br />
DATA : %F4_PLVAR LIKE WPLOG-PLVAR.<br />
DATA : %F4_OTYPE LIKE WPLOG-OTYPE.<br />
DATA : %F4_OLD_OTYPE LIKE WPLOG-OTYPE.<br />
DATA : %F4_SEL_OBJECTS    LIKE OBJEC   OCCURS 10 WITH HEADER LINE.<br />
DATA : %F4_MARKED_OBJECTS LIKE HRSOBID OCCURS 10 WITH HEADER LINE.<br />
END-OF-DEFINITION.</p>
<p>DEFINE RHX-F4-OBJID-LOW.</p>
<p>SET EXTENDED CHECK OFF.</p>
<p>%F4_REPID = SY-REPID.<br />
%F4_DYNNR = SY-DYNNR.<br />
DESCRIBE TABLE &#38;3 LINES %F4_LINES.<br />
IF &#38;4 EQ SPACE.<br />
PERFORM CHECK_PLVAR_F4(RHXCHK00) USING &#38;1 %F4_SUBRC.<br />
CHECK %F4_SUBRC = 0.<br />
ENDIF.<br />
IF &#38;5 EQ SPACE.<br />
IF &#38;2 IS INITIAL.<br />
CALL FUNCTION &#8216;ASK_OTYPE&#8217;<br />
EXPORTING<br />
D_OTYPE         = &#38;2<br />
IMPORTING<br />
OTYPE           = &#38;2<br />
EXCEPTIONS<br />
NO_OTYPE_SET    = 2<br />
WRONG_OTYPE_SET = 4.<br />
ENDIF.<br />
ENDIF.<br />
IF SY-DYNNR EQ &#8217;1000&#8242;.<br />
%F4_OLD_OTYPE = &#38;2.<br />
CLEAR:   %F4_MARKED_OBJECTS.<br />
REFRESH: %F4_MARKED_OBJECTS.<br />
%F4_MARKED_OBJECTS-PLVAR = &#38;1.<br />
%F4_MARKED_OBJECTS-OTYPE = &#38;2.<br />
CLEAR %F4_T77EO.<br />
SELECT SINGLE * FROM T77EO INTO %F4_T77EO.<br />
LOOP AT &#38;3 WHERE SIGN = &#8216;I&#8217;.<br />
CASE &#38;3-OPTION.<br />
WHEN &#8216;EQ&#8217;.<br />
%F4_MARKED_OBJECTS-SOBID = &#38;3-LOW.<br />
APPEND %F4_MARKED_OBJECTS.<br />
WHEN &#8216;BT&#8217;.<br />
IF %F4_T77EO IS INITIAL.<br />
SELECT * FROM PLOGI<br />
WHERE OBJID &#62;= &#38;3-LOW  AND<br />
OBJID &#60;= &#38;3-HIGH AND<br />
OTYPE EQ &#38;2      AND<br />
PLVAR EQ &#38;1.<br />
%F4_MARKED_OBJECTS-SOBID = PLOGI-OBJID.<br />
APPEND %F4_MARKED_OBJECTS.<br />
ENDSELECT.<br />
ENDIF.<br />
ENDCASE.</p>
<p>ENDLOOP.<br />
CALL FUNCTION &#8216;RH_OBJID_REQUEST&#8217;<br />
EXPORTING<br />
PLVAR             = &#38;1<br />
OTYPE             = &#38;2<br />
DYNPRO_REPID      = %F4_REPID<br />
DYNPRO_DYNNR      = %F4_DYNNR<br />
DYNPRO_PLVARFIELD = &#38;4<br />
DYNPRO_OTYPEFIELD = &#38;5<br />
SET_MODE          = &#8216;X&#8217;<br />
IMPORTING<br />
SEL_PLVAR         = %F4_PLVAR<br />
SEL_OTYPE         = %F4_OTYPE<br />
TABLES<br />
SEL_OBJECTS       = %F4_SEL_OBJECTS<br />
MARKED_OBJECTS    = %F4_MARKED_OBJECTS<br />
EXCEPTIONS<br />
CANCELLED         = 1<br />
WRONG_CONDITION   = 2<br />
NOTHING_FOUND     = 3<br />
ILLEGAL_MODE      = 4<br />
INTERNAL_ERROR    = 5<br />
OTHERS            = 6.<br />
IF &#38;5 NE SPACE AND<br />
%F4_OLD_OTYPE NE %F4_OTYPE.<br />
REFRESH &#38;3.<br />
ENDIF.<br />
IF SY-SUBRC EQ 0.<br />
REFRESH: &#38;3.<br />
CLEAR:   &#38;3.<br />
LOOP AT %F4_SEL_OBJECTS.</p>
<p>&#38;3-LOW    = %F4_SEL_OBJECTS-REALO.<br />
&#38;3-OPTION = &#8216;EQ&#8217;.<br />
&#38;3-SIGN = &#8216;I&#8217;.<br />
APPEND &#38;3.</p>
<p>ENDLOOP.<br />
CLEAR:   %F4_SEL_OBJECTS.<br />
REFRESH: %F4_SEL_OBJECTS.<br />
else.                                             &#8220;Note1265523<br />
clear: %f4_sel_objects, %f4_sel_objects[].<br />
clear: %f4_marked_objects, %f4_marked_objects[].<br />
clear: &#38;3-low, &#38;3[].<br />
ENDIF.<br />
ELSE.<br />
PERFORM OBJID_REQUEST_PLVAR_OTYPE<br />
USING SPACE &#38;1   &#38;2<br />
%F4_REPID  %F4_DYNNR<br />
SPACE      SPACE<br />
%F4_PLVAR  %F4_OTYPE<br />
&#38;3-LOW.<br />
IF &#38;4 NE SPACE.<br />
&#38;1 = %F4_PLVAR.<br />
ENDIF.<br />
IF &#38;5 NE SPACE.<br />
&#38;2 = %F4_OTYPE.<br />
ENDIF.<br />
EXIT.<br />
ENDIF.<br />
DESCRIBE TABLE &#38;3 LINES %F4_PCHOBJID_LINES.<br />
IF %F4_PCHOBJID_LINES GT %F4_LINES.<br />
IF %F4_LINES EQ 0.<br />
MESSAGE S026(PP).<br />
ELSE.<br />
MESSAGE S027(PP).<br />
ENDIF.<br />
ELSE.<br />
ENDIF.<br />
******CLEAR : SUBRC. &#60;&#8212; <span lang="pl-pl">to linijka, którą należy usunąć z oryginalnego makra</span><br />
READ TABLE &#38;3 INDEX 1.<br />
IF SY-SUBRC GT 0.<br />
CLEAR &#38;3.<br />
ENDIF.<br />
IF &#38;4 NE SPACE.<br />
&#38;1 = %F4_PLVAR.<br />
ENDIF.<br />
IF &#38;5 NE SPACE.<br />
&#38;2 = %F4_OTYPE.<br />
ENDIF.<br />
SET SCREEN SY-DYNNR.<br />
LEAVE SCREEN.</p>
<p>SET EXTENDED CHECK ON.</p>
<p>END-OF-DEFINITION.</p>
<p><span lang="pl-pl">Swoją drogą to nadaje się do zgłoszenia developerom z SAPa.</span><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programistka.eu/blog/lang/pl-pl/2010/02/03/pomoc-wyszukiwania-dla-pchobjid-w-raporcie-z-pnp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

